From cf7f2e2d389e8012d562650bd94d7e433f449d6e Mon Sep 17 00:00:00 2001 From: John Marino Date: Tue, 3 May 2011 22:53:42 +0200 Subject: [PATCH] Upgrade GDB from 7.0 and 7.2 on the vendor branch --- contrib/gdb-7/Makefile.in | 56006 ---------------- contrib/gdb-7/bfd/Makefile.in | 1987 - contrib/gdb-7/bfd/archive.c | 250 +- contrib/gdb-7/bfd/archive64.c | 18 +- contrib/gdb-7/bfd/archures.c | 16 +- contrib/gdb-7/bfd/bfd-in.h | 17 +- contrib/gdb-7/bfd/bfd-in2.h | 185 +- contrib/gdb-7/bfd/bfd.c | 4 + contrib/gdb-7/bfd/bfdio.c | 274 +- contrib/gdb-7/bfd/binary.c | 2 + contrib/gdb-7/bfd/cache.c | 20 +- contrib/gdb-7/bfd/coffgen.c | 20 +- contrib/gdb-7/bfd/compress.c | 10 +- contrib/gdb-7/bfd/config.bfd | 49 +- contrib/gdb-7/bfd/dwarf1.c | 6 +- contrib/gdb-7/bfd/dwarf2.c | 710 +- contrib/gdb-7/bfd/elf-attrs.c | 17 +- contrib/gdb-7/bfd/elf-bfd.h | 174 +- contrib/gdb-7/bfd/elf-eh-frame.c | 126 +- contrib/gdb-7/bfd/elf.c | 499 +- contrib/gdb-7/bfd/elf32-i386.c | 164 +- contrib/gdb-7/bfd/elf64-x86-64.c | 234 +- contrib/gdb-7/bfd/elfcode.h | 24 +- contrib/gdb-7/bfd/elfcore.h | 57 +- contrib/gdb-7/bfd/elflink.c | 241 +- contrib/gdb-7/bfd/elfxx-target.h | 5 + contrib/gdb-7/bfd/hash.c | 34 +- contrib/gdb-7/bfd/ihex.c | 2 + contrib/gdb-7/bfd/libbfd.c | 10 +- contrib/gdb-7/bfd/libbfd.h | 141 +- contrib/gdb-7/bfd/libcoff.h | 1 + contrib/gdb-7/bfd/libecoff.h | 6 +- contrib/gdb-7/bfd/linker.c | 11 + contrib/gdb-7/bfd/merge.c | 14 +- contrib/gdb-7/bfd/opncls.c | 119 +- contrib/gdb-7/bfd/reloc.c | 188 +- contrib/gdb-7/bfd/section.c | 38 +- contrib/gdb-7/bfd/srec.c | 2 + contrib/gdb-7/bfd/targets.c | 160 +- contrib/gdb-7/bfd/tekhex.c | 14 +- contrib/gdb-7/bfd/verilog.c | 5 +- contrib/gdb-7/bfd/version.h | 2 +- contrib/gdb-7/configure.ac | 3184 - contrib/gdb-7/gdb/COPYING | 916 +- contrib/gdb-7/gdb/Makefile.in | 2037 - contrib/gdb-7/gdb/PROBLEMS | 102 +- contrib/gdb-7/gdb/README | 148 +- contrib/gdb-7/gdb/ada-exp.y | 8 +- contrib/gdb-7/gdb/ada-lang.c | 1383 +- contrib/gdb-7/gdb/ada-lang.h | 30 +- contrib/gdb-7/gdb/ada-lex.c | 692 +- contrib/gdb-7/gdb/ada-operator.inc | 2 +- contrib/gdb-7/gdb/ada-tasks.c | 17 +- contrib/gdb-7/gdb/ada-typeprint.c | 120 +- contrib/gdb-7/gdb/ada-valprint.c | 163 +- contrib/gdb-7/gdb/addrmap.c | 4 +- contrib/gdb-7/gdb/addrmap.h | 2 +- contrib/gdb-7/gdb/amd64-nat.c | 3 +- contrib/gdb-7/gdb/amd64-nat.h | 3 +- contrib/gdb-7/gdb/amd64-tdep.c | 641 +- contrib/gdb-7/gdb/amd64-tdep.h | 28 +- contrib/gdb-7/gdb/amd64bsd-nat.c | 3 +- contrib/gdb-7/gdb/annotate.c | 2 +- contrib/gdb-7/gdb/annotate.h | 2 +- contrib/gdb-7/gdb/arch-utils.c | 33 +- contrib/gdb-7/gdb/arch-utils.h | 14 +- contrib/gdb-7/gdb/auxv.c | 181 +- contrib/gdb-7/gdb/auxv.h | 8 +- contrib/gdb-7/gdb/ax-gdb.c | 977 +- contrib/gdb-7/gdb/ax-gdb.h | 11 +- contrib/gdb-7/gdb/ax-general.c | 138 +- contrib/gdb-7/gdb/ax.h | 156 +- contrib/gdb-7/gdb/bcache.c | 40 +- contrib/gdb-7/gdb/bcache.h | 2 +- contrib/gdb-7/gdb/bfd-target.c | 3 +- contrib/gdb-7/gdb/bfd-target.h | 2 +- contrib/gdb-7/gdb/block.c | 2 +- contrib/gdb-7/gdb/block.h | 2 +- contrib/gdb-7/gdb/blockframe.c | 84 +- contrib/gdb-7/gdb/breakpoint.c | 4862 +- contrib/gdb-7/gdb/breakpoint.h | 242 +- contrib/gdb-7/gdb/bsd-kvm.c | 3 +- contrib/gdb-7/gdb/bsd-kvm.h | 2 +- contrib/gdb-7/gdb/bsd-uthread.c | 4 +- contrib/gdb-7/gdb/bsd-uthread.h | 2 +- contrib/gdb-7/gdb/buildsym.c | 21 +- contrib/gdb-7/gdb/buildsym.h | 2 +- contrib/gdb-7/gdb/c-exp.y | 726 +- contrib/gdb-7/gdb/c-lang.c | 104 +- contrib/gdb-7/gdb/c-lang.h | 24 +- contrib/gdb-7/gdb/c-typeprint.c | 200 +- contrib/gdb-7/gdb/c-valprint.c | 68 +- contrib/gdb-7/gdb/call-cmds.h | 2 +- contrib/gdb-7/gdb/charset-list.h | 2 +- contrib/gdb-7/gdb/charset.c | 224 +- contrib/gdb-7/gdb/charset.h | 6 +- contrib/gdb-7/gdb/cli-out.c | 197 +- contrib/gdb-7/gdb/cli-out.h | 21 +- contrib/gdb-7/gdb/cli/cli-cmds.c | 283 +- contrib/gdb-7/gdb/cli/cli-cmds.h | 8 +- contrib/gdb-7/gdb/cli/cli-decode.c | 191 +- contrib/gdb-7/gdb/cli/cli-decode.h | 3 +- contrib/gdb-7/gdb/cli/cli-dump.c | 9 +- contrib/gdb-7/gdb/cli/cli-dump.h | 5 +- contrib/gdb-7/gdb/cli/cli-interp.c | 5 +- contrib/gdb-7/gdb/cli/cli-logging.c | 5 +- contrib/gdb-7/gdb/cli/cli-script.c | 192 +- contrib/gdb-7/gdb/cli/cli-script.h | 5 +- contrib/gdb-7/gdb/cli/cli-setshow.c | 12 +- contrib/gdb-7/gdb/cli/cli-setshow.h | 3 +- contrib/gdb-7/gdb/coff-pe-read.c | 4 +- contrib/gdb-7/gdb/coff-pe-read.h | 2 +- contrib/gdb-7/gdb/coffread.c | 77 +- contrib/gdb-7/gdb/command.h | 11 +- contrib/gdb-7/gdb/common/gdb_signals.h | 2 +- contrib/gdb-7/gdb/common/i386-xstate.h | 42 + contrib/gdb-7/gdb/common/signals.c | 2 +- contrib/gdb-7/gdb/complaints.c | 8 +- contrib/gdb-7/gdb/complaints.h | 8 +- contrib/gdb-7/gdb/completer.c | 18 +- contrib/gdb-7/gdb/completer.h | 2 +- contrib/gdb-7/gdb/config.in | 182 +- contrib/gdb-7/gdb/configure.ac | 331 +- contrib/gdb-7/gdb/configure.host | 3 +- contrib/gdb-7/gdb/configure.tgt | 36 +- contrib/gdb-7/gdb/corefile.c | 20 +- contrib/gdb-7/gdb/corelow.c | 142 +- contrib/gdb-7/gdb/cp-abi.c | 5 +- contrib/gdb-7/gdb/cp-abi.h | 2 +- contrib/gdb-7/gdb/cp-name-parser.y | 4 +- contrib/gdb-7/gdb/cp-namespace.c | 413 +- contrib/gdb-7/gdb/cp-support.c | 380 +- contrib/gdb-7/gdb/cp-support.h | 75 +- contrib/gdb-7/gdb/cp-valprint.c | 197 +- contrib/gdb-7/gdb/d-lang.c | 280 + contrib/gdb-7/gdb/{cli-out.h => d-lang.h} | 23 +- contrib/gdb-7/gdb/d-valprint.c | 94 + contrib/gdb-7/gdb/dbxread.c | 100 +- contrib/gdb-7/gdb/dcache.c | 176 +- contrib/gdb-7/gdb/dcache.h | 2 +- contrib/gdb-7/gdb/defs.h | 194 +- contrib/gdb-7/gdb/demangle.c | 3 +- contrib/gdb-7/gdb/dfp.c | 2 +- contrib/gdb-7/gdb/dfp.h | 2 +- contrib/gdb-7/gdb/dictionary.c | 47 +- contrib/gdb-7/gdb/dictionary.h | 6 +- contrib/gdb-7/gdb/disasm.c | 93 +- contrib/gdb-7/gdb/disasm.h | 20 +- contrib/gdb-7/gdb/doc/GDBvn.texi | 2 +- contrib/gdb-7/gdb/doc/Makefile.in | 548 - contrib/gdb-7/gdb/doc/agentexpr.texi | 166 +- contrib/gdb-7/gdb/doc/annotate.texinfo | 8 +- contrib/gdb-7/gdb/doc/fdl.texi | 91 +- contrib/gdb-7/gdb/doc/gdb.texinfo | 4427 +- contrib/gdb-7/gdb/doc/gdbint.texinfo | 198 +- contrib/gdb-7/gdb/doc/gpl.texi | 958 +- contrib/gdb-7/gdb/doc/observer.texi | 35 +- contrib/gdb-7/gdb/doc/stabs.texinfo | 13 +- contrib/gdb-7/gdb/doublest.c | 25 +- contrib/gdb-7/gdb/doublest.h | 2 +- contrib/gdb-7/gdb/dummy-frame.c | 9 +- contrib/gdb-7/gdb/dummy-frame.h | 3 +- contrib/gdb-7/gdb/dwarf2-frame.c | 247 +- contrib/gdb-7/gdb/dwarf2-frame.h | 4 +- contrib/gdb-7/gdb/dwarf2expr.c | 352 +- contrib/gdb-7/gdb/dwarf2expr.h | 69 +- contrib/gdb-7/gdb/dwarf2loc.c | 2270 +- contrib/gdb-7/gdb/dwarf2loc.h | 23 +- contrib/gdb-7/gdb/dwarf2read.c | 2497 +- contrib/gdb-7/gdb/elfread.c | 240 +- contrib/gdb-7/gdb/environ.c | 3 +- contrib/gdb-7/gdb/environ.h | 2 +- contrib/gdb-7/gdb/eval.c | 403 +- contrib/gdb-7/gdb/event-loop.c | 29 +- contrib/gdb-7/gdb/event-loop.h | 10 +- contrib/gdb-7/gdb/event-top.c | 43 +- contrib/gdb-7/gdb/event-top.h | 2 +- contrib/gdb-7/gdb/exceptions.c | 23 +- contrib/gdb-7/gdb/exceptions.h | 24 +- contrib/gdb-7/gdb/exec.c | 148 +- contrib/gdb-7/gdb/exec.h | 7 +- contrib/gdb-7/gdb/expprint.c | 65 +- contrib/gdb-7/gdb/expression.h | 26 +- contrib/gdb-7/gdb/f-exp.y | 16 +- contrib/gdb-7/gdb/f-lang.c | 51 +- contrib/gdb-7/gdb/f-lang.h | 8 +- contrib/gdb-7/gdb/f-typeprint.c | 27 +- contrib/gdb-7/gdb/f-valprint.c | 46 +- contrib/gdb-7/gdb/fbsd-nat.c | 5 +- contrib/gdb-7/gdb/fbsd-nat.h | 2 +- contrib/gdb-7/gdb/features/feature_to_c.sh | 2 +- contrib/gdb-7/gdb/features/gdb-target.dtd | 19 +- contrib/gdb-7/gdb/features/i386/32bit-avx.xml | 18 + .../gdb-7/gdb/features/i386/32bit-core.xml | 65 + .../gdb-7/gdb/features/i386/32bit-linux.xml | 11 + contrib/gdb-7/gdb/features/i386/32bit-sse.xml | 52 + contrib/gdb-7/gdb/features/i386/64bit-avx.xml | 26 + .../gdb-7/gdb/features/i386/64bit-core.xml | 73 + .../gdb-7/gdb/features/i386/64bit-linux.xml | 11 + contrib/gdb-7/gdb/features/i386/64bit-sse.xml | 60 + .../gdb-7/gdb/features/i386/amd64-avx-linux.c | 171 + .../gdb/features/i386/amd64-avx-linux.xml | 18 + contrib/gdb-7/gdb/features/i386/amd64-avx.c | 166 + contrib/gdb-7/gdb/features/i386/amd64-avx.xml | 16 + contrib/gdb-7/gdb/features/i386/amd64-linux.c | 153 + .../gdb-7/gdb/features/i386/amd64-linux.xml | 17 + contrib/gdb-7/gdb/features/i386/amd64.c | 148 + contrib/gdb-7/gdb/features/i386/amd64.xml | 15 + .../gdb-7/gdb/features/i386/i386-avx-linux.c | 147 + .../gdb/features/i386/i386-avx-linux.xml | 18 + contrib/gdb-7/gdb/features/i386/i386-avx.c | 142 + contrib/gdb-7/gdb/features/i386/i386-avx.xml | 16 + contrib/gdb-7/gdb/features/i386/i386-linux.c | 137 + .../gdb-7/gdb/features/i386/i386-linux.xml | 17 + .../gdb-7/gdb/features/i386/i386-mmx-linux.c | 76 + .../gdb/features/i386/i386-mmx-linux.xml | 16 + contrib/gdb-7/gdb/features/i386/i386-mmx.c | 71 + contrib/gdb-7/gdb/features/i386/i386-mmx.xml | 14 + contrib/gdb-7/gdb/features/i386/i386.c | 132 + contrib/gdb-7/gdb/features/i386/i386.xml | 15 + contrib/gdb-7/gdb/features/library-list.dtd | 2 +- contrib/gdb-7/gdb/features/osdata.dtd | 2 +- .../gdb/features/{osdata.dtd => threads.dtd} | 13 +- contrib/gdb-7/gdb/features/xinclude.dtd | 4 +- contrib/gdb-7/gdb/filesystem.c | 103 + contrib/gdb-7/gdb/filesystem.h | 58 + contrib/gdb-7/gdb/findcmd.c | 8 +- contrib/gdb-7/gdb/findvar.c | 25 +- contrib/gdb-7/gdb/fork-child.c | 9 +- contrib/gdb-7/gdb/frame-base.c | 7 +- contrib/gdb-7/gdb/frame-base.h | 2 +- contrib/gdb-7/gdb/frame-unwind.c | 7 +- contrib/gdb-7/gdb/frame-unwind.h | 3 +- contrib/gdb-7/gdb/frame.c | 112 +- contrib/gdb-7/gdb/frame.h | 11 +- contrib/gdb-7/gdb/gcore.c | 204 +- .../gdb-7/gdb/{tui/tui-hooks.h => gcore.h} | 15 +- contrib/gdb-7/gdb/gdb-gdb.py | 260 + contrib/gdb-7/gdb/gdb-stabs.h | 4 +- contrib/gdb-7/gdb/gdb.1 | 4 +- contrib/gdb-7/gdb/gdb.c | 3 +- contrib/gdb-7/gdb/gdb.h | 3 +- contrib/gdb-7/gdb/gdb_assert.h | 3 +- contrib/gdb-7/gdb/gdb_curses.h | 3 +- contrib/gdb-7/gdb/gdb_locale.h | 2 +- contrib/gdb-7/gdb/gdb_obstack.h | 2 +- contrib/gdb-7/gdb/gdb_ptrace.h | 9 +- contrib/gdb-7/gdb/gdb_regex.h | 2 +- contrib/gdb-7/gdb/gdb_select.h | 2 +- contrib/gdb-7/gdb/gdb_stat.h | 2 +- contrib/gdb-7/gdb/gdb_string.h | 2 +- contrib/gdb-7/gdb/gdb_thread_db.h | 3 +- contrib/gdb-7/gdb/gdb_usleep.c | 2 +- contrib/gdb-7/gdb/gdb_usleep.h | 2 +- contrib/gdb-7/gdb/gdb_vfork.h | 2 +- contrib/gdb-7/gdb/gdb_wait.h | 2 +- contrib/gdb-7/gdb/gdb_wchar.h | 2 +- contrib/gdb-7/gdb/gdbarch.c | 270 +- contrib/gdb-7/gdb/gdbarch.h | 83 +- contrib/gdb-7/gdb/gdbcmd.h | 3 +- contrib/gdb-7/gdb/gdbcore.h | 9 +- contrib/gdb-7/gdb/gdbthread.h | 12 +- contrib/gdb-7/gdb/gdbtypes.c | 437 +- contrib/gdb-7/gdb/gdbtypes.h | 320 +- contrib/gdb-7/gdb/gnu-v2-abi.c | 18 +- contrib/gdb-7/gdb/gnu-v3-abi.c | 208 +- contrib/gdb-7/gdb/i386-nat.c | 44 +- contrib/gdb-7/gdb/i386-nat.h | 15 +- contrib/gdb-7/gdb/i386-tdep.c | 3186 +- contrib/gdb-7/gdb/i386-tdep.h | 146 +- contrib/gdb-7/gdb/i386bsd-nat.c | 2 +- contrib/gdb-7/gdb/i386bsd-nat.h | 2 +- contrib/gdb-7/gdb/i386bsd-tdep.c | 2 +- contrib/gdb-7/gdb/i386fbsd-tdep.c | 2 +- contrib/gdb-7/gdb/i387-tdep.c | 476 +- contrib/gdb-7/gdb/i387-tdep.h | 19 +- contrib/gdb-7/gdb/inf-child.c | 3 +- contrib/gdb-7/gdb/inf-child.h | 2 +- contrib/gdb-7/gdb/inf-loop.c | 3 +- contrib/gdb-7/gdb/inf-loop.h | 2 +- contrib/gdb-7/gdb/inf-ptrace.c | 20 +- contrib/gdb-7/gdb/inf-ptrace.h | 3 +- contrib/gdb-7/gdb/infcall.c | 92 +- contrib/gdb-7/gdb/infcall.h | 2 +- contrib/gdb-7/gdb/infcmd.c | 295 +- contrib/gdb-7/gdb/inferior.c | 698 +- contrib/gdb-7/gdb/inferior.h | 140 +- contrib/gdb-7/gdb/inflow.c | 141 +- contrib/gdb-7/gdb/inflow.h | 3 +- contrib/gdb-7/gdb/infrun.c | 1291 +- contrib/gdb-7/gdb/inline-frame.c | 31 +- contrib/gdb-7/gdb/inline-frame.h | 2 +- contrib/gdb-7/gdb/interps.c | 5 +- contrib/gdb-7/gdb/interps.h | 2 +- contrib/gdb-7/gdb/jit.c | 8 +- contrib/gdb-7/gdb/jit.h | 3 +- contrib/gdb-7/gdb/jv-exp.y | 8 +- contrib/gdb-7/gdb/jv-lang.c | 158 +- contrib/gdb-7/gdb/jv-lang.h | 5 +- contrib/gdb-7/gdb/jv-typeprint.c | 25 +- contrib/gdb-7/gdb/jv-valprint.c | 23 +- contrib/gdb-7/gdb/language.c | 31 +- contrib/gdb-7/gdb/language.h | 65 +- contrib/gdb-7/gdb/linespec.c | 431 +- contrib/gdb-7/gdb/linespec.h | 2 +- contrib/gdb-7/gdb/m2-exp.y | 20 +- contrib/gdb-7/gdb/m2-lang.c | 17 +- contrib/gdb-7/gdb/m2-lang.h | 5 +- contrib/gdb-7/gdb/m2-typeprint.c | 14 +- contrib/gdb-7/gdb/m2-valprint.c | 34 +- contrib/gdb-7/gdb/macrocmd.c | 7 +- contrib/gdb-7/gdb/macroexp.c | 12 +- contrib/gdb-7/gdb/macroexp.h | 2 +- contrib/gdb-7/gdb/macroscope.c | 3 +- contrib/gdb-7/gdb/macroscope.h | 2 +- contrib/gdb-7/gdb/macrotab.c | 8 +- contrib/gdb-7/gdb/macrotab.h | 2 +- contrib/gdb-7/gdb/main.c | 204 +- contrib/gdb-7/gdb/main.h | 3 +- contrib/gdb-7/gdb/maint.c | 21 +- contrib/gdb-7/gdb/mdebugread.c | 88 +- contrib/gdb-7/gdb/mdebugread.h | 2 +- contrib/gdb-7/gdb/mem-break.c | 3 +- contrib/gdb-7/gdb/memattr.c | 30 +- contrib/gdb-7/gdb/memattr.h | 3 +- contrib/gdb-7/gdb/memory-map.c | 2 +- contrib/gdb-7/gdb/memory-map.h | 2 +- contrib/gdb-7/gdb/mi/gdb-mi.el | 609 - contrib/gdb-7/gdb/mi/mi-cmd-break.c | 120 +- contrib/gdb-7/gdb/mi/mi-cmd-disas.c | 2 +- contrib/gdb-7/gdb/mi/mi-cmd-env.c | 22 +- contrib/gdb-7/gdb/mi/mi-cmd-file.c | 40 +- contrib/gdb-7/gdb/mi/mi-cmd-stack.c | 78 +- contrib/gdb-7/gdb/mi/mi-cmd-target.c | 4 +- contrib/gdb-7/gdb/mi/mi-cmd-var.c | 16 +- contrib/gdb-7/gdb/mi/mi-cmds.c | 17 +- contrib/gdb-7/gdb/mi/mi-cmds.h | 16 +- contrib/gdb-7/gdb/mi/mi-common.c | 2 +- contrib/gdb-7/gdb/mi/mi-common.h | 2 +- contrib/gdb-7/gdb/mi/mi-console.c | 7 +- contrib/gdb-7/gdb/mi/mi-console.h | 2 +- contrib/gdb-7/gdb/mi/mi-getopt.c | 4 +- contrib/gdb-7/gdb/mi/mi-getopt.h | 2 +- contrib/gdb-7/gdb/mi/mi-interp.c | 152 +- contrib/gdb-7/gdb/mi/mi-main.c | 929 +- contrib/gdb-7/gdb/mi/mi-main.h | 2 +- contrib/gdb-7/gdb/mi/mi-out.c | 27 +- contrib/gdb-7/gdb/mi/mi-out.h | 2 +- contrib/gdb-7/gdb/mi/mi-parse.c | 119 +- contrib/gdb-7/gdb/mi/mi-parse.h | 4 +- contrib/gdb-7/gdb/mi/mi-symbol-cmds.c | 2 +- contrib/gdb-7/gdb/minsyms.c | 89 +- contrib/gdb-7/gdb/mipsread.c | 8 +- contrib/gdb-7/gdb/objc-exp.y | 6 +- contrib/gdb-7/gdb/objc-lang.c | 253 +- contrib/gdb-7/gdb/objc-lang.h | 3 +- contrib/gdb-7/gdb/objfiles.c | 607 +- contrib/gdb-7/gdb/objfiles.h | 112 +- contrib/gdb-7/gdb/observer.c | 4 +- contrib/gdb-7/gdb/observer.sh | 3 +- contrib/gdb-7/gdb/osabi.c | 8 +- contrib/gdb-7/gdb/osabi.h | 2 +- contrib/gdb-7/gdb/osdata.c | 25 +- contrib/gdb-7/gdb/osdata.h | 2 +- contrib/gdb-7/gdb/p-exp.y | 11 +- contrib/gdb-7/gdb/p-lang.c | 15 +- contrib/gdb-7/gdb/p-lang.h | 9 +- contrib/gdb-7/gdb/p-typeprint.c | 24 +- contrib/gdb-7/gdb/p-valprint.c | 257 +- contrib/gdb-7/gdb/parse.c | 249 +- contrib/gdb-7/gdb/parser-defs.h | 34 +- contrib/gdb-7/gdb/posix-hdep.c | 3 +- contrib/gdb-7/gdb/printcmd.c | 314 +- .../gdb/{cli-out.h => proc-service.list} | 38 +- contrib/gdb-7/gdb/progspace.c | 623 + contrib/gdb-7/gdb/progspace.h | 290 + contrib/gdb-7/gdb/prologue-value.c | 6 +- contrib/gdb-7/gdb/prologue-value.h | 3 +- contrib/gdb-7/gdb/psympriv.h | 165 + contrib/gdb-7/gdb/psymtab.c | 1750 + contrib/gdb-7/gdb/{cli-out.h => psymtab.h} | 21 +- contrib/gdb-7/gdb/python/py-auto-load.c | 497 + contrib/gdb-7/gdb/python/py-cmd.c | 585 - contrib/gdb-7/gdb/python/py-frame.c | 539 - contrib/gdb-7/gdb/python/py-function.c | 179 - contrib/gdb-7/gdb/python/py-objfile.c | 230 - contrib/gdb-7/gdb/python/py-prettyprint.c | 284 +- contrib/gdb-7/gdb/python/py-type.c | 799 - contrib/gdb-7/gdb/python/py-utils.c | 221 - contrib/gdb-7/gdb/python/py-value.c | 130 +- contrib/gdb-7/gdb/python/python-internal.h | 134 - contrib/gdb-7/gdb/python/python.c | 394 +- contrib/gdb-7/gdb/python/python.h | 9 +- contrib/gdb-7/gdb/record.c | 1978 +- contrib/gdb-7/gdb/record.h | 3 +- contrib/gdb-7/gdb/regcache.c | 91 +- contrib/gdb-7/gdb/regcache.h | 11 +- .../amd64-avx-linux.dat} | 21 +- .../{reg-x86-64.dat => i386/amd64-avx.dat} | 20 +- .../{reg-x86-64.dat => i386/amd64-linux.dat} | 5 +- .../{reg-x86-64.dat => i386/amd64.dat} | 4 +- .../{reg-i386.dat => i386/i386-avx-linux.dat} | 14 +- .../{reg-i386.dat => i386/i386-avx.dat} | 13 +- .../{reg-i386.dat => i386/i386-linux.dat} | 6 +- .../{reg-i386.dat => i386/i386-mmx-linux.dat} | 24 +- .../{reg-i386.dat => i386/i386-mmx.dat} | 14 +- .../{reg-i386.dat => i386/i386.dat} | 3 +- contrib/gdb-7/gdb/regformats/regdat.sh | 10 +- contrib/gdb-7/gdb/regformats/regdef.h | 2 +- contrib/gdb-7/gdb/reggroups.c | 8 +- contrib/gdb-7/gdb/reggroups.h | 2 +- contrib/gdb-7/gdb/regset.c | 2 +- contrib/gdb-7/gdb/regset.h | 4 +- contrib/gdb-7/gdb/remote-fileio.c | 84 +- contrib/gdb-7/gdb/remote-fileio.h | 4 +- contrib/gdb-7/gdb/remote.c | 1794 +- contrib/gdb-7/gdb/remote.h | 22 +- contrib/gdb-7/gdb/reverse.c | 237 +- contrib/gdb-7/gdb/scm-exp.c | 8 +- contrib/gdb-7/gdb/scm-lang.c | 11 +- contrib/gdb-7/gdb/scm-lang.h | 3 +- contrib/gdb-7/gdb/scm-tags.h | 3 +- contrib/gdb-7/gdb/scm-valprint.c | 22 +- contrib/gdb-7/gdb/sentinel-frame.c | 4 +- contrib/gdb-7/gdb/sentinel-frame.h | 2 +- contrib/gdb-7/gdb/ser-base.c | 13 +- contrib/gdb-7/gdb/ser-base.h | 3 +- contrib/gdb-7/gdb/ser-pipe.c | 31 +- contrib/gdb-7/gdb/ser-tcp.c | 9 +- contrib/gdb-7/gdb/ser-tcp.h | 2 +- contrib/gdb-7/gdb/ser-unix.c | 4 +- contrib/gdb-7/gdb/ser-unix.h | 2 +- contrib/gdb-7/gdb/serial.c | 17 +- contrib/gdb-7/gdb/serial.h | 5 +- contrib/gdb-7/gdb/sim-regno.h | 2 +- contrib/gdb-7/gdb/solib-null.c | 89 - contrib/gdb-7/gdb/solib-svr4.c | 893 +- contrib/gdb-7/gdb/solib-svr4.h | 2 +- contrib/gdb-7/gdb/solib-target.c | 505 + .../gdb/{gnu-v2-abi.h => solib-target.h} | 15 +- contrib/gdb-7/gdb/solib.c | 539 +- contrib/gdb-7/gdb/solib.h | 15 +- contrib/gdb-7/gdb/solist.h | 25 +- contrib/gdb-7/gdb/source.c | 149 +- contrib/gdb-7/gdb/source.h | 3 +- contrib/gdb-7/gdb/stabsread.c | 212 +- contrib/gdb-7/gdb/stabsread.h | 9 +- contrib/gdb-7/gdb/stack.c | 211 +- contrib/gdb-7/gdb/stack.h | 14 +- contrib/gdb-7/gdb/std-regs.c | 9 +- contrib/gdb-7/gdb/symfile.c | 1821 +- contrib/gdb-7/gdb/symfile.h | 235 +- contrib/gdb-7/gdb/symmisc.c | 503 +- contrib/gdb-7/gdb/symtab.c | 1799 +- contrib/gdb-7/gdb/symtab.h | 239 +- contrib/gdb-7/gdb/target-descriptions.c | 270 +- contrib/gdb-7/gdb/target-descriptions.h | 16 +- contrib/gdb-7/gdb/target-memory.c | 8 +- contrib/gdb-7/gdb/target.c | 623 +- contrib/gdb-7/gdb/target.h | 287 +- contrib/gdb-7/gdb/terminal.h | 2 +- contrib/gdb-7/gdb/thread.c | 95 +- contrib/gdb-7/gdb/top.c | 185 +- contrib/gdb-7/gdb/top.h | 6 +- contrib/gdb-7/gdb/tracepoint.c | 4086 +- contrib/gdb-7/gdb/tracepoint.h | 215 +- contrib/gdb-7/gdb/trad-frame.c | 5 +- contrib/gdb-7/gdb/trad-frame.h | 3 +- contrib/gdb-7/gdb/tramp-frame.c | 9 +- contrib/gdb-7/gdb/tramp-frame.h | 3 +- contrib/gdb-7/gdb/tui/tui-command.c | 2 +- contrib/gdb-7/gdb/tui/tui-command.h | 2 +- contrib/gdb-7/gdb/tui/tui-data.c | 3 +- contrib/gdb-7/gdb/tui/tui-data.h | 4 +- contrib/gdb-7/gdb/tui/tui-disasm.c | 12 +- contrib/gdb-7/gdb/tui/tui-disasm.h | 2 +- contrib/gdb-7/gdb/tui/tui-file.c | 12 +- contrib/gdb-7/gdb/tui/tui-file.h | 3 +- contrib/gdb-7/gdb/tui/tui-hooks.c | 4 +- contrib/gdb-7/gdb/tui/tui-hooks.h | 2 +- contrib/gdb-7/gdb/tui/tui-interp.c | 24 +- contrib/gdb-7/gdb/tui/tui-io.c | 8 +- contrib/gdb-7/gdb/tui/tui-io.h | 2 +- contrib/gdb-7/gdb/tui/tui-layout.c | 7 +- contrib/gdb-7/gdb/tui/tui-layout.h | 2 +- contrib/gdb-7/gdb/tui/tui-main.c | 4 +- contrib/gdb-7/gdb/tui/tui-out.c | 357 +- contrib/gdb-7/gdb/tui/tui-regs.c | 25 +- contrib/gdb-7/gdb/tui/tui-regs.h | 2 +- contrib/gdb-7/gdb/tui/tui-source.c | 8 +- contrib/gdb-7/gdb/tui/tui-source.h | 2 +- contrib/gdb-7/gdb/tui/tui-stack.c | 17 +- contrib/gdb-7/gdb/tui/tui-stack.h | 2 +- contrib/gdb-7/gdb/tui/tui-win.c | 5 +- contrib/gdb-7/gdb/tui/tui-win.h | 2 +- contrib/gdb-7/gdb/tui/tui-windata.c | 7 +- contrib/gdb-7/gdb/tui/tui-windata.h | 2 +- contrib/gdb-7/gdb/tui/tui-wingeneral.c | 2 +- contrib/gdb-7/gdb/tui/tui-wingeneral.h | 2 +- contrib/gdb-7/gdb/tui/tui-winsource.c | 6 +- contrib/gdb-7/gdb/tui/tui-winsource.h | 2 +- contrib/gdb-7/gdb/tui/tui.c | 9 +- contrib/gdb-7/gdb/tui/tui.h | 6 +- contrib/gdb-7/gdb/typeprint.c | 3 +- contrib/gdb-7/gdb/typeprint.h | 7 +- contrib/gdb-7/gdb/ui-file.c | 65 +- contrib/gdb-7/gdb/ui-file.h | 9 +- contrib/gdb-7/gdb/ui-out.c | 36 +- contrib/gdb-7/gdb/ui-out.h | 14 +- contrib/gdb-7/gdb/user-regs.c | 13 +- contrib/gdb-7/gdb/user-regs.h | 3 +- contrib/gdb-7/gdb/utils.c | 428 +- contrib/gdb-7/gdb/valarith.c | 169 +- contrib/gdb-7/gdb/valops.c | 772 +- contrib/gdb-7/gdb/valprint.c | 139 +- contrib/gdb-7/gdb/valprint.h | 7 +- contrib/gdb-7/gdb/value.c | 195 +- contrib/gdb-7/gdb/value.h | 74 +- contrib/gdb-7/gdb/varobj.c | 173 +- contrib/gdb-7/gdb/varobj.h | 2 +- contrib/gdb-7/gdb/vec.c | 2 +- contrib/gdb-7/gdb/vec.h | 36 +- contrib/gdb-7/gdb/version.h | 2 +- contrib/gdb-7/gdb/version.in | 2 +- contrib/gdb-7/gdb/wrapper.c | 2 +- contrib/gdb-7/gdb/wrapper.h | 2 +- contrib/gdb-7/gdb/xcoffsolib.h | 4 +- contrib/gdb-7/gdb/xml-support.c | 7 +- contrib/gdb-7/gdb/xml-support.h | 6 +- contrib/gdb-7/gdb/xml-syscall.c | 86 +- contrib/gdb-7/gdb/xml-syscall.h | 2 +- contrib/gdb-7/gdb/xml-tdesc.c | 168 +- contrib/gdb-7/gdb/xml-tdesc.h | 2 +- contrib/gdb-7/include/ansidecl.h | 4 +- contrib/gdb-7/include/aout/aout64.h | 11 +- contrib/gdb-7/include/aout/ar.h | 7 +- contrib/gdb-7/include/aout/ranlib.h | 31 +- contrib/gdb-7/include/aout/stab.def | 7 +- contrib/gdb-7/include/aout/stab_gnu.h | 7 +- contrib/gdb-7/include/bfdlink.h | 10 +- contrib/gdb-7/include/cgen/basic-modes.h | 52 + contrib/gdb-7/include/cgen/basic-ops.h | 347 + contrib/gdb-7/include/cgen/bitset.h | 56 + contrib/gdb-7/include/coff/ecoff.h | 7 +- contrib/gdb-7/include/coff/internal.h | 9 +- contrib/gdb-7/include/demangle.h | 22 + contrib/gdb-7/include/dis-asm.h | 22 +- contrib/gdb-7/include/dwarf2.h | 92 +- contrib/gdb-7/include/elf/common.h | 52 +- contrib/gdb-7/include/elf/dwarf.h | 31 +- contrib/gdb-7/include/elf/external.h | 30 +- contrib/gdb-7/include/elf/i386.h | 4 +- contrib/gdb-7/include/elf/internal.h | 82 +- contrib/gdb-7/include/elf/mips.h | 28 +- contrib/gdb-7/include/elf/reloc-macros.h | 4 +- contrib/gdb-7/include/elf/vxworks.h | 28 +- contrib/gdb-7/include/elf/x86-64.h | 4 +- contrib/gdb-7/include/filenames.h | 48 +- contrib/gdb-7/include/floatformat.h | 2 + contrib/gdb-7/include/gdb/fileio.h | 2 +- contrib/gdb-7/include/gdb/signals.h | 2 +- contrib/gdb-7/include/hashtab.h | 5 +- contrib/gdb-7/include/libiberty.h | 11 + contrib/gdb-7/include/lto-symtab.h | 41 + contrib/gdb-7/include/opcode/i386.h | 7 +- contrib/gdb-7/include/splay-tree.h | 21 +- contrib/gdb-7/include/symcat.h | 8 +- contrib/gdb-7/libdecnumber/Makefile.in | 190 - contrib/gdb-7/libdecnumber/decContext.c | 4 +- contrib/gdb-7/libiberty/Makefile.in | 1176 - contrib/gdb-7/libiberty/README | 10 +- contrib/gdb-7/libiberty/argv.c | 44 +- contrib/gdb-7/libiberty/cp-demangle.c | 429 +- contrib/gdb-7/libiberty/cp-demangle.h | 2 +- contrib/gdb-7/libiberty/cplus-dem.c | 274 +- contrib/gdb-7/libiberty/floatformat.c | 18 +- contrib/gdb-7/libiberty/hashtab.c | 67 +- contrib/gdb-7/libiberty/lbasename.c | 28 +- contrib/gdb-7/libiberty/pex-unix.c | 28 +- contrib/gdb-7/libiberty/regex.c | 13 +- contrib/gdb-7/libiberty/splay-tree.c | 55 +- contrib/gdb-7/opcodes/Makefile.in | 1354 - contrib/gdb-7/opcodes/dis-buf.c | 3 +- contrib/gdb-7/opcodes/disassemble.c | 20 +- contrib/gdb-7/opcodes/i386-dis.c | 10678 +-- contrib/gdb-7/opcodes/i386-opc.h | 688 +- contrib/gdb-7/opcodes/i386-tbl.h | 25161 +++---- contrib/gdb-7/readline/Makefile.in | 557 - contrib/gdb-7/readline/doc/Makefile.in | 255 - 589 files changed, 77227 insertions(+), 105178 deletions(-) delete mode 100644 contrib/gdb-7/Makefile.in delete mode 100644 contrib/gdb-7/bfd/Makefile.in delete mode 100644 contrib/gdb-7/configure.ac delete mode 100644 contrib/gdb-7/gdb/Makefile.in create mode 100644 contrib/gdb-7/gdb/common/i386-xstate.h create mode 100644 contrib/gdb-7/gdb/d-lang.c copy contrib/gdb-7/gdb/{cli-out.h => d-lang.h} (57%) create mode 100644 contrib/gdb-7/gdb/d-valprint.c delete mode 100644 contrib/gdb-7/gdb/doc/Makefile.in create mode 100644 contrib/gdb-7/gdb/features/i386/32bit-avx.xml create mode 100644 contrib/gdb-7/gdb/features/i386/32bit-core.xml create mode 100644 contrib/gdb-7/gdb/features/i386/32bit-linux.xml create mode 100644 contrib/gdb-7/gdb/features/i386/32bit-sse.xml create mode 100644 contrib/gdb-7/gdb/features/i386/64bit-avx.xml create mode 100644 contrib/gdb-7/gdb/features/i386/64bit-core.xml create mode 100644 contrib/gdb-7/gdb/features/i386/64bit-linux.xml create mode 100644 contrib/gdb-7/gdb/features/i386/64bit-sse.xml create mode 100644 contrib/gdb-7/gdb/features/i386/amd64-avx-linux.c create mode 100644 contrib/gdb-7/gdb/features/i386/amd64-avx-linux.xml create mode 100644 contrib/gdb-7/gdb/features/i386/amd64-avx.c create mode 100644 contrib/gdb-7/gdb/features/i386/amd64-avx.xml create mode 100644 contrib/gdb-7/gdb/features/i386/amd64-linux.c create mode 100644 contrib/gdb-7/gdb/features/i386/amd64-linux.xml create mode 100644 contrib/gdb-7/gdb/features/i386/amd64.c create mode 100644 contrib/gdb-7/gdb/features/i386/amd64.xml create mode 100644 contrib/gdb-7/gdb/features/i386/i386-avx-linux.c create mode 100644 contrib/gdb-7/gdb/features/i386/i386-avx-linux.xml create mode 100644 contrib/gdb-7/gdb/features/i386/i386-avx.c create mode 100644 contrib/gdb-7/gdb/features/i386/i386-avx.xml create mode 100644 contrib/gdb-7/gdb/features/i386/i386-linux.c create mode 100644 contrib/gdb-7/gdb/features/i386/i386-linux.xml create mode 100644 contrib/gdb-7/gdb/features/i386/i386-mmx-linux.c create mode 100644 contrib/gdb-7/gdb/features/i386/i386-mmx-linux.xml create mode 100644 contrib/gdb-7/gdb/features/i386/i386-mmx.c create mode 100644 contrib/gdb-7/gdb/features/i386/i386-mmx.xml create mode 100644 contrib/gdb-7/gdb/features/i386/i386.c create mode 100644 contrib/gdb-7/gdb/features/i386/i386.xml copy contrib/gdb-7/gdb/features/{osdata.dtd => threads.dtd} (50%) create mode 100644 contrib/gdb-7/gdb/filesystem.c create mode 100644 contrib/gdb-7/gdb/filesystem.h copy contrib/gdb-7/gdb/{tui/tui-hooks.h => gcore.h} (68%) create mode 100644 contrib/gdb-7/gdb/gdb-gdb.py delete mode 100644 contrib/gdb-7/gdb/mi/gdb-mi.el copy contrib/gdb-7/gdb/{cli-out.h => proc-service.list} (62%) create mode 100644 contrib/gdb-7/gdb/progspace.c create mode 100644 contrib/gdb-7/gdb/progspace.h create mode 100644 contrib/gdb-7/gdb/psympriv.h create mode 100644 contrib/gdb-7/gdb/psymtab.c copy contrib/gdb-7/gdb/{cli-out.h => psymtab.h} (63%) create mode 100644 contrib/gdb-7/gdb/python/py-auto-load.c delete mode 100644 contrib/gdb-7/gdb/python/py-cmd.c delete mode 100644 contrib/gdb-7/gdb/python/py-frame.c delete mode 100644 contrib/gdb-7/gdb/python/py-function.c delete mode 100644 contrib/gdb-7/gdb/python/py-objfile.c delete mode 100644 contrib/gdb-7/gdb/python/py-type.c delete mode 100644 contrib/gdb-7/gdb/python/py-utils.c delete mode 100644 contrib/gdb-7/gdb/python/python-internal.h copy contrib/gdb-7/gdb/regformats/{reg-x86-64.dat => i386/amd64-avx-linux.dat} (62%) copy contrib/gdb-7/gdb/regformats/{reg-x86-64.dat => i386/amd64-avx.dat} (64%) copy contrib/gdb-7/gdb/regformats/{reg-x86-64.dat => i386/amd64-linux.dat} (81%) rename contrib/gdb-7/gdb/regformats/{reg-x86-64.dat => i386/amd64.dat} (86%) copy contrib/gdb-7/gdb/regformats/{reg-i386.dat => i386/i386-avx-linux.dat} (63%) copy contrib/gdb-7/gdb/regformats/{reg-i386.dat => i386/i386-avx.dat} (67%) copy contrib/gdb-7/gdb/regformats/{reg-i386.dat => i386/i386-linux.dat} (76%) copy contrib/gdb-7/gdb/regformats/{reg-i386.dat => i386/i386-mmx-linux.dat} (64%) copy contrib/gdb-7/gdb/regformats/{reg-i386.dat => i386/i386-mmx.dat} (71%) rename contrib/gdb-7/gdb/regformats/{reg-i386.dat => i386/i386.dat} (84%) delete mode 100644 contrib/gdb-7/gdb/solib-null.c create mode 100644 contrib/gdb-7/gdb/solib-target.c rename contrib/gdb-7/gdb/{gnu-v2-abi.h => solib-target.h} (72%) create mode 100644 contrib/gdb-7/include/cgen/basic-modes.h create mode 100644 contrib/gdb-7/include/cgen/basic-ops.h create mode 100644 contrib/gdb-7/include/cgen/bitset.h create mode 100644 contrib/gdb-7/include/lto-symtab.h delete mode 100644 contrib/gdb-7/libdecnumber/Makefile.in delete mode 100644 contrib/gdb-7/libiberty/Makefile.in delete mode 100644 contrib/gdb-7/opcodes/Makefile.in delete mode 100644 contrib/gdb-7/readline/Makefile.in delete mode 100644 contrib/gdb-7/readline/doc/Makefile.in diff --git a/contrib/gdb-7/Makefile.in b/contrib/gdb-7/Makefile.in deleted file mode 100644 index 044f849d0a..0000000000 --- a/contrib/gdb-7/Makefile.in +++ /dev/null @@ -1,56006 +0,0 @@ - -# Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'. -# -# Makefile for directory with subdirs to build. -# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING3. If not see -# . -# - -# First, test for a proper version of make, but only where one is required. - -@if gcc -ifeq (,$(.VARIABLES)) # The variable .VARIABLES, new with 3.80, is never empty. -$(error GNU make version 3.80 or newer is required.) -endif -@endif gcc - -# ------------------------------- -# Standard Autoconf-set variables -# ------------------------------- -VPATH=@srcdir@ - -build_alias=@build_noncanonical@ -build_vendor=@build_vendor@ -build_os=@build_os@ -build=@build@ -host_alias=@host_noncanonical@ -host_vendor=@host_vendor@ -host_os=@host_os@ -host=@host@ -target_alias=@target_noncanonical@ -target_vendor=@target_vendor@ -target_os=@target_os@ -target=@target@ - -program_transform_name = @program_transform_name@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -srcdir = @srcdir@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -includedir = @includedir@ -oldincludedir = @oldincludedir@ -infodir = @infodir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -pdfdir = @pdfdir@ -htmldir = @htmldir@ -mandir = @mandir@ -man1dir = $(mandir)/man1 -man2dir = $(mandir)/man2 -man3dir = $(mandir)/man3 -man4dir = $(mandir)/man4 -man5dir = $(mandir)/man5 -man6dir = $(mandir)/man6 -man7dir = $(mandir)/man7 -man8dir = $(mandir)/man8 -man9dir = $(mandir)/man9 - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_DATA = @INSTALL_DATA@ -LN = @LN@ -LN_S = @LN_S@ -MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ - -# ------------------------------------------------- -# Miscellaneous non-standard autoconf-set variables -# ------------------------------------------------- - -# The gcc driver likes to know the arguments it was configured with. -TOPLEVEL_CONFIGURE_ARGUMENTS=@TOPLEVEL_CONFIGURE_ARGUMENTS@ - -tooldir = @tooldir@ -build_tooldir = @build_tooldir@ - -GDB_NLM_DEPS = - -# This is the name of the environment variable used for the path to -# the libraries. -RPATH_ENVVAR = @RPATH_ENVVAR@ - -# On targets where RPATH_ENVVAR is PATH, a subdirectory of the GCC build path -# is used instead of the directory itself to avoid including built -# executables in PATH. -GCC_SHLIB_SUBDIR = @GCC_SHLIB_SUBDIR@ - -# Build programs are put under this directory. -BUILD_SUBDIR = @build_subdir@ -# This is set by the configure script to the arguments to use when configuring -# directories built for the build system. -BUILD_CONFIGARGS = @build_configargs@ --with-build-subdir="$(BUILD_SUBDIR)" - -# Linker flags to use on the host, for stage1 or when not -# bootstrapping. -STAGE1_LDFLAGS = @stage1_ldflags@ - -# Libraries to use on the host, for stage1 or when not bootstrapping. -STAGE1_LIBS = @stage1_libs@ - -# Linker flags to use for stage2 and later. -POSTSTAGE1_LDFLAGS = @poststage1_ldflags@ - -# Libraries to use for stage2 and later. -POSTSTAGE1_LIBS = @poststage1_libs@ - -# This is the list of variables to export in the environment when -# configuring any subdirectory. It must also be exported whenever -# recursing into a build directory in case that directory's Makefile -# re-runs configure. -BASE_EXPORTS = \ - FLEX="$(FLEX)"; export FLEX; \ - LEX="$(LEX)"; export LEX; \ - BISON="$(BISON)"; export BISON; \ - YACC="$(YACC)"; export YACC; \ - M4="$(M4)"; export M4; \ - SED="$(SED)"; export SED; \ - AWK="$(AWK)"; export AWK; \ - MAKEINFO="$(MAKEINFO)"; export MAKEINFO; - -# This is the list of variables to export in the environment when -# configuring subdirectories for the build system. -BUILD_EXPORTS = \ - $(BASE_EXPORTS) \ - AR="$(AR_FOR_BUILD)"; export AR; \ - AS="$(AS_FOR_BUILD)"; export AS; \ - CC="$(CC_FOR_BUILD)"; export CC; \ - CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \ - CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ - CXX="$(CXX_FOR_BUILD)"; export CXX; \ - CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ - GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ - GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \ - DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ - LD="$(LD_FOR_BUILD)"; export LD; \ - LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ - NM="$(NM_FOR_BUILD)"; export NM; \ - RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \ - WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \ - WINDMC="$(WINDMC_FOR_BUILD)"; export WINDMC; - -# These variables must be set on the make command line for directories -# built for the build system to override those in BASE_FLAGS_TO_PASSS. -EXTRA_BUILD_FLAGS = \ - CFLAGS="$(CFLAGS_FOR_BUILD)" \ - LDFLAGS="$(LDFLAGS_FOR_BUILD)" - -# This is the list of directories to built for the host system. -SUBDIRS = @configdirs@ -# This is set by the configure script to the arguments to use when configuring -# directories built for the host system. -HOST_CONFIGARGS = @host_configargs@ -# Host programs are put under this directory, which is . except if building -# with srcdir=.. -HOST_SUBDIR = @host_subdir@ -# This is the list of variables to export in the environment when -# configuring subdirectories for the host system. We need to pass -# some to the GCC configure because of its hybrid host/target nature. -HOST_EXPORTS = \ - $(BASE_EXPORTS) \ - CC="$(CC)"; export CC; \ - ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \ - CFLAGS="$(CFLAGS)"; export CFLAGS; \ - CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ - CXX="$(CXX)"; export CXX; \ - CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ - GCJ="$(GCJ)"; export GCJ; \ - GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ - AR="$(AR)"; export AR; \ - AS="$(AS)"; export AS; \ - CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ - DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \ - LD="$(LD)"; export LD; \ - LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \ - NM="$(NM)"; export NM; \ - RANLIB="$(RANLIB)"; export RANLIB; \ - WINDRES="$(WINDRES)"; export WINDRES; \ - WINDMC="$(WINDMC)"; export WINDMC; \ - OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \ - OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \ - AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \ - AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \ - GCC_FOR_TARGET="$(GCC_FOR_TARGET)"; export GCC_FOR_TARGET; \ - LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \ - NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \ - OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \ - RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)"; export RANLIB_FOR_TARGET; \ - TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \ - HOST_LIBS="$(STAGE1_LIBS)"; export HOST_LIBS; \ - GMPLIBS="$(HOST_GMPLIBS)"; export GMPLIBS; \ - GMPINC="$(HOST_GMPINC)"; export GMPINC; \ - PPLLIBS="$(HOST_PPLLIBS)"; export PPLLIBS; \ - PPLINC="$(HOST_PPLINC)"; export PPLINC; \ - CLOOGLIBS="$(HOST_CLOOGLIBS)"; export CLOOGLIBS; \ - CLOOGINC="$(HOST_CLOOGINC)"; export CLOOGINC; \ -@if gcc-bootstrap - $(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ -@endif gcc-bootstrap - $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); - -# Similar, for later GCC stages. -POSTSTAGE1_HOST_EXPORTS = \ - $(HOST_EXPORTS) \ - CC="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \ - -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ - $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ - CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ - CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ - -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ - -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ - -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ - -I$$r/$(srcdir)/libstdc++-v3/libsupc++ \ - -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \ - CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; \ - GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \ - LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \ - HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS; - -# Target libraries are put under this directory: -TARGET_SUBDIR = @target_subdir@ -# This is set by the configure script to the arguments to use when configuring -# directories built for the target. -TARGET_CONFIGARGS = @target_configargs@ --with-target-subdir="$(TARGET_SUBDIR)" -# This is the list of variables to export in the environment when -# configuring subdirectories for the host system. -BASE_TARGET_EXPORTS = \ - $(BASE_EXPORTS) \ - AR="$(AR_FOR_TARGET)"; export AR; \ - AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \ - CC="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ - CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \ - GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ - DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ - LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ - LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ - LIPO="$(LIPO_FOR_TARGET)"; export LIPO; \ - NM="$(COMPILER_NM_FOR_TARGET)"; export NM; \ - OBJDUMP="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP; \ - RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \ - STRIP="$(STRIP_FOR_TARGET)"; export STRIP; \ - WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \ - WINDMC="$(WINDMC_FOR_TARGET)"; export WINDMC; \ - $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); - -RAW_CXX_TARGET_EXPORTS = \ - $(BASE_TARGET_EXPORTS) \ - CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ - CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; - -NORMAL_TARGET_EXPORTS = \ - $(BASE_TARGET_EXPORTS) \ - CXX="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; - -# Where to find GMP -HOST_GMPLIBS = @gmplibs@ -HOST_GMPINC = @gmpinc@ - -# Where to find PPL -HOST_PPLLIBS = @ppllibs@ -HOST_PPLINC = @pplinc@ - -# Where to find CLOOG -HOST_CLOOGLIBS = @clooglibs@ -HOST_CLOOGINC = @clooginc@ - -# ---------------------------------------------- -# Programs producing files for the BUILD machine -# ---------------------------------------------- - -SHELL = @config_shell@ - -# pwd command to use. Allow user to override default by setting PWDCMD in -# the environment to account for automounters. The make variable must not -# be called PWDCMD, otherwise the value set here is passed to make -# subprocesses and overrides the setting from the user's environment. -# Don't use PWD since it is a common shell environment variable and we -# don't want to corrupt it. -PWD_COMMAND = $${PWDCMD-pwd} - -# compilers to use to create programs which must be run in the build -# environment. -AR_FOR_BUILD = @AR_FOR_BUILD@ -AS_FOR_BUILD = @AS_FOR_BUILD@ -CC_FOR_BUILD = @CC_FOR_BUILD@ -CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ -CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ -CXX_FOR_BUILD = @CXX_FOR_BUILD@ -DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ -GCJ_FOR_BUILD = @GCJ_FOR_BUILD@ -GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ -LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ -LD_FOR_BUILD = @LD_FOR_BUILD@ -NM_FOR_BUILD = @NM_FOR_BUILD@ -RANLIB_FOR_BUILD = @RANLIB_FOR_BUILD@ -WINDMC_FOR_BUILD = @WINDMC_FOR_BUILD@ -WINDRES_FOR_BUILD = @WINDRES_FOR_BUILD@ - -# Special variables passed down in EXTRA_GCC_FLAGS. They are defined -# here so that they can be overridden by Makefile fragments. -BUILD_PREFIX = @BUILD_PREFIX@ -BUILD_PREFIX_1 = @BUILD_PREFIX_1@ - -# Flags to pass to stage2 and later makes. They are defined -# here so that they can be overridden by Makefile fragments. -BOOT_CFLAGS= -g -O2 -BOOT_LDFLAGS= -BOOT_ADAFLAGS=-gnatpg -gnata - -AWK = @AWK@ -SED = @SED@ -BISON = @BISON@ -YACC = @YACC@ -FLEX = @FLEX@ -LEX = @LEX@ -M4 = @M4@ -MAKEINFO = @MAKEINFO@ -EXPECT = @EXPECT@ -RUNTEST = @RUNTEST@ - -# This just becomes part of the MAKEINFO definition passed down to -# sub-makes. It lets flags be given on the command line while still -# using the makeinfo from the object tree. -# (Default to avoid splitting info files by setting the threshold high.) -MAKEINFOFLAGS = --split-size=5000000 - -# --------------------------------------------- -# Programs producing files for the HOST machine -# --------------------------------------------- - -AS = @AS@ -AR = @AR@ -AR_FLAGS = rc -CC = @CC@ -CXX = @CXX@ -DLLTOOL = @DLLTOOL@ -LD = @LD@ -LIPO = @LIPO@ -NM = @NM@ -OBJDUMP = @OBJDUMP@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -WINDRES = @WINDRES@ -WINDMC = @WINDMC@ - -GNATBIND = @GNATBIND@ -GNATMAKE = @GNATMAKE@ - -CFLAGS = @CFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBCFLAGS = $(CFLAGS) -CXXFLAGS = @CXXFLAGS@ -LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates - -TFLAGS = - -# Defaults for all stages; some are overridden below. - -STAGE_CFLAGS = $(BOOT_CFLAGS) -STAGE_TFLAGS = $(TFLAGS) -STAGE_CONFIGURE_FLAGS=@stage2_werror_flag@ - - -# Defaults for stage 1; some are overridden below. -STAGE1_CFLAGS = $(STAGE_CFLAGS) -STAGE1_TFLAGS = $(STAGE_TFLAGS) -STAGE1_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) - -# Defaults for stage 2; some are overridden below. -STAGE2_CFLAGS = $(STAGE_CFLAGS) -STAGE2_TFLAGS = $(STAGE_TFLAGS) -STAGE2_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) - -# Defaults for stage 3; some are overridden below. -STAGE3_CFLAGS = $(STAGE_CFLAGS) -STAGE3_TFLAGS = $(STAGE_TFLAGS) -STAGE3_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) - -# Defaults for stage 4; some are overridden below. -STAGE4_CFLAGS = $(STAGE_CFLAGS) -STAGE4_TFLAGS = $(STAGE_TFLAGS) -STAGE4_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) - -# Defaults for stage profile; some are overridden below. -STAGEprofile_CFLAGS = $(STAGE_CFLAGS) -STAGEprofile_TFLAGS = $(STAGE_TFLAGS) -STAGEprofile_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) - -# Defaults for stage feedback; some are overridden below. -STAGEfeedback_CFLAGS = $(STAGE_CFLAGS) -STAGEfeedback_TFLAGS = $(STAGE_TFLAGS) -STAGEfeedback_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) - - -# Only build the C compiler for stage1, because that is the only one that -# we can guarantee will build with the native compiler, and also it is the -# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS), -# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them -# overrideable (for a bootstrap build stage1 also builds gcc.info). - -STAGE1_CFLAGS = @stage1_cflags@ -STAGE1_CHECKING=@stage1_checking@ -STAGE1_LANGUAGES=@stage1_languages@ -# * We force-disable intermodule optimizations, even if -# --enable-intermodule was passed, since the installed compiler -# probably can't handle them. Luckily, autoconf always respects -# the last argument when conflicting --enable arguments are passed. -# * Likewise, we force-disable coverage flags, since the installed -# compiler probably has never heard of them. -STAGE1_CONFIGURE_FLAGS = --disable-intermodule $(STAGE1_CHECKING) \ - --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" - -STAGEprofile_CFLAGS = $(STAGE2_CFLAGS) -fprofile-generate -STAGEprofile_TFLAGS = $(STAGE2_TFLAGS) - -STAGEfeedback_CFLAGS = $(STAGE3_CFLAGS) -fprofile-use -STAGEfeedback_TFLAGS = $(STAGE3_TFLAGS) - -do-compare = @do_compare@ -do-compare3 = $(do-compare) - -# ----------------------------------------------- -# Programs producing files for the TARGET machine -# ----------------------------------------------- - -AR_FOR_TARGET=@AR_FOR_TARGET@ -AS_FOR_TARGET=@AS_FOR_TARGET@ -CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ - -# If GCC_FOR_TARGET is not overriden on the command line, then this -# variable is passed down to the gcc Makefile, where it is used to -# build libgcc2.a. We define it here so that it can itself be -# overridden on the command line. -GCC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCC_FOR_TARGET@ -CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ -RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ -GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ -GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ -DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ -LD_FOR_TARGET=@LD_FOR_TARGET@ - -LIPO_FOR_TARGET=@LIPO_FOR_TARGET@ -NM_FOR_TARGET=@NM_FOR_TARGET@ -OBJDUMP_FOR_TARGET=@OBJDUMP_FOR_TARGET@ -RANLIB_FOR_TARGET=@RANLIB_FOR_TARGET@ -STRIP_FOR_TARGET=@STRIP_FOR_TARGET@ -WINDRES_FOR_TARGET=@WINDRES_FOR_TARGET@ -WINDMC_FOR_TARGET=@WINDMC_FOR_TARGET@ - -COMPILER_AS_FOR_TARGET=@COMPILER_AS_FOR_TARGET@ -COMPILER_LD_FOR_TARGET=@COMPILER_LD_FOR_TARGET@ -COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_TARGET@ - -CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@ -CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@ - -LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) -LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates -LDFLAGS_FOR_TARGET = - -FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ -SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ -DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@ - -XGCC_FLAGS_FOR_TARGET = $(FLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET) - -# ------------------------------------ -# Miscellaneous targets and flag lists -# ------------------------------------ - -# The first rule in the file had better be this one. Don't put any above it. -# This lives here to allow makefile fragments to contain dependencies. -all: - -#### host and target specific makefile fragments come in here. -@target_makefile_frag@ -@alphaieee_frag@ -@ospace_frag@ -@host_makefile_frag@ -### - -# This is the list of directories that may be needed in RPATH_ENVVAR -# so that prorgams built for the target machine work. -TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(HOST_LIB_PATH_gcc) - -@if target-libstdc++-v3 -TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/.libs: -@endif target-libstdc++-v3 - -@if target-libmudflap -TARGET_LIB_PATH_libmudflap = $$r/$(TARGET_SUBDIR)/libmudflap/.libs: -@endif target-libmudflap - -@if target-libssp -TARGET_LIB_PATH_libssp = $$r/$(TARGET_SUBDIR)/libssp/.libs: -@endif target-libssp - -@if target-libgomp -TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs: -@endif target-libgomp - - - -# This is the list of directories that may be needed in RPATH_ENVVAR -# so that programs built for the host machine work. -HOST_LIB_PATH = $(HOST_LIB_PATH_bfd)$(HOST_LIB_PATH_opcodes)$(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_ppl)$(HOST_LIB_PATH_cloog) - -# Define HOST_LIB_PATH_gcc here, for the sake of TARGET_LIB_PATH, ouch -@if gcc -HOST_LIB_PATH_gcc = $$r/$(HOST_SUBDIR)/gcc$(GCC_SHLIB_SUBDIR):$$r/$(HOST_SUBDIR)/prev-gcc$(GCC_SHLIB_SUBDIR): -@endif gcc - - -@if bfd -HOST_LIB_PATH_bfd = \ - $$r/$(HOST_SUBDIR)/bfd/.libs:$$r/$(HOST_SUBDIR)/prev-bfd/.libs: -@endif bfd - -@if opcodes -HOST_LIB_PATH_opcodes = \ - $$r/$(HOST_SUBDIR)/opcodes/.libs:$$r/$(HOST_SUBDIR)/prev-opcodes/.libs: -@endif opcodes - -@if gmp -HOST_LIB_PATH_gmp = \ - $$r/$(HOST_SUBDIR)/gmp/.libs:$$r/$(HOST_SUBDIR)/prev-gmp/.libs: -@endif gmp - -@if mpfr -HOST_LIB_PATH_mpfr = \ - $$r/$(HOST_SUBDIR)/mpfr/.libs:$$r/$(HOST_SUBDIR)/prev-mpfr/.libs: -@endif mpfr - -@if mpc -HOST_LIB_PATH_mpc = \ - $$r/$(HOST_SUBDIR)/mpc/.libs:$$r/$(HOST_SUBDIR)/prev-mpc/.libs: -@endif mpc - -@if ppl -HOST_LIB_PATH_ppl = \ - $$r/$(HOST_SUBDIR)/ppl/.libs:$$r/$(HOST_SUBDIR)/prev-ppl/.libs: -@endif ppl - -@if cloog -HOST_LIB_PATH_cloog = \ - $$r/$(HOST_SUBDIR)/cloog/.libs:$$r/$(HOST_SUBDIR)/prev-cloog/.libs: -@endif cloog - - -# Flags to pass down to all sub-makes. -BASE_FLAGS_TO_PASS = \ - "DESTDIR=$(DESTDIR)" \ - "RPATH_ENVVAR=$(RPATH_ENVVAR)" \ - "TARGET_SUBDIR=$(TARGET_SUBDIR)" \ - "bindir=$(bindir)" \ - "datadir=$(datadir)" \ - "exec_prefix=$(exec_prefix)" \ - "includedir=$(includedir)" \ - "datarootdir=$(datarootdir)" \ - "docdir=$(docdir)" \ - "infodir=$(infodir)" \ - "pdfdir=$(pdfdir)" \ - "htmldir=$(htmldir)" \ - "libdir=$(libdir)" \ - "libexecdir=$(libexecdir)" \ - "lispdir=$(lispdir)" \ - "localstatedir=$(localstatedir)" \ - "mandir=$(mandir)" \ - "oldincludedir=$(oldincludedir)" \ - "prefix=$(prefix)" \ - "sbindir=$(sbindir)" \ - "sharedstatedir=$(sharedstatedir)" \ - "sysconfdir=$(sysconfdir)" \ - "tooldir=$(tooldir)" \ - "build_tooldir=$(build_tooldir)" \ - "target_alias=$(target_alias)" \ - "AWK=$(AWK)" \ - "BISON=$(BISON)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \ - "EXPECT=$(EXPECT)" \ - "FLEX=$(FLEX)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "LDFLAGS_FOR_BUILD=$(LDFLAGS_FOR_BUILD)" \ - "LEX=$(LEX)" \ - "M4=$(M4)" \ - "MAKE=$(MAKE)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "SED=$(SED)" \ - "SHELL=$(SHELL)" \ - "YACC=$(YACC)" \ - "`echo 'ADAFLAGS=$(ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ - "ADA_CFLAGS=$(ADA_CFLAGS)" \ - "AR_FLAGS=$(AR_FLAGS)" \ - "`echo 'BOOT_ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ - "BOOT_CFLAGS=$(BOOT_CFLAGS)" \ - "BOOT_LDFLAGS=$(BOOT_LDFLAGS)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCXXFLAGS=$(LIBCXXFLAGS)" \ - "STAGE1_CHECKING=$(STAGE1_CHECKING)" \ - "STAGE1_LANGUAGES=$(STAGE1_LANGUAGES)" \ - "GNATBIND=$(GNATBIND)" \ - "GNATMAKE=$(GNATMAKE)" \ - "AR_FOR_TARGET=$(AR_FOR_TARGET)" \ - "AS_FOR_TARGET=$(AS_FOR_TARGET)" \ - "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "CPPFLAGS_FOR_TARGET=$(CPPFLAGS_FOR_TARGET)" \ - "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \ - "CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \ - "DLLTOOL_FOR_TARGET=$(DLLTOOL_FOR_TARGET)" \ - "FLAGS_FOR_TARGET=$(FLAGS_FOR_TARGET)" \ - "GCJ_FOR_TARGET=$(GCJ_FOR_TARGET)" \ - "GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \ - "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ - "LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \ - "LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "LIBCXXFLAGS_FOR_TARGET=$(LIBCXXFLAGS_FOR_TARGET)" \ - "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ - "OBJDUMP_FOR_TARGET=$(OBJDUMP_FOR_TARGET)" \ - "RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \ - "STRIP_FOR_TARGET=$(STRIP_FOR_TARGET)" \ - "WINDRES_FOR_TARGET=$(WINDRES_FOR_TARGET)" \ - "WINDMC_FOR_TARGET=$(WINDMC_FOR_TARGET)" \ - "BUILD_CONFIG=$(BUILD_CONFIG)" \ - "`echo 'LANGUAGES=$(LANGUAGES)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ - "LEAN=$(LEAN)" \ - "STAGE1_CFLAGS=$(STAGE1_CFLAGS)" \ - "STAGE1_TFLAGS=$(STAGE1_TFLAGS)" \ - "STAGE2_CFLAGS=$(STAGE2_CFLAGS)" \ - "STAGE2_TFLAGS=$(STAGE2_TFLAGS)" \ - "STAGE3_CFLAGS=$(STAGE3_CFLAGS)" \ - "STAGE3_TFLAGS=$(STAGE3_TFLAGS)" \ - "STAGE4_CFLAGS=$(STAGE4_CFLAGS)" \ - "STAGE4_TFLAGS=$(STAGE4_TFLAGS)" \ - "STAGEprofile_CFLAGS=$(STAGEprofile_CFLAGS)" \ - "STAGEprofile_TFLAGS=$(STAGEprofile_TFLAGS)" \ - "STAGEfeedback_CFLAGS=$(STAGEfeedback_CFLAGS)" \ - "STAGEfeedback_TFLAGS=$(STAGEfeedback_TFLAGS)" \ - "TFLAGS=$(TFLAGS)" \ - "CONFIG_SHELL=$(SHELL)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" - -# We leave this in just in case, but it is not needed anymore. -RECURSE_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) - -# Flags to pass down to most sub-makes, in which we're building with -# the host environment. -EXTRA_HOST_FLAGS = \ - 'AR=$(AR)' \ - 'AS=$(AS)' \ - 'CC=$(CC)' \ - 'CXX=$(CXX)' \ - 'DLLTOOL=$(DLLTOOL)' \ - 'GCJ=$(GCJ)' \ - 'GFORTRAN=$(GFORTRAN)' \ - 'LD=$(LD)' \ - 'LIPO=$(LIPO)' \ - 'NM=$(NM)' \ - 'OBJDUMP=$(OBJDUMP)' \ - 'RANLIB=$(RANLIB)' \ - 'STRIP=$(STRIP)' \ - 'WINDRES=$(WINDRES)' \ - 'WINDMC=$(WINDMC)' - -FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) - -# Flags that are concerned with the location of the X11 include files -# and library files -# -# NOTE: until the top-level is getting the values via autoconf, it only -# causes problems to have this top-level Makefile overriding the autoconf-set -# values in child directories. Only variables that don't conflict with -# autoconf'ed ones should be passed by X11_FLAGS_TO_PASS for now. -# -X11_FLAGS_TO_PASS = \ - 'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \ - 'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)' - -# Flags to pass to stage2 and later makes. - -POSTSTAGE1_FLAGS_TO_PASS = \ - CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ - CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ - GNATBIND="$${GNATBIND}" \ - LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)" \ - HOST_LIBS="$(POSTSTAGE1_LIBS)" \ - "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" - -# Flags to pass down to makes which are built with the target environment. -# The double $ decreases the length of the command line; those variables -# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The -# *_CFLAGS_FOR_TARGET variables are not passed down and most often empty, -# so we expand them here. -EXTRA_TARGET_FLAGS = \ - 'AR=$$(AR_FOR_TARGET)' \ - 'AS=$(COMPILER_AS_FOR_TARGET)' \ - 'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ - 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \ - 'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ - 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ - 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ - 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ - 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ - 'LD=$(COMPILER_LD_FOR_TARGET)' \ - 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ - 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ - 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \ - 'NM=$(COMPILER_NM_FOR_TARGET)' \ - 'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \ - 'RANLIB=$$(RANLIB_FOR_TARGET)' \ - 'WINDRES=$$(WINDRES_FOR_TARGET)' \ - 'WINDMC=$$(WINDMC_FOR_TARGET)' \ - 'XGCC_FLAGS_FOR_TARGET=$(XGCC_FLAGS_FOR_TARGET)' \ - "TFLAGS=$$TFLAGS" - -TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) - -# Flags to pass down to gcc. gcc builds a library, libgcc.a, so it -# unfortunately needs the native compiler and the target ar and -# ranlib. -# If any variables are added here, they must be added to do-*, below. -# The BUILD_* variables are a special case, which are used for the gcc -# cross-building scheme. -EXTRA_GCC_FLAGS = \ - "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \ - "`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ - "`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ - "`echo 'LIBGCC2_CFLAGS=$(LIBGCC2_CFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ - "`echo 'LIBGCC2_DEBUG_CFLAGS=$(LIBGCC2_DEBUG_CFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ - "`echo 'LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" - -GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) - -@if gcc -BUILD_CONFIG = @BUILD_CONFIG@ -ifneq ($(BUILD_CONFIG),) -include $(foreach CONFIG, $(BUILD_CONFIG), $(srcdir)/config/$(CONFIG).mk) -endif -@endif gcc - -.PHONY: configure-host -configure-host: \ - maybe-configure-ash \ - maybe-configure-autoconf \ - maybe-configure-automake \ - maybe-configure-bash \ - maybe-configure-bfd \ - maybe-configure-opcodes \ - maybe-configure-binutils \ - maybe-configure-bison \ - maybe-configure-byacc \ - maybe-configure-bzip2 \ - maybe-configure-cgen \ - maybe-configure-dejagnu \ - maybe-configure-diff \ - maybe-configure-dosutils \ - maybe-configure-etc \ - maybe-configure-fastjar \ - maybe-configure-fileutils \ - maybe-configure-findutils \ - maybe-configure-find \ - maybe-configure-fixincludes \ - maybe-configure-flex \ - maybe-configure-gas \ - maybe-configure-gcc \ - maybe-configure-gawk \ - maybe-configure-gettext \ - maybe-configure-gmp \ - maybe-configure-mpfr \ - maybe-configure-mpc \ - maybe-configure-ppl \ - maybe-configure-cloog \ - maybe-configure-gnuserv \ - maybe-configure-gold \ - maybe-configure-gprof \ - maybe-configure-gzip \ - maybe-configure-hello \ - maybe-configure-indent \ - maybe-configure-intl \ - maybe-configure-tcl \ - maybe-configure-itcl \ - maybe-configure-ld \ - maybe-configure-libcpp \ - maybe-configure-libdecnumber \ - maybe-configure-libgui \ - maybe-configure-libiberty \ - maybe-configure-libiconv \ - maybe-configure-libtool \ - maybe-configure-m4 \ - maybe-configure-make \ - maybe-configure-mmalloc \ - maybe-configure-patch \ - maybe-configure-perl \ - maybe-configure-prms \ - maybe-configure-rcs \ - maybe-configure-readline \ - maybe-configure-release \ - maybe-configure-recode \ - maybe-configure-sed \ - maybe-configure-send-pr \ - maybe-configure-shellutils \ - maybe-configure-sid \ - maybe-configure-sim \ - maybe-configure-tar \ - maybe-configure-texinfo \ - maybe-configure-textutils \ - maybe-configure-time \ - maybe-configure-uudecode \ - maybe-configure-wdiff \ - maybe-configure-zip \ - maybe-configure-zlib \ - maybe-configure-gdb \ - maybe-configure-expect \ - maybe-configure-guile \ - maybe-configure-tk \ - maybe-configure-libtermcap \ - maybe-configure-utils \ - maybe-configure-gnattools -.PHONY: configure-target -configure-target: \ - maybe-configure-target-libstdc++-v3 \ - maybe-configure-target-libmudflap \ - maybe-configure-target-libssp \ - maybe-configure-target-newlib \ - maybe-configure-target-libgcc \ - maybe-configure-target-libgfortran \ - maybe-configure-target-libobjc \ - maybe-configure-target-libtermcap \ - maybe-configure-target-winsup \ - maybe-configure-target-libgloss \ - maybe-configure-target-libiberty \ - maybe-configure-target-gperf \ - maybe-configure-target-examples \ - maybe-configure-target-libffi \ - maybe-configure-target-libjava \ - maybe-configure-target-zlib \ - maybe-configure-target-boehm-gc \ - maybe-configure-target-qthreads \ - maybe-configure-target-rda \ - maybe-configure-target-libada \ - maybe-configure-target-libgomp - -# The target built for a native non-bootstrap build. -.PHONY: all -all: -@if gcc-bootstrap - [ -f stage_final ] || echo stage3 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble -@endif gcc-bootstrap - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ -@if gcc-bootstrap - if [ -f stage_last ]; then \ - TFLAGS="$(STAGE$(shell test ! -f stage_last || sed s,^stage,, stage_last)_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \ - else \ -@endif gcc-bootstrap - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target \ -@if gcc-bootstrap - ; \ - fi \ -@endif gcc-bootstrap - && : - -.PHONY: all-build - -all-build: maybe-all-build-libiberty -all-build: maybe-all-build-bison -all-build: maybe-all-build-byacc -all-build: maybe-all-build-flex -all-build: maybe-all-build-m4 -all-build: maybe-all-build-texinfo -all-build: maybe-all-build-fixincludes - -.PHONY: all-host - -all-host: maybe-all-ash -all-host: maybe-all-autoconf -all-host: maybe-all-automake -all-host: maybe-all-bash -@if bfd-no-bootstrap -all-host: maybe-all-bfd -@endif bfd-no-bootstrap -@if opcodes-no-bootstrap -all-host: maybe-all-opcodes -@endif opcodes-no-bootstrap -@if binutils-no-bootstrap -all-host: maybe-all-binutils -@endif binutils-no-bootstrap -all-host: maybe-all-bison -all-host: maybe-all-byacc -all-host: maybe-all-bzip2 -all-host: maybe-all-cgen -all-host: maybe-all-dejagnu -all-host: maybe-all-diff -all-host: maybe-all-dosutils -all-host: maybe-all-etc -all-host: maybe-all-fastjar -all-host: maybe-all-fileutils -all-host: maybe-all-findutils -all-host: maybe-all-find -all-host: maybe-all-fixincludes -all-host: maybe-all-flex -@if gas-no-bootstrap -all-host: maybe-all-gas -@endif gas-no-bootstrap -@if gcc-no-bootstrap -all-host: maybe-all-gcc -@endif gcc-no-bootstrap -all-host: maybe-all-gawk -all-host: maybe-all-gettext -@if gmp-no-bootstrap -all-host: maybe-all-gmp -@endif gmp-no-bootstrap -@if mpfr-no-bootstrap -all-host: maybe-all-mpfr -@endif mpfr-no-bootstrap -@if mpc-no-bootstrap -all-host: maybe-all-mpc -@endif mpc-no-bootstrap -@if ppl-no-bootstrap -all-host: maybe-all-ppl -@endif ppl-no-bootstrap -@if cloog-no-bootstrap -all-host: maybe-all-cloog -@endif cloog-no-bootstrap -all-host: maybe-all-gnuserv -@if gold-no-bootstrap -all-host: maybe-all-gold -@endif gold-no-bootstrap -all-host: maybe-all-gprof -all-host: maybe-all-gzip -all-host: maybe-all-hello -all-host: maybe-all-indent -@if intl-no-bootstrap -all-host: maybe-all-intl -@endif intl-no-bootstrap -all-host: maybe-all-tcl -all-host: maybe-all-itcl -@if ld-no-bootstrap -all-host: maybe-all-ld -@endif ld-no-bootstrap -@if libcpp-no-bootstrap -all-host: maybe-all-libcpp -@endif libcpp-no-bootstrap -@if libdecnumber-no-bootstrap -all-host: maybe-all-libdecnumber -@endif libdecnumber-no-bootstrap -all-host: maybe-all-libgui -@if libiberty-no-bootstrap -all-host: maybe-all-libiberty -@endif libiberty-no-bootstrap -all-host: maybe-all-libiconv -all-host: maybe-all-libtool -all-host: maybe-all-m4 -all-host: maybe-all-make -all-host: maybe-all-mmalloc -all-host: maybe-all-patch -all-host: maybe-all-perl -all-host: maybe-all-prms -all-host: maybe-all-rcs -all-host: maybe-all-readline -all-host: maybe-all-release -all-host: maybe-all-recode -all-host: maybe-all-sed -all-host: maybe-all-send-pr -all-host: maybe-all-shellutils -all-host: maybe-all-sid -all-host: maybe-all-sim -all-host: maybe-all-tar -all-host: maybe-all-texinfo -all-host: maybe-all-textutils -all-host: maybe-all-time -all-host: maybe-all-uudecode -all-host: maybe-all-wdiff -all-host: maybe-all-zip -@if zlib-no-bootstrap -all-host: maybe-all-zlib -@endif zlib-no-bootstrap -all-host: maybe-all-gdb -all-host: maybe-all-expect -all-host: maybe-all-guile -all-host: maybe-all-tk -all-host: maybe-all-libtermcap -all-host: maybe-all-utils -all-host: maybe-all-gnattools - -.PHONY: all-target - -@if target-libstdc++-v3-no-bootstrap -all-target: maybe-all-target-libstdc++-v3 -@endif target-libstdc++-v3-no-bootstrap -all-target: maybe-all-target-libmudflap -all-target: maybe-all-target-libssp -all-target: maybe-all-target-newlib -@if target-libgcc-no-bootstrap -all-target: maybe-all-target-libgcc -@endif target-libgcc-no-bootstrap -all-target: maybe-all-target-libgfortran -all-target: maybe-all-target-libobjc -all-target: maybe-all-target-libtermcap -all-target: maybe-all-target-winsup -all-target: maybe-all-target-libgloss -all-target: maybe-all-target-libiberty -all-target: maybe-all-target-gperf -all-target: maybe-all-target-examples -all-target: maybe-all-target-libffi -all-target: maybe-all-target-libjava -all-target: maybe-all-target-zlib -all-target: maybe-all-target-boehm-gc -all-target: maybe-all-target-qthreads -all-target: maybe-all-target-rda -all-target: maybe-all-target-libada -all-target: maybe-all-target-libgomp - -# Do a target for all the subdirectories. A ``make do-X'' will do a -# ``make X'' in all subdirectories (because, in general, there is a -# dependency (below) of X upon do-X, a ``make X'' will also do this, -# but it may do additional work as well). - -.PHONY: do-info -do-info: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) info-host \ - info-target - - -.PHONY: info-host - -info-host: maybe-info-ash -info-host: maybe-info-autoconf -info-host: maybe-info-automake -info-host: maybe-info-bash -info-host: maybe-info-bfd -info-host: maybe-info-opcodes -info-host: maybe-info-binutils -info-host: maybe-info-bison -info-host: maybe-info-byacc -info-host: maybe-info-bzip2 -info-host: maybe-info-cgen -info-host: maybe-info-dejagnu -info-host: maybe-info-diff -info-host: maybe-info-dosutils -info-host: maybe-info-etc -info-host: maybe-info-fastjar -info-host: maybe-info-fileutils -info-host: maybe-info-findutils -info-host: maybe-info-find -info-host: maybe-info-fixincludes -info-host: maybe-info-flex -info-host: maybe-info-gas -info-host: maybe-info-gcc -info-host: maybe-info-gawk -info-host: maybe-info-gettext -info-host: maybe-info-gmp -info-host: maybe-info-mpfr -info-host: maybe-info-mpc -info-host: maybe-info-ppl -info-host: maybe-info-cloog -info-host: maybe-info-gnuserv -info-host: maybe-info-gold -info-host: maybe-info-gprof -info-host: maybe-info-gzip -info-host: maybe-info-hello -info-host: maybe-info-indent -info-host: maybe-info-intl -info-host: maybe-info-tcl -info-host: maybe-info-itcl -info-host: maybe-info-ld -info-host: maybe-info-libcpp -info-host: maybe-info-libdecnumber -info-host: maybe-info-libgui -info-host: maybe-info-libiberty -info-host: maybe-info-libiconv -info-host: maybe-info-libtool -info-host: maybe-info-m4 -info-host: maybe-info-make -info-host: maybe-info-mmalloc -info-host: maybe-info-patch -info-host: maybe-info-perl -info-host: maybe-info-prms -info-host: maybe-info-rcs -info-host: maybe-info-readline -info-host: maybe-info-release -info-host: maybe-info-recode -info-host: maybe-info-sed -info-host: maybe-info-send-pr -info-host: maybe-info-shellutils -info-host: maybe-info-sid -info-host: maybe-info-sim -info-host: maybe-info-tar -info-host: maybe-info-texinfo -info-host: maybe-info-textutils -info-host: maybe-info-time -info-host: maybe-info-uudecode -info-host: maybe-info-wdiff -info-host: maybe-info-zip -info-host: maybe-info-zlib -info-host: maybe-info-gdb -info-host: maybe-info-expect -info-host: maybe-info-guile -info-host: maybe-info-tk -info-host: maybe-info-libtermcap -info-host: maybe-info-utils -info-host: maybe-info-gnattools - -.PHONY: info-target - -info-target: maybe-info-target-libstdc++-v3 -info-target: maybe-info-target-libmudflap -info-target: maybe-info-target-libssp -info-target: maybe-info-target-newlib -info-target: maybe-info-target-libgcc -info-target: maybe-info-target-libgfortran -info-target: maybe-info-target-libobjc -info-target: maybe-info-target-libtermcap -info-target: maybe-info-target-winsup -info-target: maybe-info-target-libgloss -info-target: maybe-info-target-libiberty -info-target: maybe-info-target-gperf -info-target: maybe-info-target-examples -info-target: maybe-info-target-libffi -info-target: maybe-info-target-libjava -info-target: maybe-info-target-zlib -info-target: maybe-info-target-boehm-gc -info-target: maybe-info-target-qthreads -info-target: maybe-info-target-rda -info-target: maybe-info-target-libada -info-target: maybe-info-target-libgomp - -.PHONY: do-dvi -do-dvi: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) dvi-host \ - dvi-target - - -.PHONY: dvi-host - -dvi-host: maybe-dvi-ash -dvi-host: maybe-dvi-autoconf -dvi-host: maybe-dvi-automake -dvi-host: maybe-dvi-bash -dvi-host: maybe-dvi-bfd -dvi-host: maybe-dvi-opcodes -dvi-host: maybe-dvi-binutils -dvi-host: maybe-dvi-bison -dvi-host: maybe-dvi-byacc -dvi-host: maybe-dvi-bzip2 -dvi-host: maybe-dvi-cgen -dvi-host: maybe-dvi-dejagnu -dvi-host: maybe-dvi-diff -dvi-host: maybe-dvi-dosutils -dvi-host: maybe-dvi-etc -dvi-host: maybe-dvi-fastjar -dvi-host: maybe-dvi-fileutils -dvi-host: maybe-dvi-findutils -dvi-host: maybe-dvi-find -dvi-host: maybe-dvi-fixincludes -dvi-host: maybe-dvi-flex -dvi-host: maybe-dvi-gas -dvi-host: maybe-dvi-gcc -dvi-host: maybe-dvi-gawk -dvi-host: maybe-dvi-gettext -dvi-host: maybe-dvi-gmp -dvi-host: maybe-dvi-mpfr -dvi-host: maybe-dvi-mpc -dvi-host: maybe-dvi-ppl -dvi-host: maybe-dvi-cloog -dvi-host: maybe-dvi-gnuserv -dvi-host: maybe-dvi-gold -dvi-host: maybe-dvi-gprof -dvi-host: maybe-dvi-gzip -dvi-host: maybe-dvi-hello -dvi-host: maybe-dvi-indent -dvi-host: maybe-dvi-intl -dvi-host: maybe-dvi-tcl -dvi-host: maybe-dvi-itcl -dvi-host: maybe-dvi-ld -dvi-host: maybe-dvi-libcpp -dvi-host: maybe-dvi-libdecnumber -dvi-host: maybe-dvi-libgui -dvi-host: maybe-dvi-libiberty -dvi-host: maybe-dvi-libiconv -dvi-host: maybe-dvi-libtool -dvi-host: maybe-dvi-m4 -dvi-host: maybe-dvi-make -dvi-host: maybe-dvi-mmalloc -dvi-host: maybe-dvi-patch -dvi-host: maybe-dvi-perl -dvi-host: maybe-dvi-prms -dvi-host: maybe-dvi-rcs -dvi-host: maybe-dvi-readline -dvi-host: maybe-dvi-release -dvi-host: maybe-dvi-recode -dvi-host: maybe-dvi-sed -dvi-host: maybe-dvi-send-pr -dvi-host: maybe-dvi-shellutils -dvi-host: maybe-dvi-sid -dvi-host: maybe-dvi-sim -dvi-host: maybe-dvi-tar -dvi-host: maybe-dvi-texinfo -dvi-host: maybe-dvi-textutils -dvi-host: maybe-dvi-time -dvi-host: maybe-dvi-uudecode -dvi-host: maybe-dvi-wdiff -dvi-host: maybe-dvi-zip -dvi-host: maybe-dvi-zlib -dvi-host: maybe-dvi-gdb -dvi-host: maybe-dvi-expect -dvi-host: maybe-dvi-guile -dvi-host: maybe-dvi-tk -dvi-host: maybe-dvi-libtermcap -dvi-host: maybe-dvi-utils -dvi-host: maybe-dvi-gnattools - -.PHONY: dvi-target - -dvi-target: maybe-dvi-target-libstdc++-v3 -dvi-target: maybe-dvi-target-libmudflap -dvi-target: maybe-dvi-target-libssp -dvi-target: maybe-dvi-target-newlib -dvi-target: maybe-dvi-target-libgcc -dvi-target: maybe-dvi-target-libgfortran -dvi-target: maybe-dvi-target-libobjc -dvi-target: maybe-dvi-target-libtermcap -dvi-target: maybe-dvi-target-winsup -dvi-target: maybe-dvi-target-libgloss -dvi-target: maybe-dvi-target-libiberty -dvi-target: maybe-dvi-target-gperf -dvi-target: maybe-dvi-target-examples -dvi-target: maybe-dvi-target-libffi -dvi-target: maybe-dvi-target-libjava -dvi-target: maybe-dvi-target-zlib -dvi-target: maybe-dvi-target-boehm-gc -dvi-target: maybe-dvi-target-qthreads -dvi-target: maybe-dvi-target-rda -dvi-target: maybe-dvi-target-libada -dvi-target: maybe-dvi-target-libgomp - -.PHONY: do-pdf -do-pdf: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) pdf-host \ - pdf-target - - -.PHONY: pdf-host - -pdf-host: maybe-pdf-ash -pdf-host: maybe-pdf-autoconf -pdf-host: maybe-pdf-automake -pdf-host: maybe-pdf-bash -pdf-host: maybe-pdf-bfd -pdf-host: maybe-pdf-opcodes -pdf-host: maybe-pdf-binutils -pdf-host: maybe-pdf-bison -pdf-host: maybe-pdf-byacc -pdf-host: maybe-pdf-bzip2 -pdf-host: maybe-pdf-cgen -pdf-host: maybe-pdf-dejagnu -pdf-host: maybe-pdf-diff -pdf-host: maybe-pdf-dosutils -pdf-host: maybe-pdf-etc -pdf-host: maybe-pdf-fastjar -pdf-host: maybe-pdf-fileutils -pdf-host: maybe-pdf-findutils -pdf-host: maybe-pdf-find -pdf-host: maybe-pdf-fixincludes -pdf-host: maybe-pdf-flex -pdf-host: maybe-pdf-gas -pdf-host: maybe-pdf-gcc -pdf-host: maybe-pdf-gawk -pdf-host: maybe-pdf-gettext -pdf-host: maybe-pdf-gmp -pdf-host: maybe-pdf-mpfr -pdf-host: maybe-pdf-mpc -pdf-host: maybe-pdf-ppl -pdf-host: maybe-pdf-cloog -pdf-host: maybe-pdf-gnuserv -pdf-host: maybe-pdf-gold -pdf-host: maybe-pdf-gprof -pdf-host: maybe-pdf-gzip -pdf-host: maybe-pdf-hello -pdf-host: maybe-pdf-indent -pdf-host: maybe-pdf-intl -pdf-host: maybe-pdf-tcl -pdf-host: maybe-pdf-itcl -pdf-host: maybe-pdf-ld -pdf-host: maybe-pdf-libcpp -pdf-host: maybe-pdf-libdecnumber -pdf-host: maybe-pdf-libgui -pdf-host: maybe-pdf-libiberty -pdf-host: maybe-pdf-libiconv -pdf-host: maybe-pdf-libtool -pdf-host: maybe-pdf-m4 -pdf-host: maybe-pdf-make -pdf-host: maybe-pdf-mmalloc -pdf-host: maybe-pdf-patch -pdf-host: maybe-pdf-perl -pdf-host: maybe-pdf-prms -pdf-host: maybe-pdf-rcs -pdf-host: maybe-pdf-readline -pdf-host: maybe-pdf-release -pdf-host: maybe-pdf-recode -pdf-host: maybe-pdf-sed -pdf-host: maybe-pdf-send-pr -pdf-host: maybe-pdf-shellutils -pdf-host: maybe-pdf-sid -pdf-host: maybe-pdf-sim -pdf-host: maybe-pdf-tar -pdf-host: maybe-pdf-texinfo -pdf-host: maybe-pdf-textutils -pdf-host: maybe-pdf-time -pdf-host: maybe-pdf-uudecode -pdf-host: maybe-pdf-wdiff -pdf-host: maybe-pdf-zip -pdf-host: maybe-pdf-zlib -pdf-host: maybe-pdf-gdb -pdf-host: maybe-pdf-expect -pdf-host: maybe-pdf-guile -pdf-host: maybe-pdf-tk -pdf-host: maybe-pdf-libtermcap -pdf-host: maybe-pdf-utils -pdf-host: maybe-pdf-gnattools - -.PHONY: pdf-target - -pdf-target: maybe-pdf-target-libstdc++-v3 -pdf-target: maybe-pdf-target-libmudflap -pdf-target: maybe-pdf-target-libssp -pdf-target: maybe-pdf-target-newlib -pdf-target: maybe-pdf-target-libgcc -pdf-target: maybe-pdf-target-libgfortran -pdf-target: maybe-pdf-target-libobjc -pdf-target: maybe-pdf-target-libtermcap -pdf-target: maybe-pdf-target-winsup -pdf-target: maybe-pdf-target-libgloss -pdf-target: maybe-pdf-target-libiberty -pdf-target: maybe-pdf-target-gperf -pdf-target: maybe-pdf-target-examples -pdf-target: maybe-pdf-target-libffi -pdf-target: maybe-pdf-target-libjava -pdf-target: maybe-pdf-target-zlib -pdf-target: maybe-pdf-target-boehm-gc -pdf-target: maybe-pdf-target-qthreads -pdf-target: maybe-pdf-target-rda -pdf-target: maybe-pdf-target-libada -pdf-target: maybe-pdf-target-libgomp - -.PHONY: do-html -do-html: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) html-host \ - html-target - - -.PHONY: html-host - -html-host: maybe-html-ash -html-host: maybe-html-autoconf -html-host: maybe-html-automake -html-host: maybe-html-bash -html-host: maybe-html-bfd -html-host: maybe-html-opcodes -html-host: maybe-html-binutils -html-host: maybe-html-bison -html-host: maybe-html-byacc -html-host: maybe-html-bzip2 -html-host: maybe-html-cgen -html-host: maybe-html-dejagnu -html-host: maybe-html-diff -html-host: maybe-html-dosutils -html-host: maybe-html-etc -html-host: maybe-html-fastjar -html-host: maybe-html-fileutils -html-host: maybe-html-findutils -html-host: maybe-html-find -html-host: maybe-html-fixincludes -html-host: maybe-html-flex -html-host: maybe-html-gas -html-host: maybe-html-gcc -html-host: maybe-html-gawk -html-host: maybe-html-gettext -html-host: maybe-html-gmp -html-host: maybe-html-mpfr -html-host: maybe-html-mpc -html-host: maybe-html-ppl -html-host: maybe-html-cloog -html-host: maybe-html-gnuserv -html-host: maybe-html-gold -html-host: maybe-html-gprof -html-host: maybe-html-gzip -html-host: maybe-html-hello -html-host: maybe-html-indent -html-host: maybe-html-intl -html-host: maybe-html-tcl -html-host: maybe-html-itcl -html-host: maybe-html-ld -html-host: maybe-html-libcpp -html-host: maybe-html-libdecnumber -html-host: maybe-html-libgui -html-host: maybe-html-libiberty -html-host: maybe-html-libiconv -html-host: maybe-html-libtool -html-host: maybe-html-m4 -html-host: maybe-html-make -html-host: maybe-html-mmalloc -html-host: maybe-html-patch -html-host: maybe-html-perl -html-host: maybe-html-prms -html-host: maybe-html-rcs -html-host: maybe-html-readline -html-host: maybe-html-release -html-host: maybe-html-recode -html-host: maybe-html-sed -html-host: maybe-html-send-pr -html-host: maybe-html-shellutils -html-host: maybe-html-sid -html-host: maybe-html-sim -html-host: maybe-html-tar -html-host: maybe-html-texinfo -html-host: maybe-html-textutils -html-host: maybe-html-time -html-host: maybe-html-uudecode -html-host: maybe-html-wdiff -html-host: maybe-html-zip -html-host: maybe-html-zlib -html-host: maybe-html-gdb -html-host: maybe-html-expect -html-host: maybe-html-guile -html-host: maybe-html-tk -html-host: maybe-html-libtermcap -html-host: maybe-html-utils -html-host: maybe-html-gnattools - -.PHONY: html-target - -html-target: maybe-html-target-libstdc++-v3 -html-target: maybe-html-target-libmudflap -html-target: maybe-html-target-libssp -html-target: maybe-html-target-newlib -html-target: maybe-html-target-libgcc -html-target: maybe-html-target-libgfortran -html-target: maybe-html-target-libobjc -html-target: maybe-html-target-libtermcap -html-target: maybe-html-target-winsup -html-target: maybe-html-target-libgloss -html-target: maybe-html-target-libiberty -html-target: maybe-html-target-gperf -html-target: maybe-html-target-examples -html-target: maybe-html-target-libffi -html-target: maybe-html-target-libjava -html-target: maybe-html-target-zlib -html-target: maybe-html-target-boehm-gc -html-target: maybe-html-target-qthreads -html-target: maybe-html-target-rda -html-target: maybe-html-target-libada -html-target: maybe-html-target-libgomp - -.PHONY: do-TAGS -do-TAGS: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) TAGS-host \ - TAGS-target - - -.PHONY: TAGS-host - -TAGS-host: maybe-TAGS-ash -TAGS-host: maybe-TAGS-autoconf -TAGS-host: maybe-TAGS-automake -TAGS-host: maybe-TAGS-bash -TAGS-host: maybe-TAGS-bfd -TAGS-host: maybe-TAGS-opcodes -TAGS-host: maybe-TAGS-binutils -TAGS-host: maybe-TAGS-bison -TAGS-host: maybe-TAGS-byacc -TAGS-host: maybe-TAGS-bzip2 -TAGS-host: maybe-TAGS-cgen -TAGS-host: maybe-TAGS-dejagnu -TAGS-host: maybe-TAGS-diff -TAGS-host: maybe-TAGS-dosutils -TAGS-host: maybe-TAGS-etc -TAGS-host: maybe-TAGS-fastjar -TAGS-host: maybe-TAGS-fileutils -TAGS-host: maybe-TAGS-findutils -TAGS-host: maybe-TAGS-find -TAGS-host: maybe-TAGS-fixincludes -TAGS-host: maybe-TAGS-flex -TAGS-host: maybe-TAGS-gas -TAGS-host: maybe-TAGS-gcc -TAGS-host: maybe-TAGS-gawk -TAGS-host: maybe-TAGS-gettext -TAGS-host: maybe-TAGS-gmp -TAGS-host: maybe-TAGS-mpfr -TAGS-host: maybe-TAGS-mpc -TAGS-host: maybe-TAGS-ppl -TAGS-host: maybe-TAGS-cloog -TAGS-host: maybe-TAGS-gnuserv -TAGS-host: maybe-TAGS-gold -TAGS-host: maybe-TAGS-gprof -TAGS-host: maybe-TAGS-gzip -TAGS-host: maybe-TAGS-hello -TAGS-host: maybe-TAGS-indent -TAGS-host: maybe-TAGS-intl -TAGS-host: maybe-TAGS-tcl -TAGS-host: maybe-TAGS-itcl -TAGS-host: maybe-TAGS-ld -TAGS-host: maybe-TAGS-libcpp -TAGS-host: maybe-TAGS-libdecnumber -TAGS-host: maybe-TAGS-libgui -TAGS-host: maybe-TAGS-libiberty -TAGS-host: maybe-TAGS-libiconv -TAGS-host: maybe-TAGS-libtool -TAGS-host: maybe-TAGS-m4 -TAGS-host: maybe-TAGS-make -TAGS-host: maybe-TAGS-mmalloc -TAGS-host: maybe-TAGS-patch -TAGS-host: maybe-TAGS-perl -TAGS-host: maybe-TAGS-prms -TAGS-host: maybe-TAGS-rcs -TAGS-host: maybe-TAGS-readline -TAGS-host: maybe-TAGS-release -TAGS-host: maybe-TAGS-recode -TAGS-host: maybe-TAGS-sed -TAGS-host: maybe-TAGS-send-pr -TAGS-host: maybe-TAGS-shellutils -TAGS-host: maybe-TAGS-sid -TAGS-host: maybe-TAGS-sim -TAGS-host: maybe-TAGS-tar -TAGS-host: maybe-TAGS-texinfo -TAGS-host: maybe-TAGS-textutils -TAGS-host: maybe-TAGS-time -TAGS-host: maybe-TAGS-uudecode -TAGS-host: maybe-TAGS-wdiff -TAGS-host: maybe-TAGS-zip -TAGS-host: maybe-TAGS-zlib -TAGS-host: maybe-TAGS-gdb -TAGS-host: maybe-TAGS-expect -TAGS-host: maybe-TAGS-guile -TAGS-host: maybe-TAGS-tk -TAGS-host: maybe-TAGS-libtermcap -TAGS-host: maybe-TAGS-utils -TAGS-host: maybe-TAGS-gnattools - -.PHONY: TAGS-target - -TAGS-target: maybe-TAGS-target-libstdc++-v3 -TAGS-target: maybe-TAGS-target-libmudflap -TAGS-target: maybe-TAGS-target-libssp -TAGS-target: maybe-TAGS-target-newlib -TAGS-target: maybe-TAGS-target-libgcc -TAGS-target: maybe-TAGS-target-libgfortran -TAGS-target: maybe-TAGS-target-libobjc -TAGS-target: maybe-TAGS-target-libtermcap -TAGS-target: maybe-TAGS-target-winsup -TAGS-target: maybe-TAGS-target-libgloss -TAGS-target: maybe-TAGS-target-libiberty -TAGS-target: maybe-TAGS-target-gperf -TAGS-target: maybe-TAGS-target-examples -TAGS-target: maybe-TAGS-target-libffi -TAGS-target: maybe-TAGS-target-libjava -TAGS-target: maybe-TAGS-target-zlib -TAGS-target: maybe-TAGS-target-boehm-gc -TAGS-target: maybe-TAGS-target-qthreads -TAGS-target: maybe-TAGS-target-rda -TAGS-target: maybe-TAGS-target-libada -TAGS-target: maybe-TAGS-target-libgomp - -.PHONY: do-install-info -do-install-info: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) install-info-host \ - install-info-target - - -.PHONY: install-info-host - -install-info-host: maybe-install-info-ash -install-info-host: maybe-install-info-autoconf -install-info-host: maybe-install-info-automake -install-info-host: maybe-install-info-bash -install-info-host: maybe-install-info-bfd -install-info-host: maybe-install-info-opcodes -install-info-host: maybe-install-info-binutils -install-info-host: maybe-install-info-bison -install-info-host: maybe-install-info-byacc -install-info-host: maybe-install-info-bzip2 -install-info-host: maybe-install-info-cgen -install-info-host: maybe-install-info-dejagnu -install-info-host: maybe-install-info-diff -install-info-host: maybe-install-info-dosutils -install-info-host: maybe-install-info-etc -install-info-host: maybe-install-info-fastjar -install-info-host: maybe-install-info-fileutils -install-info-host: maybe-install-info-findutils -install-info-host: maybe-install-info-find -install-info-host: maybe-install-info-fixincludes -install-info-host: maybe-install-info-flex -install-info-host: maybe-install-info-gas -install-info-host: maybe-install-info-gcc -install-info-host: maybe-install-info-gawk -install-info-host: maybe-install-info-gettext -install-info-host: maybe-install-info-gmp -install-info-host: maybe-install-info-mpfr -install-info-host: maybe-install-info-mpc -install-info-host: maybe-install-info-ppl -install-info-host: maybe-install-info-cloog -install-info-host: maybe-install-info-gnuserv -install-info-host: maybe-install-info-gold -install-info-host: maybe-install-info-gprof -install-info-host: maybe-install-info-gzip -install-info-host: maybe-install-info-hello -install-info-host: maybe-install-info-indent -install-info-host: maybe-install-info-intl -install-info-host: maybe-install-info-tcl -install-info-host: maybe-install-info-itcl -install-info-host: maybe-install-info-ld -install-info-host: maybe-install-info-libcpp -install-info-host: maybe-install-info-libdecnumber -install-info-host: maybe-install-info-libgui -install-info-host: maybe-install-info-libiberty -install-info-host: maybe-install-info-libiconv -install-info-host: maybe-install-info-libtool -install-info-host: maybe-install-info-m4 -install-info-host: maybe-install-info-make -install-info-host: maybe-install-info-mmalloc -install-info-host: maybe-install-info-patch -install-info-host: maybe-install-info-perl -install-info-host: maybe-install-info-prms -install-info-host: maybe-install-info-rcs -install-info-host: maybe-install-info-readline -install-info-host: maybe-install-info-release -install-info-host: maybe-install-info-recode -install-info-host: maybe-install-info-sed -install-info-host: maybe-install-info-send-pr -install-info-host: maybe-install-info-shellutils -install-info-host: maybe-install-info-sid -install-info-host: maybe-install-info-sim -install-info-host: maybe-install-info-tar -install-info-host: maybe-install-info-texinfo -install-info-host: maybe-install-info-textutils -install-info-host: maybe-install-info-time -install-info-host: maybe-install-info-uudecode -install-info-host: maybe-install-info-wdiff -install-info-host: maybe-install-info-zip -install-info-host: maybe-install-info-zlib -install-info-host: maybe-install-info-gdb -install-info-host: maybe-install-info-expect -install-info-host: maybe-install-info-guile -install-info-host: maybe-install-info-tk -install-info-host: maybe-install-info-libtermcap -install-info-host: maybe-install-info-utils -install-info-host: maybe-install-info-gnattools - -.PHONY: install-info-target - -install-info-target: maybe-install-info-target-libstdc++-v3 -install-info-target: maybe-install-info-target-libmudflap -install-info-target: maybe-install-info-target-libssp -install-info-target: maybe-install-info-target-newlib -install-info-target: maybe-install-info-target-libgcc -install-info-target: maybe-install-info-target-libgfortran -install-info-target: maybe-install-info-target-libobjc -install-info-target: maybe-install-info-target-libtermcap -install-info-target: maybe-install-info-target-winsup -install-info-target: maybe-install-info-target-libgloss -install-info-target: maybe-install-info-target-libiberty -install-info-target: maybe-install-info-target-gperf -install-info-target: maybe-install-info-target-examples -install-info-target: maybe-install-info-target-libffi -install-info-target: maybe-install-info-target-libjava -install-info-target: maybe-install-info-target-zlib -install-info-target: maybe-install-info-target-boehm-gc -install-info-target: maybe-install-info-target-qthreads -install-info-target: maybe-install-info-target-rda -install-info-target: maybe-install-info-target-libada -install-info-target: maybe-install-info-target-libgomp - -.PHONY: do-install-pdf -do-install-pdf: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) install-pdf-host \ - install-pdf-target - - -.PHONY: install-pdf-host - -install-pdf-host: maybe-install-pdf-ash -install-pdf-host: maybe-install-pdf-autoconf -install-pdf-host: maybe-install-pdf-automake -install-pdf-host: maybe-install-pdf-bash -install-pdf-host: maybe-install-pdf-bfd -install-pdf-host: maybe-install-pdf-opcodes -install-pdf-host: maybe-install-pdf-binutils -install-pdf-host: maybe-install-pdf-bison -install-pdf-host: maybe-install-pdf-byacc -install-pdf-host: maybe-install-pdf-bzip2 -install-pdf-host: maybe-install-pdf-cgen -install-pdf-host: maybe-install-pdf-dejagnu -install-pdf-host: maybe-install-pdf-diff -install-pdf-host: maybe-install-pdf-dosutils -install-pdf-host: maybe-install-pdf-etc -install-pdf-host: maybe-install-pdf-fastjar -install-pdf-host: maybe-install-pdf-fileutils -install-pdf-host: maybe-install-pdf-findutils -install-pdf-host: maybe-install-pdf-find -install-pdf-host: maybe-install-pdf-fixincludes -install-pdf-host: maybe-install-pdf-flex -install-pdf-host: maybe-install-pdf-gas -install-pdf-host: maybe-install-pdf-gcc -install-pdf-host: maybe-install-pdf-gawk -install-pdf-host: maybe-install-pdf-gettext -install-pdf-host: maybe-install-pdf-gmp -install-pdf-host: maybe-install-pdf-mpfr -install-pdf-host: maybe-install-pdf-mpc -install-pdf-host: maybe-install-pdf-ppl -install-pdf-host: maybe-install-pdf-cloog -install-pdf-host: maybe-install-pdf-gnuserv -install-pdf-host: maybe-install-pdf-gold -install-pdf-host: maybe-install-pdf-gprof -install-pdf-host: maybe-install-pdf-gzip -install-pdf-host: maybe-install-pdf-hello -install-pdf-host: maybe-install-pdf-indent -install-pdf-host: maybe-install-pdf-intl -install-pdf-host: maybe-install-pdf-tcl -install-pdf-host: maybe-install-pdf-itcl -install-pdf-host: maybe-install-pdf-ld -install-pdf-host: maybe-install-pdf-libcpp -install-pdf-host: maybe-install-pdf-libdecnumber -install-pdf-host: maybe-install-pdf-libgui -install-pdf-host: maybe-install-pdf-libiberty -install-pdf-host: maybe-install-pdf-libiconv -install-pdf-host: maybe-install-pdf-libtool -install-pdf-host: maybe-install-pdf-m4 -install-pdf-host: maybe-install-pdf-make -install-pdf-host: maybe-install-pdf-mmalloc -install-pdf-host: maybe-install-pdf-patch -install-pdf-host: maybe-install-pdf-perl -install-pdf-host: maybe-install-pdf-prms -install-pdf-host: maybe-install-pdf-rcs -install-pdf-host: maybe-install-pdf-readline -install-pdf-host: maybe-install-pdf-release -install-pdf-host: maybe-install-pdf-recode -install-pdf-host: maybe-install-pdf-sed -install-pdf-host: maybe-install-pdf-send-pr -install-pdf-host: maybe-install-pdf-shellutils -install-pdf-host: maybe-install-pdf-sid -install-pdf-host: maybe-install-pdf-sim -install-pdf-host: maybe-install-pdf-tar -install-pdf-host: maybe-install-pdf-texinfo -install-pdf-host: maybe-install-pdf-textutils -install-pdf-host: maybe-install-pdf-time -install-pdf-host: maybe-install-pdf-uudecode -install-pdf-host: maybe-install-pdf-wdiff -install-pdf-host: maybe-install-pdf-zip -install-pdf-host: maybe-install-pdf-zlib -install-pdf-host: maybe-install-pdf-gdb -install-pdf-host: maybe-install-pdf-expect -install-pdf-host: maybe-install-pdf-guile -install-pdf-host: maybe-install-pdf-tk -install-pdf-host: maybe-install-pdf-libtermcap -install-pdf-host: maybe-install-pdf-utils -install-pdf-host: maybe-install-pdf-gnattools - -.PHONY: install-pdf-target - -install-pdf-target: maybe-install-pdf-target-libstdc++-v3 -install-pdf-target: maybe-install-pdf-target-libmudflap -install-pdf-target: maybe-install-pdf-target-libssp -install-pdf-target: maybe-install-pdf-target-newlib -install-pdf-target: maybe-install-pdf-target-libgcc -install-pdf-target: maybe-install-pdf-target-libgfortran -install-pdf-target: maybe-install-pdf-target-libobjc -install-pdf-target: maybe-install-pdf-target-libtermcap -install-pdf-target: maybe-install-pdf-target-winsup -install-pdf-target: maybe-install-pdf-target-libgloss -install-pdf-target: maybe-install-pdf-target-libiberty -install-pdf-target: maybe-install-pdf-target-gperf -install-pdf-target: maybe-install-pdf-target-examples -install-pdf-target: maybe-install-pdf-target-libffi -install-pdf-target: maybe-install-pdf-target-libjava -install-pdf-target: maybe-install-pdf-target-zlib -install-pdf-target: maybe-install-pdf-target-boehm-gc -install-pdf-target: maybe-install-pdf-target-qthreads -install-pdf-target: maybe-install-pdf-target-rda -install-pdf-target: maybe-install-pdf-target-libada -install-pdf-target: maybe-install-pdf-target-libgomp - -.PHONY: do-install-html -do-install-html: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) install-html-host \ - install-html-target - - -.PHONY: install-html-host - -install-html-host: maybe-install-html-ash -install-html-host: maybe-install-html-autoconf -install-html-host: maybe-install-html-automake -install-html-host: maybe-install-html-bash -install-html-host: maybe-install-html-bfd -install-html-host: maybe-install-html-opcodes -install-html-host: maybe-install-html-binutils -install-html-host: maybe-install-html-bison -install-html-host: maybe-install-html-byacc -install-html-host: maybe-install-html-bzip2 -install-html-host: maybe-install-html-cgen -install-html-host: maybe-install-html-dejagnu -install-html-host: maybe-install-html-diff -install-html-host: maybe-install-html-dosutils -install-html-host: maybe-install-html-etc -install-html-host: maybe-install-html-fastjar -install-html-host: maybe-install-html-fileutils -install-html-host: maybe-install-html-findutils -install-html-host: maybe-install-html-find -install-html-host: maybe-install-html-fixincludes -install-html-host: maybe-install-html-flex -install-html-host: maybe-install-html-gas -install-html-host: maybe-install-html-gcc -install-html-host: maybe-install-html-gawk -install-html-host: maybe-install-html-gettext -install-html-host: maybe-install-html-gmp -install-html-host: maybe-install-html-mpfr -install-html-host: maybe-install-html-mpc -install-html-host: maybe-install-html-ppl -install-html-host: maybe-install-html-cloog -install-html-host: maybe-install-html-gnuserv -install-html-host: maybe-install-html-gold -install-html-host: maybe-install-html-gprof -install-html-host: maybe-install-html-gzip -install-html-host: maybe-install-html-hello -install-html-host: maybe-install-html-indent -install-html-host: maybe-install-html-intl -install-html-host: maybe-install-html-tcl -install-html-host: maybe-install-html-itcl -install-html-host: maybe-install-html-ld -install-html-host: maybe-install-html-libcpp -install-html-host: maybe-install-html-libdecnumber -install-html-host: maybe-install-html-libgui -install-html-host: maybe-install-html-libiberty -install-html-host: maybe-install-html-libiconv -install-html-host: maybe-install-html-libtool -install-html-host: maybe-install-html-m4 -install-html-host: maybe-install-html-make -install-html-host: maybe-install-html-mmalloc -install-html-host: maybe-install-html-patch -install-html-host: maybe-install-html-perl -install-html-host: maybe-install-html-prms -install-html-host: maybe-install-html-rcs -install-html-host: maybe-install-html-readline -install-html-host: maybe-install-html-release -install-html-host: maybe-install-html-recode -install-html-host: maybe-install-html-sed -install-html-host: maybe-install-html-send-pr -install-html-host: maybe-install-html-shellutils -install-html-host: maybe-install-html-sid -install-html-host: maybe-install-html-sim -install-html-host: maybe-install-html-tar -install-html-host: maybe-install-html-texinfo -install-html-host: maybe-install-html-textutils -install-html-host: maybe-install-html-time -install-html-host: maybe-install-html-uudecode -install-html-host: maybe-install-html-wdiff -install-html-host: maybe-install-html-zip -install-html-host: maybe-install-html-zlib -install-html-host: maybe-install-html-gdb -install-html-host: maybe-install-html-expect -install-html-host: maybe-install-html-guile -install-html-host: maybe-install-html-tk -install-html-host: maybe-install-html-libtermcap -install-html-host: maybe-install-html-utils -install-html-host: maybe-install-html-gnattools - -.PHONY: install-html-target - -install-html-target: maybe-install-html-target-libstdc++-v3 -install-html-target: maybe-install-html-target-libmudflap -install-html-target: maybe-install-html-target-libssp -install-html-target: maybe-install-html-target-newlib -install-html-target: maybe-install-html-target-libgcc -install-html-target: maybe-install-html-target-libgfortran -install-html-target: maybe-install-html-target-libobjc -install-html-target: maybe-install-html-target-libtermcap -install-html-target: maybe-install-html-target-winsup -install-html-target: maybe-install-html-target-libgloss -install-html-target: maybe-install-html-target-libiberty -install-html-target: maybe-install-html-target-gperf -install-html-target: maybe-install-html-target-examples -install-html-target: maybe-install-html-target-libffi -install-html-target: maybe-install-html-target-libjava -install-html-target: maybe-install-html-target-zlib -install-html-target: maybe-install-html-target-boehm-gc -install-html-target: maybe-install-html-target-qthreads -install-html-target: maybe-install-html-target-rda -install-html-target: maybe-install-html-target-libada -install-html-target: maybe-install-html-target-libgomp - -.PHONY: do-installcheck -do-installcheck: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) installcheck-host \ - installcheck-target - - -.PHONY: installcheck-host - -installcheck-host: maybe-installcheck-ash -installcheck-host: maybe-installcheck-autoconf -installcheck-host: maybe-installcheck-automake -installcheck-host: maybe-installcheck-bash -installcheck-host: maybe-installcheck-bfd -installcheck-host: maybe-installcheck-opcodes -installcheck-host: maybe-installcheck-binutils -installcheck-host: maybe-installcheck-bison -installcheck-host: maybe-installcheck-byacc -installcheck-host: maybe-installcheck-bzip2 -installcheck-host: maybe-installcheck-cgen -installcheck-host: maybe-installcheck-dejagnu -installcheck-host: maybe-installcheck-diff -installcheck-host: maybe-installcheck-dosutils -installcheck-host: maybe-installcheck-etc -installcheck-host: maybe-installcheck-fastjar -installcheck-host: maybe-installcheck-fileutils -installcheck-host: maybe-installcheck-findutils -installcheck-host: maybe-installcheck-find -installcheck-host: maybe-installcheck-fixincludes -installcheck-host: maybe-installcheck-flex -installcheck-host: maybe-installcheck-gas -installcheck-host: maybe-installcheck-gcc -installcheck-host: maybe-installcheck-gawk -installcheck-host: maybe-installcheck-gettext -installcheck-host: maybe-installcheck-gmp -installcheck-host: maybe-installcheck-mpfr -installcheck-host: maybe-installcheck-mpc -installcheck-host: maybe-installcheck-ppl -installcheck-host: maybe-installcheck-cloog -installcheck-host: maybe-installcheck-gnuserv -installcheck-host: maybe-installcheck-gold -installcheck-host: maybe-installcheck-gprof -installcheck-host: maybe-installcheck-gzip -installcheck-host: maybe-installcheck-hello -installcheck-host: maybe-installcheck-indent -installcheck-host: maybe-installcheck-intl -installcheck-host: maybe-installcheck-tcl -installcheck-host: maybe-installcheck-itcl -installcheck-host: maybe-installcheck-ld -installcheck-host: maybe-installcheck-libcpp -installcheck-host: maybe-installcheck-libdecnumber -installcheck-host: maybe-installcheck-libgui -installcheck-host: maybe-installcheck-libiberty -installcheck-host: maybe-installcheck-libiconv -installcheck-host: maybe-installcheck-libtool -installcheck-host: maybe-installcheck-m4 -installcheck-host: maybe-installcheck-make -installcheck-host: maybe-installcheck-mmalloc -installcheck-host: maybe-installcheck-patch -installcheck-host: maybe-installcheck-perl -installcheck-host: maybe-installcheck-prms -installcheck-host: maybe-installcheck-rcs -installcheck-host: maybe-installcheck-readline -installcheck-host: maybe-installcheck-release -installcheck-host: maybe-installcheck-recode -installcheck-host: maybe-installcheck-sed -installcheck-host: maybe-installcheck-send-pr -installcheck-host: maybe-installcheck-shellutils -installcheck-host: maybe-installcheck-sid -installcheck-host: maybe-installcheck-sim -installcheck-host: maybe-installcheck-tar -installcheck-host: maybe-installcheck-texinfo -installcheck-host: maybe-installcheck-textutils -installcheck-host: maybe-installcheck-time -installcheck-host: maybe-installcheck-uudecode -installcheck-host: maybe-installcheck-wdiff -installcheck-host: maybe-installcheck-zip -installcheck-host: maybe-installcheck-zlib -installcheck-host: maybe-installcheck-gdb -installcheck-host: maybe-installcheck-expect -installcheck-host: maybe-installcheck-guile -installcheck-host: maybe-installcheck-tk -installcheck-host: maybe-installcheck-libtermcap -installcheck-host: maybe-installcheck-utils -installcheck-host: maybe-installcheck-gnattools - -.PHONY: installcheck-target - -installcheck-target: maybe-installcheck-target-libstdc++-v3 -installcheck-target: maybe-installcheck-target-libmudflap -installcheck-target: maybe-installcheck-target-libssp -installcheck-target: maybe-installcheck-target-newlib -installcheck-target: maybe-installcheck-target-libgcc -installcheck-target: maybe-installcheck-target-libgfortran -installcheck-target: maybe-installcheck-target-libobjc -installcheck-target: maybe-installcheck-target-libtermcap -installcheck-target: maybe-installcheck-target-winsup -installcheck-target: maybe-installcheck-target-libgloss -installcheck-target: maybe-installcheck-target-libiberty -installcheck-target: maybe-installcheck-target-gperf -installcheck-target: maybe-installcheck-target-examples -installcheck-target: maybe-installcheck-target-libffi -installcheck-target: maybe-installcheck-target-libjava -installcheck-target: maybe-installcheck-target-zlib -installcheck-target: maybe-installcheck-target-boehm-gc -installcheck-target: maybe-installcheck-target-qthreads -installcheck-target: maybe-installcheck-target-rda -installcheck-target: maybe-installcheck-target-libada -installcheck-target: maybe-installcheck-target-libgomp - -.PHONY: do-mostlyclean -do-mostlyclean: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) mostlyclean-host \ - mostlyclean-target - - -.PHONY: mostlyclean-host - -mostlyclean-host: maybe-mostlyclean-ash -mostlyclean-host: maybe-mostlyclean-autoconf -mostlyclean-host: maybe-mostlyclean-automake -mostlyclean-host: maybe-mostlyclean-bash -mostlyclean-host: maybe-mostlyclean-bfd -mostlyclean-host: maybe-mostlyclean-opcodes -mostlyclean-host: maybe-mostlyclean-binutils -mostlyclean-host: maybe-mostlyclean-bison -mostlyclean-host: maybe-mostlyclean-byacc -mostlyclean-host: maybe-mostlyclean-bzip2 -mostlyclean-host: maybe-mostlyclean-cgen -mostlyclean-host: maybe-mostlyclean-dejagnu -mostlyclean-host: maybe-mostlyclean-diff -mostlyclean-host: maybe-mostlyclean-dosutils -mostlyclean-host: maybe-mostlyclean-etc -mostlyclean-host: maybe-mostlyclean-fastjar -mostlyclean-host: maybe-mostlyclean-fileutils -mostlyclean-host: maybe-mostlyclean-findutils -mostlyclean-host: maybe-mostlyclean-find -mostlyclean-host: maybe-mostlyclean-fixincludes -mostlyclean-host: maybe-mostlyclean-flex -mostlyclean-host: maybe-mostlyclean-gas -mostlyclean-host: maybe-mostlyclean-gcc -mostlyclean-host: maybe-mostlyclean-gawk -mostlyclean-host: maybe-mostlyclean-gettext -mostlyclean-host: maybe-mostlyclean-gmp -mostlyclean-host: maybe-mostlyclean-mpfr -mostlyclean-host: maybe-mostlyclean-mpc -mostlyclean-host: maybe-mostlyclean-ppl -mostlyclean-host: maybe-mostlyclean-cloog -mostlyclean-host: maybe-mostlyclean-gnuserv -mostlyclean-host: maybe-mostlyclean-gold -mostlyclean-host: maybe-mostlyclean-gprof -mostlyclean-host: maybe-mostlyclean-gzip -mostlyclean-host: maybe-mostlyclean-hello -mostlyclean-host: maybe-mostlyclean-indent -mostlyclean-host: maybe-mostlyclean-intl -mostlyclean-host: maybe-mostlyclean-tcl -mostlyclean-host: maybe-mostlyclean-itcl -mostlyclean-host: maybe-mostlyclean-ld -mostlyclean-host: maybe-mostlyclean-libcpp -mostlyclean-host: maybe-mostlyclean-libdecnumber -mostlyclean-host: maybe-mostlyclean-libgui -mostlyclean-host: maybe-mostlyclean-libiberty -mostlyclean-host: maybe-mostlyclean-libiconv -mostlyclean-host: maybe-mostlyclean-libtool -mostlyclean-host: maybe-mostlyclean-m4 -mostlyclean-host: maybe-mostlyclean-make -mostlyclean-host: maybe-mostlyclean-mmalloc -mostlyclean-host: maybe-mostlyclean-patch -mostlyclean-host: maybe-mostlyclean-perl -mostlyclean-host: maybe-mostlyclean-prms -mostlyclean-host: maybe-mostlyclean-rcs -mostlyclean-host: maybe-mostlyclean-readline -mostlyclean-host: maybe-mostlyclean-release -mostlyclean-host: maybe-mostlyclean-recode -mostlyclean-host: maybe-mostlyclean-sed -mostlyclean-host: maybe-mostlyclean-send-pr -mostlyclean-host: maybe-mostlyclean-shellutils -mostlyclean-host: maybe-mostlyclean-sid -mostlyclean-host: maybe-mostlyclean-sim -mostlyclean-host: maybe-mostlyclean-tar -mostlyclean-host: maybe-mostlyclean-texinfo -mostlyclean-host: maybe-mostlyclean-textutils -mostlyclean-host: maybe-mostlyclean-time -mostlyclean-host: maybe-mostlyclean-uudecode -mostlyclean-host: maybe-mostlyclean-wdiff -mostlyclean-host: maybe-mostlyclean-zip -mostlyclean-host: maybe-mostlyclean-zlib -mostlyclean-host: maybe-mostlyclean-gdb -mostlyclean-host: maybe-mostlyclean-expect -mostlyclean-host: maybe-mostlyclean-guile -mostlyclean-host: maybe-mostlyclean-tk -mostlyclean-host: maybe-mostlyclean-libtermcap -mostlyclean-host: maybe-mostlyclean-utils -mostlyclean-host: maybe-mostlyclean-gnattools - -.PHONY: mostlyclean-target - -mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3 -mostlyclean-target: maybe-mostlyclean-target-libmudflap -mostlyclean-target: maybe-mostlyclean-target-libssp -mostlyclean-target: maybe-mostlyclean-target-newlib -mostlyclean-target: maybe-mostlyclean-target-libgcc -mostlyclean-target: maybe-mostlyclean-target-libgfortran -mostlyclean-target: maybe-mostlyclean-target-libobjc -mostlyclean-target: maybe-mostlyclean-target-libtermcap -mostlyclean-target: maybe-mostlyclean-target-winsup -mostlyclean-target: maybe-mostlyclean-target-libgloss -mostlyclean-target: maybe-mostlyclean-target-libiberty -mostlyclean-target: maybe-mostlyclean-target-gperf -mostlyclean-target: maybe-mostlyclean-target-examples -mostlyclean-target: maybe-mostlyclean-target-libffi -mostlyclean-target: maybe-mostlyclean-target-libjava -mostlyclean-target: maybe-mostlyclean-target-zlib -mostlyclean-target: maybe-mostlyclean-target-boehm-gc -mostlyclean-target: maybe-mostlyclean-target-qthreads -mostlyclean-target: maybe-mostlyclean-target-rda -mostlyclean-target: maybe-mostlyclean-target-libada -mostlyclean-target: maybe-mostlyclean-target-libgomp - -.PHONY: do-clean -do-clean: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean-host \ - clean-target - - -.PHONY: clean-host - -clean-host: maybe-clean-ash -clean-host: maybe-clean-autoconf -clean-host: maybe-clean-automake -clean-host: maybe-clean-bash -clean-host: maybe-clean-bfd -clean-host: maybe-clean-opcodes -clean-host: maybe-clean-binutils -clean-host: maybe-clean-bison -clean-host: maybe-clean-byacc -clean-host: maybe-clean-bzip2 -clean-host: maybe-clean-cgen -clean-host: maybe-clean-dejagnu -clean-host: maybe-clean-diff -clean-host: maybe-clean-dosutils -clean-host: maybe-clean-etc -clean-host: maybe-clean-fastjar -clean-host: maybe-clean-fileutils -clean-host: maybe-clean-findutils -clean-host: maybe-clean-find -clean-host: maybe-clean-fixincludes -clean-host: maybe-clean-flex -clean-host: maybe-clean-gas -clean-host: maybe-clean-gcc -clean-host: maybe-clean-gawk -clean-host: maybe-clean-gettext -clean-host: maybe-clean-gmp -clean-host: maybe-clean-mpfr -clean-host: maybe-clean-mpc -clean-host: maybe-clean-ppl -clean-host: maybe-clean-cloog -clean-host: maybe-clean-gnuserv -clean-host: maybe-clean-gold -clean-host: maybe-clean-gprof -clean-host: maybe-clean-gzip -clean-host: maybe-clean-hello -clean-host: maybe-clean-indent -clean-host: maybe-clean-intl -clean-host: maybe-clean-tcl -clean-host: maybe-clean-itcl -clean-host: maybe-clean-ld -clean-host: maybe-clean-libcpp -clean-host: maybe-clean-libdecnumber -clean-host: maybe-clean-libgui -clean-host: maybe-clean-libiberty -clean-host: maybe-clean-libiconv -clean-host: maybe-clean-libtool -clean-host: maybe-clean-m4 -clean-host: maybe-clean-make -clean-host: maybe-clean-mmalloc -clean-host: maybe-clean-patch -clean-host: maybe-clean-perl -clean-host: maybe-clean-prms -clean-host: maybe-clean-rcs -clean-host: maybe-clean-readline -clean-host: maybe-clean-release -clean-host: maybe-clean-recode -clean-host: maybe-clean-sed -clean-host: maybe-clean-send-pr -clean-host: maybe-clean-shellutils -clean-host: maybe-clean-sid -clean-host: maybe-clean-sim -clean-host: maybe-clean-tar -clean-host: maybe-clean-texinfo -clean-host: maybe-clean-textutils -clean-host: maybe-clean-time -clean-host: maybe-clean-uudecode -clean-host: maybe-clean-wdiff -clean-host: maybe-clean-zip -clean-host: maybe-clean-zlib -clean-host: maybe-clean-gdb -clean-host: maybe-clean-expect -clean-host: maybe-clean-guile -clean-host: maybe-clean-tk -clean-host: maybe-clean-libtermcap -clean-host: maybe-clean-utils -clean-host: maybe-clean-gnattools - -.PHONY: clean-target - -clean-target: maybe-clean-target-libstdc++-v3 -clean-target: maybe-clean-target-libmudflap -clean-target: maybe-clean-target-libssp -clean-target: maybe-clean-target-newlib -clean-target: maybe-clean-target-libgcc -clean-target: maybe-clean-target-libgfortran -clean-target: maybe-clean-target-libobjc -clean-target: maybe-clean-target-libtermcap -clean-target: maybe-clean-target-winsup -clean-target: maybe-clean-target-libgloss -clean-target: maybe-clean-target-libiberty -clean-target: maybe-clean-target-gperf -clean-target: maybe-clean-target-examples -clean-target: maybe-clean-target-libffi -clean-target: maybe-clean-target-libjava -clean-target: maybe-clean-target-zlib -clean-target: maybe-clean-target-boehm-gc -clean-target: maybe-clean-target-qthreads -clean-target: maybe-clean-target-rda -clean-target: maybe-clean-target-libada -clean-target: maybe-clean-target-libgomp - -.PHONY: do-distclean -do-distclean: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) distclean-host \ - distclean-target - - -.PHONY: distclean-host - -distclean-host: maybe-distclean-ash -distclean-host: maybe-distclean-autoconf -distclean-host: maybe-distclean-automake -distclean-host: maybe-distclean-bash -distclean-host: maybe-distclean-bfd -distclean-host: maybe-distclean-opcodes -distclean-host: maybe-distclean-binutils -distclean-host: maybe-distclean-bison -distclean-host: maybe-distclean-byacc -distclean-host: maybe-distclean-bzip2 -distclean-host: maybe-distclean-cgen -distclean-host: maybe-distclean-dejagnu -distclean-host: maybe-distclean-diff -distclean-host: maybe-distclean-dosutils -distclean-host: maybe-distclean-etc -distclean-host: maybe-distclean-fastjar -distclean-host: maybe-distclean-fileutils -distclean-host: maybe-distclean-findutils -distclean-host: maybe-distclean-find -distclean-host: maybe-distclean-fixincludes -distclean-host: maybe-distclean-flex -distclean-host: maybe-distclean-gas -distclean-host: maybe-distclean-gcc -distclean-host: maybe-distclean-gawk -distclean-host: maybe-distclean-gettext -distclean-host: maybe-distclean-gmp -distclean-host: maybe-distclean-mpfr -distclean-host: maybe-distclean-mpc -distclean-host: maybe-distclean-ppl -distclean-host: maybe-distclean-cloog -distclean-host: maybe-distclean-gnuserv -distclean-host: maybe-distclean-gold -distclean-host: maybe-distclean-gprof -distclean-host: maybe-distclean-gzip -distclean-host: maybe-distclean-hello -distclean-host: maybe-distclean-indent -distclean-host: maybe-distclean-intl -distclean-host: maybe-distclean-tcl -distclean-host: maybe-distclean-itcl -distclean-host: maybe-distclean-ld -distclean-host: maybe-distclean-libcpp -distclean-host: maybe-distclean-libdecnumber -distclean-host: maybe-distclean-libgui -distclean-host: maybe-distclean-libiberty -distclean-host: maybe-distclean-libiconv -distclean-host: maybe-distclean-libtool -distclean-host: maybe-distclean-m4 -distclean-host: maybe-distclean-make -distclean-host: maybe-distclean-mmalloc -distclean-host: maybe-distclean-patch -distclean-host: maybe-distclean-perl -distclean-host: maybe-distclean-prms -distclean-host: maybe-distclean-rcs -distclean-host: maybe-distclean-readline -distclean-host: maybe-distclean-release -distclean-host: maybe-distclean-recode -distclean-host: maybe-distclean-sed -distclean-host: maybe-distclean-send-pr -distclean-host: maybe-distclean-shellutils -distclean-host: maybe-distclean-sid -distclean-host: maybe-distclean-sim -distclean-host: maybe-distclean-tar -distclean-host: maybe-distclean-texinfo -distclean-host: maybe-distclean-textutils -distclean-host: maybe-distclean-time -distclean-host: maybe-distclean-uudecode -distclean-host: maybe-distclean-wdiff -distclean-host: maybe-distclean-zip -distclean-host: maybe-distclean-zlib -distclean-host: maybe-distclean-gdb -distclean-host: maybe-distclean-expect -distclean-host: maybe-distclean-guile -distclean-host: maybe-distclean-tk -distclean-host: maybe-distclean-libtermcap -distclean-host: maybe-distclean-utils -distclean-host: maybe-distclean-gnattools - -.PHONY: distclean-target - -distclean-target: maybe-distclean-target-libstdc++-v3 -distclean-target: maybe-distclean-target-libmudflap -distclean-target: maybe-distclean-target-libssp -distclean-target: maybe-distclean-target-newlib -distclean-target: maybe-distclean-target-libgcc -distclean-target: maybe-distclean-target-libgfortran -distclean-target: maybe-distclean-target-libobjc -distclean-target: maybe-distclean-target-libtermcap -distclean-target: maybe-distclean-target-winsup -distclean-target: maybe-distclean-target-libgloss -distclean-target: maybe-distclean-target-libiberty -distclean-target: maybe-distclean-target-gperf -distclean-target: maybe-distclean-target-examples -distclean-target: maybe-distclean-target-libffi -distclean-target: maybe-distclean-target-libjava -distclean-target: maybe-distclean-target-zlib -distclean-target: maybe-distclean-target-boehm-gc -distclean-target: maybe-distclean-target-qthreads -distclean-target: maybe-distclean-target-rda -distclean-target: maybe-distclean-target-libada -distclean-target: maybe-distclean-target-libgomp - -.PHONY: do-maintainer-clean -do-maintainer-clean: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) maintainer-clean-host \ - maintainer-clean-target - - -.PHONY: maintainer-clean-host - -maintainer-clean-host: maybe-maintainer-clean-ash -maintainer-clean-host: maybe-maintainer-clean-autoconf -maintainer-clean-host: maybe-maintainer-clean-automake -maintainer-clean-host: maybe-maintainer-clean-bash -maintainer-clean-host: maybe-maintainer-clean-bfd -maintainer-clean-host: maybe-maintainer-clean-opcodes -maintainer-clean-host: maybe-maintainer-clean-binutils -maintainer-clean-host: maybe-maintainer-clean-bison -maintainer-clean-host: maybe-maintainer-clean-byacc -maintainer-clean-host: maybe-maintainer-clean-bzip2 -maintainer-clean-host: maybe-maintainer-clean-cgen -maintainer-clean-host: maybe-maintainer-clean-dejagnu -maintainer-clean-host: maybe-maintainer-clean-diff -maintainer-clean-host: maybe-maintainer-clean-dosutils -maintainer-clean-host: maybe-maintainer-clean-etc -maintainer-clean-host: maybe-maintainer-clean-fastjar -maintainer-clean-host: maybe-maintainer-clean-fileutils -maintainer-clean-host: maybe-maintainer-clean-findutils -maintainer-clean-host: maybe-maintainer-clean-find -maintainer-clean-host: maybe-maintainer-clean-fixincludes -maintainer-clean-host: maybe-maintainer-clean-flex -maintainer-clean-host: maybe-maintainer-clean-gas -maintainer-clean-host: maybe-maintainer-clean-gcc -maintainer-clean-host: maybe-maintainer-clean-gawk -maintainer-clean-host: maybe-maintainer-clean-gettext -maintainer-clean-host: maybe-maintainer-clean-gmp -maintainer-clean-host: maybe-maintainer-clean-mpfr -maintainer-clean-host: maybe-maintainer-clean-mpc -maintainer-clean-host: maybe-maintainer-clean-ppl -maintainer-clean-host: maybe-maintainer-clean-cloog -maintainer-clean-host: maybe-maintainer-clean-gnuserv -maintainer-clean-host: maybe-maintainer-clean-gold -maintainer-clean-host: maybe-maintainer-clean-gprof -maintainer-clean-host: maybe-maintainer-clean-gzip -maintainer-clean-host: maybe-maintainer-clean-hello -maintainer-clean-host: maybe-maintainer-clean-indent -maintainer-clean-host: maybe-maintainer-clean-intl -maintainer-clean-host: maybe-maintainer-clean-tcl -maintainer-clean-host: maybe-maintainer-clean-itcl -maintainer-clean-host: maybe-maintainer-clean-ld -maintainer-clean-host: maybe-maintainer-clean-libcpp -maintainer-clean-host: maybe-maintainer-clean-libdecnumber -maintainer-clean-host: maybe-maintainer-clean-libgui -maintainer-clean-host: maybe-maintainer-clean-libiberty -maintainer-clean-host: maybe-maintainer-clean-libiconv -maintainer-clean-host: maybe-maintainer-clean-libtool -maintainer-clean-host: maybe-maintainer-clean-m4 -maintainer-clean-host: maybe-maintainer-clean-make -maintainer-clean-host: maybe-maintainer-clean-mmalloc -maintainer-clean-host: maybe-maintainer-clean-patch -maintainer-clean-host: maybe-maintainer-clean-perl -maintainer-clean-host: maybe-maintainer-clean-prms -maintainer-clean-host: maybe-maintainer-clean-rcs -maintainer-clean-host: maybe-maintainer-clean-readline -maintainer-clean-host: maybe-maintainer-clean-release -maintainer-clean-host: maybe-maintainer-clean-recode -maintainer-clean-host: maybe-maintainer-clean-sed -maintainer-clean-host: maybe-maintainer-clean-send-pr -maintainer-clean-host: maybe-maintainer-clean-shellutils -maintainer-clean-host: maybe-maintainer-clean-sid -maintainer-clean-host: maybe-maintainer-clean-sim -maintainer-clean-host: maybe-maintainer-clean-tar -maintainer-clean-host: maybe-maintainer-clean-texinfo -maintainer-clean-host: maybe-maintainer-clean-textutils -maintainer-clean-host: maybe-maintainer-clean-time -maintainer-clean-host: maybe-maintainer-clean-uudecode -maintainer-clean-host: maybe-maintainer-clean-wdiff -maintainer-clean-host: maybe-maintainer-clean-zip -maintainer-clean-host: maybe-maintainer-clean-zlib -maintainer-clean-host: maybe-maintainer-clean-gdb -maintainer-clean-host: maybe-maintainer-clean-expect -maintainer-clean-host: maybe-maintainer-clean-guile -maintainer-clean-host: maybe-maintainer-clean-tk -maintainer-clean-host: maybe-maintainer-clean-libtermcap -maintainer-clean-host: maybe-maintainer-clean-utils -maintainer-clean-host: maybe-maintainer-clean-gnattools - -.PHONY: maintainer-clean-target - -maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3 -maintainer-clean-target: maybe-maintainer-clean-target-libmudflap -maintainer-clean-target: maybe-maintainer-clean-target-libssp -maintainer-clean-target: maybe-maintainer-clean-target-newlib -maintainer-clean-target: maybe-maintainer-clean-target-libgcc -maintainer-clean-target: maybe-maintainer-clean-target-libgfortran -maintainer-clean-target: maybe-maintainer-clean-target-libobjc -maintainer-clean-target: maybe-maintainer-clean-target-libtermcap -maintainer-clean-target: maybe-maintainer-clean-target-winsup -maintainer-clean-target: maybe-maintainer-clean-target-libgloss -maintainer-clean-target: maybe-maintainer-clean-target-libiberty -maintainer-clean-target: maybe-maintainer-clean-target-gperf -maintainer-clean-target: maybe-maintainer-clean-target-examples -maintainer-clean-target: maybe-maintainer-clean-target-libffi -maintainer-clean-target: maybe-maintainer-clean-target-libjava -maintainer-clean-target: maybe-maintainer-clean-target-zlib -maintainer-clean-target: maybe-maintainer-clean-target-boehm-gc -maintainer-clean-target: maybe-maintainer-clean-target-qthreads -maintainer-clean-target: maybe-maintainer-clean-target-rda -maintainer-clean-target: maybe-maintainer-clean-target-libada -maintainer-clean-target: maybe-maintainer-clean-target-libgomp - - -# Here are the targets which correspond to the do-X targets. - -.PHONY: info installcheck dvi pdf html -.PHONY: install-info install-pdf install-html -.PHONY: clean distclean mostlyclean maintainer-clean realclean -.PHONY: local-clean local-distclean local-maintainer-clean -info: do-info -installcheck: do-installcheck -dvi: do-dvi -pdf: do-pdf -html: do-html - -# Make sure makeinfo is built before we do a `make info', if we're -# in fact building texinfo. -do-info: maybe-all-texinfo - -install-info: do-install-info dir.info - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if [ -f dir.info ] ; then \ - $(INSTALL_DATA) dir.info $(DESTDIR)$(infodir)/dir.info ; \ - else true ; fi - -install-pdf: do-install-pdf - -install-html: do-install-html - -local-clean: - -rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E *.log - -local-distclean: - -rm -f Makefile config.status config.cache mh-frag mt-frag - -rm -f maybedep.tmp serdep.tmp - -if [ "$(TARGET_SUBDIR)" != "." ]; then \ - rm -rf $(TARGET_SUBDIR); \ - else true; fi - -rm -rf $(BUILD_SUBDIR) - -if [ "$(HOST_SUBDIR)" != "." ]; then \ - rm -rf $(HOST_SUBDIR); \ - else true; fi - -rm -f texinfo/po/Makefile texinfo/po/Makefile.in texinfo/info/Makefile - -rm -f texinfo/doc/Makefile texinfo/po/POTFILES - -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null - -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null - -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null - -local-maintainer-clean: - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -clean: do-clean local-clean -mostlyclean: do-mostlyclean local-clean -distclean: do-distclean local-clean local-distclean -maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean -maintainer-clean: local-distclean -realclean: maintainer-clean - -# Check target. - -.PHONY: check do-check -check: do-check - -# Only include modules actually being configured and built. -.PHONY: check-host -check-host: \ - maybe-check-ash \ - maybe-check-autoconf \ - maybe-check-automake \ - maybe-check-bash \ - maybe-check-bfd \ - maybe-check-opcodes \ - maybe-check-binutils \ - maybe-check-bison \ - maybe-check-byacc \ - maybe-check-bzip2 \ - maybe-check-cgen \ - maybe-check-dejagnu \ - maybe-check-diff \ - maybe-check-dosutils \ - maybe-check-etc \ - maybe-check-fastjar \ - maybe-check-fileutils \ - maybe-check-findutils \ - maybe-check-find \ - maybe-check-fixincludes \ - maybe-check-flex \ - maybe-check-gas \ - maybe-check-gcc \ - maybe-check-gawk \ - maybe-check-gettext \ - maybe-check-gmp \ - maybe-check-mpfr \ - maybe-check-mpc \ - maybe-check-ppl \ - maybe-check-cloog \ - maybe-check-gnuserv \ - maybe-check-gold \ - maybe-check-gprof \ - maybe-check-gzip \ - maybe-check-hello \ - maybe-check-indent \ - maybe-check-intl \ - maybe-check-tcl \ - maybe-check-itcl \ - maybe-check-ld \ - maybe-check-libcpp \ - maybe-check-libdecnumber \ - maybe-check-libgui \ - maybe-check-libiberty \ - maybe-check-libiconv \ - maybe-check-libtool \ - maybe-check-m4 \ - maybe-check-make \ - maybe-check-mmalloc \ - maybe-check-patch \ - maybe-check-perl \ - maybe-check-prms \ - maybe-check-rcs \ - maybe-check-readline \ - maybe-check-release \ - maybe-check-recode \ - maybe-check-sed \ - maybe-check-send-pr \ - maybe-check-shellutils \ - maybe-check-sid \ - maybe-check-sim \ - maybe-check-tar \ - maybe-check-texinfo \ - maybe-check-textutils \ - maybe-check-time \ - maybe-check-uudecode \ - maybe-check-wdiff \ - maybe-check-zip \ - maybe-check-zlib \ - maybe-check-gdb \ - maybe-check-expect \ - maybe-check-guile \ - maybe-check-tk \ - maybe-check-libtermcap \ - maybe-check-utils \ - maybe-check-gnattools - -.PHONY: check-target -check-target: \ - maybe-check-target-libstdc++-v3 \ - maybe-check-target-libmudflap \ - maybe-check-target-libssp \ - maybe-check-target-newlib \ - maybe-check-target-libgcc \ - maybe-check-target-libgfortran \ - maybe-check-target-libobjc \ - maybe-check-target-libtermcap \ - maybe-check-target-winsup \ - maybe-check-target-libgloss \ - maybe-check-target-libiberty \ - maybe-check-target-gperf \ - maybe-check-target-examples \ - maybe-check-target-libffi \ - maybe-check-target-libjava \ - maybe-check-target-zlib \ - maybe-check-target-boehm-gc \ - maybe-check-target-qthreads \ - maybe-check-target-rda \ - maybe-check-target-libada \ - maybe-check-target-libgomp - -do-check: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) check-host check-target - -# Automated reporting of test results. - -warning.log: build.log - $(srcdir)/contrib/warn_summary build.log > $@ - -mail-report.log: - if test x'$(BOOT_CFLAGS)' != x''; then \ - BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \ - fi; \ - $(srcdir)/contrib/test_summary -t >$@ - chmod +x $@ - echo If you really want to send e-mail, run ./$@ now - -mail-report-with-warnings.log: warning.log - if test x'$(BOOT_CFLAGS)' != x''; then \ - BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \ - fi; \ - $(srcdir)/contrib/test_summary -t -i warning.log >$@ - chmod +x $@ - echo If you really want to send e-mail, run ./$@ now - -# Installation targets. - -.PHONY: install uninstall -install: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) installdirs install-host install-target - -.PHONY: install-host-nogcc -install-host-nogcc: \ - maybe-install-ash \ - maybe-install-autoconf \ - maybe-install-automake \ - maybe-install-bash \ - maybe-install-bfd \ - maybe-install-opcodes \ - maybe-install-binutils \ - maybe-install-bison \ - maybe-install-byacc \ - maybe-install-bzip2 \ - maybe-install-cgen \ - maybe-install-dejagnu \ - maybe-install-diff \ - maybe-install-dosutils \ - maybe-install-etc \ - maybe-install-fastjar \ - maybe-install-fileutils \ - maybe-install-findutils \ - maybe-install-find \ - maybe-install-fixincludes \ - maybe-install-flex \ - maybe-install-gas \ - maybe-install-gawk \ - maybe-install-gettext \ - maybe-install-gmp \ - maybe-install-mpfr \ - maybe-install-mpc \ - maybe-install-ppl \ - maybe-install-cloog \ - maybe-install-gnuserv \ - maybe-install-gold \ - maybe-install-gprof \ - maybe-install-gzip \ - maybe-install-hello \ - maybe-install-indent \ - maybe-install-intl \ - maybe-install-tcl \ - maybe-install-itcl \ - maybe-install-ld \ - maybe-install-libcpp \ - maybe-install-libdecnumber \ - maybe-install-libgui \ - maybe-install-libiberty \ - maybe-install-libiconv \ - maybe-install-libtool \ - maybe-install-m4 \ - maybe-install-make \ - maybe-install-mmalloc \ - maybe-install-patch \ - maybe-install-perl \ - maybe-install-prms \ - maybe-install-rcs \ - maybe-install-readline \ - maybe-install-release \ - maybe-install-recode \ - maybe-install-sed \ - maybe-install-send-pr \ - maybe-install-shellutils \ - maybe-install-sid \ - maybe-install-sim \ - maybe-install-tar \ - maybe-install-texinfo \ - maybe-install-textutils \ - maybe-install-time \ - maybe-install-uudecode \ - maybe-install-wdiff \ - maybe-install-zip \ - maybe-install-zlib \ - maybe-install-gdb \ - maybe-install-expect \ - maybe-install-guile \ - maybe-install-tk \ - maybe-install-libtermcap \ - maybe-install-utils \ - maybe-install-gnattools - -.PHONY: install-host -install-host: \ - maybe-install-ash \ - maybe-install-autoconf \ - maybe-install-automake \ - maybe-install-bash \ - maybe-install-bfd \ - maybe-install-opcodes \ - maybe-install-binutils \ - maybe-install-bison \ - maybe-install-byacc \ - maybe-install-bzip2 \ - maybe-install-cgen \ - maybe-install-dejagnu \ - maybe-install-diff \ - maybe-install-dosutils \ - maybe-install-etc \ - maybe-install-fastjar \ - maybe-install-fileutils \ - maybe-install-findutils \ - maybe-install-find \ - maybe-install-fixincludes \ - maybe-install-flex \ - maybe-install-gas \ - maybe-install-gcc \ - maybe-install-gawk \ - maybe-install-gettext \ - maybe-install-gmp \ - maybe-install-mpfr \ - maybe-install-mpc \ - maybe-install-ppl \ - maybe-install-cloog \ - maybe-install-gnuserv \ - maybe-install-gold \ - maybe-install-gprof \ - maybe-install-gzip \ - maybe-install-hello \ - maybe-install-indent \ - maybe-install-intl \ - maybe-install-tcl \ - maybe-install-itcl \ - maybe-install-ld \ - maybe-install-libcpp \ - maybe-install-libdecnumber \ - maybe-install-libgui \ - maybe-install-libiberty \ - maybe-install-libiconv \ - maybe-install-libtool \ - maybe-install-m4 \ - maybe-install-make \ - maybe-install-mmalloc \ - maybe-install-patch \ - maybe-install-perl \ - maybe-install-prms \ - maybe-install-rcs \ - maybe-install-readline \ - maybe-install-release \ - maybe-install-recode \ - maybe-install-sed \ - maybe-install-send-pr \ - maybe-install-shellutils \ - maybe-install-sid \ - maybe-install-sim \ - maybe-install-tar \ - maybe-install-texinfo \ - maybe-install-textutils \ - maybe-install-time \ - maybe-install-uudecode \ - maybe-install-wdiff \ - maybe-install-zip \ - maybe-install-zlib \ - maybe-install-gdb \ - maybe-install-expect \ - maybe-install-guile \ - maybe-install-tk \ - maybe-install-libtermcap \ - maybe-install-utils \ - maybe-install-gnattools - -.PHONY: install-target -install-target: \ - maybe-install-target-libstdc++-v3 \ - maybe-install-target-libmudflap \ - maybe-install-target-libssp \ - maybe-install-target-newlib \ - maybe-install-target-libgcc \ - maybe-install-target-libgfortran \ - maybe-install-target-libobjc \ - maybe-install-target-libtermcap \ - maybe-install-target-winsup \ - maybe-install-target-libgloss \ - maybe-install-target-libiberty \ - maybe-install-target-gperf \ - maybe-install-target-examples \ - maybe-install-target-libffi \ - maybe-install-target-libjava \ - maybe-install-target-zlib \ - maybe-install-target-boehm-gc \ - maybe-install-target-qthreads \ - maybe-install-target-rda \ - maybe-install-target-libada \ - maybe-install-target-libgomp - -uninstall: - @echo "the uninstall target is not supported in this tree" - -.PHONY: install.all -install.all: install-no-fixedincludes - @if [ -f ./gcc/Makefile ] ; then \ - r=`${PWD_COMMAND}` ; export r ; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd ./gcc && \ - $(MAKE) $(FLAGS_TO_PASS) install-headers) ; \ - else \ - true ; \ - fi - -# install-no-fixedincludes is used because Cygnus can not distribute -# the fixed header files. -.PHONY: install-no-fixedincludes -install-no-fixedincludes: installdirs install-host-nogcc \ - install-target gcc-no-fixedincludes - -### other supporting targets - -MAKEDIRS= \ - $(DESTDIR)$(prefix) \ - $(DESTDIR)$(exec_prefix) -.PHONY: installdirs -installdirs: mkinstalldirs - $(SHELL) $(srcdir)/mkinstalldirs $(MAKEDIRS) - -dir.info: do-install-info - if [ -f $(srcdir)/texinfo/gen-info-dir ] ; then \ - $(srcdir)/texinfo/gen-info-dir $(DESTDIR)$(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \ - mv -f dir.info.new dir.info ; \ - else true ; \ - fi - -dist: - @echo "Building a full distribution of this tree isn't done" - @echo "via 'make dist'. Check out the etc/ subdirectory" - -etags tags: TAGS - -# Right now this just builds TAGS in each subdirectory. emacs19 has the -# ability to use several tags files at once, so there is probably no need -# to combine them into one big TAGS file (like CVS 1.3 does). We could -# (if we felt like it) have this Makefile write a piece of elisp which -# the user could load to tell emacs19 where all the TAGS files we just -# built are. -TAGS: do-TAGS - -# ------------------------------------ -# Macros for configure and all targets -# ------------------------------------ - - - - - -# -------------------------------------- -# Modules which run on the build machine -# -------------------------------------- - - -.PHONY: configure-build-libiberty maybe-configure-build-libiberty -maybe-configure-build-libiberty: -@if gcc-bootstrap -configure-build-libiberty: stage_current -@endif gcc-bootstrap -@if build-libiberty -maybe-configure-build-libiberty: configure-build-libiberty -configure-build-libiberty: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(BUILD_SUBDIR)/libiberty/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/libiberty ; \ - $(BUILD_EXPORTS) \ - echo Configuring in $(BUILD_SUBDIR)/libiberty; \ - cd "$(BUILD_SUBDIR)/libiberty" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(BUILD_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif build-libiberty - - - - - -.PHONY: all-build-libiberty maybe-all-build-libiberty -maybe-all-build-libiberty: -@if gcc-bootstrap -all-build-libiberty: stage_current -@endif gcc-bootstrap -@if build-libiberty -TARGET-build-libiberty=all -maybe-all-build-libiberty: all-build-libiberty -all-build-libiberty: configure-build-libiberty - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ - (cd $(BUILD_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ - $(TARGET-build-libiberty)) -@endif build-libiberty - - - - - -.PHONY: configure-build-bison maybe-configure-build-bison -maybe-configure-build-bison: -@if gcc-bootstrap -configure-build-bison: stage_current -@endif gcc-bootstrap -@if build-bison -maybe-configure-build-bison: configure-build-bison -configure-build-bison: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(BUILD_SUBDIR)/bison/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/bison ; \ - $(BUILD_EXPORTS) \ - echo Configuring in $(BUILD_SUBDIR)/bison; \ - cd "$(BUILD_SUBDIR)/bison" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(BUILD_SUBDIR)/bison/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bison"; \ - libsrcdir="$$s/bison"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif build-bison - - - - - -.PHONY: all-build-bison maybe-all-build-bison -maybe-all-build-bison: -@if gcc-bootstrap -all-build-bison: stage_current -@endif gcc-bootstrap -@if build-bison -TARGET-build-bison=all -maybe-all-build-bison: all-build-bison -all-build-bison: configure-build-bison - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ - (cd $(BUILD_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ - $(TARGET-build-bison)) -@endif build-bison - - - - - -.PHONY: configure-build-byacc maybe-configure-build-byacc -maybe-configure-build-byacc: -@if gcc-bootstrap -configure-build-byacc: stage_current -@endif gcc-bootstrap -@if build-byacc -maybe-configure-build-byacc: configure-build-byacc -configure-build-byacc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(BUILD_SUBDIR)/byacc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/byacc ; \ - $(BUILD_EXPORTS) \ - echo Configuring in $(BUILD_SUBDIR)/byacc; \ - cd "$(BUILD_SUBDIR)/byacc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(BUILD_SUBDIR)/byacc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/byacc"; \ - libsrcdir="$$s/byacc"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif build-byacc - - - - - -.PHONY: all-build-byacc maybe-all-build-byacc -maybe-all-build-byacc: -@if gcc-bootstrap -all-build-byacc: stage_current -@endif gcc-bootstrap -@if build-byacc -TARGET-build-byacc=all -maybe-all-build-byacc: all-build-byacc -all-build-byacc: configure-build-byacc - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ - (cd $(BUILD_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ - $(TARGET-build-byacc)) -@endif build-byacc - - - - - -.PHONY: configure-build-flex maybe-configure-build-flex -maybe-configure-build-flex: -@if gcc-bootstrap -configure-build-flex: stage_current -@endif gcc-bootstrap -@if build-flex -maybe-configure-build-flex: configure-build-flex -configure-build-flex: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(BUILD_SUBDIR)/flex/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/flex ; \ - $(BUILD_EXPORTS) \ - echo Configuring in $(BUILD_SUBDIR)/flex; \ - cd "$(BUILD_SUBDIR)/flex" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(BUILD_SUBDIR)/flex/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/flex"; \ - libsrcdir="$$s/flex"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif build-flex - - - - - -.PHONY: all-build-flex maybe-all-build-flex -maybe-all-build-flex: -@if gcc-bootstrap -all-build-flex: stage_current -@endif gcc-bootstrap -@if build-flex -TARGET-build-flex=all -maybe-all-build-flex: all-build-flex -all-build-flex: configure-build-flex - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ - (cd $(BUILD_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ - $(TARGET-build-flex)) -@endif build-flex - - - - - -.PHONY: configure-build-m4 maybe-configure-build-m4 -maybe-configure-build-m4: -@if gcc-bootstrap -configure-build-m4: stage_current -@endif gcc-bootstrap -@if build-m4 -maybe-configure-build-m4: configure-build-m4 -configure-build-m4: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(BUILD_SUBDIR)/m4/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/m4 ; \ - $(BUILD_EXPORTS) \ - echo Configuring in $(BUILD_SUBDIR)/m4; \ - cd "$(BUILD_SUBDIR)/m4" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(BUILD_SUBDIR)/m4/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/m4"; \ - libsrcdir="$$s/m4"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif build-m4 - - - - - -.PHONY: all-build-m4 maybe-all-build-m4 -maybe-all-build-m4: -@if gcc-bootstrap -all-build-m4: stage_current -@endif gcc-bootstrap -@if build-m4 -TARGET-build-m4=all -maybe-all-build-m4: all-build-m4 -all-build-m4: configure-build-m4 - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ - (cd $(BUILD_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ - $(TARGET-build-m4)) -@endif build-m4 - - - - - -.PHONY: configure-build-texinfo maybe-configure-build-texinfo -maybe-configure-build-texinfo: -@if gcc-bootstrap -configure-build-texinfo: stage_current -@endif gcc-bootstrap -@if build-texinfo -maybe-configure-build-texinfo: configure-build-texinfo -configure-build-texinfo: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(BUILD_SUBDIR)/texinfo/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/texinfo ; \ - $(BUILD_EXPORTS) \ - echo Configuring in $(BUILD_SUBDIR)/texinfo; \ - cd "$(BUILD_SUBDIR)/texinfo" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(BUILD_SUBDIR)/texinfo/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/texinfo"; \ - libsrcdir="$$s/texinfo"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif build-texinfo - - - - - -.PHONY: all-build-texinfo maybe-all-build-texinfo -maybe-all-build-texinfo: -@if gcc-bootstrap -all-build-texinfo: stage_current -@endif gcc-bootstrap -@if build-texinfo -TARGET-build-texinfo=all -maybe-all-build-texinfo: all-build-texinfo -all-build-texinfo: configure-build-texinfo - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ - (cd $(BUILD_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ - $(TARGET-build-texinfo)) -@endif build-texinfo - - - - - -.PHONY: configure-build-fixincludes maybe-configure-build-fixincludes -maybe-configure-build-fixincludes: -@if gcc-bootstrap -configure-build-fixincludes: stage_current -@endif gcc-bootstrap -@if build-fixincludes -maybe-configure-build-fixincludes: configure-build-fixincludes -configure-build-fixincludes: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(BUILD_SUBDIR)/fixincludes/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/fixincludes ; \ - $(BUILD_EXPORTS) \ - echo Configuring in $(BUILD_SUBDIR)/fixincludes; \ - cd "$(BUILD_SUBDIR)/fixincludes" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(BUILD_SUBDIR)/fixincludes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif build-fixincludes - - - - - -.PHONY: all-build-fixincludes maybe-all-build-fixincludes -maybe-all-build-fixincludes: -@if gcc-bootstrap -all-build-fixincludes: stage_current -@endif gcc-bootstrap -@if build-fixincludes -TARGET-build-fixincludes=all -maybe-all-build-fixincludes: all-build-fixincludes -all-build-fixincludes: configure-build-fixincludes - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ - (cd $(BUILD_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ - $(TARGET-build-fixincludes)) -@endif build-fixincludes - - - - - -# -------------------------------------- -# Modules which run on the host machine -# -------------------------------------- - - -.PHONY: configure-ash maybe-configure-ash -maybe-configure-ash: -@if gcc-bootstrap -configure-ash: stage_current -@endif gcc-bootstrap -@if ash -maybe-configure-ash: configure-ash -configure-ash: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/ash/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ash ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/ash; \ - cd "$(HOST_SUBDIR)/ash" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ash/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ash"; \ - libsrcdir="$$s/ash"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif ash - - - - - -.PHONY: all-ash maybe-all-ash -maybe-all-ash: -@if gcc-bootstrap -all-ash: stage_current -@endif gcc-bootstrap -@if ash -TARGET-ash=all -maybe-all-ash: all-ash -all-ash: configure-ash - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-ash)) -@endif ash - - - - -.PHONY: check-ash maybe-check-ash -maybe-check-ash: -@if ash -maybe-check-ash: check-ash - -check-ash: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif ash - -.PHONY: install-ash maybe-install-ash -maybe-install-ash: -@if ash -maybe-install-ash: install-ash - -install-ash: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif ash - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-ash info-ash -maybe-info-ash: -@if ash -maybe-info-ash: info-ash - -info-ash: \ - configure-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif ash - -.PHONY: maybe-dvi-ash dvi-ash -maybe-dvi-ash: -@if ash -maybe-dvi-ash: dvi-ash - -dvi-ash: \ - configure-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif ash - -.PHONY: maybe-pdf-ash pdf-ash -maybe-pdf-ash: -@if ash -maybe-pdf-ash: pdf-ash - -pdf-ash: \ - configure-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif ash - -.PHONY: maybe-html-ash html-ash -maybe-html-ash: -@if ash -maybe-html-ash: html-ash - -html-ash: \ - configure-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif ash - -.PHONY: maybe-TAGS-ash TAGS-ash -maybe-TAGS-ash: -@if ash -maybe-TAGS-ash: TAGS-ash - -TAGS-ash: \ - configure-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif ash - -.PHONY: maybe-install-info-ash install-info-ash -maybe-install-info-ash: -@if ash -maybe-install-info-ash: install-info-ash - -install-info-ash: \ - configure-ash \ - info-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif ash - -.PHONY: maybe-install-pdf-ash install-pdf-ash -maybe-install-pdf-ash: -@if ash -maybe-install-pdf-ash: install-pdf-ash - -install-pdf-ash: \ - configure-ash \ - pdf-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif ash - -.PHONY: maybe-install-html-ash install-html-ash -maybe-install-html-ash: -@if ash -maybe-install-html-ash: install-html-ash - -install-html-ash: \ - configure-ash \ - html-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif ash - -.PHONY: maybe-installcheck-ash installcheck-ash -maybe-installcheck-ash: -@if ash -maybe-installcheck-ash: installcheck-ash - -installcheck-ash: \ - configure-ash - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif ash - -.PHONY: maybe-mostlyclean-ash mostlyclean-ash -maybe-mostlyclean-ash: -@if ash -maybe-mostlyclean-ash: mostlyclean-ash - -mostlyclean-ash: - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif ash - -.PHONY: maybe-clean-ash clean-ash -maybe-clean-ash: -@if ash -maybe-clean-ash: clean-ash - -clean-ash: - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif ash - -.PHONY: maybe-distclean-ash distclean-ash -maybe-distclean-ash: -@if ash -maybe-distclean-ash: distclean-ash - -distclean-ash: - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif ash - -.PHONY: maybe-maintainer-clean-ash maintainer-clean-ash -maybe-maintainer-clean-ash: -@if ash -maybe-maintainer-clean-ash: maintainer-clean-ash - -maintainer-clean-ash: - @: $(MAKE); $(unstage) - @[ -f ./ash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in ash" ; \ - (cd $(HOST_SUBDIR)/ash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif ash - - - -.PHONY: configure-autoconf maybe-configure-autoconf -maybe-configure-autoconf: -@if gcc-bootstrap -configure-autoconf: stage_current -@endif gcc-bootstrap -@if autoconf -maybe-configure-autoconf: configure-autoconf -configure-autoconf: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/autoconf/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/autoconf ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/autoconf; \ - cd "$(HOST_SUBDIR)/autoconf" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/autoconf/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/autoconf"; \ - libsrcdir="$$s/autoconf"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif autoconf - - - - - -.PHONY: all-autoconf maybe-all-autoconf -maybe-all-autoconf: -@if gcc-bootstrap -all-autoconf: stage_current -@endif gcc-bootstrap -@if autoconf -TARGET-autoconf=all -maybe-all-autoconf: all-autoconf -all-autoconf: configure-autoconf - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-autoconf)) -@endif autoconf - - - - -.PHONY: check-autoconf maybe-check-autoconf -maybe-check-autoconf: -@if autoconf -maybe-check-autoconf: check-autoconf - -check-autoconf: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif autoconf - -.PHONY: install-autoconf maybe-install-autoconf -maybe-install-autoconf: -@if autoconf -maybe-install-autoconf: install-autoconf - -install-autoconf: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif autoconf - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-autoconf info-autoconf -maybe-info-autoconf: -@if autoconf -maybe-info-autoconf: info-autoconf - -info-autoconf: \ - configure-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-dvi-autoconf dvi-autoconf -maybe-dvi-autoconf: -@if autoconf -maybe-dvi-autoconf: dvi-autoconf - -dvi-autoconf: \ - configure-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-pdf-autoconf pdf-autoconf -maybe-pdf-autoconf: -@if autoconf -maybe-pdf-autoconf: pdf-autoconf - -pdf-autoconf: \ - configure-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-html-autoconf html-autoconf -maybe-html-autoconf: -@if autoconf -maybe-html-autoconf: html-autoconf - -html-autoconf: \ - configure-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-TAGS-autoconf TAGS-autoconf -maybe-TAGS-autoconf: -@if autoconf -maybe-TAGS-autoconf: TAGS-autoconf - -TAGS-autoconf: \ - configure-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-install-info-autoconf install-info-autoconf -maybe-install-info-autoconf: -@if autoconf -maybe-install-info-autoconf: install-info-autoconf - -install-info-autoconf: \ - configure-autoconf \ - info-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-install-pdf-autoconf install-pdf-autoconf -maybe-install-pdf-autoconf: -@if autoconf -maybe-install-pdf-autoconf: install-pdf-autoconf - -install-pdf-autoconf: \ - configure-autoconf \ - pdf-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-install-html-autoconf install-html-autoconf -maybe-install-html-autoconf: -@if autoconf -maybe-install-html-autoconf: install-html-autoconf - -install-html-autoconf: \ - configure-autoconf \ - html-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-installcheck-autoconf installcheck-autoconf -maybe-installcheck-autoconf: -@if autoconf -maybe-installcheck-autoconf: installcheck-autoconf - -installcheck-autoconf: \ - configure-autoconf - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-mostlyclean-autoconf mostlyclean-autoconf -maybe-mostlyclean-autoconf: -@if autoconf -maybe-mostlyclean-autoconf: mostlyclean-autoconf - -mostlyclean-autoconf: - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-clean-autoconf clean-autoconf -maybe-clean-autoconf: -@if autoconf -maybe-clean-autoconf: clean-autoconf - -clean-autoconf: - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-distclean-autoconf distclean-autoconf -maybe-distclean-autoconf: -@if autoconf -maybe-distclean-autoconf: distclean-autoconf - -distclean-autoconf: - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif autoconf - -.PHONY: maybe-maintainer-clean-autoconf maintainer-clean-autoconf -maybe-maintainer-clean-autoconf: -@if autoconf -maybe-maintainer-clean-autoconf: maintainer-clean-autoconf - -maintainer-clean-autoconf: - @: $(MAKE); $(unstage) - @[ -f ./autoconf/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in autoconf" ; \ - (cd $(HOST_SUBDIR)/autoconf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif autoconf - - - -.PHONY: configure-automake maybe-configure-automake -maybe-configure-automake: -@if gcc-bootstrap -configure-automake: stage_current -@endif gcc-bootstrap -@if automake -maybe-configure-automake: configure-automake -configure-automake: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/automake/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/automake ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/automake; \ - cd "$(HOST_SUBDIR)/automake" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/automake/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/automake"; \ - libsrcdir="$$s/automake"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif automake - - - - - -.PHONY: all-automake maybe-all-automake -maybe-all-automake: -@if gcc-bootstrap -all-automake: stage_current -@endif gcc-bootstrap -@if automake -TARGET-automake=all -maybe-all-automake: all-automake -all-automake: configure-automake - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-automake)) -@endif automake - - - - -.PHONY: check-automake maybe-check-automake -maybe-check-automake: -@if automake -maybe-check-automake: check-automake - -check-automake: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif automake - -.PHONY: install-automake maybe-install-automake -maybe-install-automake: -@if automake -maybe-install-automake: install-automake - -install-automake: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif automake - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-automake info-automake -maybe-info-automake: -@if automake -maybe-info-automake: info-automake - -info-automake: \ - configure-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif automake - -.PHONY: maybe-dvi-automake dvi-automake -maybe-dvi-automake: -@if automake -maybe-dvi-automake: dvi-automake - -dvi-automake: \ - configure-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif automake - -.PHONY: maybe-pdf-automake pdf-automake -maybe-pdf-automake: -@if automake -maybe-pdf-automake: pdf-automake - -pdf-automake: \ - configure-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif automake - -.PHONY: maybe-html-automake html-automake -maybe-html-automake: -@if automake -maybe-html-automake: html-automake - -html-automake: \ - configure-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif automake - -.PHONY: maybe-TAGS-automake TAGS-automake -maybe-TAGS-automake: -@if automake -maybe-TAGS-automake: TAGS-automake - -TAGS-automake: \ - configure-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif automake - -.PHONY: maybe-install-info-automake install-info-automake -maybe-install-info-automake: -@if automake -maybe-install-info-automake: install-info-automake - -install-info-automake: \ - configure-automake \ - info-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif automake - -.PHONY: maybe-install-pdf-automake install-pdf-automake -maybe-install-pdf-automake: -@if automake -maybe-install-pdf-automake: install-pdf-automake - -install-pdf-automake: \ - configure-automake \ - pdf-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif automake - -.PHONY: maybe-install-html-automake install-html-automake -maybe-install-html-automake: -@if automake -maybe-install-html-automake: install-html-automake - -install-html-automake: \ - configure-automake \ - html-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif automake - -.PHONY: maybe-installcheck-automake installcheck-automake -maybe-installcheck-automake: -@if automake -maybe-installcheck-automake: installcheck-automake - -installcheck-automake: \ - configure-automake - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif automake - -.PHONY: maybe-mostlyclean-automake mostlyclean-automake -maybe-mostlyclean-automake: -@if automake -maybe-mostlyclean-automake: mostlyclean-automake - -mostlyclean-automake: - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif automake - -.PHONY: maybe-clean-automake clean-automake -maybe-clean-automake: -@if automake -maybe-clean-automake: clean-automake - -clean-automake: - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif automake - -.PHONY: maybe-distclean-automake distclean-automake -maybe-distclean-automake: -@if automake -maybe-distclean-automake: distclean-automake - -distclean-automake: - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif automake - -.PHONY: maybe-maintainer-clean-automake maintainer-clean-automake -maybe-maintainer-clean-automake: -@if automake -maybe-maintainer-clean-automake: maintainer-clean-automake - -maintainer-clean-automake: - @: $(MAKE); $(unstage) - @[ -f ./automake/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in automake" ; \ - (cd $(HOST_SUBDIR)/automake && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif automake - - - -.PHONY: configure-bash maybe-configure-bash -maybe-configure-bash: -@if gcc-bootstrap -configure-bash: stage_current -@endif gcc-bootstrap -@if bash -maybe-configure-bash: configure-bash -configure-bash: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/bash/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bash ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/bash; \ - cd "$(HOST_SUBDIR)/bash" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bash/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bash"; \ - libsrcdir="$$s/bash"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif bash - - - - - -.PHONY: all-bash maybe-all-bash -maybe-all-bash: -@if gcc-bootstrap -all-bash: stage_current -@endif gcc-bootstrap -@if bash -TARGET-bash=all -maybe-all-bash: all-bash -all-bash: configure-bash - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-bash)) -@endif bash - - - - -.PHONY: check-bash maybe-check-bash -maybe-check-bash: -@if bash -maybe-check-bash: check-bash - -check-bash: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif bash - -.PHONY: install-bash maybe-install-bash -maybe-install-bash: -@if bash -maybe-install-bash: install-bash - -install-bash: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif bash - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-bash info-bash -maybe-info-bash: -@if bash -maybe-info-bash: info-bash - -info-bash: \ - configure-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif bash - -.PHONY: maybe-dvi-bash dvi-bash -maybe-dvi-bash: -@if bash -maybe-dvi-bash: dvi-bash - -dvi-bash: \ - configure-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif bash - -.PHONY: maybe-pdf-bash pdf-bash -maybe-pdf-bash: -@if bash -maybe-pdf-bash: pdf-bash - -pdf-bash: \ - configure-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif bash - -.PHONY: maybe-html-bash html-bash -maybe-html-bash: -@if bash -maybe-html-bash: html-bash - -html-bash: \ - configure-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif bash - -.PHONY: maybe-TAGS-bash TAGS-bash -maybe-TAGS-bash: -@if bash -maybe-TAGS-bash: TAGS-bash - -TAGS-bash: \ - configure-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif bash - -.PHONY: maybe-install-info-bash install-info-bash -maybe-install-info-bash: -@if bash -maybe-install-info-bash: install-info-bash - -install-info-bash: \ - configure-bash \ - info-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif bash - -.PHONY: maybe-install-pdf-bash install-pdf-bash -maybe-install-pdf-bash: -@if bash -maybe-install-pdf-bash: install-pdf-bash - -install-pdf-bash: \ - configure-bash \ - pdf-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif bash - -.PHONY: maybe-install-html-bash install-html-bash -maybe-install-html-bash: -@if bash -maybe-install-html-bash: install-html-bash - -install-html-bash: \ - configure-bash \ - html-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif bash - -.PHONY: maybe-installcheck-bash installcheck-bash -maybe-installcheck-bash: -@if bash -maybe-installcheck-bash: installcheck-bash - -installcheck-bash: \ - configure-bash - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif bash - -.PHONY: maybe-mostlyclean-bash mostlyclean-bash -maybe-mostlyclean-bash: -@if bash -maybe-mostlyclean-bash: mostlyclean-bash - -mostlyclean-bash: - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif bash - -.PHONY: maybe-clean-bash clean-bash -maybe-clean-bash: -@if bash -maybe-clean-bash: clean-bash - -clean-bash: - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif bash - -.PHONY: maybe-distclean-bash distclean-bash -maybe-distclean-bash: -@if bash -maybe-distclean-bash: distclean-bash - -distclean-bash: - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif bash - -.PHONY: maybe-maintainer-clean-bash maintainer-clean-bash -maybe-maintainer-clean-bash: -@if bash -maybe-maintainer-clean-bash: maintainer-clean-bash - -maintainer-clean-bash: - @: $(MAKE); $(unstage) - @[ -f ./bash/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in bash" ; \ - (cd $(HOST_SUBDIR)/bash && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif bash - - - -.PHONY: configure-bfd maybe-configure-bfd -maybe-configure-bfd: -@if gcc-bootstrap -configure-bfd: stage_current -@endif gcc-bootstrap -@if bfd -maybe-configure-bfd: configure-bfd -configure-bfd: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/bfd; \ - cd "$(HOST_SUBDIR)/bfd" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif bfd - - - -.PHONY: configure-stage1-bfd maybe-configure-stage1-bfd -maybe-configure-stage1-bfd: -@if bfd-bootstrap -maybe-configure-stage1-bfd: configure-stage1-bfd -configure-stage1-bfd: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/bfd ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - cd $(HOST_SUBDIR)/bfd || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif bfd-bootstrap - -.PHONY: configure-stage2-bfd maybe-configure-stage2-bfd -maybe-configure-stage2-bfd: -@if bfd-bootstrap -maybe-configure-stage2-bfd: configure-stage2-bfd -configure-stage2-bfd: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/bfd ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - cd $(HOST_SUBDIR)/bfd || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif bfd-bootstrap - -.PHONY: configure-stage3-bfd maybe-configure-stage3-bfd -maybe-configure-stage3-bfd: -@if bfd-bootstrap -maybe-configure-stage3-bfd: configure-stage3-bfd -configure-stage3-bfd: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/bfd ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - cd $(HOST_SUBDIR)/bfd || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif bfd-bootstrap - -.PHONY: configure-stage4-bfd maybe-configure-stage4-bfd -maybe-configure-stage4-bfd: -@if bfd-bootstrap -maybe-configure-stage4-bfd: configure-stage4-bfd -configure-stage4-bfd: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/bfd ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - cd $(HOST_SUBDIR)/bfd || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif bfd-bootstrap - -.PHONY: configure-stageprofile-bfd maybe-configure-stageprofile-bfd -maybe-configure-stageprofile-bfd: -@if bfd-bootstrap -maybe-configure-stageprofile-bfd: configure-stageprofile-bfd -configure-stageprofile-bfd: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/bfd ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - cd $(HOST_SUBDIR)/bfd || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif bfd-bootstrap - -.PHONY: configure-stagefeedback-bfd maybe-configure-stagefeedback-bfd -maybe-configure-stagefeedback-bfd: -@if bfd-bootstrap -maybe-configure-stagefeedback-bfd: configure-stagefeedback-bfd -configure-stagefeedback-bfd: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/bfd ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - cd $(HOST_SUBDIR)/bfd || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif bfd-bootstrap - - - - - -.PHONY: all-bfd maybe-all-bfd -maybe-all-bfd: -@if gcc-bootstrap -all-bfd: stage_current -@endif gcc-bootstrap -@if bfd -TARGET-bfd=all -maybe-all-bfd: all-bfd -all-bfd: configure-bfd - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-bfd)) -@endif bfd - - - -.PHONY: all-stage1-bfd maybe-all-stage1-bfd -.PHONY: clean-stage1-bfd maybe-clean-stage1-bfd -maybe-all-stage1-bfd: -maybe-clean-stage1-bfd: -@if bfd-bootstrap -maybe-all-stage1-bfd: all-stage1-bfd -all-stage1: all-stage1-bfd -TARGET-stage1-bfd = $(TARGET-bfd) -all-stage1-bfd: configure-stage1-bfd - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-bfd) - -maybe-clean-stage1-bfd: clean-stage1-bfd -clean-stage1: clean-stage1-bfd -clean-stage1-bfd: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/bfd/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-bfd/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif bfd-bootstrap - - -.PHONY: all-stage2-bfd maybe-all-stage2-bfd -.PHONY: clean-stage2-bfd maybe-clean-stage2-bfd -maybe-all-stage2-bfd: -maybe-clean-stage2-bfd: -@if bfd-bootstrap -maybe-all-stage2-bfd: all-stage2-bfd -all-stage2: all-stage2-bfd -TARGET-stage2-bfd = $(TARGET-bfd) -all-stage2-bfd: configure-stage2-bfd - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-bfd) - -maybe-clean-stage2-bfd: clean-stage2-bfd -clean-stage2: clean-stage2-bfd -clean-stage2-bfd: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/bfd/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-bfd/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif bfd-bootstrap - - -.PHONY: all-stage3-bfd maybe-all-stage3-bfd -.PHONY: clean-stage3-bfd maybe-clean-stage3-bfd -maybe-all-stage3-bfd: -maybe-clean-stage3-bfd: -@if bfd-bootstrap -maybe-all-stage3-bfd: all-stage3-bfd -all-stage3: all-stage3-bfd -TARGET-stage3-bfd = $(TARGET-bfd) -all-stage3-bfd: configure-stage3-bfd - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-bfd) - -maybe-clean-stage3-bfd: clean-stage3-bfd -clean-stage3: clean-stage3-bfd -clean-stage3-bfd: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/bfd/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-bfd/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif bfd-bootstrap - - -.PHONY: all-stage4-bfd maybe-all-stage4-bfd -.PHONY: clean-stage4-bfd maybe-clean-stage4-bfd -maybe-all-stage4-bfd: -maybe-clean-stage4-bfd: -@if bfd-bootstrap -maybe-all-stage4-bfd: all-stage4-bfd -all-stage4: all-stage4-bfd -TARGET-stage4-bfd = $(TARGET-bfd) -all-stage4-bfd: configure-stage4-bfd - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-bfd) - -maybe-clean-stage4-bfd: clean-stage4-bfd -clean-stage4: clean-stage4-bfd -clean-stage4-bfd: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/bfd/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-bfd/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif bfd-bootstrap - - -.PHONY: all-stageprofile-bfd maybe-all-stageprofile-bfd -.PHONY: clean-stageprofile-bfd maybe-clean-stageprofile-bfd -maybe-all-stageprofile-bfd: -maybe-clean-stageprofile-bfd: -@if bfd-bootstrap -maybe-all-stageprofile-bfd: all-stageprofile-bfd -all-stageprofile: all-stageprofile-bfd -TARGET-stageprofile-bfd = $(TARGET-bfd) -all-stageprofile-bfd: configure-stageprofile-bfd - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-bfd) - -maybe-clean-stageprofile-bfd: clean-stageprofile-bfd -clean-stageprofile: clean-stageprofile-bfd -clean-stageprofile-bfd: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/bfd/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-bfd/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif bfd-bootstrap - - -.PHONY: all-stagefeedback-bfd maybe-all-stagefeedback-bfd -.PHONY: clean-stagefeedback-bfd maybe-clean-stagefeedback-bfd -maybe-all-stagefeedback-bfd: -maybe-clean-stagefeedback-bfd: -@if bfd-bootstrap -maybe-all-stagefeedback-bfd: all-stagefeedback-bfd -all-stagefeedback: all-stagefeedback-bfd -TARGET-stagefeedback-bfd = $(TARGET-bfd) -all-stagefeedback-bfd: configure-stagefeedback-bfd - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-bfd) - -maybe-clean-stagefeedback-bfd: clean-stagefeedback-bfd -clean-stagefeedback: clean-stagefeedback-bfd -clean-stagefeedback-bfd: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/bfd/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-bfd/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif bfd-bootstrap - - - - - -.PHONY: check-bfd maybe-check-bfd -maybe-check-bfd: -@if bfd -maybe-check-bfd: check-bfd - -check-bfd: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif bfd - -.PHONY: install-bfd maybe-install-bfd -maybe-install-bfd: -@if bfd -maybe-install-bfd: install-bfd - -install-bfd: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif bfd - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-bfd info-bfd -maybe-info-bfd: -@if bfd -maybe-info-bfd: info-bfd - -info-bfd: \ - configure-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-dvi-bfd dvi-bfd -maybe-dvi-bfd: -@if bfd -maybe-dvi-bfd: dvi-bfd - -dvi-bfd: \ - configure-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-pdf-bfd pdf-bfd -maybe-pdf-bfd: -@if bfd -maybe-pdf-bfd: pdf-bfd - -pdf-bfd: \ - configure-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-html-bfd html-bfd -maybe-html-bfd: -@if bfd -maybe-html-bfd: html-bfd - -html-bfd: \ - configure-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-TAGS-bfd TAGS-bfd -maybe-TAGS-bfd: -@if bfd -maybe-TAGS-bfd: TAGS-bfd - -TAGS-bfd: \ - configure-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-install-info-bfd install-info-bfd -maybe-install-info-bfd: -@if bfd -maybe-install-info-bfd: install-info-bfd - -install-info-bfd: \ - configure-bfd \ - info-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-install-pdf-bfd install-pdf-bfd -maybe-install-pdf-bfd: -@if bfd -maybe-install-pdf-bfd: install-pdf-bfd - -install-pdf-bfd: \ - configure-bfd \ - pdf-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-install-html-bfd install-html-bfd -maybe-install-html-bfd: -@if bfd -maybe-install-html-bfd: install-html-bfd - -install-html-bfd: \ - configure-bfd \ - html-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-installcheck-bfd installcheck-bfd -maybe-installcheck-bfd: -@if bfd -maybe-installcheck-bfd: installcheck-bfd - -installcheck-bfd: \ - configure-bfd - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-mostlyclean-bfd mostlyclean-bfd -maybe-mostlyclean-bfd: -@if bfd -maybe-mostlyclean-bfd: mostlyclean-bfd - -mostlyclean-bfd: - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-clean-bfd clean-bfd -maybe-clean-bfd: -@if bfd -maybe-clean-bfd: clean-bfd - -clean-bfd: - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-distclean-bfd distclean-bfd -maybe-distclean-bfd: -@if bfd -maybe-distclean-bfd: distclean-bfd - -distclean-bfd: - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif bfd - -.PHONY: maybe-maintainer-clean-bfd maintainer-clean-bfd -maybe-maintainer-clean-bfd: -@if bfd -maybe-maintainer-clean-bfd: maintainer-clean-bfd - -maintainer-clean-bfd: - @[ -f ./bfd/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in bfd" ; \ - (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif bfd - - - -.PHONY: configure-opcodes maybe-configure-opcodes -maybe-configure-opcodes: -@if gcc-bootstrap -configure-opcodes: stage_current -@endif gcc-bootstrap -@if opcodes -maybe-configure-opcodes: configure-opcodes -configure-opcodes: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/opcodes; \ - cd "$(HOST_SUBDIR)/opcodes" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif opcodes - - - -.PHONY: configure-stage1-opcodes maybe-configure-stage1-opcodes -maybe-configure-stage1-opcodes: -@if opcodes-bootstrap -maybe-configure-stage1-opcodes: configure-stage1-opcodes -configure-stage1-opcodes: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/opcodes ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - cd $(HOST_SUBDIR)/opcodes || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif opcodes-bootstrap - -.PHONY: configure-stage2-opcodes maybe-configure-stage2-opcodes -maybe-configure-stage2-opcodes: -@if opcodes-bootstrap -maybe-configure-stage2-opcodes: configure-stage2-opcodes -configure-stage2-opcodes: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/opcodes ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - cd $(HOST_SUBDIR)/opcodes || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif opcodes-bootstrap - -.PHONY: configure-stage3-opcodes maybe-configure-stage3-opcodes -maybe-configure-stage3-opcodes: -@if opcodes-bootstrap -maybe-configure-stage3-opcodes: configure-stage3-opcodes -configure-stage3-opcodes: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/opcodes ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - cd $(HOST_SUBDIR)/opcodes || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif opcodes-bootstrap - -.PHONY: configure-stage4-opcodes maybe-configure-stage4-opcodes -maybe-configure-stage4-opcodes: -@if opcodes-bootstrap -maybe-configure-stage4-opcodes: configure-stage4-opcodes -configure-stage4-opcodes: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/opcodes ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - cd $(HOST_SUBDIR)/opcodes || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif opcodes-bootstrap - -.PHONY: configure-stageprofile-opcodes maybe-configure-stageprofile-opcodes -maybe-configure-stageprofile-opcodes: -@if opcodes-bootstrap -maybe-configure-stageprofile-opcodes: configure-stageprofile-opcodes -configure-stageprofile-opcodes: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/opcodes ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - cd $(HOST_SUBDIR)/opcodes || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif opcodes-bootstrap - -.PHONY: configure-stagefeedback-opcodes maybe-configure-stagefeedback-opcodes -maybe-configure-stagefeedback-opcodes: -@if opcodes-bootstrap -maybe-configure-stagefeedback-opcodes: configure-stagefeedback-opcodes -configure-stagefeedback-opcodes: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/opcodes ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - cd $(HOST_SUBDIR)/opcodes || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif opcodes-bootstrap - - - - - -.PHONY: all-opcodes maybe-all-opcodes -maybe-all-opcodes: -@if gcc-bootstrap -all-opcodes: stage_current -@endif gcc-bootstrap -@if opcodes -TARGET-opcodes=all -maybe-all-opcodes: all-opcodes -all-opcodes: configure-opcodes - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-opcodes)) -@endif opcodes - - - -.PHONY: all-stage1-opcodes maybe-all-stage1-opcodes -.PHONY: clean-stage1-opcodes maybe-clean-stage1-opcodes -maybe-all-stage1-opcodes: -maybe-clean-stage1-opcodes: -@if opcodes-bootstrap -maybe-all-stage1-opcodes: all-stage1-opcodes -all-stage1: all-stage1-opcodes -TARGET-stage1-opcodes = $(TARGET-opcodes) -all-stage1-opcodes: configure-stage1-opcodes - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-opcodes) - -maybe-clean-stage1-opcodes: clean-stage1-opcodes -clean-stage1: clean-stage1-opcodes -clean-stage1-opcodes: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/opcodes/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-opcodes/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif opcodes-bootstrap - - -.PHONY: all-stage2-opcodes maybe-all-stage2-opcodes -.PHONY: clean-stage2-opcodes maybe-clean-stage2-opcodes -maybe-all-stage2-opcodes: -maybe-clean-stage2-opcodes: -@if opcodes-bootstrap -maybe-all-stage2-opcodes: all-stage2-opcodes -all-stage2: all-stage2-opcodes -TARGET-stage2-opcodes = $(TARGET-opcodes) -all-stage2-opcodes: configure-stage2-opcodes - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-opcodes) - -maybe-clean-stage2-opcodes: clean-stage2-opcodes -clean-stage2: clean-stage2-opcodes -clean-stage2-opcodes: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/opcodes/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-opcodes/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif opcodes-bootstrap - - -.PHONY: all-stage3-opcodes maybe-all-stage3-opcodes -.PHONY: clean-stage3-opcodes maybe-clean-stage3-opcodes -maybe-all-stage3-opcodes: -maybe-clean-stage3-opcodes: -@if opcodes-bootstrap -maybe-all-stage3-opcodes: all-stage3-opcodes -all-stage3: all-stage3-opcodes -TARGET-stage3-opcodes = $(TARGET-opcodes) -all-stage3-opcodes: configure-stage3-opcodes - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-opcodes) - -maybe-clean-stage3-opcodes: clean-stage3-opcodes -clean-stage3: clean-stage3-opcodes -clean-stage3-opcodes: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/opcodes/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-opcodes/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif opcodes-bootstrap - - -.PHONY: all-stage4-opcodes maybe-all-stage4-opcodes -.PHONY: clean-stage4-opcodes maybe-clean-stage4-opcodes -maybe-all-stage4-opcodes: -maybe-clean-stage4-opcodes: -@if opcodes-bootstrap -maybe-all-stage4-opcodes: all-stage4-opcodes -all-stage4: all-stage4-opcodes -TARGET-stage4-opcodes = $(TARGET-opcodes) -all-stage4-opcodes: configure-stage4-opcodes - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-opcodes) - -maybe-clean-stage4-opcodes: clean-stage4-opcodes -clean-stage4: clean-stage4-opcodes -clean-stage4-opcodes: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/opcodes/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-opcodes/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif opcodes-bootstrap - - -.PHONY: all-stageprofile-opcodes maybe-all-stageprofile-opcodes -.PHONY: clean-stageprofile-opcodes maybe-clean-stageprofile-opcodes -maybe-all-stageprofile-opcodes: -maybe-clean-stageprofile-opcodes: -@if opcodes-bootstrap -maybe-all-stageprofile-opcodes: all-stageprofile-opcodes -all-stageprofile: all-stageprofile-opcodes -TARGET-stageprofile-opcodes = $(TARGET-opcodes) -all-stageprofile-opcodes: configure-stageprofile-opcodes - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-opcodes) - -maybe-clean-stageprofile-opcodes: clean-stageprofile-opcodes -clean-stageprofile: clean-stageprofile-opcodes -clean-stageprofile-opcodes: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/opcodes/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-opcodes/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif opcodes-bootstrap - - -.PHONY: all-stagefeedback-opcodes maybe-all-stagefeedback-opcodes -.PHONY: clean-stagefeedback-opcodes maybe-clean-stagefeedback-opcodes -maybe-all-stagefeedback-opcodes: -maybe-clean-stagefeedback-opcodes: -@if opcodes-bootstrap -maybe-all-stagefeedback-opcodes: all-stagefeedback-opcodes -all-stagefeedback: all-stagefeedback-opcodes -TARGET-stagefeedback-opcodes = $(TARGET-opcodes) -all-stagefeedback-opcodes: configure-stagefeedback-opcodes - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-opcodes) - -maybe-clean-stagefeedback-opcodes: clean-stagefeedback-opcodes -clean-stagefeedback: clean-stagefeedback-opcodes -clean-stagefeedback-opcodes: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/opcodes/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-opcodes/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif opcodes-bootstrap - - - - - -.PHONY: check-opcodes maybe-check-opcodes -maybe-check-opcodes: -@if opcodes -maybe-check-opcodes: check-opcodes - -check-opcodes: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif opcodes - -.PHONY: install-opcodes maybe-install-opcodes -maybe-install-opcodes: -@if opcodes -maybe-install-opcodes: install-opcodes - -install-opcodes: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif opcodes - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-opcodes info-opcodes -maybe-info-opcodes: -@if opcodes -maybe-info-opcodes: info-opcodes - -info-opcodes: \ - configure-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-dvi-opcodes dvi-opcodes -maybe-dvi-opcodes: -@if opcodes -maybe-dvi-opcodes: dvi-opcodes - -dvi-opcodes: \ - configure-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-pdf-opcodes pdf-opcodes -maybe-pdf-opcodes: -@if opcodes -maybe-pdf-opcodes: pdf-opcodes - -pdf-opcodes: \ - configure-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-html-opcodes html-opcodes -maybe-html-opcodes: -@if opcodes -maybe-html-opcodes: html-opcodes - -html-opcodes: \ - configure-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-TAGS-opcodes TAGS-opcodes -maybe-TAGS-opcodes: -@if opcodes -maybe-TAGS-opcodes: TAGS-opcodes - -TAGS-opcodes: \ - configure-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-install-info-opcodes install-info-opcodes -maybe-install-info-opcodes: -@if opcodes -maybe-install-info-opcodes: install-info-opcodes - -install-info-opcodes: \ - configure-opcodes \ - info-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-install-pdf-opcodes install-pdf-opcodes -maybe-install-pdf-opcodes: -@if opcodes -maybe-install-pdf-opcodes: install-pdf-opcodes - -install-pdf-opcodes: \ - configure-opcodes \ - pdf-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-install-html-opcodes install-html-opcodes -maybe-install-html-opcodes: -@if opcodes -maybe-install-html-opcodes: install-html-opcodes - -install-html-opcodes: \ - configure-opcodes \ - html-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-installcheck-opcodes installcheck-opcodes -maybe-installcheck-opcodes: -@if opcodes -maybe-installcheck-opcodes: installcheck-opcodes - -installcheck-opcodes: \ - configure-opcodes - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-mostlyclean-opcodes mostlyclean-opcodes -maybe-mostlyclean-opcodes: -@if opcodes -maybe-mostlyclean-opcodes: mostlyclean-opcodes - -mostlyclean-opcodes: - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-clean-opcodes clean-opcodes -maybe-clean-opcodes: -@if opcodes -maybe-clean-opcodes: clean-opcodes - -clean-opcodes: - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-distclean-opcodes distclean-opcodes -maybe-distclean-opcodes: -@if opcodes -maybe-distclean-opcodes: distclean-opcodes - -distclean-opcodes: - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif opcodes - -.PHONY: maybe-maintainer-clean-opcodes maintainer-clean-opcodes -maybe-maintainer-clean-opcodes: -@if opcodes -maybe-maintainer-clean-opcodes: maintainer-clean-opcodes - -maintainer-clean-opcodes: - @[ -f ./opcodes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in opcodes" ; \ - (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif opcodes - - - -.PHONY: configure-binutils maybe-configure-binutils -maybe-configure-binutils: -@if gcc-bootstrap -configure-binutils: stage_current -@endif gcc-bootstrap -@if binutils -maybe-configure-binutils: configure-binutils -configure-binutils: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/binutils; \ - cd "$(HOST_SUBDIR)/binutils" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif binutils - - - -.PHONY: configure-stage1-binutils maybe-configure-stage1-binutils -maybe-configure-stage1-binutils: -@if binutils-bootstrap -maybe-configure-stage1-binutils: configure-stage1-binutils -configure-stage1-binutils: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/binutils ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - cd $(HOST_SUBDIR)/binutils || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif binutils-bootstrap - -.PHONY: configure-stage2-binutils maybe-configure-stage2-binutils -maybe-configure-stage2-binutils: -@if binutils-bootstrap -maybe-configure-stage2-binutils: configure-stage2-binutils -configure-stage2-binutils: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/binutils ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - cd $(HOST_SUBDIR)/binutils || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif binutils-bootstrap - -.PHONY: configure-stage3-binutils maybe-configure-stage3-binutils -maybe-configure-stage3-binutils: -@if binutils-bootstrap -maybe-configure-stage3-binutils: configure-stage3-binutils -configure-stage3-binutils: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/binutils ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - cd $(HOST_SUBDIR)/binutils || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif binutils-bootstrap - -.PHONY: configure-stage4-binutils maybe-configure-stage4-binutils -maybe-configure-stage4-binutils: -@if binutils-bootstrap -maybe-configure-stage4-binutils: configure-stage4-binutils -configure-stage4-binutils: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/binutils ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - cd $(HOST_SUBDIR)/binutils || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif binutils-bootstrap - -.PHONY: configure-stageprofile-binutils maybe-configure-stageprofile-binutils -maybe-configure-stageprofile-binutils: -@if binutils-bootstrap -maybe-configure-stageprofile-binutils: configure-stageprofile-binutils -configure-stageprofile-binutils: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/binutils ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - cd $(HOST_SUBDIR)/binutils || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif binutils-bootstrap - -.PHONY: configure-stagefeedback-binutils maybe-configure-stagefeedback-binutils -maybe-configure-stagefeedback-binutils: -@if binutils-bootstrap -maybe-configure-stagefeedback-binutils: configure-stagefeedback-binutils -configure-stagefeedback-binutils: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/binutils ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - cd $(HOST_SUBDIR)/binutils || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif binutils-bootstrap - - - - - -.PHONY: all-binutils maybe-all-binutils -maybe-all-binutils: -@if gcc-bootstrap -all-binutils: stage_current -@endif gcc-bootstrap -@if binutils -TARGET-binutils=all -maybe-all-binutils: all-binutils -all-binutils: configure-binutils - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-binutils)) -@endif binutils - - - -.PHONY: all-stage1-binutils maybe-all-stage1-binutils -.PHONY: clean-stage1-binutils maybe-clean-stage1-binutils -maybe-all-stage1-binutils: -maybe-clean-stage1-binutils: -@if binutils-bootstrap -maybe-all-stage1-binutils: all-stage1-binutils -all-stage1: all-stage1-binutils -TARGET-stage1-binutils = $(TARGET-binutils) -all-stage1-binutils: configure-stage1-binutils - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-binutils) - -maybe-clean-stage1-binutils: clean-stage1-binutils -clean-stage1: clean-stage1-binutils -clean-stage1-binutils: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/binutils/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-binutils/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif binutils-bootstrap - - -.PHONY: all-stage2-binutils maybe-all-stage2-binutils -.PHONY: clean-stage2-binutils maybe-clean-stage2-binutils -maybe-all-stage2-binutils: -maybe-clean-stage2-binutils: -@if binutils-bootstrap -maybe-all-stage2-binutils: all-stage2-binutils -all-stage2: all-stage2-binutils -TARGET-stage2-binutils = $(TARGET-binutils) -all-stage2-binutils: configure-stage2-binutils - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-binutils) - -maybe-clean-stage2-binutils: clean-stage2-binutils -clean-stage2: clean-stage2-binutils -clean-stage2-binutils: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/binutils/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-binutils/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif binutils-bootstrap - - -.PHONY: all-stage3-binutils maybe-all-stage3-binutils -.PHONY: clean-stage3-binutils maybe-clean-stage3-binutils -maybe-all-stage3-binutils: -maybe-clean-stage3-binutils: -@if binutils-bootstrap -maybe-all-stage3-binutils: all-stage3-binutils -all-stage3: all-stage3-binutils -TARGET-stage3-binutils = $(TARGET-binutils) -all-stage3-binutils: configure-stage3-binutils - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-binutils) - -maybe-clean-stage3-binutils: clean-stage3-binutils -clean-stage3: clean-stage3-binutils -clean-stage3-binutils: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/binutils/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-binutils/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif binutils-bootstrap - - -.PHONY: all-stage4-binutils maybe-all-stage4-binutils -.PHONY: clean-stage4-binutils maybe-clean-stage4-binutils -maybe-all-stage4-binutils: -maybe-clean-stage4-binutils: -@if binutils-bootstrap -maybe-all-stage4-binutils: all-stage4-binutils -all-stage4: all-stage4-binutils -TARGET-stage4-binutils = $(TARGET-binutils) -all-stage4-binutils: configure-stage4-binutils - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-binutils) - -maybe-clean-stage4-binutils: clean-stage4-binutils -clean-stage4: clean-stage4-binutils -clean-stage4-binutils: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/binutils/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-binutils/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif binutils-bootstrap - - -.PHONY: all-stageprofile-binutils maybe-all-stageprofile-binutils -.PHONY: clean-stageprofile-binutils maybe-clean-stageprofile-binutils -maybe-all-stageprofile-binutils: -maybe-clean-stageprofile-binutils: -@if binutils-bootstrap -maybe-all-stageprofile-binutils: all-stageprofile-binutils -all-stageprofile: all-stageprofile-binutils -TARGET-stageprofile-binutils = $(TARGET-binutils) -all-stageprofile-binutils: configure-stageprofile-binutils - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-binutils) - -maybe-clean-stageprofile-binutils: clean-stageprofile-binutils -clean-stageprofile: clean-stageprofile-binutils -clean-stageprofile-binutils: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/binutils/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-binutils/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif binutils-bootstrap - - -.PHONY: all-stagefeedback-binutils maybe-all-stagefeedback-binutils -.PHONY: clean-stagefeedback-binutils maybe-clean-stagefeedback-binutils -maybe-all-stagefeedback-binutils: -maybe-clean-stagefeedback-binutils: -@if binutils-bootstrap -maybe-all-stagefeedback-binutils: all-stagefeedback-binutils -all-stagefeedback: all-stagefeedback-binutils -TARGET-stagefeedback-binutils = $(TARGET-binutils) -all-stagefeedback-binutils: configure-stagefeedback-binutils - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-binutils) - -maybe-clean-stagefeedback-binutils: clean-stagefeedback-binutils -clean-stagefeedback: clean-stagefeedback-binutils -clean-stagefeedback-binutils: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/binutils/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-binutils/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif binutils-bootstrap - - - - - -.PHONY: check-binutils maybe-check-binutils -maybe-check-binutils: -@if binutils -maybe-check-binutils: check-binutils - -check-binutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif binutils - -.PHONY: install-binutils maybe-install-binutils -maybe-install-binutils: -@if binutils -maybe-install-binutils: install-binutils - -install-binutils: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif binutils - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-binutils info-binutils -maybe-info-binutils: -@if binutils -maybe-info-binutils: info-binutils - -info-binutils: \ - configure-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-dvi-binutils dvi-binutils -maybe-dvi-binutils: -@if binutils -maybe-dvi-binutils: dvi-binutils - -dvi-binutils: \ - configure-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-pdf-binutils pdf-binutils -maybe-pdf-binutils: -@if binutils -maybe-pdf-binutils: pdf-binutils - -pdf-binutils: \ - configure-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-html-binutils html-binutils -maybe-html-binutils: -@if binutils -maybe-html-binutils: html-binutils - -html-binutils: \ - configure-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-TAGS-binutils TAGS-binutils -maybe-TAGS-binutils: -@if binutils -maybe-TAGS-binutils: TAGS-binutils - -TAGS-binutils: \ - configure-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-install-info-binutils install-info-binutils -maybe-install-info-binutils: -@if binutils -maybe-install-info-binutils: install-info-binutils - -install-info-binutils: \ - configure-binutils \ - info-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-install-pdf-binutils install-pdf-binutils -maybe-install-pdf-binutils: -@if binutils -maybe-install-pdf-binutils: install-pdf-binutils - -install-pdf-binutils: \ - configure-binutils \ - pdf-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-install-html-binutils install-html-binutils -maybe-install-html-binutils: -@if binutils -maybe-install-html-binutils: install-html-binutils - -install-html-binutils: \ - configure-binutils \ - html-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-installcheck-binutils installcheck-binutils -maybe-installcheck-binutils: -@if binutils -maybe-installcheck-binutils: installcheck-binutils - -installcheck-binutils: \ - configure-binutils - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-mostlyclean-binutils mostlyclean-binutils -maybe-mostlyclean-binutils: -@if binutils -maybe-mostlyclean-binutils: mostlyclean-binutils - -mostlyclean-binutils: - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-clean-binutils clean-binutils -maybe-clean-binutils: -@if binutils -maybe-clean-binutils: clean-binutils - -clean-binutils: - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-distclean-binutils distclean-binutils -maybe-distclean-binutils: -@if binutils -maybe-distclean-binutils: distclean-binutils - -distclean-binutils: - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif binutils - -.PHONY: maybe-maintainer-clean-binutils maintainer-clean-binutils -maybe-maintainer-clean-binutils: -@if binutils -maybe-maintainer-clean-binutils: maintainer-clean-binutils - -maintainer-clean-binutils: - @[ -f ./binutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in binutils" ; \ - (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif binutils - - - -.PHONY: configure-bison maybe-configure-bison -maybe-configure-bison: -@if gcc-bootstrap -configure-bison: stage_current -@endif gcc-bootstrap -@if bison -maybe-configure-bison: configure-bison -configure-bison: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/bison/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bison ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/bison; \ - cd "$(HOST_SUBDIR)/bison" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bison/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bison"; \ - libsrcdir="$$s/bison"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif bison - - - - - -.PHONY: all-bison maybe-all-bison -maybe-all-bison: -@if gcc-bootstrap -all-bison: stage_current -@endif gcc-bootstrap -@if bison -TARGET-bison=all -maybe-all-bison: all-bison -all-bison: configure-bison - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-bison)) -@endif bison - - - - -.PHONY: check-bison maybe-check-bison -maybe-check-bison: -@if bison -maybe-check-bison: check-bison - -# This module is only tested in a native toolchain. -check-bison: - @: $(MAKE); $(unstage) - @if [ '$(host)' = '$(target)' ] ; then \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ - fi - -@endif bison - -.PHONY: install-bison maybe-install-bison -maybe-install-bison: -@if bison -maybe-install-bison: install-bison - -install-bison: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif bison - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-bison info-bison -maybe-info-bison: -@if bison -maybe-info-bison: info-bison - -info-bison: \ - configure-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif bison - -.PHONY: maybe-dvi-bison dvi-bison -maybe-dvi-bison: -@if bison -maybe-dvi-bison: dvi-bison - -dvi-bison: \ - configure-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif bison - -.PHONY: maybe-pdf-bison pdf-bison -maybe-pdf-bison: -@if bison -maybe-pdf-bison: pdf-bison - -pdf-bison: \ - configure-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif bison - -.PHONY: maybe-html-bison html-bison -maybe-html-bison: -@if bison -maybe-html-bison: html-bison - -html-bison: \ - configure-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif bison - -.PHONY: maybe-TAGS-bison TAGS-bison -maybe-TAGS-bison: -@if bison -maybe-TAGS-bison: TAGS-bison - -TAGS-bison: \ - configure-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif bison - -.PHONY: maybe-install-info-bison install-info-bison -maybe-install-info-bison: -@if bison -maybe-install-info-bison: install-info-bison - -install-info-bison: \ - configure-bison \ - info-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif bison - -.PHONY: maybe-install-pdf-bison install-pdf-bison -maybe-install-pdf-bison: -@if bison -maybe-install-pdf-bison: install-pdf-bison - -install-pdf-bison: \ - configure-bison \ - pdf-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif bison - -.PHONY: maybe-install-html-bison install-html-bison -maybe-install-html-bison: -@if bison -maybe-install-html-bison: install-html-bison - -install-html-bison: \ - configure-bison \ - html-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif bison - -.PHONY: maybe-installcheck-bison installcheck-bison -maybe-installcheck-bison: -@if bison -maybe-installcheck-bison: installcheck-bison - -installcheck-bison: \ - configure-bison - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif bison - -.PHONY: maybe-mostlyclean-bison mostlyclean-bison -maybe-mostlyclean-bison: -@if bison -maybe-mostlyclean-bison: mostlyclean-bison - -mostlyclean-bison: - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif bison - -.PHONY: maybe-clean-bison clean-bison -maybe-clean-bison: -@if bison -maybe-clean-bison: clean-bison - -clean-bison: - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif bison - -.PHONY: maybe-distclean-bison distclean-bison -maybe-distclean-bison: -@if bison -maybe-distclean-bison: distclean-bison - -distclean-bison: - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif bison - -.PHONY: maybe-maintainer-clean-bison maintainer-clean-bison -maybe-maintainer-clean-bison: -@if bison -maybe-maintainer-clean-bison: maintainer-clean-bison - -maintainer-clean-bison: - @: $(MAKE); $(unstage) - @[ -f ./bison/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in bison" ; \ - (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif bison - - - -.PHONY: configure-byacc maybe-configure-byacc -maybe-configure-byacc: -@if gcc-bootstrap -configure-byacc: stage_current -@endif gcc-bootstrap -@if byacc -maybe-configure-byacc: configure-byacc -configure-byacc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/byacc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/byacc ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/byacc; \ - cd "$(HOST_SUBDIR)/byacc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/byacc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/byacc"; \ - libsrcdir="$$s/byacc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif byacc - - - - - -.PHONY: all-byacc maybe-all-byacc -maybe-all-byacc: -@if gcc-bootstrap -all-byacc: stage_current -@endif gcc-bootstrap -@if byacc -TARGET-byacc=all -maybe-all-byacc: all-byacc -all-byacc: configure-byacc - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-byacc)) -@endif byacc - - - - -.PHONY: check-byacc maybe-check-byacc -maybe-check-byacc: -@if byacc -maybe-check-byacc: check-byacc - -# This module is only tested in a native toolchain. -check-byacc: - @: $(MAKE); $(unstage) - @if [ '$(host)' = '$(target)' ] ; then \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ - fi - -@endif byacc - -.PHONY: install-byacc maybe-install-byacc -maybe-install-byacc: -@if byacc -maybe-install-byacc: install-byacc - -install-byacc: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif byacc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-byacc info-byacc -maybe-info-byacc: -@if byacc -maybe-info-byacc: info-byacc - -info-byacc: \ - configure-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-dvi-byacc dvi-byacc -maybe-dvi-byacc: -@if byacc -maybe-dvi-byacc: dvi-byacc - -dvi-byacc: \ - configure-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-pdf-byacc pdf-byacc -maybe-pdf-byacc: -@if byacc -maybe-pdf-byacc: pdf-byacc - -pdf-byacc: \ - configure-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-html-byacc html-byacc -maybe-html-byacc: -@if byacc -maybe-html-byacc: html-byacc - -html-byacc: \ - configure-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-TAGS-byacc TAGS-byacc -maybe-TAGS-byacc: -@if byacc -maybe-TAGS-byacc: TAGS-byacc - -TAGS-byacc: \ - configure-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-install-info-byacc install-info-byacc -maybe-install-info-byacc: -@if byacc -maybe-install-info-byacc: install-info-byacc - -install-info-byacc: \ - configure-byacc \ - info-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-install-pdf-byacc install-pdf-byacc -maybe-install-pdf-byacc: -@if byacc -maybe-install-pdf-byacc: install-pdf-byacc - -install-pdf-byacc: \ - configure-byacc \ - pdf-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-install-html-byacc install-html-byacc -maybe-install-html-byacc: -@if byacc -maybe-install-html-byacc: install-html-byacc - -install-html-byacc: \ - configure-byacc \ - html-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-installcheck-byacc installcheck-byacc -maybe-installcheck-byacc: -@if byacc -maybe-installcheck-byacc: installcheck-byacc - -installcheck-byacc: \ - configure-byacc - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-mostlyclean-byacc mostlyclean-byacc -maybe-mostlyclean-byacc: -@if byacc -maybe-mostlyclean-byacc: mostlyclean-byacc - -mostlyclean-byacc: - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-clean-byacc clean-byacc -maybe-clean-byacc: -@if byacc -maybe-clean-byacc: clean-byacc - -clean-byacc: - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-distclean-byacc distclean-byacc -maybe-distclean-byacc: -@if byacc -maybe-distclean-byacc: distclean-byacc - -distclean-byacc: - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif byacc - -.PHONY: maybe-maintainer-clean-byacc maintainer-clean-byacc -maybe-maintainer-clean-byacc: -@if byacc -maybe-maintainer-clean-byacc: maintainer-clean-byacc - -maintainer-clean-byacc: - @: $(MAKE); $(unstage) - @[ -f ./byacc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in byacc" ; \ - (cd $(HOST_SUBDIR)/byacc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif byacc - - - -.PHONY: configure-bzip2 maybe-configure-bzip2 -maybe-configure-bzip2: -@if gcc-bootstrap -configure-bzip2: stage_current -@endif gcc-bootstrap -@if bzip2 -maybe-configure-bzip2: configure-bzip2 -configure-bzip2: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/bzip2/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bzip2 ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/bzip2; \ - cd "$(HOST_SUBDIR)/bzip2" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/bzip2/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/bzip2"; \ - libsrcdir="$$s/bzip2"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif bzip2 - - - - - -.PHONY: all-bzip2 maybe-all-bzip2 -maybe-all-bzip2: -@if gcc-bootstrap -all-bzip2: stage_current -@endif gcc-bootstrap -@if bzip2 -TARGET-bzip2=all -maybe-all-bzip2: all-bzip2 -all-bzip2: configure-bzip2 - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-bzip2)) -@endif bzip2 - - - - -.PHONY: check-bzip2 maybe-check-bzip2 -maybe-check-bzip2: -@if bzip2 -maybe-check-bzip2: check-bzip2 - -check-bzip2: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif bzip2 - -.PHONY: install-bzip2 maybe-install-bzip2 -maybe-install-bzip2: -@if bzip2 -maybe-install-bzip2: install-bzip2 - -install-bzip2: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif bzip2 - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-bzip2 info-bzip2 -maybe-info-bzip2: -@if bzip2 -maybe-info-bzip2: info-bzip2 - -info-bzip2: \ - configure-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-dvi-bzip2 dvi-bzip2 -maybe-dvi-bzip2: -@if bzip2 -maybe-dvi-bzip2: dvi-bzip2 - -dvi-bzip2: \ - configure-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-pdf-bzip2 pdf-bzip2 -maybe-pdf-bzip2: -@if bzip2 -maybe-pdf-bzip2: pdf-bzip2 - -pdf-bzip2: \ - configure-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-html-bzip2 html-bzip2 -maybe-html-bzip2: -@if bzip2 -maybe-html-bzip2: html-bzip2 - -html-bzip2: \ - configure-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-TAGS-bzip2 TAGS-bzip2 -maybe-TAGS-bzip2: -@if bzip2 -maybe-TAGS-bzip2: TAGS-bzip2 - -TAGS-bzip2: \ - configure-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-install-info-bzip2 install-info-bzip2 -maybe-install-info-bzip2: -@if bzip2 -maybe-install-info-bzip2: install-info-bzip2 - -install-info-bzip2: \ - configure-bzip2 \ - info-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-install-pdf-bzip2 install-pdf-bzip2 -maybe-install-pdf-bzip2: -@if bzip2 -maybe-install-pdf-bzip2: install-pdf-bzip2 - -install-pdf-bzip2: \ - configure-bzip2 \ - pdf-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-install-html-bzip2 install-html-bzip2 -maybe-install-html-bzip2: -@if bzip2 -maybe-install-html-bzip2: install-html-bzip2 - -install-html-bzip2: \ - configure-bzip2 \ - html-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-installcheck-bzip2 installcheck-bzip2 -maybe-installcheck-bzip2: -@if bzip2 -maybe-installcheck-bzip2: installcheck-bzip2 - -installcheck-bzip2: \ - configure-bzip2 - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-mostlyclean-bzip2 mostlyclean-bzip2 -maybe-mostlyclean-bzip2: -@if bzip2 -maybe-mostlyclean-bzip2: mostlyclean-bzip2 - -mostlyclean-bzip2: - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-clean-bzip2 clean-bzip2 -maybe-clean-bzip2: -@if bzip2 -maybe-clean-bzip2: clean-bzip2 - -clean-bzip2: - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-distclean-bzip2 distclean-bzip2 -maybe-distclean-bzip2: -@if bzip2 -maybe-distclean-bzip2: distclean-bzip2 - -distclean-bzip2: - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif bzip2 - -.PHONY: maybe-maintainer-clean-bzip2 maintainer-clean-bzip2 -maybe-maintainer-clean-bzip2: -@if bzip2 -maybe-maintainer-clean-bzip2: maintainer-clean-bzip2 - -maintainer-clean-bzip2: - @: $(MAKE); $(unstage) - @[ -f ./bzip2/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in bzip2" ; \ - (cd $(HOST_SUBDIR)/bzip2 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif bzip2 - - - -.PHONY: configure-cgen maybe-configure-cgen -maybe-configure-cgen: -@if gcc-bootstrap -configure-cgen: stage_current -@endif gcc-bootstrap -@if cgen -maybe-configure-cgen: configure-cgen -configure-cgen: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/cgen/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cgen ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/cgen; \ - cd "$(HOST_SUBDIR)/cgen" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cgen/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cgen"; \ - libsrcdir="$$s/cgen"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif cgen - - - - - -.PHONY: all-cgen maybe-all-cgen -maybe-all-cgen: -@if gcc-bootstrap -all-cgen: stage_current -@endif gcc-bootstrap -@if cgen -TARGET-cgen=all -maybe-all-cgen: all-cgen -all-cgen: configure-cgen - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-cgen)) -@endif cgen - - - - -.PHONY: check-cgen maybe-check-cgen -maybe-check-cgen: -@if cgen -maybe-check-cgen: check-cgen - -check-cgen: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif cgen - -.PHONY: install-cgen maybe-install-cgen -maybe-install-cgen: -@if cgen -maybe-install-cgen: install-cgen - -install-cgen: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif cgen - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-cgen info-cgen -maybe-info-cgen: -@if cgen -maybe-info-cgen: info-cgen - -info-cgen: \ - configure-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-dvi-cgen dvi-cgen -maybe-dvi-cgen: -@if cgen -maybe-dvi-cgen: dvi-cgen - -dvi-cgen: \ - configure-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-pdf-cgen pdf-cgen -maybe-pdf-cgen: -@if cgen -maybe-pdf-cgen: pdf-cgen - -pdf-cgen: \ - configure-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-html-cgen html-cgen -maybe-html-cgen: -@if cgen -maybe-html-cgen: html-cgen - -html-cgen: \ - configure-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-TAGS-cgen TAGS-cgen -maybe-TAGS-cgen: -@if cgen -maybe-TAGS-cgen: TAGS-cgen - -TAGS-cgen: \ - configure-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-install-info-cgen install-info-cgen -maybe-install-info-cgen: -@if cgen -maybe-install-info-cgen: install-info-cgen - -install-info-cgen: \ - configure-cgen \ - info-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-install-pdf-cgen install-pdf-cgen -maybe-install-pdf-cgen: -@if cgen -maybe-install-pdf-cgen: install-pdf-cgen - -install-pdf-cgen: \ - configure-cgen \ - pdf-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-install-html-cgen install-html-cgen -maybe-install-html-cgen: -@if cgen -maybe-install-html-cgen: install-html-cgen - -install-html-cgen: \ - configure-cgen \ - html-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-installcheck-cgen installcheck-cgen -maybe-installcheck-cgen: -@if cgen -maybe-installcheck-cgen: installcheck-cgen - -installcheck-cgen: \ - configure-cgen - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-mostlyclean-cgen mostlyclean-cgen -maybe-mostlyclean-cgen: -@if cgen -maybe-mostlyclean-cgen: mostlyclean-cgen - -mostlyclean-cgen: - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-clean-cgen clean-cgen -maybe-clean-cgen: -@if cgen -maybe-clean-cgen: clean-cgen - -clean-cgen: - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-distclean-cgen distclean-cgen -maybe-distclean-cgen: -@if cgen -maybe-distclean-cgen: distclean-cgen - -distclean-cgen: - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif cgen - -.PHONY: maybe-maintainer-clean-cgen maintainer-clean-cgen -maybe-maintainer-clean-cgen: -@if cgen -maybe-maintainer-clean-cgen: maintainer-clean-cgen - -maintainer-clean-cgen: - @: $(MAKE); $(unstage) - @[ -f ./cgen/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in cgen" ; \ - (cd $(HOST_SUBDIR)/cgen && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif cgen - - - -.PHONY: configure-dejagnu maybe-configure-dejagnu -maybe-configure-dejagnu: -@if gcc-bootstrap -configure-dejagnu: stage_current -@endif gcc-bootstrap -@if dejagnu -maybe-configure-dejagnu: configure-dejagnu -configure-dejagnu: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/dejagnu/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/dejagnu ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/dejagnu; \ - cd "$(HOST_SUBDIR)/dejagnu" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/dejagnu/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/dejagnu"; \ - libsrcdir="$$s/dejagnu"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif dejagnu - - - - - -.PHONY: all-dejagnu maybe-all-dejagnu -maybe-all-dejagnu: -@if gcc-bootstrap -all-dejagnu: stage_current -@endif gcc-bootstrap -@if dejagnu -TARGET-dejagnu=all -maybe-all-dejagnu: all-dejagnu -all-dejagnu: configure-dejagnu - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-dejagnu)) -@endif dejagnu - - - - -.PHONY: check-dejagnu maybe-check-dejagnu -maybe-check-dejagnu: -@if dejagnu -maybe-check-dejagnu: check-dejagnu - -check-dejagnu: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif dejagnu - -.PHONY: install-dejagnu maybe-install-dejagnu -maybe-install-dejagnu: -@if dejagnu -maybe-install-dejagnu: install-dejagnu - -install-dejagnu: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif dejagnu - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-dejagnu info-dejagnu -maybe-info-dejagnu: -@if dejagnu -maybe-info-dejagnu: info-dejagnu - -info-dejagnu: \ - configure-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-dvi-dejagnu dvi-dejagnu -maybe-dvi-dejagnu: -@if dejagnu -maybe-dvi-dejagnu: dvi-dejagnu - -dvi-dejagnu: \ - configure-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-pdf-dejagnu pdf-dejagnu -maybe-pdf-dejagnu: -@if dejagnu -maybe-pdf-dejagnu: pdf-dejagnu - -pdf-dejagnu: \ - configure-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-html-dejagnu html-dejagnu -maybe-html-dejagnu: -@if dejagnu -maybe-html-dejagnu: html-dejagnu - -html-dejagnu: \ - configure-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-TAGS-dejagnu TAGS-dejagnu -maybe-TAGS-dejagnu: -@if dejagnu -maybe-TAGS-dejagnu: TAGS-dejagnu - -TAGS-dejagnu: \ - configure-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-install-info-dejagnu install-info-dejagnu -maybe-install-info-dejagnu: -@if dejagnu -maybe-install-info-dejagnu: install-info-dejagnu - -install-info-dejagnu: \ - configure-dejagnu \ - info-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-install-pdf-dejagnu install-pdf-dejagnu -maybe-install-pdf-dejagnu: -@if dejagnu -maybe-install-pdf-dejagnu: install-pdf-dejagnu - -install-pdf-dejagnu: \ - configure-dejagnu \ - pdf-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-install-html-dejagnu install-html-dejagnu -maybe-install-html-dejagnu: -@if dejagnu -maybe-install-html-dejagnu: install-html-dejagnu - -install-html-dejagnu: \ - configure-dejagnu \ - html-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-installcheck-dejagnu installcheck-dejagnu -maybe-installcheck-dejagnu: -@if dejagnu -maybe-installcheck-dejagnu: installcheck-dejagnu - -installcheck-dejagnu: \ - configure-dejagnu - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-mostlyclean-dejagnu mostlyclean-dejagnu -maybe-mostlyclean-dejagnu: -@if dejagnu -maybe-mostlyclean-dejagnu: mostlyclean-dejagnu - -mostlyclean-dejagnu: - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-clean-dejagnu clean-dejagnu -maybe-clean-dejagnu: -@if dejagnu -maybe-clean-dejagnu: clean-dejagnu - -clean-dejagnu: - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-distclean-dejagnu distclean-dejagnu -maybe-distclean-dejagnu: -@if dejagnu -maybe-distclean-dejagnu: distclean-dejagnu - -distclean-dejagnu: - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif dejagnu - -.PHONY: maybe-maintainer-clean-dejagnu maintainer-clean-dejagnu -maybe-maintainer-clean-dejagnu: -@if dejagnu -maybe-maintainer-clean-dejagnu: maintainer-clean-dejagnu - -maintainer-clean-dejagnu: - @: $(MAKE); $(unstage) - @[ -f ./dejagnu/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in dejagnu" ; \ - (cd $(HOST_SUBDIR)/dejagnu && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif dejagnu - - - -.PHONY: configure-diff maybe-configure-diff -maybe-configure-diff: -@if gcc-bootstrap -configure-diff: stage_current -@endif gcc-bootstrap -@if diff -maybe-configure-diff: configure-diff -configure-diff: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/diff/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/diff ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/diff; \ - cd "$(HOST_SUBDIR)/diff" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/diff/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/diff"; \ - libsrcdir="$$s/diff"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif diff - - - - - -.PHONY: all-diff maybe-all-diff -maybe-all-diff: -@if gcc-bootstrap -all-diff: stage_current -@endif gcc-bootstrap -@if diff -TARGET-diff=all -maybe-all-diff: all-diff -all-diff: configure-diff - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-diff)) -@endif diff - - - - -.PHONY: check-diff maybe-check-diff -maybe-check-diff: -@if diff -maybe-check-diff: check-diff - -check-diff: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif diff - -.PHONY: install-diff maybe-install-diff -maybe-install-diff: -@if diff -maybe-install-diff: install-diff - -install-diff: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif diff - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-diff info-diff -maybe-info-diff: -@if diff -maybe-info-diff: info-diff - -info-diff: \ - configure-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif diff - -.PHONY: maybe-dvi-diff dvi-diff -maybe-dvi-diff: -@if diff -maybe-dvi-diff: dvi-diff - -dvi-diff: \ - configure-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif diff - -.PHONY: maybe-pdf-diff pdf-diff -maybe-pdf-diff: -@if diff -maybe-pdf-diff: pdf-diff - -pdf-diff: \ - configure-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif diff - -.PHONY: maybe-html-diff html-diff -maybe-html-diff: -@if diff -maybe-html-diff: html-diff - -html-diff: \ - configure-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif diff - -.PHONY: maybe-TAGS-diff TAGS-diff -maybe-TAGS-diff: -@if diff -maybe-TAGS-diff: TAGS-diff - -TAGS-diff: \ - configure-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif diff - -.PHONY: maybe-install-info-diff install-info-diff -maybe-install-info-diff: -@if diff -maybe-install-info-diff: install-info-diff - -install-info-diff: \ - configure-diff \ - info-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif diff - -.PHONY: maybe-install-pdf-diff install-pdf-diff -maybe-install-pdf-diff: -@if diff -maybe-install-pdf-diff: install-pdf-diff - -install-pdf-diff: \ - configure-diff \ - pdf-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif diff - -.PHONY: maybe-install-html-diff install-html-diff -maybe-install-html-diff: -@if diff -maybe-install-html-diff: install-html-diff - -install-html-diff: \ - configure-diff \ - html-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif diff - -.PHONY: maybe-installcheck-diff installcheck-diff -maybe-installcheck-diff: -@if diff -maybe-installcheck-diff: installcheck-diff - -installcheck-diff: \ - configure-diff - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif diff - -.PHONY: maybe-mostlyclean-diff mostlyclean-diff -maybe-mostlyclean-diff: -@if diff -maybe-mostlyclean-diff: mostlyclean-diff - -mostlyclean-diff: - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif diff - -.PHONY: maybe-clean-diff clean-diff -maybe-clean-diff: -@if diff -maybe-clean-diff: clean-diff - -clean-diff: - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif diff - -.PHONY: maybe-distclean-diff distclean-diff -maybe-distclean-diff: -@if diff -maybe-distclean-diff: distclean-diff - -distclean-diff: - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif diff - -.PHONY: maybe-maintainer-clean-diff maintainer-clean-diff -maybe-maintainer-clean-diff: -@if diff -maybe-maintainer-clean-diff: maintainer-clean-diff - -maintainer-clean-diff: - @: $(MAKE); $(unstage) - @[ -f ./diff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in diff" ; \ - (cd $(HOST_SUBDIR)/diff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif diff - - - -.PHONY: configure-dosutils maybe-configure-dosutils -maybe-configure-dosutils: -@if gcc-bootstrap -configure-dosutils: stage_current -@endif gcc-bootstrap -@if dosutils -maybe-configure-dosutils: configure-dosutils -configure-dosutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/dosutils/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/dosutils ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/dosutils; \ - cd "$(HOST_SUBDIR)/dosutils" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/dosutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/dosutils"; \ - libsrcdir="$$s/dosutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif dosutils - - - - - -.PHONY: all-dosutils maybe-all-dosutils -maybe-all-dosutils: -@if gcc-bootstrap -all-dosutils: stage_current -@endif gcc-bootstrap -@if dosutils -TARGET-dosutils=all -maybe-all-dosutils: all-dosutils -all-dosutils: configure-dosutils - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-dosutils)) -@endif dosutils - - - - -.PHONY: check-dosutils maybe-check-dosutils -maybe-check-dosutils: -@if dosutils -maybe-check-dosutils: check-dosutils - -check-dosutils: - -@endif dosutils - -.PHONY: install-dosutils maybe-install-dosutils -maybe-install-dosutils: -@if dosutils -maybe-install-dosutils: install-dosutils - -install-dosutils: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif dosutils - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-dosutils info-dosutils -maybe-info-dosutils: -@if dosutils -maybe-info-dosutils: info-dosutils - -info-dosutils: \ - configure-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-dvi-dosutils dvi-dosutils -maybe-dvi-dosutils: -@if dosutils -maybe-dvi-dosutils: dvi-dosutils - -dvi-dosutils: \ - configure-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-pdf-dosutils pdf-dosutils -maybe-pdf-dosutils: -@if dosutils -maybe-pdf-dosutils: pdf-dosutils - -pdf-dosutils: \ - configure-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-html-dosutils html-dosutils -maybe-html-dosutils: -@if dosutils -maybe-html-dosutils: html-dosutils - -html-dosutils: \ - configure-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-TAGS-dosutils TAGS-dosutils -maybe-TAGS-dosutils: -@if dosutils -maybe-TAGS-dosutils: TAGS-dosutils - -TAGS-dosutils: \ - configure-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-install-info-dosutils install-info-dosutils -maybe-install-info-dosutils: -@if dosutils -maybe-install-info-dosutils: install-info-dosutils - -install-info-dosutils: \ - configure-dosutils \ - info-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-install-pdf-dosutils install-pdf-dosutils -maybe-install-pdf-dosutils: -@if dosutils -maybe-install-pdf-dosutils: install-pdf-dosutils - -install-pdf-dosutils: \ - configure-dosutils \ - pdf-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-install-html-dosutils install-html-dosutils -maybe-install-html-dosutils: -@if dosutils -maybe-install-html-dosutils: install-html-dosutils - -install-html-dosutils: \ - configure-dosutils \ - html-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-installcheck-dosutils installcheck-dosutils -maybe-installcheck-dosutils: -@if dosutils -maybe-installcheck-dosutils: installcheck-dosutils - -installcheck-dosutils: \ - configure-dosutils - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-mostlyclean-dosutils mostlyclean-dosutils -maybe-mostlyclean-dosutils: -@if dosutils -maybe-mostlyclean-dosutils: mostlyclean-dosutils - -mostlyclean-dosutils: - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-clean-dosutils clean-dosutils -maybe-clean-dosutils: -@if dosutils -maybe-clean-dosutils: clean-dosutils - -clean-dosutils: - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-distclean-dosutils distclean-dosutils -maybe-distclean-dosutils: -@if dosutils -maybe-distclean-dosutils: distclean-dosutils - -distclean-dosutils: - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif dosutils - -.PHONY: maybe-maintainer-clean-dosutils maintainer-clean-dosutils -maybe-maintainer-clean-dosutils: -@if dosutils -maybe-maintainer-clean-dosutils: maintainer-clean-dosutils - -maintainer-clean-dosutils: - @: $(MAKE); $(unstage) - @[ -f ./dosutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in dosutils" ; \ - (cd $(HOST_SUBDIR)/dosutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif dosutils - - - -.PHONY: configure-etc maybe-configure-etc -maybe-configure-etc: -@if gcc-bootstrap -configure-etc: stage_current -@endif gcc-bootstrap -@if etc -maybe-configure-etc: configure-etc -configure-etc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/etc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/etc ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/etc; \ - cd "$(HOST_SUBDIR)/etc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/etc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/etc"; \ - libsrcdir="$$s/etc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif etc - - - - - -.PHONY: all-etc maybe-all-etc -maybe-all-etc: -@if gcc-bootstrap -all-etc: stage_current -@endif gcc-bootstrap -@if etc -TARGET-etc=all -maybe-all-etc: all-etc -all-etc: configure-etc - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-etc)) -@endif etc - - - - -.PHONY: check-etc maybe-check-etc -maybe-check-etc: -@if etc -maybe-check-etc: check-etc - -check-etc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif etc - -.PHONY: install-etc maybe-install-etc -maybe-install-etc: -@if etc -maybe-install-etc: install-etc - -install-etc: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif etc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-etc info-etc -maybe-info-etc: -@if etc -maybe-info-etc: info-etc - -info-etc: \ - configure-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif etc - -.PHONY: maybe-dvi-etc dvi-etc -maybe-dvi-etc: -@if etc -maybe-dvi-etc: dvi-etc - -dvi-etc: \ - configure-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif etc - -.PHONY: maybe-pdf-etc pdf-etc -maybe-pdf-etc: -@if etc -maybe-pdf-etc: pdf-etc - -pdf-etc: \ - configure-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif etc - -.PHONY: maybe-html-etc html-etc -maybe-html-etc: -@if etc -maybe-html-etc: html-etc - -html-etc: \ - configure-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif etc - -.PHONY: maybe-TAGS-etc TAGS-etc -maybe-TAGS-etc: -@if etc -maybe-TAGS-etc: TAGS-etc - -TAGS-etc: \ - configure-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif etc - -.PHONY: maybe-install-info-etc install-info-etc -maybe-install-info-etc: -@if etc -maybe-install-info-etc: install-info-etc - -install-info-etc: \ - configure-etc \ - info-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif etc - -.PHONY: maybe-install-pdf-etc install-pdf-etc -maybe-install-pdf-etc: -@if etc -maybe-install-pdf-etc: install-pdf-etc - -install-pdf-etc: \ - configure-etc \ - pdf-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif etc - -.PHONY: maybe-install-html-etc install-html-etc -maybe-install-html-etc: -@if etc -maybe-install-html-etc: install-html-etc - -install-html-etc: \ - configure-etc \ - html-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif etc - -.PHONY: maybe-installcheck-etc installcheck-etc -maybe-installcheck-etc: -@if etc -maybe-installcheck-etc: installcheck-etc - -installcheck-etc: \ - configure-etc - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif etc - -.PHONY: maybe-mostlyclean-etc mostlyclean-etc -maybe-mostlyclean-etc: -@if etc -maybe-mostlyclean-etc: mostlyclean-etc - -mostlyclean-etc: - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif etc - -.PHONY: maybe-clean-etc clean-etc -maybe-clean-etc: -@if etc -maybe-clean-etc: clean-etc - -clean-etc: - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif etc - -.PHONY: maybe-distclean-etc distclean-etc -maybe-distclean-etc: -@if etc -maybe-distclean-etc: distclean-etc - -distclean-etc: - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif etc - -.PHONY: maybe-maintainer-clean-etc maintainer-clean-etc -maybe-maintainer-clean-etc: -@if etc -maybe-maintainer-clean-etc: maintainer-clean-etc - -maintainer-clean-etc: - @: $(MAKE); $(unstage) - @[ -f ./etc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in etc" ; \ - (cd $(HOST_SUBDIR)/etc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif etc - - - -.PHONY: configure-fastjar maybe-configure-fastjar -maybe-configure-fastjar: -@if gcc-bootstrap -configure-fastjar: stage_current -@endif gcc-bootstrap -@if fastjar -maybe-configure-fastjar: configure-fastjar -configure-fastjar: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/fastjar/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fastjar ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/fastjar; \ - cd "$(HOST_SUBDIR)/fastjar" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/fastjar/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/fastjar"; \ - libsrcdir="$$s/fastjar"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif fastjar - - - - - -.PHONY: all-fastjar maybe-all-fastjar -maybe-all-fastjar: -@if gcc-bootstrap -all-fastjar: stage_current -@endif gcc-bootstrap -@if fastjar -TARGET-fastjar=all -maybe-all-fastjar: all-fastjar -all-fastjar: configure-fastjar - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-fastjar)) -@endif fastjar - - - - -.PHONY: check-fastjar maybe-check-fastjar -maybe-check-fastjar: -@if fastjar -maybe-check-fastjar: check-fastjar - -# This module is only tested in a native toolchain. -check-fastjar: - @: $(MAKE); $(unstage) - @if [ '$(host)' = '$(target)' ] ; then \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ - fi - -@endif fastjar - -.PHONY: install-fastjar maybe-install-fastjar -maybe-install-fastjar: -@if fastjar -maybe-install-fastjar: install-fastjar - -install-fastjar: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif fastjar - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-fastjar info-fastjar -maybe-info-fastjar: -@if fastjar -maybe-info-fastjar: info-fastjar - -info-fastjar: \ - configure-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-dvi-fastjar dvi-fastjar -maybe-dvi-fastjar: -@if fastjar -maybe-dvi-fastjar: dvi-fastjar - -dvi-fastjar: \ - configure-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-pdf-fastjar pdf-fastjar -maybe-pdf-fastjar: -@if fastjar -maybe-pdf-fastjar: pdf-fastjar - -pdf-fastjar: \ - configure-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-html-fastjar html-fastjar -maybe-html-fastjar: -@if fastjar -maybe-html-fastjar: html-fastjar - -html-fastjar: \ - configure-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-TAGS-fastjar TAGS-fastjar -maybe-TAGS-fastjar: -@if fastjar -maybe-TAGS-fastjar: TAGS-fastjar - -TAGS-fastjar: \ - configure-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-install-info-fastjar install-info-fastjar -maybe-install-info-fastjar: -@if fastjar -maybe-install-info-fastjar: install-info-fastjar - -install-info-fastjar: \ - configure-fastjar \ - info-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-install-pdf-fastjar install-pdf-fastjar -maybe-install-pdf-fastjar: -@if fastjar -maybe-install-pdf-fastjar: install-pdf-fastjar - -install-pdf-fastjar: \ - configure-fastjar \ - pdf-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-install-html-fastjar install-html-fastjar -maybe-install-html-fastjar: -@if fastjar -maybe-install-html-fastjar: install-html-fastjar - -install-html-fastjar: \ - configure-fastjar \ - html-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-installcheck-fastjar installcheck-fastjar -maybe-installcheck-fastjar: -@if fastjar -maybe-installcheck-fastjar: installcheck-fastjar - -installcheck-fastjar: \ - configure-fastjar - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-mostlyclean-fastjar mostlyclean-fastjar -maybe-mostlyclean-fastjar: -@if fastjar -maybe-mostlyclean-fastjar: mostlyclean-fastjar - -mostlyclean-fastjar: - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-clean-fastjar clean-fastjar -maybe-clean-fastjar: -@if fastjar -maybe-clean-fastjar: clean-fastjar - -clean-fastjar: - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-distclean-fastjar distclean-fastjar -maybe-distclean-fastjar: -@if fastjar -maybe-distclean-fastjar: distclean-fastjar - -distclean-fastjar: - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif fastjar - -.PHONY: maybe-maintainer-clean-fastjar maintainer-clean-fastjar -maybe-maintainer-clean-fastjar: -@if fastjar -maybe-maintainer-clean-fastjar: maintainer-clean-fastjar - -maintainer-clean-fastjar: - @: $(MAKE); $(unstage) - @[ -f ./fastjar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in fastjar" ; \ - (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif fastjar - - - -.PHONY: configure-fileutils maybe-configure-fileutils -maybe-configure-fileutils: -@if gcc-bootstrap -configure-fileutils: stage_current -@endif gcc-bootstrap -@if fileutils -maybe-configure-fileutils: configure-fileutils -configure-fileutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/fileutils/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fileutils ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/fileutils; \ - cd "$(HOST_SUBDIR)/fileutils" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/fileutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/fileutils"; \ - libsrcdir="$$s/fileutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif fileutils - - - - - -.PHONY: all-fileutils maybe-all-fileutils -maybe-all-fileutils: -@if gcc-bootstrap -all-fileutils: stage_current -@endif gcc-bootstrap -@if fileutils -TARGET-fileutils=all -maybe-all-fileutils: all-fileutils -all-fileutils: configure-fileutils - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-fileutils)) -@endif fileutils - - - - -.PHONY: check-fileutils maybe-check-fileutils -maybe-check-fileutils: -@if fileutils -maybe-check-fileutils: check-fileutils - -check-fileutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif fileutils - -.PHONY: install-fileutils maybe-install-fileutils -maybe-install-fileutils: -@if fileutils -maybe-install-fileutils: install-fileutils - -install-fileutils: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif fileutils - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-fileutils info-fileutils -maybe-info-fileutils: -@if fileutils -maybe-info-fileutils: info-fileutils - -info-fileutils: \ - configure-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-dvi-fileutils dvi-fileutils -maybe-dvi-fileutils: -@if fileutils -maybe-dvi-fileutils: dvi-fileutils - -dvi-fileutils: \ - configure-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-pdf-fileutils pdf-fileutils -maybe-pdf-fileutils: -@if fileutils -maybe-pdf-fileutils: pdf-fileutils - -pdf-fileutils: \ - configure-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-html-fileutils html-fileutils -maybe-html-fileutils: -@if fileutils -maybe-html-fileutils: html-fileutils - -html-fileutils: \ - configure-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-TAGS-fileutils TAGS-fileutils -maybe-TAGS-fileutils: -@if fileutils -maybe-TAGS-fileutils: TAGS-fileutils - -TAGS-fileutils: \ - configure-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-install-info-fileutils install-info-fileutils -maybe-install-info-fileutils: -@if fileutils -maybe-install-info-fileutils: install-info-fileutils - -install-info-fileutils: \ - configure-fileutils \ - info-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-install-pdf-fileutils install-pdf-fileutils -maybe-install-pdf-fileutils: -@if fileutils -maybe-install-pdf-fileutils: install-pdf-fileutils - -install-pdf-fileutils: \ - configure-fileutils \ - pdf-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-install-html-fileutils install-html-fileutils -maybe-install-html-fileutils: -@if fileutils -maybe-install-html-fileutils: install-html-fileutils - -install-html-fileutils: \ - configure-fileutils \ - html-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-installcheck-fileutils installcheck-fileutils -maybe-installcheck-fileutils: -@if fileutils -maybe-installcheck-fileutils: installcheck-fileutils - -installcheck-fileutils: \ - configure-fileutils - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-mostlyclean-fileutils mostlyclean-fileutils -maybe-mostlyclean-fileutils: -@if fileutils -maybe-mostlyclean-fileutils: mostlyclean-fileutils - -mostlyclean-fileutils: - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-clean-fileutils clean-fileutils -maybe-clean-fileutils: -@if fileutils -maybe-clean-fileutils: clean-fileutils - -clean-fileutils: - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-distclean-fileutils distclean-fileutils -maybe-distclean-fileutils: -@if fileutils -maybe-distclean-fileutils: distclean-fileutils - -distclean-fileutils: - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif fileutils - -.PHONY: maybe-maintainer-clean-fileutils maintainer-clean-fileutils -maybe-maintainer-clean-fileutils: -@if fileutils -maybe-maintainer-clean-fileutils: maintainer-clean-fileutils - -maintainer-clean-fileutils: - @: $(MAKE); $(unstage) - @[ -f ./fileutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in fileutils" ; \ - (cd $(HOST_SUBDIR)/fileutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif fileutils - - - -.PHONY: configure-findutils maybe-configure-findutils -maybe-configure-findutils: -@if gcc-bootstrap -configure-findutils: stage_current -@endif gcc-bootstrap -@if findutils -maybe-configure-findutils: configure-findutils -configure-findutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/findutils/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/findutils ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/findutils; \ - cd "$(HOST_SUBDIR)/findutils" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/findutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/findutils"; \ - libsrcdir="$$s/findutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif findutils - - - - - -.PHONY: all-findutils maybe-all-findutils -maybe-all-findutils: -@if gcc-bootstrap -all-findutils: stage_current -@endif gcc-bootstrap -@if findutils -TARGET-findutils=all -maybe-all-findutils: all-findutils -all-findutils: configure-findutils - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-findutils)) -@endif findutils - - - - -.PHONY: check-findutils maybe-check-findutils -maybe-check-findutils: -@if findutils -maybe-check-findutils: check-findutils - -check-findutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif findutils - -.PHONY: install-findutils maybe-install-findutils -maybe-install-findutils: -@if findutils -maybe-install-findutils: install-findutils - -install-findutils: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif findutils - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-findutils info-findutils -maybe-info-findutils: -@if findutils -maybe-info-findutils: info-findutils - -info-findutils: \ - configure-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-dvi-findutils dvi-findutils -maybe-dvi-findutils: -@if findutils -maybe-dvi-findutils: dvi-findutils - -dvi-findutils: \ - configure-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-pdf-findutils pdf-findutils -maybe-pdf-findutils: -@if findutils -maybe-pdf-findutils: pdf-findutils - -pdf-findutils: \ - configure-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-html-findutils html-findutils -maybe-html-findutils: -@if findutils -maybe-html-findutils: html-findutils - -html-findutils: \ - configure-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-TAGS-findutils TAGS-findutils -maybe-TAGS-findutils: -@if findutils -maybe-TAGS-findutils: TAGS-findutils - -TAGS-findutils: \ - configure-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-install-info-findutils install-info-findutils -maybe-install-info-findutils: -@if findutils -maybe-install-info-findutils: install-info-findutils - -install-info-findutils: \ - configure-findutils \ - info-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-install-pdf-findutils install-pdf-findutils -maybe-install-pdf-findutils: -@if findutils -maybe-install-pdf-findutils: install-pdf-findutils - -install-pdf-findutils: \ - configure-findutils \ - pdf-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-install-html-findutils install-html-findutils -maybe-install-html-findutils: -@if findutils -maybe-install-html-findutils: install-html-findutils - -install-html-findutils: \ - configure-findutils \ - html-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-installcheck-findutils installcheck-findutils -maybe-installcheck-findutils: -@if findutils -maybe-installcheck-findutils: installcheck-findutils - -installcheck-findutils: \ - configure-findutils - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-mostlyclean-findutils mostlyclean-findutils -maybe-mostlyclean-findutils: -@if findutils -maybe-mostlyclean-findutils: mostlyclean-findutils - -mostlyclean-findutils: - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-clean-findutils clean-findutils -maybe-clean-findutils: -@if findutils -maybe-clean-findutils: clean-findutils - -clean-findutils: - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-distclean-findutils distclean-findutils -maybe-distclean-findutils: -@if findutils -maybe-distclean-findutils: distclean-findutils - -distclean-findutils: - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif findutils - -.PHONY: maybe-maintainer-clean-findutils maintainer-clean-findutils -maybe-maintainer-clean-findutils: -@if findutils -maybe-maintainer-clean-findutils: maintainer-clean-findutils - -maintainer-clean-findutils: - @: $(MAKE); $(unstage) - @[ -f ./findutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in findutils" ; \ - (cd $(HOST_SUBDIR)/findutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif findutils - - - -.PHONY: configure-find maybe-configure-find -maybe-configure-find: -@if gcc-bootstrap -configure-find: stage_current -@endif gcc-bootstrap -@if find -maybe-configure-find: configure-find -configure-find: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/find/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/find ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/find; \ - cd "$(HOST_SUBDIR)/find" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/find/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/find"; \ - libsrcdir="$$s/find"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif find - - - - - -.PHONY: all-find maybe-all-find -maybe-all-find: -@if gcc-bootstrap -all-find: stage_current -@endif gcc-bootstrap -@if find -TARGET-find=all -maybe-all-find: all-find -all-find: configure-find - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-find)) -@endif find - - - - -.PHONY: check-find maybe-check-find -maybe-check-find: -@if find -maybe-check-find: check-find - -check-find: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif find - -.PHONY: install-find maybe-install-find -maybe-install-find: -@if find -maybe-install-find: install-find - -install-find: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif find - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-find info-find -maybe-info-find: -@if find -maybe-info-find: info-find - -info-find: \ - configure-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif find - -.PHONY: maybe-dvi-find dvi-find -maybe-dvi-find: -@if find -maybe-dvi-find: dvi-find - -dvi-find: \ - configure-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif find - -.PHONY: maybe-pdf-find pdf-find -maybe-pdf-find: -@if find -maybe-pdf-find: pdf-find - -pdf-find: \ - configure-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif find - -.PHONY: maybe-html-find html-find -maybe-html-find: -@if find -maybe-html-find: html-find - -html-find: \ - configure-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif find - -.PHONY: maybe-TAGS-find TAGS-find -maybe-TAGS-find: -@if find -maybe-TAGS-find: TAGS-find - -TAGS-find: \ - configure-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif find - -.PHONY: maybe-install-info-find install-info-find -maybe-install-info-find: -@if find -maybe-install-info-find: install-info-find - -install-info-find: \ - configure-find \ - info-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif find - -.PHONY: maybe-install-pdf-find install-pdf-find -maybe-install-pdf-find: -@if find -maybe-install-pdf-find: install-pdf-find - -install-pdf-find: \ - configure-find \ - pdf-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif find - -.PHONY: maybe-install-html-find install-html-find -maybe-install-html-find: -@if find -maybe-install-html-find: install-html-find - -install-html-find: \ - configure-find \ - html-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif find - -.PHONY: maybe-installcheck-find installcheck-find -maybe-installcheck-find: -@if find -maybe-installcheck-find: installcheck-find - -installcheck-find: \ - configure-find - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif find - -.PHONY: maybe-mostlyclean-find mostlyclean-find -maybe-mostlyclean-find: -@if find -maybe-mostlyclean-find: mostlyclean-find - -mostlyclean-find: - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif find - -.PHONY: maybe-clean-find clean-find -maybe-clean-find: -@if find -maybe-clean-find: clean-find - -clean-find: - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif find - -.PHONY: maybe-distclean-find distclean-find -maybe-distclean-find: -@if find -maybe-distclean-find: distclean-find - -distclean-find: - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif find - -.PHONY: maybe-maintainer-clean-find maintainer-clean-find -maybe-maintainer-clean-find: -@if find -maybe-maintainer-clean-find: maintainer-clean-find - -maintainer-clean-find: - @: $(MAKE); $(unstage) - @[ -f ./find/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in find" ; \ - (cd $(HOST_SUBDIR)/find && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif find - - - -.PHONY: configure-fixincludes maybe-configure-fixincludes -maybe-configure-fixincludes: -@if gcc-bootstrap -configure-fixincludes: stage_current -@endif gcc-bootstrap -@if fixincludes -maybe-configure-fixincludes: configure-fixincludes -configure-fixincludes: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/fixincludes; \ - cd "$(HOST_SUBDIR)/fixincludes" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif fixincludes - - - - - -.PHONY: all-fixincludes maybe-all-fixincludes -maybe-all-fixincludes: -@if gcc-bootstrap -all-fixincludes: stage_current -@endif gcc-bootstrap -@if fixincludes -TARGET-fixincludes=all -maybe-all-fixincludes: all-fixincludes -all-fixincludes: configure-fixincludes - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-fixincludes)) -@endif fixincludes - - - - -.PHONY: check-fixincludes maybe-check-fixincludes -maybe-check-fixincludes: -@if fixincludes -maybe-check-fixincludes: check-fixincludes - -check-fixincludes: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif fixincludes - -.PHONY: install-fixincludes maybe-install-fixincludes -maybe-install-fixincludes: -@if fixincludes -maybe-install-fixincludes: install-fixincludes - -install-fixincludes: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif fixincludes - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-fixincludes info-fixincludes -maybe-info-fixincludes: -@if fixincludes -maybe-info-fixincludes: info-fixincludes - -info-fixincludes: \ - configure-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-dvi-fixincludes dvi-fixincludes -maybe-dvi-fixincludes: -@if fixincludes -maybe-dvi-fixincludes: dvi-fixincludes - -dvi-fixincludes: \ - configure-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-pdf-fixincludes pdf-fixincludes -maybe-pdf-fixincludes: -@if fixincludes -maybe-pdf-fixincludes: pdf-fixincludes - -pdf-fixincludes: \ - configure-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-html-fixincludes html-fixincludes -maybe-html-fixincludes: -@if fixincludes -maybe-html-fixincludes: html-fixincludes - -html-fixincludes: \ - configure-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-TAGS-fixincludes TAGS-fixincludes -maybe-TAGS-fixincludes: -@if fixincludes -maybe-TAGS-fixincludes: TAGS-fixincludes - -# fixincludes doesn't support TAGS. -TAGS-fixincludes: - -@endif fixincludes - -.PHONY: maybe-install-info-fixincludes install-info-fixincludes -maybe-install-info-fixincludes: -@if fixincludes -maybe-install-info-fixincludes: install-info-fixincludes - -install-info-fixincludes: \ - configure-fixincludes \ - info-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-install-pdf-fixincludes install-pdf-fixincludes -maybe-install-pdf-fixincludes: -@if fixincludes -maybe-install-pdf-fixincludes: install-pdf-fixincludes - -install-pdf-fixincludes: \ - configure-fixincludes \ - pdf-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-install-html-fixincludes install-html-fixincludes -maybe-install-html-fixincludes: -@if fixincludes -maybe-install-html-fixincludes: install-html-fixincludes - -install-html-fixincludes: \ - configure-fixincludes \ - html-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-installcheck-fixincludes installcheck-fixincludes -maybe-installcheck-fixincludes: -@if fixincludes -maybe-installcheck-fixincludes: installcheck-fixincludes - -installcheck-fixincludes: \ - configure-fixincludes - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-mostlyclean-fixincludes mostlyclean-fixincludes -maybe-mostlyclean-fixincludes: -@if fixincludes -maybe-mostlyclean-fixincludes: mostlyclean-fixincludes - -mostlyclean-fixincludes: - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-clean-fixincludes clean-fixincludes -maybe-clean-fixincludes: -@if fixincludes -maybe-clean-fixincludes: clean-fixincludes - -clean-fixincludes: - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-distclean-fixincludes distclean-fixincludes -maybe-distclean-fixincludes: -@if fixincludes -maybe-distclean-fixincludes: distclean-fixincludes - -distclean-fixincludes: - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif fixincludes - -.PHONY: maybe-maintainer-clean-fixincludes maintainer-clean-fixincludes -maybe-maintainer-clean-fixincludes: -@if fixincludes -maybe-maintainer-clean-fixincludes: maintainer-clean-fixincludes - -maintainer-clean-fixincludes: - @: $(MAKE); $(unstage) - @[ -f ./fixincludes/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in fixincludes" ; \ - (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif fixincludes - - - -.PHONY: configure-flex maybe-configure-flex -maybe-configure-flex: -@if gcc-bootstrap -configure-flex: stage_current -@endif gcc-bootstrap -@if flex -maybe-configure-flex: configure-flex -configure-flex: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/flex/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/flex ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/flex; \ - cd "$(HOST_SUBDIR)/flex" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/flex/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/flex"; \ - libsrcdir="$$s/flex"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif flex - - - - - -.PHONY: all-flex maybe-all-flex -maybe-all-flex: -@if gcc-bootstrap -all-flex: stage_current -@endif gcc-bootstrap -@if flex -TARGET-flex=all -maybe-all-flex: all-flex -all-flex: configure-flex - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-flex)) -@endif flex - - - - -.PHONY: check-flex maybe-check-flex -maybe-check-flex: -@if flex -maybe-check-flex: check-flex - -# This module is only tested in a native toolchain. -check-flex: - @: $(MAKE); $(unstage) - @if [ '$(host)' = '$(target)' ] ; then \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ - fi - -@endif flex - -.PHONY: install-flex maybe-install-flex -maybe-install-flex: -@if flex -maybe-install-flex: install-flex - -install-flex: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif flex - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-flex info-flex -maybe-info-flex: -@if flex -maybe-info-flex: info-flex - -info-flex: \ - configure-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif flex - -.PHONY: maybe-dvi-flex dvi-flex -maybe-dvi-flex: -@if flex -maybe-dvi-flex: dvi-flex - -dvi-flex: \ - configure-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif flex - -.PHONY: maybe-pdf-flex pdf-flex -maybe-pdf-flex: -@if flex -maybe-pdf-flex: pdf-flex - -pdf-flex: \ - configure-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif flex - -.PHONY: maybe-html-flex html-flex -maybe-html-flex: -@if flex -maybe-html-flex: html-flex - -html-flex: \ - configure-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif flex - -.PHONY: maybe-TAGS-flex TAGS-flex -maybe-TAGS-flex: -@if flex -maybe-TAGS-flex: TAGS-flex - -TAGS-flex: \ - configure-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif flex - -.PHONY: maybe-install-info-flex install-info-flex -maybe-install-info-flex: -@if flex -maybe-install-info-flex: install-info-flex - -install-info-flex: \ - configure-flex \ - info-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif flex - -.PHONY: maybe-install-pdf-flex install-pdf-flex -maybe-install-pdf-flex: -@if flex -maybe-install-pdf-flex: install-pdf-flex - -install-pdf-flex: \ - configure-flex \ - pdf-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif flex - -.PHONY: maybe-install-html-flex install-html-flex -maybe-install-html-flex: -@if flex -maybe-install-html-flex: install-html-flex - -install-html-flex: \ - configure-flex \ - html-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif flex - -.PHONY: maybe-installcheck-flex installcheck-flex -maybe-installcheck-flex: -@if flex -maybe-installcheck-flex: installcheck-flex - -installcheck-flex: \ - configure-flex - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif flex - -.PHONY: maybe-mostlyclean-flex mostlyclean-flex -maybe-mostlyclean-flex: -@if flex -maybe-mostlyclean-flex: mostlyclean-flex - -mostlyclean-flex: - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif flex - -.PHONY: maybe-clean-flex clean-flex -maybe-clean-flex: -@if flex -maybe-clean-flex: clean-flex - -clean-flex: - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif flex - -.PHONY: maybe-distclean-flex distclean-flex -maybe-distclean-flex: -@if flex -maybe-distclean-flex: distclean-flex - -distclean-flex: - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif flex - -.PHONY: maybe-maintainer-clean-flex maintainer-clean-flex -maybe-maintainer-clean-flex: -@if flex -maybe-maintainer-clean-flex: maintainer-clean-flex - -maintainer-clean-flex: - @: $(MAKE); $(unstage) - @[ -f ./flex/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in flex" ; \ - (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif flex - - - -.PHONY: configure-gas maybe-configure-gas -maybe-configure-gas: -@if gcc-bootstrap -configure-gas: stage_current -@endif gcc-bootstrap -@if gas -maybe-configure-gas: configure-gas -configure-gas: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gas; \ - cd "$(HOST_SUBDIR)/gas" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gas - - - -.PHONY: configure-stage1-gas maybe-configure-stage1-gas -maybe-configure-stage1-gas: -@if gas-bootstrap -maybe-configure-stage1-gas: configure-stage1-gas -configure-stage1-gas: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/gas ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - cd $(HOST_SUBDIR)/gas || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif gas-bootstrap - -.PHONY: configure-stage2-gas maybe-configure-stage2-gas -maybe-configure-stage2-gas: -@if gas-bootstrap -maybe-configure-stage2-gas: configure-stage2-gas -configure-stage2-gas: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/gas ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - cd $(HOST_SUBDIR)/gas || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif gas-bootstrap - -.PHONY: configure-stage3-gas maybe-configure-stage3-gas -maybe-configure-stage3-gas: -@if gas-bootstrap -maybe-configure-stage3-gas: configure-stage3-gas -configure-stage3-gas: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/gas ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - cd $(HOST_SUBDIR)/gas || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif gas-bootstrap - -.PHONY: configure-stage4-gas maybe-configure-stage4-gas -maybe-configure-stage4-gas: -@if gas-bootstrap -maybe-configure-stage4-gas: configure-stage4-gas -configure-stage4-gas: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/gas ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - cd $(HOST_SUBDIR)/gas || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif gas-bootstrap - -.PHONY: configure-stageprofile-gas maybe-configure-stageprofile-gas -maybe-configure-stageprofile-gas: -@if gas-bootstrap -maybe-configure-stageprofile-gas: configure-stageprofile-gas -configure-stageprofile-gas: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/gas ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - cd $(HOST_SUBDIR)/gas || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif gas-bootstrap - -.PHONY: configure-stagefeedback-gas maybe-configure-stagefeedback-gas -maybe-configure-stagefeedback-gas: -@if gas-bootstrap -maybe-configure-stagefeedback-gas: configure-stagefeedback-gas -configure-stagefeedback-gas: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/gas ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - cd $(HOST_SUBDIR)/gas || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif gas-bootstrap - - - - - -.PHONY: all-gas maybe-all-gas -maybe-all-gas: -@if gcc-bootstrap -all-gas: stage_current -@endif gcc-bootstrap -@if gas -TARGET-gas=all -maybe-all-gas: all-gas -all-gas: configure-gas - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gas)) -@endif gas - - - -.PHONY: all-stage1-gas maybe-all-stage1-gas -.PHONY: clean-stage1-gas maybe-clean-stage1-gas -maybe-all-stage1-gas: -maybe-clean-stage1-gas: -@if gas-bootstrap -maybe-all-stage1-gas: all-stage1-gas -all-stage1: all-stage1-gas -TARGET-stage1-gas = $(TARGET-gas) -all-stage1-gas: configure-stage1-gas - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-gas) - -maybe-clean-stage1-gas: clean-stage1-gas -clean-stage1: clean-stage1-gas -clean-stage1-gas: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/gas/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-gas/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif gas-bootstrap - - -.PHONY: all-stage2-gas maybe-all-stage2-gas -.PHONY: clean-stage2-gas maybe-clean-stage2-gas -maybe-all-stage2-gas: -maybe-clean-stage2-gas: -@if gas-bootstrap -maybe-all-stage2-gas: all-stage2-gas -all-stage2: all-stage2-gas -TARGET-stage2-gas = $(TARGET-gas) -all-stage2-gas: configure-stage2-gas - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-gas) - -maybe-clean-stage2-gas: clean-stage2-gas -clean-stage2: clean-stage2-gas -clean-stage2-gas: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/gas/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-gas/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gas-bootstrap - - -.PHONY: all-stage3-gas maybe-all-stage3-gas -.PHONY: clean-stage3-gas maybe-clean-stage3-gas -maybe-all-stage3-gas: -maybe-clean-stage3-gas: -@if gas-bootstrap -maybe-all-stage3-gas: all-stage3-gas -all-stage3: all-stage3-gas -TARGET-stage3-gas = $(TARGET-gas) -all-stage3-gas: configure-stage3-gas - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-gas) - -maybe-clean-stage3-gas: clean-stage3-gas -clean-stage3: clean-stage3-gas -clean-stage3-gas: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/gas/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-gas/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gas-bootstrap - - -.PHONY: all-stage4-gas maybe-all-stage4-gas -.PHONY: clean-stage4-gas maybe-clean-stage4-gas -maybe-all-stage4-gas: -maybe-clean-stage4-gas: -@if gas-bootstrap -maybe-all-stage4-gas: all-stage4-gas -all-stage4: all-stage4-gas -TARGET-stage4-gas = $(TARGET-gas) -all-stage4-gas: configure-stage4-gas - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-gas) - -maybe-clean-stage4-gas: clean-stage4-gas -clean-stage4: clean-stage4-gas -clean-stage4-gas: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/gas/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-gas/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gas-bootstrap - - -.PHONY: all-stageprofile-gas maybe-all-stageprofile-gas -.PHONY: clean-stageprofile-gas maybe-clean-stageprofile-gas -maybe-all-stageprofile-gas: -maybe-clean-stageprofile-gas: -@if gas-bootstrap -maybe-all-stageprofile-gas: all-stageprofile-gas -all-stageprofile: all-stageprofile-gas -TARGET-stageprofile-gas = $(TARGET-gas) -all-stageprofile-gas: configure-stageprofile-gas - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-gas) - -maybe-clean-stageprofile-gas: clean-stageprofile-gas -clean-stageprofile: clean-stageprofile-gas -clean-stageprofile-gas: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/gas/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-gas/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gas-bootstrap - - -.PHONY: all-stagefeedback-gas maybe-all-stagefeedback-gas -.PHONY: clean-stagefeedback-gas maybe-clean-stagefeedback-gas -maybe-all-stagefeedback-gas: -maybe-clean-stagefeedback-gas: -@if gas-bootstrap -maybe-all-stagefeedback-gas: all-stagefeedback-gas -all-stagefeedback: all-stagefeedback-gas -TARGET-stagefeedback-gas = $(TARGET-gas) -all-stagefeedback-gas: configure-stagefeedback-gas - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-gas) - -maybe-clean-stagefeedback-gas: clean-stagefeedback-gas -clean-stagefeedback: clean-stagefeedback-gas -clean-stagefeedback-gas: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/gas/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-gas/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gas-bootstrap - - - - - -.PHONY: check-gas maybe-check-gas -maybe-check-gas: -@if gas -maybe-check-gas: check-gas - -check-gas: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gas - -.PHONY: install-gas maybe-install-gas -maybe-install-gas: -@if gas -maybe-install-gas: install-gas - -install-gas: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gas - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gas info-gas -maybe-info-gas: -@if gas -maybe-info-gas: info-gas - -info-gas: \ - configure-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gas - -.PHONY: maybe-dvi-gas dvi-gas -maybe-dvi-gas: -@if gas -maybe-dvi-gas: dvi-gas - -dvi-gas: \ - configure-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gas - -.PHONY: maybe-pdf-gas pdf-gas -maybe-pdf-gas: -@if gas -maybe-pdf-gas: pdf-gas - -pdf-gas: \ - configure-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gas - -.PHONY: maybe-html-gas html-gas -maybe-html-gas: -@if gas -maybe-html-gas: html-gas - -html-gas: \ - configure-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gas - -.PHONY: maybe-TAGS-gas TAGS-gas -maybe-TAGS-gas: -@if gas -maybe-TAGS-gas: TAGS-gas - -TAGS-gas: \ - configure-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gas - -.PHONY: maybe-install-info-gas install-info-gas -maybe-install-info-gas: -@if gas -maybe-install-info-gas: install-info-gas - -install-info-gas: \ - configure-gas \ - info-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gas - -.PHONY: maybe-install-pdf-gas install-pdf-gas -maybe-install-pdf-gas: -@if gas -maybe-install-pdf-gas: install-pdf-gas - -install-pdf-gas: \ - configure-gas \ - pdf-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gas - -.PHONY: maybe-install-html-gas install-html-gas -maybe-install-html-gas: -@if gas -maybe-install-html-gas: install-html-gas - -install-html-gas: \ - configure-gas \ - html-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gas - -.PHONY: maybe-installcheck-gas installcheck-gas -maybe-installcheck-gas: -@if gas -maybe-installcheck-gas: installcheck-gas - -installcheck-gas: \ - configure-gas - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gas - -.PHONY: maybe-mostlyclean-gas mostlyclean-gas -maybe-mostlyclean-gas: -@if gas -maybe-mostlyclean-gas: mostlyclean-gas - -mostlyclean-gas: - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gas - -.PHONY: maybe-clean-gas clean-gas -maybe-clean-gas: -@if gas -maybe-clean-gas: clean-gas - -clean-gas: - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gas - -.PHONY: maybe-distclean-gas distclean-gas -maybe-distclean-gas: -@if gas -maybe-distclean-gas: distclean-gas - -distclean-gas: - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gas - -.PHONY: maybe-maintainer-clean-gas maintainer-clean-gas -maybe-maintainer-clean-gas: -@if gas -maybe-maintainer-clean-gas: maintainer-clean-gas - -maintainer-clean-gas: - @[ -f ./gas/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gas" ; \ - (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gas - - - -.PHONY: configure-gcc maybe-configure-gcc -maybe-configure-gcc: -@if gcc-bootstrap -configure-gcc: stage_current -@endif gcc-bootstrap -@if gcc -maybe-configure-gcc: configure-gcc -configure-gcc: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gcc; \ - cd "$(HOST_SUBDIR)/gcc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gcc - - - -.PHONY: configure-stage1-gcc maybe-configure-stage1-gcc -maybe-configure-stage1-gcc: -@if gcc-bootstrap -maybe-configure-stage1-gcc: configure-stage1-gcc -configure-stage1-gcc: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/gcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - cd $(HOST_SUBDIR)/gcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif gcc-bootstrap - -.PHONY: configure-stage2-gcc maybe-configure-stage2-gcc -maybe-configure-stage2-gcc: -@if gcc-bootstrap -maybe-configure-stage2-gcc: configure-stage2-gcc -configure-stage2-gcc: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/gcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - cd $(HOST_SUBDIR)/gcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif gcc-bootstrap - -.PHONY: configure-stage3-gcc maybe-configure-stage3-gcc -maybe-configure-stage3-gcc: -@if gcc-bootstrap -maybe-configure-stage3-gcc: configure-stage3-gcc -configure-stage3-gcc: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/gcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - cd $(HOST_SUBDIR)/gcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif gcc-bootstrap - -.PHONY: configure-stage4-gcc maybe-configure-stage4-gcc -maybe-configure-stage4-gcc: -@if gcc-bootstrap -maybe-configure-stage4-gcc: configure-stage4-gcc -configure-stage4-gcc: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/gcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - cd $(HOST_SUBDIR)/gcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif gcc-bootstrap - -.PHONY: configure-stageprofile-gcc maybe-configure-stageprofile-gcc -maybe-configure-stageprofile-gcc: -@if gcc-bootstrap -maybe-configure-stageprofile-gcc: configure-stageprofile-gcc -configure-stageprofile-gcc: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/gcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - cd $(HOST_SUBDIR)/gcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif gcc-bootstrap - -.PHONY: configure-stagefeedback-gcc maybe-configure-stagefeedback-gcc -maybe-configure-stagefeedback-gcc: -@if gcc-bootstrap -maybe-configure-stagefeedback-gcc: configure-stagefeedback-gcc -configure-stagefeedback-gcc: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/gcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - cd $(HOST_SUBDIR)/gcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif gcc-bootstrap - - - - - -.PHONY: all-gcc maybe-all-gcc -maybe-all-gcc: -@if gcc-bootstrap -all-gcc: stage_current -@endif gcc-bootstrap -@if gcc -TARGET-gcc=all -maybe-all-gcc: all-gcc -all-gcc: configure-gcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) \ - $(TARGET-gcc)) -@endif gcc - - - -.PHONY: all-stage1-gcc maybe-all-stage1-gcc -.PHONY: clean-stage1-gcc maybe-clean-stage1-gcc -maybe-all-stage1-gcc: -maybe-clean-stage1-gcc: -@if gcc-bootstrap -maybe-all-stage1-gcc: all-stage1-gcc -all-stage1: all-stage1-gcc -TARGET-stage1-gcc = $(TARGET-gcc) -all-stage1-gcc: configure-stage1-gcc - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-gcc) - -maybe-clean-stage1-gcc: clean-stage1-gcc -clean-stage1: clean-stage1-gcc -clean-stage1-gcc: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/gcc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-gcc/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(EXTRA_GCC_FLAGS) clean -@endif gcc-bootstrap - - -.PHONY: all-stage2-gcc maybe-all-stage2-gcc -.PHONY: clean-stage2-gcc maybe-clean-stage2-gcc -maybe-all-stage2-gcc: -maybe-clean-stage2-gcc: -@if gcc-bootstrap -maybe-all-stage2-gcc: all-stage2-gcc -all-stage2: all-stage2-gcc -TARGET-stage2-gcc = $(TARGET-gcc) -all-stage2-gcc: configure-stage2-gcc - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-gcc) - -maybe-clean-stage2-gcc: clean-stage2-gcc -clean-stage2: clean-stage2-gcc -clean-stage2-gcc: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/gcc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-gcc/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - $(EXTRA_GCC_FLAGS) clean -@endif gcc-bootstrap - - -.PHONY: all-stage3-gcc maybe-all-stage3-gcc -.PHONY: clean-stage3-gcc maybe-clean-stage3-gcc -maybe-all-stage3-gcc: -maybe-clean-stage3-gcc: -@if gcc-bootstrap -maybe-all-stage3-gcc: all-stage3-gcc -all-stage3: all-stage3-gcc -TARGET-stage3-gcc = $(TARGET-gcc) -all-stage3-gcc: configure-stage3-gcc - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-gcc) - -maybe-clean-stage3-gcc: clean-stage3-gcc -clean-stage3: clean-stage3-gcc -clean-stage3-gcc: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/gcc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-gcc/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - $(EXTRA_GCC_FLAGS) clean -@endif gcc-bootstrap - - -.PHONY: all-stage4-gcc maybe-all-stage4-gcc -.PHONY: clean-stage4-gcc maybe-clean-stage4-gcc -maybe-all-stage4-gcc: -maybe-clean-stage4-gcc: -@if gcc-bootstrap -maybe-all-stage4-gcc: all-stage4-gcc -all-stage4: all-stage4-gcc -TARGET-stage4-gcc = $(TARGET-gcc) -all-stage4-gcc: configure-stage4-gcc - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-gcc) - -maybe-clean-stage4-gcc: clean-stage4-gcc -clean-stage4: clean-stage4-gcc -clean-stage4-gcc: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/gcc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-gcc/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - $(EXTRA_GCC_FLAGS) clean -@endif gcc-bootstrap - - -.PHONY: all-stageprofile-gcc maybe-all-stageprofile-gcc -.PHONY: clean-stageprofile-gcc maybe-clean-stageprofile-gcc -maybe-all-stageprofile-gcc: -maybe-clean-stageprofile-gcc: -@if gcc-bootstrap -maybe-all-stageprofile-gcc: all-stageprofile-gcc -all-stageprofile: all-stageprofile-gcc -TARGET-stageprofile-gcc = $(TARGET-gcc) -all-stageprofile-gcc: configure-stageprofile-gcc - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-gcc) - -maybe-clean-stageprofile-gcc: clean-stageprofile-gcc -clean-stageprofile: clean-stageprofile-gcc -clean-stageprofile-gcc: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/gcc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-gcc/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - $(EXTRA_GCC_FLAGS) clean -@endif gcc-bootstrap - - -.PHONY: all-stagefeedback-gcc maybe-all-stagefeedback-gcc -.PHONY: clean-stagefeedback-gcc maybe-clean-stagefeedback-gcc -maybe-all-stagefeedback-gcc: -maybe-clean-stagefeedback-gcc: -@if gcc-bootstrap -maybe-all-stagefeedback-gcc: all-stagefeedback-gcc -all-stagefeedback: all-stagefeedback-gcc -TARGET-stagefeedback-gcc = $(TARGET-gcc) -all-stagefeedback-gcc: configure-stagefeedback-gcc - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-gcc) - -maybe-clean-stagefeedback-gcc: clean-stagefeedback-gcc -clean-stagefeedback: clean-stagefeedback-gcc -clean-stagefeedback-gcc: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/gcc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-gcc/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - $(EXTRA_GCC_FLAGS) clean -@endif gcc-bootstrap - - - - - -.PHONY: check-gcc maybe-check-gcc -maybe-check-gcc: -@if gcc -maybe-check-gcc: check-gcc - -check-gcc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) check) - -@endif gcc - -.PHONY: install-gcc maybe-install-gcc -maybe-install-gcc: -@if gcc -maybe-install-gcc: install-gcc - -install-gcc: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) install) - -@endif gcc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gcc info-gcc -maybe-info-gcc: -@if gcc -maybe-info-gcc: info-gcc - -info-gcc: \ - configure-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-dvi-gcc dvi-gcc -maybe-dvi-gcc: -@if gcc -maybe-dvi-gcc: dvi-gcc - -dvi-gcc: \ - configure-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-pdf-gcc pdf-gcc -maybe-pdf-gcc: -@if gcc -maybe-pdf-gcc: pdf-gcc - -pdf-gcc: \ - configure-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-html-gcc html-gcc -maybe-html-gcc: -@if gcc -maybe-html-gcc: html-gcc - -html-gcc: \ - configure-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-TAGS-gcc TAGS-gcc -maybe-TAGS-gcc: -@if gcc -maybe-TAGS-gcc: TAGS-gcc - -TAGS-gcc: \ - configure-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-install-info-gcc install-info-gcc -maybe-install-info-gcc: -@if gcc -maybe-install-info-gcc: install-info-gcc - -install-info-gcc: \ - configure-gcc \ - info-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-install-pdf-gcc install-pdf-gcc -maybe-install-pdf-gcc: -@if gcc -maybe-install-pdf-gcc: install-pdf-gcc - -install-pdf-gcc: \ - configure-gcc \ - pdf-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-install-html-gcc install-html-gcc -maybe-install-html-gcc: -@if gcc -maybe-install-html-gcc: install-html-gcc - -install-html-gcc: \ - configure-gcc \ - html-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-installcheck-gcc installcheck-gcc -maybe-installcheck-gcc: -@if gcc -maybe-installcheck-gcc: installcheck-gcc - -installcheck-gcc: \ - configure-gcc - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-mostlyclean-gcc mostlyclean-gcc -maybe-mostlyclean-gcc: -@if gcc -maybe-mostlyclean-gcc: mostlyclean-gcc - -mostlyclean-gcc: - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-clean-gcc clean-gcc -maybe-clean-gcc: -@if gcc -maybe-clean-gcc: clean-gcc - -clean-gcc: - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-distclean-gcc distclean-gcc -maybe-distclean-gcc: -@if gcc -maybe-distclean-gcc: distclean-gcc - -distclean-gcc: - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gcc - -.PHONY: maybe-maintainer-clean-gcc maintainer-clean-gcc -maybe-maintainer-clean-gcc: -@if gcc -maybe-maintainer-clean-gcc: maintainer-clean-gcc - -maintainer-clean-gcc: - @[ -f ./gcc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gcc" ; \ - (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gcc - - - -.PHONY: configure-gawk maybe-configure-gawk -maybe-configure-gawk: -@if gcc-bootstrap -configure-gawk: stage_current -@endif gcc-bootstrap -@if gawk -maybe-configure-gawk: configure-gawk -configure-gawk: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gawk/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gawk ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gawk; \ - cd "$(HOST_SUBDIR)/gawk" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gawk/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gawk"; \ - libsrcdir="$$s/gawk"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gawk - - - - - -.PHONY: all-gawk maybe-all-gawk -maybe-all-gawk: -@if gcc-bootstrap -all-gawk: stage_current -@endif gcc-bootstrap -@if gawk -TARGET-gawk=all -maybe-all-gawk: all-gawk -all-gawk: configure-gawk - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gawk)) -@endif gawk - - - - -.PHONY: check-gawk maybe-check-gawk -maybe-check-gawk: -@if gawk -maybe-check-gawk: check-gawk - -check-gawk: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gawk - -.PHONY: install-gawk maybe-install-gawk -maybe-install-gawk: -@if gawk -maybe-install-gawk: install-gawk - -install-gawk: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gawk - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gawk info-gawk -maybe-info-gawk: -@if gawk -maybe-info-gawk: info-gawk - -info-gawk: \ - configure-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-dvi-gawk dvi-gawk -maybe-dvi-gawk: -@if gawk -maybe-dvi-gawk: dvi-gawk - -dvi-gawk: \ - configure-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-pdf-gawk pdf-gawk -maybe-pdf-gawk: -@if gawk -maybe-pdf-gawk: pdf-gawk - -pdf-gawk: \ - configure-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-html-gawk html-gawk -maybe-html-gawk: -@if gawk -maybe-html-gawk: html-gawk - -html-gawk: \ - configure-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-TAGS-gawk TAGS-gawk -maybe-TAGS-gawk: -@if gawk -maybe-TAGS-gawk: TAGS-gawk - -TAGS-gawk: \ - configure-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-install-info-gawk install-info-gawk -maybe-install-info-gawk: -@if gawk -maybe-install-info-gawk: install-info-gawk - -install-info-gawk: \ - configure-gawk \ - info-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-install-pdf-gawk install-pdf-gawk -maybe-install-pdf-gawk: -@if gawk -maybe-install-pdf-gawk: install-pdf-gawk - -install-pdf-gawk: \ - configure-gawk \ - pdf-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-install-html-gawk install-html-gawk -maybe-install-html-gawk: -@if gawk -maybe-install-html-gawk: install-html-gawk - -install-html-gawk: \ - configure-gawk \ - html-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-installcheck-gawk installcheck-gawk -maybe-installcheck-gawk: -@if gawk -maybe-installcheck-gawk: installcheck-gawk - -installcheck-gawk: \ - configure-gawk - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-mostlyclean-gawk mostlyclean-gawk -maybe-mostlyclean-gawk: -@if gawk -maybe-mostlyclean-gawk: mostlyclean-gawk - -mostlyclean-gawk: - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-clean-gawk clean-gawk -maybe-clean-gawk: -@if gawk -maybe-clean-gawk: clean-gawk - -clean-gawk: - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-distclean-gawk distclean-gawk -maybe-distclean-gawk: -@if gawk -maybe-distclean-gawk: distclean-gawk - -distclean-gawk: - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gawk - -.PHONY: maybe-maintainer-clean-gawk maintainer-clean-gawk -maybe-maintainer-clean-gawk: -@if gawk -maybe-maintainer-clean-gawk: maintainer-clean-gawk - -maintainer-clean-gawk: - @: $(MAKE); $(unstage) - @[ -f ./gawk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gawk" ; \ - (cd $(HOST_SUBDIR)/gawk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gawk - - - -.PHONY: configure-gettext maybe-configure-gettext -maybe-configure-gettext: -@if gcc-bootstrap -configure-gettext: stage_current -@endif gcc-bootstrap -@if gettext -maybe-configure-gettext: configure-gettext -configure-gettext: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gettext/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gettext ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gettext; \ - cd "$(HOST_SUBDIR)/gettext" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gettext/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gettext"; \ - libsrcdir="$$s/gettext"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gettext - - - - - -.PHONY: all-gettext maybe-all-gettext -maybe-all-gettext: -@if gcc-bootstrap -all-gettext: stage_current -@endif gcc-bootstrap -@if gettext -TARGET-gettext=all -maybe-all-gettext: all-gettext -all-gettext: configure-gettext - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gettext)) -@endif gettext - - - - -.PHONY: check-gettext maybe-check-gettext -maybe-check-gettext: -@if gettext -maybe-check-gettext: check-gettext - -check-gettext: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gettext - -.PHONY: install-gettext maybe-install-gettext -maybe-install-gettext: -@if gettext -maybe-install-gettext: install-gettext - -install-gettext: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gettext - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gettext info-gettext -maybe-info-gettext: -@if gettext -maybe-info-gettext: info-gettext - -info-gettext: \ - configure-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-dvi-gettext dvi-gettext -maybe-dvi-gettext: -@if gettext -maybe-dvi-gettext: dvi-gettext - -dvi-gettext: \ - configure-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-pdf-gettext pdf-gettext -maybe-pdf-gettext: -@if gettext -maybe-pdf-gettext: pdf-gettext - -pdf-gettext: \ - configure-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-html-gettext html-gettext -maybe-html-gettext: -@if gettext -maybe-html-gettext: html-gettext - -html-gettext: \ - configure-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-TAGS-gettext TAGS-gettext -maybe-TAGS-gettext: -@if gettext -maybe-TAGS-gettext: TAGS-gettext - -TAGS-gettext: \ - configure-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-install-info-gettext install-info-gettext -maybe-install-info-gettext: -@if gettext -maybe-install-info-gettext: install-info-gettext - -install-info-gettext: \ - configure-gettext \ - info-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-install-pdf-gettext install-pdf-gettext -maybe-install-pdf-gettext: -@if gettext -maybe-install-pdf-gettext: install-pdf-gettext - -install-pdf-gettext: \ - configure-gettext \ - pdf-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-install-html-gettext install-html-gettext -maybe-install-html-gettext: -@if gettext -maybe-install-html-gettext: install-html-gettext - -install-html-gettext: \ - configure-gettext \ - html-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-installcheck-gettext installcheck-gettext -maybe-installcheck-gettext: -@if gettext -maybe-installcheck-gettext: installcheck-gettext - -installcheck-gettext: \ - configure-gettext - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-mostlyclean-gettext mostlyclean-gettext -maybe-mostlyclean-gettext: -@if gettext -maybe-mostlyclean-gettext: mostlyclean-gettext - -mostlyclean-gettext: - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-clean-gettext clean-gettext -maybe-clean-gettext: -@if gettext -maybe-clean-gettext: clean-gettext - -clean-gettext: - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-distclean-gettext distclean-gettext -maybe-distclean-gettext: -@if gettext -maybe-distclean-gettext: distclean-gettext - -distclean-gettext: - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gettext - -.PHONY: maybe-maintainer-clean-gettext maintainer-clean-gettext -maybe-maintainer-clean-gettext: -@if gettext -maybe-maintainer-clean-gettext: maintainer-clean-gettext - -maintainer-clean-gettext: - @: $(MAKE); $(unstage) - @[ -f ./gettext/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gettext" ; \ - (cd $(HOST_SUBDIR)/gettext && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gettext - - - -.PHONY: configure-gmp maybe-configure-gmp -maybe-configure-gmp: -@if gcc-bootstrap -configure-gmp: stage_current -@endif gcc-bootstrap -@if gmp -maybe-configure-gmp: configure-gmp -configure-gmp: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gmp; \ - cd "$(HOST_SUBDIR)/gmp" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared \ - || exit 1 -@endif gmp - - - -.PHONY: configure-stage1-gmp maybe-configure-stage1-gmp -maybe-configure-stage1-gmp: -@if gmp-bootstrap -maybe-configure-stage1-gmp: configure-stage1-gmp -configure-stage1-gmp: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/gmp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - cd $(HOST_SUBDIR)/gmp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared -@endif gmp-bootstrap - -.PHONY: configure-stage2-gmp maybe-configure-stage2-gmp -maybe-configure-stage2-gmp: -@if gmp-bootstrap -maybe-configure-stage2-gmp: configure-stage2-gmp -configure-stage2-gmp: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/gmp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - cd $(HOST_SUBDIR)/gmp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared -@endif gmp-bootstrap - -.PHONY: configure-stage3-gmp maybe-configure-stage3-gmp -maybe-configure-stage3-gmp: -@if gmp-bootstrap -maybe-configure-stage3-gmp: configure-stage3-gmp -configure-stage3-gmp: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/gmp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - cd $(HOST_SUBDIR)/gmp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared -@endif gmp-bootstrap - -.PHONY: configure-stage4-gmp maybe-configure-stage4-gmp -maybe-configure-stage4-gmp: -@if gmp-bootstrap -maybe-configure-stage4-gmp: configure-stage4-gmp -configure-stage4-gmp: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/gmp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - cd $(HOST_SUBDIR)/gmp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared -@endif gmp-bootstrap - -.PHONY: configure-stageprofile-gmp maybe-configure-stageprofile-gmp -maybe-configure-stageprofile-gmp: -@if gmp-bootstrap -maybe-configure-stageprofile-gmp: configure-stageprofile-gmp -configure-stageprofile-gmp: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/gmp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - cd $(HOST_SUBDIR)/gmp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared -@endif gmp-bootstrap - -.PHONY: configure-stagefeedback-gmp maybe-configure-stagefeedback-gmp -maybe-configure-stagefeedback-gmp: -@if gmp-bootstrap -maybe-configure-stagefeedback-gmp: configure-stagefeedback-gmp -configure-stagefeedback-gmp: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/gmp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - cd $(HOST_SUBDIR)/gmp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared -@endif gmp-bootstrap - - - - - -.PHONY: all-gmp maybe-all-gmp -maybe-all-gmp: -@if gcc-bootstrap -all-gmp: stage_current -@endif gcc-bootstrap -@if gmp -TARGET-gmp=all -maybe-all-gmp: all-gmp -all-gmp: configure-gmp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gmp)) -@endif gmp - - - -.PHONY: all-stage1-gmp maybe-all-stage1-gmp -.PHONY: clean-stage1-gmp maybe-clean-stage1-gmp -maybe-all-stage1-gmp: -maybe-clean-stage1-gmp: -@if gmp-bootstrap -maybe-all-stage1-gmp: all-stage1-gmp -all-stage1: all-stage1-gmp -TARGET-stage1-gmp = $(TARGET-gmp) -all-stage1-gmp: configure-stage1-gmp - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-gmp) - -maybe-clean-stage1-gmp: clean-stage1-gmp -clean-stage1: clean-stage1-gmp -clean-stage1-gmp: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/gmp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-gmp/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif gmp-bootstrap - - -.PHONY: all-stage2-gmp maybe-all-stage2-gmp -.PHONY: clean-stage2-gmp maybe-clean-stage2-gmp -maybe-all-stage2-gmp: -maybe-clean-stage2-gmp: -@if gmp-bootstrap -maybe-all-stage2-gmp: all-stage2-gmp -all-stage2: all-stage2-gmp -TARGET-stage2-gmp = $(TARGET-gmp) -all-stage2-gmp: configure-stage2-gmp - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-gmp) - -maybe-clean-stage2-gmp: clean-stage2-gmp -clean-stage2: clean-stage2-gmp -clean-stage2-gmp: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/gmp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-gmp/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gmp-bootstrap - - -.PHONY: all-stage3-gmp maybe-all-stage3-gmp -.PHONY: clean-stage3-gmp maybe-clean-stage3-gmp -maybe-all-stage3-gmp: -maybe-clean-stage3-gmp: -@if gmp-bootstrap -maybe-all-stage3-gmp: all-stage3-gmp -all-stage3: all-stage3-gmp -TARGET-stage3-gmp = $(TARGET-gmp) -all-stage3-gmp: configure-stage3-gmp - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-gmp) - -maybe-clean-stage3-gmp: clean-stage3-gmp -clean-stage3: clean-stage3-gmp -clean-stage3-gmp: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/gmp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-gmp/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gmp-bootstrap - - -.PHONY: all-stage4-gmp maybe-all-stage4-gmp -.PHONY: clean-stage4-gmp maybe-clean-stage4-gmp -maybe-all-stage4-gmp: -maybe-clean-stage4-gmp: -@if gmp-bootstrap -maybe-all-stage4-gmp: all-stage4-gmp -all-stage4: all-stage4-gmp -TARGET-stage4-gmp = $(TARGET-gmp) -all-stage4-gmp: configure-stage4-gmp - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-gmp) - -maybe-clean-stage4-gmp: clean-stage4-gmp -clean-stage4: clean-stage4-gmp -clean-stage4-gmp: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/gmp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-gmp/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gmp-bootstrap - - -.PHONY: all-stageprofile-gmp maybe-all-stageprofile-gmp -.PHONY: clean-stageprofile-gmp maybe-clean-stageprofile-gmp -maybe-all-stageprofile-gmp: -maybe-clean-stageprofile-gmp: -@if gmp-bootstrap -maybe-all-stageprofile-gmp: all-stageprofile-gmp -all-stageprofile: all-stageprofile-gmp -TARGET-stageprofile-gmp = $(TARGET-gmp) -all-stageprofile-gmp: configure-stageprofile-gmp - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-gmp) - -maybe-clean-stageprofile-gmp: clean-stageprofile-gmp -clean-stageprofile: clean-stageprofile-gmp -clean-stageprofile-gmp: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/gmp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-gmp/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gmp-bootstrap - - -.PHONY: all-stagefeedback-gmp maybe-all-stagefeedback-gmp -.PHONY: clean-stagefeedback-gmp maybe-clean-stagefeedback-gmp -maybe-all-stagefeedback-gmp: -maybe-clean-stagefeedback-gmp: -@if gmp-bootstrap -maybe-all-stagefeedback-gmp: all-stagefeedback-gmp -all-stagefeedback: all-stagefeedback-gmp -TARGET-stagefeedback-gmp = $(TARGET-gmp) -all-stagefeedback-gmp: configure-stagefeedback-gmp - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-gmp) - -maybe-clean-stagefeedback-gmp: clean-stagefeedback-gmp -clean-stagefeedback: clean-stagefeedback-gmp -clean-stagefeedback-gmp: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/gmp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-gmp/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gmp-bootstrap - - - - - -.PHONY: check-gmp maybe-check-gmp -maybe-check-gmp: -@if gmp -maybe-check-gmp: check-gmp - -check-gmp: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gmp - -.PHONY: install-gmp maybe-install-gmp -maybe-install-gmp: -@if gmp -maybe-install-gmp: install-gmp - -install-gmp: - -@endif gmp - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gmp info-gmp -maybe-info-gmp: -@if gmp -maybe-info-gmp: info-gmp - -info-gmp: \ - configure-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-dvi-gmp dvi-gmp -maybe-dvi-gmp: -@if gmp -maybe-dvi-gmp: dvi-gmp - -dvi-gmp: \ - configure-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-pdf-gmp pdf-gmp -maybe-pdf-gmp: -@if gmp -maybe-pdf-gmp: pdf-gmp - -pdf-gmp: \ - configure-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-html-gmp html-gmp -maybe-html-gmp: -@if gmp -maybe-html-gmp: html-gmp - -html-gmp: \ - configure-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-TAGS-gmp TAGS-gmp -maybe-TAGS-gmp: -@if gmp -maybe-TAGS-gmp: TAGS-gmp - -TAGS-gmp: \ - configure-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-install-info-gmp install-info-gmp -maybe-install-info-gmp: -@if gmp -maybe-install-info-gmp: install-info-gmp - -install-info-gmp: \ - configure-gmp \ - info-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-install-pdf-gmp install-pdf-gmp -maybe-install-pdf-gmp: -@if gmp -maybe-install-pdf-gmp: install-pdf-gmp - -install-pdf-gmp: \ - configure-gmp \ - pdf-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-install-html-gmp install-html-gmp -maybe-install-html-gmp: -@if gmp -maybe-install-html-gmp: install-html-gmp - -install-html-gmp: \ - configure-gmp \ - html-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-installcheck-gmp installcheck-gmp -maybe-installcheck-gmp: -@if gmp -maybe-installcheck-gmp: installcheck-gmp - -installcheck-gmp: \ - configure-gmp - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-mostlyclean-gmp mostlyclean-gmp -maybe-mostlyclean-gmp: -@if gmp -maybe-mostlyclean-gmp: mostlyclean-gmp - -mostlyclean-gmp: - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-clean-gmp clean-gmp -maybe-clean-gmp: -@if gmp -maybe-clean-gmp: clean-gmp - -clean-gmp: - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-distclean-gmp distclean-gmp -maybe-distclean-gmp: -@if gmp -maybe-distclean-gmp: distclean-gmp - -distclean-gmp: - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gmp - -.PHONY: maybe-maintainer-clean-gmp maintainer-clean-gmp -maybe-maintainer-clean-gmp: -@if gmp -maybe-maintainer-clean-gmp: maintainer-clean-gmp - -maintainer-clean-gmp: - @[ -f ./gmp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gmp" ; \ - (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gmp - - - -.PHONY: configure-mpfr maybe-configure-mpfr -maybe-configure-mpfr: -@if gcc-bootstrap -configure-mpfr: stage_current -@endif gcc-bootstrap -@if mpfr -maybe-configure-mpfr: configure-mpfr -configure-mpfr: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/mpfr; \ - cd "$(HOST_SUBDIR)/mpfr" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared @extra_mpfr_configure_flags@ \ - || exit 1 -@endif mpfr - - - -.PHONY: configure-stage1-mpfr maybe-configure-stage1-mpfr -maybe-configure-stage1-mpfr: -@if mpfr-bootstrap -maybe-configure-stage1-mpfr: configure-stage1-mpfr -configure-stage1-mpfr: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/mpfr ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - cd $(HOST_SUBDIR)/mpfr || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpfr_configure_flags@ -@endif mpfr-bootstrap - -.PHONY: configure-stage2-mpfr maybe-configure-stage2-mpfr -maybe-configure-stage2-mpfr: -@if mpfr-bootstrap -maybe-configure-stage2-mpfr: configure-stage2-mpfr -configure-stage2-mpfr: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/mpfr ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - cd $(HOST_SUBDIR)/mpfr || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpfr_configure_flags@ -@endif mpfr-bootstrap - -.PHONY: configure-stage3-mpfr maybe-configure-stage3-mpfr -maybe-configure-stage3-mpfr: -@if mpfr-bootstrap -maybe-configure-stage3-mpfr: configure-stage3-mpfr -configure-stage3-mpfr: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/mpfr ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - cd $(HOST_SUBDIR)/mpfr || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpfr_configure_flags@ -@endif mpfr-bootstrap - -.PHONY: configure-stage4-mpfr maybe-configure-stage4-mpfr -maybe-configure-stage4-mpfr: -@if mpfr-bootstrap -maybe-configure-stage4-mpfr: configure-stage4-mpfr -configure-stage4-mpfr: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/mpfr ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - cd $(HOST_SUBDIR)/mpfr || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpfr_configure_flags@ -@endif mpfr-bootstrap - -.PHONY: configure-stageprofile-mpfr maybe-configure-stageprofile-mpfr -maybe-configure-stageprofile-mpfr: -@if mpfr-bootstrap -maybe-configure-stageprofile-mpfr: configure-stageprofile-mpfr -configure-stageprofile-mpfr: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/mpfr ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - cd $(HOST_SUBDIR)/mpfr || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpfr_configure_flags@ -@endif mpfr-bootstrap - -.PHONY: configure-stagefeedback-mpfr maybe-configure-stagefeedback-mpfr -maybe-configure-stagefeedback-mpfr: -@if mpfr-bootstrap -maybe-configure-stagefeedback-mpfr: configure-stagefeedback-mpfr -configure-stagefeedback-mpfr: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/mpfr ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - cd $(HOST_SUBDIR)/mpfr || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpfr_configure_flags@ -@endif mpfr-bootstrap - - - - - -.PHONY: all-mpfr maybe-all-mpfr -maybe-all-mpfr: -@if gcc-bootstrap -all-mpfr: stage_current -@endif gcc-bootstrap -@if mpfr -TARGET-mpfr=all -maybe-all-mpfr: all-mpfr -all-mpfr: configure-mpfr - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-mpfr)) -@endif mpfr - - - -.PHONY: all-stage1-mpfr maybe-all-stage1-mpfr -.PHONY: clean-stage1-mpfr maybe-clean-stage1-mpfr -maybe-all-stage1-mpfr: -maybe-clean-stage1-mpfr: -@if mpfr-bootstrap -maybe-all-stage1-mpfr: all-stage1-mpfr -all-stage1: all-stage1-mpfr -TARGET-stage1-mpfr = $(TARGET-mpfr) -all-stage1-mpfr: configure-stage1-mpfr - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-mpfr) - -maybe-clean-stage1-mpfr: clean-stage1-mpfr -clean-stage1: clean-stage1-mpfr -clean-stage1-mpfr: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/mpfr/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-mpfr/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif mpfr-bootstrap - - -.PHONY: all-stage2-mpfr maybe-all-stage2-mpfr -.PHONY: clean-stage2-mpfr maybe-clean-stage2-mpfr -maybe-all-stage2-mpfr: -maybe-clean-stage2-mpfr: -@if mpfr-bootstrap -maybe-all-stage2-mpfr: all-stage2-mpfr -all-stage2: all-stage2-mpfr -TARGET-stage2-mpfr = $(TARGET-mpfr) -all-stage2-mpfr: configure-stage2-mpfr - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-mpfr) - -maybe-clean-stage2-mpfr: clean-stage2-mpfr -clean-stage2: clean-stage2-mpfr -clean-stage2-mpfr: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/mpfr/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-mpfr/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpfr-bootstrap - - -.PHONY: all-stage3-mpfr maybe-all-stage3-mpfr -.PHONY: clean-stage3-mpfr maybe-clean-stage3-mpfr -maybe-all-stage3-mpfr: -maybe-clean-stage3-mpfr: -@if mpfr-bootstrap -maybe-all-stage3-mpfr: all-stage3-mpfr -all-stage3: all-stage3-mpfr -TARGET-stage3-mpfr = $(TARGET-mpfr) -all-stage3-mpfr: configure-stage3-mpfr - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-mpfr) - -maybe-clean-stage3-mpfr: clean-stage3-mpfr -clean-stage3: clean-stage3-mpfr -clean-stage3-mpfr: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/mpfr/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-mpfr/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpfr-bootstrap - - -.PHONY: all-stage4-mpfr maybe-all-stage4-mpfr -.PHONY: clean-stage4-mpfr maybe-clean-stage4-mpfr -maybe-all-stage4-mpfr: -maybe-clean-stage4-mpfr: -@if mpfr-bootstrap -maybe-all-stage4-mpfr: all-stage4-mpfr -all-stage4: all-stage4-mpfr -TARGET-stage4-mpfr = $(TARGET-mpfr) -all-stage4-mpfr: configure-stage4-mpfr - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-mpfr) - -maybe-clean-stage4-mpfr: clean-stage4-mpfr -clean-stage4: clean-stage4-mpfr -clean-stage4-mpfr: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/mpfr/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-mpfr/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpfr-bootstrap - - -.PHONY: all-stageprofile-mpfr maybe-all-stageprofile-mpfr -.PHONY: clean-stageprofile-mpfr maybe-clean-stageprofile-mpfr -maybe-all-stageprofile-mpfr: -maybe-clean-stageprofile-mpfr: -@if mpfr-bootstrap -maybe-all-stageprofile-mpfr: all-stageprofile-mpfr -all-stageprofile: all-stageprofile-mpfr -TARGET-stageprofile-mpfr = $(TARGET-mpfr) -all-stageprofile-mpfr: configure-stageprofile-mpfr - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-mpfr) - -maybe-clean-stageprofile-mpfr: clean-stageprofile-mpfr -clean-stageprofile: clean-stageprofile-mpfr -clean-stageprofile-mpfr: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/mpfr/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-mpfr/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpfr-bootstrap - - -.PHONY: all-stagefeedback-mpfr maybe-all-stagefeedback-mpfr -.PHONY: clean-stagefeedback-mpfr maybe-clean-stagefeedback-mpfr -maybe-all-stagefeedback-mpfr: -maybe-clean-stagefeedback-mpfr: -@if mpfr-bootstrap -maybe-all-stagefeedback-mpfr: all-stagefeedback-mpfr -all-stagefeedback: all-stagefeedback-mpfr -TARGET-stagefeedback-mpfr = $(TARGET-mpfr) -all-stagefeedback-mpfr: configure-stagefeedback-mpfr - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-mpfr) - -maybe-clean-stagefeedback-mpfr: clean-stagefeedback-mpfr -clean-stagefeedback: clean-stagefeedback-mpfr -clean-stagefeedback-mpfr: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/mpfr/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-mpfr/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpfr-bootstrap - - - - - -.PHONY: check-mpfr maybe-check-mpfr -maybe-check-mpfr: -@if mpfr -maybe-check-mpfr: check-mpfr - -check-mpfr: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif mpfr - -.PHONY: install-mpfr maybe-install-mpfr -maybe-install-mpfr: -@if mpfr -maybe-install-mpfr: install-mpfr - -install-mpfr: - -@endif mpfr - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-mpfr info-mpfr -maybe-info-mpfr: -@if mpfr -maybe-info-mpfr: info-mpfr - -info-mpfr: \ - configure-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-dvi-mpfr dvi-mpfr -maybe-dvi-mpfr: -@if mpfr -maybe-dvi-mpfr: dvi-mpfr - -dvi-mpfr: \ - configure-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-pdf-mpfr pdf-mpfr -maybe-pdf-mpfr: -@if mpfr -maybe-pdf-mpfr: pdf-mpfr - -pdf-mpfr: \ - configure-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-html-mpfr html-mpfr -maybe-html-mpfr: -@if mpfr -maybe-html-mpfr: html-mpfr - -html-mpfr: \ - configure-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-TAGS-mpfr TAGS-mpfr -maybe-TAGS-mpfr: -@if mpfr -maybe-TAGS-mpfr: TAGS-mpfr - -TAGS-mpfr: \ - configure-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-install-info-mpfr install-info-mpfr -maybe-install-info-mpfr: -@if mpfr -maybe-install-info-mpfr: install-info-mpfr - -install-info-mpfr: \ - configure-mpfr \ - info-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-install-pdf-mpfr install-pdf-mpfr -maybe-install-pdf-mpfr: -@if mpfr -maybe-install-pdf-mpfr: install-pdf-mpfr - -install-pdf-mpfr: \ - configure-mpfr \ - pdf-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-install-html-mpfr install-html-mpfr -maybe-install-html-mpfr: -@if mpfr -maybe-install-html-mpfr: install-html-mpfr - -install-html-mpfr: \ - configure-mpfr \ - html-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-installcheck-mpfr installcheck-mpfr -maybe-installcheck-mpfr: -@if mpfr -maybe-installcheck-mpfr: installcheck-mpfr - -installcheck-mpfr: \ - configure-mpfr - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-mostlyclean-mpfr mostlyclean-mpfr -maybe-mostlyclean-mpfr: -@if mpfr -maybe-mostlyclean-mpfr: mostlyclean-mpfr - -mostlyclean-mpfr: - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-clean-mpfr clean-mpfr -maybe-clean-mpfr: -@if mpfr -maybe-clean-mpfr: clean-mpfr - -clean-mpfr: - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-distclean-mpfr distclean-mpfr -maybe-distclean-mpfr: -@if mpfr -maybe-distclean-mpfr: distclean-mpfr - -distclean-mpfr: - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif mpfr - -.PHONY: maybe-maintainer-clean-mpfr maintainer-clean-mpfr -maybe-maintainer-clean-mpfr: -@if mpfr -maybe-maintainer-clean-mpfr: maintainer-clean-mpfr - -maintainer-clean-mpfr: - @[ -f ./mpfr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in mpfr" ; \ - (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif mpfr - - - -.PHONY: configure-mpc maybe-configure-mpc -maybe-configure-mpc: -@if gcc-bootstrap -configure-mpc: stage_current -@endif gcc-bootstrap -@if mpc -maybe-configure-mpc: configure-mpc -configure-mpc: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/mpc; \ - cd "$(HOST_SUBDIR)/mpc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ - || exit 1 -@endif mpc - - - -.PHONY: configure-stage1-mpc maybe-configure-stage1-mpc -maybe-configure-stage1-mpc: -@if mpc-bootstrap -maybe-configure-stage1-mpc: configure-stage1-mpc -configure-stage1-mpc: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/mpc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - cd $(HOST_SUBDIR)/mpc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ -@endif mpc-bootstrap - -.PHONY: configure-stage2-mpc maybe-configure-stage2-mpc -maybe-configure-stage2-mpc: -@if mpc-bootstrap -maybe-configure-stage2-mpc: configure-stage2-mpc -configure-stage2-mpc: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/mpc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - cd $(HOST_SUBDIR)/mpc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ -@endif mpc-bootstrap - -.PHONY: configure-stage3-mpc maybe-configure-stage3-mpc -maybe-configure-stage3-mpc: -@if mpc-bootstrap -maybe-configure-stage3-mpc: configure-stage3-mpc -configure-stage3-mpc: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/mpc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - cd $(HOST_SUBDIR)/mpc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ -@endif mpc-bootstrap - -.PHONY: configure-stage4-mpc maybe-configure-stage4-mpc -maybe-configure-stage4-mpc: -@if mpc-bootstrap -maybe-configure-stage4-mpc: configure-stage4-mpc -configure-stage4-mpc: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/mpc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - cd $(HOST_SUBDIR)/mpc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ -@endif mpc-bootstrap - -.PHONY: configure-stageprofile-mpc maybe-configure-stageprofile-mpc -maybe-configure-stageprofile-mpc: -@if mpc-bootstrap -maybe-configure-stageprofile-mpc: configure-stageprofile-mpc -configure-stageprofile-mpc: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/mpc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - cd $(HOST_SUBDIR)/mpc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ -@endif mpc-bootstrap - -.PHONY: configure-stagefeedback-mpc maybe-configure-stagefeedback-mpc -maybe-configure-stagefeedback-mpc: -@if mpc-bootstrap -maybe-configure-stagefeedback-mpc: configure-stagefeedback-mpc -configure-stagefeedback-mpc: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/mpc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - cd $(HOST_SUBDIR)/mpc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ -@endif mpc-bootstrap - - - - - -.PHONY: all-mpc maybe-all-mpc -maybe-all-mpc: -@if gcc-bootstrap -all-mpc: stage_current -@endif gcc-bootstrap -@if mpc -TARGET-mpc=all -maybe-all-mpc: all-mpc -all-mpc: configure-mpc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-mpc)) -@endif mpc - - - -.PHONY: all-stage1-mpc maybe-all-stage1-mpc -.PHONY: clean-stage1-mpc maybe-clean-stage1-mpc -maybe-all-stage1-mpc: -maybe-clean-stage1-mpc: -@if mpc-bootstrap -maybe-all-stage1-mpc: all-stage1-mpc -all-stage1: all-stage1-mpc -TARGET-stage1-mpc = $(TARGET-mpc) -all-stage1-mpc: configure-stage1-mpc - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-mpc) - -maybe-clean-stage1-mpc: clean-stage1-mpc -clean-stage1: clean-stage1-mpc -clean-stage1-mpc: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/mpc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-mpc/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif mpc-bootstrap - - -.PHONY: all-stage2-mpc maybe-all-stage2-mpc -.PHONY: clean-stage2-mpc maybe-clean-stage2-mpc -maybe-all-stage2-mpc: -maybe-clean-stage2-mpc: -@if mpc-bootstrap -maybe-all-stage2-mpc: all-stage2-mpc -all-stage2: all-stage2-mpc -TARGET-stage2-mpc = $(TARGET-mpc) -all-stage2-mpc: configure-stage2-mpc - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-mpc) - -maybe-clean-stage2-mpc: clean-stage2-mpc -clean-stage2: clean-stage2-mpc -clean-stage2-mpc: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/mpc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-mpc/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpc-bootstrap - - -.PHONY: all-stage3-mpc maybe-all-stage3-mpc -.PHONY: clean-stage3-mpc maybe-clean-stage3-mpc -maybe-all-stage3-mpc: -maybe-clean-stage3-mpc: -@if mpc-bootstrap -maybe-all-stage3-mpc: all-stage3-mpc -all-stage3: all-stage3-mpc -TARGET-stage3-mpc = $(TARGET-mpc) -all-stage3-mpc: configure-stage3-mpc - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-mpc) - -maybe-clean-stage3-mpc: clean-stage3-mpc -clean-stage3: clean-stage3-mpc -clean-stage3-mpc: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/mpc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-mpc/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpc-bootstrap - - -.PHONY: all-stage4-mpc maybe-all-stage4-mpc -.PHONY: clean-stage4-mpc maybe-clean-stage4-mpc -maybe-all-stage4-mpc: -maybe-clean-stage4-mpc: -@if mpc-bootstrap -maybe-all-stage4-mpc: all-stage4-mpc -all-stage4: all-stage4-mpc -TARGET-stage4-mpc = $(TARGET-mpc) -all-stage4-mpc: configure-stage4-mpc - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-mpc) - -maybe-clean-stage4-mpc: clean-stage4-mpc -clean-stage4: clean-stage4-mpc -clean-stage4-mpc: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/mpc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-mpc/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpc-bootstrap - - -.PHONY: all-stageprofile-mpc maybe-all-stageprofile-mpc -.PHONY: clean-stageprofile-mpc maybe-clean-stageprofile-mpc -maybe-all-stageprofile-mpc: -maybe-clean-stageprofile-mpc: -@if mpc-bootstrap -maybe-all-stageprofile-mpc: all-stageprofile-mpc -all-stageprofile: all-stageprofile-mpc -TARGET-stageprofile-mpc = $(TARGET-mpc) -all-stageprofile-mpc: configure-stageprofile-mpc - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-mpc) - -maybe-clean-stageprofile-mpc: clean-stageprofile-mpc -clean-stageprofile: clean-stageprofile-mpc -clean-stageprofile-mpc: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/mpc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-mpc/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpc-bootstrap - - -.PHONY: all-stagefeedback-mpc maybe-all-stagefeedback-mpc -.PHONY: clean-stagefeedback-mpc maybe-clean-stagefeedback-mpc -maybe-all-stagefeedback-mpc: -maybe-clean-stagefeedback-mpc: -@if mpc-bootstrap -maybe-all-stagefeedback-mpc: all-stagefeedback-mpc -all-stagefeedback: all-stagefeedback-mpc -TARGET-stagefeedback-mpc = $(TARGET-mpc) -all-stagefeedback-mpc: configure-stagefeedback-mpc - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-mpc) - -maybe-clean-stagefeedback-mpc: clean-stagefeedback-mpc -clean-stagefeedback: clean-stagefeedback-mpc -clean-stagefeedback-mpc: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/mpc/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-mpc/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif mpc-bootstrap - - - - - -.PHONY: check-mpc maybe-check-mpc -maybe-check-mpc: -@if mpc -maybe-check-mpc: check-mpc - -check-mpc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif mpc - -.PHONY: install-mpc maybe-install-mpc -maybe-install-mpc: -@if mpc -maybe-install-mpc: install-mpc - -install-mpc: - -@endif mpc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-mpc info-mpc -maybe-info-mpc: -@if mpc -maybe-info-mpc: info-mpc - -info-mpc: \ - configure-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-dvi-mpc dvi-mpc -maybe-dvi-mpc: -@if mpc -maybe-dvi-mpc: dvi-mpc - -dvi-mpc: \ - configure-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-pdf-mpc pdf-mpc -maybe-pdf-mpc: -@if mpc -maybe-pdf-mpc: pdf-mpc - -pdf-mpc: \ - configure-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-html-mpc html-mpc -maybe-html-mpc: -@if mpc -maybe-html-mpc: html-mpc - -html-mpc: \ - configure-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-TAGS-mpc TAGS-mpc -maybe-TAGS-mpc: -@if mpc -maybe-TAGS-mpc: TAGS-mpc - -TAGS-mpc: \ - configure-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-install-info-mpc install-info-mpc -maybe-install-info-mpc: -@if mpc -maybe-install-info-mpc: install-info-mpc - -install-info-mpc: \ - configure-mpc \ - info-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-install-pdf-mpc install-pdf-mpc -maybe-install-pdf-mpc: -@if mpc -maybe-install-pdf-mpc: install-pdf-mpc - -install-pdf-mpc: \ - configure-mpc \ - pdf-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-install-html-mpc install-html-mpc -maybe-install-html-mpc: -@if mpc -maybe-install-html-mpc: install-html-mpc - -install-html-mpc: \ - configure-mpc \ - html-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-installcheck-mpc installcheck-mpc -maybe-installcheck-mpc: -@if mpc -maybe-installcheck-mpc: installcheck-mpc - -installcheck-mpc: \ - configure-mpc - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-mostlyclean-mpc mostlyclean-mpc -maybe-mostlyclean-mpc: -@if mpc -maybe-mostlyclean-mpc: mostlyclean-mpc - -mostlyclean-mpc: - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-clean-mpc clean-mpc -maybe-clean-mpc: -@if mpc -maybe-clean-mpc: clean-mpc - -clean-mpc: - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-distclean-mpc distclean-mpc -maybe-distclean-mpc: -@if mpc -maybe-distclean-mpc: distclean-mpc - -distclean-mpc: - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif mpc - -.PHONY: maybe-maintainer-clean-mpc maintainer-clean-mpc -maybe-maintainer-clean-mpc: -@if mpc -maybe-maintainer-clean-mpc: maintainer-clean-mpc - -maintainer-clean-mpc: - @[ -f ./mpc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in mpc" ; \ - (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif mpc - - - -.PHONY: configure-ppl maybe-configure-ppl -maybe-configure-ppl: -@if gcc-bootstrap -configure-ppl: stage_current -@endif gcc-bootstrap -@if ppl -maybe-configure-ppl: configure-ppl -configure-ppl: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/ppl; \ - cd "$(HOST_SUBDIR)/ppl" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ppl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ppl"; \ - libsrcdir="$$s/ppl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ \ - || exit 1 -@endif ppl - - - -.PHONY: configure-stage1-ppl maybe-configure-stage1-ppl -maybe-configure-stage1-ppl: -@if ppl-bootstrap -maybe-configure-stage1-ppl: configure-stage1-ppl -configure-stage1-ppl: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/ppl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - cd $(HOST_SUBDIR)/ppl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ppl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ppl"; \ - libsrcdir="$$s/ppl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ -@endif ppl-bootstrap - -.PHONY: configure-stage2-ppl maybe-configure-stage2-ppl -maybe-configure-stage2-ppl: -@if ppl-bootstrap -maybe-configure-stage2-ppl: configure-stage2-ppl -configure-stage2-ppl: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/ppl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - cd $(HOST_SUBDIR)/ppl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ppl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ppl"; \ - libsrcdir="$$s/ppl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ -@endif ppl-bootstrap - -.PHONY: configure-stage3-ppl maybe-configure-stage3-ppl -maybe-configure-stage3-ppl: -@if ppl-bootstrap -maybe-configure-stage3-ppl: configure-stage3-ppl -configure-stage3-ppl: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/ppl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - cd $(HOST_SUBDIR)/ppl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ppl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ppl"; \ - libsrcdir="$$s/ppl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ -@endif ppl-bootstrap - -.PHONY: configure-stage4-ppl maybe-configure-stage4-ppl -maybe-configure-stage4-ppl: -@if ppl-bootstrap -maybe-configure-stage4-ppl: configure-stage4-ppl -configure-stage4-ppl: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/ppl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - cd $(HOST_SUBDIR)/ppl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ppl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ppl"; \ - libsrcdir="$$s/ppl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ -@endif ppl-bootstrap - -.PHONY: configure-stageprofile-ppl maybe-configure-stageprofile-ppl -maybe-configure-stageprofile-ppl: -@if ppl-bootstrap -maybe-configure-stageprofile-ppl: configure-stageprofile-ppl -configure-stageprofile-ppl: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/ppl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - cd $(HOST_SUBDIR)/ppl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ppl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ppl"; \ - libsrcdir="$$s/ppl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ -@endif ppl-bootstrap - -.PHONY: configure-stagefeedback-ppl maybe-configure-stagefeedback-ppl -maybe-configure-stagefeedback-ppl: -@if ppl-bootstrap -maybe-configure-stagefeedback-ppl: configure-stagefeedback-ppl -configure-stagefeedback-ppl: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/ppl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - cd $(HOST_SUBDIR)/ppl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ppl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ppl"; \ - libsrcdir="$$s/ppl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ -@endif ppl-bootstrap - - - - - -.PHONY: all-ppl maybe-all-ppl -maybe-all-ppl: -@if gcc-bootstrap -all-ppl: stage_current -@endif gcc-bootstrap -@if ppl -TARGET-ppl=all -maybe-all-ppl: all-ppl -all-ppl: configure-ppl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-ppl)) -@endif ppl - - - -.PHONY: all-stage1-ppl maybe-all-stage1-ppl -.PHONY: clean-stage1-ppl maybe-clean-stage1-ppl -maybe-all-stage1-ppl: -maybe-clean-stage1-ppl: -@if ppl-bootstrap -maybe-all-stage1-ppl: all-stage1-ppl -all-stage1: all-stage1-ppl -TARGET-stage1-ppl = $(TARGET-ppl) -all-stage1-ppl: configure-stage1-ppl - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-ppl) - -maybe-clean-stage1-ppl: clean-stage1-ppl -clean-stage1: clean-stage1-ppl -clean-stage1-ppl: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/ppl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-ppl/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif ppl-bootstrap - - -.PHONY: all-stage2-ppl maybe-all-stage2-ppl -.PHONY: clean-stage2-ppl maybe-clean-stage2-ppl -maybe-all-stage2-ppl: -maybe-clean-stage2-ppl: -@if ppl-bootstrap -maybe-all-stage2-ppl: all-stage2-ppl -all-stage2: all-stage2-ppl -TARGET-stage2-ppl = $(TARGET-ppl) -all-stage2-ppl: configure-stage2-ppl - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-ppl) - -maybe-clean-stage2-ppl: clean-stage2-ppl -clean-stage2: clean-stage2-ppl -clean-stage2-ppl: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/ppl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-ppl/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ppl-bootstrap - - -.PHONY: all-stage3-ppl maybe-all-stage3-ppl -.PHONY: clean-stage3-ppl maybe-clean-stage3-ppl -maybe-all-stage3-ppl: -maybe-clean-stage3-ppl: -@if ppl-bootstrap -maybe-all-stage3-ppl: all-stage3-ppl -all-stage3: all-stage3-ppl -TARGET-stage3-ppl = $(TARGET-ppl) -all-stage3-ppl: configure-stage3-ppl - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-ppl) - -maybe-clean-stage3-ppl: clean-stage3-ppl -clean-stage3: clean-stage3-ppl -clean-stage3-ppl: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/ppl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-ppl/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ppl-bootstrap - - -.PHONY: all-stage4-ppl maybe-all-stage4-ppl -.PHONY: clean-stage4-ppl maybe-clean-stage4-ppl -maybe-all-stage4-ppl: -maybe-clean-stage4-ppl: -@if ppl-bootstrap -maybe-all-stage4-ppl: all-stage4-ppl -all-stage4: all-stage4-ppl -TARGET-stage4-ppl = $(TARGET-ppl) -all-stage4-ppl: configure-stage4-ppl - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-ppl) - -maybe-clean-stage4-ppl: clean-stage4-ppl -clean-stage4: clean-stage4-ppl -clean-stage4-ppl: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/ppl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-ppl/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ppl-bootstrap - - -.PHONY: all-stageprofile-ppl maybe-all-stageprofile-ppl -.PHONY: clean-stageprofile-ppl maybe-clean-stageprofile-ppl -maybe-all-stageprofile-ppl: -maybe-clean-stageprofile-ppl: -@if ppl-bootstrap -maybe-all-stageprofile-ppl: all-stageprofile-ppl -all-stageprofile: all-stageprofile-ppl -TARGET-stageprofile-ppl = $(TARGET-ppl) -all-stageprofile-ppl: configure-stageprofile-ppl - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-ppl) - -maybe-clean-stageprofile-ppl: clean-stageprofile-ppl -clean-stageprofile: clean-stageprofile-ppl -clean-stageprofile-ppl: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/ppl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-ppl/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ppl-bootstrap - - -.PHONY: all-stagefeedback-ppl maybe-all-stagefeedback-ppl -.PHONY: clean-stagefeedback-ppl maybe-clean-stagefeedback-ppl -maybe-all-stagefeedback-ppl: -maybe-clean-stagefeedback-ppl: -@if ppl-bootstrap -maybe-all-stagefeedback-ppl: all-stagefeedback-ppl -all-stagefeedback: all-stagefeedback-ppl -TARGET-stagefeedback-ppl = $(TARGET-ppl) -all-stagefeedback-ppl: configure-stagefeedback-ppl - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-ppl) - -maybe-clean-stagefeedback-ppl: clean-stagefeedback-ppl -clean-stagefeedback: clean-stagefeedback-ppl -clean-stagefeedback-ppl: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/ppl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-ppl/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ppl-bootstrap - - - - - -.PHONY: check-ppl maybe-check-ppl -maybe-check-ppl: -@if ppl -maybe-check-ppl: check-ppl - -check-ppl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif ppl - -.PHONY: install-ppl maybe-install-ppl -maybe-install-ppl: -@if ppl -maybe-install-ppl: install-ppl - -install-ppl: - -@endif ppl - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-ppl info-ppl -maybe-info-ppl: -@if ppl -maybe-info-ppl: info-ppl - -info-ppl: \ - configure-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-dvi-ppl dvi-ppl -maybe-dvi-ppl: -@if ppl -maybe-dvi-ppl: dvi-ppl - -dvi-ppl: \ - configure-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-pdf-ppl pdf-ppl -maybe-pdf-ppl: -@if ppl -maybe-pdf-ppl: pdf-ppl - -pdf-ppl: \ - configure-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-html-ppl html-ppl -maybe-html-ppl: -@if ppl -maybe-html-ppl: html-ppl - -html-ppl: \ - configure-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-TAGS-ppl TAGS-ppl -maybe-TAGS-ppl: -@if ppl -maybe-TAGS-ppl: TAGS-ppl - -TAGS-ppl: \ - configure-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-install-info-ppl install-info-ppl -maybe-install-info-ppl: -@if ppl -maybe-install-info-ppl: install-info-ppl - -install-info-ppl: \ - configure-ppl \ - info-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-install-pdf-ppl install-pdf-ppl -maybe-install-pdf-ppl: -@if ppl -maybe-install-pdf-ppl: install-pdf-ppl - -install-pdf-ppl: \ - configure-ppl \ - pdf-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-install-html-ppl install-html-ppl -maybe-install-html-ppl: -@if ppl -maybe-install-html-ppl: install-html-ppl - -install-html-ppl: \ - configure-ppl \ - html-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-installcheck-ppl installcheck-ppl -maybe-installcheck-ppl: -@if ppl -maybe-installcheck-ppl: installcheck-ppl - -installcheck-ppl: \ - configure-ppl - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-mostlyclean-ppl mostlyclean-ppl -maybe-mostlyclean-ppl: -@if ppl -maybe-mostlyclean-ppl: mostlyclean-ppl - -mostlyclean-ppl: - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-clean-ppl clean-ppl -maybe-clean-ppl: -@if ppl -maybe-clean-ppl: clean-ppl - -clean-ppl: - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-distclean-ppl distclean-ppl -maybe-distclean-ppl: -@if ppl -maybe-distclean-ppl: distclean-ppl - -distclean-ppl: - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif ppl - -.PHONY: maybe-maintainer-clean-ppl maintainer-clean-ppl -maybe-maintainer-clean-ppl: -@if ppl -maybe-maintainer-clean-ppl: maintainer-clean-ppl - -maintainer-clean-ppl: - @[ -f ./ppl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in ppl" ; \ - (cd $(HOST_SUBDIR)/ppl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif ppl - - - -.PHONY: configure-cloog maybe-configure-cloog -maybe-configure-cloog: -@if gcc-bootstrap -configure-cloog: stage_current -@endif gcc-bootstrap -@if cloog -maybe-configure-cloog: configure-cloog -configure-cloog: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/cloog; \ - cd "$(HOST_SUBDIR)/cloog" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp \ - || exit 1 -@endif cloog - - - -.PHONY: configure-stage1-cloog maybe-configure-stage1-cloog -maybe-configure-stage1-cloog: -@if cloog-bootstrap -maybe-configure-stage1-cloog: configure-stage1-cloog -configure-stage1-cloog: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp -@endif cloog-bootstrap - -.PHONY: configure-stage2-cloog maybe-configure-stage2-cloog -maybe-configure-stage2-cloog: -@if cloog-bootstrap -maybe-configure-stage2-cloog: configure-stage2-cloog -configure-stage2-cloog: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp -@endif cloog-bootstrap - -.PHONY: configure-stage3-cloog maybe-configure-stage3-cloog -maybe-configure-stage3-cloog: -@if cloog-bootstrap -maybe-configure-stage3-cloog: configure-stage3-cloog -configure-stage3-cloog: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp -@endif cloog-bootstrap - -.PHONY: configure-stage4-cloog maybe-configure-stage4-cloog -maybe-configure-stage4-cloog: -@if cloog-bootstrap -maybe-configure-stage4-cloog: configure-stage4-cloog -configure-stage4-cloog: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp -@endif cloog-bootstrap - -.PHONY: configure-stageprofile-cloog maybe-configure-stageprofile-cloog -maybe-configure-stageprofile-cloog: -@if cloog-bootstrap -maybe-configure-stageprofile-cloog: configure-stageprofile-cloog -configure-stageprofile-cloog: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp -@endif cloog-bootstrap - -.PHONY: configure-stagefeedback-cloog maybe-configure-stagefeedback-cloog -maybe-configure-stagefeedback-cloog: -@if cloog-bootstrap -maybe-configure-stagefeedback-cloog: configure-stagefeedback-cloog -configure-stagefeedback-cloog: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp -@endif cloog-bootstrap - - - - - -.PHONY: all-cloog maybe-all-cloog -maybe-all-cloog: -@if gcc-bootstrap -all-cloog: stage_current -@endif gcc-bootstrap -@if cloog -TARGET-cloog=all -maybe-all-cloog: all-cloog -all-cloog: configure-cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-cloog)) -@endif cloog - - - -.PHONY: all-stage1-cloog maybe-all-stage1-cloog -.PHONY: clean-stage1-cloog maybe-clean-stage1-cloog -maybe-all-stage1-cloog: -maybe-clean-stage1-cloog: -@if cloog-bootstrap -maybe-all-stage1-cloog: all-stage1-cloog -all-stage1: all-stage1-cloog -TARGET-stage1-cloog = $(TARGET-cloog) -all-stage1-cloog: configure-stage1-cloog - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-cloog) - -maybe-clean-stage1-cloog: clean-stage1-cloog -clean-stage1: clean-stage1-cloog -clean-stage1-cloog: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-cloog/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif cloog-bootstrap - - -.PHONY: all-stage2-cloog maybe-all-stage2-cloog -.PHONY: clean-stage2-cloog maybe-clean-stage2-cloog -maybe-all-stage2-cloog: -maybe-clean-stage2-cloog: -@if cloog-bootstrap -maybe-all-stage2-cloog: all-stage2-cloog -all-stage2: all-stage2-cloog -TARGET-stage2-cloog = $(TARGET-cloog) -all-stage2-cloog: configure-stage2-cloog - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-cloog) - -maybe-clean-stage2-cloog: clean-stage2-cloog -clean-stage2: clean-stage2-cloog -clean-stage2-cloog: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-cloog/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif cloog-bootstrap - - -.PHONY: all-stage3-cloog maybe-all-stage3-cloog -.PHONY: clean-stage3-cloog maybe-clean-stage3-cloog -maybe-all-stage3-cloog: -maybe-clean-stage3-cloog: -@if cloog-bootstrap -maybe-all-stage3-cloog: all-stage3-cloog -all-stage3: all-stage3-cloog -TARGET-stage3-cloog = $(TARGET-cloog) -all-stage3-cloog: configure-stage3-cloog - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-cloog) - -maybe-clean-stage3-cloog: clean-stage3-cloog -clean-stage3: clean-stage3-cloog -clean-stage3-cloog: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-cloog/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif cloog-bootstrap - - -.PHONY: all-stage4-cloog maybe-all-stage4-cloog -.PHONY: clean-stage4-cloog maybe-clean-stage4-cloog -maybe-all-stage4-cloog: -maybe-clean-stage4-cloog: -@if cloog-bootstrap -maybe-all-stage4-cloog: all-stage4-cloog -all-stage4: all-stage4-cloog -TARGET-stage4-cloog = $(TARGET-cloog) -all-stage4-cloog: configure-stage4-cloog - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-cloog) - -maybe-clean-stage4-cloog: clean-stage4-cloog -clean-stage4: clean-stage4-cloog -clean-stage4-cloog: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-cloog/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif cloog-bootstrap - - -.PHONY: all-stageprofile-cloog maybe-all-stageprofile-cloog -.PHONY: clean-stageprofile-cloog maybe-clean-stageprofile-cloog -maybe-all-stageprofile-cloog: -maybe-clean-stageprofile-cloog: -@if cloog-bootstrap -maybe-all-stageprofile-cloog: all-stageprofile-cloog -all-stageprofile: all-stageprofile-cloog -TARGET-stageprofile-cloog = $(TARGET-cloog) -all-stageprofile-cloog: configure-stageprofile-cloog - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-cloog) - -maybe-clean-stageprofile-cloog: clean-stageprofile-cloog -clean-stageprofile: clean-stageprofile-cloog -clean-stageprofile-cloog: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-cloog/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif cloog-bootstrap - - -.PHONY: all-stagefeedback-cloog maybe-all-stagefeedback-cloog -.PHONY: clean-stagefeedback-cloog maybe-clean-stagefeedback-cloog -maybe-all-stagefeedback-cloog: -maybe-clean-stagefeedback-cloog: -@if cloog-bootstrap -maybe-all-stagefeedback-cloog: all-stagefeedback-cloog -all-stagefeedback: all-stagefeedback-cloog -TARGET-stagefeedback-cloog = $(TARGET-cloog) -all-stagefeedback-cloog: configure-stagefeedback-cloog - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-cloog) - -maybe-clean-stagefeedback-cloog: clean-stagefeedback-cloog -clean-stagefeedback: clean-stagefeedback-cloog -clean-stagefeedback-cloog: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-cloog/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif cloog-bootstrap - - - - - -.PHONY: check-cloog maybe-check-cloog -maybe-check-cloog: -@if cloog -maybe-check-cloog: check-cloog - -check-cloog: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif cloog - -.PHONY: install-cloog maybe-install-cloog -maybe-install-cloog: -@if cloog -maybe-install-cloog: install-cloog - -install-cloog: - -@endif cloog - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-cloog info-cloog -maybe-info-cloog: -@if cloog -maybe-info-cloog: info-cloog - -info-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-dvi-cloog dvi-cloog -maybe-dvi-cloog: -@if cloog -maybe-dvi-cloog: dvi-cloog - -dvi-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-pdf-cloog pdf-cloog -maybe-pdf-cloog: -@if cloog -maybe-pdf-cloog: pdf-cloog - -pdf-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-html-cloog html-cloog -maybe-html-cloog: -@if cloog -maybe-html-cloog: html-cloog - -html-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-TAGS-cloog TAGS-cloog -maybe-TAGS-cloog: -@if cloog -maybe-TAGS-cloog: TAGS-cloog - -TAGS-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-install-info-cloog install-info-cloog -maybe-install-info-cloog: -@if cloog -maybe-install-info-cloog: install-info-cloog - -install-info-cloog: \ - configure-cloog \ - info-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-install-pdf-cloog install-pdf-cloog -maybe-install-pdf-cloog: -@if cloog -maybe-install-pdf-cloog: install-pdf-cloog - -install-pdf-cloog: \ - configure-cloog \ - pdf-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-install-html-cloog install-html-cloog -maybe-install-html-cloog: -@if cloog -maybe-install-html-cloog: install-html-cloog - -install-html-cloog: \ - configure-cloog \ - html-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-installcheck-cloog installcheck-cloog -maybe-installcheck-cloog: -@if cloog -maybe-installcheck-cloog: installcheck-cloog - -installcheck-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-mostlyclean-cloog mostlyclean-cloog -maybe-mostlyclean-cloog: -@if cloog -maybe-mostlyclean-cloog: mostlyclean-cloog - -mostlyclean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-clean-cloog clean-cloog -maybe-clean-cloog: -@if cloog -maybe-clean-cloog: clean-cloog - -clean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-distclean-cloog distclean-cloog -maybe-distclean-cloog: -@if cloog -maybe-distclean-cloog: distclean-cloog - -distclean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif cloog - -.PHONY: maybe-maintainer-clean-cloog maintainer-clean-cloog -maybe-maintainer-clean-cloog: -@if cloog -maybe-maintainer-clean-cloog: maintainer-clean-cloog - -maintainer-clean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif cloog - - - -.PHONY: configure-gnuserv maybe-configure-gnuserv -maybe-configure-gnuserv: -@if gcc-bootstrap -configure-gnuserv: stage_current -@endif gcc-bootstrap -@if gnuserv -maybe-configure-gnuserv: configure-gnuserv -configure-gnuserv: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gnuserv/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gnuserv ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gnuserv; \ - cd "$(HOST_SUBDIR)/gnuserv" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gnuserv/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gnuserv"; \ - libsrcdir="$$s/gnuserv"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gnuserv - - - - - -.PHONY: all-gnuserv maybe-all-gnuserv -maybe-all-gnuserv: -@if gcc-bootstrap -all-gnuserv: stage_current -@endif gcc-bootstrap -@if gnuserv -TARGET-gnuserv=all -maybe-all-gnuserv: all-gnuserv -all-gnuserv: configure-gnuserv - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gnuserv)) -@endif gnuserv - - - - -.PHONY: check-gnuserv maybe-check-gnuserv -maybe-check-gnuserv: -@if gnuserv -maybe-check-gnuserv: check-gnuserv - -check-gnuserv: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gnuserv - -.PHONY: install-gnuserv maybe-install-gnuserv -maybe-install-gnuserv: -@if gnuserv -maybe-install-gnuserv: install-gnuserv - -install-gnuserv: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gnuserv - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gnuserv info-gnuserv -maybe-info-gnuserv: -@if gnuserv -maybe-info-gnuserv: info-gnuserv - -info-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-dvi-gnuserv dvi-gnuserv -maybe-dvi-gnuserv: -@if gnuserv -maybe-dvi-gnuserv: dvi-gnuserv - -dvi-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-pdf-gnuserv pdf-gnuserv -maybe-pdf-gnuserv: -@if gnuserv -maybe-pdf-gnuserv: pdf-gnuserv - -pdf-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-html-gnuserv html-gnuserv -maybe-html-gnuserv: -@if gnuserv -maybe-html-gnuserv: html-gnuserv - -html-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-TAGS-gnuserv TAGS-gnuserv -maybe-TAGS-gnuserv: -@if gnuserv -maybe-TAGS-gnuserv: TAGS-gnuserv - -TAGS-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-install-info-gnuserv install-info-gnuserv -maybe-install-info-gnuserv: -@if gnuserv -maybe-install-info-gnuserv: install-info-gnuserv - -install-info-gnuserv: \ - configure-gnuserv \ - info-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-install-pdf-gnuserv install-pdf-gnuserv -maybe-install-pdf-gnuserv: -@if gnuserv -maybe-install-pdf-gnuserv: install-pdf-gnuserv - -install-pdf-gnuserv: \ - configure-gnuserv \ - pdf-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-install-html-gnuserv install-html-gnuserv -maybe-install-html-gnuserv: -@if gnuserv -maybe-install-html-gnuserv: install-html-gnuserv - -install-html-gnuserv: \ - configure-gnuserv \ - html-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-installcheck-gnuserv installcheck-gnuserv -maybe-installcheck-gnuserv: -@if gnuserv -maybe-installcheck-gnuserv: installcheck-gnuserv - -installcheck-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-mostlyclean-gnuserv mostlyclean-gnuserv -maybe-mostlyclean-gnuserv: -@if gnuserv -maybe-mostlyclean-gnuserv: mostlyclean-gnuserv - -mostlyclean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-clean-gnuserv clean-gnuserv -maybe-clean-gnuserv: -@if gnuserv -maybe-clean-gnuserv: clean-gnuserv - -clean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-distclean-gnuserv distclean-gnuserv -maybe-distclean-gnuserv: -@if gnuserv -maybe-distclean-gnuserv: distclean-gnuserv - -distclean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gnuserv - -.PHONY: maybe-maintainer-clean-gnuserv maintainer-clean-gnuserv -maybe-maintainer-clean-gnuserv: -@if gnuserv -maybe-maintainer-clean-gnuserv: maintainer-clean-gnuserv - -maintainer-clean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gnuserv - - - -.PHONY: configure-gold maybe-configure-gold -maybe-configure-gold: -@if gcc-bootstrap -configure-gold: stage_current -@endif gcc-bootstrap -@if gold -maybe-configure-gold: configure-gold -configure-gold: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gold; \ - cd "$(HOST_SUBDIR)/gold" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gold - - - -.PHONY: configure-stage1-gold maybe-configure-stage1-gold -maybe-configure-stage1-gold: -@if gold-bootstrap -maybe-configure-stage1-gold: configure-stage1-gold -configure-stage1-gold: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/gold ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - cd $(HOST_SUBDIR)/gold || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif gold-bootstrap - -.PHONY: configure-stage2-gold maybe-configure-stage2-gold -maybe-configure-stage2-gold: -@if gold-bootstrap -maybe-configure-stage2-gold: configure-stage2-gold -configure-stage2-gold: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/gold ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - cd $(HOST_SUBDIR)/gold || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif gold-bootstrap - -.PHONY: configure-stage3-gold maybe-configure-stage3-gold -maybe-configure-stage3-gold: -@if gold-bootstrap -maybe-configure-stage3-gold: configure-stage3-gold -configure-stage3-gold: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/gold ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - cd $(HOST_SUBDIR)/gold || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif gold-bootstrap - -.PHONY: configure-stage4-gold maybe-configure-stage4-gold -maybe-configure-stage4-gold: -@if gold-bootstrap -maybe-configure-stage4-gold: configure-stage4-gold -configure-stage4-gold: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/gold ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - cd $(HOST_SUBDIR)/gold || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif gold-bootstrap - -.PHONY: configure-stageprofile-gold maybe-configure-stageprofile-gold -maybe-configure-stageprofile-gold: -@if gold-bootstrap -maybe-configure-stageprofile-gold: configure-stageprofile-gold -configure-stageprofile-gold: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/gold ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - cd $(HOST_SUBDIR)/gold || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif gold-bootstrap - -.PHONY: configure-stagefeedback-gold maybe-configure-stagefeedback-gold -maybe-configure-stagefeedback-gold: -@if gold-bootstrap -maybe-configure-stagefeedback-gold: configure-stagefeedback-gold -configure-stagefeedback-gold: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/gold ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - cd $(HOST_SUBDIR)/gold || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif gold-bootstrap - - - - - -.PHONY: all-gold maybe-all-gold -maybe-all-gold: -@if gcc-bootstrap -all-gold: stage_current -@endif gcc-bootstrap -@if gold -TARGET-gold=all -maybe-all-gold: all-gold -all-gold: configure-gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gold)) -@endif gold - - - -.PHONY: all-stage1-gold maybe-all-stage1-gold -.PHONY: clean-stage1-gold maybe-clean-stage1-gold -maybe-all-stage1-gold: -maybe-clean-stage1-gold: -@if gold-bootstrap -maybe-all-stage1-gold: all-stage1-gold -all-stage1: all-stage1-gold -TARGET-stage1-gold = $(TARGET-gold) -all-stage1-gold: configure-stage1-gold - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-gold) - -maybe-clean-stage1-gold: clean-stage1-gold -clean-stage1: clean-stage1-gold -clean-stage1-gold: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/gold/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-gold/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif gold-bootstrap - - -.PHONY: all-stage2-gold maybe-all-stage2-gold -.PHONY: clean-stage2-gold maybe-clean-stage2-gold -maybe-all-stage2-gold: -maybe-clean-stage2-gold: -@if gold-bootstrap -maybe-all-stage2-gold: all-stage2-gold -all-stage2: all-stage2-gold -TARGET-stage2-gold = $(TARGET-gold) -all-stage2-gold: configure-stage2-gold - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-gold) - -maybe-clean-stage2-gold: clean-stage2-gold -clean-stage2: clean-stage2-gold -clean-stage2-gold: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/gold/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-gold/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gold-bootstrap - - -.PHONY: all-stage3-gold maybe-all-stage3-gold -.PHONY: clean-stage3-gold maybe-clean-stage3-gold -maybe-all-stage3-gold: -maybe-clean-stage3-gold: -@if gold-bootstrap -maybe-all-stage3-gold: all-stage3-gold -all-stage3: all-stage3-gold -TARGET-stage3-gold = $(TARGET-gold) -all-stage3-gold: configure-stage3-gold - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-gold) - -maybe-clean-stage3-gold: clean-stage3-gold -clean-stage3: clean-stage3-gold -clean-stage3-gold: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/gold/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-gold/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gold-bootstrap - - -.PHONY: all-stage4-gold maybe-all-stage4-gold -.PHONY: clean-stage4-gold maybe-clean-stage4-gold -maybe-all-stage4-gold: -maybe-clean-stage4-gold: -@if gold-bootstrap -maybe-all-stage4-gold: all-stage4-gold -all-stage4: all-stage4-gold -TARGET-stage4-gold = $(TARGET-gold) -all-stage4-gold: configure-stage4-gold - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-gold) - -maybe-clean-stage4-gold: clean-stage4-gold -clean-stage4: clean-stage4-gold -clean-stage4-gold: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/gold/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-gold/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gold-bootstrap - - -.PHONY: all-stageprofile-gold maybe-all-stageprofile-gold -.PHONY: clean-stageprofile-gold maybe-clean-stageprofile-gold -maybe-all-stageprofile-gold: -maybe-clean-stageprofile-gold: -@if gold-bootstrap -maybe-all-stageprofile-gold: all-stageprofile-gold -all-stageprofile: all-stageprofile-gold -TARGET-stageprofile-gold = $(TARGET-gold) -all-stageprofile-gold: configure-stageprofile-gold - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-gold) - -maybe-clean-stageprofile-gold: clean-stageprofile-gold -clean-stageprofile: clean-stageprofile-gold -clean-stageprofile-gold: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/gold/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-gold/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gold-bootstrap - - -.PHONY: all-stagefeedback-gold maybe-all-stagefeedback-gold -.PHONY: clean-stagefeedback-gold maybe-clean-stagefeedback-gold -maybe-all-stagefeedback-gold: -maybe-clean-stagefeedback-gold: -@if gold-bootstrap -maybe-all-stagefeedback-gold: all-stagefeedback-gold -all-stagefeedback: all-stagefeedback-gold -TARGET-stagefeedback-gold = $(TARGET-gold) -all-stagefeedback-gold: configure-stagefeedback-gold - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-gold) - -maybe-clean-stagefeedback-gold: clean-stagefeedback-gold -clean-stagefeedback: clean-stagefeedback-gold -clean-stagefeedback-gold: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/gold/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-gold/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif gold-bootstrap - - - - - -.PHONY: check-gold maybe-check-gold -maybe-check-gold: -@if gold -maybe-check-gold: check-gold - -check-gold: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gold - -.PHONY: install-gold maybe-install-gold -maybe-install-gold: -@if gold -maybe-install-gold: install-gold - -install-gold: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gold - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gold info-gold -maybe-info-gold: -@if gold -maybe-info-gold: info-gold - -info-gold: \ - configure-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gold - -.PHONY: maybe-dvi-gold dvi-gold -maybe-dvi-gold: -@if gold -maybe-dvi-gold: dvi-gold - -dvi-gold: \ - configure-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gold - -.PHONY: maybe-pdf-gold pdf-gold -maybe-pdf-gold: -@if gold -maybe-pdf-gold: pdf-gold - -pdf-gold: \ - configure-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gold - -.PHONY: maybe-html-gold html-gold -maybe-html-gold: -@if gold -maybe-html-gold: html-gold - -html-gold: \ - configure-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gold - -.PHONY: maybe-TAGS-gold TAGS-gold -maybe-TAGS-gold: -@if gold -maybe-TAGS-gold: TAGS-gold - -TAGS-gold: \ - configure-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gold - -.PHONY: maybe-install-info-gold install-info-gold -maybe-install-info-gold: -@if gold -maybe-install-info-gold: install-info-gold - -install-info-gold: \ - configure-gold \ - info-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gold - -.PHONY: maybe-install-pdf-gold install-pdf-gold -maybe-install-pdf-gold: -@if gold -maybe-install-pdf-gold: install-pdf-gold - -install-pdf-gold: \ - configure-gold \ - pdf-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gold - -.PHONY: maybe-install-html-gold install-html-gold -maybe-install-html-gold: -@if gold -maybe-install-html-gold: install-html-gold - -install-html-gold: \ - configure-gold \ - html-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gold - -.PHONY: maybe-installcheck-gold installcheck-gold -maybe-installcheck-gold: -@if gold -maybe-installcheck-gold: installcheck-gold - -installcheck-gold: \ - configure-gold - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gold - -.PHONY: maybe-mostlyclean-gold mostlyclean-gold -maybe-mostlyclean-gold: -@if gold -maybe-mostlyclean-gold: mostlyclean-gold - -mostlyclean-gold: - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gold - -.PHONY: maybe-clean-gold clean-gold -maybe-clean-gold: -@if gold -maybe-clean-gold: clean-gold - -clean-gold: - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gold - -.PHONY: maybe-distclean-gold distclean-gold -maybe-distclean-gold: -@if gold -maybe-distclean-gold: distclean-gold - -distclean-gold: - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gold - -.PHONY: maybe-maintainer-clean-gold maintainer-clean-gold -maybe-maintainer-clean-gold: -@if gold -maybe-maintainer-clean-gold: maintainer-clean-gold - -maintainer-clean-gold: - @[ -f ./gold/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gold" ; \ - (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gold - - - -.PHONY: configure-gprof maybe-configure-gprof -maybe-configure-gprof: -@if gcc-bootstrap -configure-gprof: stage_current -@endif gcc-bootstrap -@if gprof -maybe-configure-gprof: configure-gprof -configure-gprof: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gprof/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gprof ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gprof; \ - cd "$(HOST_SUBDIR)/gprof" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gprof/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gprof"; \ - libsrcdir="$$s/gprof"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gprof - - - - - -.PHONY: all-gprof maybe-all-gprof -maybe-all-gprof: -@if gcc-bootstrap -all-gprof: stage_current -@endif gcc-bootstrap -@if gprof -TARGET-gprof=all -maybe-all-gprof: all-gprof -all-gprof: configure-gprof - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gprof)) -@endif gprof - - - - -.PHONY: check-gprof maybe-check-gprof -maybe-check-gprof: -@if gprof -maybe-check-gprof: check-gprof - -check-gprof: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gprof - -.PHONY: install-gprof maybe-install-gprof -maybe-install-gprof: -@if gprof -maybe-install-gprof: install-gprof - -install-gprof: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gprof - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gprof info-gprof -maybe-info-gprof: -@if gprof -maybe-info-gprof: info-gprof - -info-gprof: \ - configure-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-dvi-gprof dvi-gprof -maybe-dvi-gprof: -@if gprof -maybe-dvi-gprof: dvi-gprof - -dvi-gprof: \ - configure-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-pdf-gprof pdf-gprof -maybe-pdf-gprof: -@if gprof -maybe-pdf-gprof: pdf-gprof - -pdf-gprof: \ - configure-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-html-gprof html-gprof -maybe-html-gprof: -@if gprof -maybe-html-gprof: html-gprof - -html-gprof: \ - configure-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-TAGS-gprof TAGS-gprof -maybe-TAGS-gprof: -@if gprof -maybe-TAGS-gprof: TAGS-gprof - -TAGS-gprof: \ - configure-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-install-info-gprof install-info-gprof -maybe-install-info-gprof: -@if gprof -maybe-install-info-gprof: install-info-gprof - -install-info-gprof: \ - configure-gprof \ - info-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-install-pdf-gprof install-pdf-gprof -maybe-install-pdf-gprof: -@if gprof -maybe-install-pdf-gprof: install-pdf-gprof - -install-pdf-gprof: \ - configure-gprof \ - pdf-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-install-html-gprof install-html-gprof -maybe-install-html-gprof: -@if gprof -maybe-install-html-gprof: install-html-gprof - -install-html-gprof: \ - configure-gprof \ - html-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-installcheck-gprof installcheck-gprof -maybe-installcheck-gprof: -@if gprof -maybe-installcheck-gprof: installcheck-gprof - -installcheck-gprof: \ - configure-gprof - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-mostlyclean-gprof mostlyclean-gprof -maybe-mostlyclean-gprof: -@if gprof -maybe-mostlyclean-gprof: mostlyclean-gprof - -mostlyclean-gprof: - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-clean-gprof clean-gprof -maybe-clean-gprof: -@if gprof -maybe-clean-gprof: clean-gprof - -clean-gprof: - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-distclean-gprof distclean-gprof -maybe-distclean-gprof: -@if gprof -maybe-distclean-gprof: distclean-gprof - -distclean-gprof: - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gprof - -.PHONY: maybe-maintainer-clean-gprof maintainer-clean-gprof -maybe-maintainer-clean-gprof: -@if gprof -maybe-maintainer-clean-gprof: maintainer-clean-gprof - -maintainer-clean-gprof: - @: $(MAKE); $(unstage) - @[ -f ./gprof/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gprof" ; \ - (cd $(HOST_SUBDIR)/gprof && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gprof - - - -.PHONY: configure-gzip maybe-configure-gzip -maybe-configure-gzip: -@if gcc-bootstrap -configure-gzip: stage_current -@endif gcc-bootstrap -@if gzip -maybe-configure-gzip: configure-gzip -configure-gzip: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gzip/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gzip ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gzip; \ - cd "$(HOST_SUBDIR)/gzip" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gzip/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gzip"; \ - libsrcdir="$$s/gzip"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gzip - - - - - -.PHONY: all-gzip maybe-all-gzip -maybe-all-gzip: -@if gcc-bootstrap -all-gzip: stage_current -@endif gcc-bootstrap -@if gzip -TARGET-gzip=all -maybe-all-gzip: all-gzip -all-gzip: configure-gzip - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gzip)) -@endif gzip - - - - -.PHONY: check-gzip maybe-check-gzip -maybe-check-gzip: -@if gzip -maybe-check-gzip: check-gzip - -check-gzip: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gzip - -.PHONY: install-gzip maybe-install-gzip -maybe-install-gzip: -@if gzip -maybe-install-gzip: install-gzip - -install-gzip: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gzip - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gzip info-gzip -maybe-info-gzip: -@if gzip -maybe-info-gzip: info-gzip - -info-gzip: \ - configure-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-dvi-gzip dvi-gzip -maybe-dvi-gzip: -@if gzip -maybe-dvi-gzip: dvi-gzip - -dvi-gzip: \ - configure-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-pdf-gzip pdf-gzip -maybe-pdf-gzip: -@if gzip -maybe-pdf-gzip: pdf-gzip - -pdf-gzip: \ - configure-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-html-gzip html-gzip -maybe-html-gzip: -@if gzip -maybe-html-gzip: html-gzip - -html-gzip: \ - configure-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-TAGS-gzip TAGS-gzip -maybe-TAGS-gzip: -@if gzip -maybe-TAGS-gzip: TAGS-gzip - -TAGS-gzip: \ - configure-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-install-info-gzip install-info-gzip -maybe-install-info-gzip: -@if gzip -maybe-install-info-gzip: install-info-gzip - -install-info-gzip: \ - configure-gzip \ - info-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-install-pdf-gzip install-pdf-gzip -maybe-install-pdf-gzip: -@if gzip -maybe-install-pdf-gzip: install-pdf-gzip - -install-pdf-gzip: \ - configure-gzip \ - pdf-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-install-html-gzip install-html-gzip -maybe-install-html-gzip: -@if gzip -maybe-install-html-gzip: install-html-gzip - -install-html-gzip: \ - configure-gzip \ - html-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-installcheck-gzip installcheck-gzip -maybe-installcheck-gzip: -@if gzip -maybe-installcheck-gzip: installcheck-gzip - -installcheck-gzip: \ - configure-gzip - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-mostlyclean-gzip mostlyclean-gzip -maybe-mostlyclean-gzip: -@if gzip -maybe-mostlyclean-gzip: mostlyclean-gzip - -mostlyclean-gzip: - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-clean-gzip clean-gzip -maybe-clean-gzip: -@if gzip -maybe-clean-gzip: clean-gzip - -clean-gzip: - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-distclean-gzip distclean-gzip -maybe-distclean-gzip: -@if gzip -maybe-distclean-gzip: distclean-gzip - -distclean-gzip: - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gzip - -.PHONY: maybe-maintainer-clean-gzip maintainer-clean-gzip -maybe-maintainer-clean-gzip: -@if gzip -maybe-maintainer-clean-gzip: maintainer-clean-gzip - -maintainer-clean-gzip: - @: $(MAKE); $(unstage) - @[ -f ./gzip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gzip" ; \ - (cd $(HOST_SUBDIR)/gzip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gzip - - - -.PHONY: configure-hello maybe-configure-hello -maybe-configure-hello: -@if gcc-bootstrap -configure-hello: stage_current -@endif gcc-bootstrap -@if hello -maybe-configure-hello: configure-hello -configure-hello: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/hello/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/hello ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/hello; \ - cd "$(HOST_SUBDIR)/hello" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/hello/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/hello"; \ - libsrcdir="$$s/hello"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif hello - - - - - -.PHONY: all-hello maybe-all-hello -maybe-all-hello: -@if gcc-bootstrap -all-hello: stage_current -@endif gcc-bootstrap -@if hello -TARGET-hello=all -maybe-all-hello: all-hello -all-hello: configure-hello - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-hello)) -@endif hello - - - - -.PHONY: check-hello maybe-check-hello -maybe-check-hello: -@if hello -maybe-check-hello: check-hello - -check-hello: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif hello - -.PHONY: install-hello maybe-install-hello -maybe-install-hello: -@if hello -maybe-install-hello: install-hello - -install-hello: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif hello - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-hello info-hello -maybe-info-hello: -@if hello -maybe-info-hello: info-hello - -info-hello: \ - configure-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif hello - -.PHONY: maybe-dvi-hello dvi-hello -maybe-dvi-hello: -@if hello -maybe-dvi-hello: dvi-hello - -dvi-hello: \ - configure-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif hello - -.PHONY: maybe-pdf-hello pdf-hello -maybe-pdf-hello: -@if hello -maybe-pdf-hello: pdf-hello - -pdf-hello: \ - configure-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif hello - -.PHONY: maybe-html-hello html-hello -maybe-html-hello: -@if hello -maybe-html-hello: html-hello - -html-hello: \ - configure-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif hello - -.PHONY: maybe-TAGS-hello TAGS-hello -maybe-TAGS-hello: -@if hello -maybe-TAGS-hello: TAGS-hello - -TAGS-hello: \ - configure-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif hello - -.PHONY: maybe-install-info-hello install-info-hello -maybe-install-info-hello: -@if hello -maybe-install-info-hello: install-info-hello - -install-info-hello: \ - configure-hello \ - info-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif hello - -.PHONY: maybe-install-pdf-hello install-pdf-hello -maybe-install-pdf-hello: -@if hello -maybe-install-pdf-hello: install-pdf-hello - -install-pdf-hello: \ - configure-hello \ - pdf-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif hello - -.PHONY: maybe-install-html-hello install-html-hello -maybe-install-html-hello: -@if hello -maybe-install-html-hello: install-html-hello - -install-html-hello: \ - configure-hello \ - html-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif hello - -.PHONY: maybe-installcheck-hello installcheck-hello -maybe-installcheck-hello: -@if hello -maybe-installcheck-hello: installcheck-hello - -installcheck-hello: \ - configure-hello - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif hello - -.PHONY: maybe-mostlyclean-hello mostlyclean-hello -maybe-mostlyclean-hello: -@if hello -maybe-mostlyclean-hello: mostlyclean-hello - -mostlyclean-hello: - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif hello - -.PHONY: maybe-clean-hello clean-hello -maybe-clean-hello: -@if hello -maybe-clean-hello: clean-hello - -clean-hello: - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif hello - -.PHONY: maybe-distclean-hello distclean-hello -maybe-distclean-hello: -@if hello -maybe-distclean-hello: distclean-hello - -distclean-hello: - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif hello - -.PHONY: maybe-maintainer-clean-hello maintainer-clean-hello -maybe-maintainer-clean-hello: -@if hello -maybe-maintainer-clean-hello: maintainer-clean-hello - -maintainer-clean-hello: - @: $(MAKE); $(unstage) - @[ -f ./hello/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in hello" ; \ - (cd $(HOST_SUBDIR)/hello && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif hello - - - -.PHONY: configure-indent maybe-configure-indent -maybe-configure-indent: -@if gcc-bootstrap -configure-indent: stage_current -@endif gcc-bootstrap -@if indent -maybe-configure-indent: configure-indent -configure-indent: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/indent/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/indent ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/indent; \ - cd "$(HOST_SUBDIR)/indent" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/indent/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/indent"; \ - libsrcdir="$$s/indent"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif indent - - - - - -.PHONY: all-indent maybe-all-indent -maybe-all-indent: -@if gcc-bootstrap -all-indent: stage_current -@endif gcc-bootstrap -@if indent -TARGET-indent=all -maybe-all-indent: all-indent -all-indent: configure-indent - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-indent)) -@endif indent - - - - -.PHONY: check-indent maybe-check-indent -maybe-check-indent: -@if indent -maybe-check-indent: check-indent - -check-indent: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif indent - -.PHONY: install-indent maybe-install-indent -maybe-install-indent: -@if indent -maybe-install-indent: install-indent - -install-indent: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif indent - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-indent info-indent -maybe-info-indent: -@if indent -maybe-info-indent: info-indent - -info-indent: \ - configure-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif indent - -.PHONY: maybe-dvi-indent dvi-indent -maybe-dvi-indent: -@if indent -maybe-dvi-indent: dvi-indent - -dvi-indent: \ - configure-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif indent - -.PHONY: maybe-pdf-indent pdf-indent -maybe-pdf-indent: -@if indent -maybe-pdf-indent: pdf-indent - -pdf-indent: \ - configure-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif indent - -.PHONY: maybe-html-indent html-indent -maybe-html-indent: -@if indent -maybe-html-indent: html-indent - -html-indent: \ - configure-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif indent - -.PHONY: maybe-TAGS-indent TAGS-indent -maybe-TAGS-indent: -@if indent -maybe-TAGS-indent: TAGS-indent - -TAGS-indent: \ - configure-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif indent - -.PHONY: maybe-install-info-indent install-info-indent -maybe-install-info-indent: -@if indent -maybe-install-info-indent: install-info-indent - -install-info-indent: \ - configure-indent \ - info-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif indent - -.PHONY: maybe-install-pdf-indent install-pdf-indent -maybe-install-pdf-indent: -@if indent -maybe-install-pdf-indent: install-pdf-indent - -install-pdf-indent: \ - configure-indent \ - pdf-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif indent - -.PHONY: maybe-install-html-indent install-html-indent -maybe-install-html-indent: -@if indent -maybe-install-html-indent: install-html-indent - -install-html-indent: \ - configure-indent \ - html-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif indent - -.PHONY: maybe-installcheck-indent installcheck-indent -maybe-installcheck-indent: -@if indent -maybe-installcheck-indent: installcheck-indent - -installcheck-indent: \ - configure-indent - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif indent - -.PHONY: maybe-mostlyclean-indent mostlyclean-indent -maybe-mostlyclean-indent: -@if indent -maybe-mostlyclean-indent: mostlyclean-indent - -mostlyclean-indent: - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif indent - -.PHONY: maybe-clean-indent clean-indent -maybe-clean-indent: -@if indent -maybe-clean-indent: clean-indent - -clean-indent: - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif indent - -.PHONY: maybe-distclean-indent distclean-indent -maybe-distclean-indent: -@if indent -maybe-distclean-indent: distclean-indent - -distclean-indent: - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif indent - -.PHONY: maybe-maintainer-clean-indent maintainer-clean-indent -maybe-maintainer-clean-indent: -@if indent -maybe-maintainer-clean-indent: maintainer-clean-indent - -maintainer-clean-indent: - @: $(MAKE); $(unstage) - @[ -f ./indent/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in indent" ; \ - (cd $(HOST_SUBDIR)/indent && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif indent - - - -.PHONY: configure-intl maybe-configure-intl -maybe-configure-intl: -@if gcc-bootstrap -configure-intl: stage_current -@endif gcc-bootstrap -@if intl -maybe-configure-intl: configure-intl -configure-intl: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/intl; \ - cd "$(HOST_SUBDIR)/intl" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif intl - - - -.PHONY: configure-stage1-intl maybe-configure-stage1-intl -maybe-configure-stage1-intl: -@if intl-bootstrap -maybe-configure-stage1-intl: configure-stage1-intl -configure-stage1-intl: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/intl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - cd $(HOST_SUBDIR)/intl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif intl-bootstrap - -.PHONY: configure-stage2-intl maybe-configure-stage2-intl -maybe-configure-stage2-intl: -@if intl-bootstrap -maybe-configure-stage2-intl: configure-stage2-intl -configure-stage2-intl: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/intl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - cd $(HOST_SUBDIR)/intl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif intl-bootstrap - -.PHONY: configure-stage3-intl maybe-configure-stage3-intl -maybe-configure-stage3-intl: -@if intl-bootstrap -maybe-configure-stage3-intl: configure-stage3-intl -configure-stage3-intl: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/intl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - cd $(HOST_SUBDIR)/intl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif intl-bootstrap - -.PHONY: configure-stage4-intl maybe-configure-stage4-intl -maybe-configure-stage4-intl: -@if intl-bootstrap -maybe-configure-stage4-intl: configure-stage4-intl -configure-stage4-intl: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/intl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - cd $(HOST_SUBDIR)/intl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif intl-bootstrap - -.PHONY: configure-stageprofile-intl maybe-configure-stageprofile-intl -maybe-configure-stageprofile-intl: -@if intl-bootstrap -maybe-configure-stageprofile-intl: configure-stageprofile-intl -configure-stageprofile-intl: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/intl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - cd $(HOST_SUBDIR)/intl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif intl-bootstrap - -.PHONY: configure-stagefeedback-intl maybe-configure-stagefeedback-intl -maybe-configure-stagefeedback-intl: -@if intl-bootstrap -maybe-configure-stagefeedback-intl: configure-stagefeedback-intl -configure-stagefeedback-intl: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/intl ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - cd $(HOST_SUBDIR)/intl || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif intl-bootstrap - - - - - -.PHONY: all-intl maybe-all-intl -maybe-all-intl: -@if gcc-bootstrap -all-intl: stage_current -@endif gcc-bootstrap -@if intl -TARGET-intl=all -maybe-all-intl: all-intl -all-intl: configure-intl - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-intl)) -@endif intl - - - -.PHONY: all-stage1-intl maybe-all-stage1-intl -.PHONY: clean-stage1-intl maybe-clean-stage1-intl -maybe-all-stage1-intl: -maybe-clean-stage1-intl: -@if intl-bootstrap -maybe-all-stage1-intl: all-stage1-intl -all-stage1: all-stage1-intl -TARGET-stage1-intl = $(TARGET-intl) -all-stage1-intl: configure-stage1-intl - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-intl) - -maybe-clean-stage1-intl: clean-stage1-intl -clean-stage1: clean-stage1-intl -clean-stage1-intl: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/intl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-intl/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif intl-bootstrap - - -.PHONY: all-stage2-intl maybe-all-stage2-intl -.PHONY: clean-stage2-intl maybe-clean-stage2-intl -maybe-all-stage2-intl: -maybe-clean-stage2-intl: -@if intl-bootstrap -maybe-all-stage2-intl: all-stage2-intl -all-stage2: all-stage2-intl -TARGET-stage2-intl = $(TARGET-intl) -all-stage2-intl: configure-stage2-intl - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-intl) - -maybe-clean-stage2-intl: clean-stage2-intl -clean-stage2: clean-stage2-intl -clean-stage2-intl: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/intl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-intl/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif intl-bootstrap - - -.PHONY: all-stage3-intl maybe-all-stage3-intl -.PHONY: clean-stage3-intl maybe-clean-stage3-intl -maybe-all-stage3-intl: -maybe-clean-stage3-intl: -@if intl-bootstrap -maybe-all-stage3-intl: all-stage3-intl -all-stage3: all-stage3-intl -TARGET-stage3-intl = $(TARGET-intl) -all-stage3-intl: configure-stage3-intl - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-intl) - -maybe-clean-stage3-intl: clean-stage3-intl -clean-stage3: clean-stage3-intl -clean-stage3-intl: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/intl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-intl/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif intl-bootstrap - - -.PHONY: all-stage4-intl maybe-all-stage4-intl -.PHONY: clean-stage4-intl maybe-clean-stage4-intl -maybe-all-stage4-intl: -maybe-clean-stage4-intl: -@if intl-bootstrap -maybe-all-stage4-intl: all-stage4-intl -all-stage4: all-stage4-intl -TARGET-stage4-intl = $(TARGET-intl) -all-stage4-intl: configure-stage4-intl - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-intl) - -maybe-clean-stage4-intl: clean-stage4-intl -clean-stage4: clean-stage4-intl -clean-stage4-intl: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/intl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-intl/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif intl-bootstrap - - -.PHONY: all-stageprofile-intl maybe-all-stageprofile-intl -.PHONY: clean-stageprofile-intl maybe-clean-stageprofile-intl -maybe-all-stageprofile-intl: -maybe-clean-stageprofile-intl: -@if intl-bootstrap -maybe-all-stageprofile-intl: all-stageprofile-intl -all-stageprofile: all-stageprofile-intl -TARGET-stageprofile-intl = $(TARGET-intl) -all-stageprofile-intl: configure-stageprofile-intl - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-intl) - -maybe-clean-stageprofile-intl: clean-stageprofile-intl -clean-stageprofile: clean-stageprofile-intl -clean-stageprofile-intl: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/intl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-intl/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif intl-bootstrap - - -.PHONY: all-stagefeedback-intl maybe-all-stagefeedback-intl -.PHONY: clean-stagefeedback-intl maybe-clean-stagefeedback-intl -maybe-all-stagefeedback-intl: -maybe-clean-stagefeedback-intl: -@if intl-bootstrap -maybe-all-stagefeedback-intl: all-stagefeedback-intl -all-stagefeedback: all-stagefeedback-intl -TARGET-stagefeedback-intl = $(TARGET-intl) -all-stagefeedback-intl: configure-stagefeedback-intl - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-intl) - -maybe-clean-stagefeedback-intl: clean-stagefeedback-intl -clean-stagefeedback: clean-stagefeedback-intl -clean-stagefeedback-intl: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/intl/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-intl/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif intl-bootstrap - - - - - -.PHONY: check-intl maybe-check-intl -maybe-check-intl: -@if intl -maybe-check-intl: check-intl - -check-intl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif intl - -.PHONY: install-intl maybe-install-intl -maybe-install-intl: -@if intl -maybe-install-intl: install-intl - -install-intl: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif intl - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-intl info-intl -maybe-info-intl: -@if intl -maybe-info-intl: info-intl - -info-intl: \ - configure-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif intl - -.PHONY: maybe-dvi-intl dvi-intl -maybe-dvi-intl: -@if intl -maybe-dvi-intl: dvi-intl - -dvi-intl: \ - configure-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif intl - -.PHONY: maybe-pdf-intl pdf-intl -maybe-pdf-intl: -@if intl -maybe-pdf-intl: pdf-intl - -pdf-intl: \ - configure-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif intl - -.PHONY: maybe-html-intl html-intl -maybe-html-intl: -@if intl -maybe-html-intl: html-intl - -html-intl: \ - configure-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif intl - -.PHONY: maybe-TAGS-intl TAGS-intl -maybe-TAGS-intl: -@if intl -maybe-TAGS-intl: TAGS-intl - -TAGS-intl: \ - configure-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif intl - -.PHONY: maybe-install-info-intl install-info-intl -maybe-install-info-intl: -@if intl -maybe-install-info-intl: install-info-intl - -install-info-intl: \ - configure-intl \ - info-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif intl - -.PHONY: maybe-install-pdf-intl install-pdf-intl -maybe-install-pdf-intl: -@if intl -maybe-install-pdf-intl: install-pdf-intl - -install-pdf-intl: \ - configure-intl \ - pdf-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif intl - -.PHONY: maybe-install-html-intl install-html-intl -maybe-install-html-intl: -@if intl -maybe-install-html-intl: install-html-intl - -install-html-intl: \ - configure-intl \ - html-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif intl - -.PHONY: maybe-installcheck-intl installcheck-intl -maybe-installcheck-intl: -@if intl -maybe-installcheck-intl: installcheck-intl - -installcheck-intl: \ - configure-intl - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif intl - -.PHONY: maybe-mostlyclean-intl mostlyclean-intl -maybe-mostlyclean-intl: -@if intl -maybe-mostlyclean-intl: mostlyclean-intl - -mostlyclean-intl: - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif intl - -.PHONY: maybe-clean-intl clean-intl -maybe-clean-intl: -@if intl -maybe-clean-intl: clean-intl - -clean-intl: - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif intl - -.PHONY: maybe-distclean-intl distclean-intl -maybe-distclean-intl: -@if intl -maybe-distclean-intl: distclean-intl - -distclean-intl: - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif intl - -.PHONY: maybe-maintainer-clean-intl maintainer-clean-intl -maybe-maintainer-clean-intl: -@if intl -maybe-maintainer-clean-intl: maintainer-clean-intl - -maintainer-clean-intl: - @[ -f ./intl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in intl" ; \ - (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif intl - - - -.PHONY: configure-tcl maybe-configure-tcl -maybe-configure-tcl: -@if gcc-bootstrap -configure-tcl: stage_current -@endif gcc-bootstrap -@if tcl -maybe-configure-tcl: configure-tcl -configure-tcl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/tcl/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/tcl ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/tcl; \ - cd "$(HOST_SUBDIR)/tcl" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/tcl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/tcl"; \ - libsrcdir="$$s/tcl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif tcl - - - - - -.PHONY: all-tcl maybe-all-tcl -maybe-all-tcl: -@if gcc-bootstrap -all-tcl: stage_current -@endif gcc-bootstrap -@if tcl -TARGET-tcl=all -maybe-all-tcl: all-tcl -all-tcl: configure-tcl - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-tcl)) -@endif tcl - - - - -.PHONY: check-tcl maybe-check-tcl -maybe-check-tcl: -@if tcl -maybe-check-tcl: check-tcl - -check-tcl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif tcl - -.PHONY: install-tcl maybe-install-tcl -maybe-install-tcl: -@if tcl -maybe-install-tcl: install-tcl - -install-tcl: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif tcl - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-tcl info-tcl -maybe-info-tcl: -@if tcl -maybe-info-tcl: info-tcl - -info-tcl: \ - configure-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-dvi-tcl dvi-tcl -maybe-dvi-tcl: -@if tcl -maybe-dvi-tcl: dvi-tcl - -dvi-tcl: \ - configure-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-pdf-tcl pdf-tcl -maybe-pdf-tcl: -@if tcl -maybe-pdf-tcl: pdf-tcl - -pdf-tcl: \ - configure-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-html-tcl html-tcl -maybe-html-tcl: -@if tcl -maybe-html-tcl: html-tcl - -html-tcl: \ - configure-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-TAGS-tcl TAGS-tcl -maybe-TAGS-tcl: -@if tcl -maybe-TAGS-tcl: TAGS-tcl - -TAGS-tcl: \ - configure-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-install-info-tcl install-info-tcl -maybe-install-info-tcl: -@if tcl -maybe-install-info-tcl: install-info-tcl - -install-info-tcl: \ - configure-tcl \ - info-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-install-pdf-tcl install-pdf-tcl -maybe-install-pdf-tcl: -@if tcl -maybe-install-pdf-tcl: install-pdf-tcl - -install-pdf-tcl: \ - configure-tcl \ - pdf-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-install-html-tcl install-html-tcl -maybe-install-html-tcl: -@if tcl -maybe-install-html-tcl: install-html-tcl - -install-html-tcl: \ - configure-tcl \ - html-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-installcheck-tcl installcheck-tcl -maybe-installcheck-tcl: -@if tcl -maybe-installcheck-tcl: installcheck-tcl - -installcheck-tcl: \ - configure-tcl - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-mostlyclean-tcl mostlyclean-tcl -maybe-mostlyclean-tcl: -@if tcl -maybe-mostlyclean-tcl: mostlyclean-tcl - -# tcl doesn't support mostlyclean. -mostlyclean-tcl: - -@endif tcl - -.PHONY: maybe-clean-tcl clean-tcl -maybe-clean-tcl: -@if tcl -maybe-clean-tcl: clean-tcl - -clean-tcl: - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-distclean-tcl distclean-tcl -maybe-distclean-tcl: -@if tcl -maybe-distclean-tcl: distclean-tcl - -distclean-tcl: - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif tcl - -.PHONY: maybe-maintainer-clean-tcl maintainer-clean-tcl -maybe-maintainer-clean-tcl: -@if tcl -maybe-maintainer-clean-tcl: maintainer-clean-tcl - -maintainer-clean-tcl: - @: $(MAKE); $(unstage) - @[ -f ./tcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in tcl" ; \ - (cd $(HOST_SUBDIR)/tcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif tcl - - - -.PHONY: configure-itcl maybe-configure-itcl -maybe-configure-itcl: -@if gcc-bootstrap -configure-itcl: stage_current -@endif gcc-bootstrap -@if itcl -maybe-configure-itcl: configure-itcl -configure-itcl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/itcl/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/itcl ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/itcl; \ - cd "$(HOST_SUBDIR)/itcl" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/itcl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/itcl"; \ - libsrcdir="$$s/itcl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif itcl - - - - - -.PHONY: all-itcl maybe-all-itcl -maybe-all-itcl: -@if gcc-bootstrap -all-itcl: stage_current -@endif gcc-bootstrap -@if itcl -TARGET-itcl=all -maybe-all-itcl: all-itcl -all-itcl: configure-itcl - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-itcl)) -@endif itcl - - - - -.PHONY: check-itcl maybe-check-itcl -maybe-check-itcl: -@if itcl -maybe-check-itcl: check-itcl - -check-itcl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif itcl - -.PHONY: install-itcl maybe-install-itcl -maybe-install-itcl: -@if itcl -maybe-install-itcl: install-itcl - -install-itcl: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif itcl - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-itcl info-itcl -maybe-info-itcl: -@if itcl -maybe-info-itcl: info-itcl - -info-itcl: \ - configure-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-dvi-itcl dvi-itcl -maybe-dvi-itcl: -@if itcl -maybe-dvi-itcl: dvi-itcl - -dvi-itcl: \ - configure-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-pdf-itcl pdf-itcl -maybe-pdf-itcl: -@if itcl -maybe-pdf-itcl: pdf-itcl - -pdf-itcl: \ - configure-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-html-itcl html-itcl -maybe-html-itcl: -@if itcl -maybe-html-itcl: html-itcl - -html-itcl: \ - configure-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-TAGS-itcl TAGS-itcl -maybe-TAGS-itcl: -@if itcl -maybe-TAGS-itcl: TAGS-itcl - -TAGS-itcl: \ - configure-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-install-info-itcl install-info-itcl -maybe-install-info-itcl: -@if itcl -maybe-install-info-itcl: install-info-itcl - -install-info-itcl: \ - configure-itcl \ - info-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-install-pdf-itcl install-pdf-itcl -maybe-install-pdf-itcl: -@if itcl -maybe-install-pdf-itcl: install-pdf-itcl - -install-pdf-itcl: \ - configure-itcl \ - pdf-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-install-html-itcl install-html-itcl -maybe-install-html-itcl: -@if itcl -maybe-install-html-itcl: install-html-itcl - -install-html-itcl: \ - configure-itcl \ - html-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-installcheck-itcl installcheck-itcl -maybe-installcheck-itcl: -@if itcl -maybe-installcheck-itcl: installcheck-itcl - -installcheck-itcl: \ - configure-itcl - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-mostlyclean-itcl mostlyclean-itcl -maybe-mostlyclean-itcl: -@if itcl -maybe-mostlyclean-itcl: mostlyclean-itcl - -mostlyclean-itcl: - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-clean-itcl clean-itcl -maybe-clean-itcl: -@if itcl -maybe-clean-itcl: clean-itcl - -clean-itcl: - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-distclean-itcl distclean-itcl -maybe-distclean-itcl: -@if itcl -maybe-distclean-itcl: distclean-itcl - -distclean-itcl: - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif itcl - -.PHONY: maybe-maintainer-clean-itcl maintainer-clean-itcl -maybe-maintainer-clean-itcl: -@if itcl -maybe-maintainer-clean-itcl: maintainer-clean-itcl - -maintainer-clean-itcl: - @: $(MAKE); $(unstage) - @[ -f ./itcl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in itcl" ; \ - (cd $(HOST_SUBDIR)/itcl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif itcl - - - -.PHONY: configure-ld maybe-configure-ld -maybe-configure-ld: -@if gcc-bootstrap -configure-ld: stage_current -@endif gcc-bootstrap -@if ld -maybe-configure-ld: configure-ld -configure-ld: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/ld; \ - cd "$(HOST_SUBDIR)/ld" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif ld - - - -.PHONY: configure-stage1-ld maybe-configure-stage1-ld -maybe-configure-stage1-ld: -@if ld-bootstrap -maybe-configure-stage1-ld: configure-stage1-ld -configure-stage1-ld: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/ld ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - cd $(HOST_SUBDIR)/ld || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif ld-bootstrap - -.PHONY: configure-stage2-ld maybe-configure-stage2-ld -maybe-configure-stage2-ld: -@if ld-bootstrap -maybe-configure-stage2-ld: configure-stage2-ld -configure-stage2-ld: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/ld ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - cd $(HOST_SUBDIR)/ld || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif ld-bootstrap - -.PHONY: configure-stage3-ld maybe-configure-stage3-ld -maybe-configure-stage3-ld: -@if ld-bootstrap -maybe-configure-stage3-ld: configure-stage3-ld -configure-stage3-ld: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/ld ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - cd $(HOST_SUBDIR)/ld || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif ld-bootstrap - -.PHONY: configure-stage4-ld maybe-configure-stage4-ld -maybe-configure-stage4-ld: -@if ld-bootstrap -maybe-configure-stage4-ld: configure-stage4-ld -configure-stage4-ld: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/ld ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - cd $(HOST_SUBDIR)/ld || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif ld-bootstrap - -.PHONY: configure-stageprofile-ld maybe-configure-stageprofile-ld -maybe-configure-stageprofile-ld: -@if ld-bootstrap -maybe-configure-stageprofile-ld: configure-stageprofile-ld -configure-stageprofile-ld: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/ld ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - cd $(HOST_SUBDIR)/ld || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif ld-bootstrap - -.PHONY: configure-stagefeedback-ld maybe-configure-stagefeedback-ld -maybe-configure-stagefeedback-ld: -@if ld-bootstrap -maybe-configure-stagefeedback-ld: configure-stagefeedback-ld -configure-stagefeedback-ld: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/ld ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - cd $(HOST_SUBDIR)/ld || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif ld-bootstrap - - - - - -.PHONY: all-ld maybe-all-ld -maybe-all-ld: -@if gcc-bootstrap -all-ld: stage_current -@endif gcc-bootstrap -@if ld -TARGET-ld=all -maybe-all-ld: all-ld -all-ld: configure-ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-ld)) -@endif ld - - - -.PHONY: all-stage1-ld maybe-all-stage1-ld -.PHONY: clean-stage1-ld maybe-clean-stage1-ld -maybe-all-stage1-ld: -maybe-clean-stage1-ld: -@if ld-bootstrap -maybe-all-stage1-ld: all-stage1-ld -all-stage1: all-stage1-ld -TARGET-stage1-ld = $(TARGET-ld) -all-stage1-ld: configure-stage1-ld - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-ld) - -maybe-clean-stage1-ld: clean-stage1-ld -clean-stage1: clean-stage1-ld -clean-stage1-ld: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/ld/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-ld/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif ld-bootstrap - - -.PHONY: all-stage2-ld maybe-all-stage2-ld -.PHONY: clean-stage2-ld maybe-clean-stage2-ld -maybe-all-stage2-ld: -maybe-clean-stage2-ld: -@if ld-bootstrap -maybe-all-stage2-ld: all-stage2-ld -all-stage2: all-stage2-ld -TARGET-stage2-ld = $(TARGET-ld) -all-stage2-ld: configure-stage2-ld - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-ld) - -maybe-clean-stage2-ld: clean-stage2-ld -clean-stage2: clean-stage2-ld -clean-stage2-ld: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/ld/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-ld/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ld-bootstrap - - -.PHONY: all-stage3-ld maybe-all-stage3-ld -.PHONY: clean-stage3-ld maybe-clean-stage3-ld -maybe-all-stage3-ld: -maybe-clean-stage3-ld: -@if ld-bootstrap -maybe-all-stage3-ld: all-stage3-ld -all-stage3: all-stage3-ld -TARGET-stage3-ld = $(TARGET-ld) -all-stage3-ld: configure-stage3-ld - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-ld) - -maybe-clean-stage3-ld: clean-stage3-ld -clean-stage3: clean-stage3-ld -clean-stage3-ld: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/ld/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-ld/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ld-bootstrap - - -.PHONY: all-stage4-ld maybe-all-stage4-ld -.PHONY: clean-stage4-ld maybe-clean-stage4-ld -maybe-all-stage4-ld: -maybe-clean-stage4-ld: -@if ld-bootstrap -maybe-all-stage4-ld: all-stage4-ld -all-stage4: all-stage4-ld -TARGET-stage4-ld = $(TARGET-ld) -all-stage4-ld: configure-stage4-ld - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-ld) - -maybe-clean-stage4-ld: clean-stage4-ld -clean-stage4: clean-stage4-ld -clean-stage4-ld: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/ld/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-ld/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ld-bootstrap - - -.PHONY: all-stageprofile-ld maybe-all-stageprofile-ld -.PHONY: clean-stageprofile-ld maybe-clean-stageprofile-ld -maybe-all-stageprofile-ld: -maybe-clean-stageprofile-ld: -@if ld-bootstrap -maybe-all-stageprofile-ld: all-stageprofile-ld -all-stageprofile: all-stageprofile-ld -TARGET-stageprofile-ld = $(TARGET-ld) -all-stageprofile-ld: configure-stageprofile-ld - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-ld) - -maybe-clean-stageprofile-ld: clean-stageprofile-ld -clean-stageprofile: clean-stageprofile-ld -clean-stageprofile-ld: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/ld/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-ld/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ld-bootstrap - - -.PHONY: all-stagefeedback-ld maybe-all-stagefeedback-ld -.PHONY: clean-stagefeedback-ld maybe-clean-stagefeedback-ld -maybe-all-stagefeedback-ld: -maybe-clean-stagefeedback-ld: -@if ld-bootstrap -maybe-all-stagefeedback-ld: all-stagefeedback-ld -all-stagefeedback: all-stagefeedback-ld -TARGET-stagefeedback-ld = $(TARGET-ld) -all-stagefeedback-ld: configure-stagefeedback-ld - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-ld) - -maybe-clean-stagefeedback-ld: clean-stagefeedback-ld -clean-stagefeedback: clean-stagefeedback-ld -clean-stagefeedback-ld: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/ld/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-ld/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif ld-bootstrap - - - - - -.PHONY: check-ld maybe-check-ld -maybe-check-ld: -@if ld -maybe-check-ld: check-ld - -check-ld: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif ld - -.PHONY: install-ld maybe-install-ld -maybe-install-ld: -@if ld -maybe-install-ld: install-ld - -install-ld: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif ld - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-ld info-ld -maybe-info-ld: -@if ld -maybe-info-ld: info-ld - -info-ld: \ - configure-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif ld - -.PHONY: maybe-dvi-ld dvi-ld -maybe-dvi-ld: -@if ld -maybe-dvi-ld: dvi-ld - -dvi-ld: \ - configure-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif ld - -.PHONY: maybe-pdf-ld pdf-ld -maybe-pdf-ld: -@if ld -maybe-pdf-ld: pdf-ld - -pdf-ld: \ - configure-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif ld - -.PHONY: maybe-html-ld html-ld -maybe-html-ld: -@if ld -maybe-html-ld: html-ld - -html-ld: \ - configure-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif ld - -.PHONY: maybe-TAGS-ld TAGS-ld -maybe-TAGS-ld: -@if ld -maybe-TAGS-ld: TAGS-ld - -TAGS-ld: \ - configure-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif ld - -.PHONY: maybe-install-info-ld install-info-ld -maybe-install-info-ld: -@if ld -maybe-install-info-ld: install-info-ld - -install-info-ld: \ - configure-ld \ - info-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif ld - -.PHONY: maybe-install-pdf-ld install-pdf-ld -maybe-install-pdf-ld: -@if ld -maybe-install-pdf-ld: install-pdf-ld - -install-pdf-ld: \ - configure-ld \ - pdf-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif ld - -.PHONY: maybe-install-html-ld install-html-ld -maybe-install-html-ld: -@if ld -maybe-install-html-ld: install-html-ld - -install-html-ld: \ - configure-ld \ - html-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif ld - -.PHONY: maybe-installcheck-ld installcheck-ld -maybe-installcheck-ld: -@if ld -maybe-installcheck-ld: installcheck-ld - -installcheck-ld: \ - configure-ld - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif ld - -.PHONY: maybe-mostlyclean-ld mostlyclean-ld -maybe-mostlyclean-ld: -@if ld -maybe-mostlyclean-ld: mostlyclean-ld - -mostlyclean-ld: - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif ld - -.PHONY: maybe-clean-ld clean-ld -maybe-clean-ld: -@if ld -maybe-clean-ld: clean-ld - -clean-ld: - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif ld - -.PHONY: maybe-distclean-ld distclean-ld -maybe-distclean-ld: -@if ld -maybe-distclean-ld: distclean-ld - -distclean-ld: - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif ld - -.PHONY: maybe-maintainer-clean-ld maintainer-clean-ld -maybe-maintainer-clean-ld: -@if ld -maybe-maintainer-clean-ld: maintainer-clean-ld - -maintainer-clean-ld: - @[ -f ./ld/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in ld" ; \ - (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif ld - - - -.PHONY: configure-libcpp maybe-configure-libcpp -maybe-configure-libcpp: -@if gcc-bootstrap -configure-libcpp: stage_current -@endif gcc-bootstrap -@if libcpp -maybe-configure-libcpp: configure-libcpp -configure-libcpp: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/libcpp; \ - cd "$(HOST_SUBDIR)/libcpp" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif libcpp - - - -.PHONY: configure-stage1-libcpp maybe-configure-stage1-libcpp -maybe-configure-stage1-libcpp: -@if libcpp-bootstrap -maybe-configure-stage1-libcpp: configure-stage1-libcpp -configure-stage1-libcpp: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/libcpp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - cd $(HOST_SUBDIR)/libcpp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif libcpp-bootstrap - -.PHONY: configure-stage2-libcpp maybe-configure-stage2-libcpp -maybe-configure-stage2-libcpp: -@if libcpp-bootstrap -maybe-configure-stage2-libcpp: configure-stage2-libcpp -configure-stage2-libcpp: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/libcpp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - cd $(HOST_SUBDIR)/libcpp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif libcpp-bootstrap - -.PHONY: configure-stage3-libcpp maybe-configure-stage3-libcpp -maybe-configure-stage3-libcpp: -@if libcpp-bootstrap -maybe-configure-stage3-libcpp: configure-stage3-libcpp -configure-stage3-libcpp: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/libcpp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - cd $(HOST_SUBDIR)/libcpp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif libcpp-bootstrap - -.PHONY: configure-stage4-libcpp maybe-configure-stage4-libcpp -maybe-configure-stage4-libcpp: -@if libcpp-bootstrap -maybe-configure-stage4-libcpp: configure-stage4-libcpp -configure-stage4-libcpp: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/libcpp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - cd $(HOST_SUBDIR)/libcpp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif libcpp-bootstrap - -.PHONY: configure-stageprofile-libcpp maybe-configure-stageprofile-libcpp -maybe-configure-stageprofile-libcpp: -@if libcpp-bootstrap -maybe-configure-stageprofile-libcpp: configure-stageprofile-libcpp -configure-stageprofile-libcpp: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/libcpp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - cd $(HOST_SUBDIR)/libcpp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif libcpp-bootstrap - -.PHONY: configure-stagefeedback-libcpp maybe-configure-stagefeedback-libcpp -maybe-configure-stagefeedback-libcpp: -@if libcpp-bootstrap -maybe-configure-stagefeedback-libcpp: configure-stagefeedback-libcpp -configure-stagefeedback-libcpp: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/libcpp ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - cd $(HOST_SUBDIR)/libcpp || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif libcpp-bootstrap - - - - - -.PHONY: all-libcpp maybe-all-libcpp -maybe-all-libcpp: -@if gcc-bootstrap -all-libcpp: stage_current -@endif gcc-bootstrap -@if libcpp -TARGET-libcpp=all -maybe-all-libcpp: all-libcpp -all-libcpp: configure-libcpp - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-libcpp)) -@endif libcpp - - - -.PHONY: all-stage1-libcpp maybe-all-stage1-libcpp -.PHONY: clean-stage1-libcpp maybe-clean-stage1-libcpp -maybe-all-stage1-libcpp: -maybe-clean-stage1-libcpp: -@if libcpp-bootstrap -maybe-all-stage1-libcpp: all-stage1-libcpp -all-stage1: all-stage1-libcpp -TARGET-stage1-libcpp = $(TARGET-libcpp) -all-stage1-libcpp: configure-stage1-libcpp - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-libcpp) - -maybe-clean-stage1-libcpp: clean-stage1-libcpp -clean-stage1: clean-stage1-libcpp -clean-stage1-libcpp: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/libcpp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-libcpp/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif libcpp-bootstrap - - -.PHONY: all-stage2-libcpp maybe-all-stage2-libcpp -.PHONY: clean-stage2-libcpp maybe-clean-stage2-libcpp -maybe-all-stage2-libcpp: -maybe-clean-stage2-libcpp: -@if libcpp-bootstrap -maybe-all-stage2-libcpp: all-stage2-libcpp -all-stage2: all-stage2-libcpp -TARGET-stage2-libcpp = $(TARGET-libcpp) -all-stage2-libcpp: configure-stage2-libcpp - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-libcpp) - -maybe-clean-stage2-libcpp: clean-stage2-libcpp -clean-stage2: clean-stage2-libcpp -clean-stage2-libcpp: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/libcpp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-libcpp/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libcpp-bootstrap - - -.PHONY: all-stage3-libcpp maybe-all-stage3-libcpp -.PHONY: clean-stage3-libcpp maybe-clean-stage3-libcpp -maybe-all-stage3-libcpp: -maybe-clean-stage3-libcpp: -@if libcpp-bootstrap -maybe-all-stage3-libcpp: all-stage3-libcpp -all-stage3: all-stage3-libcpp -TARGET-stage3-libcpp = $(TARGET-libcpp) -all-stage3-libcpp: configure-stage3-libcpp - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-libcpp) - -maybe-clean-stage3-libcpp: clean-stage3-libcpp -clean-stage3: clean-stage3-libcpp -clean-stage3-libcpp: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/libcpp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-libcpp/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libcpp-bootstrap - - -.PHONY: all-stage4-libcpp maybe-all-stage4-libcpp -.PHONY: clean-stage4-libcpp maybe-clean-stage4-libcpp -maybe-all-stage4-libcpp: -maybe-clean-stage4-libcpp: -@if libcpp-bootstrap -maybe-all-stage4-libcpp: all-stage4-libcpp -all-stage4: all-stage4-libcpp -TARGET-stage4-libcpp = $(TARGET-libcpp) -all-stage4-libcpp: configure-stage4-libcpp - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-libcpp) - -maybe-clean-stage4-libcpp: clean-stage4-libcpp -clean-stage4: clean-stage4-libcpp -clean-stage4-libcpp: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/libcpp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-libcpp/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libcpp-bootstrap - - -.PHONY: all-stageprofile-libcpp maybe-all-stageprofile-libcpp -.PHONY: clean-stageprofile-libcpp maybe-clean-stageprofile-libcpp -maybe-all-stageprofile-libcpp: -maybe-clean-stageprofile-libcpp: -@if libcpp-bootstrap -maybe-all-stageprofile-libcpp: all-stageprofile-libcpp -all-stageprofile: all-stageprofile-libcpp -TARGET-stageprofile-libcpp = $(TARGET-libcpp) -all-stageprofile-libcpp: configure-stageprofile-libcpp - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-libcpp) - -maybe-clean-stageprofile-libcpp: clean-stageprofile-libcpp -clean-stageprofile: clean-stageprofile-libcpp -clean-stageprofile-libcpp: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/libcpp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-libcpp/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libcpp-bootstrap - - -.PHONY: all-stagefeedback-libcpp maybe-all-stagefeedback-libcpp -.PHONY: clean-stagefeedback-libcpp maybe-clean-stagefeedback-libcpp -maybe-all-stagefeedback-libcpp: -maybe-clean-stagefeedback-libcpp: -@if libcpp-bootstrap -maybe-all-stagefeedback-libcpp: all-stagefeedback-libcpp -all-stagefeedback: all-stagefeedback-libcpp -TARGET-stagefeedback-libcpp = $(TARGET-libcpp) -all-stagefeedback-libcpp: configure-stagefeedback-libcpp - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-libcpp) - -maybe-clean-stagefeedback-libcpp: clean-stagefeedback-libcpp -clean-stagefeedback: clean-stagefeedback-libcpp -clean-stagefeedback-libcpp: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/libcpp/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-libcpp/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libcpp-bootstrap - - - - - -.PHONY: check-libcpp maybe-check-libcpp -maybe-check-libcpp: -@if libcpp -maybe-check-libcpp: check-libcpp - -check-libcpp: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif libcpp - -.PHONY: install-libcpp maybe-install-libcpp -maybe-install-libcpp: -@if libcpp -maybe-install-libcpp: install-libcpp - -install-libcpp: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif libcpp - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-libcpp info-libcpp -maybe-info-libcpp: -@if libcpp -maybe-info-libcpp: info-libcpp - -info-libcpp: \ - configure-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-dvi-libcpp dvi-libcpp -maybe-dvi-libcpp: -@if libcpp -maybe-dvi-libcpp: dvi-libcpp - -dvi-libcpp: \ - configure-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-pdf-libcpp pdf-libcpp -maybe-pdf-libcpp: -@if libcpp -maybe-pdf-libcpp: pdf-libcpp - -pdf-libcpp: \ - configure-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-html-libcpp html-libcpp -maybe-html-libcpp: -@if libcpp -maybe-html-libcpp: html-libcpp - -html-libcpp: \ - configure-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-TAGS-libcpp TAGS-libcpp -maybe-TAGS-libcpp: -@if libcpp -maybe-TAGS-libcpp: TAGS-libcpp - -TAGS-libcpp: \ - configure-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-install-info-libcpp install-info-libcpp -maybe-install-info-libcpp: -@if libcpp -maybe-install-info-libcpp: install-info-libcpp - -install-info-libcpp: \ - configure-libcpp \ - info-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-install-pdf-libcpp install-pdf-libcpp -maybe-install-pdf-libcpp: -@if libcpp -maybe-install-pdf-libcpp: install-pdf-libcpp - -install-pdf-libcpp: \ - configure-libcpp \ - pdf-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-install-html-libcpp install-html-libcpp -maybe-install-html-libcpp: -@if libcpp -maybe-install-html-libcpp: install-html-libcpp - -install-html-libcpp: \ - configure-libcpp \ - html-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-installcheck-libcpp installcheck-libcpp -maybe-installcheck-libcpp: -@if libcpp -maybe-installcheck-libcpp: installcheck-libcpp - -installcheck-libcpp: \ - configure-libcpp - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-mostlyclean-libcpp mostlyclean-libcpp -maybe-mostlyclean-libcpp: -@if libcpp -maybe-mostlyclean-libcpp: mostlyclean-libcpp - -mostlyclean-libcpp: - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-clean-libcpp clean-libcpp -maybe-clean-libcpp: -@if libcpp -maybe-clean-libcpp: clean-libcpp - -clean-libcpp: - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-distclean-libcpp distclean-libcpp -maybe-distclean-libcpp: -@if libcpp -maybe-distclean-libcpp: distclean-libcpp - -distclean-libcpp: - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif libcpp - -.PHONY: maybe-maintainer-clean-libcpp maintainer-clean-libcpp -maybe-maintainer-clean-libcpp: -@if libcpp -maybe-maintainer-clean-libcpp: maintainer-clean-libcpp - -maintainer-clean-libcpp: - @[ -f ./libcpp/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in libcpp" ; \ - (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif libcpp - - - -.PHONY: configure-libdecnumber maybe-configure-libdecnumber -maybe-configure-libdecnumber: -@if gcc-bootstrap -configure-libdecnumber: stage_current -@endif gcc-bootstrap -@if libdecnumber -maybe-configure-libdecnumber: configure-libdecnumber -configure-libdecnumber: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/libdecnumber; \ - cd "$(HOST_SUBDIR)/libdecnumber" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif libdecnumber - - - -.PHONY: configure-stage1-libdecnumber maybe-configure-stage1-libdecnumber -maybe-configure-stage1-libdecnumber: -@if libdecnumber-bootstrap -maybe-configure-stage1-libdecnumber: configure-stage1-libdecnumber -configure-stage1-libdecnumber: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/libdecnumber ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif libdecnumber-bootstrap - -.PHONY: configure-stage2-libdecnumber maybe-configure-stage2-libdecnumber -maybe-configure-stage2-libdecnumber: -@if libdecnumber-bootstrap -maybe-configure-stage2-libdecnumber: configure-stage2-libdecnumber -configure-stage2-libdecnumber: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/libdecnumber ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif libdecnumber-bootstrap - -.PHONY: configure-stage3-libdecnumber maybe-configure-stage3-libdecnumber -maybe-configure-stage3-libdecnumber: -@if libdecnumber-bootstrap -maybe-configure-stage3-libdecnumber: configure-stage3-libdecnumber -configure-stage3-libdecnumber: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/libdecnumber ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif libdecnumber-bootstrap - -.PHONY: configure-stage4-libdecnumber maybe-configure-stage4-libdecnumber -maybe-configure-stage4-libdecnumber: -@if libdecnumber-bootstrap -maybe-configure-stage4-libdecnumber: configure-stage4-libdecnumber -configure-stage4-libdecnumber: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/libdecnumber ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif libdecnumber-bootstrap - -.PHONY: configure-stageprofile-libdecnumber maybe-configure-stageprofile-libdecnumber -maybe-configure-stageprofile-libdecnumber: -@if libdecnumber-bootstrap -maybe-configure-stageprofile-libdecnumber: configure-stageprofile-libdecnumber -configure-stageprofile-libdecnumber: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/libdecnumber ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif libdecnumber-bootstrap - -.PHONY: configure-stagefeedback-libdecnumber maybe-configure-stagefeedback-libdecnumber -maybe-configure-stagefeedback-libdecnumber: -@if libdecnumber-bootstrap -maybe-configure-stagefeedback-libdecnumber: configure-stagefeedback-libdecnumber -configure-stagefeedback-libdecnumber: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/libdecnumber ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif libdecnumber-bootstrap - - - - - -.PHONY: all-libdecnumber maybe-all-libdecnumber -maybe-all-libdecnumber: -@if gcc-bootstrap -all-libdecnumber: stage_current -@endif gcc-bootstrap -@if libdecnumber -TARGET-libdecnumber=all -maybe-all-libdecnumber: all-libdecnumber -all-libdecnumber: configure-libdecnumber - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-libdecnumber)) -@endif libdecnumber - - - -.PHONY: all-stage1-libdecnumber maybe-all-stage1-libdecnumber -.PHONY: clean-stage1-libdecnumber maybe-clean-stage1-libdecnumber -maybe-all-stage1-libdecnumber: -maybe-clean-stage1-libdecnumber: -@if libdecnumber-bootstrap -maybe-all-stage1-libdecnumber: all-stage1-libdecnumber -all-stage1: all-stage1-libdecnumber -TARGET-stage1-libdecnumber = $(TARGET-libdecnumber) -all-stage1-libdecnumber: configure-stage1-libdecnumber - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-libdecnumber) - -maybe-clean-stage1-libdecnumber: clean-stage1-libdecnumber -clean-stage1: clean-stage1-libdecnumber -clean-stage1-libdecnumber: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/libdecnumber/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-libdecnumber/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif libdecnumber-bootstrap - - -.PHONY: all-stage2-libdecnumber maybe-all-stage2-libdecnumber -.PHONY: clean-stage2-libdecnumber maybe-clean-stage2-libdecnumber -maybe-all-stage2-libdecnumber: -maybe-clean-stage2-libdecnumber: -@if libdecnumber-bootstrap -maybe-all-stage2-libdecnumber: all-stage2-libdecnumber -all-stage2: all-stage2-libdecnumber -TARGET-stage2-libdecnumber = $(TARGET-libdecnumber) -all-stage2-libdecnumber: configure-stage2-libdecnumber - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-libdecnumber) - -maybe-clean-stage2-libdecnumber: clean-stage2-libdecnumber -clean-stage2: clean-stage2-libdecnumber -clean-stage2-libdecnumber: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/libdecnumber/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-libdecnumber/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libdecnumber-bootstrap - - -.PHONY: all-stage3-libdecnumber maybe-all-stage3-libdecnumber -.PHONY: clean-stage3-libdecnumber maybe-clean-stage3-libdecnumber -maybe-all-stage3-libdecnumber: -maybe-clean-stage3-libdecnumber: -@if libdecnumber-bootstrap -maybe-all-stage3-libdecnumber: all-stage3-libdecnumber -all-stage3: all-stage3-libdecnumber -TARGET-stage3-libdecnumber = $(TARGET-libdecnumber) -all-stage3-libdecnumber: configure-stage3-libdecnumber - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-libdecnumber) - -maybe-clean-stage3-libdecnumber: clean-stage3-libdecnumber -clean-stage3: clean-stage3-libdecnumber -clean-stage3-libdecnumber: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/libdecnumber/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-libdecnumber/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libdecnumber-bootstrap - - -.PHONY: all-stage4-libdecnumber maybe-all-stage4-libdecnumber -.PHONY: clean-stage4-libdecnumber maybe-clean-stage4-libdecnumber -maybe-all-stage4-libdecnumber: -maybe-clean-stage4-libdecnumber: -@if libdecnumber-bootstrap -maybe-all-stage4-libdecnumber: all-stage4-libdecnumber -all-stage4: all-stage4-libdecnumber -TARGET-stage4-libdecnumber = $(TARGET-libdecnumber) -all-stage4-libdecnumber: configure-stage4-libdecnumber - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-libdecnumber) - -maybe-clean-stage4-libdecnumber: clean-stage4-libdecnumber -clean-stage4: clean-stage4-libdecnumber -clean-stage4-libdecnumber: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/libdecnumber/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-libdecnumber/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libdecnumber-bootstrap - - -.PHONY: all-stageprofile-libdecnumber maybe-all-stageprofile-libdecnumber -.PHONY: clean-stageprofile-libdecnumber maybe-clean-stageprofile-libdecnumber -maybe-all-stageprofile-libdecnumber: -maybe-clean-stageprofile-libdecnumber: -@if libdecnumber-bootstrap -maybe-all-stageprofile-libdecnumber: all-stageprofile-libdecnumber -all-stageprofile: all-stageprofile-libdecnumber -TARGET-stageprofile-libdecnumber = $(TARGET-libdecnumber) -all-stageprofile-libdecnumber: configure-stageprofile-libdecnumber - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-libdecnumber) - -maybe-clean-stageprofile-libdecnumber: clean-stageprofile-libdecnumber -clean-stageprofile: clean-stageprofile-libdecnumber -clean-stageprofile-libdecnumber: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/libdecnumber/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-libdecnumber/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libdecnumber-bootstrap - - -.PHONY: all-stagefeedback-libdecnumber maybe-all-stagefeedback-libdecnumber -.PHONY: clean-stagefeedback-libdecnumber maybe-clean-stagefeedback-libdecnumber -maybe-all-stagefeedback-libdecnumber: -maybe-clean-stagefeedback-libdecnumber: -@if libdecnumber-bootstrap -maybe-all-stagefeedback-libdecnumber: all-stagefeedback-libdecnumber -all-stagefeedback: all-stagefeedback-libdecnumber -TARGET-stagefeedback-libdecnumber = $(TARGET-libdecnumber) -all-stagefeedback-libdecnumber: configure-stagefeedback-libdecnumber - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-libdecnumber) - -maybe-clean-stagefeedback-libdecnumber: clean-stagefeedback-libdecnumber -clean-stagefeedback: clean-stagefeedback-libdecnumber -clean-stagefeedback-libdecnumber: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/libdecnumber/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-libdecnumber/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libdecnumber-bootstrap - - - - - -.PHONY: check-libdecnumber maybe-check-libdecnumber -maybe-check-libdecnumber: -@if libdecnumber -maybe-check-libdecnumber: check-libdecnumber - -check-libdecnumber: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif libdecnumber - -.PHONY: install-libdecnumber maybe-install-libdecnumber -maybe-install-libdecnumber: -@if libdecnumber -maybe-install-libdecnumber: install-libdecnumber - -install-libdecnumber: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif libdecnumber - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-libdecnumber info-libdecnumber -maybe-info-libdecnumber: -@if libdecnumber -maybe-info-libdecnumber: info-libdecnumber - -info-libdecnumber: \ - configure-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-dvi-libdecnumber dvi-libdecnumber -maybe-dvi-libdecnumber: -@if libdecnumber -maybe-dvi-libdecnumber: dvi-libdecnumber - -dvi-libdecnumber: \ - configure-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-pdf-libdecnumber pdf-libdecnumber -maybe-pdf-libdecnumber: -@if libdecnumber -maybe-pdf-libdecnumber: pdf-libdecnumber - -pdf-libdecnumber: \ - configure-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-html-libdecnumber html-libdecnumber -maybe-html-libdecnumber: -@if libdecnumber -maybe-html-libdecnumber: html-libdecnumber - -html-libdecnumber: \ - configure-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-TAGS-libdecnumber TAGS-libdecnumber -maybe-TAGS-libdecnumber: -@if libdecnumber -maybe-TAGS-libdecnumber: TAGS-libdecnumber - -TAGS-libdecnumber: \ - configure-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-install-info-libdecnumber install-info-libdecnumber -maybe-install-info-libdecnumber: -@if libdecnumber -maybe-install-info-libdecnumber: install-info-libdecnumber - -install-info-libdecnumber: \ - configure-libdecnumber \ - info-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-install-pdf-libdecnumber install-pdf-libdecnumber -maybe-install-pdf-libdecnumber: -@if libdecnumber -maybe-install-pdf-libdecnumber: install-pdf-libdecnumber - -install-pdf-libdecnumber: \ - configure-libdecnumber \ - pdf-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-install-html-libdecnumber install-html-libdecnumber -maybe-install-html-libdecnumber: -@if libdecnumber -maybe-install-html-libdecnumber: install-html-libdecnumber - -install-html-libdecnumber: \ - configure-libdecnumber \ - html-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-installcheck-libdecnumber installcheck-libdecnumber -maybe-installcheck-libdecnumber: -@if libdecnumber -maybe-installcheck-libdecnumber: installcheck-libdecnumber - -installcheck-libdecnumber: \ - configure-libdecnumber - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-mostlyclean-libdecnumber mostlyclean-libdecnumber -maybe-mostlyclean-libdecnumber: -@if libdecnumber -maybe-mostlyclean-libdecnumber: mostlyclean-libdecnumber - -mostlyclean-libdecnumber: - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-clean-libdecnumber clean-libdecnumber -maybe-clean-libdecnumber: -@if libdecnumber -maybe-clean-libdecnumber: clean-libdecnumber - -clean-libdecnumber: - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-distclean-libdecnumber distclean-libdecnumber -maybe-distclean-libdecnumber: -@if libdecnumber -maybe-distclean-libdecnumber: distclean-libdecnumber - -distclean-libdecnumber: - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif libdecnumber - -.PHONY: maybe-maintainer-clean-libdecnumber maintainer-clean-libdecnumber -maybe-maintainer-clean-libdecnumber: -@if libdecnumber -maybe-maintainer-clean-libdecnumber: maintainer-clean-libdecnumber - -maintainer-clean-libdecnumber: - @[ -f ./libdecnumber/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in libdecnumber" ; \ - (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif libdecnumber - - - -.PHONY: configure-libgui maybe-configure-libgui -maybe-configure-libgui: -@if gcc-bootstrap -configure-libgui: stage_current -@endif gcc-bootstrap -@if libgui -maybe-configure-libgui: configure-libgui -configure-libgui: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/libgui/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgui ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/libgui; \ - cd "$(HOST_SUBDIR)/libgui" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libgui/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgui"; \ - libsrcdir="$$s/libgui"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif libgui - - - - - -.PHONY: all-libgui maybe-all-libgui -maybe-all-libgui: -@if gcc-bootstrap -all-libgui: stage_current -@endif gcc-bootstrap -@if libgui -TARGET-libgui=all -maybe-all-libgui: all-libgui -all-libgui: configure-libgui - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-libgui)) -@endif libgui - - - - -.PHONY: check-libgui maybe-check-libgui -maybe-check-libgui: -@if libgui -maybe-check-libgui: check-libgui - -check-libgui: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif libgui - -.PHONY: install-libgui maybe-install-libgui -maybe-install-libgui: -@if libgui -maybe-install-libgui: install-libgui - -install-libgui: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif libgui - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-libgui info-libgui -maybe-info-libgui: -@if libgui -maybe-info-libgui: info-libgui - -info-libgui: \ - configure-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-dvi-libgui dvi-libgui -maybe-dvi-libgui: -@if libgui -maybe-dvi-libgui: dvi-libgui - -dvi-libgui: \ - configure-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-pdf-libgui pdf-libgui -maybe-pdf-libgui: -@if libgui -maybe-pdf-libgui: pdf-libgui - -pdf-libgui: \ - configure-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-html-libgui html-libgui -maybe-html-libgui: -@if libgui -maybe-html-libgui: html-libgui - -html-libgui: \ - configure-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-TAGS-libgui TAGS-libgui -maybe-TAGS-libgui: -@if libgui -maybe-TAGS-libgui: TAGS-libgui - -TAGS-libgui: \ - configure-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-install-info-libgui install-info-libgui -maybe-install-info-libgui: -@if libgui -maybe-install-info-libgui: install-info-libgui - -install-info-libgui: \ - configure-libgui \ - info-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-install-pdf-libgui install-pdf-libgui -maybe-install-pdf-libgui: -@if libgui -maybe-install-pdf-libgui: install-pdf-libgui - -install-pdf-libgui: \ - configure-libgui \ - pdf-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-install-html-libgui install-html-libgui -maybe-install-html-libgui: -@if libgui -maybe-install-html-libgui: install-html-libgui - -install-html-libgui: \ - configure-libgui \ - html-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-installcheck-libgui installcheck-libgui -maybe-installcheck-libgui: -@if libgui -maybe-installcheck-libgui: installcheck-libgui - -installcheck-libgui: \ - configure-libgui - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-mostlyclean-libgui mostlyclean-libgui -maybe-mostlyclean-libgui: -@if libgui -maybe-mostlyclean-libgui: mostlyclean-libgui - -mostlyclean-libgui: - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-clean-libgui clean-libgui -maybe-clean-libgui: -@if libgui -maybe-clean-libgui: clean-libgui - -clean-libgui: - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-distclean-libgui distclean-libgui -maybe-distclean-libgui: -@if libgui -maybe-distclean-libgui: distclean-libgui - -distclean-libgui: - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif libgui - -.PHONY: maybe-maintainer-clean-libgui maintainer-clean-libgui -maybe-maintainer-clean-libgui: -@if libgui -maybe-maintainer-clean-libgui: maintainer-clean-libgui - -maintainer-clean-libgui: - @: $(MAKE); $(unstage) - @[ -f ./libgui/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in libgui" ; \ - (cd $(HOST_SUBDIR)/libgui && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif libgui - - - -.PHONY: configure-libiberty maybe-configure-libiberty -maybe-configure-libiberty: -@if gcc-bootstrap -configure-libiberty: stage_current -@endif gcc-bootstrap -@if libiberty -maybe-configure-libiberty: configure-libiberty -configure-libiberty: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/libiberty; \ - cd "$(HOST_SUBDIR)/libiberty" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif libiberty - - - -.PHONY: configure-stage1-libiberty maybe-configure-stage1-libiberty -maybe-configure-stage1-libiberty: -@if libiberty-bootstrap -maybe-configure-stage1-libiberty: configure-stage1-libiberty -configure-stage1-libiberty: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/libiberty ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - cd $(HOST_SUBDIR)/libiberty || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif libiberty-bootstrap - -.PHONY: configure-stage2-libiberty maybe-configure-stage2-libiberty -maybe-configure-stage2-libiberty: -@if libiberty-bootstrap -maybe-configure-stage2-libiberty: configure-stage2-libiberty -configure-stage2-libiberty: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/libiberty ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - cd $(HOST_SUBDIR)/libiberty || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif libiberty-bootstrap - -.PHONY: configure-stage3-libiberty maybe-configure-stage3-libiberty -maybe-configure-stage3-libiberty: -@if libiberty-bootstrap -maybe-configure-stage3-libiberty: configure-stage3-libiberty -configure-stage3-libiberty: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/libiberty ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - cd $(HOST_SUBDIR)/libiberty || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif libiberty-bootstrap - -.PHONY: configure-stage4-libiberty maybe-configure-stage4-libiberty -maybe-configure-stage4-libiberty: -@if libiberty-bootstrap -maybe-configure-stage4-libiberty: configure-stage4-libiberty -configure-stage4-libiberty: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/libiberty ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - cd $(HOST_SUBDIR)/libiberty || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif libiberty-bootstrap - -.PHONY: configure-stageprofile-libiberty maybe-configure-stageprofile-libiberty -maybe-configure-stageprofile-libiberty: -@if libiberty-bootstrap -maybe-configure-stageprofile-libiberty: configure-stageprofile-libiberty -configure-stageprofile-libiberty: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/libiberty ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - cd $(HOST_SUBDIR)/libiberty || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif libiberty-bootstrap - -.PHONY: configure-stagefeedback-libiberty maybe-configure-stagefeedback-libiberty -maybe-configure-stagefeedback-libiberty: -@if libiberty-bootstrap -maybe-configure-stagefeedback-libiberty: configure-stagefeedback-libiberty -configure-stagefeedback-libiberty: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/libiberty ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - cd $(HOST_SUBDIR)/libiberty || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif libiberty-bootstrap - - - - - -.PHONY: all-libiberty maybe-all-libiberty -maybe-all-libiberty: -@if gcc-bootstrap -all-libiberty: stage_current -@endif gcc-bootstrap -@if libiberty -TARGET-libiberty=all -maybe-all-libiberty: all-libiberty -all-libiberty: configure-libiberty - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-libiberty)) -@endif libiberty - - - -.PHONY: all-stage1-libiberty maybe-all-stage1-libiberty -.PHONY: clean-stage1-libiberty maybe-clean-stage1-libiberty -maybe-all-stage1-libiberty: -maybe-clean-stage1-libiberty: -@if libiberty-bootstrap -maybe-all-stage1-libiberty: all-stage1-libiberty -all-stage1: all-stage1-libiberty -TARGET-stage1-libiberty = $(TARGET-libiberty) -all-stage1-libiberty: configure-stage1-libiberty - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-libiberty) - -maybe-clean-stage1-libiberty: clean-stage1-libiberty -clean-stage1: clean-stage1-libiberty -clean-stage1-libiberty: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/libiberty/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-libiberty/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif libiberty-bootstrap - - -.PHONY: all-stage2-libiberty maybe-all-stage2-libiberty -.PHONY: clean-stage2-libiberty maybe-clean-stage2-libiberty -maybe-all-stage2-libiberty: -maybe-clean-stage2-libiberty: -@if libiberty-bootstrap -maybe-all-stage2-libiberty: all-stage2-libiberty -all-stage2: all-stage2-libiberty -TARGET-stage2-libiberty = $(TARGET-libiberty) -all-stage2-libiberty: configure-stage2-libiberty - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-libiberty) - -maybe-clean-stage2-libiberty: clean-stage2-libiberty -clean-stage2: clean-stage2-libiberty -clean-stage2-libiberty: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/libiberty/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-libiberty/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libiberty-bootstrap - - -.PHONY: all-stage3-libiberty maybe-all-stage3-libiberty -.PHONY: clean-stage3-libiberty maybe-clean-stage3-libiberty -maybe-all-stage3-libiberty: -maybe-clean-stage3-libiberty: -@if libiberty-bootstrap -maybe-all-stage3-libiberty: all-stage3-libiberty -all-stage3: all-stage3-libiberty -TARGET-stage3-libiberty = $(TARGET-libiberty) -all-stage3-libiberty: configure-stage3-libiberty - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-libiberty) - -maybe-clean-stage3-libiberty: clean-stage3-libiberty -clean-stage3: clean-stage3-libiberty -clean-stage3-libiberty: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/libiberty/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-libiberty/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libiberty-bootstrap - - -.PHONY: all-stage4-libiberty maybe-all-stage4-libiberty -.PHONY: clean-stage4-libiberty maybe-clean-stage4-libiberty -maybe-all-stage4-libiberty: -maybe-clean-stage4-libiberty: -@if libiberty-bootstrap -maybe-all-stage4-libiberty: all-stage4-libiberty -all-stage4: all-stage4-libiberty -TARGET-stage4-libiberty = $(TARGET-libiberty) -all-stage4-libiberty: configure-stage4-libiberty - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-libiberty) - -maybe-clean-stage4-libiberty: clean-stage4-libiberty -clean-stage4: clean-stage4-libiberty -clean-stage4-libiberty: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/libiberty/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-libiberty/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libiberty-bootstrap - - -.PHONY: all-stageprofile-libiberty maybe-all-stageprofile-libiberty -.PHONY: clean-stageprofile-libiberty maybe-clean-stageprofile-libiberty -maybe-all-stageprofile-libiberty: -maybe-clean-stageprofile-libiberty: -@if libiberty-bootstrap -maybe-all-stageprofile-libiberty: all-stageprofile-libiberty -all-stageprofile: all-stageprofile-libiberty -TARGET-stageprofile-libiberty = $(TARGET-libiberty) -all-stageprofile-libiberty: configure-stageprofile-libiberty - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-libiberty) - -maybe-clean-stageprofile-libiberty: clean-stageprofile-libiberty -clean-stageprofile: clean-stageprofile-libiberty -clean-stageprofile-libiberty: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/libiberty/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-libiberty/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libiberty-bootstrap - - -.PHONY: all-stagefeedback-libiberty maybe-all-stagefeedback-libiberty -.PHONY: clean-stagefeedback-libiberty maybe-clean-stagefeedback-libiberty -maybe-all-stagefeedback-libiberty: -maybe-clean-stagefeedback-libiberty: -@if libiberty-bootstrap -maybe-all-stagefeedback-libiberty: all-stagefeedback-libiberty -all-stagefeedback: all-stagefeedback-libiberty -TARGET-stagefeedback-libiberty = $(TARGET-libiberty) -all-stagefeedback-libiberty: configure-stagefeedback-libiberty - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-libiberty) - -maybe-clean-stagefeedback-libiberty: clean-stagefeedback-libiberty -clean-stagefeedback: clean-stagefeedback-libiberty -clean-stagefeedback-libiberty: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/libiberty/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-libiberty/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif libiberty-bootstrap - - - - - -.PHONY: check-libiberty maybe-check-libiberty -maybe-check-libiberty: -@if libiberty -maybe-check-libiberty: check-libiberty - -check-libiberty: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif libiberty - -.PHONY: install-libiberty maybe-install-libiberty -maybe-install-libiberty: -@if libiberty -maybe-install-libiberty: install-libiberty - -install-libiberty: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif libiberty - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-libiberty info-libiberty -maybe-info-libiberty: -@if libiberty -maybe-info-libiberty: info-libiberty - -info-libiberty: \ - configure-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-dvi-libiberty dvi-libiberty -maybe-dvi-libiberty: -@if libiberty -maybe-dvi-libiberty: dvi-libiberty - -dvi-libiberty: \ - configure-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-pdf-libiberty pdf-libiberty -maybe-pdf-libiberty: -@if libiberty -maybe-pdf-libiberty: pdf-libiberty - -pdf-libiberty: \ - configure-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-html-libiberty html-libiberty -maybe-html-libiberty: -@if libiberty -maybe-html-libiberty: html-libiberty - -html-libiberty: \ - configure-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-TAGS-libiberty TAGS-libiberty -maybe-TAGS-libiberty: -@if libiberty -maybe-TAGS-libiberty: TAGS-libiberty - -TAGS-libiberty: \ - configure-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-install-info-libiberty install-info-libiberty -maybe-install-info-libiberty: -@if libiberty -maybe-install-info-libiberty: install-info-libiberty - -install-info-libiberty: \ - configure-libiberty \ - info-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-install-pdf-libiberty install-pdf-libiberty -maybe-install-pdf-libiberty: -@if libiberty -maybe-install-pdf-libiberty: install-pdf-libiberty - -install-pdf-libiberty: \ - configure-libiberty \ - pdf-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-install-html-libiberty install-html-libiberty -maybe-install-html-libiberty: -@if libiberty -maybe-install-html-libiberty: install-html-libiberty - -install-html-libiberty: \ - configure-libiberty \ - html-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-installcheck-libiberty installcheck-libiberty -maybe-installcheck-libiberty: -@if libiberty -maybe-installcheck-libiberty: installcheck-libiberty - -installcheck-libiberty: \ - configure-libiberty - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-mostlyclean-libiberty mostlyclean-libiberty -maybe-mostlyclean-libiberty: -@if libiberty -maybe-mostlyclean-libiberty: mostlyclean-libiberty - -mostlyclean-libiberty: - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-clean-libiberty clean-libiberty -maybe-clean-libiberty: -@if libiberty -maybe-clean-libiberty: clean-libiberty - -clean-libiberty: - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-distclean-libiberty distclean-libiberty -maybe-distclean-libiberty: -@if libiberty -maybe-distclean-libiberty: distclean-libiberty - -distclean-libiberty: - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif libiberty - -.PHONY: maybe-maintainer-clean-libiberty maintainer-clean-libiberty -maybe-maintainer-clean-libiberty: -@if libiberty -maybe-maintainer-clean-libiberty: maintainer-clean-libiberty - -maintainer-clean-libiberty: - @[ -f ./libiberty/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in libiberty" ; \ - (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif libiberty - - - -.PHONY: configure-libiconv maybe-configure-libiconv -maybe-configure-libiconv: -@if gcc-bootstrap -configure-libiconv: stage_current -@endif gcc-bootstrap -@if libiconv -maybe-configure-libiconv: configure-libiconv -configure-libiconv: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/libiconv; \ - cd "$(HOST_SUBDIR)/libiconv" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiconv"; \ - libsrcdir="$$s/libiconv"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared \ - || exit 1 -@endif libiconv - - - - - -.PHONY: all-libiconv maybe-all-libiconv -maybe-all-libiconv: -@if gcc-bootstrap -all-libiconv: stage_current -@endif gcc-bootstrap -@if libiconv -TARGET-libiconv=all -maybe-all-libiconv: all-libiconv -all-libiconv: configure-libiconv - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-libiconv)) -@endif libiconv - - - - -.PHONY: check-libiconv maybe-check-libiconv -maybe-check-libiconv: -@if libiconv -maybe-check-libiconv: check-libiconv - -check-libiconv: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif libiconv - -.PHONY: install-libiconv maybe-install-libiconv -maybe-install-libiconv: -@if libiconv -maybe-install-libiconv: install-libiconv - -install-libiconv: - -@endif libiconv - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-libiconv info-libiconv -maybe-info-libiconv: -@if libiconv -maybe-info-libiconv: info-libiconv - -info-libiconv: \ - configure-libiconv - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-dvi-libiconv dvi-libiconv -maybe-dvi-libiconv: -@if libiconv -maybe-dvi-libiconv: dvi-libiconv - -dvi-libiconv: \ - configure-libiconv - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-pdf-libiconv pdf-libiconv -maybe-pdf-libiconv: -@if libiconv -maybe-pdf-libiconv: pdf-libiconv - -pdf-libiconv: \ - configure-libiconv - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-html-libiconv html-libiconv -maybe-html-libiconv: -@if libiconv -maybe-html-libiconv: html-libiconv - -html-libiconv: \ - configure-libiconv - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-TAGS-libiconv TAGS-libiconv -maybe-TAGS-libiconv: -@if libiconv -maybe-TAGS-libiconv: TAGS-libiconv - -TAGS-libiconv: \ - configure-libiconv - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-install-info-libiconv install-info-libiconv -maybe-install-info-libiconv: -@if libiconv -maybe-install-info-libiconv: install-info-libiconv - -# libiconv doesn't support install-info. -install-info-libiconv: - -@endif libiconv - -.PHONY: maybe-install-pdf-libiconv install-pdf-libiconv -maybe-install-pdf-libiconv: -@if libiconv -maybe-install-pdf-libiconv: install-pdf-libiconv - -# libiconv doesn't support install-pdf. -install-pdf-libiconv: - -@endif libiconv - -.PHONY: maybe-install-html-libiconv install-html-libiconv -maybe-install-html-libiconv: -@if libiconv -maybe-install-html-libiconv: install-html-libiconv - -# libiconv doesn't support install-html. -install-html-libiconv: - -@endif libiconv - -.PHONY: maybe-installcheck-libiconv installcheck-libiconv -maybe-installcheck-libiconv: -@if libiconv -maybe-installcheck-libiconv: installcheck-libiconv - -installcheck-libiconv: \ - configure-libiconv - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-mostlyclean-libiconv mostlyclean-libiconv -maybe-mostlyclean-libiconv: -@if libiconv -maybe-mostlyclean-libiconv: mostlyclean-libiconv - -mostlyclean-libiconv: - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-clean-libiconv clean-libiconv -maybe-clean-libiconv: -@if libiconv -maybe-clean-libiconv: clean-libiconv - -clean-libiconv: - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-distclean-libiconv distclean-libiconv -maybe-distclean-libiconv: -@if libiconv -maybe-distclean-libiconv: distclean-libiconv - -distclean-libiconv: - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif libiconv - -.PHONY: maybe-maintainer-clean-libiconv maintainer-clean-libiconv -maybe-maintainer-clean-libiconv: -@if libiconv -maybe-maintainer-clean-libiconv: maintainer-clean-libiconv - -maintainer-clean-libiconv: - @: $(MAKE); $(unstage) - @[ -f ./libiconv/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in libiconv" ; \ - (cd $(HOST_SUBDIR)/libiconv && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif libiconv - - - -.PHONY: configure-libtool maybe-configure-libtool -maybe-configure-libtool: -@if gcc-bootstrap -configure-libtool: stage_current -@endif gcc-bootstrap -@if libtool -maybe-configure-libtool: configure-libtool -configure-libtool: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/libtool/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libtool ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/libtool; \ - cd "$(HOST_SUBDIR)/libtool" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libtool/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libtool"; \ - libsrcdir="$$s/libtool"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif libtool - - - - - -.PHONY: all-libtool maybe-all-libtool -maybe-all-libtool: -@if gcc-bootstrap -all-libtool: stage_current -@endif gcc-bootstrap -@if libtool -TARGET-libtool=all -maybe-all-libtool: all-libtool -all-libtool: configure-libtool - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-libtool)) -@endif libtool - - - - -.PHONY: check-libtool maybe-check-libtool -maybe-check-libtool: -@if libtool -maybe-check-libtool: check-libtool - -check-libtool: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif libtool - -.PHONY: install-libtool maybe-install-libtool -maybe-install-libtool: -@if libtool -maybe-install-libtool: install-libtool - -install-libtool: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif libtool - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-libtool info-libtool -maybe-info-libtool: -@if libtool -maybe-info-libtool: info-libtool - -info-libtool: \ - configure-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-dvi-libtool dvi-libtool -maybe-dvi-libtool: -@if libtool -maybe-dvi-libtool: dvi-libtool - -dvi-libtool: \ - configure-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-pdf-libtool pdf-libtool -maybe-pdf-libtool: -@if libtool -maybe-pdf-libtool: pdf-libtool - -pdf-libtool: \ - configure-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-html-libtool html-libtool -maybe-html-libtool: -@if libtool -maybe-html-libtool: html-libtool - -html-libtool: \ - configure-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-TAGS-libtool TAGS-libtool -maybe-TAGS-libtool: -@if libtool -maybe-TAGS-libtool: TAGS-libtool - -TAGS-libtool: \ - configure-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-install-info-libtool install-info-libtool -maybe-install-info-libtool: -@if libtool -maybe-install-info-libtool: install-info-libtool - -install-info-libtool: \ - configure-libtool \ - info-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-install-pdf-libtool install-pdf-libtool -maybe-install-pdf-libtool: -@if libtool -maybe-install-pdf-libtool: install-pdf-libtool - -install-pdf-libtool: \ - configure-libtool \ - pdf-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-install-html-libtool install-html-libtool -maybe-install-html-libtool: -@if libtool -maybe-install-html-libtool: install-html-libtool - -install-html-libtool: \ - configure-libtool \ - html-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-installcheck-libtool installcheck-libtool -maybe-installcheck-libtool: -@if libtool -maybe-installcheck-libtool: installcheck-libtool - -installcheck-libtool: \ - configure-libtool - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-mostlyclean-libtool mostlyclean-libtool -maybe-mostlyclean-libtool: -@if libtool -maybe-mostlyclean-libtool: mostlyclean-libtool - -mostlyclean-libtool: - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-clean-libtool clean-libtool -maybe-clean-libtool: -@if libtool -maybe-clean-libtool: clean-libtool - -clean-libtool: - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-distclean-libtool distclean-libtool -maybe-distclean-libtool: -@if libtool -maybe-distclean-libtool: distclean-libtool - -distclean-libtool: - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif libtool - -.PHONY: maybe-maintainer-clean-libtool maintainer-clean-libtool -maybe-maintainer-clean-libtool: -@if libtool -maybe-maintainer-clean-libtool: maintainer-clean-libtool - -maintainer-clean-libtool: - @: $(MAKE); $(unstage) - @[ -f ./libtool/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in libtool" ; \ - (cd $(HOST_SUBDIR)/libtool && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif libtool - - - -.PHONY: configure-m4 maybe-configure-m4 -maybe-configure-m4: -@if gcc-bootstrap -configure-m4: stage_current -@endif gcc-bootstrap -@if m4 -maybe-configure-m4: configure-m4 -configure-m4: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/m4/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/m4 ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/m4; \ - cd "$(HOST_SUBDIR)/m4" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/m4/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/m4"; \ - libsrcdir="$$s/m4"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif m4 - - - - - -.PHONY: all-m4 maybe-all-m4 -maybe-all-m4: -@if gcc-bootstrap -all-m4: stage_current -@endif gcc-bootstrap -@if m4 -TARGET-m4=all -maybe-all-m4: all-m4 -all-m4: configure-m4 - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-m4)) -@endif m4 - - - - -.PHONY: check-m4 maybe-check-m4 -maybe-check-m4: -@if m4 -maybe-check-m4: check-m4 - -check-m4: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif m4 - -.PHONY: install-m4 maybe-install-m4 -maybe-install-m4: -@if m4 -maybe-install-m4: install-m4 - -install-m4: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif m4 - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-m4 info-m4 -maybe-info-m4: -@if m4 -maybe-info-m4: info-m4 - -info-m4: \ - configure-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-dvi-m4 dvi-m4 -maybe-dvi-m4: -@if m4 -maybe-dvi-m4: dvi-m4 - -dvi-m4: \ - configure-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-pdf-m4 pdf-m4 -maybe-pdf-m4: -@if m4 -maybe-pdf-m4: pdf-m4 - -pdf-m4: \ - configure-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-html-m4 html-m4 -maybe-html-m4: -@if m4 -maybe-html-m4: html-m4 - -html-m4: \ - configure-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-TAGS-m4 TAGS-m4 -maybe-TAGS-m4: -@if m4 -maybe-TAGS-m4: TAGS-m4 - -TAGS-m4: \ - configure-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-install-info-m4 install-info-m4 -maybe-install-info-m4: -@if m4 -maybe-install-info-m4: install-info-m4 - -install-info-m4: \ - configure-m4 \ - info-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-install-pdf-m4 install-pdf-m4 -maybe-install-pdf-m4: -@if m4 -maybe-install-pdf-m4: install-pdf-m4 - -install-pdf-m4: \ - configure-m4 \ - pdf-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-install-html-m4 install-html-m4 -maybe-install-html-m4: -@if m4 -maybe-install-html-m4: install-html-m4 - -install-html-m4: \ - configure-m4 \ - html-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-installcheck-m4 installcheck-m4 -maybe-installcheck-m4: -@if m4 -maybe-installcheck-m4: installcheck-m4 - -installcheck-m4: \ - configure-m4 - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-mostlyclean-m4 mostlyclean-m4 -maybe-mostlyclean-m4: -@if m4 -maybe-mostlyclean-m4: mostlyclean-m4 - -mostlyclean-m4: - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-clean-m4 clean-m4 -maybe-clean-m4: -@if m4 -maybe-clean-m4: clean-m4 - -clean-m4: - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-distclean-m4 distclean-m4 -maybe-distclean-m4: -@if m4 -maybe-distclean-m4: distclean-m4 - -distclean-m4: - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif m4 - -.PHONY: maybe-maintainer-clean-m4 maintainer-clean-m4 -maybe-maintainer-clean-m4: -@if m4 -maybe-maintainer-clean-m4: maintainer-clean-m4 - -maintainer-clean-m4: - @: $(MAKE); $(unstage) - @[ -f ./m4/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in m4" ; \ - (cd $(HOST_SUBDIR)/m4 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif m4 - - - -.PHONY: configure-make maybe-configure-make -maybe-configure-make: -@if gcc-bootstrap -configure-make: stage_current -@endif gcc-bootstrap -@if make -maybe-configure-make: configure-make -configure-make: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/make/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/make ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/make; \ - cd "$(HOST_SUBDIR)/make" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/make/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/make"; \ - libsrcdir="$$s/make"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif make - - - - - -.PHONY: all-make maybe-all-make -maybe-all-make: -@if gcc-bootstrap -all-make: stage_current -@endif gcc-bootstrap -@if make -TARGET-make=all -maybe-all-make: all-make -all-make: configure-make - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-make)) -@endif make - - - - -.PHONY: check-make maybe-check-make -maybe-check-make: -@if make -maybe-check-make: check-make - -check-make: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif make - -.PHONY: install-make maybe-install-make -maybe-install-make: -@if make -maybe-install-make: install-make - -install-make: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif make - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-make info-make -maybe-info-make: -@if make -maybe-info-make: info-make - -info-make: \ - configure-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif make - -.PHONY: maybe-dvi-make dvi-make -maybe-dvi-make: -@if make -maybe-dvi-make: dvi-make - -dvi-make: \ - configure-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif make - -.PHONY: maybe-pdf-make pdf-make -maybe-pdf-make: -@if make -maybe-pdf-make: pdf-make - -pdf-make: \ - configure-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif make - -.PHONY: maybe-html-make html-make -maybe-html-make: -@if make -maybe-html-make: html-make - -html-make: \ - configure-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif make - -.PHONY: maybe-TAGS-make TAGS-make -maybe-TAGS-make: -@if make -maybe-TAGS-make: TAGS-make - -TAGS-make: \ - configure-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif make - -.PHONY: maybe-install-info-make install-info-make -maybe-install-info-make: -@if make -maybe-install-info-make: install-info-make - -install-info-make: \ - configure-make \ - info-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif make - -.PHONY: maybe-install-pdf-make install-pdf-make -maybe-install-pdf-make: -@if make -maybe-install-pdf-make: install-pdf-make - -install-pdf-make: \ - configure-make \ - pdf-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif make - -.PHONY: maybe-install-html-make install-html-make -maybe-install-html-make: -@if make -maybe-install-html-make: install-html-make - -install-html-make: \ - configure-make \ - html-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif make - -.PHONY: maybe-installcheck-make installcheck-make -maybe-installcheck-make: -@if make -maybe-installcheck-make: installcheck-make - -installcheck-make: \ - configure-make - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif make - -.PHONY: maybe-mostlyclean-make mostlyclean-make -maybe-mostlyclean-make: -@if make -maybe-mostlyclean-make: mostlyclean-make - -mostlyclean-make: - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif make - -.PHONY: maybe-clean-make clean-make -maybe-clean-make: -@if make -maybe-clean-make: clean-make - -clean-make: - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif make - -.PHONY: maybe-distclean-make distclean-make -maybe-distclean-make: -@if make -maybe-distclean-make: distclean-make - -distclean-make: - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif make - -.PHONY: maybe-maintainer-clean-make maintainer-clean-make -maybe-maintainer-clean-make: -@if make -maybe-maintainer-clean-make: maintainer-clean-make - -maintainer-clean-make: - @: $(MAKE); $(unstage) - @[ -f ./make/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in make" ; \ - (cd $(HOST_SUBDIR)/make && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif make - - - -.PHONY: configure-mmalloc maybe-configure-mmalloc -maybe-configure-mmalloc: -@if gcc-bootstrap -configure-mmalloc: stage_current -@endif gcc-bootstrap -@if mmalloc -maybe-configure-mmalloc: configure-mmalloc -configure-mmalloc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/mmalloc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mmalloc ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/mmalloc; \ - cd "$(HOST_SUBDIR)/mmalloc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/mmalloc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/mmalloc"; \ - libsrcdir="$$s/mmalloc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif mmalloc - - - - - -.PHONY: all-mmalloc maybe-all-mmalloc -maybe-all-mmalloc: -@if gcc-bootstrap -all-mmalloc: stage_current -@endif gcc-bootstrap -@if mmalloc -TARGET-mmalloc=all -maybe-all-mmalloc: all-mmalloc -all-mmalloc: configure-mmalloc - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-mmalloc)) -@endif mmalloc - - - - -.PHONY: check-mmalloc maybe-check-mmalloc -maybe-check-mmalloc: -@if mmalloc -maybe-check-mmalloc: check-mmalloc - -check-mmalloc: - -@endif mmalloc - -.PHONY: install-mmalloc maybe-install-mmalloc -maybe-install-mmalloc: -@if mmalloc -maybe-install-mmalloc: install-mmalloc - -install-mmalloc: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif mmalloc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-mmalloc info-mmalloc -maybe-info-mmalloc: -@if mmalloc -maybe-info-mmalloc: info-mmalloc - -info-mmalloc: \ - configure-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-dvi-mmalloc dvi-mmalloc -maybe-dvi-mmalloc: -@if mmalloc -maybe-dvi-mmalloc: dvi-mmalloc - -dvi-mmalloc: \ - configure-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-pdf-mmalloc pdf-mmalloc -maybe-pdf-mmalloc: -@if mmalloc -maybe-pdf-mmalloc: pdf-mmalloc - -pdf-mmalloc: \ - configure-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-html-mmalloc html-mmalloc -maybe-html-mmalloc: -@if mmalloc -maybe-html-mmalloc: html-mmalloc - -html-mmalloc: \ - configure-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-TAGS-mmalloc TAGS-mmalloc -maybe-TAGS-mmalloc: -@if mmalloc -maybe-TAGS-mmalloc: TAGS-mmalloc - -TAGS-mmalloc: \ - configure-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-install-info-mmalloc install-info-mmalloc -maybe-install-info-mmalloc: -@if mmalloc -maybe-install-info-mmalloc: install-info-mmalloc - -install-info-mmalloc: \ - configure-mmalloc \ - info-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-install-pdf-mmalloc install-pdf-mmalloc -maybe-install-pdf-mmalloc: -@if mmalloc -maybe-install-pdf-mmalloc: install-pdf-mmalloc - -install-pdf-mmalloc: \ - configure-mmalloc \ - pdf-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-install-html-mmalloc install-html-mmalloc -maybe-install-html-mmalloc: -@if mmalloc -maybe-install-html-mmalloc: install-html-mmalloc - -install-html-mmalloc: \ - configure-mmalloc \ - html-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-installcheck-mmalloc installcheck-mmalloc -maybe-installcheck-mmalloc: -@if mmalloc -maybe-installcheck-mmalloc: installcheck-mmalloc - -installcheck-mmalloc: \ - configure-mmalloc - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-mostlyclean-mmalloc mostlyclean-mmalloc -maybe-mostlyclean-mmalloc: -@if mmalloc -maybe-mostlyclean-mmalloc: mostlyclean-mmalloc - -mostlyclean-mmalloc: - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-clean-mmalloc clean-mmalloc -maybe-clean-mmalloc: -@if mmalloc -maybe-clean-mmalloc: clean-mmalloc - -clean-mmalloc: - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-distclean-mmalloc distclean-mmalloc -maybe-distclean-mmalloc: -@if mmalloc -maybe-distclean-mmalloc: distclean-mmalloc - -distclean-mmalloc: - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif mmalloc - -.PHONY: maybe-maintainer-clean-mmalloc maintainer-clean-mmalloc -maybe-maintainer-clean-mmalloc: -@if mmalloc -maybe-maintainer-clean-mmalloc: maintainer-clean-mmalloc - -maintainer-clean-mmalloc: - @: $(MAKE); $(unstage) - @[ -f ./mmalloc/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in mmalloc" ; \ - (cd $(HOST_SUBDIR)/mmalloc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif mmalloc - - - -.PHONY: configure-patch maybe-configure-patch -maybe-configure-patch: -@if gcc-bootstrap -configure-patch: stage_current -@endif gcc-bootstrap -@if patch -maybe-configure-patch: configure-patch -configure-patch: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/patch/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/patch ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/patch; \ - cd "$(HOST_SUBDIR)/patch" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/patch/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/patch"; \ - libsrcdir="$$s/patch"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif patch - - - - - -.PHONY: all-patch maybe-all-patch -maybe-all-patch: -@if gcc-bootstrap -all-patch: stage_current -@endif gcc-bootstrap -@if patch -TARGET-patch=all -maybe-all-patch: all-patch -all-patch: configure-patch - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-patch)) -@endif patch - - - - -.PHONY: check-patch maybe-check-patch -maybe-check-patch: -@if patch -maybe-check-patch: check-patch - -check-patch: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif patch - -.PHONY: install-patch maybe-install-patch -maybe-install-patch: -@if patch -maybe-install-patch: install-patch - -install-patch: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif patch - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-patch info-patch -maybe-info-patch: -@if patch -maybe-info-patch: info-patch - -info-patch: \ - configure-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif patch - -.PHONY: maybe-dvi-patch dvi-patch -maybe-dvi-patch: -@if patch -maybe-dvi-patch: dvi-patch - -dvi-patch: \ - configure-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif patch - -.PHONY: maybe-pdf-patch pdf-patch -maybe-pdf-patch: -@if patch -maybe-pdf-patch: pdf-patch - -pdf-patch: \ - configure-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif patch - -.PHONY: maybe-html-patch html-patch -maybe-html-patch: -@if patch -maybe-html-patch: html-patch - -html-patch: \ - configure-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif patch - -.PHONY: maybe-TAGS-patch TAGS-patch -maybe-TAGS-patch: -@if patch -maybe-TAGS-patch: TAGS-patch - -TAGS-patch: \ - configure-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif patch - -.PHONY: maybe-install-info-patch install-info-patch -maybe-install-info-patch: -@if patch -maybe-install-info-patch: install-info-patch - -install-info-patch: \ - configure-patch \ - info-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif patch - -.PHONY: maybe-install-pdf-patch install-pdf-patch -maybe-install-pdf-patch: -@if patch -maybe-install-pdf-patch: install-pdf-patch - -install-pdf-patch: \ - configure-patch \ - pdf-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif patch - -.PHONY: maybe-install-html-patch install-html-patch -maybe-install-html-patch: -@if patch -maybe-install-html-patch: install-html-patch - -install-html-patch: \ - configure-patch \ - html-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif patch - -.PHONY: maybe-installcheck-patch installcheck-patch -maybe-installcheck-patch: -@if patch -maybe-installcheck-patch: installcheck-patch - -installcheck-patch: \ - configure-patch - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif patch - -.PHONY: maybe-mostlyclean-patch mostlyclean-patch -maybe-mostlyclean-patch: -@if patch -maybe-mostlyclean-patch: mostlyclean-patch - -mostlyclean-patch: - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif patch - -.PHONY: maybe-clean-patch clean-patch -maybe-clean-patch: -@if patch -maybe-clean-patch: clean-patch - -clean-patch: - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif patch - -.PHONY: maybe-distclean-patch distclean-patch -maybe-distclean-patch: -@if patch -maybe-distclean-patch: distclean-patch - -distclean-patch: - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif patch - -.PHONY: maybe-maintainer-clean-patch maintainer-clean-patch -maybe-maintainer-clean-patch: -@if patch -maybe-maintainer-clean-patch: maintainer-clean-patch - -maintainer-clean-patch: - @: $(MAKE); $(unstage) - @[ -f ./patch/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in patch" ; \ - (cd $(HOST_SUBDIR)/patch && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif patch - - - -.PHONY: configure-perl maybe-configure-perl -maybe-configure-perl: -@if gcc-bootstrap -configure-perl: stage_current -@endif gcc-bootstrap -@if perl -maybe-configure-perl: configure-perl -configure-perl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/perl/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/perl ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/perl; \ - cd "$(HOST_SUBDIR)/perl" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/perl/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/perl"; \ - libsrcdir="$$s/perl"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif perl - - - - - -.PHONY: all-perl maybe-all-perl -maybe-all-perl: -@if gcc-bootstrap -all-perl: stage_current -@endif gcc-bootstrap -@if perl -TARGET-perl=all -maybe-all-perl: all-perl -all-perl: configure-perl - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-perl)) -@endif perl - - - - -.PHONY: check-perl maybe-check-perl -maybe-check-perl: -@if perl -maybe-check-perl: check-perl - -check-perl: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif perl - -.PHONY: install-perl maybe-install-perl -maybe-install-perl: -@if perl -maybe-install-perl: install-perl - -install-perl: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif perl - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-perl info-perl -maybe-info-perl: -@if perl -maybe-info-perl: info-perl - -info-perl: \ - configure-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif perl - -.PHONY: maybe-dvi-perl dvi-perl -maybe-dvi-perl: -@if perl -maybe-dvi-perl: dvi-perl - -dvi-perl: \ - configure-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif perl - -.PHONY: maybe-pdf-perl pdf-perl -maybe-pdf-perl: -@if perl -maybe-pdf-perl: pdf-perl - -pdf-perl: \ - configure-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif perl - -.PHONY: maybe-html-perl html-perl -maybe-html-perl: -@if perl -maybe-html-perl: html-perl - -html-perl: \ - configure-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif perl - -.PHONY: maybe-TAGS-perl TAGS-perl -maybe-TAGS-perl: -@if perl -maybe-TAGS-perl: TAGS-perl - -TAGS-perl: \ - configure-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif perl - -.PHONY: maybe-install-info-perl install-info-perl -maybe-install-info-perl: -@if perl -maybe-install-info-perl: install-info-perl - -install-info-perl: \ - configure-perl \ - info-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif perl - -.PHONY: maybe-install-pdf-perl install-pdf-perl -maybe-install-pdf-perl: -@if perl -maybe-install-pdf-perl: install-pdf-perl - -install-pdf-perl: \ - configure-perl \ - pdf-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif perl - -.PHONY: maybe-install-html-perl install-html-perl -maybe-install-html-perl: -@if perl -maybe-install-html-perl: install-html-perl - -install-html-perl: \ - configure-perl \ - html-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif perl - -.PHONY: maybe-installcheck-perl installcheck-perl -maybe-installcheck-perl: -@if perl -maybe-installcheck-perl: installcheck-perl - -installcheck-perl: \ - configure-perl - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif perl - -.PHONY: maybe-mostlyclean-perl mostlyclean-perl -maybe-mostlyclean-perl: -@if perl -maybe-mostlyclean-perl: mostlyclean-perl - -mostlyclean-perl: - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif perl - -.PHONY: maybe-clean-perl clean-perl -maybe-clean-perl: -@if perl -maybe-clean-perl: clean-perl - -clean-perl: - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif perl - -.PHONY: maybe-distclean-perl distclean-perl -maybe-distclean-perl: -@if perl -maybe-distclean-perl: distclean-perl - -distclean-perl: - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif perl - -.PHONY: maybe-maintainer-clean-perl maintainer-clean-perl -maybe-maintainer-clean-perl: -@if perl -maybe-maintainer-clean-perl: maintainer-clean-perl - -maintainer-clean-perl: - @: $(MAKE); $(unstage) - @[ -f ./perl/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in perl" ; \ - (cd $(HOST_SUBDIR)/perl && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif perl - - - -.PHONY: configure-prms maybe-configure-prms -maybe-configure-prms: -@if gcc-bootstrap -configure-prms: stage_current -@endif gcc-bootstrap -@if prms -maybe-configure-prms: configure-prms -configure-prms: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/prms/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/prms ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/prms; \ - cd "$(HOST_SUBDIR)/prms" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/prms/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/prms"; \ - libsrcdir="$$s/prms"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif prms - - - - - -.PHONY: all-prms maybe-all-prms -maybe-all-prms: -@if gcc-bootstrap -all-prms: stage_current -@endif gcc-bootstrap -@if prms -TARGET-prms=all -maybe-all-prms: all-prms -all-prms: configure-prms - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-prms)) -@endif prms - - - - -.PHONY: check-prms maybe-check-prms -maybe-check-prms: -@if prms -maybe-check-prms: check-prms - -check-prms: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif prms - -.PHONY: install-prms maybe-install-prms -maybe-install-prms: -@if prms -maybe-install-prms: install-prms - -install-prms: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif prms - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-prms info-prms -maybe-info-prms: -@if prms -maybe-info-prms: info-prms - -info-prms: \ - configure-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif prms - -.PHONY: maybe-dvi-prms dvi-prms -maybe-dvi-prms: -@if prms -maybe-dvi-prms: dvi-prms - -dvi-prms: \ - configure-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif prms - -.PHONY: maybe-pdf-prms pdf-prms -maybe-pdf-prms: -@if prms -maybe-pdf-prms: pdf-prms - -pdf-prms: \ - configure-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif prms - -.PHONY: maybe-html-prms html-prms -maybe-html-prms: -@if prms -maybe-html-prms: html-prms - -html-prms: \ - configure-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif prms - -.PHONY: maybe-TAGS-prms TAGS-prms -maybe-TAGS-prms: -@if prms -maybe-TAGS-prms: TAGS-prms - -TAGS-prms: \ - configure-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif prms - -.PHONY: maybe-install-info-prms install-info-prms -maybe-install-info-prms: -@if prms -maybe-install-info-prms: install-info-prms - -install-info-prms: \ - configure-prms \ - info-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif prms - -.PHONY: maybe-install-pdf-prms install-pdf-prms -maybe-install-pdf-prms: -@if prms -maybe-install-pdf-prms: install-pdf-prms - -install-pdf-prms: \ - configure-prms \ - pdf-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif prms - -.PHONY: maybe-install-html-prms install-html-prms -maybe-install-html-prms: -@if prms -maybe-install-html-prms: install-html-prms - -install-html-prms: \ - configure-prms \ - html-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif prms - -.PHONY: maybe-installcheck-prms installcheck-prms -maybe-installcheck-prms: -@if prms -maybe-installcheck-prms: installcheck-prms - -installcheck-prms: \ - configure-prms - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif prms - -.PHONY: maybe-mostlyclean-prms mostlyclean-prms -maybe-mostlyclean-prms: -@if prms -maybe-mostlyclean-prms: mostlyclean-prms - -mostlyclean-prms: - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif prms - -.PHONY: maybe-clean-prms clean-prms -maybe-clean-prms: -@if prms -maybe-clean-prms: clean-prms - -clean-prms: - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif prms - -.PHONY: maybe-distclean-prms distclean-prms -maybe-distclean-prms: -@if prms -maybe-distclean-prms: distclean-prms - -distclean-prms: - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif prms - -.PHONY: maybe-maintainer-clean-prms maintainer-clean-prms -maybe-maintainer-clean-prms: -@if prms -maybe-maintainer-clean-prms: maintainer-clean-prms - -maintainer-clean-prms: - @: $(MAKE); $(unstage) - @[ -f ./prms/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in prms" ; \ - (cd $(HOST_SUBDIR)/prms && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif prms - - - -.PHONY: configure-rcs maybe-configure-rcs -maybe-configure-rcs: -@if gcc-bootstrap -configure-rcs: stage_current -@endif gcc-bootstrap -@if rcs -maybe-configure-rcs: configure-rcs -configure-rcs: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/rcs/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/rcs ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/rcs; \ - cd "$(HOST_SUBDIR)/rcs" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/rcs/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/rcs"; \ - libsrcdir="$$s/rcs"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif rcs - - - - - -.PHONY: all-rcs maybe-all-rcs -maybe-all-rcs: -@if gcc-bootstrap -all-rcs: stage_current -@endif gcc-bootstrap -@if rcs -TARGET-rcs=all -maybe-all-rcs: all-rcs -all-rcs: configure-rcs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-rcs)) -@endif rcs - - - - -.PHONY: check-rcs maybe-check-rcs -maybe-check-rcs: -@if rcs -maybe-check-rcs: check-rcs - -check-rcs: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif rcs - -.PHONY: install-rcs maybe-install-rcs -maybe-install-rcs: -@if rcs -maybe-install-rcs: install-rcs - -install-rcs: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif rcs - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-rcs info-rcs -maybe-info-rcs: -@if rcs -maybe-info-rcs: info-rcs - -info-rcs: \ - configure-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-dvi-rcs dvi-rcs -maybe-dvi-rcs: -@if rcs -maybe-dvi-rcs: dvi-rcs - -dvi-rcs: \ - configure-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-pdf-rcs pdf-rcs -maybe-pdf-rcs: -@if rcs -maybe-pdf-rcs: pdf-rcs - -pdf-rcs: \ - configure-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-html-rcs html-rcs -maybe-html-rcs: -@if rcs -maybe-html-rcs: html-rcs - -html-rcs: \ - configure-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-TAGS-rcs TAGS-rcs -maybe-TAGS-rcs: -@if rcs -maybe-TAGS-rcs: TAGS-rcs - -TAGS-rcs: \ - configure-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-install-info-rcs install-info-rcs -maybe-install-info-rcs: -@if rcs -maybe-install-info-rcs: install-info-rcs - -install-info-rcs: \ - configure-rcs \ - info-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-install-pdf-rcs install-pdf-rcs -maybe-install-pdf-rcs: -@if rcs -maybe-install-pdf-rcs: install-pdf-rcs - -install-pdf-rcs: \ - configure-rcs \ - pdf-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-install-html-rcs install-html-rcs -maybe-install-html-rcs: -@if rcs -maybe-install-html-rcs: install-html-rcs - -install-html-rcs: \ - configure-rcs \ - html-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-installcheck-rcs installcheck-rcs -maybe-installcheck-rcs: -@if rcs -maybe-installcheck-rcs: installcheck-rcs - -installcheck-rcs: \ - configure-rcs - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-mostlyclean-rcs mostlyclean-rcs -maybe-mostlyclean-rcs: -@if rcs -maybe-mostlyclean-rcs: mostlyclean-rcs - -mostlyclean-rcs: - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-clean-rcs clean-rcs -maybe-clean-rcs: -@if rcs -maybe-clean-rcs: clean-rcs - -clean-rcs: - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-distclean-rcs distclean-rcs -maybe-distclean-rcs: -@if rcs -maybe-distclean-rcs: distclean-rcs - -distclean-rcs: - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif rcs - -.PHONY: maybe-maintainer-clean-rcs maintainer-clean-rcs -maybe-maintainer-clean-rcs: -@if rcs -maybe-maintainer-clean-rcs: maintainer-clean-rcs - -maintainer-clean-rcs: - @: $(MAKE); $(unstage) - @[ -f ./rcs/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in rcs" ; \ - (cd $(HOST_SUBDIR)/rcs && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif rcs - - - -.PHONY: configure-readline maybe-configure-readline -maybe-configure-readline: -@if gcc-bootstrap -configure-readline: stage_current -@endif gcc-bootstrap -@if readline -maybe-configure-readline: configure-readline -configure-readline: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/readline/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/readline ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/readline; \ - cd "$(HOST_SUBDIR)/readline" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/readline/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/readline"; \ - libsrcdir="$$s/readline"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif readline - - - - - -.PHONY: all-readline maybe-all-readline -maybe-all-readline: -@if gcc-bootstrap -all-readline: stage_current -@endif gcc-bootstrap -@if readline -TARGET-readline=all -maybe-all-readline: all-readline -all-readline: configure-readline - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-readline)) -@endif readline - - - - -.PHONY: check-readline maybe-check-readline -maybe-check-readline: -@if readline -maybe-check-readline: check-readline - -check-readline: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif readline - -.PHONY: install-readline maybe-install-readline -maybe-install-readline: -@if readline -maybe-install-readline: install-readline - -install-readline: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif readline - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-readline info-readline -maybe-info-readline: -@if readline -maybe-info-readline: info-readline - -info-readline: \ - configure-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif readline - -.PHONY: maybe-dvi-readline dvi-readline -maybe-dvi-readline: -@if readline -maybe-dvi-readline: dvi-readline - -dvi-readline: \ - configure-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif readline - -.PHONY: maybe-pdf-readline pdf-readline -maybe-pdf-readline: -@if readline -maybe-pdf-readline: pdf-readline - -pdf-readline: \ - configure-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif readline - -.PHONY: maybe-html-readline html-readline -maybe-html-readline: -@if readline -maybe-html-readline: html-readline - -html-readline: \ - configure-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif readline - -.PHONY: maybe-TAGS-readline TAGS-readline -maybe-TAGS-readline: -@if readline -maybe-TAGS-readline: TAGS-readline - -TAGS-readline: \ - configure-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif readline - -.PHONY: maybe-install-info-readline install-info-readline -maybe-install-info-readline: -@if readline -maybe-install-info-readline: install-info-readline - -install-info-readline: \ - configure-readline \ - info-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif readline - -.PHONY: maybe-install-pdf-readline install-pdf-readline -maybe-install-pdf-readline: -@if readline -maybe-install-pdf-readline: install-pdf-readline - -install-pdf-readline: \ - configure-readline \ - pdf-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif readline - -.PHONY: maybe-install-html-readline install-html-readline -maybe-install-html-readline: -@if readline -maybe-install-html-readline: install-html-readline - -install-html-readline: \ - configure-readline \ - html-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif readline - -.PHONY: maybe-installcheck-readline installcheck-readline -maybe-installcheck-readline: -@if readline -maybe-installcheck-readline: installcheck-readline - -installcheck-readline: \ - configure-readline - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif readline - -.PHONY: maybe-mostlyclean-readline mostlyclean-readline -maybe-mostlyclean-readline: -@if readline -maybe-mostlyclean-readline: mostlyclean-readline - -mostlyclean-readline: - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif readline - -.PHONY: maybe-clean-readline clean-readline -maybe-clean-readline: -@if readline -maybe-clean-readline: clean-readline - -clean-readline: - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif readline - -.PHONY: maybe-distclean-readline distclean-readline -maybe-distclean-readline: -@if readline -maybe-distclean-readline: distclean-readline - -distclean-readline: - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif readline - -.PHONY: maybe-maintainer-clean-readline maintainer-clean-readline -maybe-maintainer-clean-readline: -@if readline -maybe-maintainer-clean-readline: maintainer-clean-readline - -maintainer-clean-readline: - @: $(MAKE); $(unstage) - @[ -f ./readline/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in readline" ; \ - (cd $(HOST_SUBDIR)/readline && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif readline - - - -.PHONY: configure-release maybe-configure-release -maybe-configure-release: -@if gcc-bootstrap -configure-release: stage_current -@endif gcc-bootstrap -@if release -maybe-configure-release: configure-release -configure-release: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/release/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/release ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/release; \ - cd "$(HOST_SUBDIR)/release" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/release/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/release"; \ - libsrcdir="$$s/release"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif release - - - - - -.PHONY: all-release maybe-all-release -maybe-all-release: -@if gcc-bootstrap -all-release: stage_current -@endif gcc-bootstrap -@if release -TARGET-release=all -maybe-all-release: all-release -all-release: configure-release - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-release)) -@endif release - - - - -.PHONY: check-release maybe-check-release -maybe-check-release: -@if release -maybe-check-release: check-release - -check-release: - -@endif release - -.PHONY: install-release maybe-install-release -maybe-install-release: -@if release -maybe-install-release: install-release - -install-release: - -@endif release - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-release info-release -maybe-info-release: -@if release -maybe-info-release: info-release - -info-release: \ - configure-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif release - -.PHONY: maybe-dvi-release dvi-release -maybe-dvi-release: -@if release -maybe-dvi-release: dvi-release - -dvi-release: \ - configure-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif release - -.PHONY: maybe-pdf-release pdf-release -maybe-pdf-release: -@if release -maybe-pdf-release: pdf-release - -pdf-release: \ - configure-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif release - -.PHONY: maybe-html-release html-release -maybe-html-release: -@if release -maybe-html-release: html-release - -html-release: \ - configure-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif release - -.PHONY: maybe-TAGS-release TAGS-release -maybe-TAGS-release: -@if release -maybe-TAGS-release: TAGS-release - -TAGS-release: \ - configure-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif release - -.PHONY: maybe-install-info-release install-info-release -maybe-install-info-release: -@if release -maybe-install-info-release: install-info-release - -install-info-release: \ - configure-release \ - info-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif release - -.PHONY: maybe-install-pdf-release install-pdf-release -maybe-install-pdf-release: -@if release -maybe-install-pdf-release: install-pdf-release - -install-pdf-release: \ - configure-release \ - pdf-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif release - -.PHONY: maybe-install-html-release install-html-release -maybe-install-html-release: -@if release -maybe-install-html-release: install-html-release - -install-html-release: \ - configure-release \ - html-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif release - -.PHONY: maybe-installcheck-release installcheck-release -maybe-installcheck-release: -@if release -maybe-installcheck-release: installcheck-release - -installcheck-release: \ - configure-release - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif release - -.PHONY: maybe-mostlyclean-release mostlyclean-release -maybe-mostlyclean-release: -@if release -maybe-mostlyclean-release: mostlyclean-release - -mostlyclean-release: - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif release - -.PHONY: maybe-clean-release clean-release -maybe-clean-release: -@if release -maybe-clean-release: clean-release - -clean-release: - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif release - -.PHONY: maybe-distclean-release distclean-release -maybe-distclean-release: -@if release -maybe-distclean-release: distclean-release - -distclean-release: - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif release - -.PHONY: maybe-maintainer-clean-release maintainer-clean-release -maybe-maintainer-clean-release: -@if release -maybe-maintainer-clean-release: maintainer-clean-release - -maintainer-clean-release: - @: $(MAKE); $(unstage) - @[ -f ./release/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in release" ; \ - (cd $(HOST_SUBDIR)/release && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif release - - - -.PHONY: configure-recode maybe-configure-recode -maybe-configure-recode: -@if gcc-bootstrap -configure-recode: stage_current -@endif gcc-bootstrap -@if recode -maybe-configure-recode: configure-recode -configure-recode: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/recode/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/recode ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/recode; \ - cd "$(HOST_SUBDIR)/recode" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/recode/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/recode"; \ - libsrcdir="$$s/recode"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif recode - - - - - -.PHONY: all-recode maybe-all-recode -maybe-all-recode: -@if gcc-bootstrap -all-recode: stage_current -@endif gcc-bootstrap -@if recode -TARGET-recode=all -maybe-all-recode: all-recode -all-recode: configure-recode - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-recode)) -@endif recode - - - - -.PHONY: check-recode maybe-check-recode -maybe-check-recode: -@if recode -maybe-check-recode: check-recode - -check-recode: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif recode - -.PHONY: install-recode maybe-install-recode -maybe-install-recode: -@if recode -maybe-install-recode: install-recode - -install-recode: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif recode - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-recode info-recode -maybe-info-recode: -@if recode -maybe-info-recode: info-recode - -info-recode: \ - configure-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif recode - -.PHONY: maybe-dvi-recode dvi-recode -maybe-dvi-recode: -@if recode -maybe-dvi-recode: dvi-recode - -dvi-recode: \ - configure-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif recode - -.PHONY: maybe-pdf-recode pdf-recode -maybe-pdf-recode: -@if recode -maybe-pdf-recode: pdf-recode - -pdf-recode: \ - configure-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif recode - -.PHONY: maybe-html-recode html-recode -maybe-html-recode: -@if recode -maybe-html-recode: html-recode - -html-recode: \ - configure-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif recode - -.PHONY: maybe-TAGS-recode TAGS-recode -maybe-TAGS-recode: -@if recode -maybe-TAGS-recode: TAGS-recode - -TAGS-recode: \ - configure-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif recode - -.PHONY: maybe-install-info-recode install-info-recode -maybe-install-info-recode: -@if recode -maybe-install-info-recode: install-info-recode - -install-info-recode: \ - configure-recode \ - info-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif recode - -.PHONY: maybe-install-pdf-recode install-pdf-recode -maybe-install-pdf-recode: -@if recode -maybe-install-pdf-recode: install-pdf-recode - -install-pdf-recode: \ - configure-recode \ - pdf-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif recode - -.PHONY: maybe-install-html-recode install-html-recode -maybe-install-html-recode: -@if recode -maybe-install-html-recode: install-html-recode - -install-html-recode: \ - configure-recode \ - html-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif recode - -.PHONY: maybe-installcheck-recode installcheck-recode -maybe-installcheck-recode: -@if recode -maybe-installcheck-recode: installcheck-recode - -installcheck-recode: \ - configure-recode - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif recode - -.PHONY: maybe-mostlyclean-recode mostlyclean-recode -maybe-mostlyclean-recode: -@if recode -maybe-mostlyclean-recode: mostlyclean-recode - -mostlyclean-recode: - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif recode - -.PHONY: maybe-clean-recode clean-recode -maybe-clean-recode: -@if recode -maybe-clean-recode: clean-recode - -clean-recode: - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif recode - -.PHONY: maybe-distclean-recode distclean-recode -maybe-distclean-recode: -@if recode -maybe-distclean-recode: distclean-recode - -distclean-recode: - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif recode - -.PHONY: maybe-maintainer-clean-recode maintainer-clean-recode -maybe-maintainer-clean-recode: -@if recode -maybe-maintainer-clean-recode: maintainer-clean-recode - -maintainer-clean-recode: - @: $(MAKE); $(unstage) - @[ -f ./recode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in recode" ; \ - (cd $(HOST_SUBDIR)/recode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif recode - - - -.PHONY: configure-sed maybe-configure-sed -maybe-configure-sed: -@if gcc-bootstrap -configure-sed: stage_current -@endif gcc-bootstrap -@if sed -maybe-configure-sed: configure-sed -configure-sed: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/sed/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/sed ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/sed; \ - cd "$(HOST_SUBDIR)/sed" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/sed/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/sed"; \ - libsrcdir="$$s/sed"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif sed - - - - - -.PHONY: all-sed maybe-all-sed -maybe-all-sed: -@if gcc-bootstrap -all-sed: stage_current -@endif gcc-bootstrap -@if sed -TARGET-sed=all -maybe-all-sed: all-sed -all-sed: configure-sed - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-sed)) -@endif sed - - - - -.PHONY: check-sed maybe-check-sed -maybe-check-sed: -@if sed -maybe-check-sed: check-sed - -check-sed: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif sed - -.PHONY: install-sed maybe-install-sed -maybe-install-sed: -@if sed -maybe-install-sed: install-sed - -install-sed: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif sed - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-sed info-sed -maybe-info-sed: -@if sed -maybe-info-sed: info-sed - -info-sed: \ - configure-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif sed - -.PHONY: maybe-dvi-sed dvi-sed -maybe-dvi-sed: -@if sed -maybe-dvi-sed: dvi-sed - -dvi-sed: \ - configure-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif sed - -.PHONY: maybe-pdf-sed pdf-sed -maybe-pdf-sed: -@if sed -maybe-pdf-sed: pdf-sed - -pdf-sed: \ - configure-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif sed - -.PHONY: maybe-html-sed html-sed -maybe-html-sed: -@if sed -maybe-html-sed: html-sed - -html-sed: \ - configure-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif sed - -.PHONY: maybe-TAGS-sed TAGS-sed -maybe-TAGS-sed: -@if sed -maybe-TAGS-sed: TAGS-sed - -TAGS-sed: \ - configure-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif sed - -.PHONY: maybe-install-info-sed install-info-sed -maybe-install-info-sed: -@if sed -maybe-install-info-sed: install-info-sed - -install-info-sed: \ - configure-sed \ - info-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif sed - -.PHONY: maybe-install-pdf-sed install-pdf-sed -maybe-install-pdf-sed: -@if sed -maybe-install-pdf-sed: install-pdf-sed - -install-pdf-sed: \ - configure-sed \ - pdf-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif sed - -.PHONY: maybe-install-html-sed install-html-sed -maybe-install-html-sed: -@if sed -maybe-install-html-sed: install-html-sed - -install-html-sed: \ - configure-sed \ - html-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif sed - -.PHONY: maybe-installcheck-sed installcheck-sed -maybe-installcheck-sed: -@if sed -maybe-installcheck-sed: installcheck-sed - -installcheck-sed: \ - configure-sed - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif sed - -.PHONY: maybe-mostlyclean-sed mostlyclean-sed -maybe-mostlyclean-sed: -@if sed -maybe-mostlyclean-sed: mostlyclean-sed - -mostlyclean-sed: - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif sed - -.PHONY: maybe-clean-sed clean-sed -maybe-clean-sed: -@if sed -maybe-clean-sed: clean-sed - -clean-sed: - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif sed - -.PHONY: maybe-distclean-sed distclean-sed -maybe-distclean-sed: -@if sed -maybe-distclean-sed: distclean-sed - -distclean-sed: - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif sed - -.PHONY: maybe-maintainer-clean-sed maintainer-clean-sed -maybe-maintainer-clean-sed: -@if sed -maybe-maintainer-clean-sed: maintainer-clean-sed - -maintainer-clean-sed: - @: $(MAKE); $(unstage) - @[ -f ./sed/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in sed" ; \ - (cd $(HOST_SUBDIR)/sed && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif sed - - - -.PHONY: configure-send-pr maybe-configure-send-pr -maybe-configure-send-pr: -@if gcc-bootstrap -configure-send-pr: stage_current -@endif gcc-bootstrap -@if send-pr -maybe-configure-send-pr: configure-send-pr -configure-send-pr: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/send-pr/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/send-pr ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/send-pr; \ - cd "$(HOST_SUBDIR)/send-pr" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/send-pr/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/send-pr"; \ - libsrcdir="$$s/send-pr"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif send-pr - - - - - -.PHONY: all-send-pr maybe-all-send-pr -maybe-all-send-pr: -@if gcc-bootstrap -all-send-pr: stage_current -@endif gcc-bootstrap -@if send-pr -TARGET-send-pr=all -maybe-all-send-pr: all-send-pr -all-send-pr: configure-send-pr - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-send-pr)) -@endif send-pr - - - - -.PHONY: check-send-pr maybe-check-send-pr -maybe-check-send-pr: -@if send-pr -maybe-check-send-pr: check-send-pr - -check-send-pr: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif send-pr - -.PHONY: install-send-pr maybe-install-send-pr -maybe-install-send-pr: -@if send-pr -maybe-install-send-pr: install-send-pr - -install-send-pr: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif send-pr - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-send-pr info-send-pr -maybe-info-send-pr: -@if send-pr -maybe-info-send-pr: info-send-pr - -info-send-pr: \ - configure-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-dvi-send-pr dvi-send-pr -maybe-dvi-send-pr: -@if send-pr -maybe-dvi-send-pr: dvi-send-pr - -dvi-send-pr: \ - configure-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-pdf-send-pr pdf-send-pr -maybe-pdf-send-pr: -@if send-pr -maybe-pdf-send-pr: pdf-send-pr - -pdf-send-pr: \ - configure-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-html-send-pr html-send-pr -maybe-html-send-pr: -@if send-pr -maybe-html-send-pr: html-send-pr - -html-send-pr: \ - configure-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-TAGS-send-pr TAGS-send-pr -maybe-TAGS-send-pr: -@if send-pr -maybe-TAGS-send-pr: TAGS-send-pr - -TAGS-send-pr: \ - configure-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-install-info-send-pr install-info-send-pr -maybe-install-info-send-pr: -@if send-pr -maybe-install-info-send-pr: install-info-send-pr - -install-info-send-pr: \ - configure-send-pr \ - info-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-install-pdf-send-pr install-pdf-send-pr -maybe-install-pdf-send-pr: -@if send-pr -maybe-install-pdf-send-pr: install-pdf-send-pr - -install-pdf-send-pr: \ - configure-send-pr \ - pdf-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-install-html-send-pr install-html-send-pr -maybe-install-html-send-pr: -@if send-pr -maybe-install-html-send-pr: install-html-send-pr - -install-html-send-pr: \ - configure-send-pr \ - html-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-installcheck-send-pr installcheck-send-pr -maybe-installcheck-send-pr: -@if send-pr -maybe-installcheck-send-pr: installcheck-send-pr - -installcheck-send-pr: \ - configure-send-pr - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-mostlyclean-send-pr mostlyclean-send-pr -maybe-mostlyclean-send-pr: -@if send-pr -maybe-mostlyclean-send-pr: mostlyclean-send-pr - -mostlyclean-send-pr: - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-clean-send-pr clean-send-pr -maybe-clean-send-pr: -@if send-pr -maybe-clean-send-pr: clean-send-pr - -clean-send-pr: - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-distclean-send-pr distclean-send-pr -maybe-distclean-send-pr: -@if send-pr -maybe-distclean-send-pr: distclean-send-pr - -distclean-send-pr: - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif send-pr - -.PHONY: maybe-maintainer-clean-send-pr maintainer-clean-send-pr -maybe-maintainer-clean-send-pr: -@if send-pr -maybe-maintainer-clean-send-pr: maintainer-clean-send-pr - -maintainer-clean-send-pr: - @: $(MAKE); $(unstage) - @[ -f ./send-pr/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in send-pr" ; \ - (cd $(HOST_SUBDIR)/send-pr && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif send-pr - - - -.PHONY: configure-shellutils maybe-configure-shellutils -maybe-configure-shellutils: -@if gcc-bootstrap -configure-shellutils: stage_current -@endif gcc-bootstrap -@if shellutils -maybe-configure-shellutils: configure-shellutils -configure-shellutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/shellutils/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/shellutils ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/shellutils; \ - cd "$(HOST_SUBDIR)/shellutils" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/shellutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/shellutils"; \ - libsrcdir="$$s/shellutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif shellutils - - - - - -.PHONY: all-shellutils maybe-all-shellutils -maybe-all-shellutils: -@if gcc-bootstrap -all-shellutils: stage_current -@endif gcc-bootstrap -@if shellutils -TARGET-shellutils=all -maybe-all-shellutils: all-shellutils -all-shellutils: configure-shellutils - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-shellutils)) -@endif shellutils - - - - -.PHONY: check-shellutils maybe-check-shellutils -maybe-check-shellutils: -@if shellutils -maybe-check-shellutils: check-shellutils - -check-shellutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif shellutils - -.PHONY: install-shellutils maybe-install-shellutils -maybe-install-shellutils: -@if shellutils -maybe-install-shellutils: install-shellutils - -install-shellutils: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif shellutils - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-shellutils info-shellutils -maybe-info-shellutils: -@if shellutils -maybe-info-shellutils: info-shellutils - -info-shellutils: \ - configure-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-dvi-shellutils dvi-shellutils -maybe-dvi-shellutils: -@if shellutils -maybe-dvi-shellutils: dvi-shellutils - -dvi-shellutils: \ - configure-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-pdf-shellutils pdf-shellutils -maybe-pdf-shellutils: -@if shellutils -maybe-pdf-shellutils: pdf-shellutils - -pdf-shellutils: \ - configure-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-html-shellutils html-shellutils -maybe-html-shellutils: -@if shellutils -maybe-html-shellutils: html-shellutils - -html-shellutils: \ - configure-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-TAGS-shellutils TAGS-shellutils -maybe-TAGS-shellutils: -@if shellutils -maybe-TAGS-shellutils: TAGS-shellutils - -TAGS-shellutils: \ - configure-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-install-info-shellutils install-info-shellutils -maybe-install-info-shellutils: -@if shellutils -maybe-install-info-shellutils: install-info-shellutils - -install-info-shellutils: \ - configure-shellutils \ - info-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-install-pdf-shellutils install-pdf-shellutils -maybe-install-pdf-shellutils: -@if shellutils -maybe-install-pdf-shellutils: install-pdf-shellutils - -install-pdf-shellutils: \ - configure-shellutils \ - pdf-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-install-html-shellutils install-html-shellutils -maybe-install-html-shellutils: -@if shellutils -maybe-install-html-shellutils: install-html-shellutils - -install-html-shellutils: \ - configure-shellutils \ - html-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-installcheck-shellutils installcheck-shellutils -maybe-installcheck-shellutils: -@if shellutils -maybe-installcheck-shellutils: installcheck-shellutils - -installcheck-shellutils: \ - configure-shellutils - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-mostlyclean-shellutils mostlyclean-shellutils -maybe-mostlyclean-shellutils: -@if shellutils -maybe-mostlyclean-shellutils: mostlyclean-shellutils - -mostlyclean-shellutils: - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-clean-shellutils clean-shellutils -maybe-clean-shellutils: -@if shellutils -maybe-clean-shellutils: clean-shellutils - -clean-shellutils: - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-distclean-shellutils distclean-shellutils -maybe-distclean-shellutils: -@if shellutils -maybe-distclean-shellutils: distclean-shellutils - -distclean-shellutils: - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif shellutils - -.PHONY: maybe-maintainer-clean-shellutils maintainer-clean-shellutils -maybe-maintainer-clean-shellutils: -@if shellutils -maybe-maintainer-clean-shellutils: maintainer-clean-shellutils - -maintainer-clean-shellutils: - @: $(MAKE); $(unstage) - @[ -f ./shellutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in shellutils" ; \ - (cd $(HOST_SUBDIR)/shellutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif shellutils - - - -.PHONY: configure-sid maybe-configure-sid -maybe-configure-sid: -@if gcc-bootstrap -configure-sid: stage_current -@endif gcc-bootstrap -@if sid -maybe-configure-sid: configure-sid -configure-sid: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/sid/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/sid ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/sid; \ - cd "$(HOST_SUBDIR)/sid" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/sid/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/sid"; \ - libsrcdir="$$s/sid"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif sid - - - - - -.PHONY: all-sid maybe-all-sid -maybe-all-sid: -@if gcc-bootstrap -all-sid: stage_current -@endif gcc-bootstrap -@if sid -TARGET-sid=all -maybe-all-sid: all-sid -all-sid: configure-sid - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-sid)) -@endif sid - - - - -.PHONY: check-sid maybe-check-sid -maybe-check-sid: -@if sid -maybe-check-sid: check-sid - -check-sid: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif sid - -.PHONY: install-sid maybe-install-sid -maybe-install-sid: -@if sid -maybe-install-sid: install-sid - -install-sid: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif sid - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-sid info-sid -maybe-info-sid: -@if sid -maybe-info-sid: info-sid - -info-sid: \ - configure-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif sid - -.PHONY: maybe-dvi-sid dvi-sid -maybe-dvi-sid: -@if sid -maybe-dvi-sid: dvi-sid - -dvi-sid: \ - configure-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif sid - -.PHONY: maybe-pdf-sid pdf-sid -maybe-pdf-sid: -@if sid -maybe-pdf-sid: pdf-sid - -pdf-sid: \ - configure-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif sid - -.PHONY: maybe-html-sid html-sid -maybe-html-sid: -@if sid -maybe-html-sid: html-sid - -html-sid: \ - configure-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif sid - -.PHONY: maybe-TAGS-sid TAGS-sid -maybe-TAGS-sid: -@if sid -maybe-TAGS-sid: TAGS-sid - -TAGS-sid: \ - configure-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif sid - -.PHONY: maybe-install-info-sid install-info-sid -maybe-install-info-sid: -@if sid -maybe-install-info-sid: install-info-sid - -install-info-sid: \ - configure-sid \ - info-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif sid - -.PHONY: maybe-install-pdf-sid install-pdf-sid -maybe-install-pdf-sid: -@if sid -maybe-install-pdf-sid: install-pdf-sid - -install-pdf-sid: \ - configure-sid \ - pdf-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif sid - -.PHONY: maybe-install-html-sid install-html-sid -maybe-install-html-sid: -@if sid -maybe-install-html-sid: install-html-sid - -install-html-sid: \ - configure-sid \ - html-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif sid - -.PHONY: maybe-installcheck-sid installcheck-sid -maybe-installcheck-sid: -@if sid -maybe-installcheck-sid: installcheck-sid - -installcheck-sid: \ - configure-sid - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif sid - -.PHONY: maybe-mostlyclean-sid mostlyclean-sid -maybe-mostlyclean-sid: -@if sid -maybe-mostlyclean-sid: mostlyclean-sid - -mostlyclean-sid: - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif sid - -.PHONY: maybe-clean-sid clean-sid -maybe-clean-sid: -@if sid -maybe-clean-sid: clean-sid - -clean-sid: - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif sid - -.PHONY: maybe-distclean-sid distclean-sid -maybe-distclean-sid: -@if sid -maybe-distclean-sid: distclean-sid - -distclean-sid: - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif sid - -.PHONY: maybe-maintainer-clean-sid maintainer-clean-sid -maybe-maintainer-clean-sid: -@if sid -maybe-maintainer-clean-sid: maintainer-clean-sid - -maintainer-clean-sid: - @: $(MAKE); $(unstage) - @[ -f ./sid/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in sid" ; \ - (cd $(HOST_SUBDIR)/sid && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif sid - - - -.PHONY: configure-sim maybe-configure-sim -maybe-configure-sim: -@if gcc-bootstrap -configure-sim: stage_current -@endif gcc-bootstrap -@if sim -maybe-configure-sim: configure-sim -configure-sim: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/sim/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/sim ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/sim; \ - cd "$(HOST_SUBDIR)/sim" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/sim/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/sim"; \ - libsrcdir="$$s/sim"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif sim - - - - - -.PHONY: all-sim maybe-all-sim -maybe-all-sim: -@if gcc-bootstrap -all-sim: stage_current -@endif gcc-bootstrap -@if sim -TARGET-sim=all -maybe-all-sim: all-sim -all-sim: configure-sim - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-sim)) -@endif sim - - - - -.PHONY: check-sim maybe-check-sim -maybe-check-sim: -@if sim -maybe-check-sim: check-sim - -check-sim: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif sim - -.PHONY: install-sim maybe-install-sim -maybe-install-sim: -@if sim -maybe-install-sim: install-sim - -install-sim: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif sim - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-sim info-sim -maybe-info-sim: -@if sim -maybe-info-sim: info-sim - -info-sim: \ - configure-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif sim - -.PHONY: maybe-dvi-sim dvi-sim -maybe-dvi-sim: -@if sim -maybe-dvi-sim: dvi-sim - -dvi-sim: \ - configure-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif sim - -.PHONY: maybe-pdf-sim pdf-sim -maybe-pdf-sim: -@if sim -maybe-pdf-sim: pdf-sim - -pdf-sim: \ - configure-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif sim - -.PHONY: maybe-html-sim html-sim -maybe-html-sim: -@if sim -maybe-html-sim: html-sim - -html-sim: \ - configure-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif sim - -.PHONY: maybe-TAGS-sim TAGS-sim -maybe-TAGS-sim: -@if sim -maybe-TAGS-sim: TAGS-sim - -TAGS-sim: \ - configure-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif sim - -.PHONY: maybe-install-info-sim install-info-sim -maybe-install-info-sim: -@if sim -maybe-install-info-sim: install-info-sim - -install-info-sim: \ - configure-sim \ - info-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif sim - -.PHONY: maybe-install-pdf-sim install-pdf-sim -maybe-install-pdf-sim: -@if sim -maybe-install-pdf-sim: install-pdf-sim - -install-pdf-sim: \ - configure-sim \ - pdf-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif sim - -.PHONY: maybe-install-html-sim install-html-sim -maybe-install-html-sim: -@if sim -maybe-install-html-sim: install-html-sim - -install-html-sim: \ - configure-sim \ - html-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif sim - -.PHONY: maybe-installcheck-sim installcheck-sim -maybe-installcheck-sim: -@if sim -maybe-installcheck-sim: installcheck-sim - -installcheck-sim: \ - configure-sim - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif sim - -.PHONY: maybe-mostlyclean-sim mostlyclean-sim -maybe-mostlyclean-sim: -@if sim -maybe-mostlyclean-sim: mostlyclean-sim - -mostlyclean-sim: - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif sim - -.PHONY: maybe-clean-sim clean-sim -maybe-clean-sim: -@if sim -maybe-clean-sim: clean-sim - -clean-sim: - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif sim - -.PHONY: maybe-distclean-sim distclean-sim -maybe-distclean-sim: -@if sim -maybe-distclean-sim: distclean-sim - -distclean-sim: - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif sim - -.PHONY: maybe-maintainer-clean-sim maintainer-clean-sim -maybe-maintainer-clean-sim: -@if sim -maybe-maintainer-clean-sim: maintainer-clean-sim - -maintainer-clean-sim: - @: $(MAKE); $(unstage) - @[ -f ./sim/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in sim" ; \ - (cd $(HOST_SUBDIR)/sim && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif sim - - - -.PHONY: configure-tar maybe-configure-tar -maybe-configure-tar: -@if gcc-bootstrap -configure-tar: stage_current -@endif gcc-bootstrap -@if tar -maybe-configure-tar: configure-tar -configure-tar: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/tar/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/tar ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/tar; \ - cd "$(HOST_SUBDIR)/tar" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/tar/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/tar"; \ - libsrcdir="$$s/tar"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif tar - - - - - -.PHONY: all-tar maybe-all-tar -maybe-all-tar: -@if gcc-bootstrap -all-tar: stage_current -@endif gcc-bootstrap -@if tar -TARGET-tar=all -maybe-all-tar: all-tar -all-tar: configure-tar - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-tar)) -@endif tar - - - - -.PHONY: check-tar maybe-check-tar -maybe-check-tar: -@if tar -maybe-check-tar: check-tar - -check-tar: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif tar - -.PHONY: install-tar maybe-install-tar -maybe-install-tar: -@if tar -maybe-install-tar: install-tar - -install-tar: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif tar - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-tar info-tar -maybe-info-tar: -@if tar -maybe-info-tar: info-tar - -info-tar: \ - configure-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif tar - -.PHONY: maybe-dvi-tar dvi-tar -maybe-dvi-tar: -@if tar -maybe-dvi-tar: dvi-tar - -dvi-tar: \ - configure-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif tar - -.PHONY: maybe-pdf-tar pdf-tar -maybe-pdf-tar: -@if tar -maybe-pdf-tar: pdf-tar - -pdf-tar: \ - configure-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif tar - -.PHONY: maybe-html-tar html-tar -maybe-html-tar: -@if tar -maybe-html-tar: html-tar - -html-tar: \ - configure-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif tar - -.PHONY: maybe-TAGS-tar TAGS-tar -maybe-TAGS-tar: -@if tar -maybe-TAGS-tar: TAGS-tar - -TAGS-tar: \ - configure-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif tar - -.PHONY: maybe-install-info-tar install-info-tar -maybe-install-info-tar: -@if tar -maybe-install-info-tar: install-info-tar - -install-info-tar: \ - configure-tar \ - info-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif tar - -.PHONY: maybe-install-pdf-tar install-pdf-tar -maybe-install-pdf-tar: -@if tar -maybe-install-pdf-tar: install-pdf-tar - -install-pdf-tar: \ - configure-tar \ - pdf-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif tar - -.PHONY: maybe-install-html-tar install-html-tar -maybe-install-html-tar: -@if tar -maybe-install-html-tar: install-html-tar - -install-html-tar: \ - configure-tar \ - html-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif tar - -.PHONY: maybe-installcheck-tar installcheck-tar -maybe-installcheck-tar: -@if tar -maybe-installcheck-tar: installcheck-tar - -installcheck-tar: \ - configure-tar - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif tar - -.PHONY: maybe-mostlyclean-tar mostlyclean-tar -maybe-mostlyclean-tar: -@if tar -maybe-mostlyclean-tar: mostlyclean-tar - -mostlyclean-tar: - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif tar - -.PHONY: maybe-clean-tar clean-tar -maybe-clean-tar: -@if tar -maybe-clean-tar: clean-tar - -clean-tar: - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif tar - -.PHONY: maybe-distclean-tar distclean-tar -maybe-distclean-tar: -@if tar -maybe-distclean-tar: distclean-tar - -distclean-tar: - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif tar - -.PHONY: maybe-maintainer-clean-tar maintainer-clean-tar -maybe-maintainer-clean-tar: -@if tar -maybe-maintainer-clean-tar: maintainer-clean-tar - -maintainer-clean-tar: - @: $(MAKE); $(unstage) - @[ -f ./tar/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in tar" ; \ - (cd $(HOST_SUBDIR)/tar && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif tar - - - -.PHONY: configure-texinfo maybe-configure-texinfo -maybe-configure-texinfo: -@if gcc-bootstrap -configure-texinfo: stage_current -@endif gcc-bootstrap -@if texinfo -maybe-configure-texinfo: configure-texinfo -configure-texinfo: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/texinfo/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/texinfo ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/texinfo; \ - cd "$(HOST_SUBDIR)/texinfo" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/texinfo/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/texinfo"; \ - libsrcdir="$$s/texinfo"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif texinfo - - - - - -.PHONY: all-texinfo maybe-all-texinfo -maybe-all-texinfo: -@if gcc-bootstrap -all-texinfo: stage_current -@endif gcc-bootstrap -@if texinfo -TARGET-texinfo=all -maybe-all-texinfo: all-texinfo -all-texinfo: configure-texinfo - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-texinfo)) -@endif texinfo - - - - -.PHONY: check-texinfo maybe-check-texinfo -maybe-check-texinfo: -@if texinfo -maybe-check-texinfo: check-texinfo - -check-texinfo: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif texinfo - -.PHONY: install-texinfo maybe-install-texinfo -maybe-install-texinfo: -@if texinfo -maybe-install-texinfo: install-texinfo - -install-texinfo: - -@endif texinfo - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-texinfo info-texinfo -maybe-info-texinfo: -@if texinfo -maybe-info-texinfo: info-texinfo - -info-texinfo: \ - configure-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-dvi-texinfo dvi-texinfo -maybe-dvi-texinfo: -@if texinfo -maybe-dvi-texinfo: dvi-texinfo - -dvi-texinfo: \ - configure-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-pdf-texinfo pdf-texinfo -maybe-pdf-texinfo: -@if texinfo -maybe-pdf-texinfo: pdf-texinfo - -pdf-texinfo: \ - configure-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-html-texinfo html-texinfo -maybe-html-texinfo: -@if texinfo -maybe-html-texinfo: html-texinfo - -html-texinfo: \ - configure-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-TAGS-texinfo TAGS-texinfo -maybe-TAGS-texinfo: -@if texinfo -maybe-TAGS-texinfo: TAGS-texinfo - -TAGS-texinfo: \ - configure-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-install-info-texinfo install-info-texinfo -maybe-install-info-texinfo: -@if texinfo -maybe-install-info-texinfo: install-info-texinfo - -install-info-texinfo: \ - configure-texinfo \ - info-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-install-pdf-texinfo install-pdf-texinfo -maybe-install-pdf-texinfo: -@if texinfo -maybe-install-pdf-texinfo: install-pdf-texinfo - -install-pdf-texinfo: \ - configure-texinfo \ - pdf-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-install-html-texinfo install-html-texinfo -maybe-install-html-texinfo: -@if texinfo -maybe-install-html-texinfo: install-html-texinfo - -install-html-texinfo: \ - configure-texinfo \ - html-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-installcheck-texinfo installcheck-texinfo -maybe-installcheck-texinfo: -@if texinfo -maybe-installcheck-texinfo: installcheck-texinfo - -installcheck-texinfo: \ - configure-texinfo - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-mostlyclean-texinfo mostlyclean-texinfo -maybe-mostlyclean-texinfo: -@if texinfo -maybe-mostlyclean-texinfo: mostlyclean-texinfo - -mostlyclean-texinfo: - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-clean-texinfo clean-texinfo -maybe-clean-texinfo: -@if texinfo -maybe-clean-texinfo: clean-texinfo - -clean-texinfo: - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-distclean-texinfo distclean-texinfo -maybe-distclean-texinfo: -@if texinfo -maybe-distclean-texinfo: distclean-texinfo - -distclean-texinfo: - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif texinfo - -.PHONY: maybe-maintainer-clean-texinfo maintainer-clean-texinfo -maybe-maintainer-clean-texinfo: -@if texinfo -maybe-maintainer-clean-texinfo: maintainer-clean-texinfo - -maintainer-clean-texinfo: - @: $(MAKE); $(unstage) - @[ -f ./texinfo/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in texinfo" ; \ - (cd $(HOST_SUBDIR)/texinfo && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif texinfo - - - -.PHONY: configure-textutils maybe-configure-textutils -maybe-configure-textutils: -@if gcc-bootstrap -configure-textutils: stage_current -@endif gcc-bootstrap -@if textutils -maybe-configure-textutils: configure-textutils -configure-textutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/textutils/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/textutils ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/textutils; \ - cd "$(HOST_SUBDIR)/textutils" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/textutils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/textutils"; \ - libsrcdir="$$s/textutils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif textutils - - - - - -.PHONY: all-textutils maybe-all-textutils -maybe-all-textutils: -@if gcc-bootstrap -all-textutils: stage_current -@endif gcc-bootstrap -@if textutils -TARGET-textutils=all -maybe-all-textutils: all-textutils -all-textutils: configure-textutils - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-textutils)) -@endif textutils - - - - -.PHONY: check-textutils maybe-check-textutils -maybe-check-textutils: -@if textutils -maybe-check-textutils: check-textutils - -check-textutils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif textutils - -.PHONY: install-textutils maybe-install-textutils -maybe-install-textutils: -@if textutils -maybe-install-textutils: install-textutils - -install-textutils: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif textutils - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-textutils info-textutils -maybe-info-textutils: -@if textutils -maybe-info-textutils: info-textutils - -info-textutils: \ - configure-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-dvi-textutils dvi-textutils -maybe-dvi-textutils: -@if textutils -maybe-dvi-textutils: dvi-textutils - -dvi-textutils: \ - configure-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-pdf-textutils pdf-textutils -maybe-pdf-textutils: -@if textutils -maybe-pdf-textutils: pdf-textutils - -pdf-textutils: \ - configure-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-html-textutils html-textutils -maybe-html-textutils: -@if textutils -maybe-html-textutils: html-textutils - -html-textutils: \ - configure-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-TAGS-textutils TAGS-textutils -maybe-TAGS-textutils: -@if textutils -maybe-TAGS-textutils: TAGS-textutils - -TAGS-textutils: \ - configure-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-install-info-textutils install-info-textutils -maybe-install-info-textutils: -@if textutils -maybe-install-info-textutils: install-info-textutils - -install-info-textutils: \ - configure-textutils \ - info-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-install-pdf-textutils install-pdf-textutils -maybe-install-pdf-textutils: -@if textutils -maybe-install-pdf-textutils: install-pdf-textutils - -install-pdf-textutils: \ - configure-textutils \ - pdf-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-install-html-textutils install-html-textutils -maybe-install-html-textutils: -@if textutils -maybe-install-html-textutils: install-html-textutils - -install-html-textutils: \ - configure-textutils \ - html-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-installcheck-textutils installcheck-textutils -maybe-installcheck-textutils: -@if textutils -maybe-installcheck-textutils: installcheck-textutils - -installcheck-textutils: \ - configure-textutils - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-mostlyclean-textutils mostlyclean-textutils -maybe-mostlyclean-textutils: -@if textutils -maybe-mostlyclean-textutils: mostlyclean-textutils - -mostlyclean-textutils: - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-clean-textutils clean-textutils -maybe-clean-textutils: -@if textutils -maybe-clean-textutils: clean-textutils - -clean-textutils: - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-distclean-textutils distclean-textutils -maybe-distclean-textutils: -@if textutils -maybe-distclean-textutils: distclean-textutils - -distclean-textutils: - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif textutils - -.PHONY: maybe-maintainer-clean-textutils maintainer-clean-textutils -maybe-maintainer-clean-textutils: -@if textutils -maybe-maintainer-clean-textutils: maintainer-clean-textutils - -maintainer-clean-textutils: - @: $(MAKE); $(unstage) - @[ -f ./textutils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in textutils" ; \ - (cd $(HOST_SUBDIR)/textutils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif textutils - - - -.PHONY: configure-time maybe-configure-time -maybe-configure-time: -@if gcc-bootstrap -configure-time: stage_current -@endif gcc-bootstrap -@if time -maybe-configure-time: configure-time -configure-time: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/time/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/time ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/time; \ - cd "$(HOST_SUBDIR)/time" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/time/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/time"; \ - libsrcdir="$$s/time"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif time - - - - - -.PHONY: all-time maybe-all-time -maybe-all-time: -@if gcc-bootstrap -all-time: stage_current -@endif gcc-bootstrap -@if time -TARGET-time=all -maybe-all-time: all-time -all-time: configure-time - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-time)) -@endif time - - - - -.PHONY: check-time maybe-check-time -maybe-check-time: -@if time -maybe-check-time: check-time - -check-time: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif time - -.PHONY: install-time maybe-install-time -maybe-install-time: -@if time -maybe-install-time: install-time - -install-time: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif time - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-time info-time -maybe-info-time: -@if time -maybe-info-time: info-time - -info-time: \ - configure-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif time - -.PHONY: maybe-dvi-time dvi-time -maybe-dvi-time: -@if time -maybe-dvi-time: dvi-time - -dvi-time: \ - configure-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif time - -.PHONY: maybe-pdf-time pdf-time -maybe-pdf-time: -@if time -maybe-pdf-time: pdf-time - -pdf-time: \ - configure-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif time - -.PHONY: maybe-html-time html-time -maybe-html-time: -@if time -maybe-html-time: html-time - -html-time: \ - configure-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif time - -.PHONY: maybe-TAGS-time TAGS-time -maybe-TAGS-time: -@if time -maybe-TAGS-time: TAGS-time - -TAGS-time: \ - configure-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif time - -.PHONY: maybe-install-info-time install-info-time -maybe-install-info-time: -@if time -maybe-install-info-time: install-info-time - -install-info-time: \ - configure-time \ - info-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif time - -.PHONY: maybe-install-pdf-time install-pdf-time -maybe-install-pdf-time: -@if time -maybe-install-pdf-time: install-pdf-time - -install-pdf-time: \ - configure-time \ - pdf-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif time - -.PHONY: maybe-install-html-time install-html-time -maybe-install-html-time: -@if time -maybe-install-html-time: install-html-time - -install-html-time: \ - configure-time \ - html-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif time - -.PHONY: maybe-installcheck-time installcheck-time -maybe-installcheck-time: -@if time -maybe-installcheck-time: installcheck-time - -installcheck-time: \ - configure-time - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif time - -.PHONY: maybe-mostlyclean-time mostlyclean-time -maybe-mostlyclean-time: -@if time -maybe-mostlyclean-time: mostlyclean-time - -mostlyclean-time: - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif time - -.PHONY: maybe-clean-time clean-time -maybe-clean-time: -@if time -maybe-clean-time: clean-time - -clean-time: - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif time - -.PHONY: maybe-distclean-time distclean-time -maybe-distclean-time: -@if time -maybe-distclean-time: distclean-time - -distclean-time: - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif time - -.PHONY: maybe-maintainer-clean-time maintainer-clean-time -maybe-maintainer-clean-time: -@if time -maybe-maintainer-clean-time: maintainer-clean-time - -maintainer-clean-time: - @: $(MAKE); $(unstage) - @[ -f ./time/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in time" ; \ - (cd $(HOST_SUBDIR)/time && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif time - - - -.PHONY: configure-uudecode maybe-configure-uudecode -maybe-configure-uudecode: -@if gcc-bootstrap -configure-uudecode: stage_current -@endif gcc-bootstrap -@if uudecode -maybe-configure-uudecode: configure-uudecode -configure-uudecode: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/uudecode/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/uudecode ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/uudecode; \ - cd "$(HOST_SUBDIR)/uudecode" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/uudecode/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/uudecode"; \ - libsrcdir="$$s/uudecode"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif uudecode - - - - - -.PHONY: all-uudecode maybe-all-uudecode -maybe-all-uudecode: -@if gcc-bootstrap -all-uudecode: stage_current -@endif gcc-bootstrap -@if uudecode -TARGET-uudecode=all -maybe-all-uudecode: all-uudecode -all-uudecode: configure-uudecode - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-uudecode)) -@endif uudecode - - - - -.PHONY: check-uudecode maybe-check-uudecode -maybe-check-uudecode: -@if uudecode -maybe-check-uudecode: check-uudecode - -check-uudecode: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif uudecode - -.PHONY: install-uudecode maybe-install-uudecode -maybe-install-uudecode: -@if uudecode -maybe-install-uudecode: install-uudecode - -install-uudecode: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif uudecode - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-uudecode info-uudecode -maybe-info-uudecode: -@if uudecode -maybe-info-uudecode: info-uudecode - -info-uudecode: \ - configure-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-dvi-uudecode dvi-uudecode -maybe-dvi-uudecode: -@if uudecode -maybe-dvi-uudecode: dvi-uudecode - -dvi-uudecode: \ - configure-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-pdf-uudecode pdf-uudecode -maybe-pdf-uudecode: -@if uudecode -maybe-pdf-uudecode: pdf-uudecode - -pdf-uudecode: \ - configure-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-html-uudecode html-uudecode -maybe-html-uudecode: -@if uudecode -maybe-html-uudecode: html-uudecode - -html-uudecode: \ - configure-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-TAGS-uudecode TAGS-uudecode -maybe-TAGS-uudecode: -@if uudecode -maybe-TAGS-uudecode: TAGS-uudecode - -TAGS-uudecode: \ - configure-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-install-info-uudecode install-info-uudecode -maybe-install-info-uudecode: -@if uudecode -maybe-install-info-uudecode: install-info-uudecode - -install-info-uudecode: \ - configure-uudecode \ - info-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-install-pdf-uudecode install-pdf-uudecode -maybe-install-pdf-uudecode: -@if uudecode -maybe-install-pdf-uudecode: install-pdf-uudecode - -install-pdf-uudecode: \ - configure-uudecode \ - pdf-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-install-html-uudecode install-html-uudecode -maybe-install-html-uudecode: -@if uudecode -maybe-install-html-uudecode: install-html-uudecode - -install-html-uudecode: \ - configure-uudecode \ - html-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-installcheck-uudecode installcheck-uudecode -maybe-installcheck-uudecode: -@if uudecode -maybe-installcheck-uudecode: installcheck-uudecode - -installcheck-uudecode: \ - configure-uudecode - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-mostlyclean-uudecode mostlyclean-uudecode -maybe-mostlyclean-uudecode: -@if uudecode -maybe-mostlyclean-uudecode: mostlyclean-uudecode - -mostlyclean-uudecode: - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-clean-uudecode clean-uudecode -maybe-clean-uudecode: -@if uudecode -maybe-clean-uudecode: clean-uudecode - -clean-uudecode: - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-distclean-uudecode distclean-uudecode -maybe-distclean-uudecode: -@if uudecode -maybe-distclean-uudecode: distclean-uudecode - -distclean-uudecode: - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif uudecode - -.PHONY: maybe-maintainer-clean-uudecode maintainer-clean-uudecode -maybe-maintainer-clean-uudecode: -@if uudecode -maybe-maintainer-clean-uudecode: maintainer-clean-uudecode - -maintainer-clean-uudecode: - @: $(MAKE); $(unstage) - @[ -f ./uudecode/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in uudecode" ; \ - (cd $(HOST_SUBDIR)/uudecode && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif uudecode - - - -.PHONY: configure-wdiff maybe-configure-wdiff -maybe-configure-wdiff: -@if gcc-bootstrap -configure-wdiff: stage_current -@endif gcc-bootstrap -@if wdiff -maybe-configure-wdiff: configure-wdiff -configure-wdiff: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/wdiff/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/wdiff ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/wdiff; \ - cd "$(HOST_SUBDIR)/wdiff" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/wdiff/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/wdiff"; \ - libsrcdir="$$s/wdiff"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif wdiff - - - - - -.PHONY: all-wdiff maybe-all-wdiff -maybe-all-wdiff: -@if gcc-bootstrap -all-wdiff: stage_current -@endif gcc-bootstrap -@if wdiff -TARGET-wdiff=all -maybe-all-wdiff: all-wdiff -all-wdiff: configure-wdiff - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-wdiff)) -@endif wdiff - - - - -.PHONY: check-wdiff maybe-check-wdiff -maybe-check-wdiff: -@if wdiff -maybe-check-wdiff: check-wdiff - -check-wdiff: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif wdiff - -.PHONY: install-wdiff maybe-install-wdiff -maybe-install-wdiff: -@if wdiff -maybe-install-wdiff: install-wdiff - -install-wdiff: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif wdiff - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-wdiff info-wdiff -maybe-info-wdiff: -@if wdiff -maybe-info-wdiff: info-wdiff - -info-wdiff: \ - configure-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-dvi-wdiff dvi-wdiff -maybe-dvi-wdiff: -@if wdiff -maybe-dvi-wdiff: dvi-wdiff - -dvi-wdiff: \ - configure-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-pdf-wdiff pdf-wdiff -maybe-pdf-wdiff: -@if wdiff -maybe-pdf-wdiff: pdf-wdiff - -pdf-wdiff: \ - configure-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-html-wdiff html-wdiff -maybe-html-wdiff: -@if wdiff -maybe-html-wdiff: html-wdiff - -html-wdiff: \ - configure-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-TAGS-wdiff TAGS-wdiff -maybe-TAGS-wdiff: -@if wdiff -maybe-TAGS-wdiff: TAGS-wdiff - -TAGS-wdiff: \ - configure-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-install-info-wdiff install-info-wdiff -maybe-install-info-wdiff: -@if wdiff -maybe-install-info-wdiff: install-info-wdiff - -install-info-wdiff: \ - configure-wdiff \ - info-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-install-pdf-wdiff install-pdf-wdiff -maybe-install-pdf-wdiff: -@if wdiff -maybe-install-pdf-wdiff: install-pdf-wdiff - -install-pdf-wdiff: \ - configure-wdiff \ - pdf-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-install-html-wdiff install-html-wdiff -maybe-install-html-wdiff: -@if wdiff -maybe-install-html-wdiff: install-html-wdiff - -install-html-wdiff: \ - configure-wdiff \ - html-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-installcheck-wdiff installcheck-wdiff -maybe-installcheck-wdiff: -@if wdiff -maybe-installcheck-wdiff: installcheck-wdiff - -installcheck-wdiff: \ - configure-wdiff - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-mostlyclean-wdiff mostlyclean-wdiff -maybe-mostlyclean-wdiff: -@if wdiff -maybe-mostlyclean-wdiff: mostlyclean-wdiff - -mostlyclean-wdiff: - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-clean-wdiff clean-wdiff -maybe-clean-wdiff: -@if wdiff -maybe-clean-wdiff: clean-wdiff - -clean-wdiff: - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-distclean-wdiff distclean-wdiff -maybe-distclean-wdiff: -@if wdiff -maybe-distclean-wdiff: distclean-wdiff - -distclean-wdiff: - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif wdiff - -.PHONY: maybe-maintainer-clean-wdiff maintainer-clean-wdiff -maybe-maintainer-clean-wdiff: -@if wdiff -maybe-maintainer-clean-wdiff: maintainer-clean-wdiff - -maintainer-clean-wdiff: - @: $(MAKE); $(unstage) - @[ -f ./wdiff/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in wdiff" ; \ - (cd $(HOST_SUBDIR)/wdiff && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif wdiff - - - -.PHONY: configure-zip maybe-configure-zip -maybe-configure-zip: -@if gcc-bootstrap -configure-zip: stage_current -@endif gcc-bootstrap -@if zip -maybe-configure-zip: configure-zip -configure-zip: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/zip/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zip ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/zip; \ - cd "$(HOST_SUBDIR)/zip" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zip/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zip"; \ - libsrcdir="$$s/zip"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif zip - - - - - -.PHONY: all-zip maybe-all-zip -maybe-all-zip: -@if gcc-bootstrap -all-zip: stage_current -@endif gcc-bootstrap -@if zip -TARGET-zip=all -maybe-all-zip: all-zip -all-zip: configure-zip - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-zip)) -@endif zip - - - - -.PHONY: check-zip maybe-check-zip -maybe-check-zip: -@if zip -maybe-check-zip: check-zip - -# This module is only tested in a native toolchain. -check-zip: - @: $(MAKE); $(unstage) - @if [ '$(host)' = '$(target)' ] ; then \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ - fi - -@endif zip - -.PHONY: install-zip maybe-install-zip -maybe-install-zip: -@if zip -maybe-install-zip: install-zip - -install-zip: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif zip - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-zip info-zip -maybe-info-zip: -@if zip -maybe-info-zip: info-zip - -info-zip: \ - configure-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif zip - -.PHONY: maybe-dvi-zip dvi-zip -maybe-dvi-zip: -@if zip -maybe-dvi-zip: dvi-zip - -dvi-zip: \ - configure-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif zip - -.PHONY: maybe-pdf-zip pdf-zip -maybe-pdf-zip: -@if zip -maybe-pdf-zip: pdf-zip - -pdf-zip: \ - configure-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif zip - -.PHONY: maybe-html-zip html-zip -maybe-html-zip: -@if zip -maybe-html-zip: html-zip - -html-zip: \ - configure-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif zip - -.PHONY: maybe-TAGS-zip TAGS-zip -maybe-TAGS-zip: -@if zip -maybe-TAGS-zip: TAGS-zip - -TAGS-zip: \ - configure-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif zip - -.PHONY: maybe-install-info-zip install-info-zip -maybe-install-info-zip: -@if zip -maybe-install-info-zip: install-info-zip - -install-info-zip: \ - configure-zip \ - info-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif zip - -.PHONY: maybe-install-pdf-zip install-pdf-zip -maybe-install-pdf-zip: -@if zip -maybe-install-pdf-zip: install-pdf-zip - -install-pdf-zip: \ - configure-zip \ - pdf-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif zip - -.PHONY: maybe-install-html-zip install-html-zip -maybe-install-html-zip: -@if zip -maybe-install-html-zip: install-html-zip - -install-html-zip: \ - configure-zip \ - html-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif zip - -.PHONY: maybe-installcheck-zip installcheck-zip -maybe-installcheck-zip: -@if zip -maybe-installcheck-zip: installcheck-zip - -installcheck-zip: \ - configure-zip - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif zip - -.PHONY: maybe-mostlyclean-zip mostlyclean-zip -maybe-mostlyclean-zip: -@if zip -maybe-mostlyclean-zip: mostlyclean-zip - -mostlyclean-zip: - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif zip - -.PHONY: maybe-clean-zip clean-zip -maybe-clean-zip: -@if zip -maybe-clean-zip: clean-zip - -clean-zip: - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif zip - -.PHONY: maybe-distclean-zip distclean-zip -maybe-distclean-zip: -@if zip -maybe-distclean-zip: distclean-zip - -distclean-zip: - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif zip - -.PHONY: maybe-maintainer-clean-zip maintainer-clean-zip -maybe-maintainer-clean-zip: -@if zip -maybe-maintainer-clean-zip: maintainer-clean-zip - -maintainer-clean-zip: - @: $(MAKE); $(unstage) - @[ -f ./zip/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in zip" ; \ - (cd $(HOST_SUBDIR)/zip && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif zip - - - -.PHONY: configure-zlib maybe-configure-zlib -maybe-configure-zlib: -@if gcc-bootstrap -configure-zlib: stage_current -@endif gcc-bootstrap -@if zlib -maybe-configure-zlib: configure-zlib -configure-zlib: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/zlib; \ - cd "$(HOST_SUBDIR)/zlib" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif zlib - - - -.PHONY: configure-stage1-zlib maybe-configure-stage1-zlib -maybe-configure-stage1-zlib: -@if zlib-bootstrap -maybe-configure-stage1-zlib: configure-stage1-zlib -configure-stage1-zlib: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/zlib ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - cd $(HOST_SUBDIR)/zlib || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif zlib-bootstrap - -.PHONY: configure-stage2-zlib maybe-configure-stage2-zlib -maybe-configure-stage2-zlib: -@if zlib-bootstrap -maybe-configure-stage2-zlib: configure-stage2-zlib -configure-stage2-zlib: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/zlib ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - cd $(HOST_SUBDIR)/zlib || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif zlib-bootstrap - -.PHONY: configure-stage3-zlib maybe-configure-stage3-zlib -maybe-configure-stage3-zlib: -@if zlib-bootstrap -maybe-configure-stage3-zlib: configure-stage3-zlib -configure-stage3-zlib: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/zlib ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - cd $(HOST_SUBDIR)/zlib || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif zlib-bootstrap - -.PHONY: configure-stage4-zlib maybe-configure-stage4-zlib -maybe-configure-stage4-zlib: -@if zlib-bootstrap -maybe-configure-stage4-zlib: configure-stage4-zlib -configure-stage4-zlib: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/zlib ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - cd $(HOST_SUBDIR)/zlib || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif zlib-bootstrap - -.PHONY: configure-stageprofile-zlib maybe-configure-stageprofile-zlib -maybe-configure-stageprofile-zlib: -@if zlib-bootstrap -maybe-configure-stageprofile-zlib: configure-stageprofile-zlib -configure-stageprofile-zlib: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/zlib ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - cd $(HOST_SUBDIR)/zlib || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif zlib-bootstrap - -.PHONY: configure-stagefeedback-zlib maybe-configure-stagefeedback-zlib -maybe-configure-stagefeedback-zlib: -@if zlib-bootstrap -maybe-configure-stagefeedback-zlib: configure-stagefeedback-zlib -configure-stagefeedback-zlib: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/zlib ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - cd $(HOST_SUBDIR)/zlib || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif zlib-bootstrap - - - - - -.PHONY: all-zlib maybe-all-zlib -maybe-all-zlib: -@if gcc-bootstrap -all-zlib: stage_current -@endif gcc-bootstrap -@if zlib -TARGET-zlib=all -maybe-all-zlib: all-zlib -all-zlib: configure-zlib - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-zlib)) -@endif zlib - - - -.PHONY: all-stage1-zlib maybe-all-stage1-zlib -.PHONY: clean-stage1-zlib maybe-clean-stage1-zlib -maybe-all-stage1-zlib: -maybe-clean-stage1-zlib: -@if zlib-bootstrap -maybe-all-stage1-zlib: all-stage1-zlib -all-stage1: all-stage1-zlib -TARGET-stage1-zlib = $(TARGET-zlib) -all-stage1-zlib: configure-stage1-zlib - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-zlib) - -maybe-clean-stage1-zlib: clean-stage1-zlib -clean-stage1: clean-stage1-zlib -clean-stage1-zlib: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/zlib/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-zlib/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean -@endif zlib-bootstrap - - -.PHONY: all-stage2-zlib maybe-all-stage2-zlib -.PHONY: clean-stage2-zlib maybe-clean-stage2-zlib -maybe-all-stage2-zlib: -maybe-clean-stage2-zlib: -@if zlib-bootstrap -maybe-all-stage2-zlib: all-stage2-zlib -all-stage2: all-stage2-zlib -TARGET-stage2-zlib = $(TARGET-zlib) -all-stage2-zlib: configure-stage2-zlib - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ - LIBCFLAGS="$(STAGE2_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-zlib) - -maybe-clean-stage2-zlib: clean-stage2-zlib -clean-stage2: clean-stage2-zlib -clean-stage2-zlib: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/zlib/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-zlib/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif zlib-bootstrap - - -.PHONY: all-stage3-zlib maybe-all-stage3-zlib -.PHONY: clean-stage3-zlib maybe-clean-stage3-zlib -maybe-all-stage3-zlib: -maybe-clean-stage3-zlib: -@if zlib-bootstrap -maybe-all-stage3-zlib: all-stage3-zlib -all-stage3: all-stage3-zlib -TARGET-stage3-zlib = $(TARGET-zlib) -all-stage3-zlib: configure-stage3-zlib - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ - LIBCFLAGS="$(STAGE3_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-zlib) - -maybe-clean-stage3-zlib: clean-stage3-zlib -clean-stage3: clean-stage3-zlib -clean-stage3-zlib: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/zlib/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-zlib/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif zlib-bootstrap - - -.PHONY: all-stage4-zlib maybe-all-stage4-zlib -.PHONY: clean-stage4-zlib maybe-clean-stage4-zlib -maybe-all-stage4-zlib: -maybe-clean-stage4-zlib: -@if zlib-bootstrap -maybe-all-stage4-zlib: all-stage4-zlib -all-stage4: all-stage4-zlib -TARGET-stage4-zlib = $(TARGET-zlib) -all-stage4-zlib: configure-stage4-zlib - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ - LIBCFLAGS="$(STAGE4_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-zlib) - -maybe-clean-stage4-zlib: clean-stage4-zlib -clean-stage4: clean-stage4-zlib -clean-stage4-zlib: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/zlib/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-zlib/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif zlib-bootstrap - - -.PHONY: all-stageprofile-zlib maybe-all-stageprofile-zlib -.PHONY: clean-stageprofile-zlib maybe-clean-stageprofile-zlib -maybe-all-stageprofile-zlib: -maybe-clean-stageprofile-zlib: -@if zlib-bootstrap -maybe-all-stageprofile-zlib: all-stageprofile-zlib -all-stageprofile: all-stageprofile-zlib -TARGET-stageprofile-zlib = $(TARGET-zlib) -all-stageprofile-zlib: configure-stageprofile-zlib - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-zlib) - -maybe-clean-stageprofile-zlib: clean-stageprofile-zlib -clean-stageprofile: clean-stageprofile-zlib -clean-stageprofile-zlib: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/zlib/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-zlib/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif zlib-bootstrap - - -.PHONY: all-stagefeedback-zlib maybe-all-stagefeedback-zlib -.PHONY: clean-stagefeedback-zlib maybe-clean-stagefeedback-zlib -maybe-all-stagefeedback-zlib: -maybe-clean-stagefeedback-zlib: -@if zlib-bootstrap -maybe-all-stagefeedback-zlib: all-stagefeedback-zlib -all-stagefeedback: all-stagefeedback-zlib -TARGET-stagefeedback-zlib = $(TARGET-zlib) -all-stagefeedback-zlib: configure-stagefeedback-zlib - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-zlib) - -maybe-clean-stagefeedback-zlib: clean-stagefeedback-zlib -clean-stagefeedback: clean-stagefeedback-zlib -clean-stagefeedback-zlib: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/zlib/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-zlib/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean -@endif zlib-bootstrap - - - - - -.PHONY: check-zlib maybe-check-zlib -maybe-check-zlib: -@if zlib -maybe-check-zlib: check-zlib - -check-zlib: - -@endif zlib - -.PHONY: install-zlib maybe-install-zlib -maybe-install-zlib: -@if zlib -maybe-install-zlib: install-zlib - -install-zlib: - -@endif zlib - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-zlib info-zlib -maybe-info-zlib: -@if zlib -maybe-info-zlib: info-zlib - -info-zlib: \ - configure-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-dvi-zlib dvi-zlib -maybe-dvi-zlib: -@if zlib -maybe-dvi-zlib: dvi-zlib - -dvi-zlib: \ - configure-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-pdf-zlib pdf-zlib -maybe-pdf-zlib: -@if zlib -maybe-pdf-zlib: pdf-zlib - -pdf-zlib: \ - configure-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-html-zlib html-zlib -maybe-html-zlib: -@if zlib -maybe-html-zlib: html-zlib - -html-zlib: \ - configure-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-TAGS-zlib TAGS-zlib -maybe-TAGS-zlib: -@if zlib -maybe-TAGS-zlib: TAGS-zlib - -TAGS-zlib: \ - configure-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-install-info-zlib install-info-zlib -maybe-install-info-zlib: -@if zlib -maybe-install-info-zlib: install-info-zlib - -install-info-zlib: \ - configure-zlib \ - info-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-install-pdf-zlib install-pdf-zlib -maybe-install-pdf-zlib: -@if zlib -maybe-install-pdf-zlib: install-pdf-zlib - -install-pdf-zlib: \ - configure-zlib \ - pdf-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-install-html-zlib install-html-zlib -maybe-install-html-zlib: -@if zlib -maybe-install-html-zlib: install-html-zlib - -install-html-zlib: \ - configure-zlib \ - html-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-installcheck-zlib installcheck-zlib -maybe-installcheck-zlib: -@if zlib -maybe-installcheck-zlib: installcheck-zlib - -installcheck-zlib: \ - configure-zlib - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-mostlyclean-zlib mostlyclean-zlib -maybe-mostlyclean-zlib: -@if zlib -maybe-mostlyclean-zlib: mostlyclean-zlib - -mostlyclean-zlib: - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-clean-zlib clean-zlib -maybe-clean-zlib: -@if zlib -maybe-clean-zlib: clean-zlib - -clean-zlib: - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-distclean-zlib distclean-zlib -maybe-distclean-zlib: -@if zlib -maybe-distclean-zlib: distclean-zlib - -distclean-zlib: - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif zlib - -.PHONY: maybe-maintainer-clean-zlib maintainer-clean-zlib -maybe-maintainer-clean-zlib: -@if zlib -maybe-maintainer-clean-zlib: maintainer-clean-zlib - -maintainer-clean-zlib: - @[ -f ./zlib/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in zlib" ; \ - (cd $(HOST_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif zlib - - - -.PHONY: configure-gdb maybe-configure-gdb -maybe-configure-gdb: -@if gcc-bootstrap -configure-gdb: stage_current -@endif gcc-bootstrap -@if gdb -maybe-configure-gdb: configure-gdb -configure-gdb: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gdb/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gdb ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gdb; \ - cd "$(HOST_SUBDIR)/gdb" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gdb/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gdb"; \ - libsrcdir="$$s/gdb"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gdb - - - - - -.PHONY: all-gdb maybe-all-gdb -maybe-all-gdb: -@if gcc-bootstrap -all-gdb: stage_current -@endif gcc-bootstrap -@if gdb -TARGET-gdb=all -maybe-all-gdb: all-gdb -all-gdb: configure-gdb - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ - $(TARGET-gdb)) -@endif gdb - - - - -.PHONY: check-gdb maybe-check-gdb -maybe-check-gdb: -@if gdb -maybe-check-gdb: check-gdb - -check-gdb: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) - -@endif gdb - -.PHONY: install-gdb maybe-install-gdb -maybe-install-gdb: -@if gdb -maybe-install-gdb: install-gdb - -install-gdb: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) - -@endif gdb - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gdb info-gdb -maybe-info-gdb: -@if gdb -maybe-info-gdb: info-gdb - -info-gdb: \ - configure-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-dvi-gdb dvi-gdb -maybe-dvi-gdb: -@if gdb -maybe-dvi-gdb: dvi-gdb - -dvi-gdb: \ - configure-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-pdf-gdb pdf-gdb -maybe-pdf-gdb: -@if gdb -maybe-pdf-gdb: pdf-gdb - -pdf-gdb: \ - configure-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-html-gdb html-gdb -maybe-html-gdb: -@if gdb -maybe-html-gdb: html-gdb - -html-gdb: \ - configure-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-TAGS-gdb TAGS-gdb -maybe-TAGS-gdb: -@if gdb -maybe-TAGS-gdb: TAGS-gdb - -TAGS-gdb: \ - configure-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-install-info-gdb install-info-gdb -maybe-install-info-gdb: -@if gdb -maybe-install-info-gdb: install-info-gdb - -install-info-gdb: \ - configure-gdb \ - info-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-install-pdf-gdb install-pdf-gdb -maybe-install-pdf-gdb: -@if gdb -maybe-install-pdf-gdb: install-pdf-gdb - -install-pdf-gdb: \ - configure-gdb \ - pdf-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-install-html-gdb install-html-gdb -maybe-install-html-gdb: -@if gdb -maybe-install-html-gdb: install-html-gdb - -install-html-gdb: \ - configure-gdb \ - html-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-installcheck-gdb installcheck-gdb -maybe-installcheck-gdb: -@if gdb -maybe-installcheck-gdb: installcheck-gdb - -installcheck-gdb: \ - configure-gdb - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-mostlyclean-gdb mostlyclean-gdb -maybe-mostlyclean-gdb: -@if gdb -maybe-mostlyclean-gdb: mostlyclean-gdb - -mostlyclean-gdb: - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-clean-gdb clean-gdb -maybe-clean-gdb: -@if gdb -maybe-clean-gdb: clean-gdb - -clean-gdb: - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-distclean-gdb distclean-gdb -maybe-distclean-gdb: -@if gdb -maybe-distclean-gdb: distclean-gdb - -distclean-gdb: - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gdb - -.PHONY: maybe-maintainer-clean-gdb maintainer-clean-gdb -maybe-maintainer-clean-gdb: -@if gdb -maybe-maintainer-clean-gdb: maintainer-clean-gdb - -maintainer-clean-gdb: - @: $(MAKE); $(unstage) - @[ -f ./gdb/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gdb" ; \ - (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gdb - - - -.PHONY: configure-expect maybe-configure-expect -maybe-configure-expect: -@if gcc-bootstrap -configure-expect: stage_current -@endif gcc-bootstrap -@if expect -maybe-configure-expect: configure-expect -configure-expect: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/expect/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/expect ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/expect; \ - cd "$(HOST_SUBDIR)/expect" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/expect/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/expect"; \ - libsrcdir="$$s/expect"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif expect - - - - - -.PHONY: all-expect maybe-all-expect -maybe-all-expect: -@if gcc-bootstrap -all-expect: stage_current -@endif gcc-bootstrap -@if expect -TARGET-expect=all -maybe-all-expect: all-expect -all-expect: configure-expect - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ - $(TARGET-expect)) -@endif expect - - - - -.PHONY: check-expect maybe-check-expect -maybe-check-expect: -@if expect -maybe-check-expect: check-expect - -check-expect: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) - -@endif expect - -.PHONY: install-expect maybe-install-expect -maybe-install-expect: -@if expect -maybe-install-expect: install-expect - -install-expect: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) - -@endif expect - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-expect info-expect -maybe-info-expect: -@if expect -maybe-info-expect: info-expect - -info-expect: \ - configure-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif expect - -.PHONY: maybe-dvi-expect dvi-expect -maybe-dvi-expect: -@if expect -maybe-dvi-expect: dvi-expect - -dvi-expect: \ - configure-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif expect - -.PHONY: maybe-pdf-expect pdf-expect -maybe-pdf-expect: -@if expect -maybe-pdf-expect: pdf-expect - -pdf-expect: \ - configure-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif expect - -.PHONY: maybe-html-expect html-expect -maybe-html-expect: -@if expect -maybe-html-expect: html-expect - -html-expect: \ - configure-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif expect - -.PHONY: maybe-TAGS-expect TAGS-expect -maybe-TAGS-expect: -@if expect -maybe-TAGS-expect: TAGS-expect - -TAGS-expect: \ - configure-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif expect - -.PHONY: maybe-install-info-expect install-info-expect -maybe-install-info-expect: -@if expect -maybe-install-info-expect: install-info-expect - -install-info-expect: \ - configure-expect \ - info-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif expect - -.PHONY: maybe-install-pdf-expect install-pdf-expect -maybe-install-pdf-expect: -@if expect -maybe-install-pdf-expect: install-pdf-expect - -install-pdf-expect: \ - configure-expect \ - pdf-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif expect - -.PHONY: maybe-install-html-expect install-html-expect -maybe-install-html-expect: -@if expect -maybe-install-html-expect: install-html-expect - -install-html-expect: \ - configure-expect \ - html-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif expect - -.PHONY: maybe-installcheck-expect installcheck-expect -maybe-installcheck-expect: -@if expect -maybe-installcheck-expect: installcheck-expect - -installcheck-expect: \ - configure-expect - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif expect - -.PHONY: maybe-mostlyclean-expect mostlyclean-expect -maybe-mostlyclean-expect: -@if expect -maybe-mostlyclean-expect: mostlyclean-expect - -mostlyclean-expect: - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif expect - -.PHONY: maybe-clean-expect clean-expect -maybe-clean-expect: -@if expect -maybe-clean-expect: clean-expect - -clean-expect: - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif expect - -.PHONY: maybe-distclean-expect distclean-expect -maybe-distclean-expect: -@if expect -maybe-distclean-expect: distclean-expect - -distclean-expect: - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif expect - -.PHONY: maybe-maintainer-clean-expect maintainer-clean-expect -maybe-maintainer-clean-expect: -@if expect -maybe-maintainer-clean-expect: maintainer-clean-expect - -maintainer-clean-expect: - @: $(MAKE); $(unstage) - @[ -f ./expect/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in expect" ; \ - (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif expect - - - -.PHONY: configure-guile maybe-configure-guile -maybe-configure-guile: -@if gcc-bootstrap -configure-guile: stage_current -@endif gcc-bootstrap -@if guile -maybe-configure-guile: configure-guile -configure-guile: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/guile/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/guile ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/guile; \ - cd "$(HOST_SUBDIR)/guile" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/guile/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/guile"; \ - libsrcdir="$$s/guile"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif guile - - - - - -.PHONY: all-guile maybe-all-guile -maybe-all-guile: -@if gcc-bootstrap -all-guile: stage_current -@endif gcc-bootstrap -@if guile -TARGET-guile=all -maybe-all-guile: all-guile -all-guile: configure-guile - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ - $(TARGET-guile)) -@endif guile - - - - -.PHONY: check-guile maybe-check-guile -maybe-check-guile: -@if guile -maybe-check-guile: check-guile - -check-guile: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) - -@endif guile - -.PHONY: install-guile maybe-install-guile -maybe-install-guile: -@if guile -maybe-install-guile: install-guile - -install-guile: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) - -@endif guile - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-guile info-guile -maybe-info-guile: -@if guile -maybe-info-guile: info-guile - -info-guile: \ - configure-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif guile - -.PHONY: maybe-dvi-guile dvi-guile -maybe-dvi-guile: -@if guile -maybe-dvi-guile: dvi-guile - -dvi-guile: \ - configure-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif guile - -.PHONY: maybe-pdf-guile pdf-guile -maybe-pdf-guile: -@if guile -maybe-pdf-guile: pdf-guile - -pdf-guile: \ - configure-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif guile - -.PHONY: maybe-html-guile html-guile -maybe-html-guile: -@if guile -maybe-html-guile: html-guile - -html-guile: \ - configure-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif guile - -.PHONY: maybe-TAGS-guile TAGS-guile -maybe-TAGS-guile: -@if guile -maybe-TAGS-guile: TAGS-guile - -TAGS-guile: \ - configure-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif guile - -.PHONY: maybe-install-info-guile install-info-guile -maybe-install-info-guile: -@if guile -maybe-install-info-guile: install-info-guile - -install-info-guile: \ - configure-guile \ - info-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif guile - -.PHONY: maybe-install-pdf-guile install-pdf-guile -maybe-install-pdf-guile: -@if guile -maybe-install-pdf-guile: install-pdf-guile - -install-pdf-guile: \ - configure-guile \ - pdf-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif guile - -.PHONY: maybe-install-html-guile install-html-guile -maybe-install-html-guile: -@if guile -maybe-install-html-guile: install-html-guile - -install-html-guile: \ - configure-guile \ - html-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif guile - -.PHONY: maybe-installcheck-guile installcheck-guile -maybe-installcheck-guile: -@if guile -maybe-installcheck-guile: installcheck-guile - -installcheck-guile: \ - configure-guile - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif guile - -.PHONY: maybe-mostlyclean-guile mostlyclean-guile -maybe-mostlyclean-guile: -@if guile -maybe-mostlyclean-guile: mostlyclean-guile - -mostlyclean-guile: - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif guile - -.PHONY: maybe-clean-guile clean-guile -maybe-clean-guile: -@if guile -maybe-clean-guile: clean-guile - -clean-guile: - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif guile - -.PHONY: maybe-distclean-guile distclean-guile -maybe-distclean-guile: -@if guile -maybe-distclean-guile: distclean-guile - -distclean-guile: - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif guile - -.PHONY: maybe-maintainer-clean-guile maintainer-clean-guile -maybe-maintainer-clean-guile: -@if guile -maybe-maintainer-clean-guile: maintainer-clean-guile - -maintainer-clean-guile: - @: $(MAKE); $(unstage) - @[ -f ./guile/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in guile" ; \ - (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif guile - - - -.PHONY: configure-tk maybe-configure-tk -maybe-configure-tk: -@if gcc-bootstrap -configure-tk: stage_current -@endif gcc-bootstrap -@if tk -maybe-configure-tk: configure-tk -configure-tk: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/tk/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/tk ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/tk; \ - cd "$(HOST_SUBDIR)/tk" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/tk/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/tk"; \ - libsrcdir="$$s/tk"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif tk - - - - - -.PHONY: all-tk maybe-all-tk -maybe-all-tk: -@if gcc-bootstrap -all-tk: stage_current -@endif gcc-bootstrap -@if tk -TARGET-tk=all -maybe-all-tk: all-tk -all-tk: configure-tk - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ - $(TARGET-tk)) -@endif tk - - - - -.PHONY: check-tk maybe-check-tk -maybe-check-tk: -@if tk -maybe-check-tk: check-tk - -check-tk: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) - -@endif tk - -.PHONY: install-tk maybe-install-tk -maybe-install-tk: -@if tk -maybe-install-tk: install-tk - -install-tk: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) - -@endif tk - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-tk info-tk -maybe-info-tk: -@if tk -maybe-info-tk: info-tk - -info-tk: \ - configure-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif tk - -.PHONY: maybe-dvi-tk dvi-tk -maybe-dvi-tk: -@if tk -maybe-dvi-tk: dvi-tk - -dvi-tk: \ - configure-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif tk - -.PHONY: maybe-pdf-tk pdf-tk -maybe-pdf-tk: -@if tk -maybe-pdf-tk: pdf-tk - -pdf-tk: \ - configure-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif tk - -.PHONY: maybe-html-tk html-tk -maybe-html-tk: -@if tk -maybe-html-tk: html-tk - -html-tk: \ - configure-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif tk - -.PHONY: maybe-TAGS-tk TAGS-tk -maybe-TAGS-tk: -@if tk -maybe-TAGS-tk: TAGS-tk - -TAGS-tk: \ - configure-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif tk - -.PHONY: maybe-install-info-tk install-info-tk -maybe-install-info-tk: -@if tk -maybe-install-info-tk: install-info-tk - -install-info-tk: \ - configure-tk \ - info-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif tk - -.PHONY: maybe-install-pdf-tk install-pdf-tk -maybe-install-pdf-tk: -@if tk -maybe-install-pdf-tk: install-pdf-tk - -install-pdf-tk: \ - configure-tk \ - pdf-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif tk - -.PHONY: maybe-install-html-tk install-html-tk -maybe-install-html-tk: -@if tk -maybe-install-html-tk: install-html-tk - -install-html-tk: \ - configure-tk \ - html-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif tk - -.PHONY: maybe-installcheck-tk installcheck-tk -maybe-installcheck-tk: -@if tk -maybe-installcheck-tk: installcheck-tk - -installcheck-tk: \ - configure-tk - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif tk - -.PHONY: maybe-mostlyclean-tk mostlyclean-tk -maybe-mostlyclean-tk: -@if tk -maybe-mostlyclean-tk: mostlyclean-tk - -mostlyclean-tk: - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif tk - -.PHONY: maybe-clean-tk clean-tk -maybe-clean-tk: -@if tk -maybe-clean-tk: clean-tk - -clean-tk: - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif tk - -.PHONY: maybe-distclean-tk distclean-tk -maybe-distclean-tk: -@if tk -maybe-distclean-tk: distclean-tk - -distclean-tk: - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif tk - -.PHONY: maybe-maintainer-clean-tk maintainer-clean-tk -maybe-maintainer-clean-tk: -@if tk -maybe-maintainer-clean-tk: maintainer-clean-tk - -maintainer-clean-tk: - @: $(MAKE); $(unstage) - @[ -f ./tk/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in tk" ; \ - (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif tk - - - -.PHONY: configure-libtermcap maybe-configure-libtermcap -maybe-configure-libtermcap: -@if gcc-bootstrap -configure-libtermcap: stage_current -@endif gcc-bootstrap -@if libtermcap -maybe-configure-libtermcap: configure-libtermcap -configure-libtermcap: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/libtermcap/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libtermcap ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/libtermcap; \ - cd "$(HOST_SUBDIR)/libtermcap" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/libtermcap/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libtermcap"; \ - libsrcdir="$$s/libtermcap"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif libtermcap - - - - - -.PHONY: all-libtermcap maybe-all-libtermcap -maybe-all-libtermcap: -@if gcc-bootstrap -all-libtermcap: stage_current -@endif gcc-bootstrap -@if libtermcap -TARGET-libtermcap=all -maybe-all-libtermcap: all-libtermcap -all-libtermcap: configure-libtermcap - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-libtermcap)) -@endif libtermcap - - - - -.PHONY: check-libtermcap maybe-check-libtermcap -maybe-check-libtermcap: -@if libtermcap -maybe-check-libtermcap: check-libtermcap - -check-libtermcap: - -@endif libtermcap - -.PHONY: install-libtermcap maybe-install-libtermcap -maybe-install-libtermcap: -@if libtermcap -maybe-install-libtermcap: install-libtermcap - -install-libtermcap: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif libtermcap - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-libtermcap info-libtermcap -maybe-info-libtermcap: -@if libtermcap -maybe-info-libtermcap: info-libtermcap - -info-libtermcap: \ - configure-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-dvi-libtermcap dvi-libtermcap -maybe-dvi-libtermcap: -@if libtermcap -maybe-dvi-libtermcap: dvi-libtermcap - -dvi-libtermcap: \ - configure-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-pdf-libtermcap pdf-libtermcap -maybe-pdf-libtermcap: -@if libtermcap -maybe-pdf-libtermcap: pdf-libtermcap - -pdf-libtermcap: \ - configure-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-html-libtermcap html-libtermcap -maybe-html-libtermcap: -@if libtermcap -maybe-html-libtermcap: html-libtermcap - -html-libtermcap: \ - configure-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-TAGS-libtermcap TAGS-libtermcap -maybe-TAGS-libtermcap: -@if libtermcap -maybe-TAGS-libtermcap: TAGS-libtermcap - -TAGS-libtermcap: \ - configure-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-install-info-libtermcap install-info-libtermcap -maybe-install-info-libtermcap: -@if libtermcap -maybe-install-info-libtermcap: install-info-libtermcap - -install-info-libtermcap: \ - configure-libtermcap \ - info-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-install-pdf-libtermcap install-pdf-libtermcap -maybe-install-pdf-libtermcap: -@if libtermcap -maybe-install-pdf-libtermcap: install-pdf-libtermcap - -install-pdf-libtermcap: \ - configure-libtermcap \ - pdf-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-install-html-libtermcap install-html-libtermcap -maybe-install-html-libtermcap: -@if libtermcap -maybe-install-html-libtermcap: install-html-libtermcap - -install-html-libtermcap: \ - configure-libtermcap \ - html-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-installcheck-libtermcap installcheck-libtermcap -maybe-installcheck-libtermcap: -@if libtermcap -maybe-installcheck-libtermcap: installcheck-libtermcap - -installcheck-libtermcap: \ - configure-libtermcap - @: $(MAKE); $(unstage) - @[ -f ./libtermcap/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in libtermcap" ; \ - (cd $(HOST_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif libtermcap - -.PHONY: maybe-mostlyclean-libtermcap mostlyclean-libtermcap -maybe-mostlyclean-libtermcap: -@if libtermcap -maybe-mostlyclean-libtermcap: mostlyclean-libtermcap - -# libtermcap doesn't support mostlyclean. -mostlyclean-libtermcap: - -@endif libtermcap - -.PHONY: maybe-clean-libtermcap clean-libtermcap -maybe-clean-libtermcap: -@if libtermcap -maybe-clean-libtermcap: clean-libtermcap - -# libtermcap doesn't support clean. -clean-libtermcap: - -@endif libtermcap - -.PHONY: maybe-distclean-libtermcap distclean-libtermcap -maybe-distclean-libtermcap: -@if libtermcap -maybe-distclean-libtermcap: distclean-libtermcap - -# libtermcap doesn't support distclean. -distclean-libtermcap: - -@endif libtermcap - -.PHONY: maybe-maintainer-clean-libtermcap maintainer-clean-libtermcap -maybe-maintainer-clean-libtermcap: -@if libtermcap -maybe-maintainer-clean-libtermcap: maintainer-clean-libtermcap - -# libtermcap doesn't support maintainer-clean. -maintainer-clean-libtermcap: - -@endif libtermcap - - - -.PHONY: configure-utils maybe-configure-utils -maybe-configure-utils: -@if gcc-bootstrap -configure-utils: stage_current -@endif gcc-bootstrap -@if utils -maybe-configure-utils: configure-utils -configure-utils: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/utils/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/utils ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/utils; \ - cd "$(HOST_SUBDIR)/utils" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/utils/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/utils"; \ - libsrcdir="$$s/utils"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif utils - - - - - -.PHONY: all-utils maybe-all-utils -maybe-all-utils: -@if gcc-bootstrap -all-utils: stage_current -@endif gcc-bootstrap -@if utils -TARGET-utils=all -maybe-all-utils: all-utils -all-utils: configure-utils - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-utils)) -@endif utils - - - - -.PHONY: check-utils maybe-check-utils -maybe-check-utils: -@if utils -maybe-check-utils: check-utils - -check-utils: - -@endif utils - -.PHONY: install-utils maybe-install-utils -maybe-install-utils: -@if utils -maybe-install-utils: install-utils - -install-utils: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif utils - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-utils info-utils -maybe-info-utils: -@if utils -maybe-info-utils: info-utils - -info-utils: \ - configure-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif utils - -.PHONY: maybe-dvi-utils dvi-utils -maybe-dvi-utils: -@if utils -maybe-dvi-utils: dvi-utils - -dvi-utils: \ - configure-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif utils - -.PHONY: maybe-pdf-utils pdf-utils -maybe-pdf-utils: -@if utils -maybe-pdf-utils: pdf-utils - -pdf-utils: \ - configure-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif utils - -.PHONY: maybe-html-utils html-utils -maybe-html-utils: -@if utils -maybe-html-utils: html-utils - -html-utils: \ - configure-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif utils - -.PHONY: maybe-TAGS-utils TAGS-utils -maybe-TAGS-utils: -@if utils -maybe-TAGS-utils: TAGS-utils - -TAGS-utils: \ - configure-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif utils - -.PHONY: maybe-install-info-utils install-info-utils -maybe-install-info-utils: -@if utils -maybe-install-info-utils: install-info-utils - -install-info-utils: \ - configure-utils \ - info-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif utils - -.PHONY: maybe-install-pdf-utils install-pdf-utils -maybe-install-pdf-utils: -@if utils -maybe-install-pdf-utils: install-pdf-utils - -install-pdf-utils: \ - configure-utils \ - pdf-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif utils - -.PHONY: maybe-install-html-utils install-html-utils -maybe-install-html-utils: -@if utils -maybe-install-html-utils: install-html-utils - -install-html-utils: \ - configure-utils \ - html-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif utils - -.PHONY: maybe-installcheck-utils installcheck-utils -maybe-installcheck-utils: -@if utils -maybe-installcheck-utils: installcheck-utils - -installcheck-utils: \ - configure-utils - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif utils - -.PHONY: maybe-mostlyclean-utils mostlyclean-utils -maybe-mostlyclean-utils: -@if utils -maybe-mostlyclean-utils: mostlyclean-utils - -mostlyclean-utils: - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif utils - -.PHONY: maybe-clean-utils clean-utils -maybe-clean-utils: -@if utils -maybe-clean-utils: clean-utils - -clean-utils: - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif utils - -.PHONY: maybe-distclean-utils distclean-utils -maybe-distclean-utils: -@if utils -maybe-distclean-utils: distclean-utils - -distclean-utils: - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif utils - -.PHONY: maybe-maintainer-clean-utils maintainer-clean-utils -maybe-maintainer-clean-utils: -@if utils -maybe-maintainer-clean-utils: maintainer-clean-utils - -maintainer-clean-utils: - @: $(MAKE); $(unstage) - @[ -f ./utils/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in utils" ; \ - (cd $(HOST_SUBDIR)/utils && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif utils - - - -.PHONY: configure-gnattools maybe-configure-gnattools -maybe-configure-gnattools: -@if gcc-bootstrap -configure-gnattools: stage_current -@endif gcc-bootstrap -@if gnattools -maybe-configure-gnattools: configure-gnattools -configure-gnattools: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gnattools/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gnattools ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gnattools; \ - cd "$(HOST_SUBDIR)/gnattools" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gnattools/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gnattools"; \ - libsrcdir="$$s/gnattools"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif gnattools - - - - - -.PHONY: all-gnattools maybe-all-gnattools -maybe-all-gnattools: -@if gcc-bootstrap -all-gnattools: stage_current -@endif gcc-bootstrap -@if gnattools -TARGET-gnattools=all -maybe-all-gnattools: all-gnattools -all-gnattools: configure-gnattools - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gnattools)) -@endif gnattools - - - - -.PHONY: check-gnattools maybe-check-gnattools -maybe-check-gnattools: -@if gnattools -maybe-check-gnattools: check-gnattools - -check-gnattools: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(FLAGS_TO_PASS) check) - -@endif gnattools - -.PHONY: install-gnattools maybe-install-gnattools -maybe-install-gnattools: -@if gnattools -maybe-install-gnattools: install-gnattools - -install-gnattools: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(FLAGS_TO_PASS) install) - -@endif gnattools - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-gnattools info-gnattools -maybe-info-gnattools: -@if gnattools -maybe-info-gnattools: info-gnattools - -info-gnattools: \ - configure-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-dvi-gnattools dvi-gnattools -maybe-dvi-gnattools: -@if gnattools -maybe-dvi-gnattools: dvi-gnattools - -dvi-gnattools: \ - configure-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-pdf-gnattools pdf-gnattools -maybe-pdf-gnattools: -@if gnattools -maybe-pdf-gnattools: pdf-gnattools - -pdf-gnattools: \ - configure-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-html-gnattools html-gnattools -maybe-html-gnattools: -@if gnattools -maybe-html-gnattools: html-gnattools - -html-gnattools: \ - configure-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-TAGS-gnattools TAGS-gnattools -maybe-TAGS-gnattools: -@if gnattools -maybe-TAGS-gnattools: TAGS-gnattools - -TAGS-gnattools: \ - configure-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-install-info-gnattools install-info-gnattools -maybe-install-info-gnattools: -@if gnattools -maybe-install-info-gnattools: install-info-gnattools - -install-info-gnattools: \ - configure-gnattools \ - info-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-install-pdf-gnattools install-pdf-gnattools -maybe-install-pdf-gnattools: -@if gnattools -maybe-install-pdf-gnattools: install-pdf-gnattools - -install-pdf-gnattools: \ - configure-gnattools \ - pdf-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-install-html-gnattools install-html-gnattools -maybe-install-html-gnattools: -@if gnattools -maybe-install-html-gnattools: install-html-gnattools - -install-html-gnattools: \ - configure-gnattools \ - html-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-installcheck-gnattools installcheck-gnattools -maybe-installcheck-gnattools: -@if gnattools -maybe-installcheck-gnattools: installcheck-gnattools - -installcheck-gnattools: \ - configure-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-mostlyclean-gnattools mostlyclean-gnattools -maybe-mostlyclean-gnattools: -@if gnattools -maybe-mostlyclean-gnattools: mostlyclean-gnattools - -mostlyclean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-clean-gnattools clean-gnattools -maybe-clean-gnattools: -@if gnattools -maybe-clean-gnattools: clean-gnattools - -clean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-distclean-gnattools distclean-gnattools -maybe-distclean-gnattools: -@if gnattools -maybe-distclean-gnattools: distclean-gnattools - -distclean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif gnattools - -.PHONY: maybe-maintainer-clean-gnattools maintainer-clean-gnattools -maybe-maintainer-clean-gnattools: -@if gnattools -maybe-maintainer-clean-gnattools: maintainer-clean-gnattools - -maintainer-clean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif gnattools - - - -# --------------------------------------- -# Modules which run on the target machine -# --------------------------------------- - - - - -.PHONY: configure-target-libstdc++-v3 maybe-configure-target-libstdc++-v3 -maybe-configure-target-libstdc++-v3: -@if gcc-bootstrap -configure-target-libstdc++-v3: stage_current -@endif gcc-bootstrap -@if target-libstdc++-v3 -maybe-configure-target-libstdc++-v3: configure-target-libstdc++-v3 -configure-target-libstdc++-v3: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libstdc++-v3; \ - cd "$(TARGET_SUBDIR)/libstdc++-v3" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libstdc++-v3 - - - -.PHONY: configure-stage1-target-libstdc++-v3 maybe-configure-stage1-target-libstdc++-v3 -maybe-configure-stage1-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 -configure-stage1-target-libstdc++-v3: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif target-libstdc++-v3-bootstrap - -.PHONY: configure-stage2-target-libstdc++-v3 maybe-configure-stage2-target-libstdc++-v3 -maybe-configure-stage2-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 -configure-stage2-target-libstdc++-v3: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif target-libstdc++-v3-bootstrap - -.PHONY: configure-stage3-target-libstdc++-v3 maybe-configure-stage3-target-libstdc++-v3 -maybe-configure-stage3-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 -configure-stage3-target-libstdc++-v3: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif target-libstdc++-v3-bootstrap - -.PHONY: configure-stage4-target-libstdc++-v3 maybe-configure-stage4-target-libstdc++-v3 -maybe-configure-stage4-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 -configure-stage4-target-libstdc++-v3: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif target-libstdc++-v3-bootstrap - -.PHONY: configure-stageprofile-target-libstdc++-v3 maybe-configure-stageprofile-target-libstdc++-v3 -maybe-configure-stageprofile-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 -configure-stageprofile-target-libstdc++-v3: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif target-libstdc++-v3-bootstrap - -.PHONY: configure-stagefeedback-target-libstdc++-v3 maybe-configure-stagefeedback-target-libstdc++-v3 -maybe-configure-stagefeedback-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 -configure-stagefeedback-target-libstdc++-v3: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif target-libstdc++-v3-bootstrap - - - - - -.PHONY: all-target-libstdc++-v3 maybe-all-target-libstdc++-v3 -maybe-all-target-libstdc++-v3: -@if gcc-bootstrap -all-target-libstdc++-v3: stage_current -@endif gcc-bootstrap -@if target-libstdc++-v3 -TARGET-target-libstdc++-v3=all -maybe-all-target-libstdc++-v3: all-target-libstdc++-v3 -all-target-libstdc++-v3: configure-target-libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - $(TARGET-target-libstdc++-v3)) -@endif target-libstdc++-v3 - - - -.PHONY: all-stage1-target-libstdc++-v3 maybe-all-stage1-target-libstdc++-v3 -.PHONY: clean-stage1-target-libstdc++-v3 maybe-clean-stage1-target-libstdc++-v3 -maybe-all-stage1-target-libstdc++-v3: -maybe-clean-stage1-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage1-target-libstdc++-v3: all-stage1-target-libstdc++-v3 -all-stage1: all-stage1-target-libstdc++-v3 -TARGET-stage1-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-target-libstdc++-v3) - -maybe-clean-stage1-target-libstdc++-v3: clean-stage1-target-libstdc++-v3 -clean-stage1: clean-stage1-target-libstdc++-v3 -clean-stage1-target-libstdc++-v3: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage1-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - clean -@endif target-libstdc++-v3-bootstrap - - -.PHONY: all-stage2-target-libstdc++-v3 maybe-all-stage2-target-libstdc++-v3 -.PHONY: clean-stage2-target-libstdc++-v3 maybe-clean-stage2-target-libstdc++-v3 -maybe-all-stage2-target-libstdc++-v3: -maybe-clean-stage2-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage2-target-libstdc++-v3: all-stage2-target-libstdc++-v3 -all-stage2: all-stage2-target-libstdc++-v3 -TARGET-stage2-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-target-libstdc++-v3) - -maybe-clean-stage2-target-libstdc++-v3: clean-stage2-target-libstdc++-v3 -clean-stage2: clean-stage2-target-libstdc++-v3 -clean-stage2-target-libstdc++-v3: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage2-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - \ - clean -@endif target-libstdc++-v3-bootstrap - - -.PHONY: all-stage3-target-libstdc++-v3 maybe-all-stage3-target-libstdc++-v3 -.PHONY: clean-stage3-target-libstdc++-v3 maybe-clean-stage3-target-libstdc++-v3 -maybe-all-stage3-target-libstdc++-v3: -maybe-clean-stage3-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage3-target-libstdc++-v3: all-stage3-target-libstdc++-v3 -all-stage3: all-stage3-target-libstdc++-v3 -TARGET-stage3-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-target-libstdc++-v3) - -maybe-clean-stage3-target-libstdc++-v3: clean-stage3-target-libstdc++-v3 -clean-stage3: clean-stage3-target-libstdc++-v3 -clean-stage3-target-libstdc++-v3: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage3-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - \ - clean -@endif target-libstdc++-v3-bootstrap - - -.PHONY: all-stage4-target-libstdc++-v3 maybe-all-stage4-target-libstdc++-v3 -.PHONY: clean-stage4-target-libstdc++-v3 maybe-clean-stage4-target-libstdc++-v3 -maybe-all-stage4-target-libstdc++-v3: -maybe-clean-stage4-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage4-target-libstdc++-v3: all-stage4-target-libstdc++-v3 -all-stage4: all-stage4-target-libstdc++-v3 -TARGET-stage4-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-target-libstdc++-v3) - -maybe-clean-stage4-target-libstdc++-v3: clean-stage4-target-libstdc++-v3 -clean-stage4: clean-stage4-target-libstdc++-v3 -clean-stage4-target-libstdc++-v3: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage4-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - \ - clean -@endif target-libstdc++-v3-bootstrap - - -.PHONY: all-stageprofile-target-libstdc++-v3 maybe-all-stageprofile-target-libstdc++-v3 -.PHONY: clean-stageprofile-target-libstdc++-v3 maybe-clean-stageprofile-target-libstdc++-v3 -maybe-all-stageprofile-target-libstdc++-v3: -maybe-clean-stageprofile-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stageprofile-target-libstdc++-v3: all-stageprofile-target-libstdc++-v3 -all-stageprofile: all-stageprofile-target-libstdc++-v3 -TARGET-stageprofile-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-target-libstdc++-v3) - -maybe-clean-stageprofile-target-libstdc++-v3: clean-stageprofile-target-libstdc++-v3 -clean-stageprofile: clean-stageprofile-target-libstdc++-v3 -clean-stageprofile-target-libstdc++-v3: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stageprofile-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - \ - clean -@endif target-libstdc++-v3-bootstrap - - -.PHONY: all-stagefeedback-target-libstdc++-v3 maybe-all-stagefeedback-target-libstdc++-v3 -.PHONY: clean-stagefeedback-target-libstdc++-v3 maybe-clean-stagefeedback-target-libstdc++-v3 -maybe-all-stagefeedback-target-libstdc++-v3: -maybe-clean-stagefeedback-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stagefeedback-target-libstdc++-v3: all-stagefeedback-target-libstdc++-v3 -all-stagefeedback: all-stagefeedback-target-libstdc++-v3 -TARGET-stagefeedback-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-target-libstdc++-v3) - -maybe-clean-stagefeedback-target-libstdc++-v3: clean-stagefeedback-target-libstdc++-v3 -clean-stagefeedback: clean-stagefeedback-target-libstdc++-v3 -clean-stagefeedback-target-libstdc++-v3: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stagefeedback-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - \ - clean -@endif target-libstdc++-v3-bootstrap - - - - - - -.PHONY: check-target-libstdc++-v3 maybe-check-target-libstdc++-v3 -maybe-check-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-check-target-libstdc++-v3: check-target-libstdc++-v3 - -check-target-libstdc++-v3: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' check) - -@endif target-libstdc++-v3 - -.PHONY: install-target-libstdc++-v3 maybe-install-target-libstdc++-v3 -maybe-install-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-target-libstdc++-v3: install-target-libstdc++-v3 - -install-target-libstdc++-v3: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libstdc++-v3 - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libstdc++-v3 info-target-libstdc++-v3 -maybe-info-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-info-target-libstdc++-v3: info-target-libstdc++-v3 - -info-target-libstdc++-v3: \ - configure-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-dvi-target-libstdc++-v3 dvi-target-libstdc++-v3 -maybe-dvi-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-dvi-target-libstdc++-v3: dvi-target-libstdc++-v3 - -dvi-target-libstdc++-v3: \ - configure-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-pdf-target-libstdc++-v3 pdf-target-libstdc++-v3 -maybe-pdf-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-pdf-target-libstdc++-v3: pdf-target-libstdc++-v3 - -pdf-target-libstdc++-v3: \ - configure-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-html-target-libstdc++-v3 html-target-libstdc++-v3 -maybe-html-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-html-target-libstdc++-v3: html-target-libstdc++-v3 - -html-target-libstdc++-v3: \ - configure-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-TAGS-target-libstdc++-v3 TAGS-target-libstdc++-v3 -maybe-TAGS-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-TAGS-target-libstdc++-v3: TAGS-target-libstdc++-v3 - -TAGS-target-libstdc++-v3: \ - configure-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-install-info-target-libstdc++-v3 install-info-target-libstdc++-v3 -maybe-install-info-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-info-target-libstdc++-v3: install-info-target-libstdc++-v3 - -install-info-target-libstdc++-v3: \ - configure-target-libstdc++-v3 \ - info-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-install-pdf-target-libstdc++-v3 install-pdf-target-libstdc++-v3 -maybe-install-pdf-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-pdf-target-libstdc++-v3: install-pdf-target-libstdc++-v3 - -install-pdf-target-libstdc++-v3: \ - configure-target-libstdc++-v3 \ - pdf-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-install-html-target-libstdc++-v3 install-html-target-libstdc++-v3 -maybe-install-html-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-html-target-libstdc++-v3: install-html-target-libstdc++-v3 - -install-html-target-libstdc++-v3: \ - configure-target-libstdc++-v3 \ - html-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-installcheck-target-libstdc++-v3 installcheck-target-libstdc++-v3 -maybe-installcheck-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-installcheck-target-libstdc++-v3: installcheck-target-libstdc++-v3 - -installcheck-target-libstdc++-v3: \ - configure-target-libstdc++-v3 - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-mostlyclean-target-libstdc++-v3 mostlyclean-target-libstdc++-v3 -maybe-mostlyclean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-mostlyclean-target-libstdc++-v3: mostlyclean-target-libstdc++-v3 - -mostlyclean-target-libstdc++-v3: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-clean-target-libstdc++-v3 clean-target-libstdc++-v3 -maybe-clean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-clean-target-libstdc++-v3: clean-target-libstdc++-v3 - -clean-target-libstdc++-v3: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-distclean-target-libstdc++-v3 distclean-target-libstdc++-v3 -maybe-distclean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-distclean-target-libstdc++-v3: distclean-target-libstdc++-v3 - -distclean-target-libstdc++-v3: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libstdc++-v3 - -.PHONY: maybe-maintainer-clean-target-libstdc++-v3 maintainer-clean-target-libstdc++-v3 -maybe-maintainer-clean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-maintainer-clean-target-libstdc++-v3: maintainer-clean-target-libstdc++-v3 - -maintainer-clean-target-libstdc++-v3: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libstdc++-v3 - - - - - -.PHONY: configure-target-libmudflap maybe-configure-target-libmudflap -maybe-configure-target-libmudflap: -@if gcc-bootstrap -configure-target-libmudflap: stage_current -@endif gcc-bootstrap -@if target-libmudflap -maybe-configure-target-libmudflap: configure-target-libmudflap -configure-target-libmudflap: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libmudflap..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmudflap ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmudflap/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libmudflap/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libmudflap/multilib.tmp $(TARGET_SUBDIR)/libmudflap/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libmudflap/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libmudflap/Makefile; \ - mv $(TARGET_SUBDIR)/libmudflap/multilib.tmp $(TARGET_SUBDIR)/libmudflap/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libmudflap/multilib.tmp $(TARGET_SUBDIR)/libmudflap/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libmudflap/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmudflap ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libmudflap; \ - cd "$(TARGET_SUBDIR)/libmudflap" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libmudflap/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libmudflap"; \ - libsrcdir="$$s/libmudflap"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libmudflap - - - - - -.PHONY: all-target-libmudflap maybe-all-target-libmudflap -maybe-all-target-libmudflap: -@if gcc-bootstrap -all-target-libmudflap: stage_current -@endif gcc-bootstrap -@if target-libmudflap -TARGET-target-libmudflap=all -maybe-all-target-libmudflap: all-target-libmudflap -all-target-libmudflap: configure-target-libmudflap - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libmudflap)) -@endif target-libmudflap - - - - - -.PHONY: check-target-libmudflap maybe-check-target-libmudflap -maybe-check-target-libmudflap: -@if target-libmudflap -maybe-check-target-libmudflap: check-target-libmudflap - -check-target-libmudflap: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libmudflap - -.PHONY: install-target-libmudflap maybe-install-target-libmudflap -maybe-install-target-libmudflap: -@if target-libmudflap -maybe-install-target-libmudflap: install-target-libmudflap - -install-target-libmudflap: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libmudflap - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libmudflap info-target-libmudflap -maybe-info-target-libmudflap: -@if target-libmudflap -maybe-info-target-libmudflap: info-target-libmudflap - -info-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-dvi-target-libmudflap dvi-target-libmudflap -maybe-dvi-target-libmudflap: -@if target-libmudflap -maybe-dvi-target-libmudflap: dvi-target-libmudflap - -dvi-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-pdf-target-libmudflap pdf-target-libmudflap -maybe-pdf-target-libmudflap: -@if target-libmudflap -maybe-pdf-target-libmudflap: pdf-target-libmudflap - -pdf-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-html-target-libmudflap html-target-libmudflap -maybe-html-target-libmudflap: -@if target-libmudflap -maybe-html-target-libmudflap: html-target-libmudflap - -html-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-TAGS-target-libmudflap TAGS-target-libmudflap -maybe-TAGS-target-libmudflap: -@if target-libmudflap -maybe-TAGS-target-libmudflap: TAGS-target-libmudflap - -TAGS-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-install-info-target-libmudflap install-info-target-libmudflap -maybe-install-info-target-libmudflap: -@if target-libmudflap -maybe-install-info-target-libmudflap: install-info-target-libmudflap - -install-info-target-libmudflap: \ - configure-target-libmudflap \ - info-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-install-pdf-target-libmudflap install-pdf-target-libmudflap -maybe-install-pdf-target-libmudflap: -@if target-libmudflap -maybe-install-pdf-target-libmudflap: install-pdf-target-libmudflap - -install-pdf-target-libmudflap: \ - configure-target-libmudflap \ - pdf-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-install-html-target-libmudflap install-html-target-libmudflap -maybe-install-html-target-libmudflap: -@if target-libmudflap -maybe-install-html-target-libmudflap: install-html-target-libmudflap - -install-html-target-libmudflap: \ - configure-target-libmudflap \ - html-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-installcheck-target-libmudflap installcheck-target-libmudflap -maybe-installcheck-target-libmudflap: -@if target-libmudflap -maybe-installcheck-target-libmudflap: installcheck-target-libmudflap - -installcheck-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-mostlyclean-target-libmudflap mostlyclean-target-libmudflap -maybe-mostlyclean-target-libmudflap: -@if target-libmudflap -maybe-mostlyclean-target-libmudflap: mostlyclean-target-libmudflap - -mostlyclean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-clean-target-libmudflap clean-target-libmudflap -maybe-clean-target-libmudflap: -@if target-libmudflap -maybe-clean-target-libmudflap: clean-target-libmudflap - -clean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-distclean-target-libmudflap distclean-target-libmudflap -maybe-distclean-target-libmudflap: -@if target-libmudflap -maybe-distclean-target-libmudflap: distclean-target-libmudflap - -distclean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-maintainer-clean-target-libmudflap maintainer-clean-target-libmudflap -maybe-maintainer-clean-target-libmudflap: -@if target-libmudflap -maybe-maintainer-clean-target-libmudflap: maintainer-clean-target-libmudflap - -maintainer-clean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libmudflap - - - - - -.PHONY: configure-target-libssp maybe-configure-target-libssp -maybe-configure-target-libssp: -@if gcc-bootstrap -configure-target-libssp: stage_current -@endif gcc-bootstrap -@if target-libssp -maybe-configure-target-libssp: configure-target-libssp -configure-target-libssp: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libssp..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libssp ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libssp/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libssp/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libssp/multilib.tmp $(TARGET_SUBDIR)/libssp/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libssp/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libssp/Makefile; \ - mv $(TARGET_SUBDIR)/libssp/multilib.tmp $(TARGET_SUBDIR)/libssp/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libssp/multilib.tmp $(TARGET_SUBDIR)/libssp/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libssp/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libssp ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libssp; \ - cd "$(TARGET_SUBDIR)/libssp" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libssp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libssp"; \ - libsrcdir="$$s/libssp"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libssp - - - - - -.PHONY: all-target-libssp maybe-all-target-libssp -maybe-all-target-libssp: -@if gcc-bootstrap -all-target-libssp: stage_current -@endif gcc-bootstrap -@if target-libssp -TARGET-target-libssp=all -maybe-all-target-libssp: all-target-libssp -all-target-libssp: configure-target-libssp - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libssp)) -@endif target-libssp - - - - - -.PHONY: check-target-libssp maybe-check-target-libssp -maybe-check-target-libssp: -@if target-libssp -maybe-check-target-libssp: check-target-libssp - -check-target-libssp: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libssp - -.PHONY: install-target-libssp maybe-install-target-libssp -maybe-install-target-libssp: -@if target-libssp -maybe-install-target-libssp: install-target-libssp - -install-target-libssp: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libssp - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libssp info-target-libssp -maybe-info-target-libssp: -@if target-libssp -maybe-info-target-libssp: info-target-libssp - -info-target-libssp: \ - configure-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-dvi-target-libssp dvi-target-libssp -maybe-dvi-target-libssp: -@if target-libssp -maybe-dvi-target-libssp: dvi-target-libssp - -dvi-target-libssp: \ - configure-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-pdf-target-libssp pdf-target-libssp -maybe-pdf-target-libssp: -@if target-libssp -maybe-pdf-target-libssp: pdf-target-libssp - -pdf-target-libssp: \ - configure-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-html-target-libssp html-target-libssp -maybe-html-target-libssp: -@if target-libssp -maybe-html-target-libssp: html-target-libssp - -html-target-libssp: \ - configure-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-TAGS-target-libssp TAGS-target-libssp -maybe-TAGS-target-libssp: -@if target-libssp -maybe-TAGS-target-libssp: TAGS-target-libssp - -TAGS-target-libssp: \ - configure-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-install-info-target-libssp install-info-target-libssp -maybe-install-info-target-libssp: -@if target-libssp -maybe-install-info-target-libssp: install-info-target-libssp - -install-info-target-libssp: \ - configure-target-libssp \ - info-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-install-pdf-target-libssp install-pdf-target-libssp -maybe-install-pdf-target-libssp: -@if target-libssp -maybe-install-pdf-target-libssp: install-pdf-target-libssp - -install-pdf-target-libssp: \ - configure-target-libssp \ - pdf-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-install-html-target-libssp install-html-target-libssp -maybe-install-html-target-libssp: -@if target-libssp -maybe-install-html-target-libssp: install-html-target-libssp - -install-html-target-libssp: \ - configure-target-libssp \ - html-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-installcheck-target-libssp installcheck-target-libssp -maybe-installcheck-target-libssp: -@if target-libssp -maybe-installcheck-target-libssp: installcheck-target-libssp - -installcheck-target-libssp: \ - configure-target-libssp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-mostlyclean-target-libssp mostlyclean-target-libssp -maybe-mostlyclean-target-libssp: -@if target-libssp -maybe-mostlyclean-target-libssp: mostlyclean-target-libssp - -mostlyclean-target-libssp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-clean-target-libssp clean-target-libssp -maybe-clean-target-libssp: -@if target-libssp -maybe-clean-target-libssp: clean-target-libssp - -clean-target-libssp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-distclean-target-libssp distclean-target-libssp -maybe-distclean-target-libssp: -@if target-libssp -maybe-distclean-target-libssp: distclean-target-libssp - -distclean-target-libssp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libssp - -.PHONY: maybe-maintainer-clean-target-libssp maintainer-clean-target-libssp -maybe-maintainer-clean-target-libssp: -@if target-libssp -maybe-maintainer-clean-target-libssp: maintainer-clean-target-libssp - -maintainer-clean-target-libssp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libssp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libssp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libssp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libssp - - - - - -.PHONY: configure-target-newlib maybe-configure-target-newlib -maybe-configure-target-newlib: -@if gcc-bootstrap -configure-target-newlib: stage_current -@endif gcc-bootstrap -@if target-newlib -maybe-configure-target-newlib: configure-target-newlib -configure-target-newlib: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for newlib..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/newlib ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/newlib/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/newlib/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/newlib/multilib.tmp $(TARGET_SUBDIR)/newlib/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/newlib/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/newlib/Makefile; \ - mv $(TARGET_SUBDIR)/newlib/multilib.tmp $(TARGET_SUBDIR)/newlib/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/newlib/multilib.tmp $(TARGET_SUBDIR)/newlib/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/newlib/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/newlib ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/newlib; \ - cd "$(TARGET_SUBDIR)/newlib" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/newlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/newlib"; \ - libsrcdir="$$s/newlib"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-newlib - - - - - -.PHONY: all-target-newlib maybe-all-target-newlib -maybe-all-target-newlib: -@if gcc-bootstrap -all-target-newlib: stage_current -@endif gcc-bootstrap -@if target-newlib -TARGET-target-newlib=all -maybe-all-target-newlib: all-target-newlib -all-target-newlib: configure-target-newlib - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-newlib)) -@endif target-newlib - - - - - -.PHONY: check-target-newlib maybe-check-target-newlib -maybe-check-target-newlib: -@if target-newlib -maybe-check-target-newlib: check-target-newlib - -check-target-newlib: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-newlib - -.PHONY: install-target-newlib maybe-install-target-newlib -maybe-install-target-newlib: -@if target-newlib -maybe-install-target-newlib: install-target-newlib - -install-target-newlib: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-newlib - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-newlib info-target-newlib -maybe-info-target-newlib: -@if target-newlib -maybe-info-target-newlib: info-target-newlib - -info-target-newlib: \ - configure-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-dvi-target-newlib dvi-target-newlib -maybe-dvi-target-newlib: -@if target-newlib -maybe-dvi-target-newlib: dvi-target-newlib - -dvi-target-newlib: \ - configure-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-pdf-target-newlib pdf-target-newlib -maybe-pdf-target-newlib: -@if target-newlib -maybe-pdf-target-newlib: pdf-target-newlib - -pdf-target-newlib: \ - configure-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-html-target-newlib html-target-newlib -maybe-html-target-newlib: -@if target-newlib -maybe-html-target-newlib: html-target-newlib - -html-target-newlib: \ - configure-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-TAGS-target-newlib TAGS-target-newlib -maybe-TAGS-target-newlib: -@if target-newlib -maybe-TAGS-target-newlib: TAGS-target-newlib - -TAGS-target-newlib: \ - configure-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-install-info-target-newlib install-info-target-newlib -maybe-install-info-target-newlib: -@if target-newlib -maybe-install-info-target-newlib: install-info-target-newlib - -install-info-target-newlib: \ - configure-target-newlib \ - info-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-install-pdf-target-newlib install-pdf-target-newlib -maybe-install-pdf-target-newlib: -@if target-newlib -maybe-install-pdf-target-newlib: install-pdf-target-newlib - -install-pdf-target-newlib: \ - configure-target-newlib \ - pdf-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-install-html-target-newlib install-html-target-newlib -maybe-install-html-target-newlib: -@if target-newlib -maybe-install-html-target-newlib: install-html-target-newlib - -install-html-target-newlib: \ - configure-target-newlib \ - html-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-installcheck-target-newlib installcheck-target-newlib -maybe-installcheck-target-newlib: -@if target-newlib -maybe-installcheck-target-newlib: installcheck-target-newlib - -installcheck-target-newlib: \ - configure-target-newlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-mostlyclean-target-newlib mostlyclean-target-newlib -maybe-mostlyclean-target-newlib: -@if target-newlib -maybe-mostlyclean-target-newlib: mostlyclean-target-newlib - -mostlyclean-target-newlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-clean-target-newlib clean-target-newlib -maybe-clean-target-newlib: -@if target-newlib -maybe-clean-target-newlib: clean-target-newlib - -clean-target-newlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-distclean-target-newlib distclean-target-newlib -maybe-distclean-target-newlib: -@if target-newlib -maybe-distclean-target-newlib: distclean-target-newlib - -distclean-target-newlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-newlib - -.PHONY: maybe-maintainer-clean-target-newlib maintainer-clean-target-newlib -maybe-maintainer-clean-target-newlib: -@if target-newlib -maybe-maintainer-clean-target-newlib: maintainer-clean-target-newlib - -maintainer-clean-target-newlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/newlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/newlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/newlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-newlib - - - - - -.PHONY: configure-target-libgcc maybe-configure-target-libgcc -maybe-configure-target-libgcc: -@if gcc-bootstrap -configure-target-libgcc: stage_current -@endif gcc-bootstrap -@if target-libgcc -maybe-configure-target-libgcc: configure-target-libgcc -configure-target-libgcc: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libgcc..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libgcc; \ - cd "$(TARGET_SUBDIR)/libgcc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libgcc - - - -.PHONY: configure-stage1-target-libgcc maybe-configure-stage1-target-libgcc -maybe-configure-stage1-target-libgcc: -@if target-libgcc-bootstrap -maybe-configure-stage1-target-libgcc: configure-stage1-target-libgcc -configure-stage1-target-libgcc: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - echo "Checking multilib configuration for libgcc..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ - $(NORMAL_TARGET_EXPORTS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(TARGET_SUBDIR)/libgcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - cd $(TARGET_SUBDIR)/libgcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif target-libgcc-bootstrap - -.PHONY: configure-stage2-target-libgcc maybe-configure-stage2-target-libgcc -maybe-configure-stage2-target-libgcc: -@if target-libgcc-bootstrap -maybe-configure-stage2-target-libgcc: configure-stage2-target-libgcc -configure-stage2-target-libgcc: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - echo "Checking multilib configuration for libgcc..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 2 in $(TARGET_SUBDIR)/libgcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - cd $(TARGET_SUBDIR)/libgcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) -@endif target-libgcc-bootstrap - -.PHONY: configure-stage3-target-libgcc maybe-configure-stage3-target-libgcc -maybe-configure-stage3-target-libgcc: -@if target-libgcc-bootstrap -maybe-configure-stage3-target-libgcc: configure-stage3-target-libgcc -configure-stage3-target-libgcc: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - echo "Checking multilib configuration for libgcc..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 3 in $(TARGET_SUBDIR)/libgcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - cd $(TARGET_SUBDIR)/libgcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) -@endif target-libgcc-bootstrap - -.PHONY: configure-stage4-target-libgcc maybe-configure-stage4-target-libgcc -maybe-configure-stage4-target-libgcc: -@if target-libgcc-bootstrap -maybe-configure-stage4-target-libgcc: configure-stage4-target-libgcc -configure-stage4-target-libgcc: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - echo "Checking multilib configuration for libgcc..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage 4 in $(TARGET_SUBDIR)/libgcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - cd $(TARGET_SUBDIR)/libgcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) -@endif target-libgcc-bootstrap - -.PHONY: configure-stageprofile-target-libgcc maybe-configure-stageprofile-target-libgcc -maybe-configure-stageprofile-target-libgcc: -@if target-libgcc-bootstrap -maybe-configure-stageprofile-target-libgcc: configure-stageprofile-target-libgcc -configure-stageprofile-target-libgcc: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - echo "Checking multilib configuration for libgcc..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage profile in $(TARGET_SUBDIR)/libgcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - cd $(TARGET_SUBDIR)/libgcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) -@endif target-libgcc-bootstrap - -.PHONY: configure-stagefeedback-target-libgcc maybe-configure-stagefeedback-target-libgcc -maybe-configure-stagefeedback-target-libgcc: -@if target-libgcc-bootstrap -maybe-configure-stagefeedback-target-libgcc: configure-stagefeedback-target-libgcc -configure-stagefeedback-target-libgcc: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - echo "Checking multilib configuration for libgcc..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ - echo Configuring stage feedback in $(TARGET_SUBDIR)/libgcc ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - cd $(TARGET_SUBDIR)/libgcc || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) -@endif target-libgcc-bootstrap - - - - - -.PHONY: all-target-libgcc maybe-all-target-libgcc -maybe-all-target-libgcc: -@if gcc-bootstrap -all-target-libgcc: stage_current -@endif gcc-bootstrap -@if target-libgcc -TARGET-target-libgcc=all -maybe-all-target-libgcc: all-target-libgcc -all-target-libgcc: configure-target-libgcc - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libgcc)) -@endif target-libgcc - - - -.PHONY: all-stage1-target-libgcc maybe-all-stage1-target-libgcc -.PHONY: clean-stage1-target-libgcc maybe-clean-stage1-target-libgcc -maybe-all-stage1-target-libgcc: -maybe-clean-stage1-target-libgcc: -@if target-libgcc-bootstrap -maybe-all-stage1-target-libgcc: all-stage1-target-libgcc -all-stage1: all-stage1-target-libgcc -TARGET-stage1-target-libgcc = $(TARGET-target-libgcc) -all-stage1-target-libgcc: configure-stage1-target-libgcc - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(NORMAL_TARGET_EXPORTS) \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-target-libgcc) - -maybe-clean-stage1-target-libgcc: clean-stage1-target-libgcc -clean-stage1: clean-stage1-target-libgcc -clean-stage1-target-libgcc: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage1-libgcc/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) \ - clean -@endif target-libgcc-bootstrap - - -.PHONY: all-stage2-target-libgcc maybe-all-stage2-target-libgcc -.PHONY: clean-stage2-target-libgcc maybe-clean-stage2-target-libgcc -maybe-all-stage2-target-libgcc: -maybe-clean-stage2-target-libgcc: -@if target-libgcc-bootstrap -maybe-all-stage2-target-libgcc: all-stage2-target-libgcc -all-stage2: all-stage2-target-libgcc -TARGET-stage2-target-libgcc = $(TARGET-target-libgcc) -all-stage2-target-libgcc: configure-stage2-target-libgcc - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-target-libgcc) - -maybe-clean-stage2-target-libgcc: clean-stage2-target-libgcc -clean-stage2: clean-stage2-target-libgcc -clean-stage2-target-libgcc: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage2-libgcc/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) \ - \ - clean -@endif target-libgcc-bootstrap - - -.PHONY: all-stage3-target-libgcc maybe-all-stage3-target-libgcc -.PHONY: clean-stage3-target-libgcc maybe-clean-stage3-target-libgcc -maybe-all-stage3-target-libgcc: -maybe-clean-stage3-target-libgcc: -@if target-libgcc-bootstrap -maybe-all-stage3-target-libgcc: all-stage3-target-libgcc -all-stage3: all-stage3-target-libgcc -TARGET-stage3-target-libgcc = $(TARGET-target-libgcc) -all-stage3-target-libgcc: configure-stage3-target-libgcc - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-target-libgcc) - -maybe-clean-stage3-target-libgcc: clean-stage3-target-libgcc -clean-stage3: clean-stage3-target-libgcc -clean-stage3-target-libgcc: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage3-libgcc/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) \ - \ - clean -@endif target-libgcc-bootstrap - - -.PHONY: all-stage4-target-libgcc maybe-all-stage4-target-libgcc -.PHONY: clean-stage4-target-libgcc maybe-clean-stage4-target-libgcc -maybe-all-stage4-target-libgcc: -maybe-clean-stage4-target-libgcc: -@if target-libgcc-bootstrap -maybe-all-stage4-target-libgcc: all-stage4-target-libgcc -all-stage4: all-stage4-target-libgcc -TARGET-stage4-target-libgcc = $(TARGET-target-libgcc) -all-stage4-target-libgcc: configure-stage4-target-libgcc - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-target-libgcc) - -maybe-clean-stage4-target-libgcc: clean-stage4-target-libgcc -clean-stage4: clean-stage4-target-libgcc -clean-stage4-target-libgcc: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage4-libgcc/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) \ - \ - clean -@endif target-libgcc-bootstrap - - -.PHONY: all-stageprofile-target-libgcc maybe-all-stageprofile-target-libgcc -.PHONY: clean-stageprofile-target-libgcc maybe-clean-stageprofile-target-libgcc -maybe-all-stageprofile-target-libgcc: -maybe-clean-stageprofile-target-libgcc: -@if target-libgcc-bootstrap -maybe-all-stageprofile-target-libgcc: all-stageprofile-target-libgcc -all-stageprofile: all-stageprofile-target-libgcc -TARGET-stageprofile-target-libgcc = $(TARGET-target-libgcc) -all-stageprofile-target-libgcc: configure-stageprofile-target-libgcc - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-target-libgcc) - -maybe-clean-stageprofile-target-libgcc: clean-stageprofile-target-libgcc -clean-stageprofile: clean-stageprofile-target-libgcc -clean-stageprofile-target-libgcc: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stageprofile-libgcc/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) \ - \ - clean -@endif target-libgcc-bootstrap - - -.PHONY: all-stagefeedback-target-libgcc maybe-all-stagefeedback-target-libgcc -.PHONY: clean-stagefeedback-target-libgcc maybe-clean-stagefeedback-target-libgcc -maybe-all-stagefeedback-target-libgcc: -maybe-clean-stagefeedback-target-libgcc: -@if target-libgcc-bootstrap -maybe-all-stagefeedback-target-libgcc: all-stagefeedback-target-libgcc -all-stagefeedback: all-stagefeedback-target-libgcc -TARGET-stagefeedback-target-libgcc = $(TARGET-target-libgcc) -all-stagefeedback-target-libgcc: configure-stagefeedback-target-libgcc - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(NORMAL_TARGET_EXPORTS) \ - \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ - CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-target-libgcc) - -maybe-clean-stagefeedback-target-libgcc: clean-stagefeedback-target-libgcc -clean-stagefeedback: clean-stagefeedback-target-libgcc -clean-stagefeedback-target-libgcc: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stagefeedback-libgcc/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) \ - \ - clean -@endif target-libgcc-bootstrap - - - - - - -.PHONY: check-target-libgcc maybe-check-target-libgcc -maybe-check-target-libgcc: -@if target-libgcc -maybe-check-target-libgcc: check-target-libgcc - -# Dummy target for uncheckable module. -check-target-libgcc: - -@endif target-libgcc - -.PHONY: install-target-libgcc maybe-install-target-libgcc -maybe-install-target-libgcc: -@if target-libgcc -maybe-install-target-libgcc: install-target-libgcc - -install-target-libgcc: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libgcc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libgcc info-target-libgcc -maybe-info-target-libgcc: -@if target-libgcc -maybe-info-target-libgcc: info-target-libgcc - -info-target-libgcc: \ - configure-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-dvi-target-libgcc dvi-target-libgcc -maybe-dvi-target-libgcc: -@if target-libgcc -maybe-dvi-target-libgcc: dvi-target-libgcc - -dvi-target-libgcc: \ - configure-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-pdf-target-libgcc pdf-target-libgcc -maybe-pdf-target-libgcc: -@if target-libgcc -maybe-pdf-target-libgcc: pdf-target-libgcc - -pdf-target-libgcc: \ - configure-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-html-target-libgcc html-target-libgcc -maybe-html-target-libgcc: -@if target-libgcc -maybe-html-target-libgcc: html-target-libgcc - -html-target-libgcc: \ - configure-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-TAGS-target-libgcc TAGS-target-libgcc -maybe-TAGS-target-libgcc: -@if target-libgcc -maybe-TAGS-target-libgcc: TAGS-target-libgcc - -TAGS-target-libgcc: \ - configure-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-install-info-target-libgcc install-info-target-libgcc -maybe-install-info-target-libgcc: -@if target-libgcc -maybe-install-info-target-libgcc: install-info-target-libgcc - -install-info-target-libgcc: \ - configure-target-libgcc \ - info-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-install-pdf-target-libgcc install-pdf-target-libgcc -maybe-install-pdf-target-libgcc: -@if target-libgcc -maybe-install-pdf-target-libgcc: install-pdf-target-libgcc - -install-pdf-target-libgcc: \ - configure-target-libgcc \ - pdf-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-install-html-target-libgcc install-html-target-libgcc -maybe-install-html-target-libgcc: -@if target-libgcc -maybe-install-html-target-libgcc: install-html-target-libgcc - -install-html-target-libgcc: \ - configure-target-libgcc \ - html-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-installcheck-target-libgcc installcheck-target-libgcc -maybe-installcheck-target-libgcc: -@if target-libgcc -maybe-installcheck-target-libgcc: installcheck-target-libgcc - -installcheck-target-libgcc: \ - configure-target-libgcc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-mostlyclean-target-libgcc mostlyclean-target-libgcc -maybe-mostlyclean-target-libgcc: -@if target-libgcc -maybe-mostlyclean-target-libgcc: mostlyclean-target-libgcc - -mostlyclean-target-libgcc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-clean-target-libgcc clean-target-libgcc -maybe-clean-target-libgcc: -@if target-libgcc -maybe-clean-target-libgcc: clean-target-libgcc - -clean-target-libgcc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-distclean-target-libgcc distclean-target-libgcc -maybe-distclean-target-libgcc: -@if target-libgcc -maybe-distclean-target-libgcc: distclean-target-libgcc - -distclean-target-libgcc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libgcc - -.PHONY: maybe-maintainer-clean-target-libgcc maintainer-clean-target-libgcc -maybe-maintainer-clean-target-libgcc: -@if target-libgcc -maybe-maintainer-clean-target-libgcc: maintainer-clean-target-libgcc - -maintainer-clean-target-libgcc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgcc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libgcc - - - - - -.PHONY: configure-target-libgfortran maybe-configure-target-libgfortran -maybe-configure-target-libgfortran: -@if gcc-bootstrap -configure-target-libgfortran: stage_current -@endif gcc-bootstrap -@if target-libgfortran -maybe-configure-target-libgfortran: configure-target-libgfortran -configure-target-libgfortran: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libgfortran..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgfortran ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgfortran/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgfortran/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgfortran/multilib.tmp $(TARGET_SUBDIR)/libgfortran/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgfortran/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgfortran/Makefile; \ - mv $(TARGET_SUBDIR)/libgfortran/multilib.tmp $(TARGET_SUBDIR)/libgfortran/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgfortran/multilib.tmp $(TARGET_SUBDIR)/libgfortran/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgfortran/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgfortran ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libgfortran; \ - cd "$(TARGET_SUBDIR)/libgfortran" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgfortran/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgfortran"; \ - libsrcdir="$$s/libgfortran"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libgfortran - - - - - -.PHONY: all-target-libgfortran maybe-all-target-libgfortran -maybe-all-target-libgfortran: -@if gcc-bootstrap -all-target-libgfortran: stage_current -@endif gcc-bootstrap -@if target-libgfortran -TARGET-target-libgfortran=all -maybe-all-target-libgfortran: all-target-libgfortran -all-target-libgfortran: configure-target-libgfortran - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libgfortran)) -@endif target-libgfortran - - - - - -.PHONY: check-target-libgfortran maybe-check-target-libgfortran -maybe-check-target-libgfortran: -@if target-libgfortran -maybe-check-target-libgfortran: check-target-libgfortran - -check-target-libgfortran: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libgfortran - -.PHONY: install-target-libgfortran maybe-install-target-libgfortran -maybe-install-target-libgfortran: -@if target-libgfortran -maybe-install-target-libgfortran: install-target-libgfortran - -install-target-libgfortran: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libgfortran - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libgfortran info-target-libgfortran -maybe-info-target-libgfortran: -@if target-libgfortran -maybe-info-target-libgfortran: info-target-libgfortran - -info-target-libgfortran: \ - configure-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-dvi-target-libgfortran dvi-target-libgfortran -maybe-dvi-target-libgfortran: -@if target-libgfortran -maybe-dvi-target-libgfortran: dvi-target-libgfortran - -dvi-target-libgfortran: \ - configure-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-pdf-target-libgfortran pdf-target-libgfortran -maybe-pdf-target-libgfortran: -@if target-libgfortran -maybe-pdf-target-libgfortran: pdf-target-libgfortran - -pdf-target-libgfortran: \ - configure-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-html-target-libgfortran html-target-libgfortran -maybe-html-target-libgfortran: -@if target-libgfortran -maybe-html-target-libgfortran: html-target-libgfortran - -html-target-libgfortran: \ - configure-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-TAGS-target-libgfortran TAGS-target-libgfortran -maybe-TAGS-target-libgfortran: -@if target-libgfortran -maybe-TAGS-target-libgfortran: TAGS-target-libgfortran - -TAGS-target-libgfortran: \ - configure-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-install-info-target-libgfortran install-info-target-libgfortran -maybe-install-info-target-libgfortran: -@if target-libgfortran -maybe-install-info-target-libgfortran: install-info-target-libgfortran - -install-info-target-libgfortran: \ - configure-target-libgfortran \ - info-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-install-pdf-target-libgfortran install-pdf-target-libgfortran -maybe-install-pdf-target-libgfortran: -@if target-libgfortran -maybe-install-pdf-target-libgfortran: install-pdf-target-libgfortran - -install-pdf-target-libgfortran: \ - configure-target-libgfortran \ - pdf-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-install-html-target-libgfortran install-html-target-libgfortran -maybe-install-html-target-libgfortran: -@if target-libgfortran -maybe-install-html-target-libgfortran: install-html-target-libgfortran - -install-html-target-libgfortran: \ - configure-target-libgfortran \ - html-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-installcheck-target-libgfortran installcheck-target-libgfortran -maybe-installcheck-target-libgfortran: -@if target-libgfortran -maybe-installcheck-target-libgfortran: installcheck-target-libgfortran - -installcheck-target-libgfortran: \ - configure-target-libgfortran - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-mostlyclean-target-libgfortran mostlyclean-target-libgfortran -maybe-mostlyclean-target-libgfortran: -@if target-libgfortran -maybe-mostlyclean-target-libgfortran: mostlyclean-target-libgfortran - -mostlyclean-target-libgfortran: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-clean-target-libgfortran clean-target-libgfortran -maybe-clean-target-libgfortran: -@if target-libgfortran -maybe-clean-target-libgfortran: clean-target-libgfortran - -clean-target-libgfortran: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-distclean-target-libgfortran distclean-target-libgfortran -maybe-distclean-target-libgfortran: -@if target-libgfortran -maybe-distclean-target-libgfortran: distclean-target-libgfortran - -distclean-target-libgfortran: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libgfortran - -.PHONY: maybe-maintainer-clean-target-libgfortran maintainer-clean-target-libgfortran -maybe-maintainer-clean-target-libgfortran: -@if target-libgfortran -maybe-maintainer-clean-target-libgfortran: maintainer-clean-target-libgfortran - -maintainer-clean-target-libgfortran: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgfortran/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgfortran" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgfortran && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libgfortran - - - - - -.PHONY: configure-target-libobjc maybe-configure-target-libobjc -maybe-configure-target-libobjc: -@if gcc-bootstrap -configure-target-libobjc: stage_current -@endif gcc-bootstrap -@if target-libobjc -maybe-configure-target-libobjc: configure-target-libobjc -configure-target-libobjc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libobjc..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libobjc ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libobjc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libobjc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libobjc/multilib.tmp $(TARGET_SUBDIR)/libobjc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libobjc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libobjc/Makefile; \ - mv $(TARGET_SUBDIR)/libobjc/multilib.tmp $(TARGET_SUBDIR)/libobjc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libobjc/multilib.tmp $(TARGET_SUBDIR)/libobjc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libobjc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libobjc ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libobjc; \ - cd "$(TARGET_SUBDIR)/libobjc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libobjc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libobjc"; \ - libsrcdir="$$s/libobjc"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libobjc - - - - - -.PHONY: all-target-libobjc maybe-all-target-libobjc -maybe-all-target-libobjc: -@if gcc-bootstrap -all-target-libobjc: stage_current -@endif gcc-bootstrap -@if target-libobjc -TARGET-target-libobjc=all -maybe-all-target-libobjc: all-target-libobjc -all-target-libobjc: configure-target-libobjc - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libobjc)) -@endif target-libobjc - - - - - -.PHONY: check-target-libobjc maybe-check-target-libobjc -maybe-check-target-libobjc: -@if target-libobjc -maybe-check-target-libobjc: check-target-libobjc - -check-target-libobjc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libobjc - -.PHONY: install-target-libobjc maybe-install-target-libobjc -maybe-install-target-libobjc: -@if target-libobjc -maybe-install-target-libobjc: install-target-libobjc - -install-target-libobjc: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libobjc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libobjc info-target-libobjc -maybe-info-target-libobjc: -@if target-libobjc -maybe-info-target-libobjc: info-target-libobjc - -info-target-libobjc: \ - configure-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-dvi-target-libobjc dvi-target-libobjc -maybe-dvi-target-libobjc: -@if target-libobjc -maybe-dvi-target-libobjc: dvi-target-libobjc - -dvi-target-libobjc: \ - configure-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-pdf-target-libobjc pdf-target-libobjc -maybe-pdf-target-libobjc: -@if target-libobjc -maybe-pdf-target-libobjc: pdf-target-libobjc - -pdf-target-libobjc: \ - configure-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-html-target-libobjc html-target-libobjc -maybe-html-target-libobjc: -@if target-libobjc -maybe-html-target-libobjc: html-target-libobjc - -html-target-libobjc: \ - configure-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-TAGS-target-libobjc TAGS-target-libobjc -maybe-TAGS-target-libobjc: -@if target-libobjc -maybe-TAGS-target-libobjc: TAGS-target-libobjc - -TAGS-target-libobjc: \ - configure-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-install-info-target-libobjc install-info-target-libobjc -maybe-install-info-target-libobjc: -@if target-libobjc -maybe-install-info-target-libobjc: install-info-target-libobjc - -install-info-target-libobjc: \ - configure-target-libobjc \ - info-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-install-pdf-target-libobjc install-pdf-target-libobjc -maybe-install-pdf-target-libobjc: -@if target-libobjc -maybe-install-pdf-target-libobjc: install-pdf-target-libobjc - -install-pdf-target-libobjc: \ - configure-target-libobjc \ - pdf-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-install-html-target-libobjc install-html-target-libobjc -maybe-install-html-target-libobjc: -@if target-libobjc -maybe-install-html-target-libobjc: install-html-target-libobjc - -install-html-target-libobjc: \ - configure-target-libobjc \ - html-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-installcheck-target-libobjc installcheck-target-libobjc -maybe-installcheck-target-libobjc: -@if target-libobjc -maybe-installcheck-target-libobjc: installcheck-target-libobjc - -installcheck-target-libobjc: \ - configure-target-libobjc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-mostlyclean-target-libobjc mostlyclean-target-libobjc -maybe-mostlyclean-target-libobjc: -@if target-libobjc -maybe-mostlyclean-target-libobjc: mostlyclean-target-libobjc - -mostlyclean-target-libobjc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-clean-target-libobjc clean-target-libobjc -maybe-clean-target-libobjc: -@if target-libobjc -maybe-clean-target-libobjc: clean-target-libobjc - -clean-target-libobjc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-distclean-target-libobjc distclean-target-libobjc -maybe-distclean-target-libobjc: -@if target-libobjc -maybe-distclean-target-libobjc: distclean-target-libobjc - -distclean-target-libobjc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libobjc - -.PHONY: maybe-maintainer-clean-target-libobjc maintainer-clean-target-libobjc -maybe-maintainer-clean-target-libobjc: -@if target-libobjc -maybe-maintainer-clean-target-libobjc: maintainer-clean-target-libobjc - -maintainer-clean-target-libobjc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libobjc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libobjc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libobjc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libobjc - - - - - -.PHONY: configure-target-libtermcap maybe-configure-target-libtermcap -maybe-configure-target-libtermcap: -@if gcc-bootstrap -configure-target-libtermcap: stage_current -@endif gcc-bootstrap -@if target-libtermcap -maybe-configure-target-libtermcap: configure-target-libtermcap -configure-target-libtermcap: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libtermcap..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libtermcap ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libtermcap/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libtermcap/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libtermcap/multilib.tmp $(TARGET_SUBDIR)/libtermcap/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libtermcap/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libtermcap/Makefile; \ - mv $(TARGET_SUBDIR)/libtermcap/multilib.tmp $(TARGET_SUBDIR)/libtermcap/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libtermcap/multilib.tmp $(TARGET_SUBDIR)/libtermcap/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libtermcap/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libtermcap ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libtermcap; \ - cd "$(TARGET_SUBDIR)/libtermcap" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libtermcap/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libtermcap"; \ - libsrcdir="$$s/libtermcap"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libtermcap - - - - - -.PHONY: all-target-libtermcap maybe-all-target-libtermcap -maybe-all-target-libtermcap: -@if gcc-bootstrap -all-target-libtermcap: stage_current -@endif gcc-bootstrap -@if target-libtermcap -TARGET-target-libtermcap=all -maybe-all-target-libtermcap: all-target-libtermcap -all-target-libtermcap: configure-target-libtermcap - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libtermcap)) -@endif target-libtermcap - - - - - -.PHONY: check-target-libtermcap maybe-check-target-libtermcap -maybe-check-target-libtermcap: -@if target-libtermcap -maybe-check-target-libtermcap: check-target-libtermcap - -# Dummy target for uncheckable module. -check-target-libtermcap: - -@endif target-libtermcap - -.PHONY: install-target-libtermcap maybe-install-target-libtermcap -maybe-install-target-libtermcap: -@if target-libtermcap -maybe-install-target-libtermcap: install-target-libtermcap - -install-target-libtermcap: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libtermcap - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libtermcap info-target-libtermcap -maybe-info-target-libtermcap: -@if target-libtermcap -maybe-info-target-libtermcap: info-target-libtermcap - -info-target-libtermcap: \ - configure-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-dvi-target-libtermcap dvi-target-libtermcap -maybe-dvi-target-libtermcap: -@if target-libtermcap -maybe-dvi-target-libtermcap: dvi-target-libtermcap - -dvi-target-libtermcap: \ - configure-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-pdf-target-libtermcap pdf-target-libtermcap -maybe-pdf-target-libtermcap: -@if target-libtermcap -maybe-pdf-target-libtermcap: pdf-target-libtermcap - -pdf-target-libtermcap: \ - configure-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-html-target-libtermcap html-target-libtermcap -maybe-html-target-libtermcap: -@if target-libtermcap -maybe-html-target-libtermcap: html-target-libtermcap - -html-target-libtermcap: \ - configure-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-TAGS-target-libtermcap TAGS-target-libtermcap -maybe-TAGS-target-libtermcap: -@if target-libtermcap -maybe-TAGS-target-libtermcap: TAGS-target-libtermcap - -TAGS-target-libtermcap: \ - configure-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-install-info-target-libtermcap install-info-target-libtermcap -maybe-install-info-target-libtermcap: -@if target-libtermcap -maybe-install-info-target-libtermcap: install-info-target-libtermcap - -install-info-target-libtermcap: \ - configure-target-libtermcap \ - info-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-install-pdf-target-libtermcap install-pdf-target-libtermcap -maybe-install-pdf-target-libtermcap: -@if target-libtermcap -maybe-install-pdf-target-libtermcap: install-pdf-target-libtermcap - -install-pdf-target-libtermcap: \ - configure-target-libtermcap \ - pdf-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-install-html-target-libtermcap install-html-target-libtermcap -maybe-install-html-target-libtermcap: -@if target-libtermcap -maybe-install-html-target-libtermcap: install-html-target-libtermcap - -install-html-target-libtermcap: \ - configure-target-libtermcap \ - html-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-installcheck-target-libtermcap installcheck-target-libtermcap -maybe-installcheck-target-libtermcap: -@if target-libtermcap -maybe-installcheck-target-libtermcap: installcheck-target-libtermcap - -installcheck-target-libtermcap: \ - configure-target-libtermcap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libtermcap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libtermcap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libtermcap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libtermcap - -.PHONY: maybe-mostlyclean-target-libtermcap mostlyclean-target-libtermcap -maybe-mostlyclean-target-libtermcap: -@if target-libtermcap -maybe-mostlyclean-target-libtermcap: mostlyclean-target-libtermcap - -# libtermcap doesn't support mostlyclean. -mostlyclean-target-libtermcap: - -@endif target-libtermcap - -.PHONY: maybe-clean-target-libtermcap clean-target-libtermcap -maybe-clean-target-libtermcap: -@if target-libtermcap -maybe-clean-target-libtermcap: clean-target-libtermcap - -# libtermcap doesn't support clean. -clean-target-libtermcap: - -@endif target-libtermcap - -.PHONY: maybe-distclean-target-libtermcap distclean-target-libtermcap -maybe-distclean-target-libtermcap: -@if target-libtermcap -maybe-distclean-target-libtermcap: distclean-target-libtermcap - -# libtermcap doesn't support distclean. -distclean-target-libtermcap: - -@endif target-libtermcap - -.PHONY: maybe-maintainer-clean-target-libtermcap maintainer-clean-target-libtermcap -maybe-maintainer-clean-target-libtermcap: -@if target-libtermcap -maybe-maintainer-clean-target-libtermcap: maintainer-clean-target-libtermcap - -# libtermcap doesn't support maintainer-clean. -maintainer-clean-target-libtermcap: - -@endif target-libtermcap - - - - - -.PHONY: configure-target-winsup maybe-configure-target-winsup -maybe-configure-target-winsup: -@if gcc-bootstrap -configure-target-winsup: stage_current -@endif gcc-bootstrap -@if target-winsup -maybe-configure-target-winsup: configure-target-winsup -configure-target-winsup: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for winsup..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/winsup ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/winsup/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/winsup/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/winsup/multilib.tmp $(TARGET_SUBDIR)/winsup/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/winsup/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/winsup/Makefile; \ - mv $(TARGET_SUBDIR)/winsup/multilib.tmp $(TARGET_SUBDIR)/winsup/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/winsup/multilib.tmp $(TARGET_SUBDIR)/winsup/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/winsup/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/winsup ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/winsup; \ - cd "$(TARGET_SUBDIR)/winsup" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/winsup/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/winsup"; \ - libsrcdir="$$s/winsup"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-winsup - - - - - -.PHONY: all-target-winsup maybe-all-target-winsup -maybe-all-target-winsup: -@if gcc-bootstrap -all-target-winsup: stage_current -@endif gcc-bootstrap -@if target-winsup -TARGET-target-winsup=all -maybe-all-target-winsup: all-target-winsup -all-target-winsup: configure-target-winsup - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-winsup)) -@endif target-winsup - - - - - -.PHONY: check-target-winsup maybe-check-target-winsup -maybe-check-target-winsup: -@if target-winsup -maybe-check-target-winsup: check-target-winsup - -check-target-winsup: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-winsup - -.PHONY: install-target-winsup maybe-install-target-winsup -maybe-install-target-winsup: -@if target-winsup -maybe-install-target-winsup: install-target-winsup - -install-target-winsup: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-winsup - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-winsup info-target-winsup -maybe-info-target-winsup: -@if target-winsup -maybe-info-target-winsup: info-target-winsup - -info-target-winsup: \ - configure-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-dvi-target-winsup dvi-target-winsup -maybe-dvi-target-winsup: -@if target-winsup -maybe-dvi-target-winsup: dvi-target-winsup - -dvi-target-winsup: \ - configure-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-pdf-target-winsup pdf-target-winsup -maybe-pdf-target-winsup: -@if target-winsup -maybe-pdf-target-winsup: pdf-target-winsup - -pdf-target-winsup: \ - configure-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-html-target-winsup html-target-winsup -maybe-html-target-winsup: -@if target-winsup -maybe-html-target-winsup: html-target-winsup - -html-target-winsup: \ - configure-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-TAGS-target-winsup TAGS-target-winsup -maybe-TAGS-target-winsup: -@if target-winsup -maybe-TAGS-target-winsup: TAGS-target-winsup - -TAGS-target-winsup: \ - configure-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-install-info-target-winsup install-info-target-winsup -maybe-install-info-target-winsup: -@if target-winsup -maybe-install-info-target-winsup: install-info-target-winsup - -install-info-target-winsup: \ - configure-target-winsup \ - info-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-install-pdf-target-winsup install-pdf-target-winsup -maybe-install-pdf-target-winsup: -@if target-winsup -maybe-install-pdf-target-winsup: install-pdf-target-winsup - -install-pdf-target-winsup: \ - configure-target-winsup \ - pdf-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-install-html-target-winsup install-html-target-winsup -maybe-install-html-target-winsup: -@if target-winsup -maybe-install-html-target-winsup: install-html-target-winsup - -install-html-target-winsup: \ - configure-target-winsup \ - html-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-installcheck-target-winsup installcheck-target-winsup -maybe-installcheck-target-winsup: -@if target-winsup -maybe-installcheck-target-winsup: installcheck-target-winsup - -installcheck-target-winsup: \ - configure-target-winsup - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-mostlyclean-target-winsup mostlyclean-target-winsup -maybe-mostlyclean-target-winsup: -@if target-winsup -maybe-mostlyclean-target-winsup: mostlyclean-target-winsup - -mostlyclean-target-winsup: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-clean-target-winsup clean-target-winsup -maybe-clean-target-winsup: -@if target-winsup -maybe-clean-target-winsup: clean-target-winsup - -clean-target-winsup: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-distclean-target-winsup distclean-target-winsup -maybe-distclean-target-winsup: -@if target-winsup -maybe-distclean-target-winsup: distclean-target-winsup - -distclean-target-winsup: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-winsup - -.PHONY: maybe-maintainer-clean-target-winsup maintainer-clean-target-winsup -maybe-maintainer-clean-target-winsup: -@if target-winsup -maybe-maintainer-clean-target-winsup: maintainer-clean-target-winsup - -maintainer-clean-target-winsup: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/winsup/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/winsup" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/winsup && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-winsup - - - - - -.PHONY: configure-target-libgloss maybe-configure-target-libgloss -maybe-configure-target-libgloss: -@if gcc-bootstrap -configure-target-libgloss: stage_current -@endif gcc-bootstrap -@if target-libgloss -maybe-configure-target-libgloss: configure-target-libgloss -configure-target-libgloss: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libgloss..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgloss ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgloss/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgloss/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgloss/multilib.tmp $(TARGET_SUBDIR)/libgloss/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgloss/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgloss/Makefile; \ - mv $(TARGET_SUBDIR)/libgloss/multilib.tmp $(TARGET_SUBDIR)/libgloss/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgloss/multilib.tmp $(TARGET_SUBDIR)/libgloss/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgloss/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgloss ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libgloss; \ - cd "$(TARGET_SUBDIR)/libgloss" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgloss/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgloss"; \ - libsrcdir="$$s/libgloss"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libgloss - - - - - -.PHONY: all-target-libgloss maybe-all-target-libgloss -maybe-all-target-libgloss: -@if gcc-bootstrap -all-target-libgloss: stage_current -@endif gcc-bootstrap -@if target-libgloss -TARGET-target-libgloss=all -maybe-all-target-libgloss: all-target-libgloss -all-target-libgloss: configure-target-libgloss - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libgloss)) -@endif target-libgloss - - - - - -.PHONY: check-target-libgloss maybe-check-target-libgloss -maybe-check-target-libgloss: -@if target-libgloss -maybe-check-target-libgloss: check-target-libgloss - -# Dummy target for uncheckable module. -check-target-libgloss: - -@endif target-libgloss - -.PHONY: install-target-libgloss maybe-install-target-libgloss -maybe-install-target-libgloss: -@if target-libgloss -maybe-install-target-libgloss: install-target-libgloss - -install-target-libgloss: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libgloss - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libgloss info-target-libgloss -maybe-info-target-libgloss: -@if target-libgloss -maybe-info-target-libgloss: info-target-libgloss - -info-target-libgloss: \ - configure-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-dvi-target-libgloss dvi-target-libgloss -maybe-dvi-target-libgloss: -@if target-libgloss -maybe-dvi-target-libgloss: dvi-target-libgloss - -dvi-target-libgloss: \ - configure-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-pdf-target-libgloss pdf-target-libgloss -maybe-pdf-target-libgloss: -@if target-libgloss -maybe-pdf-target-libgloss: pdf-target-libgloss - -pdf-target-libgloss: \ - configure-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-html-target-libgloss html-target-libgloss -maybe-html-target-libgloss: -@if target-libgloss -maybe-html-target-libgloss: html-target-libgloss - -html-target-libgloss: \ - configure-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-TAGS-target-libgloss TAGS-target-libgloss -maybe-TAGS-target-libgloss: -@if target-libgloss -maybe-TAGS-target-libgloss: TAGS-target-libgloss - -TAGS-target-libgloss: \ - configure-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-install-info-target-libgloss install-info-target-libgloss -maybe-install-info-target-libgloss: -@if target-libgloss -maybe-install-info-target-libgloss: install-info-target-libgloss - -install-info-target-libgloss: \ - configure-target-libgloss \ - info-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-install-pdf-target-libgloss install-pdf-target-libgloss -maybe-install-pdf-target-libgloss: -@if target-libgloss -maybe-install-pdf-target-libgloss: install-pdf-target-libgloss - -install-pdf-target-libgloss: \ - configure-target-libgloss \ - pdf-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-install-html-target-libgloss install-html-target-libgloss -maybe-install-html-target-libgloss: -@if target-libgloss -maybe-install-html-target-libgloss: install-html-target-libgloss - -install-html-target-libgloss: \ - configure-target-libgloss \ - html-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-installcheck-target-libgloss installcheck-target-libgloss -maybe-installcheck-target-libgloss: -@if target-libgloss -maybe-installcheck-target-libgloss: installcheck-target-libgloss - -installcheck-target-libgloss: \ - configure-target-libgloss - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-mostlyclean-target-libgloss mostlyclean-target-libgloss -maybe-mostlyclean-target-libgloss: -@if target-libgloss -maybe-mostlyclean-target-libgloss: mostlyclean-target-libgloss - -mostlyclean-target-libgloss: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-clean-target-libgloss clean-target-libgloss -maybe-clean-target-libgloss: -@if target-libgloss -maybe-clean-target-libgloss: clean-target-libgloss - -clean-target-libgloss: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-distclean-target-libgloss distclean-target-libgloss -maybe-distclean-target-libgloss: -@if target-libgloss -maybe-distclean-target-libgloss: distclean-target-libgloss - -distclean-target-libgloss: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libgloss - -.PHONY: maybe-maintainer-clean-target-libgloss maintainer-clean-target-libgloss -maybe-maintainer-clean-target-libgloss: -@if target-libgloss -maybe-maintainer-clean-target-libgloss: maintainer-clean-target-libgloss - -maintainer-clean-target-libgloss: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgloss/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgloss" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libgloss - - - - - -.PHONY: configure-target-libiberty maybe-configure-target-libiberty -maybe-configure-target-libiberty: -@if gcc-bootstrap -configure-target-libiberty: stage_current -@endif gcc-bootstrap -@if target-libiberty -maybe-configure-target-libiberty: configure-target-libiberty -configure-target-libiberty: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libiberty..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \ - mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libiberty; \ - cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libiberty - - - - - -.PHONY: all-target-libiberty maybe-all-target-libiberty -maybe-all-target-libiberty: -@if gcc-bootstrap -all-target-libiberty: stage_current -@endif gcc-bootstrap -@if target-libiberty -TARGET-target-libiberty=all -maybe-all-target-libiberty: all-target-libiberty -all-target-libiberty: configure-target-libiberty - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libiberty)) -@endif target-libiberty - - - - - -.PHONY: check-target-libiberty maybe-check-target-libiberty -maybe-check-target-libiberty: -@if target-libiberty -maybe-check-target-libiberty: check-target-libiberty - -check-target-libiberty: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libiberty - -.PHONY: install-target-libiberty maybe-install-target-libiberty -maybe-install-target-libiberty: -@if target-libiberty -maybe-install-target-libiberty: install-target-libiberty - -install-target-libiberty: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libiberty - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libiberty info-target-libiberty -maybe-info-target-libiberty: -@if target-libiberty -maybe-info-target-libiberty: info-target-libiberty - -info-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty -maybe-dvi-target-libiberty: -@if target-libiberty -maybe-dvi-target-libiberty: dvi-target-libiberty - -dvi-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty -maybe-pdf-target-libiberty: -@if target-libiberty -maybe-pdf-target-libiberty: pdf-target-libiberty - -pdf-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-html-target-libiberty html-target-libiberty -maybe-html-target-libiberty: -@if target-libiberty -maybe-html-target-libiberty: html-target-libiberty - -html-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty -maybe-TAGS-target-libiberty: -@if target-libiberty -maybe-TAGS-target-libiberty: TAGS-target-libiberty - -TAGS-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty -maybe-install-info-target-libiberty: -@if target-libiberty -maybe-install-info-target-libiberty: install-info-target-libiberty - -install-info-target-libiberty: \ - configure-target-libiberty \ - info-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty -maybe-install-pdf-target-libiberty: -@if target-libiberty -maybe-install-pdf-target-libiberty: install-pdf-target-libiberty - -install-pdf-target-libiberty: \ - configure-target-libiberty \ - pdf-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty -maybe-install-html-target-libiberty: -@if target-libiberty -maybe-install-html-target-libiberty: install-html-target-libiberty - -install-html-target-libiberty: \ - configure-target-libiberty \ - html-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty -maybe-installcheck-target-libiberty: -@if target-libiberty -maybe-installcheck-target-libiberty: installcheck-target-libiberty - -installcheck-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty -maybe-mostlyclean-target-libiberty: -@if target-libiberty -maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty - -mostlyclean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-clean-target-libiberty clean-target-libiberty -maybe-clean-target-libiberty: -@if target-libiberty -maybe-clean-target-libiberty: clean-target-libiberty - -clean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty -maybe-distclean-target-libiberty: -@if target-libiberty -maybe-distclean-target-libiberty: distclean-target-libiberty - -distclean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty -maybe-maintainer-clean-target-libiberty: -@if target-libiberty -maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty - -maintainer-clean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libiberty - - - - - -.PHONY: configure-target-gperf maybe-configure-target-gperf -maybe-configure-target-gperf: -@if gcc-bootstrap -configure-target-gperf: stage_current -@endif gcc-bootstrap -@if target-gperf -maybe-configure-target-gperf: configure-target-gperf -configure-target-gperf: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for gperf..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/gperf ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/gperf/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/gperf/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/gperf/multilib.tmp $(TARGET_SUBDIR)/gperf/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/gperf/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/gperf/Makefile; \ - mv $(TARGET_SUBDIR)/gperf/multilib.tmp $(TARGET_SUBDIR)/gperf/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/gperf/multilib.tmp $(TARGET_SUBDIR)/gperf/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/gperf/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/gperf ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/gperf; \ - cd "$(TARGET_SUBDIR)/gperf" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/gperf/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/gperf"; \ - libsrcdir="$$s/gperf"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-gperf - - - - - -.PHONY: all-target-gperf maybe-all-target-gperf -maybe-all-target-gperf: -@if gcc-bootstrap -all-target-gperf: stage_current -@endif gcc-bootstrap -@if target-gperf -TARGET-target-gperf=all -maybe-all-target-gperf: all-target-gperf -all-target-gperf: configure-target-gperf - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-gperf)) -@endif target-gperf - - - - - -.PHONY: check-target-gperf maybe-check-target-gperf -maybe-check-target-gperf: -@if target-gperf -maybe-check-target-gperf: check-target-gperf - -check-target-gperf: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-gperf - -.PHONY: install-target-gperf maybe-install-target-gperf -maybe-install-target-gperf: -@if target-gperf -maybe-install-target-gperf: install-target-gperf - -install-target-gperf: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-gperf - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-gperf info-target-gperf -maybe-info-target-gperf: -@if target-gperf -maybe-info-target-gperf: info-target-gperf - -info-target-gperf: \ - configure-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-dvi-target-gperf dvi-target-gperf -maybe-dvi-target-gperf: -@if target-gperf -maybe-dvi-target-gperf: dvi-target-gperf - -dvi-target-gperf: \ - configure-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-pdf-target-gperf pdf-target-gperf -maybe-pdf-target-gperf: -@if target-gperf -maybe-pdf-target-gperf: pdf-target-gperf - -pdf-target-gperf: \ - configure-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-html-target-gperf html-target-gperf -maybe-html-target-gperf: -@if target-gperf -maybe-html-target-gperf: html-target-gperf - -html-target-gperf: \ - configure-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-TAGS-target-gperf TAGS-target-gperf -maybe-TAGS-target-gperf: -@if target-gperf -maybe-TAGS-target-gperf: TAGS-target-gperf - -TAGS-target-gperf: \ - configure-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-install-info-target-gperf install-info-target-gperf -maybe-install-info-target-gperf: -@if target-gperf -maybe-install-info-target-gperf: install-info-target-gperf - -install-info-target-gperf: \ - configure-target-gperf \ - info-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-install-pdf-target-gperf install-pdf-target-gperf -maybe-install-pdf-target-gperf: -@if target-gperf -maybe-install-pdf-target-gperf: install-pdf-target-gperf - -install-pdf-target-gperf: \ - configure-target-gperf \ - pdf-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-install-html-target-gperf install-html-target-gperf -maybe-install-html-target-gperf: -@if target-gperf -maybe-install-html-target-gperf: install-html-target-gperf - -install-html-target-gperf: \ - configure-target-gperf \ - html-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-installcheck-target-gperf installcheck-target-gperf -maybe-installcheck-target-gperf: -@if target-gperf -maybe-installcheck-target-gperf: installcheck-target-gperf - -installcheck-target-gperf: \ - configure-target-gperf - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-mostlyclean-target-gperf mostlyclean-target-gperf -maybe-mostlyclean-target-gperf: -@if target-gperf -maybe-mostlyclean-target-gperf: mostlyclean-target-gperf - -mostlyclean-target-gperf: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-clean-target-gperf clean-target-gperf -maybe-clean-target-gperf: -@if target-gperf -maybe-clean-target-gperf: clean-target-gperf - -clean-target-gperf: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-distclean-target-gperf distclean-target-gperf -maybe-distclean-target-gperf: -@if target-gperf -maybe-distclean-target-gperf: distclean-target-gperf - -distclean-target-gperf: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-gperf - -.PHONY: maybe-maintainer-clean-target-gperf maintainer-clean-target-gperf -maybe-maintainer-clean-target-gperf: -@if target-gperf -maybe-maintainer-clean-target-gperf: maintainer-clean-target-gperf - -maintainer-clean-target-gperf: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/gperf/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/gperf" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/gperf && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-gperf - - - - - -.PHONY: configure-target-examples maybe-configure-target-examples -maybe-configure-target-examples: -@if gcc-bootstrap -configure-target-examples: stage_current -@endif gcc-bootstrap -@if target-examples -maybe-configure-target-examples: configure-target-examples -configure-target-examples: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for examples..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/examples ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/examples/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/examples/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/examples/multilib.tmp $(TARGET_SUBDIR)/examples/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/examples/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/examples/Makefile; \ - mv $(TARGET_SUBDIR)/examples/multilib.tmp $(TARGET_SUBDIR)/examples/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/examples/multilib.tmp $(TARGET_SUBDIR)/examples/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/examples/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/examples ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/examples; \ - cd "$(TARGET_SUBDIR)/examples" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/examples/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/examples"; \ - libsrcdir="$$s/examples"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-examples - - - - - -.PHONY: all-target-examples maybe-all-target-examples -maybe-all-target-examples: -@if gcc-bootstrap -all-target-examples: stage_current -@endif gcc-bootstrap -@if target-examples -TARGET-target-examples=all -maybe-all-target-examples: all-target-examples -all-target-examples: configure-target-examples - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-examples)) -@endif target-examples - - - - - -.PHONY: check-target-examples maybe-check-target-examples -maybe-check-target-examples: -@if target-examples -maybe-check-target-examples: check-target-examples - -# Dummy target for uncheckable module. -check-target-examples: - -@endif target-examples - -.PHONY: install-target-examples maybe-install-target-examples -maybe-install-target-examples: -@if target-examples -maybe-install-target-examples: install-target-examples - -# Dummy target for uninstallable. -install-target-examples: - -@endif target-examples - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-examples info-target-examples -maybe-info-target-examples: -@if target-examples -maybe-info-target-examples: info-target-examples - -info-target-examples: \ - configure-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-dvi-target-examples dvi-target-examples -maybe-dvi-target-examples: -@if target-examples -maybe-dvi-target-examples: dvi-target-examples - -dvi-target-examples: \ - configure-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-pdf-target-examples pdf-target-examples -maybe-pdf-target-examples: -@if target-examples -maybe-pdf-target-examples: pdf-target-examples - -pdf-target-examples: \ - configure-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-html-target-examples html-target-examples -maybe-html-target-examples: -@if target-examples -maybe-html-target-examples: html-target-examples - -html-target-examples: \ - configure-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-TAGS-target-examples TAGS-target-examples -maybe-TAGS-target-examples: -@if target-examples -maybe-TAGS-target-examples: TAGS-target-examples - -TAGS-target-examples: \ - configure-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-install-info-target-examples install-info-target-examples -maybe-install-info-target-examples: -@if target-examples -maybe-install-info-target-examples: install-info-target-examples - -install-info-target-examples: \ - configure-target-examples \ - info-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-install-pdf-target-examples install-pdf-target-examples -maybe-install-pdf-target-examples: -@if target-examples -maybe-install-pdf-target-examples: install-pdf-target-examples - -install-pdf-target-examples: \ - configure-target-examples \ - pdf-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-install-html-target-examples install-html-target-examples -maybe-install-html-target-examples: -@if target-examples -maybe-install-html-target-examples: install-html-target-examples - -install-html-target-examples: \ - configure-target-examples \ - html-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-installcheck-target-examples installcheck-target-examples -maybe-installcheck-target-examples: -@if target-examples -maybe-installcheck-target-examples: installcheck-target-examples - -installcheck-target-examples: \ - configure-target-examples - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-mostlyclean-target-examples mostlyclean-target-examples -maybe-mostlyclean-target-examples: -@if target-examples -maybe-mostlyclean-target-examples: mostlyclean-target-examples - -mostlyclean-target-examples: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-clean-target-examples clean-target-examples -maybe-clean-target-examples: -@if target-examples -maybe-clean-target-examples: clean-target-examples - -clean-target-examples: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-distclean-target-examples distclean-target-examples -maybe-distclean-target-examples: -@if target-examples -maybe-distclean-target-examples: distclean-target-examples - -distclean-target-examples: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-examples - -.PHONY: maybe-maintainer-clean-target-examples maintainer-clean-target-examples -maybe-maintainer-clean-target-examples: -@if target-examples -maybe-maintainer-clean-target-examples: maintainer-clean-target-examples - -maintainer-clean-target-examples: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/examples/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/examples" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/examples && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-examples - - - - - -.PHONY: configure-target-libffi maybe-configure-target-libffi -maybe-configure-target-libffi: -@if gcc-bootstrap -configure-target-libffi: stage_current -@endif gcc-bootstrap -@if target-libffi -maybe-configure-target-libffi: configure-target-libffi -configure-target-libffi: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libffi..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libffi ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libffi/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libffi/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libffi/multilib.tmp $(TARGET_SUBDIR)/libffi/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libffi/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libffi/Makefile; \ - mv $(TARGET_SUBDIR)/libffi/multilib.tmp $(TARGET_SUBDIR)/libffi/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libffi/multilib.tmp $(TARGET_SUBDIR)/libffi/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libffi/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libffi ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libffi; \ - cd "$(TARGET_SUBDIR)/libffi" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libffi/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libffi"; \ - libsrcdir="$$s/libffi"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libffi - - - - - -.PHONY: all-target-libffi maybe-all-target-libffi -maybe-all-target-libffi: -@if gcc-bootstrap -all-target-libffi: stage_current -@endif gcc-bootstrap -@if target-libffi -TARGET-target-libffi=all -maybe-all-target-libffi: all-target-libffi -all-target-libffi: configure-target-libffi - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libffi)) -@endif target-libffi - - - - - -.PHONY: check-target-libffi maybe-check-target-libffi -maybe-check-target-libffi: -@if target-libffi -maybe-check-target-libffi: check-target-libffi - -check-target-libffi: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libffi - -.PHONY: install-target-libffi maybe-install-target-libffi -maybe-install-target-libffi: -@if target-libffi -maybe-install-target-libffi: install-target-libffi - -install-target-libffi: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libffi - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libffi info-target-libffi -maybe-info-target-libffi: -@if target-libffi -maybe-info-target-libffi: info-target-libffi - -info-target-libffi: \ - configure-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-dvi-target-libffi dvi-target-libffi -maybe-dvi-target-libffi: -@if target-libffi -maybe-dvi-target-libffi: dvi-target-libffi - -dvi-target-libffi: \ - configure-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-pdf-target-libffi pdf-target-libffi -maybe-pdf-target-libffi: -@if target-libffi -maybe-pdf-target-libffi: pdf-target-libffi - -pdf-target-libffi: \ - configure-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-html-target-libffi html-target-libffi -maybe-html-target-libffi: -@if target-libffi -maybe-html-target-libffi: html-target-libffi - -html-target-libffi: \ - configure-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-TAGS-target-libffi TAGS-target-libffi -maybe-TAGS-target-libffi: -@if target-libffi -maybe-TAGS-target-libffi: TAGS-target-libffi - -TAGS-target-libffi: \ - configure-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-install-info-target-libffi install-info-target-libffi -maybe-install-info-target-libffi: -@if target-libffi -maybe-install-info-target-libffi: install-info-target-libffi - -install-info-target-libffi: \ - configure-target-libffi \ - info-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-install-pdf-target-libffi install-pdf-target-libffi -maybe-install-pdf-target-libffi: -@if target-libffi -maybe-install-pdf-target-libffi: install-pdf-target-libffi - -install-pdf-target-libffi: \ - configure-target-libffi \ - pdf-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-install-html-target-libffi install-html-target-libffi -maybe-install-html-target-libffi: -@if target-libffi -maybe-install-html-target-libffi: install-html-target-libffi - -install-html-target-libffi: \ - configure-target-libffi \ - html-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-installcheck-target-libffi installcheck-target-libffi -maybe-installcheck-target-libffi: -@if target-libffi -maybe-installcheck-target-libffi: installcheck-target-libffi - -installcheck-target-libffi: \ - configure-target-libffi - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-mostlyclean-target-libffi mostlyclean-target-libffi -maybe-mostlyclean-target-libffi: -@if target-libffi -maybe-mostlyclean-target-libffi: mostlyclean-target-libffi - -mostlyclean-target-libffi: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-clean-target-libffi clean-target-libffi -maybe-clean-target-libffi: -@if target-libffi -maybe-clean-target-libffi: clean-target-libffi - -clean-target-libffi: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-distclean-target-libffi distclean-target-libffi -maybe-distclean-target-libffi: -@if target-libffi -maybe-distclean-target-libffi: distclean-target-libffi - -distclean-target-libffi: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libffi - -.PHONY: maybe-maintainer-clean-target-libffi maintainer-clean-target-libffi -maybe-maintainer-clean-target-libffi: -@if target-libffi -maybe-maintainer-clean-target-libffi: maintainer-clean-target-libffi - -maintainer-clean-target-libffi: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libffi/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libffi" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libffi && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libffi - - - - - -.PHONY: configure-target-libjava maybe-configure-target-libjava -maybe-configure-target-libjava: -@if gcc-bootstrap -configure-target-libjava: stage_current -@endif gcc-bootstrap -@if target-libjava -maybe-configure-target-libjava: configure-target-libjava -configure-target-libjava: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libjava..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libjava ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libjava/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libjava/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libjava/multilib.tmp $(TARGET_SUBDIR)/libjava/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libjava/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libjava/Makefile; \ - mv $(TARGET_SUBDIR)/libjava/multilib.tmp $(TARGET_SUBDIR)/libjava/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libjava/multilib.tmp $(TARGET_SUBDIR)/libjava/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libjava/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libjava ; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libjava; \ - cd "$(TARGET_SUBDIR)/libjava" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libjava/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libjava"; \ - libsrcdir="$$s/libjava"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libjava - - - - - -.PHONY: all-target-libjava maybe-all-target-libjava -maybe-all-target-libjava: -@if gcc-bootstrap -all-target-libjava: stage_current -@endif gcc-bootstrap -@if target-libjava -TARGET-target-libjava=all -maybe-all-target-libjava: all-target-libjava -all-target-libjava: configure-target-libjava - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - $(TARGET-target-libjava)) -@endif target-libjava - - - - - -.PHONY: check-target-libjava maybe-check-target-libjava -maybe-check-target-libjava: -@if target-libjava -maybe-check-target-libjava: check-target-libjava - -check-target-libjava: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' check) - -@endif target-libjava - -.PHONY: install-target-libjava maybe-install-target-libjava -maybe-install-target-libjava: -@if target-libjava -maybe-install-target-libjava: install-target-libjava - -install-target-libjava: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libjava - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libjava info-target-libjava -maybe-info-target-libjava: -@if target-libjava -maybe-info-target-libjava: info-target-libjava - -info-target-libjava: \ - configure-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-dvi-target-libjava dvi-target-libjava -maybe-dvi-target-libjava: -@if target-libjava -maybe-dvi-target-libjava: dvi-target-libjava - -dvi-target-libjava: \ - configure-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-pdf-target-libjava pdf-target-libjava -maybe-pdf-target-libjava: -@if target-libjava -maybe-pdf-target-libjava: pdf-target-libjava - -pdf-target-libjava: \ - configure-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-html-target-libjava html-target-libjava -maybe-html-target-libjava: -@if target-libjava -maybe-html-target-libjava: html-target-libjava - -html-target-libjava: \ - configure-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-TAGS-target-libjava TAGS-target-libjava -maybe-TAGS-target-libjava: -@if target-libjava -maybe-TAGS-target-libjava: TAGS-target-libjava - -TAGS-target-libjava: \ - configure-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-install-info-target-libjava install-info-target-libjava -maybe-install-info-target-libjava: -@if target-libjava -maybe-install-info-target-libjava: install-info-target-libjava - -install-info-target-libjava: \ - configure-target-libjava \ - info-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-install-pdf-target-libjava install-pdf-target-libjava -maybe-install-pdf-target-libjava: -@if target-libjava -maybe-install-pdf-target-libjava: install-pdf-target-libjava - -install-pdf-target-libjava: \ - configure-target-libjava \ - pdf-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-install-html-target-libjava install-html-target-libjava -maybe-install-html-target-libjava: -@if target-libjava -maybe-install-html-target-libjava: install-html-target-libjava - -install-html-target-libjava: \ - configure-target-libjava \ - html-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-installcheck-target-libjava installcheck-target-libjava -maybe-installcheck-target-libjava: -@if target-libjava -maybe-installcheck-target-libjava: installcheck-target-libjava - -installcheck-target-libjava: \ - configure-target-libjava - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-mostlyclean-target-libjava mostlyclean-target-libjava -maybe-mostlyclean-target-libjava: -@if target-libjava -maybe-mostlyclean-target-libjava: mostlyclean-target-libjava - -mostlyclean-target-libjava: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-clean-target-libjava clean-target-libjava -maybe-clean-target-libjava: -@if target-libjava -maybe-clean-target-libjava: clean-target-libjava - -clean-target-libjava: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-distclean-target-libjava distclean-target-libjava -maybe-distclean-target-libjava: -@if target-libjava -maybe-distclean-target-libjava: distclean-target-libjava - -distclean-target-libjava: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libjava - -.PHONY: maybe-maintainer-clean-target-libjava maintainer-clean-target-libjava -maybe-maintainer-clean-target-libjava: -@if target-libjava -maybe-maintainer-clean-target-libjava: maintainer-clean-target-libjava - -maintainer-clean-target-libjava: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libjava/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libjava" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libjava && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libjava - - - - - -.PHONY: configure-target-zlib maybe-configure-target-zlib -maybe-configure-target-zlib: -@if gcc-bootstrap -configure-target-zlib: stage_current -@endif gcc-bootstrap -@if target-zlib -maybe-configure-target-zlib: configure-target-zlib -configure-target-zlib: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for zlib..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/zlib ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/zlib/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/zlib/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/zlib/multilib.tmp $(TARGET_SUBDIR)/zlib/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/zlib/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/zlib/Makefile; \ - mv $(TARGET_SUBDIR)/zlib/multilib.tmp $(TARGET_SUBDIR)/zlib/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/zlib/multilib.tmp $(TARGET_SUBDIR)/zlib/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/zlib/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/zlib ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/zlib; \ - cd "$(TARGET_SUBDIR)/zlib" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/zlib/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-zlib - - - - - -.PHONY: all-target-zlib maybe-all-target-zlib -maybe-all-target-zlib: -@if gcc-bootstrap -all-target-zlib: stage_current -@endif gcc-bootstrap -@if target-zlib -TARGET-target-zlib=all -maybe-all-target-zlib: all-target-zlib -all-target-zlib: configure-target-zlib - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-zlib)) -@endif target-zlib - - - - - -.PHONY: check-target-zlib maybe-check-target-zlib -maybe-check-target-zlib: -@if target-zlib -maybe-check-target-zlib: check-target-zlib - -check-target-zlib: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-zlib - -.PHONY: install-target-zlib maybe-install-target-zlib -maybe-install-target-zlib: -@if target-zlib -maybe-install-target-zlib: install-target-zlib - -install-target-zlib: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-zlib - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-zlib info-target-zlib -maybe-info-target-zlib: -@if target-zlib -maybe-info-target-zlib: info-target-zlib - -info-target-zlib: \ - configure-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-dvi-target-zlib dvi-target-zlib -maybe-dvi-target-zlib: -@if target-zlib -maybe-dvi-target-zlib: dvi-target-zlib - -dvi-target-zlib: \ - configure-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-pdf-target-zlib pdf-target-zlib -maybe-pdf-target-zlib: -@if target-zlib -maybe-pdf-target-zlib: pdf-target-zlib - -pdf-target-zlib: \ - configure-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-html-target-zlib html-target-zlib -maybe-html-target-zlib: -@if target-zlib -maybe-html-target-zlib: html-target-zlib - -html-target-zlib: \ - configure-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-TAGS-target-zlib TAGS-target-zlib -maybe-TAGS-target-zlib: -@if target-zlib -maybe-TAGS-target-zlib: TAGS-target-zlib - -TAGS-target-zlib: \ - configure-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-install-info-target-zlib install-info-target-zlib -maybe-install-info-target-zlib: -@if target-zlib -maybe-install-info-target-zlib: install-info-target-zlib - -install-info-target-zlib: \ - configure-target-zlib \ - info-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-install-pdf-target-zlib install-pdf-target-zlib -maybe-install-pdf-target-zlib: -@if target-zlib -maybe-install-pdf-target-zlib: install-pdf-target-zlib - -install-pdf-target-zlib: \ - configure-target-zlib \ - pdf-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-install-html-target-zlib install-html-target-zlib -maybe-install-html-target-zlib: -@if target-zlib -maybe-install-html-target-zlib: install-html-target-zlib - -install-html-target-zlib: \ - configure-target-zlib \ - html-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-installcheck-target-zlib installcheck-target-zlib -maybe-installcheck-target-zlib: -@if target-zlib -maybe-installcheck-target-zlib: installcheck-target-zlib - -installcheck-target-zlib: \ - configure-target-zlib - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-mostlyclean-target-zlib mostlyclean-target-zlib -maybe-mostlyclean-target-zlib: -@if target-zlib -maybe-mostlyclean-target-zlib: mostlyclean-target-zlib - -mostlyclean-target-zlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-clean-target-zlib clean-target-zlib -maybe-clean-target-zlib: -@if target-zlib -maybe-clean-target-zlib: clean-target-zlib - -clean-target-zlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-distclean-target-zlib distclean-target-zlib -maybe-distclean-target-zlib: -@if target-zlib -maybe-distclean-target-zlib: distclean-target-zlib - -distclean-target-zlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-zlib - -.PHONY: maybe-maintainer-clean-target-zlib maintainer-clean-target-zlib -maybe-maintainer-clean-target-zlib: -@if target-zlib -maybe-maintainer-clean-target-zlib: maintainer-clean-target-zlib - -maintainer-clean-target-zlib: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/zlib/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/zlib" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/zlib && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-zlib - - - - - -.PHONY: configure-target-boehm-gc maybe-configure-target-boehm-gc -maybe-configure-target-boehm-gc: -@if gcc-bootstrap -configure-target-boehm-gc: stage_current -@endif gcc-bootstrap -@if target-boehm-gc -maybe-configure-target-boehm-gc: configure-target-boehm-gc -configure-target-boehm-gc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for boehm-gc..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/boehm-gc ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/boehm-gc/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/boehm-gc/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/boehm-gc/multilib.tmp $(TARGET_SUBDIR)/boehm-gc/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/boehm-gc/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/boehm-gc/Makefile; \ - mv $(TARGET_SUBDIR)/boehm-gc/multilib.tmp $(TARGET_SUBDIR)/boehm-gc/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/boehm-gc/multilib.tmp $(TARGET_SUBDIR)/boehm-gc/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/boehm-gc/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/boehm-gc ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/boehm-gc; \ - cd "$(TARGET_SUBDIR)/boehm-gc" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/boehm-gc/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/boehm-gc"; \ - libsrcdir="$$s/boehm-gc"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-boehm-gc - - - - - -.PHONY: all-target-boehm-gc maybe-all-target-boehm-gc -maybe-all-target-boehm-gc: -@if gcc-bootstrap -all-target-boehm-gc: stage_current -@endif gcc-bootstrap -@if target-boehm-gc -TARGET-target-boehm-gc=all -maybe-all-target-boehm-gc: all-target-boehm-gc -all-target-boehm-gc: configure-target-boehm-gc - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-boehm-gc)) -@endif target-boehm-gc - - - - - -.PHONY: check-target-boehm-gc maybe-check-target-boehm-gc -maybe-check-target-boehm-gc: -@if target-boehm-gc -maybe-check-target-boehm-gc: check-target-boehm-gc - -check-target-boehm-gc: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-boehm-gc - -.PHONY: install-target-boehm-gc maybe-install-target-boehm-gc -maybe-install-target-boehm-gc: -@if target-boehm-gc -maybe-install-target-boehm-gc: install-target-boehm-gc - -install-target-boehm-gc: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-boehm-gc - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-boehm-gc info-target-boehm-gc -maybe-info-target-boehm-gc: -@if target-boehm-gc -maybe-info-target-boehm-gc: info-target-boehm-gc - -info-target-boehm-gc: \ - configure-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-dvi-target-boehm-gc dvi-target-boehm-gc -maybe-dvi-target-boehm-gc: -@if target-boehm-gc -maybe-dvi-target-boehm-gc: dvi-target-boehm-gc - -dvi-target-boehm-gc: \ - configure-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-pdf-target-boehm-gc pdf-target-boehm-gc -maybe-pdf-target-boehm-gc: -@if target-boehm-gc -maybe-pdf-target-boehm-gc: pdf-target-boehm-gc - -pdf-target-boehm-gc: \ - configure-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-html-target-boehm-gc html-target-boehm-gc -maybe-html-target-boehm-gc: -@if target-boehm-gc -maybe-html-target-boehm-gc: html-target-boehm-gc - -html-target-boehm-gc: \ - configure-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-TAGS-target-boehm-gc TAGS-target-boehm-gc -maybe-TAGS-target-boehm-gc: -@if target-boehm-gc -maybe-TAGS-target-boehm-gc: TAGS-target-boehm-gc - -TAGS-target-boehm-gc: \ - configure-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-install-info-target-boehm-gc install-info-target-boehm-gc -maybe-install-info-target-boehm-gc: -@if target-boehm-gc -maybe-install-info-target-boehm-gc: install-info-target-boehm-gc - -install-info-target-boehm-gc: \ - configure-target-boehm-gc \ - info-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-install-pdf-target-boehm-gc install-pdf-target-boehm-gc -maybe-install-pdf-target-boehm-gc: -@if target-boehm-gc -maybe-install-pdf-target-boehm-gc: install-pdf-target-boehm-gc - -install-pdf-target-boehm-gc: \ - configure-target-boehm-gc \ - pdf-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-install-html-target-boehm-gc install-html-target-boehm-gc -maybe-install-html-target-boehm-gc: -@if target-boehm-gc -maybe-install-html-target-boehm-gc: install-html-target-boehm-gc - -install-html-target-boehm-gc: \ - configure-target-boehm-gc \ - html-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-installcheck-target-boehm-gc installcheck-target-boehm-gc -maybe-installcheck-target-boehm-gc: -@if target-boehm-gc -maybe-installcheck-target-boehm-gc: installcheck-target-boehm-gc - -installcheck-target-boehm-gc: \ - configure-target-boehm-gc - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-mostlyclean-target-boehm-gc mostlyclean-target-boehm-gc -maybe-mostlyclean-target-boehm-gc: -@if target-boehm-gc -maybe-mostlyclean-target-boehm-gc: mostlyclean-target-boehm-gc - -mostlyclean-target-boehm-gc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-clean-target-boehm-gc clean-target-boehm-gc -maybe-clean-target-boehm-gc: -@if target-boehm-gc -maybe-clean-target-boehm-gc: clean-target-boehm-gc - -clean-target-boehm-gc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-distclean-target-boehm-gc distclean-target-boehm-gc -maybe-distclean-target-boehm-gc: -@if target-boehm-gc -maybe-distclean-target-boehm-gc: distclean-target-boehm-gc - -distclean-target-boehm-gc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-boehm-gc - -.PHONY: maybe-maintainer-clean-target-boehm-gc maintainer-clean-target-boehm-gc -maybe-maintainer-clean-target-boehm-gc: -@if target-boehm-gc -maybe-maintainer-clean-target-boehm-gc: maintainer-clean-target-boehm-gc - -maintainer-clean-target-boehm-gc: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/boehm-gc/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/boehm-gc" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/boehm-gc && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-boehm-gc - - - - - -.PHONY: configure-target-qthreads maybe-configure-target-qthreads -maybe-configure-target-qthreads: -@if gcc-bootstrap -configure-target-qthreads: stage_current -@endif gcc-bootstrap -@if target-qthreads -maybe-configure-target-qthreads: configure-target-qthreads -configure-target-qthreads: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for qthreads..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/qthreads ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/qthreads/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/qthreads/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/qthreads/multilib.tmp $(TARGET_SUBDIR)/qthreads/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/qthreads/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/qthreads/Makefile; \ - mv $(TARGET_SUBDIR)/qthreads/multilib.tmp $(TARGET_SUBDIR)/qthreads/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/qthreads/multilib.tmp $(TARGET_SUBDIR)/qthreads/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/qthreads/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/qthreads ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/qthreads; \ - cd "$(TARGET_SUBDIR)/qthreads" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/qthreads/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/qthreads"; \ - libsrcdir="$$s/qthreads"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-qthreads - - - - - -.PHONY: all-target-qthreads maybe-all-target-qthreads -maybe-all-target-qthreads: -@if gcc-bootstrap -all-target-qthreads: stage_current -@endif gcc-bootstrap -@if target-qthreads -TARGET-target-qthreads=all -maybe-all-target-qthreads: all-target-qthreads -all-target-qthreads: configure-target-qthreads - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-qthreads)) -@endif target-qthreads - - - - - -.PHONY: check-target-qthreads maybe-check-target-qthreads -maybe-check-target-qthreads: -@if target-qthreads -maybe-check-target-qthreads: check-target-qthreads - -check-target-qthreads: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-qthreads - -.PHONY: install-target-qthreads maybe-install-target-qthreads -maybe-install-target-qthreads: -@if target-qthreads -maybe-install-target-qthreads: install-target-qthreads - -install-target-qthreads: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-qthreads - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-qthreads info-target-qthreads -maybe-info-target-qthreads: -@if target-qthreads -maybe-info-target-qthreads: info-target-qthreads - -info-target-qthreads: \ - configure-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-dvi-target-qthreads dvi-target-qthreads -maybe-dvi-target-qthreads: -@if target-qthreads -maybe-dvi-target-qthreads: dvi-target-qthreads - -dvi-target-qthreads: \ - configure-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-pdf-target-qthreads pdf-target-qthreads -maybe-pdf-target-qthreads: -@if target-qthreads -maybe-pdf-target-qthreads: pdf-target-qthreads - -pdf-target-qthreads: \ - configure-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-html-target-qthreads html-target-qthreads -maybe-html-target-qthreads: -@if target-qthreads -maybe-html-target-qthreads: html-target-qthreads - -html-target-qthreads: \ - configure-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-TAGS-target-qthreads TAGS-target-qthreads -maybe-TAGS-target-qthreads: -@if target-qthreads -maybe-TAGS-target-qthreads: TAGS-target-qthreads - -TAGS-target-qthreads: \ - configure-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-install-info-target-qthreads install-info-target-qthreads -maybe-install-info-target-qthreads: -@if target-qthreads -maybe-install-info-target-qthreads: install-info-target-qthreads - -install-info-target-qthreads: \ - configure-target-qthreads \ - info-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-install-pdf-target-qthreads install-pdf-target-qthreads -maybe-install-pdf-target-qthreads: -@if target-qthreads -maybe-install-pdf-target-qthreads: install-pdf-target-qthreads - -install-pdf-target-qthreads: \ - configure-target-qthreads \ - pdf-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-install-html-target-qthreads install-html-target-qthreads -maybe-install-html-target-qthreads: -@if target-qthreads -maybe-install-html-target-qthreads: install-html-target-qthreads - -install-html-target-qthreads: \ - configure-target-qthreads \ - html-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-installcheck-target-qthreads installcheck-target-qthreads -maybe-installcheck-target-qthreads: -@if target-qthreads -maybe-installcheck-target-qthreads: installcheck-target-qthreads - -installcheck-target-qthreads: \ - configure-target-qthreads - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-mostlyclean-target-qthreads mostlyclean-target-qthreads -maybe-mostlyclean-target-qthreads: -@if target-qthreads -maybe-mostlyclean-target-qthreads: mostlyclean-target-qthreads - -mostlyclean-target-qthreads: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-clean-target-qthreads clean-target-qthreads -maybe-clean-target-qthreads: -@if target-qthreads -maybe-clean-target-qthreads: clean-target-qthreads - -clean-target-qthreads: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-distclean-target-qthreads distclean-target-qthreads -maybe-distclean-target-qthreads: -@if target-qthreads -maybe-distclean-target-qthreads: distclean-target-qthreads - -distclean-target-qthreads: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-qthreads - -.PHONY: maybe-maintainer-clean-target-qthreads maintainer-clean-target-qthreads -maybe-maintainer-clean-target-qthreads: -@if target-qthreads -maybe-maintainer-clean-target-qthreads: maintainer-clean-target-qthreads - -maintainer-clean-target-qthreads: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/qthreads/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/qthreads" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/qthreads && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-qthreads - - - - - -.PHONY: configure-target-rda maybe-configure-target-rda -maybe-configure-target-rda: -@if gcc-bootstrap -configure-target-rda: stage_current -@endif gcc-bootstrap -@if target-rda -maybe-configure-target-rda: configure-target-rda -configure-target-rda: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for rda..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/rda ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/rda/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/rda/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/rda/multilib.tmp $(TARGET_SUBDIR)/rda/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/rda/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/rda/Makefile; \ - mv $(TARGET_SUBDIR)/rda/multilib.tmp $(TARGET_SUBDIR)/rda/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/rda/multilib.tmp $(TARGET_SUBDIR)/rda/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/rda/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/rda ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/rda; \ - cd "$(TARGET_SUBDIR)/rda" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/rda/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/rda"; \ - libsrcdir="$$s/rda"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-rda - - - - - -.PHONY: all-target-rda maybe-all-target-rda -maybe-all-target-rda: -@if gcc-bootstrap -all-target-rda: stage_current -@endif gcc-bootstrap -@if target-rda -TARGET-target-rda=all -maybe-all-target-rda: all-target-rda -all-target-rda: configure-target-rda - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-rda)) -@endif target-rda - - - - - -.PHONY: check-target-rda maybe-check-target-rda -maybe-check-target-rda: -@if target-rda -maybe-check-target-rda: check-target-rda - -check-target-rda: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-rda - -.PHONY: install-target-rda maybe-install-target-rda -maybe-install-target-rda: -@if target-rda -maybe-install-target-rda: install-target-rda - -install-target-rda: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-rda - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-rda info-target-rda -maybe-info-target-rda: -@if target-rda -maybe-info-target-rda: info-target-rda - -info-target-rda: \ - configure-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-dvi-target-rda dvi-target-rda -maybe-dvi-target-rda: -@if target-rda -maybe-dvi-target-rda: dvi-target-rda - -dvi-target-rda: \ - configure-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-pdf-target-rda pdf-target-rda -maybe-pdf-target-rda: -@if target-rda -maybe-pdf-target-rda: pdf-target-rda - -pdf-target-rda: \ - configure-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-html-target-rda html-target-rda -maybe-html-target-rda: -@if target-rda -maybe-html-target-rda: html-target-rda - -html-target-rda: \ - configure-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-TAGS-target-rda TAGS-target-rda -maybe-TAGS-target-rda: -@if target-rda -maybe-TAGS-target-rda: TAGS-target-rda - -TAGS-target-rda: \ - configure-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-install-info-target-rda install-info-target-rda -maybe-install-info-target-rda: -@if target-rda -maybe-install-info-target-rda: install-info-target-rda - -install-info-target-rda: \ - configure-target-rda \ - info-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-install-pdf-target-rda install-pdf-target-rda -maybe-install-pdf-target-rda: -@if target-rda -maybe-install-pdf-target-rda: install-pdf-target-rda - -install-pdf-target-rda: \ - configure-target-rda \ - pdf-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-install-html-target-rda install-html-target-rda -maybe-install-html-target-rda: -@if target-rda -maybe-install-html-target-rda: install-html-target-rda - -install-html-target-rda: \ - configure-target-rda \ - html-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-installcheck-target-rda installcheck-target-rda -maybe-installcheck-target-rda: -@if target-rda -maybe-installcheck-target-rda: installcheck-target-rda - -installcheck-target-rda: \ - configure-target-rda - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-mostlyclean-target-rda mostlyclean-target-rda -maybe-mostlyclean-target-rda: -@if target-rda -maybe-mostlyclean-target-rda: mostlyclean-target-rda - -mostlyclean-target-rda: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-clean-target-rda clean-target-rda -maybe-clean-target-rda: -@if target-rda -maybe-clean-target-rda: clean-target-rda - -clean-target-rda: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-distclean-target-rda distclean-target-rda -maybe-distclean-target-rda: -@if target-rda -maybe-distclean-target-rda: distclean-target-rda - -distclean-target-rda: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-rda - -.PHONY: maybe-maintainer-clean-target-rda maintainer-clean-target-rda -maybe-maintainer-clean-target-rda: -@if target-rda -maybe-maintainer-clean-target-rda: maintainer-clean-target-rda - -maintainer-clean-target-rda: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/rda/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/rda" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/rda && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-rda - - - - - -.PHONY: configure-target-libada maybe-configure-target-libada -maybe-configure-target-libada: -@if gcc-bootstrap -configure-target-libada: stage_current -@endif gcc-bootstrap -@if target-libada -maybe-configure-target-libada: configure-target-libada -configure-target-libada: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libada..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libada/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libada/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libada/multilib.tmp $(TARGET_SUBDIR)/libada/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libada/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libada/Makefile; \ - mv $(TARGET_SUBDIR)/libada/multilib.tmp $(TARGET_SUBDIR)/libada/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libada/multilib.tmp $(TARGET_SUBDIR)/libada/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libada/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libada; \ - cd "$(TARGET_SUBDIR)/libada" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libada/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libada"; \ - libsrcdir="$$s/libada"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libada - - - - - -.PHONY: all-target-libada maybe-all-target-libada -maybe-all-target-libada: -@if gcc-bootstrap -all-target-libada: stage_current -@endif gcc-bootstrap -@if target-libada -TARGET-target-libada=all -maybe-all-target-libada: all-target-libada -all-target-libada: configure-target-libada - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libada)) -@endif target-libada - - - - - -.PHONY: check-target-libada maybe-check-target-libada -maybe-check-target-libada: -@if target-libada -maybe-check-target-libada: check-target-libada - -check-target-libada: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libada - -.PHONY: install-target-libada maybe-install-target-libada -maybe-install-target-libada: -@if target-libada -maybe-install-target-libada: install-target-libada - -install-target-libada: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libada - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libada info-target-libada -maybe-info-target-libada: -@if target-libada -maybe-info-target-libada: info-target-libada - -info-target-libada: \ - configure-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-dvi-target-libada dvi-target-libada -maybe-dvi-target-libada: -@if target-libada -maybe-dvi-target-libada: dvi-target-libada - -dvi-target-libada: \ - configure-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-pdf-target-libada pdf-target-libada -maybe-pdf-target-libada: -@if target-libada -maybe-pdf-target-libada: pdf-target-libada - -pdf-target-libada: \ - configure-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-html-target-libada html-target-libada -maybe-html-target-libada: -@if target-libada -maybe-html-target-libada: html-target-libada - -html-target-libada: \ - configure-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-TAGS-target-libada TAGS-target-libada -maybe-TAGS-target-libada: -@if target-libada -maybe-TAGS-target-libada: TAGS-target-libada - -TAGS-target-libada: \ - configure-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-install-info-target-libada install-info-target-libada -maybe-install-info-target-libada: -@if target-libada -maybe-install-info-target-libada: install-info-target-libada - -install-info-target-libada: \ - configure-target-libada \ - info-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-install-pdf-target-libada install-pdf-target-libada -maybe-install-pdf-target-libada: -@if target-libada -maybe-install-pdf-target-libada: install-pdf-target-libada - -install-pdf-target-libada: \ - configure-target-libada \ - pdf-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-install-html-target-libada install-html-target-libada -maybe-install-html-target-libada: -@if target-libada -maybe-install-html-target-libada: install-html-target-libada - -install-html-target-libada: \ - configure-target-libada \ - html-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-installcheck-target-libada installcheck-target-libada -maybe-installcheck-target-libada: -@if target-libada -maybe-installcheck-target-libada: installcheck-target-libada - -installcheck-target-libada: \ - configure-target-libada - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-mostlyclean-target-libada mostlyclean-target-libada -maybe-mostlyclean-target-libada: -@if target-libada -maybe-mostlyclean-target-libada: mostlyclean-target-libada - -mostlyclean-target-libada: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-clean-target-libada clean-target-libada -maybe-clean-target-libada: -@if target-libada -maybe-clean-target-libada: clean-target-libada - -clean-target-libada: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-distclean-target-libada distclean-target-libada -maybe-distclean-target-libada: -@if target-libada -maybe-distclean-target-libada: distclean-target-libada - -distclean-target-libada: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libada - -.PHONY: maybe-maintainer-clean-target-libada maintainer-clean-target-libada -maybe-maintainer-clean-target-libada: -@if target-libada -maybe-maintainer-clean-target-libada: maintainer-clean-target-libada - -maintainer-clean-target-libada: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libada" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libada && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libada - - - - - -.PHONY: configure-target-libgomp maybe-configure-target-libgomp -maybe-configure-target-libgomp: -@if gcc-bootstrap -configure-target-libgomp: stage_current -@endif gcc-bootstrap -@if target-libgomp -maybe-configure-target-libgomp: configure-target-libgomp -configure-target-libgomp: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libgomp..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \ - mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libgomp; \ - cd "$(TARGET_SUBDIR)/libgomp" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libgomp - - - - - -.PHONY: all-target-libgomp maybe-all-target-libgomp -maybe-all-target-libgomp: -@if gcc-bootstrap -all-target-libgomp: stage_current -@endif gcc-bootstrap -@if target-libgomp -TARGET-target-libgomp=all -maybe-all-target-libgomp: all-target-libgomp -all-target-libgomp: configure-target-libgomp - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libgomp)) -@endif target-libgomp - - - - - -.PHONY: check-target-libgomp maybe-check-target-libgomp -maybe-check-target-libgomp: -@if target-libgomp -maybe-check-target-libgomp: check-target-libgomp - -check-target-libgomp: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libgomp - -.PHONY: install-target-libgomp maybe-install-target-libgomp -maybe-install-target-libgomp: -@if target-libgomp -maybe-install-target-libgomp: install-target-libgomp - -install-target-libgomp: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libgomp - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libgomp info-target-libgomp -maybe-info-target-libgomp: -@if target-libgomp -maybe-info-target-libgomp: info-target-libgomp - -info-target-libgomp: \ - configure-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-dvi-target-libgomp dvi-target-libgomp -maybe-dvi-target-libgomp: -@if target-libgomp -maybe-dvi-target-libgomp: dvi-target-libgomp - -dvi-target-libgomp: \ - configure-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-pdf-target-libgomp pdf-target-libgomp -maybe-pdf-target-libgomp: -@if target-libgomp -maybe-pdf-target-libgomp: pdf-target-libgomp - -pdf-target-libgomp: \ - configure-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-html-target-libgomp html-target-libgomp -maybe-html-target-libgomp: -@if target-libgomp -maybe-html-target-libgomp: html-target-libgomp - -html-target-libgomp: \ - configure-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-TAGS-target-libgomp TAGS-target-libgomp -maybe-TAGS-target-libgomp: -@if target-libgomp -maybe-TAGS-target-libgomp: TAGS-target-libgomp - -TAGS-target-libgomp: \ - configure-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-install-info-target-libgomp install-info-target-libgomp -maybe-install-info-target-libgomp: -@if target-libgomp -maybe-install-info-target-libgomp: install-info-target-libgomp - -install-info-target-libgomp: \ - configure-target-libgomp \ - info-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-install-pdf-target-libgomp install-pdf-target-libgomp -maybe-install-pdf-target-libgomp: -@if target-libgomp -maybe-install-pdf-target-libgomp: install-pdf-target-libgomp - -install-pdf-target-libgomp: \ - configure-target-libgomp \ - pdf-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-install-html-target-libgomp install-html-target-libgomp -maybe-install-html-target-libgomp: -@if target-libgomp -maybe-install-html-target-libgomp: install-html-target-libgomp - -install-html-target-libgomp: \ - configure-target-libgomp \ - html-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-installcheck-target-libgomp installcheck-target-libgomp -maybe-installcheck-target-libgomp: -@if target-libgomp -maybe-installcheck-target-libgomp: installcheck-target-libgomp - -installcheck-target-libgomp: \ - configure-target-libgomp - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-mostlyclean-target-libgomp mostlyclean-target-libgomp -maybe-mostlyclean-target-libgomp: -@if target-libgomp -maybe-mostlyclean-target-libgomp: mostlyclean-target-libgomp - -mostlyclean-target-libgomp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-clean-target-libgomp clean-target-libgomp -maybe-clean-target-libgomp: -@if target-libgomp -maybe-clean-target-libgomp: clean-target-libgomp - -clean-target-libgomp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-distclean-target-libgomp distclean-target-libgomp -maybe-distclean-target-libgomp: -@if target-libgomp -maybe-distclean-target-libgomp: distclean-target-libgomp - -distclean-target-libgomp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libgomp - -.PHONY: maybe-maintainer-clean-target-libgomp maintainer-clean-target-libgomp -maybe-maintainer-clean-target-libgomp: -@if target-libgomp -maybe-maintainer-clean-target-libgomp: maintainer-clean-target-libgomp - -maintainer-clean-target-libgomp: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgomp" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libgomp && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libgomp - - - -# ---------- -# GCC module -# ---------- - -@if gcc-no-bootstrap -.PHONY: cross -cross: all-build all-gas all-ld - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - echo "Building the C and C++ compiler"; \ - cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++" - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \ - echo "Building runtime libraries"; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) LANGUAGES="c c++" all -@endif gcc-no-bootstrap - -@if gcc - -.PHONY: check-gcc-c check-c -check-gcc-c: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-gcc); -check-c: check-gcc-c - -.PHONY: check-gcc-c++ check-c++ -check-gcc-c++: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); -check-c++: check-gcc-c++ check-target-libstdc++-v3 - -.PHONY: check-gcc-fortran check-fortran -check-gcc-fortran: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-fortran); -check-fortran: check-gcc-fortran check-target-libgfortran - -.PHONY: check-gcc-java check-java -check-gcc-java: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-java); -check-java: check-gcc-java check-target-libjava - -.PHONY: check-gcc-ada check-ada -check-gcc-ada: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-ada); -check-ada: check-gcc-ada check-target-libada - -.PHONY: check-gcc-objc check-objc -check-gcc-objc: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-objc); -check-objc: check-gcc-objc check-target-libobjc - -.PHONY: check-gcc-obj-c++ check-obj-c++ -check-gcc-obj-c++: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-obj-c++); -check-obj-c++: check-gcc-obj-c++ - - -# Install the gcc headers files, but not the fixed include files, -# which Cygnus is not allowed to distribute. This rule is very -# dependent on the workings of the gcc Makefile.in. -.PHONY: gcc-no-fixedincludes -gcc-no-fixedincludes: - @if [ -f ./gcc/Makefile ]; then \ - rm -rf gcc/tmp-include; \ - mv gcc/include gcc/tmp-include 2>/dev/null; \ - mkdir gcc/include; \ - cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \ - touch gcc/stmp-fixinc gcc/include/fixed; \ - rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \ - $(HOST_EXPORTS) \ - (cd ./gcc && \ - $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ - rm -rf gcc/include; \ - mv gcc/tmp-include gcc/include 2>/dev/null; \ - else true; fi -@endif gcc - -# --------------------- -# GCC bootstrap support -# --------------------- - -# We track the current stage (the one in 'gcc') in the stage_current file. -# stage_last instead tracks the stage that was built last. These targets -# are dummy when toplevel bootstrap is not active. - -# While making host and target tools, symlinks to the final stage must be -# there, so $(unstage) should be run at various points. To avoid excessive -# recursive invocations of make, we "inline" them using a variable. These -# must be referenced as ": $(MAKE) ; $(unstage)" rather than "$(unstage)" -# to avoid warnings from the GNU Make job server. - -unstage = : -stage = : -current_stage = "" - -@if gcc-bootstrap -unstage = if [ -f stage_last ]; then [ -f stage_current ] || $(MAKE) `cat stage_last`-start || exit 1; else :; fi -stage = if [ -f stage_current ]; then $(MAKE) `cat stage_current`-end || exit 1; else :; fi -current_stage = "`cat stage_current 2> /dev/null`" -@endif gcc-bootstrap - -.PHONY: unstage stage -unstage: - @: $(MAKE); $(unstage) -stage: - @: $(MAKE); $(stage) - -# Disable commands for lean bootstrap. -LEAN = false - -# We name the build directories for the various stages "stage1-gcc", -# "stage2-gcc","stage3-gcc", etc. - -# Since the 'compare' process will fail (on debugging information) if any -# directory names are different, we need to link the gcc directory for -# the previous stage to a constant name ('prev-gcc'), and to make the name of -# the build directories constant as well. For the latter, we use naked names -# like 'gcc', because the scripts in that directory assume it. We use -# mv on platforms where symlinks to directories do not work or are not -# reliable. - -# 'touch' doesn't work right on some platforms. -STAMP = echo timestamp > - -# We only want to compare .o files, so set this! -objext = .o - - -.PHONY: stage1-start stage1-end - -stage1-start:: - @: $(MAKE); $(stage); \ - echo stage1 > stage_current ; \ - echo stage1 > stage_last; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR) -@if bfd - @cd $(HOST_SUBDIR); [ -d stage1-bfd ] || \ - mkdir stage1-bfd; \ - mv stage1-bfd bfd -@endif bfd -@if opcodes - @cd $(HOST_SUBDIR); [ -d stage1-opcodes ] || \ - mkdir stage1-opcodes; \ - mv stage1-opcodes opcodes -@endif opcodes -@if binutils - @cd $(HOST_SUBDIR); [ -d stage1-binutils ] || \ - mkdir stage1-binutils; \ - mv stage1-binutils binutils -@endif binutils -@if gas - @cd $(HOST_SUBDIR); [ -d stage1-gas ] || \ - mkdir stage1-gas; \ - mv stage1-gas gas -@endif gas -@if gcc - @cd $(HOST_SUBDIR); [ -d stage1-gcc ] || \ - mkdir stage1-gcc; \ - mv stage1-gcc gcc -@endif gcc -@if gmp - @cd $(HOST_SUBDIR); [ -d stage1-gmp ] || \ - mkdir stage1-gmp; \ - mv stage1-gmp gmp -@endif gmp -@if mpfr - @cd $(HOST_SUBDIR); [ -d stage1-mpfr ] || \ - mkdir stage1-mpfr; \ - mv stage1-mpfr mpfr -@endif mpfr -@if mpc - @cd $(HOST_SUBDIR); [ -d stage1-mpc ] || \ - mkdir stage1-mpc; \ - mv stage1-mpc mpc -@endif mpc -@if ppl - @cd $(HOST_SUBDIR); [ -d stage1-ppl ] || \ - mkdir stage1-ppl; \ - mv stage1-ppl ppl -@endif ppl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage1-cloog ] || \ - mkdir stage1-cloog; \ - mv stage1-cloog cloog -@endif cloog -@if gold - @cd $(HOST_SUBDIR); [ -d stage1-gold ] || \ - mkdir stage1-gold; \ - mv stage1-gold gold -@endif gold -@if intl - @cd $(HOST_SUBDIR); [ -d stage1-intl ] || \ - mkdir stage1-intl; \ - mv stage1-intl intl -@endif intl -@if ld - @cd $(HOST_SUBDIR); [ -d stage1-ld ] || \ - mkdir stage1-ld; \ - mv stage1-ld ld -@endif ld -@if libcpp - @cd $(HOST_SUBDIR); [ -d stage1-libcpp ] || \ - mkdir stage1-libcpp; \ - mv stage1-libcpp libcpp -@endif libcpp -@if libdecnumber - @cd $(HOST_SUBDIR); [ -d stage1-libdecnumber ] || \ - mkdir stage1-libdecnumber; \ - mv stage1-libdecnumber libdecnumber -@endif libdecnumber -@if libiberty - @cd $(HOST_SUBDIR); [ -d stage1-libiberty ] || \ - mkdir stage1-libiberty; \ - mv stage1-libiberty libiberty -@endif libiberty -@if zlib - @cd $(HOST_SUBDIR); [ -d stage1-zlib ] || \ - mkdir stage1-zlib; \ - mv stage1-zlib zlib -@endif zlib - @[ -d stage1-$(TARGET_SUBDIR) ] || \ - mkdir stage1-$(TARGET_SUBDIR); \ - mv stage1-$(TARGET_SUBDIR) $(TARGET_SUBDIR) - -stage1-end:: -@if bfd - @if test -d $(HOST_SUBDIR)/bfd ; then \ - cd $(HOST_SUBDIR); mv bfd stage1-bfd ; \ - fi -@endif bfd -@if opcodes - @if test -d $(HOST_SUBDIR)/opcodes ; then \ - cd $(HOST_SUBDIR); mv opcodes stage1-opcodes ; \ - fi -@endif opcodes -@if binutils - @if test -d $(HOST_SUBDIR)/binutils ; then \ - cd $(HOST_SUBDIR); mv binutils stage1-binutils ; \ - fi -@endif binutils -@if gas - @if test -d $(HOST_SUBDIR)/gas ; then \ - cd $(HOST_SUBDIR); mv gas stage1-gas ; \ - fi -@endif gas -@if gcc - @if test -d $(HOST_SUBDIR)/gcc ; then \ - cd $(HOST_SUBDIR); mv gcc stage1-gcc ; \ - fi -@endif gcc -@if gmp - @if test -d $(HOST_SUBDIR)/gmp ; then \ - cd $(HOST_SUBDIR); mv gmp stage1-gmp ; \ - fi -@endif gmp -@if mpfr - @if test -d $(HOST_SUBDIR)/mpfr ; then \ - cd $(HOST_SUBDIR); mv mpfr stage1-mpfr ; \ - fi -@endif mpfr -@if mpc - @if test -d $(HOST_SUBDIR)/mpc ; then \ - cd $(HOST_SUBDIR); mv mpc stage1-mpc ; \ - fi -@endif mpc -@if ppl - @if test -d $(HOST_SUBDIR)/ppl ; then \ - cd $(HOST_SUBDIR); mv ppl stage1-ppl ; \ - fi -@endif ppl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stage1-cloog ; \ - fi -@endif cloog -@if gold - @if test -d $(HOST_SUBDIR)/gold ; then \ - cd $(HOST_SUBDIR); mv gold stage1-gold ; \ - fi -@endif gold -@if intl - @if test -d $(HOST_SUBDIR)/intl ; then \ - cd $(HOST_SUBDIR); mv intl stage1-intl ; \ - fi -@endif intl -@if ld - @if test -d $(HOST_SUBDIR)/ld ; then \ - cd $(HOST_SUBDIR); mv ld stage1-ld ; \ - fi -@endif ld -@if libcpp - @if test -d $(HOST_SUBDIR)/libcpp ; then \ - cd $(HOST_SUBDIR); mv libcpp stage1-libcpp ; \ - fi -@endif libcpp -@if libdecnumber - @if test -d $(HOST_SUBDIR)/libdecnumber ; then \ - cd $(HOST_SUBDIR); mv libdecnumber stage1-libdecnumber ; \ - fi -@endif libdecnumber -@if libiberty - @if test -d $(HOST_SUBDIR)/libiberty ; then \ - cd $(HOST_SUBDIR); mv libiberty stage1-libiberty ; \ - fi -@endif libiberty -@if zlib - @if test -d $(HOST_SUBDIR)/zlib ; then \ - cd $(HOST_SUBDIR); mv zlib stage1-zlib ; \ - fi -@endif zlib - @if test -d $(TARGET_SUBDIR) ; then \ - mv $(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; \ - fi - rm -f stage_current - -# Bubble a bug fix through all the stages up to stage 1. They are -# remade, but not reconfigured. The next stage (if any) will not be -# reconfigured either. -.PHONY: stage1-bubble -stage1-bubble:: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stage1-lean ; then \ - echo Skipping rebuild of stage1 ; \ - else \ - $(MAKE) stage1-start; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage1; \ - fi - -.PHONY: all-stage1 clean-stage1 -do-clean: clean-stage1 - -# FIXME: Will not need to be conditional when toplevel bootstrap is the -# only possibility, but now it conflicts with no-bootstrap rules -@if gcc-bootstrap - - - - -# Rules to wipe a stage and all the following ones, also used for cleanstrap - -.PHONY: distclean-stage1 -distclean-stage1:: - @: $(MAKE); $(stage) - @test "`cat stage_last`" != stage1 || rm -f stage_last - rm -rf stage1-* - - -@endif gcc-bootstrap - - -.PHONY: stage2-start stage2-end - -stage2-start:: - @: $(MAKE); $(stage); \ - echo stage2 > stage_current ; \ - echo stage2 > stage_last; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR) -@if bfd - @cd $(HOST_SUBDIR); [ -d stage2-bfd ] || \ - mkdir stage2-bfd; \ - mv stage2-bfd bfd ; \ - mv stage1-bfd prev-bfd || test -f stage1-lean -@endif bfd -@if opcodes - @cd $(HOST_SUBDIR); [ -d stage2-opcodes ] || \ - mkdir stage2-opcodes; \ - mv stage2-opcodes opcodes ; \ - mv stage1-opcodes prev-opcodes || test -f stage1-lean -@endif opcodes -@if binutils - @cd $(HOST_SUBDIR); [ -d stage2-binutils ] || \ - mkdir stage2-binutils; \ - mv stage2-binutils binutils ; \ - mv stage1-binutils prev-binutils || test -f stage1-lean -@endif binutils -@if gas - @cd $(HOST_SUBDIR); [ -d stage2-gas ] || \ - mkdir stage2-gas; \ - mv stage2-gas gas ; \ - mv stage1-gas prev-gas || test -f stage1-lean -@endif gas -@if gcc - @cd $(HOST_SUBDIR); [ -d stage2-gcc ] || \ - mkdir stage2-gcc; \ - mv stage2-gcc gcc ; \ - mv stage1-gcc prev-gcc || test -f stage1-lean -@endif gcc -@if gmp - @cd $(HOST_SUBDIR); [ -d stage2-gmp ] || \ - mkdir stage2-gmp; \ - mv stage2-gmp gmp ; \ - mv stage1-gmp prev-gmp || test -f stage1-lean -@endif gmp -@if mpfr - @cd $(HOST_SUBDIR); [ -d stage2-mpfr ] || \ - mkdir stage2-mpfr; \ - mv stage2-mpfr mpfr ; \ - mv stage1-mpfr prev-mpfr || test -f stage1-lean -@endif mpfr -@if mpc - @cd $(HOST_SUBDIR); [ -d stage2-mpc ] || \ - mkdir stage2-mpc; \ - mv stage2-mpc mpc ; \ - mv stage1-mpc prev-mpc || test -f stage1-lean -@endif mpc -@if ppl - @cd $(HOST_SUBDIR); [ -d stage2-ppl ] || \ - mkdir stage2-ppl; \ - mv stage2-ppl ppl ; \ - mv stage1-ppl prev-ppl || test -f stage1-lean -@endif ppl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage2-cloog ] || \ - mkdir stage2-cloog; \ - mv stage2-cloog cloog ; \ - mv stage1-cloog prev-cloog || test -f stage1-lean -@endif cloog -@if gold - @cd $(HOST_SUBDIR); [ -d stage2-gold ] || \ - mkdir stage2-gold; \ - mv stage2-gold gold ; \ - mv stage1-gold prev-gold || test -f stage1-lean -@endif gold -@if intl - @cd $(HOST_SUBDIR); [ -d stage2-intl ] || \ - mkdir stage2-intl; \ - mv stage2-intl intl ; \ - mv stage1-intl prev-intl || test -f stage1-lean -@endif intl -@if ld - @cd $(HOST_SUBDIR); [ -d stage2-ld ] || \ - mkdir stage2-ld; \ - mv stage2-ld ld ; \ - mv stage1-ld prev-ld || test -f stage1-lean -@endif ld -@if libcpp - @cd $(HOST_SUBDIR); [ -d stage2-libcpp ] || \ - mkdir stage2-libcpp; \ - mv stage2-libcpp libcpp ; \ - mv stage1-libcpp prev-libcpp || test -f stage1-lean -@endif libcpp -@if libdecnumber - @cd $(HOST_SUBDIR); [ -d stage2-libdecnumber ] || \ - mkdir stage2-libdecnumber; \ - mv stage2-libdecnumber libdecnumber ; \ - mv stage1-libdecnumber prev-libdecnumber || test -f stage1-lean -@endif libdecnumber -@if libiberty - @cd $(HOST_SUBDIR); [ -d stage2-libiberty ] || \ - mkdir stage2-libiberty; \ - mv stage2-libiberty libiberty ; \ - mv stage1-libiberty prev-libiberty || test -f stage1-lean -@endif libiberty -@if zlib - @cd $(HOST_SUBDIR); [ -d stage2-zlib ] || \ - mkdir stage2-zlib; \ - mv stage2-zlib zlib ; \ - mv stage1-zlib prev-zlib || test -f stage1-lean -@endif zlib - @[ -d stage2-$(TARGET_SUBDIR) ] || \ - mkdir stage2-$(TARGET_SUBDIR); \ - mv stage2-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ - mv stage1-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stage1-lean - -stage2-end:: -@if bfd - @if test -d $(HOST_SUBDIR)/bfd ; then \ - cd $(HOST_SUBDIR); mv bfd stage2-bfd ; \ - mv prev-bfd stage1-bfd ; : ; \ - fi -@endif bfd -@if opcodes - @if test -d $(HOST_SUBDIR)/opcodes ; then \ - cd $(HOST_SUBDIR); mv opcodes stage2-opcodes ; \ - mv prev-opcodes stage1-opcodes ; : ; \ - fi -@endif opcodes -@if binutils - @if test -d $(HOST_SUBDIR)/binutils ; then \ - cd $(HOST_SUBDIR); mv binutils stage2-binutils ; \ - mv prev-binutils stage1-binutils ; : ; \ - fi -@endif binutils -@if gas - @if test -d $(HOST_SUBDIR)/gas ; then \ - cd $(HOST_SUBDIR); mv gas stage2-gas ; \ - mv prev-gas stage1-gas ; : ; \ - fi -@endif gas -@if gcc - @if test -d $(HOST_SUBDIR)/gcc ; then \ - cd $(HOST_SUBDIR); mv gcc stage2-gcc ; \ - mv prev-gcc stage1-gcc ; : ; \ - fi -@endif gcc -@if gmp - @if test -d $(HOST_SUBDIR)/gmp ; then \ - cd $(HOST_SUBDIR); mv gmp stage2-gmp ; \ - mv prev-gmp stage1-gmp ; : ; \ - fi -@endif gmp -@if mpfr - @if test -d $(HOST_SUBDIR)/mpfr ; then \ - cd $(HOST_SUBDIR); mv mpfr stage2-mpfr ; \ - mv prev-mpfr stage1-mpfr ; : ; \ - fi -@endif mpfr -@if mpc - @if test -d $(HOST_SUBDIR)/mpc ; then \ - cd $(HOST_SUBDIR); mv mpc stage2-mpc ; \ - mv prev-mpc stage1-mpc ; : ; \ - fi -@endif mpc -@if ppl - @if test -d $(HOST_SUBDIR)/ppl ; then \ - cd $(HOST_SUBDIR); mv ppl stage2-ppl ; \ - mv prev-ppl stage1-ppl ; : ; \ - fi -@endif ppl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stage2-cloog ; \ - mv prev-cloog stage1-cloog ; : ; \ - fi -@endif cloog -@if gold - @if test -d $(HOST_SUBDIR)/gold ; then \ - cd $(HOST_SUBDIR); mv gold stage2-gold ; \ - mv prev-gold stage1-gold ; : ; \ - fi -@endif gold -@if intl - @if test -d $(HOST_SUBDIR)/intl ; then \ - cd $(HOST_SUBDIR); mv intl stage2-intl ; \ - mv prev-intl stage1-intl ; : ; \ - fi -@endif intl -@if ld - @if test -d $(HOST_SUBDIR)/ld ; then \ - cd $(HOST_SUBDIR); mv ld stage2-ld ; \ - mv prev-ld stage1-ld ; : ; \ - fi -@endif ld -@if libcpp - @if test -d $(HOST_SUBDIR)/libcpp ; then \ - cd $(HOST_SUBDIR); mv libcpp stage2-libcpp ; \ - mv prev-libcpp stage1-libcpp ; : ; \ - fi -@endif libcpp -@if libdecnumber - @if test -d $(HOST_SUBDIR)/libdecnumber ; then \ - cd $(HOST_SUBDIR); mv libdecnumber stage2-libdecnumber ; \ - mv prev-libdecnumber stage1-libdecnumber ; : ; \ - fi -@endif libdecnumber -@if libiberty - @if test -d $(HOST_SUBDIR)/libiberty ; then \ - cd $(HOST_SUBDIR); mv libiberty stage2-libiberty ; \ - mv prev-libiberty stage1-libiberty ; : ; \ - fi -@endif libiberty -@if zlib - @if test -d $(HOST_SUBDIR)/zlib ; then \ - cd $(HOST_SUBDIR); mv zlib stage2-zlib ; \ - mv prev-zlib stage1-zlib ; : ; \ - fi -@endif zlib - @if test -d $(TARGET_SUBDIR) ; then \ - mv $(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR) ; \ - mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; : ; \ - fi - rm -f stage_current - -# Bubble a bug fix through all the stages up to stage 2. They are -# remade, but not reconfigured. The next stage (if any) will not be -# reconfigured either. -.PHONY: stage2-bubble -stage2-bubble:: stage1-bubble - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stage2-lean || test -f stage1-lean ; then \ - echo Skipping rebuild of stage2 ; \ - else \ - $(MAKE) stage2-start; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage2; \ - fi - -.PHONY: all-stage2 clean-stage2 -do-clean: clean-stage2 - -# FIXME: Will not need to be conditional when toplevel bootstrap is the -# only possibility, but now it conflicts with no-bootstrap rules -@if gcc-bootstrap - - - -.PHONY: bootstrap2 bootstrap2-lean -bootstrap2: - echo stage2 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage2-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - -bootstrap2-lean: - echo stage2 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) LEAN=: stage2-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - - -# Rules to wipe a stage and all the following ones, also used for cleanstrap -distclean-stage1:: distclean-stage2 -.PHONY: distclean-stage2 -distclean-stage2:: - @: $(MAKE); $(stage) - @test "`cat stage_last`" != stage2 || rm -f stage_last - rm -rf stage2-* - - -@endif gcc-bootstrap - - -.PHONY: stage3-start stage3-end - -stage3-start:: - @: $(MAKE); $(stage); \ - echo stage3 > stage_current ; \ - echo stage3 > stage_last; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR) -@if bfd - @cd $(HOST_SUBDIR); [ -d stage3-bfd ] || \ - mkdir stage3-bfd; \ - mv stage3-bfd bfd ; \ - mv stage2-bfd prev-bfd || test -f stage2-lean -@endif bfd -@if opcodes - @cd $(HOST_SUBDIR); [ -d stage3-opcodes ] || \ - mkdir stage3-opcodes; \ - mv stage3-opcodes opcodes ; \ - mv stage2-opcodes prev-opcodes || test -f stage2-lean -@endif opcodes -@if binutils - @cd $(HOST_SUBDIR); [ -d stage3-binutils ] || \ - mkdir stage3-binutils; \ - mv stage3-binutils binutils ; \ - mv stage2-binutils prev-binutils || test -f stage2-lean -@endif binutils -@if gas - @cd $(HOST_SUBDIR); [ -d stage3-gas ] || \ - mkdir stage3-gas; \ - mv stage3-gas gas ; \ - mv stage2-gas prev-gas || test -f stage2-lean -@endif gas -@if gcc - @cd $(HOST_SUBDIR); [ -d stage3-gcc ] || \ - mkdir stage3-gcc; \ - mv stage3-gcc gcc ; \ - mv stage2-gcc prev-gcc || test -f stage2-lean -@endif gcc -@if gmp - @cd $(HOST_SUBDIR); [ -d stage3-gmp ] || \ - mkdir stage3-gmp; \ - mv stage3-gmp gmp ; \ - mv stage2-gmp prev-gmp || test -f stage2-lean -@endif gmp -@if mpfr - @cd $(HOST_SUBDIR); [ -d stage3-mpfr ] || \ - mkdir stage3-mpfr; \ - mv stage3-mpfr mpfr ; \ - mv stage2-mpfr prev-mpfr || test -f stage2-lean -@endif mpfr -@if mpc - @cd $(HOST_SUBDIR); [ -d stage3-mpc ] || \ - mkdir stage3-mpc; \ - mv stage3-mpc mpc ; \ - mv stage2-mpc prev-mpc || test -f stage2-lean -@endif mpc -@if ppl - @cd $(HOST_SUBDIR); [ -d stage3-ppl ] || \ - mkdir stage3-ppl; \ - mv stage3-ppl ppl ; \ - mv stage2-ppl prev-ppl || test -f stage2-lean -@endif ppl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage3-cloog ] || \ - mkdir stage3-cloog; \ - mv stage3-cloog cloog ; \ - mv stage2-cloog prev-cloog || test -f stage2-lean -@endif cloog -@if gold - @cd $(HOST_SUBDIR); [ -d stage3-gold ] || \ - mkdir stage3-gold; \ - mv stage3-gold gold ; \ - mv stage2-gold prev-gold || test -f stage2-lean -@endif gold -@if intl - @cd $(HOST_SUBDIR); [ -d stage3-intl ] || \ - mkdir stage3-intl; \ - mv stage3-intl intl ; \ - mv stage2-intl prev-intl || test -f stage2-lean -@endif intl -@if ld - @cd $(HOST_SUBDIR); [ -d stage3-ld ] || \ - mkdir stage3-ld; \ - mv stage3-ld ld ; \ - mv stage2-ld prev-ld || test -f stage2-lean -@endif ld -@if libcpp - @cd $(HOST_SUBDIR); [ -d stage3-libcpp ] || \ - mkdir stage3-libcpp; \ - mv stage3-libcpp libcpp ; \ - mv stage2-libcpp prev-libcpp || test -f stage2-lean -@endif libcpp -@if libdecnumber - @cd $(HOST_SUBDIR); [ -d stage3-libdecnumber ] || \ - mkdir stage3-libdecnumber; \ - mv stage3-libdecnumber libdecnumber ; \ - mv stage2-libdecnumber prev-libdecnumber || test -f stage2-lean -@endif libdecnumber -@if libiberty - @cd $(HOST_SUBDIR); [ -d stage3-libiberty ] || \ - mkdir stage3-libiberty; \ - mv stage3-libiberty libiberty ; \ - mv stage2-libiberty prev-libiberty || test -f stage2-lean -@endif libiberty -@if zlib - @cd $(HOST_SUBDIR); [ -d stage3-zlib ] || \ - mkdir stage3-zlib; \ - mv stage3-zlib zlib ; \ - mv stage2-zlib prev-zlib || test -f stage2-lean -@endif zlib - @[ -d stage3-$(TARGET_SUBDIR) ] || \ - mkdir stage3-$(TARGET_SUBDIR); \ - mv stage3-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ - mv stage2-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stage2-lean - -stage3-end:: -@if bfd - @if test -d $(HOST_SUBDIR)/bfd ; then \ - cd $(HOST_SUBDIR); mv bfd stage3-bfd ; \ - mv prev-bfd stage2-bfd ; : ; \ - fi -@endif bfd -@if opcodes - @if test -d $(HOST_SUBDIR)/opcodes ; then \ - cd $(HOST_SUBDIR); mv opcodes stage3-opcodes ; \ - mv prev-opcodes stage2-opcodes ; : ; \ - fi -@endif opcodes -@if binutils - @if test -d $(HOST_SUBDIR)/binutils ; then \ - cd $(HOST_SUBDIR); mv binutils stage3-binutils ; \ - mv prev-binutils stage2-binutils ; : ; \ - fi -@endif binutils -@if gas - @if test -d $(HOST_SUBDIR)/gas ; then \ - cd $(HOST_SUBDIR); mv gas stage3-gas ; \ - mv prev-gas stage2-gas ; : ; \ - fi -@endif gas -@if gcc - @if test -d $(HOST_SUBDIR)/gcc ; then \ - cd $(HOST_SUBDIR); mv gcc stage3-gcc ; \ - mv prev-gcc stage2-gcc ; : ; \ - fi -@endif gcc -@if gmp - @if test -d $(HOST_SUBDIR)/gmp ; then \ - cd $(HOST_SUBDIR); mv gmp stage3-gmp ; \ - mv prev-gmp stage2-gmp ; : ; \ - fi -@endif gmp -@if mpfr - @if test -d $(HOST_SUBDIR)/mpfr ; then \ - cd $(HOST_SUBDIR); mv mpfr stage3-mpfr ; \ - mv prev-mpfr stage2-mpfr ; : ; \ - fi -@endif mpfr -@if mpc - @if test -d $(HOST_SUBDIR)/mpc ; then \ - cd $(HOST_SUBDIR); mv mpc stage3-mpc ; \ - mv prev-mpc stage2-mpc ; : ; \ - fi -@endif mpc -@if ppl - @if test -d $(HOST_SUBDIR)/ppl ; then \ - cd $(HOST_SUBDIR); mv ppl stage3-ppl ; \ - mv prev-ppl stage2-ppl ; : ; \ - fi -@endif ppl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stage3-cloog ; \ - mv prev-cloog stage2-cloog ; : ; \ - fi -@endif cloog -@if gold - @if test -d $(HOST_SUBDIR)/gold ; then \ - cd $(HOST_SUBDIR); mv gold stage3-gold ; \ - mv prev-gold stage2-gold ; : ; \ - fi -@endif gold -@if intl - @if test -d $(HOST_SUBDIR)/intl ; then \ - cd $(HOST_SUBDIR); mv intl stage3-intl ; \ - mv prev-intl stage2-intl ; : ; \ - fi -@endif intl -@if ld - @if test -d $(HOST_SUBDIR)/ld ; then \ - cd $(HOST_SUBDIR); mv ld stage3-ld ; \ - mv prev-ld stage2-ld ; : ; \ - fi -@endif ld -@if libcpp - @if test -d $(HOST_SUBDIR)/libcpp ; then \ - cd $(HOST_SUBDIR); mv libcpp stage3-libcpp ; \ - mv prev-libcpp stage2-libcpp ; : ; \ - fi -@endif libcpp -@if libdecnumber - @if test -d $(HOST_SUBDIR)/libdecnumber ; then \ - cd $(HOST_SUBDIR); mv libdecnumber stage3-libdecnumber ; \ - mv prev-libdecnumber stage2-libdecnumber ; : ; \ - fi -@endif libdecnumber -@if libiberty - @if test -d $(HOST_SUBDIR)/libiberty ; then \ - cd $(HOST_SUBDIR); mv libiberty stage3-libiberty ; \ - mv prev-libiberty stage2-libiberty ; : ; \ - fi -@endif libiberty -@if zlib - @if test -d $(HOST_SUBDIR)/zlib ; then \ - cd $(HOST_SUBDIR); mv zlib stage3-zlib ; \ - mv prev-zlib stage2-zlib ; : ; \ - fi -@endif zlib - @if test -d $(TARGET_SUBDIR) ; then \ - mv $(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR) ; \ - mv prev-$(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR) ; : ; \ - fi - rm -f stage_current - -# Bubble a bug fix through all the stages up to stage 3. They are -# remade, but not reconfigured. The next stage (if any) will not be -# reconfigured either. -.PHONY: stage3-bubble -stage3-bubble:: stage2-bubble - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stage3-lean || test -f stage2-lean ; then \ - echo Skipping rebuild of stage3 ; \ - else \ - $(MAKE) stage3-start; \ - if $(LEAN); then \ - rm -rf stage1-* ; \ - $(STAMP) stage1-lean ; \ - fi; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage3; \ - fi - $(MAKE) $(RECURSE_FLAGS_TO_PASS) compare - -.PHONY: all-stage3 clean-stage3 -do-clean: clean-stage3 - -# FIXME: Will not need to be conditional when toplevel bootstrap is the -# only possibility, but now it conflicts with no-bootstrap rules -@if gcc-bootstrap - -compare: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stage2-lean; then \ - echo Cannot compare object files as stage 2 was deleted. ; \ - exit 0 ; \ - fi; \ - : $(MAKE); $(stage); \ - rm -f .bad_compare ; \ - echo Comparing stages 2 and 3 ; \ - sed=`echo stage3 | sed 's,^stage,,;s,.,.,g'`; \ - files=`find stage3-* -name "*$(objext)" -print | \ - sed -n s,^stage$$sed-,,p` ; \ - for file in $${files} ; do \ - f1=$$r/stage2-$$file; f2=$$r/stage3-$$file; \ - if test ! -f $$f1; then continue; fi; \ - $(do-compare) > /dev/null 2>&1; \ - if test $$? -eq 1; then \ - case $$file in \ - @compare_exclusions@) \ - echo warning: $$file differs ;; \ - *) \ - echo $$file differs >> .bad_compare ;; \ - esac ; \ - fi ; \ - done ; \ - if [ -f .bad_compare ]; then \ - echo "Bootstrap comparison failure!"; \ - cat .bad_compare; \ - exit 1; \ - else \ - echo Comparison successful.; \ - fi ; \ - $(STAMP) compare - if $(LEAN); then \ - rm -rf stage2-*; \ - $(STAMP) stage2-lean; \ - fi - - - -.PHONY: bootstrap bootstrap-lean -bootstrap: - echo stage3 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage3-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - -bootstrap-lean: - echo stage3 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) LEAN=: stage3-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - - -# Rules to wipe a stage and all the following ones, also used for cleanstrap -distclean-stage2:: distclean-stage3 -.PHONY: distclean-stage3 -distclean-stage3:: - @: $(MAKE); $(stage) - @test "`cat stage_last`" != stage3 || rm -f stage_last - rm -rf stage3-* compare - - -.PHONY: cleanstrap -cleanstrap: do-distclean local-clean - echo stage3 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage3-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - -@endif gcc-bootstrap - - -.PHONY: stage4-start stage4-end - -stage4-start:: - @: $(MAKE); $(stage); \ - echo stage4 > stage_current ; \ - echo stage4 > stage_last; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR) -@if bfd - @cd $(HOST_SUBDIR); [ -d stage4-bfd ] || \ - mkdir stage4-bfd; \ - mv stage4-bfd bfd ; \ - mv stage3-bfd prev-bfd || test -f stage3-lean -@endif bfd -@if opcodes - @cd $(HOST_SUBDIR); [ -d stage4-opcodes ] || \ - mkdir stage4-opcodes; \ - mv stage4-opcodes opcodes ; \ - mv stage3-opcodes prev-opcodes || test -f stage3-lean -@endif opcodes -@if binutils - @cd $(HOST_SUBDIR); [ -d stage4-binutils ] || \ - mkdir stage4-binutils; \ - mv stage4-binutils binutils ; \ - mv stage3-binutils prev-binutils || test -f stage3-lean -@endif binutils -@if gas - @cd $(HOST_SUBDIR); [ -d stage4-gas ] || \ - mkdir stage4-gas; \ - mv stage4-gas gas ; \ - mv stage3-gas prev-gas || test -f stage3-lean -@endif gas -@if gcc - @cd $(HOST_SUBDIR); [ -d stage4-gcc ] || \ - mkdir stage4-gcc; \ - mv stage4-gcc gcc ; \ - mv stage3-gcc prev-gcc || test -f stage3-lean -@endif gcc -@if gmp - @cd $(HOST_SUBDIR); [ -d stage4-gmp ] || \ - mkdir stage4-gmp; \ - mv stage4-gmp gmp ; \ - mv stage3-gmp prev-gmp || test -f stage3-lean -@endif gmp -@if mpfr - @cd $(HOST_SUBDIR); [ -d stage4-mpfr ] || \ - mkdir stage4-mpfr; \ - mv stage4-mpfr mpfr ; \ - mv stage3-mpfr prev-mpfr || test -f stage3-lean -@endif mpfr -@if mpc - @cd $(HOST_SUBDIR); [ -d stage4-mpc ] || \ - mkdir stage4-mpc; \ - mv stage4-mpc mpc ; \ - mv stage3-mpc prev-mpc || test -f stage3-lean -@endif mpc -@if ppl - @cd $(HOST_SUBDIR); [ -d stage4-ppl ] || \ - mkdir stage4-ppl; \ - mv stage4-ppl ppl ; \ - mv stage3-ppl prev-ppl || test -f stage3-lean -@endif ppl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage4-cloog ] || \ - mkdir stage4-cloog; \ - mv stage4-cloog cloog ; \ - mv stage3-cloog prev-cloog || test -f stage3-lean -@endif cloog -@if gold - @cd $(HOST_SUBDIR); [ -d stage4-gold ] || \ - mkdir stage4-gold; \ - mv stage4-gold gold ; \ - mv stage3-gold prev-gold || test -f stage3-lean -@endif gold -@if intl - @cd $(HOST_SUBDIR); [ -d stage4-intl ] || \ - mkdir stage4-intl; \ - mv stage4-intl intl ; \ - mv stage3-intl prev-intl || test -f stage3-lean -@endif intl -@if ld - @cd $(HOST_SUBDIR); [ -d stage4-ld ] || \ - mkdir stage4-ld; \ - mv stage4-ld ld ; \ - mv stage3-ld prev-ld || test -f stage3-lean -@endif ld -@if libcpp - @cd $(HOST_SUBDIR); [ -d stage4-libcpp ] || \ - mkdir stage4-libcpp; \ - mv stage4-libcpp libcpp ; \ - mv stage3-libcpp prev-libcpp || test -f stage3-lean -@endif libcpp -@if libdecnumber - @cd $(HOST_SUBDIR); [ -d stage4-libdecnumber ] || \ - mkdir stage4-libdecnumber; \ - mv stage4-libdecnumber libdecnumber ; \ - mv stage3-libdecnumber prev-libdecnumber || test -f stage3-lean -@endif libdecnumber -@if libiberty - @cd $(HOST_SUBDIR); [ -d stage4-libiberty ] || \ - mkdir stage4-libiberty; \ - mv stage4-libiberty libiberty ; \ - mv stage3-libiberty prev-libiberty || test -f stage3-lean -@endif libiberty -@if zlib - @cd $(HOST_SUBDIR); [ -d stage4-zlib ] || \ - mkdir stage4-zlib; \ - mv stage4-zlib zlib ; \ - mv stage3-zlib prev-zlib || test -f stage3-lean -@endif zlib - @[ -d stage4-$(TARGET_SUBDIR) ] || \ - mkdir stage4-$(TARGET_SUBDIR); \ - mv stage4-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ - mv stage3-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stage3-lean - -stage4-end:: -@if bfd - @if test -d $(HOST_SUBDIR)/bfd ; then \ - cd $(HOST_SUBDIR); mv bfd stage4-bfd ; \ - mv prev-bfd stage3-bfd ; : ; \ - fi -@endif bfd -@if opcodes - @if test -d $(HOST_SUBDIR)/opcodes ; then \ - cd $(HOST_SUBDIR); mv opcodes stage4-opcodes ; \ - mv prev-opcodes stage3-opcodes ; : ; \ - fi -@endif opcodes -@if binutils - @if test -d $(HOST_SUBDIR)/binutils ; then \ - cd $(HOST_SUBDIR); mv binutils stage4-binutils ; \ - mv prev-binutils stage3-binutils ; : ; \ - fi -@endif binutils -@if gas - @if test -d $(HOST_SUBDIR)/gas ; then \ - cd $(HOST_SUBDIR); mv gas stage4-gas ; \ - mv prev-gas stage3-gas ; : ; \ - fi -@endif gas -@if gcc - @if test -d $(HOST_SUBDIR)/gcc ; then \ - cd $(HOST_SUBDIR); mv gcc stage4-gcc ; \ - mv prev-gcc stage3-gcc ; : ; \ - fi -@endif gcc -@if gmp - @if test -d $(HOST_SUBDIR)/gmp ; then \ - cd $(HOST_SUBDIR); mv gmp stage4-gmp ; \ - mv prev-gmp stage3-gmp ; : ; \ - fi -@endif gmp -@if mpfr - @if test -d $(HOST_SUBDIR)/mpfr ; then \ - cd $(HOST_SUBDIR); mv mpfr stage4-mpfr ; \ - mv prev-mpfr stage3-mpfr ; : ; \ - fi -@endif mpfr -@if mpc - @if test -d $(HOST_SUBDIR)/mpc ; then \ - cd $(HOST_SUBDIR); mv mpc stage4-mpc ; \ - mv prev-mpc stage3-mpc ; : ; \ - fi -@endif mpc -@if ppl - @if test -d $(HOST_SUBDIR)/ppl ; then \ - cd $(HOST_SUBDIR); mv ppl stage4-ppl ; \ - mv prev-ppl stage3-ppl ; : ; \ - fi -@endif ppl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stage4-cloog ; \ - mv prev-cloog stage3-cloog ; : ; \ - fi -@endif cloog -@if gold - @if test -d $(HOST_SUBDIR)/gold ; then \ - cd $(HOST_SUBDIR); mv gold stage4-gold ; \ - mv prev-gold stage3-gold ; : ; \ - fi -@endif gold -@if intl - @if test -d $(HOST_SUBDIR)/intl ; then \ - cd $(HOST_SUBDIR); mv intl stage4-intl ; \ - mv prev-intl stage3-intl ; : ; \ - fi -@endif intl -@if ld - @if test -d $(HOST_SUBDIR)/ld ; then \ - cd $(HOST_SUBDIR); mv ld stage4-ld ; \ - mv prev-ld stage3-ld ; : ; \ - fi -@endif ld -@if libcpp - @if test -d $(HOST_SUBDIR)/libcpp ; then \ - cd $(HOST_SUBDIR); mv libcpp stage4-libcpp ; \ - mv prev-libcpp stage3-libcpp ; : ; \ - fi -@endif libcpp -@if libdecnumber - @if test -d $(HOST_SUBDIR)/libdecnumber ; then \ - cd $(HOST_SUBDIR); mv libdecnumber stage4-libdecnumber ; \ - mv prev-libdecnumber stage3-libdecnumber ; : ; \ - fi -@endif libdecnumber -@if libiberty - @if test -d $(HOST_SUBDIR)/libiberty ; then \ - cd $(HOST_SUBDIR); mv libiberty stage4-libiberty ; \ - mv prev-libiberty stage3-libiberty ; : ; \ - fi -@endif libiberty -@if zlib - @if test -d $(HOST_SUBDIR)/zlib ; then \ - cd $(HOST_SUBDIR); mv zlib stage4-zlib ; \ - mv prev-zlib stage3-zlib ; : ; \ - fi -@endif zlib - @if test -d $(TARGET_SUBDIR) ; then \ - mv $(TARGET_SUBDIR) stage4-$(TARGET_SUBDIR) ; \ - mv prev-$(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR) ; : ; \ - fi - rm -f stage_current - -# Bubble a bug fix through all the stages up to stage 4. They are -# remade, but not reconfigured. The next stage (if any) will not be -# reconfigured either. -.PHONY: stage4-bubble -stage4-bubble:: stage3-bubble - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stage4-lean || test -f stage3-lean ; then \ - echo Skipping rebuild of stage4 ; \ - else \ - $(MAKE) stage4-start; \ - if $(LEAN); then \ - rm -rf stage2-* ; \ - $(STAMP) stage2-lean ; \ - fi; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage4; \ - fi - $(MAKE) $(RECURSE_FLAGS_TO_PASS) compare3 - -.PHONY: all-stage4 clean-stage4 -do-clean: clean-stage4 - -# FIXME: Will not need to be conditional when toplevel bootstrap is the -# only possibility, but now it conflicts with no-bootstrap rules -@if gcc-bootstrap - -compare3: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stage3-lean; then \ - echo Cannot compare object files as stage 3 was deleted. ; \ - exit 0 ; \ - fi; \ - : $(MAKE); $(stage); \ - rm -f .bad_compare ; \ - echo Comparing stages 3 and 4 ; \ - sed=`echo stage4 | sed 's,^stage,,;s,.,.,g'`; \ - files=`find stage4-* -name "*$(objext)" -print | \ - sed -n s,^stage$$sed-,,p` ; \ - for file in $${files} ; do \ - f1=$$r/stage3-$$file; f2=$$r/stage4-$$file; \ - if test ! -f $$f1; then continue; fi; \ - $(do-compare3) > /dev/null 2>&1; \ - if test $$? -eq 1; then \ - case $$file in \ - @compare_exclusions@) \ - echo warning: $$file differs ;; \ - *) \ - echo $$file differs >> .bad_compare ;; \ - esac ; \ - fi ; \ - done ; \ - if [ -f .bad_compare ]; then \ - echo "Bootstrap comparison failure!"; \ - cat .bad_compare; \ - exit 1; \ - else \ - echo Comparison successful.; \ - fi ; \ - $(STAMP) compare3 - if $(LEAN); then \ - rm -rf stage3-*; \ - $(STAMP) stage3-lean; \ - fi - - - -.PHONY: bootstrap4 bootstrap4-lean -bootstrap4: - echo stage4 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage4-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - -bootstrap4-lean: - echo stage4 > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) LEAN=: stage4-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - - -# Rules to wipe a stage and all the following ones, also used for cleanstrap -distclean-stage3:: distclean-stage4 -.PHONY: distclean-stage4 -distclean-stage4:: - @: $(MAKE); $(stage) - @test "`cat stage_last`" != stage4 || rm -f stage_last - rm -rf stage4-* compare3 - - -@endif gcc-bootstrap - - -.PHONY: stageprofile-start stageprofile-end - -stageprofile-start:: - @: $(MAKE); $(stage); \ - echo stageprofile > stage_current ; \ - echo stageprofile > stage_last; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR) -@if bfd - @cd $(HOST_SUBDIR); [ -d stageprofile-bfd ] || \ - mkdir stageprofile-bfd; \ - mv stageprofile-bfd bfd ; \ - mv stage1-bfd prev-bfd || test -f stage1-lean -@endif bfd -@if opcodes - @cd $(HOST_SUBDIR); [ -d stageprofile-opcodes ] || \ - mkdir stageprofile-opcodes; \ - mv stageprofile-opcodes opcodes ; \ - mv stage1-opcodes prev-opcodes || test -f stage1-lean -@endif opcodes -@if binutils - @cd $(HOST_SUBDIR); [ -d stageprofile-binutils ] || \ - mkdir stageprofile-binutils; \ - mv stageprofile-binutils binutils ; \ - mv stage1-binutils prev-binutils || test -f stage1-lean -@endif binutils -@if gas - @cd $(HOST_SUBDIR); [ -d stageprofile-gas ] || \ - mkdir stageprofile-gas; \ - mv stageprofile-gas gas ; \ - mv stage1-gas prev-gas || test -f stage1-lean -@endif gas -@if gcc - @cd $(HOST_SUBDIR); [ -d stageprofile-gcc ] || \ - mkdir stageprofile-gcc; \ - mv stageprofile-gcc gcc ; \ - mv stage1-gcc prev-gcc || test -f stage1-lean -@endif gcc -@if gmp - @cd $(HOST_SUBDIR); [ -d stageprofile-gmp ] || \ - mkdir stageprofile-gmp; \ - mv stageprofile-gmp gmp ; \ - mv stage1-gmp prev-gmp || test -f stage1-lean -@endif gmp -@if mpfr - @cd $(HOST_SUBDIR); [ -d stageprofile-mpfr ] || \ - mkdir stageprofile-mpfr; \ - mv stageprofile-mpfr mpfr ; \ - mv stage1-mpfr prev-mpfr || test -f stage1-lean -@endif mpfr -@if mpc - @cd $(HOST_SUBDIR); [ -d stageprofile-mpc ] || \ - mkdir stageprofile-mpc; \ - mv stageprofile-mpc mpc ; \ - mv stage1-mpc prev-mpc || test -f stage1-lean -@endif mpc -@if ppl - @cd $(HOST_SUBDIR); [ -d stageprofile-ppl ] || \ - mkdir stageprofile-ppl; \ - mv stageprofile-ppl ppl ; \ - mv stage1-ppl prev-ppl || test -f stage1-lean -@endif ppl -@if cloog - @cd $(HOST_SUBDIR); [ -d stageprofile-cloog ] || \ - mkdir stageprofile-cloog; \ - mv stageprofile-cloog cloog ; \ - mv stage1-cloog prev-cloog || test -f stage1-lean -@endif cloog -@if gold - @cd $(HOST_SUBDIR); [ -d stageprofile-gold ] || \ - mkdir stageprofile-gold; \ - mv stageprofile-gold gold ; \ - mv stage1-gold prev-gold || test -f stage1-lean -@endif gold -@if intl - @cd $(HOST_SUBDIR); [ -d stageprofile-intl ] || \ - mkdir stageprofile-intl; \ - mv stageprofile-intl intl ; \ - mv stage1-intl prev-intl || test -f stage1-lean -@endif intl -@if ld - @cd $(HOST_SUBDIR); [ -d stageprofile-ld ] || \ - mkdir stageprofile-ld; \ - mv stageprofile-ld ld ; \ - mv stage1-ld prev-ld || test -f stage1-lean -@endif ld -@if libcpp - @cd $(HOST_SUBDIR); [ -d stageprofile-libcpp ] || \ - mkdir stageprofile-libcpp; \ - mv stageprofile-libcpp libcpp ; \ - mv stage1-libcpp prev-libcpp || test -f stage1-lean -@endif libcpp -@if libdecnumber - @cd $(HOST_SUBDIR); [ -d stageprofile-libdecnumber ] || \ - mkdir stageprofile-libdecnumber; \ - mv stageprofile-libdecnumber libdecnumber ; \ - mv stage1-libdecnumber prev-libdecnumber || test -f stage1-lean -@endif libdecnumber -@if libiberty - @cd $(HOST_SUBDIR); [ -d stageprofile-libiberty ] || \ - mkdir stageprofile-libiberty; \ - mv stageprofile-libiberty libiberty ; \ - mv stage1-libiberty prev-libiberty || test -f stage1-lean -@endif libiberty -@if zlib - @cd $(HOST_SUBDIR); [ -d stageprofile-zlib ] || \ - mkdir stageprofile-zlib; \ - mv stageprofile-zlib zlib ; \ - mv stage1-zlib prev-zlib || test -f stage1-lean -@endif zlib - @[ -d stageprofile-$(TARGET_SUBDIR) ] || \ - mkdir stageprofile-$(TARGET_SUBDIR); \ - mv stageprofile-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ - mv stage1-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stage1-lean - -stageprofile-end:: -@if bfd - @if test -d $(HOST_SUBDIR)/bfd ; then \ - cd $(HOST_SUBDIR); mv bfd stageprofile-bfd ; \ - mv prev-bfd stage1-bfd ; : ; \ - fi -@endif bfd -@if opcodes - @if test -d $(HOST_SUBDIR)/opcodes ; then \ - cd $(HOST_SUBDIR); mv opcodes stageprofile-opcodes ; \ - mv prev-opcodes stage1-opcodes ; : ; \ - fi -@endif opcodes -@if binutils - @if test -d $(HOST_SUBDIR)/binutils ; then \ - cd $(HOST_SUBDIR); mv binutils stageprofile-binutils ; \ - mv prev-binutils stage1-binutils ; : ; \ - fi -@endif binutils -@if gas - @if test -d $(HOST_SUBDIR)/gas ; then \ - cd $(HOST_SUBDIR); mv gas stageprofile-gas ; \ - mv prev-gas stage1-gas ; : ; \ - fi -@endif gas -@if gcc - @if test -d $(HOST_SUBDIR)/gcc ; then \ - cd $(HOST_SUBDIR); mv gcc stageprofile-gcc ; \ - mv prev-gcc stage1-gcc ; : ; \ - fi -@endif gcc -@if gmp - @if test -d $(HOST_SUBDIR)/gmp ; then \ - cd $(HOST_SUBDIR); mv gmp stageprofile-gmp ; \ - mv prev-gmp stage1-gmp ; : ; \ - fi -@endif gmp -@if mpfr - @if test -d $(HOST_SUBDIR)/mpfr ; then \ - cd $(HOST_SUBDIR); mv mpfr stageprofile-mpfr ; \ - mv prev-mpfr stage1-mpfr ; : ; \ - fi -@endif mpfr -@if mpc - @if test -d $(HOST_SUBDIR)/mpc ; then \ - cd $(HOST_SUBDIR); mv mpc stageprofile-mpc ; \ - mv prev-mpc stage1-mpc ; : ; \ - fi -@endif mpc -@if ppl - @if test -d $(HOST_SUBDIR)/ppl ; then \ - cd $(HOST_SUBDIR); mv ppl stageprofile-ppl ; \ - mv prev-ppl stage1-ppl ; : ; \ - fi -@endif ppl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stageprofile-cloog ; \ - mv prev-cloog stage1-cloog ; : ; \ - fi -@endif cloog -@if gold - @if test -d $(HOST_SUBDIR)/gold ; then \ - cd $(HOST_SUBDIR); mv gold stageprofile-gold ; \ - mv prev-gold stage1-gold ; : ; \ - fi -@endif gold -@if intl - @if test -d $(HOST_SUBDIR)/intl ; then \ - cd $(HOST_SUBDIR); mv intl stageprofile-intl ; \ - mv prev-intl stage1-intl ; : ; \ - fi -@endif intl -@if ld - @if test -d $(HOST_SUBDIR)/ld ; then \ - cd $(HOST_SUBDIR); mv ld stageprofile-ld ; \ - mv prev-ld stage1-ld ; : ; \ - fi -@endif ld -@if libcpp - @if test -d $(HOST_SUBDIR)/libcpp ; then \ - cd $(HOST_SUBDIR); mv libcpp stageprofile-libcpp ; \ - mv prev-libcpp stage1-libcpp ; : ; \ - fi -@endif libcpp -@if libdecnumber - @if test -d $(HOST_SUBDIR)/libdecnumber ; then \ - cd $(HOST_SUBDIR); mv libdecnumber stageprofile-libdecnumber ; \ - mv prev-libdecnumber stage1-libdecnumber ; : ; \ - fi -@endif libdecnumber -@if libiberty - @if test -d $(HOST_SUBDIR)/libiberty ; then \ - cd $(HOST_SUBDIR); mv libiberty stageprofile-libiberty ; \ - mv prev-libiberty stage1-libiberty ; : ; \ - fi -@endif libiberty -@if zlib - @if test -d $(HOST_SUBDIR)/zlib ; then \ - cd $(HOST_SUBDIR); mv zlib stageprofile-zlib ; \ - mv prev-zlib stage1-zlib ; : ; \ - fi -@endif zlib - @if test -d $(TARGET_SUBDIR) ; then \ - mv $(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR) ; \ - mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; : ; \ - fi - rm -f stage_current - -# Bubble a bug fix through all the stages up to stage profile. They are -# remade, but not reconfigured. The next stage (if any) will not be -# reconfigured either. -.PHONY: stageprofile-bubble -stageprofile-bubble:: stage1-bubble - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stageprofile-lean || test -f stage1-lean ; then \ - echo Skipping rebuild of stageprofile ; \ - else \ - $(MAKE) stageprofile-start; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stageprofile; \ - fi - -.PHONY: all-stageprofile clean-stageprofile -do-clean: clean-stageprofile - -# FIXME: Will not need to be conditional when toplevel bootstrap is the -# only possibility, but now it conflicts with no-bootstrap rules -@if gcc-bootstrap - - - - -# Rules to wipe a stage and all the following ones, also used for cleanstrap -distclean-stage1:: distclean-stageprofile -.PHONY: distclean-stageprofile -distclean-stageprofile:: - @: $(MAKE); $(stage) - @test "`cat stage_last`" != stageprofile || rm -f stage_last - rm -rf stageprofile-* - - -@endif gcc-bootstrap - - -.PHONY: stagefeedback-start stagefeedback-end - -stagefeedback-start:: - @: $(MAKE); $(stage); \ - echo stagefeedback > stage_current ; \ - echo stagefeedback > stage_last; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR) -@if bfd - @cd $(HOST_SUBDIR); [ -d stagefeedback-bfd ] || \ - mkdir stagefeedback-bfd; \ - mv stagefeedback-bfd bfd ; \ - mv stageprofile-bfd prev-bfd || test -f stageprofile-lean -@endif bfd -@if opcodes - @cd $(HOST_SUBDIR); [ -d stagefeedback-opcodes ] || \ - mkdir stagefeedback-opcodes; \ - mv stagefeedback-opcodes opcodes ; \ - mv stageprofile-opcodes prev-opcodes || test -f stageprofile-lean -@endif opcodes -@if binutils - @cd $(HOST_SUBDIR); [ -d stagefeedback-binutils ] || \ - mkdir stagefeedback-binutils; \ - mv stagefeedback-binutils binutils ; \ - mv stageprofile-binutils prev-binutils || test -f stageprofile-lean -@endif binutils -@if gas - @cd $(HOST_SUBDIR); [ -d stagefeedback-gas ] || \ - mkdir stagefeedback-gas; \ - mv stagefeedback-gas gas ; \ - mv stageprofile-gas prev-gas || test -f stageprofile-lean -@endif gas -@if gcc - @cd $(HOST_SUBDIR); [ -d stagefeedback-gcc ] || \ - mkdir stagefeedback-gcc; \ - mv stagefeedback-gcc gcc ; \ - mv stageprofile-gcc prev-gcc || test -f stageprofile-lean -@endif gcc -@if gmp - @cd $(HOST_SUBDIR); [ -d stagefeedback-gmp ] || \ - mkdir stagefeedback-gmp; \ - mv stagefeedback-gmp gmp ; \ - mv stageprofile-gmp prev-gmp || test -f stageprofile-lean -@endif gmp -@if mpfr - @cd $(HOST_SUBDIR); [ -d stagefeedback-mpfr ] || \ - mkdir stagefeedback-mpfr; \ - mv stagefeedback-mpfr mpfr ; \ - mv stageprofile-mpfr prev-mpfr || test -f stageprofile-lean -@endif mpfr -@if mpc - @cd $(HOST_SUBDIR); [ -d stagefeedback-mpc ] || \ - mkdir stagefeedback-mpc; \ - mv stagefeedback-mpc mpc ; \ - mv stageprofile-mpc prev-mpc || test -f stageprofile-lean -@endif mpc -@if ppl - @cd $(HOST_SUBDIR); [ -d stagefeedback-ppl ] || \ - mkdir stagefeedback-ppl; \ - mv stagefeedback-ppl ppl ; \ - mv stageprofile-ppl prev-ppl || test -f stageprofile-lean -@endif ppl -@if cloog - @cd $(HOST_SUBDIR); [ -d stagefeedback-cloog ] || \ - mkdir stagefeedback-cloog; \ - mv stagefeedback-cloog cloog ; \ - mv stageprofile-cloog prev-cloog || test -f stageprofile-lean -@endif cloog -@if gold - @cd $(HOST_SUBDIR); [ -d stagefeedback-gold ] || \ - mkdir stagefeedback-gold; \ - mv stagefeedback-gold gold ; \ - mv stageprofile-gold prev-gold || test -f stageprofile-lean -@endif gold -@if intl - @cd $(HOST_SUBDIR); [ -d stagefeedback-intl ] || \ - mkdir stagefeedback-intl; \ - mv stagefeedback-intl intl ; \ - mv stageprofile-intl prev-intl || test -f stageprofile-lean -@endif intl -@if ld - @cd $(HOST_SUBDIR); [ -d stagefeedback-ld ] || \ - mkdir stagefeedback-ld; \ - mv stagefeedback-ld ld ; \ - mv stageprofile-ld prev-ld || test -f stageprofile-lean -@endif ld -@if libcpp - @cd $(HOST_SUBDIR); [ -d stagefeedback-libcpp ] || \ - mkdir stagefeedback-libcpp; \ - mv stagefeedback-libcpp libcpp ; \ - mv stageprofile-libcpp prev-libcpp || test -f stageprofile-lean -@endif libcpp -@if libdecnumber - @cd $(HOST_SUBDIR); [ -d stagefeedback-libdecnumber ] || \ - mkdir stagefeedback-libdecnumber; \ - mv stagefeedback-libdecnumber libdecnumber ; \ - mv stageprofile-libdecnumber prev-libdecnumber || test -f stageprofile-lean -@endif libdecnumber -@if libiberty - @cd $(HOST_SUBDIR); [ -d stagefeedback-libiberty ] || \ - mkdir stagefeedback-libiberty; \ - mv stagefeedback-libiberty libiberty ; \ - mv stageprofile-libiberty prev-libiberty || test -f stageprofile-lean -@endif libiberty -@if zlib - @cd $(HOST_SUBDIR); [ -d stagefeedback-zlib ] || \ - mkdir stagefeedback-zlib; \ - mv stagefeedback-zlib zlib ; \ - mv stageprofile-zlib prev-zlib || test -f stageprofile-lean -@endif zlib - @[ -d stagefeedback-$(TARGET_SUBDIR) ] || \ - mkdir stagefeedback-$(TARGET_SUBDIR); \ - mv stagefeedback-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ - mv stageprofile-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stageprofile-lean - -stagefeedback-end:: -@if bfd - @if test -d $(HOST_SUBDIR)/bfd ; then \ - cd $(HOST_SUBDIR); mv bfd stagefeedback-bfd ; \ - mv prev-bfd stageprofile-bfd ; : ; \ - fi -@endif bfd -@if opcodes - @if test -d $(HOST_SUBDIR)/opcodes ; then \ - cd $(HOST_SUBDIR); mv opcodes stagefeedback-opcodes ; \ - mv prev-opcodes stageprofile-opcodes ; : ; \ - fi -@endif opcodes -@if binutils - @if test -d $(HOST_SUBDIR)/binutils ; then \ - cd $(HOST_SUBDIR); mv binutils stagefeedback-binutils ; \ - mv prev-binutils stageprofile-binutils ; : ; \ - fi -@endif binutils -@if gas - @if test -d $(HOST_SUBDIR)/gas ; then \ - cd $(HOST_SUBDIR); mv gas stagefeedback-gas ; \ - mv prev-gas stageprofile-gas ; : ; \ - fi -@endif gas -@if gcc - @if test -d $(HOST_SUBDIR)/gcc ; then \ - cd $(HOST_SUBDIR); mv gcc stagefeedback-gcc ; \ - mv prev-gcc stageprofile-gcc ; : ; \ - fi -@endif gcc -@if gmp - @if test -d $(HOST_SUBDIR)/gmp ; then \ - cd $(HOST_SUBDIR); mv gmp stagefeedback-gmp ; \ - mv prev-gmp stageprofile-gmp ; : ; \ - fi -@endif gmp -@if mpfr - @if test -d $(HOST_SUBDIR)/mpfr ; then \ - cd $(HOST_SUBDIR); mv mpfr stagefeedback-mpfr ; \ - mv prev-mpfr stageprofile-mpfr ; : ; \ - fi -@endif mpfr -@if mpc - @if test -d $(HOST_SUBDIR)/mpc ; then \ - cd $(HOST_SUBDIR); mv mpc stagefeedback-mpc ; \ - mv prev-mpc stageprofile-mpc ; : ; \ - fi -@endif mpc -@if ppl - @if test -d $(HOST_SUBDIR)/ppl ; then \ - cd $(HOST_SUBDIR); mv ppl stagefeedback-ppl ; \ - mv prev-ppl stageprofile-ppl ; : ; \ - fi -@endif ppl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stagefeedback-cloog ; \ - mv prev-cloog stageprofile-cloog ; : ; \ - fi -@endif cloog -@if gold - @if test -d $(HOST_SUBDIR)/gold ; then \ - cd $(HOST_SUBDIR); mv gold stagefeedback-gold ; \ - mv prev-gold stageprofile-gold ; : ; \ - fi -@endif gold -@if intl - @if test -d $(HOST_SUBDIR)/intl ; then \ - cd $(HOST_SUBDIR); mv intl stagefeedback-intl ; \ - mv prev-intl stageprofile-intl ; : ; \ - fi -@endif intl -@if ld - @if test -d $(HOST_SUBDIR)/ld ; then \ - cd $(HOST_SUBDIR); mv ld stagefeedback-ld ; \ - mv prev-ld stageprofile-ld ; : ; \ - fi -@endif ld -@if libcpp - @if test -d $(HOST_SUBDIR)/libcpp ; then \ - cd $(HOST_SUBDIR); mv libcpp stagefeedback-libcpp ; \ - mv prev-libcpp stageprofile-libcpp ; : ; \ - fi -@endif libcpp -@if libdecnumber - @if test -d $(HOST_SUBDIR)/libdecnumber ; then \ - cd $(HOST_SUBDIR); mv libdecnumber stagefeedback-libdecnumber ; \ - mv prev-libdecnumber stageprofile-libdecnumber ; : ; \ - fi -@endif libdecnumber -@if libiberty - @if test -d $(HOST_SUBDIR)/libiberty ; then \ - cd $(HOST_SUBDIR); mv libiberty stagefeedback-libiberty ; \ - mv prev-libiberty stageprofile-libiberty ; : ; \ - fi -@endif libiberty -@if zlib - @if test -d $(HOST_SUBDIR)/zlib ; then \ - cd $(HOST_SUBDIR); mv zlib stagefeedback-zlib ; \ - mv prev-zlib stageprofile-zlib ; : ; \ - fi -@endif zlib - @if test -d $(TARGET_SUBDIR) ; then \ - mv $(TARGET_SUBDIR) stagefeedback-$(TARGET_SUBDIR) ; \ - mv prev-$(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR) ; : ; \ - fi - rm -f stage_current - -# Bubble a bug fix through all the stages up to stage feedback. They are -# remade, but not reconfigured. The next stage (if any) will not be -# reconfigured either. -.PHONY: stagefeedback-bubble -stagefeedback-bubble:: stageprofile-bubble - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if test -f stagefeedback-lean || test -f stageprofile-lean ; then \ - echo Skipping rebuild of stagefeedback ; \ - else \ - $(MAKE) stagefeedback-start; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stagefeedback; \ - fi - -.PHONY: all-stagefeedback clean-stagefeedback -do-clean: clean-stagefeedback - -# FIXME: Will not need to be conditional when toplevel bootstrap is the -# only possibility, but now it conflicts with no-bootstrap rules -@if gcc-bootstrap - - - -.PHONY: profiledbootstrap profiledbootstrap-lean -profiledbootstrap: - echo stagefeedback > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) stagefeedback-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - -profiledbootstrap-lean: - echo stagefeedback > stage_final - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) LEAN=: stagefeedback-bubble - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target - - -# Rules to wipe a stage and all the following ones, also used for cleanstrap -distclean-stageprofile:: distclean-stagefeedback -.PHONY: distclean-stagefeedback -distclean-stagefeedback:: - @: $(MAKE); $(stage) - @test "`cat stage_last`" != stagefeedback || rm -f stage_last - rm -rf stagefeedback-* - - -@endif gcc-bootstrap - - - -stageprofile-end:: - $(MAKE) distclean-stagefeedback - -stagefeedback-start:: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - for i in prev-*; do \ - j=`echo $$i | sed s/^prev-//` ; \ - cd $$r/$$i && \ - { find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../'$$j'/&",' | $(SHELL) ; } && \ - { find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../'$$j'/&",' | $(SHELL) ; } ; \ - done - -@if gcc-bootstrap -do-distclean: distclean-stage1 - -# Provide a GCC build when we're building target libraries. This does -# not work as a dependency, just as the minimum necessary to avoid errors. -stage_last: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage1-bubble - -# Same as unstage, but not phony and defaulting to stage1-start. We place -# it in the dependency so that for example `make -j3 all-gcc' works. -stage_current: - @if test -f stage_last; then $(unstage); else $(MAKE) stage1-start; fi - -.PHONY: restrap -restrap:: - @: $(MAKE); $(stage) - rm -rf stage1-$(TARGET_SUBDIR) stage2-* stage3-* stage4-* stageprofile-* stagefeedback-* -restrap:: all -@endif gcc-bootstrap - -# -------------------------------------- -# Dependencies between different modules -# -------------------------------------- - -# Generic dependencies for target modules on host stuff, especially gcc -@if gcc-bootstrap -configure-stage1-target-libstdc++-v3: maybe-all-stage1-gcc -configure-stage2-target-libstdc++-v3: maybe-all-stage2-gcc -configure-stage3-target-libstdc++-v3: maybe-all-stage3-gcc -configure-stage4-target-libstdc++-v3: maybe-all-stage4-gcc -configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-gcc -configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-gcc -configure-target-libmudflap: stage_last -configure-target-libssp: stage_last -configure-target-newlib: stage_last -configure-stage1-target-libgcc: maybe-all-stage1-gcc -configure-stage2-target-libgcc: maybe-all-stage2-gcc -configure-stage3-target-libgcc: maybe-all-stage3-gcc -configure-stage4-target-libgcc: maybe-all-stage4-gcc -configure-stageprofile-target-libgcc: maybe-all-stageprofile-gcc -configure-stagefeedback-target-libgcc: maybe-all-stagefeedback-gcc -configure-target-libgfortran: stage_last -configure-target-libobjc: stage_last -configure-target-libtermcap: stage_last -configure-target-winsup: stage_last -configure-target-libgloss: stage_last -configure-target-libiberty: stage_last -configure-target-gperf: stage_last -configure-target-examples: stage_last -configure-target-libffi: stage_last -configure-target-libjava: stage_last -configure-target-zlib: stage_last -configure-target-boehm-gc: stage_last -configure-target-qthreads: stage_last -configure-target-rda: stage_last -configure-target-libada: stage_last -configure-target-libgomp: stage_last -@endif gcc-bootstrap - -@if gcc-no-bootstrap -configure-target-libstdc++-v3: maybe-all-gcc -configure-target-libmudflap: maybe-all-gcc -configure-target-libssp: maybe-all-gcc -configure-target-newlib: maybe-all-gcc -configure-target-libgcc: maybe-all-gcc -configure-target-libgfortran: maybe-all-gcc -configure-target-libobjc: maybe-all-gcc -configure-target-libtermcap: maybe-all-gcc -configure-target-winsup: maybe-all-gcc -configure-target-libgloss: maybe-all-gcc -configure-target-libiberty: maybe-all-gcc -configure-target-gperf: maybe-all-gcc -configure-target-examples: maybe-all-gcc -configure-target-libffi: maybe-all-gcc -configure-target-libjava: maybe-all-gcc -configure-target-zlib: maybe-all-gcc -configure-target-boehm-gc: maybe-all-gcc -configure-target-qthreads: maybe-all-gcc -configure-target-rda: maybe-all-gcc -configure-target-libada: maybe-all-gcc -configure-target-libgomp: maybe-all-gcc -@endif gcc-no-bootstrap - - -# There are two types of dependencies here: 'hard' dependencies, where one -# module simply won't build without the other; and 'soft' dependencies, where -# if the depended-on module is missing, the depending module will do without -# or find a substitute somewhere (perhaps installed). Soft dependencies -# are made here to depend on a 'maybe-' target. If you're not sure, -# it's safer to use a soft dependency. - - - - - - -# With all the machinery above in place, it is pretty easy to generate -# dependencies. Host dependencies are a bit more complex because we have -# to check for bootstrap/prebootstrap dependencies. To resolve -# prebootstrap dependencies, prebootstrap modules are gathered in -# a hash table. -all-build-bison: maybe-all-build-texinfo -all-build-byacc: maybe-all-build-texinfo -all-build-flex: maybe-all-build-texinfo -all-build-flex: maybe-all-build-bison -all-build-flex: maybe-all-build-byacc -all-build-flex: maybe-all-build-m4 -all-build-libiberty: maybe-all-build-texinfo -all-build-m4: maybe-all-build-texinfo -all-build-fixincludes: maybe-all-build-libiberty -configure-gcc: maybe-configure-intl - -configure-stage1-gcc: maybe-configure-stage1-intl -configure-stage2-gcc: maybe-configure-stage2-intl -configure-stage3-gcc: maybe-configure-stage3-intl -configure-stage4-gcc: maybe-configure-stage4-intl -configure-stageprofile-gcc: maybe-configure-stageprofile-intl -configure-stagefeedback-gcc: maybe-configure-stagefeedback-intl -configure-gcc: maybe-all-binutils - -configure-stage1-gcc: maybe-all-stage1-binutils -configure-stage2-gcc: maybe-all-stage2-binutils -configure-stage3-gcc: maybe-all-stage3-binutils -configure-stage4-gcc: maybe-all-stage4-binutils -configure-stageprofile-gcc: maybe-all-stageprofile-binutils -configure-stagefeedback-gcc: maybe-all-stagefeedback-binutils -configure-gcc: maybe-all-gas - -configure-stage1-gcc: maybe-all-stage1-gas -configure-stage2-gcc: maybe-all-stage2-gas -configure-stage3-gcc: maybe-all-stage3-gas -configure-stage4-gcc: maybe-all-stage4-gas -configure-stageprofile-gcc: maybe-all-stageprofile-gas -configure-stagefeedback-gcc: maybe-all-stagefeedback-gas -configure-gcc: maybe-all-ld - -configure-stage1-gcc: maybe-all-stage1-ld -configure-stage2-gcc: maybe-all-stage2-ld -configure-stage3-gcc: maybe-all-stage3-ld -configure-stage4-gcc: maybe-all-stage4-ld -configure-stageprofile-gcc: maybe-all-stageprofile-ld -configure-stagefeedback-gcc: maybe-all-stagefeedback-ld -configure-gcc: maybe-all-gold - -configure-stage1-gcc: maybe-all-stage1-gold -configure-stage2-gcc: maybe-all-stage2-gold -configure-stage3-gcc: maybe-all-stage3-gold -configure-stage4-gcc: maybe-all-stage4-gold -configure-stageprofile-gcc: maybe-all-stageprofile-gold -configure-stagefeedback-gcc: maybe-all-stagefeedback-gold -all-gcc: all-libiberty - -all-stage1-gcc: all-stage1-libiberty -all-stage2-gcc: all-stage2-libiberty -all-stage3-gcc: all-stage3-libiberty -all-stage4-gcc: all-stage4-libiberty -all-stageprofile-gcc: all-stageprofile-libiberty -all-stagefeedback-gcc: all-stagefeedback-libiberty -all-gcc: maybe-all-gmp - -all-stage1-gcc: maybe-all-stage1-gmp -all-stage2-gcc: maybe-all-stage2-gmp -all-stage3-gcc: maybe-all-stage3-gmp -all-stage4-gcc: maybe-all-stage4-gmp -all-stageprofile-gcc: maybe-all-stageprofile-gmp -all-stagefeedback-gcc: maybe-all-stagefeedback-gmp -all-gcc: maybe-all-intl - -all-stage1-gcc: maybe-all-stage1-intl -all-stage2-gcc: maybe-all-stage2-intl -all-stage3-gcc: maybe-all-stage3-intl -all-stage4-gcc: maybe-all-stage4-intl -all-stageprofile-gcc: maybe-all-stageprofile-intl -all-stagefeedback-gcc: maybe-all-stagefeedback-intl -all-gcc: maybe-all-mpfr - -all-stage1-gcc: maybe-all-stage1-mpfr -all-stage2-gcc: maybe-all-stage2-mpfr -all-stage3-gcc: maybe-all-stage3-mpfr -all-stage4-gcc: maybe-all-stage4-mpfr -all-stageprofile-gcc: maybe-all-stageprofile-mpfr -all-stagefeedback-gcc: maybe-all-stagefeedback-mpfr -all-gcc: maybe-all-mpc - -all-stage1-gcc: maybe-all-stage1-mpc -all-stage2-gcc: maybe-all-stage2-mpc -all-stage3-gcc: maybe-all-stage3-mpc -all-stage4-gcc: maybe-all-stage4-mpc -all-stageprofile-gcc: maybe-all-stageprofile-mpc -all-stagefeedback-gcc: maybe-all-stagefeedback-mpc -all-gcc: maybe-all-ppl - -all-stage1-gcc: maybe-all-stage1-ppl -all-stage2-gcc: maybe-all-stage2-ppl -all-stage3-gcc: maybe-all-stage3-ppl -all-stage4-gcc: maybe-all-stage4-ppl -all-stageprofile-gcc: maybe-all-stageprofile-ppl -all-stagefeedback-gcc: maybe-all-stagefeedback-ppl -all-gcc: maybe-all-cloog - -all-stage1-gcc: maybe-all-stage1-cloog -all-stage2-gcc: maybe-all-stage2-cloog -all-stage3-gcc: maybe-all-stage3-cloog -all-stage4-gcc: maybe-all-stage4-cloog -all-stageprofile-gcc: maybe-all-stageprofile-cloog -all-stagefeedback-gcc: maybe-all-stagefeedback-cloog -all-gcc: maybe-all-build-texinfo - -all-stage1-gcc: maybe-all-build-texinfo -all-stage2-gcc: maybe-all-build-texinfo -all-stage3-gcc: maybe-all-build-texinfo -all-stage4-gcc: maybe-all-build-texinfo -all-stageprofile-gcc: maybe-all-build-texinfo -all-stagefeedback-gcc: maybe-all-build-texinfo -all-gcc: maybe-all-build-bison - -all-stage1-gcc: maybe-all-build-bison -all-stage2-gcc: maybe-all-build-bison -all-stage3-gcc: maybe-all-build-bison -all-stage4-gcc: maybe-all-build-bison -all-stageprofile-gcc: maybe-all-build-bison -all-stagefeedback-gcc: maybe-all-build-bison -all-gcc: maybe-all-build-byacc - -all-stage1-gcc: maybe-all-build-byacc -all-stage2-gcc: maybe-all-build-byacc -all-stage3-gcc: maybe-all-build-byacc -all-stage4-gcc: maybe-all-build-byacc -all-stageprofile-gcc: maybe-all-build-byacc -all-stagefeedback-gcc: maybe-all-build-byacc -all-gcc: maybe-all-build-flex - -all-stage1-gcc: maybe-all-build-flex -all-stage2-gcc: maybe-all-build-flex -all-stage3-gcc: maybe-all-build-flex -all-stage4-gcc: maybe-all-build-flex -all-stageprofile-gcc: maybe-all-build-flex -all-stagefeedback-gcc: maybe-all-build-flex -all-gcc: maybe-all-build-libiberty - -all-stage1-gcc: maybe-all-build-libiberty -all-stage2-gcc: maybe-all-build-libiberty -all-stage3-gcc: maybe-all-build-libiberty -all-stage4-gcc: maybe-all-build-libiberty -all-stageprofile-gcc: maybe-all-build-libiberty -all-stagefeedback-gcc: maybe-all-build-libiberty -all-gcc: maybe-all-build-fixincludes - -all-stage1-gcc: maybe-all-build-fixincludes -all-stage2-gcc: maybe-all-build-fixincludes -all-stage3-gcc: maybe-all-build-fixincludes -all-stage4-gcc: maybe-all-build-fixincludes -all-stageprofile-gcc: maybe-all-build-fixincludes -all-stagefeedback-gcc: maybe-all-build-fixincludes -all-gcc: maybe-all-zlib - -all-stage1-gcc: maybe-all-stage1-zlib -all-stage2-gcc: maybe-all-stage2-zlib -all-stage3-gcc: maybe-all-stage3-zlib -all-stage4-gcc: maybe-all-stage4-zlib -all-stageprofile-gcc: maybe-all-stageprofile-zlib -all-stagefeedback-gcc: maybe-all-stagefeedback-zlib -all-gcc: all-libcpp - -all-stage1-gcc: all-stage1-libcpp -all-stage2-gcc: all-stage2-libcpp -all-stage3-gcc: all-stage3-libcpp -all-stage4-gcc: all-stage4-libcpp -all-stageprofile-gcc: all-stageprofile-libcpp -all-stagefeedback-gcc: all-stagefeedback-libcpp -all-gcc: all-libdecnumber - -all-stage1-gcc: all-stage1-libdecnumber -all-stage2-gcc: all-stage2-libdecnumber -all-stage3-gcc: all-stage3-libdecnumber -all-stage4-gcc: all-stage4-libdecnumber -all-stageprofile-gcc: all-stageprofile-libdecnumber -all-stagefeedback-gcc: all-stagefeedback-libdecnumber -all-gcc: maybe-all-libiberty - -all-stage1-gcc: maybe-all-stage1-libiberty -all-stage2-gcc: maybe-all-stage2-libiberty -all-stage3-gcc: maybe-all-stage3-libiberty -all-stage4-gcc: maybe-all-stage4-libiberty -all-stageprofile-gcc: maybe-all-stageprofile-libiberty -all-stagefeedback-gcc: maybe-all-stagefeedback-libiberty -all-gcc: maybe-all-fixincludes -install-gcc: maybe-install-fixincludes -configure-libcpp: configure-libiberty - -configure-stage1-libcpp: configure-stage1-libiberty -configure-stage2-libcpp: configure-stage2-libiberty -configure-stage3-libcpp: configure-stage3-libiberty -configure-stage4-libcpp: configure-stage4-libiberty -configure-stageprofile-libcpp: configure-stageprofile-libiberty -configure-stagefeedback-libcpp: configure-stagefeedback-libiberty -configure-libcpp: maybe-configure-intl - -configure-stage1-libcpp: maybe-configure-stage1-intl -configure-stage2-libcpp: maybe-configure-stage2-intl -configure-stage3-libcpp: maybe-configure-stage3-intl -configure-stage4-libcpp: maybe-configure-stage4-intl -configure-stageprofile-libcpp: maybe-configure-stageprofile-intl -configure-stagefeedback-libcpp: maybe-configure-stagefeedback-intl -all-libcpp: all-libiberty - -all-stage1-libcpp: all-stage1-libiberty -all-stage2-libcpp: all-stage2-libiberty -all-stage3-libcpp: all-stage3-libiberty -all-stage4-libcpp: all-stage4-libiberty -all-stageprofile-libcpp: all-stageprofile-libiberty -all-stagefeedback-libcpp: all-stagefeedback-libiberty -all-libcpp: maybe-all-intl - -all-stage1-libcpp: maybe-all-stage1-intl -all-stage2-libcpp: maybe-all-stage2-intl -all-stage3-libcpp: maybe-all-stage3-intl -all-stage4-libcpp: maybe-all-stage4-intl -all-stageprofile-libcpp: maybe-all-stageprofile-intl -all-stagefeedback-libcpp: maybe-all-stagefeedback-intl -all-fixincludes: maybe-all-libiberty -all-gnattools: maybe-all-target-libada -configure-mpfr: maybe-all-gmp - -configure-stage1-mpfr: maybe-all-stage1-gmp -configure-stage2-mpfr: maybe-all-stage2-gmp -configure-stage3-mpfr: maybe-all-stage3-gmp -configure-stage4-mpfr: maybe-all-stage4-gmp -configure-stageprofile-mpfr: maybe-all-stageprofile-gmp -configure-stagefeedback-mpfr: maybe-all-stagefeedback-gmp -configure-mpc: maybe-all-mpfr - -configure-stage1-mpc: maybe-all-stage1-mpfr -configure-stage2-mpc: maybe-all-stage2-mpfr -configure-stage3-mpc: maybe-all-stage3-mpfr -configure-stage4-mpc: maybe-all-stage4-mpfr -configure-stageprofile-mpc: maybe-all-stageprofile-mpfr -configure-stagefeedback-mpc: maybe-all-stagefeedback-mpfr -configure-ppl: maybe-all-gmp - -configure-stage1-ppl: maybe-all-stage1-gmp -configure-stage2-ppl: maybe-all-stage2-gmp -configure-stage3-ppl: maybe-all-stage3-gmp -configure-stage4-ppl: maybe-all-stage4-gmp -configure-stageprofile-ppl: maybe-all-stageprofile-gmp -configure-stagefeedback-ppl: maybe-all-stagefeedback-gmp -configure-ppl: maybe-all-mpfr - -configure-stage1-ppl: maybe-all-stage1-mpfr -configure-stage2-ppl: maybe-all-stage2-mpfr -configure-stage3-ppl: maybe-all-stage3-mpfr -configure-stage4-ppl: maybe-all-stage4-mpfr -configure-stageprofile-ppl: maybe-all-stageprofile-mpfr -configure-stagefeedback-ppl: maybe-all-stagefeedback-mpfr -configure-cloog: maybe-all-ppl - -configure-stage1-cloog: maybe-all-stage1-ppl -configure-stage2-cloog: maybe-all-stage2-ppl -configure-stage3-cloog: maybe-all-stage3-ppl -configure-stage4-cloog: maybe-all-stage4-ppl -configure-stageprofile-cloog: maybe-all-stageprofile-ppl -configure-stagefeedback-cloog: maybe-all-stagefeedback-ppl -configure-gdb: maybe-all-intl -configure-gdb: maybe-configure-sim -configure-gdb: maybe-all-bfd -configure-gdb: maybe-all-libiconv -all-gdb: maybe-all-libiberty -all-gdb: maybe-all-libiconv -all-gdb: maybe-all-opcodes -all-gdb: maybe-all-readline -all-gdb: maybe-all-build-bison -all-gdb: maybe-all-build-byacc -all-gdb: maybe-all-sim -all-gdb: maybe-all-libdecnumber -configure-libgui: maybe-configure-tcl -configure-libgui: maybe-configure-tk -all-libgui: maybe-all-tcl -all-libgui: maybe-all-tk -all-libgui: maybe-all-itcl -configure-bfd: configure-libiberty - -configure-stage1-bfd: configure-stage1-libiberty -configure-stage2-bfd: configure-stage2-libiberty -configure-stage3-bfd: configure-stage3-libiberty -configure-stage4-bfd: configure-stage4-libiberty -configure-stageprofile-bfd: configure-stageprofile-libiberty -configure-stagefeedback-bfd: configure-stagefeedback-libiberty -configure-bfd: maybe-configure-intl - -configure-stage1-bfd: maybe-configure-stage1-intl -configure-stage2-bfd: maybe-configure-stage2-intl -configure-stage3-bfd: maybe-configure-stage3-intl -configure-stage4-bfd: maybe-configure-stage4-intl -configure-stageprofile-bfd: maybe-configure-stageprofile-intl -configure-stagefeedback-bfd: maybe-configure-stagefeedback-intl -all-bfd: maybe-all-libiberty - -all-stage1-bfd: maybe-all-stage1-libiberty -all-stage2-bfd: maybe-all-stage2-libiberty -all-stage3-bfd: maybe-all-stage3-libiberty -all-stage4-bfd: maybe-all-stage4-libiberty -all-stageprofile-bfd: maybe-all-stageprofile-libiberty -all-stagefeedback-bfd: maybe-all-stagefeedback-libiberty -all-bfd: maybe-all-intl - -all-stage1-bfd: maybe-all-stage1-intl -all-stage2-bfd: maybe-all-stage2-intl -all-stage3-bfd: maybe-all-stage3-intl -all-stage4-bfd: maybe-all-stage4-intl -all-stageprofile-bfd: maybe-all-stageprofile-intl -all-stagefeedback-bfd: maybe-all-stagefeedback-intl -configure-opcodes: configure-libiberty - -configure-stage1-opcodes: configure-stage1-libiberty -configure-stage2-opcodes: configure-stage2-libiberty -configure-stage3-opcodes: configure-stage3-libiberty -configure-stage4-opcodes: configure-stage4-libiberty -configure-stageprofile-opcodes: configure-stageprofile-libiberty -configure-stagefeedback-opcodes: configure-stagefeedback-libiberty -all-opcodes: maybe-all-libiberty - -all-stage1-opcodes: maybe-all-stage1-libiberty -all-stage2-opcodes: maybe-all-stage2-libiberty -all-stage3-opcodes: maybe-all-stage3-libiberty -all-stage4-opcodes: maybe-all-stage4-libiberty -all-stageprofile-opcodes: maybe-all-stageprofile-libiberty -all-stagefeedback-opcodes: maybe-all-stagefeedback-libiberty -configure-binutils: maybe-configure-intl - -configure-stage1-binutils: maybe-configure-stage1-intl -configure-stage2-binutils: maybe-configure-stage2-intl -configure-stage3-binutils: maybe-configure-stage3-intl -configure-stage4-binutils: maybe-configure-stage4-intl -configure-stageprofile-binutils: maybe-configure-stageprofile-intl -configure-stagefeedback-binutils: maybe-configure-stagefeedback-intl -all-binutils: maybe-all-libiberty - -all-stage1-binutils: maybe-all-stage1-libiberty -all-stage2-binutils: maybe-all-stage2-libiberty -all-stage3-binutils: maybe-all-stage3-libiberty -all-stage4-binutils: maybe-all-stage4-libiberty -all-stageprofile-binutils: maybe-all-stageprofile-libiberty -all-stagefeedback-binutils: maybe-all-stagefeedback-libiberty -all-binutils: maybe-all-opcodes - -all-stage1-binutils: maybe-all-stage1-opcodes -all-stage2-binutils: maybe-all-stage2-opcodes -all-stage3-binutils: maybe-all-stage3-opcodes -all-stage4-binutils: maybe-all-stage4-opcodes -all-stageprofile-binutils: maybe-all-stageprofile-opcodes -all-stagefeedback-binutils: maybe-all-stagefeedback-opcodes -all-binutils: maybe-all-bfd - -all-stage1-binutils: maybe-all-stage1-bfd -all-stage2-binutils: maybe-all-stage2-bfd -all-stage3-binutils: maybe-all-stage3-bfd -all-stage4-binutils: maybe-all-stage4-bfd -all-stageprofile-binutils: maybe-all-stageprofile-bfd -all-stagefeedback-binutils: maybe-all-stagefeedback-bfd -all-binutils: maybe-all-build-flex - -all-stage1-binutils: maybe-all-build-flex -all-stage2-binutils: maybe-all-build-flex -all-stage3-binutils: maybe-all-build-flex -all-stage4-binutils: maybe-all-build-flex -all-stageprofile-binutils: maybe-all-build-flex -all-stagefeedback-binutils: maybe-all-build-flex -all-binutils: maybe-all-build-bison - -all-stage1-binutils: maybe-all-build-bison -all-stage2-binutils: maybe-all-build-bison -all-stage3-binutils: maybe-all-build-bison -all-stage4-binutils: maybe-all-build-bison -all-stageprofile-binutils: maybe-all-build-bison -all-stagefeedback-binutils: maybe-all-build-bison -all-binutils: maybe-all-build-byacc - -all-stage1-binutils: maybe-all-build-byacc -all-stage2-binutils: maybe-all-build-byacc -all-stage3-binutils: maybe-all-build-byacc -all-stage4-binutils: maybe-all-build-byacc -all-stageprofile-binutils: maybe-all-build-byacc -all-stagefeedback-binutils: maybe-all-build-byacc -all-binutils: maybe-all-intl - -all-stage1-binutils: maybe-all-stage1-intl -all-stage2-binutils: maybe-all-stage2-intl -all-stage3-binutils: maybe-all-stage3-intl -all-stage4-binutils: maybe-all-stage4-intl -all-stageprofile-binutils: maybe-all-stageprofile-intl -all-stagefeedback-binutils: maybe-all-stagefeedback-intl -install-binutils: maybe-install-opcodes -install-opcodes: maybe-install-bfd -configure-gas: maybe-configure-intl - -configure-stage1-gas: maybe-configure-stage1-intl -configure-stage2-gas: maybe-configure-stage2-intl -configure-stage3-gas: maybe-configure-stage3-intl -configure-stage4-gas: maybe-configure-stage4-intl -configure-stageprofile-gas: maybe-configure-stageprofile-intl -configure-stagefeedback-gas: maybe-configure-stagefeedback-intl -all-gas: maybe-all-libiberty - -all-stage1-gas: maybe-all-stage1-libiberty -all-stage2-gas: maybe-all-stage2-libiberty -all-stage3-gas: maybe-all-stage3-libiberty -all-stage4-gas: maybe-all-stage4-libiberty -all-stageprofile-gas: maybe-all-stageprofile-libiberty -all-stagefeedback-gas: maybe-all-stagefeedback-libiberty -all-gas: maybe-all-opcodes - -all-stage1-gas: maybe-all-stage1-opcodes -all-stage2-gas: maybe-all-stage2-opcodes -all-stage3-gas: maybe-all-stage3-opcodes -all-stage4-gas: maybe-all-stage4-opcodes -all-stageprofile-gas: maybe-all-stageprofile-opcodes -all-stagefeedback-gas: maybe-all-stagefeedback-opcodes -all-gas: maybe-all-bfd - -all-stage1-gas: maybe-all-stage1-bfd -all-stage2-gas: maybe-all-stage2-bfd -all-stage3-gas: maybe-all-stage3-bfd -all-stage4-gas: maybe-all-stage4-bfd -all-stageprofile-gas: maybe-all-stageprofile-bfd -all-stagefeedback-gas: maybe-all-stagefeedback-bfd -all-gas: maybe-all-intl - -all-stage1-gas: maybe-all-stage1-intl -all-stage2-gas: maybe-all-stage2-intl -all-stage3-gas: maybe-all-stage3-intl -all-stage4-gas: maybe-all-stage4-intl -all-stageprofile-gas: maybe-all-stageprofile-intl -all-stagefeedback-gas: maybe-all-stagefeedback-intl -configure-gprof: maybe-configure-intl -all-gprof: maybe-all-libiberty -all-gprof: maybe-all-bfd -all-gprof: maybe-all-opcodes -all-gprof: maybe-all-intl -configure-ld: maybe-configure-intl - -configure-stage1-ld: maybe-configure-stage1-intl -configure-stage2-ld: maybe-configure-stage2-intl -configure-stage3-ld: maybe-configure-stage3-intl -configure-stage4-ld: maybe-configure-stage4-intl -configure-stageprofile-ld: maybe-configure-stageprofile-intl -configure-stagefeedback-ld: maybe-configure-stagefeedback-intl -all-ld: maybe-all-libiberty - -all-stage1-ld: maybe-all-stage1-libiberty -all-stage2-ld: maybe-all-stage2-libiberty -all-stage3-ld: maybe-all-stage3-libiberty -all-stage4-ld: maybe-all-stage4-libiberty -all-stageprofile-ld: maybe-all-stageprofile-libiberty -all-stagefeedback-ld: maybe-all-stagefeedback-libiberty -all-ld: maybe-all-bfd - -all-stage1-ld: maybe-all-stage1-bfd -all-stage2-ld: maybe-all-stage2-bfd -all-stage3-ld: maybe-all-stage3-bfd -all-stage4-ld: maybe-all-stage4-bfd -all-stageprofile-ld: maybe-all-stageprofile-bfd -all-stagefeedback-ld: maybe-all-stagefeedback-bfd -all-ld: maybe-all-opcodes - -all-stage1-ld: maybe-all-stage1-opcodes -all-stage2-ld: maybe-all-stage2-opcodes -all-stage3-ld: maybe-all-stage3-opcodes -all-stage4-ld: maybe-all-stage4-opcodes -all-stageprofile-ld: maybe-all-stageprofile-opcodes -all-stagefeedback-ld: maybe-all-stagefeedback-opcodes -all-ld: maybe-all-build-bison - -all-stage1-ld: maybe-all-build-bison -all-stage2-ld: maybe-all-build-bison -all-stage3-ld: maybe-all-build-bison -all-stage4-ld: maybe-all-build-bison -all-stageprofile-ld: maybe-all-build-bison -all-stagefeedback-ld: maybe-all-build-bison -all-ld: maybe-all-build-byacc - -all-stage1-ld: maybe-all-build-byacc -all-stage2-ld: maybe-all-build-byacc -all-stage3-ld: maybe-all-build-byacc -all-stage4-ld: maybe-all-build-byacc -all-stageprofile-ld: maybe-all-build-byacc -all-stagefeedback-ld: maybe-all-build-byacc -all-ld: maybe-all-build-flex - -all-stage1-ld: maybe-all-build-flex -all-stage2-ld: maybe-all-build-flex -all-stage3-ld: maybe-all-build-flex -all-stage4-ld: maybe-all-build-flex -all-stageprofile-ld: maybe-all-build-flex -all-stagefeedback-ld: maybe-all-build-flex -all-ld: maybe-all-intl - -all-stage1-ld: maybe-all-stage1-intl -all-stage2-ld: maybe-all-stage2-intl -all-stage3-ld: maybe-all-stage3-intl -all-stage4-ld: maybe-all-stage4-intl -all-stageprofile-ld: maybe-all-stageprofile-intl -all-stagefeedback-ld: maybe-all-stagefeedback-intl -configure-gold: maybe-configure-intl - -configure-stage1-gold: maybe-configure-stage1-intl -configure-stage2-gold: maybe-configure-stage2-intl -configure-stage3-gold: maybe-configure-stage3-intl -configure-stage4-gold: maybe-configure-stage4-intl -configure-stageprofile-gold: maybe-configure-stageprofile-intl -configure-stagefeedback-gold: maybe-configure-stagefeedback-intl -all-gold: maybe-all-libiberty - -all-stage1-gold: maybe-all-stage1-libiberty -all-stage2-gold: maybe-all-stage2-libiberty -all-stage3-gold: maybe-all-stage3-libiberty -all-stage4-gold: maybe-all-stage4-libiberty -all-stageprofile-gold: maybe-all-stageprofile-libiberty -all-stagefeedback-gold: maybe-all-stagefeedback-libiberty -all-gold: maybe-all-intl - -all-stage1-gold: maybe-all-stage1-intl -all-stage2-gold: maybe-all-stage2-intl -all-stage3-gold: maybe-all-stage3-intl -all-stage4-gold: maybe-all-stage4-intl -all-stageprofile-gold: maybe-all-stageprofile-intl -all-stagefeedback-gold: maybe-all-stagefeedback-intl -all-gold: maybe-all-bfd - -all-stage1-gold: maybe-all-stage1-bfd -all-stage2-gold: maybe-all-stage2-bfd -all-stage3-gold: maybe-all-stage3-bfd -all-stage4-gold: maybe-all-stage4-bfd -all-stageprofile-gold: maybe-all-stageprofile-bfd -all-stagefeedback-gold: maybe-all-stagefeedback-bfd -all-gold: maybe-all-build-bison - -all-stage1-gold: maybe-all-build-bison -all-stage2-gold: maybe-all-build-bison -all-stage3-gold: maybe-all-build-bison -all-stage4-gold: maybe-all-build-bison -all-stageprofile-gold: maybe-all-build-bison -all-stagefeedback-gold: maybe-all-build-bison -all-gold: maybe-all-build-byacc - -all-stage1-gold: maybe-all-build-byacc -all-stage2-gold: maybe-all-build-byacc -all-stage3-gold: maybe-all-build-byacc -all-stage4-gold: maybe-all-build-byacc -all-stageprofile-gold: maybe-all-build-byacc -all-stagefeedback-gold: maybe-all-build-byacc -check-gold: maybe-all-binutils - -check-stage1-gold: maybe-all-stage1-binutils -check-stage2-gold: maybe-all-stage2-binutils -check-stage3-gold: maybe-all-stage3-binutils -check-stage4-gold: maybe-all-stage4-binutils -check-stageprofile-gold: maybe-all-stageprofile-binutils -check-stagefeedback-gold: maybe-all-stagefeedback-binutils -configure-opcodes: maybe-configure-intl - -configure-stage1-opcodes: maybe-configure-stage1-intl -configure-stage2-opcodes: maybe-configure-stage2-intl -configure-stage3-opcodes: maybe-configure-stage3-intl -configure-stage4-opcodes: maybe-configure-stage4-intl -configure-stageprofile-opcodes: maybe-configure-stageprofile-intl -configure-stagefeedback-opcodes: maybe-configure-stagefeedback-intl -all-opcodes: maybe-all-bfd - -all-stage1-opcodes: maybe-all-stage1-bfd -all-stage2-opcodes: maybe-all-stage2-bfd -all-stage3-opcodes: maybe-all-stage3-bfd -all-stage4-opcodes: maybe-all-stage4-bfd -all-stageprofile-opcodes: maybe-all-stageprofile-bfd -all-stagefeedback-opcodes: maybe-all-stagefeedback-bfd -all-opcodes: maybe-all-libiberty - -all-stage1-opcodes: maybe-all-stage1-libiberty -all-stage2-opcodes: maybe-all-stage2-libiberty -all-stage3-opcodes: maybe-all-stage3-libiberty -all-stage4-opcodes: maybe-all-stage4-libiberty -all-stageprofile-opcodes: maybe-all-stageprofile-libiberty -all-stagefeedback-opcodes: maybe-all-stagefeedback-libiberty -all-opcodes: maybe-all-intl - -all-stage1-opcodes: maybe-all-stage1-intl -all-stage2-opcodes: maybe-all-stage2-intl -all-stage3-opcodes: maybe-all-stage3-intl -all-stage4-opcodes: maybe-all-stage4-intl -all-stageprofile-opcodes: maybe-all-stageprofile-intl -all-stagefeedback-opcodes: maybe-all-stagefeedback-intl -all-dejagnu: maybe-all-tcl -all-dejagnu: maybe-all-expect -all-dejagnu: maybe-all-tk -configure-expect: maybe-configure-tcl -configure-expect: maybe-configure-tk -all-expect: maybe-all-tcl -all-expect: maybe-all-tk -configure-itcl: maybe-configure-tcl -configure-itcl: maybe-configure-tk -all-itcl: maybe-all-tcl -all-itcl: maybe-all-tk -install-itcl: maybe-install-tcl -configure-tk: maybe-configure-tcl -all-tk: maybe-all-tcl -all-sid: maybe-all-libiberty -all-sid: maybe-all-bfd -all-sid: maybe-all-opcodes -all-sid: maybe-all-tcl -all-sid: maybe-all-tk -install-sid: maybe-install-tcl -install-sid: maybe-install-tk -configure-sim: maybe-configure-intl -all-sim: maybe-all-intl -all-sim: maybe-all-libiberty -all-sim: maybe-all-bfd -all-sim: maybe-all-opcodes -all-sim: maybe-all-readline -all-sim: maybe-configure-gdb -all-fastjar: maybe-all-zlib -all-fastjar: maybe-all-build-texinfo -all-fastjar: maybe-all-libiberty -all-autoconf: maybe-all-m4 -all-autoconf: maybe-all-build-texinfo -all-automake: maybe-all-m4 -all-automake: maybe-all-build-texinfo -all-automake: maybe-all-autoconf -all-bison: maybe-all-intl -all-bison: maybe-all-build-texinfo -all-diff: maybe-all-intl -all-diff: maybe-all-build-texinfo -all-fileutils: maybe-all-intl -all-fileutils: maybe-all-build-texinfo -all-flex: maybe-all-build-bison -all-flex: maybe-all-build-byacc -all-flex: maybe-all-intl -all-flex: maybe-all-m4 -all-flex: maybe-all-build-texinfo -all-gzip: maybe-all-intl -all-gzip: maybe-all-zlib -all-gzip: maybe-all-build-texinfo -all-hello: maybe-all-intl -all-hello: maybe-all-build-texinfo -all-m4: maybe-all-intl -all-m4: maybe-all-build-texinfo -all-make: maybe-all-intl -all-make: maybe-all-build-texinfo -all-patch: maybe-all-build-texinfo -all-make: maybe-all-build-texinfo -all-prms: maybe-all-libiberty -all-recode: maybe-all-build-texinfo -all-sed: maybe-all-build-texinfo -all-send-pr: maybe-all-prms -all-tar: maybe-all-build-texinfo -all-uudecode: maybe-all-build-texinfo -configure-target-boehm-gc: maybe-configure-target-qthreads -configure-target-boehm-gc: maybe-all-target-libstdc++-v3 -configure-target-fastjar: maybe-configure-target-zlib -all-target-fastjar: maybe-all-target-zlib -all-target-fastjar: maybe-all-target-libiberty -configure-target-libjava: maybe-configure-target-zlib -configure-target-libjava: maybe-configure-target-boehm-gc -configure-target-libjava: maybe-configure-target-qthreads -configure-target-libjava: maybe-configure-target-libffi -all-target-libjava: maybe-all-fastjar -all-target-libjava: maybe-all-target-zlib -all-target-libjava: maybe-all-target-boehm-gc -all-target-libjava: maybe-all-target-qthreads -all-target-libjava: maybe-all-target-libffi -configure-target-libobjc: maybe-configure-target-boehm-gc -all-target-libobjc: maybe-all-target-libiberty -all-target-libobjc: maybe-all-target-boehm-gc -all-target-libstdc++-v3: maybe-all-target-libiberty -configure-target-libstdc++-v3: maybe-configure-target-libgomp -all-target-libgloss: maybe-all-target-newlib -all-target-winsup: maybe-all-target-libiberty -all-target-winsup: maybe-all-target-libtermcap -configure-target-libiberty: maybe-all-binutils -configure-target-libiberty: maybe-all-ld -configure-target-newlib: maybe-all-binutils -configure-target-newlib: maybe-all-ld - - -# Dependencies for target modules on other target modules are -# described by lang_env_dependencies; the defaults apply to anything -# not mentioned there. - - -@if gcc-bootstrap -configure-stage1-target-libstdc++-v3: maybe-all-stage1-target-libgcc -configure-stage2-target-libstdc++-v3: maybe-all-stage2-target-libgcc -configure-stage3-target-libstdc++-v3: maybe-all-stage3-target-libgcc -configure-stage4-target-libstdc++-v3: maybe-all-stage4-target-libgcc -configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-target-libgcc -configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-target-libgcc -@endif gcc-bootstrap - -@if gcc-no-bootstrap -configure-target-libstdc++-v3: maybe-all-target-libgcc -configure-target-libmudflap: maybe-all-target-libgcc -configure-target-libssp: maybe-all-target-libgcc -configure-target-newlib: maybe-all-target-libgcc -configure-target-libgfortran: maybe-all-target-libgcc -configure-target-libobjc: maybe-all-target-libgcc -configure-target-libtermcap: maybe-all-target-libgcc -configure-target-winsup: maybe-all-target-libgcc -configure-target-libgloss: maybe-all-target-libgcc -configure-target-libiberty: maybe-all-target-libgcc -configure-target-gperf: maybe-all-target-libgcc -configure-target-examples: maybe-all-target-libgcc -configure-target-libffi: maybe-all-target-libgcc -configure-target-libjava: maybe-all-target-libgcc -configure-target-zlib: maybe-all-target-libgcc -configure-target-boehm-gc: maybe-all-target-libgcc -configure-target-qthreads: maybe-all-target-libgcc -configure-target-rda: maybe-all-target-libgcc -configure-target-libada: maybe-all-target-libgcc -configure-target-libgomp: maybe-all-target-libgcc -@endif gcc-no-bootstrap - - -configure-target-libstdc++-v3: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libmudflap: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libssp: maybe-all-target-newlib maybe-all-target-libgloss - - - -configure-target-libgfortran: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libobjc: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss - - - -configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss -configure-target-gperf: maybe-all-target-libstdc++-v3 - -configure-target-examples: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libffi: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libjava: maybe-all-target-newlib maybe-all-target-libgloss -configure-target-libjava: maybe-all-target-libstdc++-v3 - -configure-target-zlib: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-boehm-gc: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-qthreads: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-rda: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss - -configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss - - -CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@ -GDB_TK = @GDB_TK@ -INSTALL_GDB_TK = @INSTALL_GDB_TK@ -configure-gdb: $(CONFIGURE_GDB_TK) -all-gdb: $(gdbnlmrequirements) $(GDB_TK) -install-gdb: $(INSTALL_GDB_TK) - -# Serialization dependencies. Host configures don't work well in parallel to -# each other, due to contention over config.cache. Target configures and -# build configures are similar. -@serialization_dependencies@ - -# -------------------------------- -# Regenerating top level configury -# -------------------------------- - -# Rebuilding Makefile.in, using autogen. -AUTOGEN = autogen -$(srcdir)/Makefile.in: @MAINT@ $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def - cd $(srcdir) && $(AUTOGEN) Makefile.def - -# Rebuilding Makefile. -Makefile: $(srcdir)/Makefile.in config.status - CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -config.status: configure - CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck - -# Rebuilding configure. -AUTOCONF = autoconf -$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \ - $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 - cd $(srcdir) && $(AUTOCONF) - -# ------------------------------ -# Special directives to GNU Make -# ------------------------------ - -# Don't pass command-line variables to submakes. -.NOEXPORT: -MAKEOVERRIDES= - -# end of Makefile.in diff --git a/contrib/gdb-7/bfd/Makefile.in b/contrib/gdb-7/bfd/Makefile.in deleted file mode 100644 index 721069f05e..0000000000 --- a/contrib/gdb-7/bfd/Makefile.in +++ /dev/null @@ -1,1987 +0,0 @@ -# Makefile.in generated by automake 1.11 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -@INSTALL_LIBBFD_FALSE@am__append_1 = -rpath $(rpath_bfdlibdir) -subdir = . -DIST_COMMON = README ChangeLog $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(srcdir)/config.in \ - $(srcdir)/../mkinstalldirs $(srcdir)/bfd-in2.h \ - $(top_srcdir)/po/Make-in $(srcdir)/../depcomp \ - $(am__bfdinclude_HEADERS_DIST) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ - $(top_srcdir)/../config/gettext-sister.m4 \ - $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/nls.m4 \ - $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../config/plugins.m4 \ - $(top_srcdir)/../config/po.m4 \ - $(top_srcdir)/../config/progtest.m4 \ - $(top_srcdir)/../config/stdint.m4 $(top_srcdir)/../libtool.m4 \ - $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ - $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ - $(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \ - $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = bfd-in3.h po/Makefile.in -CONFIG_CLEAN_VPATH_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -libbfd_a_AR = $(AR) $(ARFLAGS) -libbfd_a_LIBADD = -am_libbfd_a_OBJECTS = -libbfd_a_OBJECTS = $(am_libbfd_a_OBJECTS) -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(bfdlibdir)" \ - "$(DESTDIR)$(bfdincludedir)" -LTLIBRARIES = $(bfdlib_LTLIBRARIES) $(noinst_LTLIBRARIES) -am__DEPENDENCIES_1 = -am__objects_1 = archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \ - cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo \ - opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo \ - linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo \ - stab-syms.lo merge.lo dwarf2.lo simple.lo compress.lo \ - verilog.lo -am_libbfd_la_OBJECTS = $(am__objects_1) -libbfd_la_OBJECTS = $(am_libbfd_la_OBJECTS) -libbfd_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libbfd_la_LDFLAGS) $(LDFLAGS) -o $@ -@INSTALL_LIBBFD_FALSE@am_libbfd_la_rpath = -@INSTALL_LIBBFD_TRUE@am_libbfd_la_rpath = -rpath $(bfdlibdir) -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/../depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libbfd_a_SOURCES) $(libbfd_la_SOURCES) \ - $(EXTRA_libbfd_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__bfdinclude_HEADERS_DIST = bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/bfdlink.h -HEADERS = $(bfdinclude_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BFD_HOSTPTR_T = @BFD_HOSTPTR_T@ -BFD_HOST_64BIT_LONG = @BFD_HOST_64BIT_LONG@ -BFD_HOST_64BIT_LONG_LONG = @BFD_HOST_64BIT_LONG_LONG@ -BFD_HOST_64_BIT = @BFD_HOST_64_BIT@ -BFD_HOST_64_BIT_DEFINED = @BFD_HOST_64_BIT_DEFINED@ -BFD_HOST_U_64_BIT = @BFD_HOST_U_64_BIT@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_FOR_BUILD = @CC_FOR_BUILD@ -CFLAGS = @CFLAGS@ -COREFILE = @COREFILE@ -COREFLAG = @COREFLAG@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEBUGDIR = @DEBUGDIR@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ -FGREP = @FGREP@ -GENCAT = @GENCAT@ -GMSGFMT = @GMSGFMT@ -GREP = @GREP@ -HDEFINES = @HDEFINES@ -INCINTL = @INCINTL@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBINTL = @LIBINTL@ -LIBINTL_DEP = @LIBINTL_DEP@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NO_WERROR = @NO_WERROR@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKGVERSION = @PKGVERSION@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@ -REPORT_BUGS_TO = @REPORT_BUGS_TO@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHARED_LDFLAGS = @SHARED_LDFLAGS@ -SHARED_LIBADD = @SHARED_LIBADD@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TDEFINES = @TDEFINES@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -WARN_CFLAGS = @WARN_CFLAGS@ -XGETTEXT = @XGETTEXT@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -all_backends = @all_backends@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bfd64_libs = @bfd64_libs@ -bfd_backends = @bfd_backends@ -bfd_default_target_size = @bfd_default_target_size@ -bfd_file_ptr = @bfd_file_ptr@ -bfd_machines = @bfd_machines@ -bfd_ufile_ptr = @bfd_ufile_ptr@ -@INSTALL_LIBBFD_FALSE@bfdincludedir = -@INSTALL_LIBBFD_TRUE@bfdincludedir = @bfdincludedir@ -# Empty these so that the respective installation directories will not be created. -@INSTALL_LIBBFD_FALSE@bfdlibdir = -@INSTALL_LIBBFD_TRUE@bfdlibdir = @bfdlibdir@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_noncanonical = @host_noncanonical@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -supports_plugins = @supports_plugins@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_noncanonical = @target_noncanonical@ -target_os = @target_os@ -target_vendor = @target_vendor@ -tdefaults = @tdefaults@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -wordsize = @wordsize@ -AUTOMAKE_OPTIONS = 1.11 no-dist foreign -ACLOCAL_AMFLAGS = -I . -I .. -I ../config - -# Uncomment the following line when doing a release. -# RELEASE=y -INCDIR = $(srcdir)/../include -CSEARCH = -I. -I$(srcdir) -I$(INCDIR) -SUBDIRS = doc po -bfddocdir = doc -libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \ - @SHARED_LDFLAGS@ $(am__empty) -@INSTALL_LIBBFD_TRUE@bfdlib_LTLIBRARIES = libbfd.la -@INSTALL_LIBBFD_TRUE@bfdinclude_HEADERS = $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/bfdlink.h -@INSTALL_LIBBFD_FALSE@rpath_bfdlibdir = @bfdlibdir@ -@INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libbfd.la -AM_CFLAGS = $(WARN_CFLAGS) -AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -@PLUGINS_TRUE@LIBDL = -ldl - -# bfd.h goes here, for now -BFD_H = bfd.h - -# Jim Kingdon notes: -# Writing S-records should be included in all (or at least most) -# *-*-coff, *-*-aout, etc., configurations, because people will want to -# be able to use objcopy to create S-records. (S-records are not useful -# for the debugger, so if you are downloading things as S-records you -# need two copies of the executable, one to download and one for the -# debugger). -BFD32_LIBS = \ - archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \ - cache.lo coffgen.lo corefile.lo \ - format.lo init.lo libbfd.lo opncls.lo reloc.lo \ - section.lo syms.lo targets.lo hash.lo linker.lo \ - srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \ - merge.lo dwarf2.lo simple.lo compress.lo verilog.lo - -BFD64_LIBS = archive64.lo -BFD32_LIBS_CFILES = \ - archive.c archures.c bfd.c bfdio.c bfdwin.c \ - cache.c coffgen.c corefile.c \ - format.c init.c libbfd.c opncls.c reloc.c \ - section.c syms.c targets.c hash.c linker.c \ - srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \ - merge.c dwarf2.c simple.c compress.c verilog.c - -BFD64_LIBS_CFILES = archive64.c - -# This list is alphabetized to make it easier to keep in sync -# with the decls and initializer in archures.c. -ALL_MACHINES = \ - cpu-alpha.lo \ - cpu-arc.lo \ - cpu-arm.lo \ - cpu-avr.lo \ - cpu-bfin.lo \ - cpu-cr16.lo \ - cpu-cr16c.lo \ - cpu-cris.lo \ - cpu-crx.lo \ - cpu-d10v.lo \ - cpu-d30v.lo \ - cpu-dlx.lo \ - cpu-fr30.lo \ - cpu-frv.lo \ - cpu-h8300.lo \ - cpu-h8500.lo \ - cpu-hppa.lo \ - cpu-i370.lo \ - cpu-i386.lo \ - cpu-l1om.lo \ - cpu-i860.lo \ - cpu-i960.lo \ - cpu-ia64.lo \ - cpu-ip2k.lo \ - cpu-iq2000.lo \ - cpu-lm32.lo \ - cpu-m10200.lo \ - cpu-m10300.lo \ - cpu-m32c.lo \ - cpu-m32r.lo \ - cpu-m68hc11.lo \ - cpu-m68hc12.lo \ - cpu-m68k.lo \ - cpu-m88k.lo \ - cpu-maxq.lo \ - cpu-mcore.lo \ - cpu-mep.lo \ - cpu-microblaze.lo \ - cpu-mips.lo \ - cpu-mmix.lo \ - cpu-moxie.lo \ - cpu-msp430.lo \ - cpu-mt.lo \ - cpu-ns32k.lo \ - cpu-openrisc.lo \ - cpu-or32.lo \ - cpu-pdp11.lo \ - cpu-pj.lo \ - cpu-plugin.lo \ - cpu-powerpc.lo \ - cpu-rs6000.lo \ - cpu-s390.lo \ - cpu-score.lo \ - cpu-sh.lo \ - cpu-sparc.lo \ - cpu-spu.lo \ - cpu-tic30.lo \ - cpu-tic4x.lo \ - cpu-tic54x.lo \ - cpu-tic80.lo \ - cpu-v850.lo \ - cpu-vax.lo \ - cpu-w65.lo \ - cpu-we32k.lo \ - cpu-xc16x.lo \ - cpu-xstormy16.lo \ - cpu-xtensa.lo \ - cpu-z80.lo \ - cpu-z8k.lo - -ALL_MACHINES_CFILES = \ - cpu-alpha.c \ - cpu-arc.c \ - cpu-arm.c \ - cpu-avr.c \ - cpu-bfin.c \ - cpu-cr16.c \ - cpu-cr16c.c \ - cpu-cris.c \ - cpu-crx.c \ - cpu-d10v.c \ - cpu-d30v.c \ - cpu-dlx.c \ - cpu-fr30.c \ - cpu-frv.c \ - cpu-h8300.c \ - cpu-h8500.c \ - cpu-hppa.c \ - cpu-i370.c \ - cpu-i386.c \ - cpu-l1om.c \ - cpu-i860.c \ - cpu-i960.c \ - cpu-ia64.c \ - cpu-ip2k.c \ - cpu-iq2000.c \ - cpu-lm32.c \ - cpu-m10200.c \ - cpu-m10300.c \ - cpu-m32c.c \ - cpu-m32r.c \ - cpu-m68hc11.c \ - cpu-m68hc12.c \ - cpu-m68k.c \ - cpu-m88k.c \ - cpu-maxq.c \ - cpu-mcore.c \ - cpu-mep.c \ - cpu-microblaze.c \ - cpu-mips.c \ - cpu-mmix.c \ - cpu-moxie.c \ - cpu-msp430.c \ - cpu-mt.c \ - cpu-ns32k.c \ - cpu-openrisc.c \ - cpu-or32.c \ - cpu-pdp11.c \ - cpu-pj.c \ - cpu-plugin.c \ - cpu-powerpc.c \ - cpu-rs6000.c \ - cpu-s390.c \ - cpu-score.c \ - cpu-sh.c \ - cpu-sparc.c \ - cpu-spu.c \ - cpu-tic30.c \ - cpu-tic4x.c \ - cpu-tic54x.c \ - cpu-tic80.c \ - cpu-v850.c \ - cpu-vax.c \ - cpu-w65.c \ - cpu-we32k.c \ - cpu-xc16x.c \ - cpu-xstormy16.c \ - cpu-xtensa.c \ - cpu-z80.c \ - cpu-z8k.c - - -# The .o files needed by all of the 32 bit vectors that are configured into -# target_vector in targets.c if configured with --enable-targets=all. -BFD32_BACKENDS = \ - aout-adobe.lo \ - aout-arm.lo \ - aout-cris.lo \ - aout-ns32k.lo \ - aout-sparcle.lo \ - aout-tic30.lo \ - aout0.lo \ - aout32.lo \ - armnetbsd.lo \ - bout.lo \ - cf-i386lynx.lo \ - cf-sparclynx.lo \ - coff-apollo.lo \ - coff-arm.lo \ - coff-aux.lo \ - coff-go32.lo \ - coff-h8300.lo \ - coff-h8500.lo \ - coff-i386.lo \ - coff-i860.lo \ - coff-i960.lo \ - coff-m68k.lo \ - coff-m88k.lo \ - coff-maxq.lo \ - coff-mips.lo \ - coff-or32.lo \ - coff-rs6000.lo \ - coff-sh.lo \ - coff-sparc.lo \ - coff-stgo32.lo \ - coff-svm68k.lo \ - coff-tic30.lo \ - coff-tic4x.lo \ - coff-tic54x.lo \ - coff-tic80.lo \ - coff-u68k.lo \ - coff-w65.lo \ - coff-we32k.lo \ - coff-z80.lo \ - coff-z8k.lo \ - cofflink.lo \ - dwarf1.lo \ - ecoff.lo \ - ecofflink.lo \ - elf-attrs.lo \ - elf-eh-frame.lo \ - elf-ifunc.lo \ - elf-m10200.lo \ - elf-m10300.lo \ - elf-strtab.lo \ - elf-vxworks.lo \ - elf.lo \ - elf32-am33lin.lo \ - elf32-arc.lo \ - elf32-arm.lo \ - elf32-avr.lo \ - elf32-bfin.lo \ - elf32-cr16.lo \ - elf32-cr16c.lo \ - elf32-cris.lo \ - elf32-crx.lo \ - elf32-d10v.lo \ - elf32-d30v.lo \ - elf32-dlx.lo \ - elf32-fr30.lo \ - elf32-frv.lo \ - elf32-gen.lo \ - elf32-h8300.lo \ - elf32-hppa.lo \ - elf32-i370.lo \ - elf32-i386.lo \ - elf32-i860.lo \ - elf32-i960.lo \ - elf32-ip2k.lo \ - elf32-iq2000.lo \ - elf32-lm32.lo \ - elf32-m32c.lo \ - elf32-m32r.lo \ - elf32-m68hc11.lo \ - elf32-m68hc12.lo \ - elf32-m68hc1x.lo \ - elf32-m68k.lo \ - elf32-m88k.lo \ - elf32-mcore.lo \ - elf32-mep.lo \ - elf32-microblaze.lo \ - elf32-mips.lo \ - elf32-moxie.lo \ - elf32-msp430.lo \ - elf32-mt.lo \ - elf32-openrisc.lo \ - elf32-or32.lo \ - elf32-pj.lo \ - elf32-ppc.lo \ - elf32-s390.lo \ - elf32-sh-symbian.lo \ - elf32-sh.lo \ - elf32-sh64-com.lo \ - elf32-sh64.lo \ - elf32-sparc.lo \ - elf32-spu.lo \ - elf32-v850.lo \ - elf32-vax.lo \ - elf32-xc16x.lo \ - elf32-xstormy16.lo \ - elf32-xtensa.lo \ - elf32.lo \ - elflink.lo \ - elfxx-mips.lo \ - elfxx-sparc.lo \ - epoc-pe-arm.lo \ - epoc-pei-arm.lo \ - hp300bsd.lo \ - hp300hpux.lo \ - i386aout.lo \ - i386bsd.lo \ - i386dynix.lo \ - i386freebsd.lo \ - i386linux.lo \ - i386lynx.lo \ - i386mach3.lo \ - i386msdos.lo \ - i386netbsd.lo \ - i386os9k.lo \ - ieee.lo \ - m68k4knetbsd.lo \ - m68klinux.lo \ - m68knetbsd.lo \ - m88kmach3.lo \ - m88kopenbsd.lo \ - mach-o.lo \ - mach-o-i386.lo \ - mipsbsd.lo \ - newsos3.lo \ - nlm.lo \ - nlm32-i386.lo \ - nlm32-ppc.lo \ - nlm32-sparc.lo \ - nlm32.lo \ - ns32knetbsd.lo \ - oasys.lo \ - pc532-mach.lo \ - pdp11.lo \ - pe-arm-wince.lo \ - pe-arm.lo \ - pe-i386.lo \ - pe-mcore.lo \ - pe-mips.lo \ - pe-ppc.lo \ - pe-sh.lo \ - pef.lo \ - pei-arm-wince.lo \ - pei-arm.lo \ - pei-i386.lo \ - pei-mcore.lo \ - pei-mips.lo \ - pei-ppc.lo \ - pei-sh.lo \ - peigen.lo \ - plugin.lo \ - ppcboot.lo \ - reloc16.lo \ - riscix.lo \ - som.lo \ - sparclinux.lo \ - sparclynx.lo \ - sparcnetbsd.lo \ - sunos.lo \ - vax1knetbsd.lo \ - vaxbsd.lo \ - vaxnetbsd.lo \ - versados.lo \ - vms-gsd.lo \ - vms-hdr.lo \ - vms-misc.lo \ - vms-tir.lo \ - vms.lo \ - xcofflink.lo \ - xsym.lo \ - xtensa-isa.lo \ - xtensa-modules.lo - -BFD32_BACKENDS_CFILES = \ - aout-adobe.c \ - aout-arm.c \ - aout-cris.c \ - aout-ns32k.c \ - aout-sparcle.c \ - aout-tic30.c \ - aout0.c \ - aout32.c \ - armnetbsd.c \ - bout.c \ - cf-i386lynx.c \ - cf-sparclynx.c \ - coff-apollo.c \ - coff-arm.c \ - coff-aux.c \ - coff-go32.c \ - coff-h8300.c \ - coff-h8500.c \ - coff-i386.c \ - coff-i860.c \ - coff-i960.c \ - coff-m68k.c \ - coff-m88k.c \ - coff-maxq.c \ - coff-mips.c \ - coff-or32.c \ - coff-rs6000.c \ - coff-sh.c \ - coff-sparc.c \ - coff-stgo32.c \ - coff-svm68k.c \ - coff-tic30.c \ - coff-tic4x.c \ - coff-tic54x.c \ - coff-tic80.c \ - coff-u68k.c \ - coff-w65.c \ - coff-we32k.c \ - coff-z80.c \ - coff-z8k.c \ - cofflink.c \ - dwarf1.c \ - ecoff.c \ - ecofflink.c \ - elf-attrs.c \ - elf-eh-frame.c \ - elf-ifunc.c \ - elf-m10200.c \ - elf-m10300.c \ - elf-strtab.c \ - elf-vxworks.c \ - elf.c \ - elf32-am33lin.c \ - elf32-arc.c \ - elf32-arm.c \ - elf32-avr.c \ - elf32-bfin.c \ - elf32-cr16.c \ - elf32-cr16c.c \ - elf32-cris.c \ - elf32-crx.c \ - elf32-d10v.c \ - elf32-d30v.c \ - elf32-dlx.c \ - elf32-fr30.c \ - elf32-frv.c \ - elf32-gen.c \ - elf32-h8300.c \ - elf32-hppa.c \ - elf32-i370.c \ - elf32-i386.c \ - elf32-i860.c \ - elf32-i960.c \ - elf32-ip2k.c \ - elf32-iq2000.c \ - elf32-lm32.c \ - elf32-m32c.c \ - elf32-m32r.c \ - elf32-m68hc11.c \ - elf32-m68hc12.c \ - elf32-m68hc1x.c \ - elf32-m68k.c \ - elf32-m88k.c \ - elf32-mcore.c \ - elf32-mep.c \ - elf32-microblaze.c \ - elf32-mips.c \ - elf32-moxie.c \ - elf32-msp430.c \ - elf32-mt.c \ - elf32-openrisc.c \ - elf32-or32.c \ - elf32-pj.c \ - elf32-ppc.c \ - elf32-s390.c \ - elf32-sh-symbian.c \ - elf32-sh.c \ - elf32-sh64-com.c \ - elf32-sh64.c \ - elf32-sparc.c \ - elf32-spu.c \ - elf32-v850.c \ - elf32-vax.c \ - elf32-xc16x.c \ - elf32-xstormy16.c \ - elf32-xtensa.c \ - elf32.c \ - elflink.c \ - elfxx-mips.c \ - elfxx-sparc.c \ - epoc-pe-arm.c \ - epoc-pei-arm.c \ - hp300bsd.c \ - hp300hpux.c \ - i386aout.c \ - i386bsd.c \ - i386dynix.c \ - i386freebsd.c \ - i386linux.c \ - i386lynx.c \ - i386mach3.c \ - i386msdos.c \ - i386netbsd.c \ - i386os9k.c \ - ieee.c \ - m68k4knetbsd.c \ - m68klinux.c \ - m68knetbsd.c \ - m88kmach3.c \ - m88kopenbsd.c \ - mach-o.c \ - mach-o-i386.c \ - mipsbsd.c \ - newsos3.c \ - nlm.c \ - nlm32-i386.c \ - nlm32-ppc.c \ - nlm32-sparc.c \ - nlm32.c \ - ns32knetbsd.c \ - oasys.c \ - pc532-mach.c \ - pdp11.c \ - pe-arm-wince.c \ - pe-arm.c \ - pe-i386.c \ - pe-mcore.c \ - pe-mips.c \ - pe-ppc.c \ - pe-sh.c \ - pef.c \ - pei-arm-wince.c \ - pei-arm.c \ - pei-i386.c \ - pei-mcore.c \ - pei-mips.c \ - pei-ppc.c \ - pei-sh.c \ - plugin.c \ - ppcboot.c \ - reloc16.c \ - riscix.c \ - som.c \ - sparclinux.c \ - sparclynx.c \ - sparcnetbsd.c \ - sunos.c \ - vax1knetbsd.c \ - vaxbsd.c \ - vaxnetbsd.c \ - versados.c \ - vms-gsd.c \ - vms-hdr.c \ - vms-misc.c \ - vms-tir.c \ - vms.c \ - xcofflink.c \ - xsym.c \ - xtensa-isa.c \ - xtensa-modules.c - - -# The .o files needed by all of the 64 bit vectors that are configured into -# target_vector in targets.c if configured with --enable-targets=all -# and --enable-64-bit-bfd. -# elf32-ia64.c requires a 64-bit bfd_vma, and hence can not be put in -# BFD32_BACKENDS. -BFD64_BACKENDS = \ - aix5ppc-core.lo \ - aout64.lo \ - coff-alpha.lo \ - coff-x86_64.lo \ - coff64-rs6000.lo \ - demo64.lo \ - elf32-ia64.lo \ - elf32-score.lo \ - elf32-score7.lo \ - elf64-alpha.lo \ - elf64-gen.lo \ - elf64-hppa.lo \ - elf64-ia64.lo \ - elf64-mips.lo \ - elf64-mmix.lo \ - elf64-ppc.lo \ - elf64-s390.lo \ - elf64-sh64.lo \ - elf64-sparc.lo \ - elf64-x86-64.lo \ - elf64.lo \ - elfn32-mips.lo \ - mmo.lo \ - nlm32-alpha.lo \ - nlm64.lo \ - pe-x86_64.lo \ - pei-ia64.lo \ - pei-x86_64.lo \ - pepigen.lo \ - pex64igen.lo - -BFD64_BACKENDS_CFILES = \ - aix5ppc-core.c \ - aout64.c \ - coff-alpha.c \ - coff-x86_64.c \ - coff64-rs6000.c \ - demo64.c \ - elf32-score.c \ - elf32-score7.c \ - elf64-alpha.c \ - elf64-gen.c \ - elf64-hppa.c \ - elf64-mips.c \ - elf64-mmix.c \ - elf64-ppc.c \ - elf64-s390.c \ - elf64-sh64.c \ - elf64-sparc.c \ - elf64-x86-64.c \ - elf64.c \ - elfn32-mips.c \ - mmo.c \ - nlm32-alpha.c \ - nlm64.c \ - pe-x86_64.c \ - pei-ia64.c \ - pei-x86_64.c - -OPTIONAL_BACKENDS = \ - aix386-core.lo \ - cisco-core.lo \ - hpux-core.lo \ - irix-core.lo \ - lynx-core.lo \ - osf-core.lo \ - sco5-core.lo \ - trad-core.lo - -OPTIONAL_BACKENDS_CFILES = \ - aix386-core.c \ - cisco-core.c \ - hpux-core.c \ - irix-core.c \ - lynx-core.c \ - osf-core.c \ - sco5-core.c \ - trad-core.c - - -# We want to rerun configure if configure.in, config.bfd or -# configure.host change. configure.in is needed since the version -# number in Makefile comes from configure.in. -CONFIG_STATUS_DEPENDENCIES = \ - $(srcdir)/configure.in \ - $(srcdir)/config.bfd \ - $(srcdir)/configure.host - - -# These are defined by configure.in: -WORDSIZE = @wordsize@ -ALL_BACKENDS = @all_backends@ -BFD_BACKENDS = @bfd_backends@ -BFD_MACHINES = @bfd_machines@ -TDEFAULTS = @tdefaults@ -INCLUDES = @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) @INCINTL@ - -# C source files that correspond to .o's. -SOURCE_CFILES = \ - $(BFD32_LIBS_CFILES) \ - $(BFD64_LIBS_CFILES) \ - $(ALL_MACHINES_CFILES) \ - $(BFD32_BACKENDS_CFILES) \ - $(BFD64_BACKENDS_CFILES) \ - $(OPTIONAL_BACKENDS_CFILES) - -BUILD_CFILES = \ - elf32-ia64.c elf64-ia64.c peigen.c pepigen.c pex64igen.c - -CFILES = $(SOURCE_CFILES) $(BUILD_CFILES) -SOURCE_HFILES = \ - aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h \ - elf-bfd.h elf-hppa.h elf32-hppa.h \ - elf64-hppa.h elfcode.h elfcore.h \ - freebsd.h genlink.h go32stub.h \ - libaout.h libbfd.h libcoff.h libecoff.h libhppa.h libieee.h \ - libnlm.h liboasys.h libpei.h libxcoff.h mach-o.h \ - netbsd.h nlm-target.h nlmcode.h nlmswap.h ns32k.h \ - pef.h pef-traceback.h peicode.h som.h version.h \ - vms.h xcoff-target.h xsym.h - -BUILD_HFILES = \ - bfdver.h elf32-target.h elf64-target.h targmatch.h bfd_stdint.h - - -# Ensure they are built early: -BUILT_SOURCES = $(BUILD_HFILES) -HFILES = $(SOURCE_HFILES) $(BUILD_HFILES) -SRC_POTFILES = $(SOURCE_CFILES) $(SOURCE_HFILES) -BLD_POTFILES = $(BUILD_CFILES) $(BUILD_HFILES) - -# Various kinds of .o files to put in libbfd.a: -# BFD_BACKENDS Routines the configured targets need. -# BFD_MACHINES Architecture-specific routines the configured targets need. -# COREFILE Core file routines for a native configuration -# bfd64_libs Routines for 64bit support -OFILES = $(BFD_BACKENDS) $(BFD_MACHINES) @COREFILE@ @bfd64_libs@ - -# Since BFD64_LIBS is optional and we can't have substitution in -# libbfd_la_SOURCES, we put BFD64_LIBS in OFILES instead. -# However, list all sources in EXTRA_libbfd_la_SOURCES so the -# dependency tracking fragments are picked up in the Makefile. -libbfd_la_SOURCES = $(BFD32_LIBS_CFILES) -EXTRA_libbfd_la_SOURCES = $(CFILES) -libbfd_la_DEPENDENCIES = $(OFILES) ofiles -libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) - -# libtool will build .libs/libbfd.a. We create libbfd.a in the build -# directory so that we don't have to convert all the programs that use -# libbfd.a simultaneously. This is a hack which should be removed if -# everything else starts using libtool. FIXME. -noinst_LIBRARIES = libbfd.a -libbfd_a_SOURCES = -BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h -LOCAL_H_DEPS = libbfd.h sysdep.h config.h -BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c section.c archures.c \ - reloc.c syms.c bfd.c bfdio.c bfdwin.c \ - archive.c corefile.c targets.c format.c compress.c - -BFD64_H_FILES = archive64.c -LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c bfdio.c bfdwin.c \ - cache.c reloc.c archures.c elf.c - -LIBCOFF_H_FILES = libcoff-in.h coffcode.h -MOSTLYCLEANFILES = ofiles stamp-ofiles -CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 libbfd.a stamp-lib \ - stmp-bin2-h stmp-lbfd-h stmp-lcoff-h - -DISTCLEANFILES = $(BUILD_CFILES) $(BUILD_HFILES) libtool-soversion -all: $(BUILT_SOURCES) config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -am--refresh: - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -bfd-in3.h: $(top_builddir)/config.status $(srcdir)/bfd-in2.h - cd $(top_builddir) && $(SHELL) ./config.status $@ -po/Makefile.in: $(top_builddir)/config.status $(top_srcdir)/po/Make-in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -install-bfdlibLTLIBRARIES: $(bfdlib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(bfdlibdir)" || $(MKDIR_P) "$(DESTDIR)$(bfdlibdir)" - @list='$(bfdlib_LTLIBRARIES)'; test -n "$(bfdlibdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(bfdlibdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(bfdlibdir)"; \ - } - -uninstall-bfdlibLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(bfdlib_LTLIBRARIES)'; test -n "$(bfdlibdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(bfdlibdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(bfdlibdir)/$$f"; \ - done - -clean-bfdlibLTLIBRARIES: - -test -z "$(bfdlib_LTLIBRARIES)" || rm -f $(bfdlib_LTLIBRARIES) - @list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libbfd.la: $(libbfd_la_OBJECTS) $(libbfd_la_DEPENDENCIES) - $(libbfd_la_LINK) $(am_libbfd_la_rpath) $(libbfd_la_OBJECTS) $(libbfd_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aix386-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aix5ppc-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-adobe.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-cris.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-ns32k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-sparcle.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-tic30.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout0.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/archive.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/archive64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/archures.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/armnetbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfdio.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfdwin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bout.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cf-i386lynx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cf-sparclynx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cisco-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-alpha.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-apollo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-aux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-go32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-h8300.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-h8500.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-i386.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-i860.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-i960.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-m68k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-m88k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-maxq.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-or32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-rs6000.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-sh.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-sparc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-stgo32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-svm68k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic30.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic4x.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic54x.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic80.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-u68k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-w65.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-we32k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-x86_64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z80.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z8k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff64-rs6000.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coffgen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cofflink.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compress.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/corefile.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-alpha.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-arc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-avr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-bfin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-cr16.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-cr16c.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-cris.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-crx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-d10v.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-d30v.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-dlx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-fr30.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-frv.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-h8300.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-h8500.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-hppa.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i370.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i386.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i860.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i960.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ia64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ip2k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iq2000.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-l1om.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-lm32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m10200.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m10300.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m32c.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m32r.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m68hc11.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m68hc12.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m68k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m88k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-maxq.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mcore.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-microblaze.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mmix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-moxie.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-msp430.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mt.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ns32k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-openrisc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-or32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-pdp11.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-pj.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-plugin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-powerpc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-rs6000.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-s390.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-score.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-sh.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-sparc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-spu.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic30.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic4x.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic54x.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic80.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-v850.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-vax.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-w65.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-we32k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-xc16x.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-xstormy16.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-xtensa.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-z80.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-z8k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf1.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecoff.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecofflink.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-attrs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-eh-frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-ifunc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10200.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10300.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-strtab.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-vxworks.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-am33lin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-arc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-avr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-bfin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-cr16.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-cr16c.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-cris.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-crx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-d10v.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-d30v.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-dlx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-fr30.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-frv.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-gen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-h8300.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-hppa.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-i370.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-i386.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-i860.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-i960.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ia64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ip2k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-iq2000.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-lm32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m32c.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m32r.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m68hc11.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m68hc12.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m68hc1x.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m68k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m88k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mcore.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-microblaze.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-moxie.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-msp430.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mt.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-openrisc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-or32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-pj.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ppc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-s390.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-score.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-score7.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-sh-symbian.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-sh.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-sh64-com.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-sh64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-sparc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-spu.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-v850.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-vax.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xc16x.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xstormy16.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xtensa.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-alpha.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-gen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-hppa.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-ia64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-mmix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-ppc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-s390.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-sh64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-sparc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-x86-64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elflink.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfn32-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-sparc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoc-pe-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoc-pei-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hp300bsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hp300hpux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hpux-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386aout.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386bsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386dynix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386lynx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386mach3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386msdos.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386netbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386os9k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ieee.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ihex.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irix-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbfd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linker.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lynx-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68k4knetbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68klinux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68knetbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m88kmach3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m88kopenbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-i386.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/merge.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mipsbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newsos3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlm32-alpha.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlm32-i386.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlm32-ppc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlm32-sparc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlm32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlm64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ns32knetbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oasys.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opncls.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc532-mach.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdp11.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-arm-wince.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-i386.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-mcore.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-ppc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-sh.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-x86_64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pef.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-arm-wince.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-arm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-i386.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-ia64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-mcore.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-mips.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-ppc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-sh.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-x86_64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peigen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pepigen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pex64igen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppcboot.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc16.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/riscix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sco5-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/section.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/som.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparclinux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparclynx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparcnetbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stab-syms.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stabs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sunos.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syms.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/targets.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tekhex.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trad-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vax1knetbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vaxbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vaxnetbsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verilog.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/versados.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-gsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-hdr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-misc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-tir.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xcofflink.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xsym.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-isa.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-modules.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-bfdincludeHEADERS: $(bfdinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(bfdincludedir)" || $(MKDIR_P) "$(DESTDIR)$(bfdincludedir)" - @list='$(bfdinclude_HEADERS)'; test -n "$(bfdincludedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(bfdincludedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(bfdincludedir)" || exit $$?; \ - done - -uninstall-bfdincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(bfdinclude_HEADERS)'; test -n "$(bfdincludedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bfdincludedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bfdincludedir)" && rm -f $$files - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-recursive -all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(bfdlibdir)" "$(DESTDIR)$(bfdincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-recursive - -clean-am: clean-bfdlibLTLIBRARIES clean-generic clean-libtool \ - clean-noinstLIBRARIES clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-bfdincludeHEADERS install-bfdlibLTLIBRARIES - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-bfdincludeHEADERS uninstall-bfdlibLTLIBRARIES - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ - ctags-recursive install install-am install-strip \ - tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean \ - clean-bfdlibLTLIBRARIES clean-generic clean-libtool \ - clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \ - ctags-recursive distclean distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags dvi dvi-am html \ - html-am info info-am install install-am \ - install-bfdincludeHEADERS install-bfdlibLTLIBRARIES \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-bfdincludeHEADERS uninstall-bfdlibLTLIBRARIES - - -po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES) - for file in $(SRC_POTFILES); do echo $$file; done \ - | LC_ALL=C sort > tmp.src \ - && mv tmp.src $(srcdir)/po/SRC-POTFILES.in - -po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES) - for file in $(BLD_POTFILES); do echo $$file; done \ - | LC_ALL=C sort > tmp.bld \ - && mv tmp.bld $(srcdir)/po/BLD-POTFILES.in - -all diststuff: info - -stamp-ofiles: Makefile - rm -f tofiles - f=""; \ - for i in $(OFILES) ; do \ - case " $$f " in \ - *" $$i "*) ;; \ - *) f="$$f $$i" ;; \ - esac ; \ - done ; \ - echo $$f > tofiles - $(SHELL) $(srcdir)/../move-if-change tofiles ofiles - touch stamp-ofiles - -ofiles: stamp-ofiles ; @true - -stamp-lib: libbfd.la - libtooldir=`$(LIBTOOL) --config | sed -n -e 's/^objdir=//p'`; \ - if [ -f $$libtooldir/libbfd.a ]; then \ - cp $$libtooldir/libbfd.a libbfd.tmp; \ - $(RANLIB) libbfd.tmp; \ - $(SHELL) $(srcdir)/../move-if-change libbfd.tmp libbfd.a; \ - else true; fi - touch stamp-lib - -libbfd.a: stamp-lib ; @true - -# This file holds an array associating configuration triplets and -# vector names. It is built from config.bfd. It is not compiled by -# itself, but is included by targets.c. -targmatch.h: config.bfd targmatch.sed - rm -f targmatch.h - sed -f $(srcdir)/targmatch.sed < $(srcdir)/config.bfd > targmatch.new - mv -f targmatch.new targmatch.h - -# When compiling archures.c and targets.c, supply the default target -# info from configure. - -targets.lo: targets.c Makefile -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='targets.c' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c - -archures.lo: archures.c Makefile -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='archures.c' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c - -dwarf2.lo: dwarf2.c Makefile -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dwarf2.c' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c - -elf32-target.h : elfxx-target.h - rm -f elf32-target.h - sed -e s/NN/32/g < $(srcdir)/elfxx-target.h > elf32-target.new - mv -f elf32-target.new elf32-target.h - -elf64-target.h : elfxx-target.h - rm -f elf64-target.h - sed -e s/NN/64/g < $(srcdir)/elfxx-target.h > elf64-target.new - mv -f elf64-target.new elf64-target.h - -elf32-ia64.c : elfxx-ia64.c - rm -f elf32-ia64.c - sed -e s/NN/32/g < $(srcdir)/elfxx-ia64.c > elf32-ia64.new - mv -f elf32-ia64.new elf32-ia64.c - -elf64-ia64.c : elfxx-ia64.c - rm -f elf64-ia64.c - sed -e s/NN/64/g < $(srcdir)/elfxx-ia64.c > elf64-ia64.new - mv -f elf64-ia64.new elf64-ia64.c - -peigen.c : peXXigen.c - rm -f peigen.c - sed -e s/XX/pe/g < $(srcdir)/peXXigen.c > peigen.new - mv -f peigen.new peigen.c - -pepigen.c : peXXigen.c - rm -f pepigen.c - sed -e s/XX/pep/g < $(srcdir)/peXXigen.c > pepigen.new - mv -f pepigen.new pepigen.c - -pex64igen.c: peXXigen.c - rm -f pex64igen.c - sed -e s/XX/pex64/g < $(srcdir)/peXXigen.c > pex64igen.new - mv -f pex64igen.new pex64igen.c -$(BFD32_LIBS) \ - $(BFD64_LIBS) \ - $(ALL_MACHINES) \ - $(BFD32_BACKENDS) \ - $(BFD64_BACKENDS) \ - $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS) - -host-aout.lo: Makefile - -# The following program can be used to generate a simple config file -# which can be folded into an h-XXX file for a new host, with some editing. -aout-params.h: gen-aout - ./gen-aout host > aout-params.h -gen-aout: $(srcdir)/gen-aout.c Makefile - $(CC) -o gen-aout $(CFLAGS) $(LFLAGS) $(srcdir)/gen-aout.c - -$(BFD_H): stmp-bfd-h ; @true - -stmp-bfd-h: bfd-in3.h - rm -f bfd-tmp.h - cp bfd-in3.h bfd-tmp.h - $(SHELL) $(srcdir)/../move-if-change bfd-tmp.h $(BFD_H) - rm -f bfd-tmp.h - touch stmp-bfd-h - -# Could really use a "copy-if-change"... -headers: - (cd $(bfddocdir); $(MAKE) protos $(FLAGS_TO_PASS)) - cp $(bfddocdir)/bfd.h bfd-in2.h-new - $(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h - cp $(bfddocdir)/libbfd.h libbfd.h-new - $(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h - cp $(bfddocdir)/libcoff.h libcoff.h-new - $(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h - -# We only rebuild the header files automatically if we have been -# configured with --enable-maintainer-mode. - -$(srcdir)/bfd-in2.h: @MAINT@ stmp-bin2-h ; @true -stmp-bin2-h: $(BFD_H_FILES) $(BFD64_H_FILES) - (cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) bfd.h) - cp $(bfddocdir)/bfd.h bfd-in2.h-new - $(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h - touch stmp-bin2-h - -$(srcdir)/libbfd.h: @MAINT@ stmp-lbfd-h ; @true -stmp-lbfd-h: $(LIBBFD_H_FILES) - (cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) libbfd.h) - cp $(bfddocdir)/libbfd.h libbfd.h-new - $(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h - touch stmp-lbfd-h - -$(srcdir)/libcoff.h: @MAINT@ stmp-lcoff-h ; @true -stmp-lcoff-h: $(LIBCOFF_H_FILES) - (cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) libcoff.h) - cp $(bfddocdir)/libcoff.h libcoff.h-new - $(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h - touch stmp-lcoff-h - -bfdver.h: $(srcdir)/version.h $(srcdir)/Makefile.in - @echo "creating $@" - @bfd_version=`echo "$(VERSION)" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\ - bfd_version_string="\"$(VERSION)\"" ;\ - bfd_soversion="$(VERSION)" ;\ - bfd_version_package="\"$(PKGVERSION)\"" ;\ - report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\ - if test "x$(RELEASE)" = x ; then \ - bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\ - bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\ - bfd_soversion="$(VERSION).$${bfd_version_date}" ;\ - fi ;\ - sed -e "s,@bfd_version@,$$bfd_version," \ - -e "s,@bfd_version_string@,$$bfd_version_string," \ - -e "s,@bfd_version_package@,$$bfd_version_package," \ - -e "s,@report_bugs_to@,$$report_bugs_to," \ - < $(srcdir)/version.h > $@; \ - echo "$${bfd_soversion}" > libtool-soversion - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/gdb-7/bfd/archive.c b/contrib/gdb-7/bfd/archive.c index 36252d5794..fbe555b03f 100644 --- a/contrib/gdb-7/bfd/archive.c +++ b/contrib/gdb-7/bfd/archive.c @@ -1,6 +1,6 @@ /* BFD back-end for archive files (libraries). Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. Mostly Gumby Henkel-Wallace's fault. @@ -104,7 +104,6 @@ SUBSECTION BSD 4.4 uses a third scheme: It writes a long filename directly after the header. This allows 'ar q' to work. - We currently can read BSD 4.4 archives, but not write them. */ /* Summary of archive member names: @@ -125,7 +124,6 @@ SUBSECTION "/18 " - SVR4 style, name at offset 18 in name table. "#1/23 " - Long name (or embedded spaces) 23 characters long, BSD 4.4 style, full name follows header. - Implemented for reading, not writing. " 18 " - Long name 18 characters long, extended pseudo-BSD. */ @@ -159,6 +157,11 @@ struct ar_cache { #define arch_eltdata(bfd) ((struct areltdata *) ((bfd)->arelt_data)) #define arch_hdr(bfd) ((struct ar_hdr *) arch_eltdata (bfd)->arch_header) + +/* True iff NAME designated a BSD 4.4 extended name. */ + +#define is_bsd44_extended_name(NAME) \ + (NAME[0] == '#' && NAME[1] == '1' && NAME[2] == '/' && ISDIGIT (NAME[3])) void _bfd_ar_spacepad (char *p, size_t n, const char *fmt, long val) @@ -300,6 +303,15 @@ eq_file_ptr (const PTR p1, const PTR p2) return arc1->ptr == arc2->ptr; } +/* The calloc function doesn't always take size_t (e.g. on VMS) + so wrap it to avoid a compile time warning. */ + +static void * +_bfd_calloc_wrapper (size_t a, size_t b) +{ + return calloc (a, b); +} + /* Kind of stupid to call cons for each one, but we don't do too many. */ bfd_boolean @@ -312,7 +324,7 @@ _bfd_add_bfd_to_archive_cache (bfd *arch_bfd, file_ptr filepos, bfd *new_elt) if (hash_table == NULL) { hash_table = htab_create_alloc (16, hash_file_ptr, eq_file_ptr, - NULL, calloc, free); + NULL, _bfd_calloc_wrapper, free); if (hash_table == NULL) return FALSE; bfd_ardata (arch_bfd)->cache = hash_table; @@ -354,15 +366,15 @@ _bfd_find_nested_archive (bfd *arch_bfd, const char *filename) static char * get_extended_arelt_filename (bfd *arch, const char *name, file_ptr *originp) { - unsigned long index = 0; + unsigned long table_index = 0; const char *endp; /* Should extract string so that I can guarantee not to overflow into the next region, but I'm too lazy. */ errno = 0; /* Skip first char, which is '/' in SVR4 or ' ' in some other variants. */ - index = strtol (name + 1, (char **) &endp, 10); - if (errno != 0 || index >= bfd_ardata (arch)->extended_names_size) + table_index = strtol (name + 1, (char **) &endp, 10); + if (errno != 0 || table_index >= bfd_ardata (arch)->extended_names_size) { bfd_set_error (bfd_error_malformed_archive); return NULL; @@ -383,7 +395,7 @@ get_extended_arelt_filename (bfd *arch, const char *name, file_ptr *originp) else *originp = 0; - return bfd_ardata (arch)->extended_names + index; + return bfd_ardata (arch)->extended_names + table_index; } /* This functions reads an arch header and returns an areltdata pointer, or @@ -415,6 +427,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag) bfd_size_type allocsize = sizeof (struct areltdata) + sizeof (struct ar_hdr); char *allocptr = 0; file_ptr origin = 0; + unsigned int extra_size = 0; if (bfd_bread (hdrp, sizeof (struct ar_hdr), abfd) != sizeof (struct ar_hdr)) { @@ -450,17 +463,14 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag) if (filename == NULL) return NULL; } - /* BSD4.4-style long filename. - Only implemented for reading, so far! */ - else if (hdr.ar_name[0] == '#' - && hdr.ar_name[1] == '1' - && hdr.ar_name[2] == '/' - && ISDIGIT (hdr.ar_name[3])) + /* BSD4.4-style long filename. */ + else if (is_bsd44_extended_name (hdr.ar_name)) { /* BSD-4.4 extended name */ namelen = atoi (&hdr.ar_name[3]); allocsize += namelen + 1; parsed_size -= namelen; + extra_size = namelen; allocptr = (char *) bfd_zalloc (abfd, allocsize); if (allocptr == NULL) @@ -515,6 +525,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag) ared->arch_header = allocptr + sizeof (struct areltdata); memcpy (ared->arch_header, &hdr, sizeof (struct ar_hdr)); ared->parsed_size = parsed_size; + ared->extra_size = extra_size; ared->origin = origin; if (filename != NULL) @@ -534,8 +545,8 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag) /* Append the relative pathname for a member of the thin archive to the pathname of the directory containing the archive. */ -static char * -append_relative_path (bfd *arch, char *elt_name) +char * +_bfd_append_relative_path (bfd *arch, char *elt_name) { const char *arch_name = arch->filename; const char *base_name = lbasename (arch_name); @@ -589,7 +600,7 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos) /* This is a proxy entry for an external file. */ if (! IS_ABSOLUTE_PATH (filename)) { - filename = append_relative_path (archive, filename); + filename = _bfd_append_relative_path (archive, filename); if (filename == NULL) return NULL; } @@ -656,14 +667,14 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos) } /* Return the BFD which is referenced by the symbol in ABFD indexed by - INDEX. INDEX should have been returned by bfd_get_next_mapent. */ + SYM_INDEX. SYM_INDEX should have been returned by bfd_get_next_mapent. */ bfd * -_bfd_generic_get_elt_at_index (bfd *abfd, symindex index) +_bfd_generic_get_elt_at_index (bfd *abfd, symindex sym_index) { carsym *entry; - entry = bfd_ardata (abfd)->symdefs + index; + entry = bfd_ardata (abfd)->symdefs + sym_index; return _bfd_get_elt_at_filepos (abfd, entry->file_offset); } @@ -1054,6 +1065,25 @@ bfd_slurp_armap (bfd *abfd) return FALSE; #endif } + else if (CONST_STRNEQ (nextname, "#1/20 ")) + { + /* Mach-O has a special name for armap when the map is sorted by name. + However because this name has a space it is slightly more difficult + to check it. */ + struct ar_hdr hdr; + char extname[21]; + + if (bfd_bread (&hdr, sizeof (hdr), abfd) != sizeof (hdr)) + return FALSE; + /* Read the extended name. We know its length. */ + if (bfd_bread (extname, 20, abfd) != 20) + return FALSE; + if (bfd_seek (abfd, (file_ptr) -(sizeof (hdr) + 20), SEEK_CUR) != 0) + return FALSE; + if (CONST_STRNEQ (extname, "__.SYMDEF SORTED") + || CONST_STRNEQ (extname, "__.SYMDEF")) + return do_slurp_bsd_armap (abfd); + } bfd_has_map (abfd) = FALSE; return TRUE; @@ -1294,23 +1324,7 @@ normalize (bfd *abfd, const char *file) static const char * normalize (bfd *abfd ATTRIBUTE_UNUSED, const char *file) { - const char *filename = strrchr (file, '/'); - -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (file, '\\'); - if (filename == NULL || (bslash != NULL && bslash > filename)) - filename = bslash; - if (filename == NULL && file[0] != '\0' && file[1] == ':') - filename = file + 1; - } -#endif - if (filename != NULL) - filename++; - else - filename = file; - return filename; + return lbasename (file); } #endif @@ -1597,6 +1611,103 @@ _bfd_construct_extended_name_table (bfd *abfd, return TRUE; } + +/* Do not construct an extended name table but transforms name field into + its extended form. */ + +bfd_boolean +_bfd_archive_bsd44_construct_extended_name_table (bfd *abfd, + char **tabloc, + bfd_size_type *tablen, + const char **name) +{ + unsigned int maxname = abfd->xvec->ar_max_namelen; + bfd *current; + + *tablen = 0; + *tabloc = NULL; + *name = NULL; + + for (current = abfd->archive_head; + current != NULL; + current = current->archive_next) + { + const char *normal = normalize (current, current->filename); + int has_space = 0; + unsigned int len; + + if (normal == NULL) + return FALSE; + + for (len = 0; normal[len]; len++) + if (normal[len] == ' ') + has_space = 1; + + if (len > maxname || has_space) + { + struct ar_hdr *hdr = arch_hdr (current); + + len = (len + 3) & ~3; + arch_eltdata (current)->extra_size = len; + _bfd_ar_spacepad (hdr->ar_name, maxname, "#1/%u", len); + } + } + + return TRUE; +} + +/* Write an archive header. */ + +bfd_boolean +_bfd_generic_write_ar_hdr (bfd *archive, bfd *abfd) +{ + struct ar_hdr *hdr = arch_hdr (abfd); + + if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr)) + return FALSE; + return TRUE; +} + +/* Write an archive header using BSD4.4 convention. */ + +bfd_boolean +_bfd_bsd44_write_ar_hdr (bfd *archive, bfd *abfd) +{ + struct ar_hdr *hdr = arch_hdr (abfd); + + if (is_bsd44_extended_name (hdr->ar_name)) + { + /* This is a BSD 4.4 extended name. */ + const char *fullname = normalize (abfd, abfd->filename); + unsigned int len = strlen (fullname); + unsigned int padded_len = (len + 3) & ~3; + + BFD_ASSERT (padded_len == arch_eltdata (abfd)->extra_size); + + _bfd_ar_spacepad (hdr->ar_size, sizeof (hdr->ar_size), "%-10ld", + arch_eltdata (abfd)->parsed_size + padded_len); + + if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr)) + return FALSE; + + if (bfd_bwrite (fullname, len, archive) != len) + return FALSE; + if (len & 3) + { + static const char pad[3] = { 0, 0, 0 }; + + len = 4 - (len & 3); + if (bfd_bwrite (pad, len, archive) != len) + return FALSE; + } + } + else + { + if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr)) + return FALSE; + } + return TRUE; +} /* A couple of functions for creating ar_hdrs. */ @@ -1703,22 +1814,6 @@ bfd_ar_hdr_from_filesystem (bfd *abfd, const char *filename, bfd *member) return ared; } -/* This is magic required by the "ar" program. Since it's - undocumented, it's undocumented. You may think that it would take - a strong stomach to write this, and it does, but it takes even a - stronger stomach to try to code around such a thing! */ - -struct ar_hdr *bfd_special_undocumented_glue (bfd *, const char *); - -struct ar_hdr * -bfd_special_undocumented_glue (bfd *abfd, const char *filename) -{ - struct areltdata *ar_elt = bfd_ar_hdr_from_filesystem (abfd, filename, 0); - if (ar_elt == NULL) - return NULL; - return (struct ar_hdr *) ar_elt->arch_header; -} - /* Analogous to stat call. */ int @@ -1818,25 +1913,9 @@ bfd_bsd_truncate_arname (bfd *abfd, const char *pathname, char *arhdr) { struct ar_hdr *hdr = (struct ar_hdr *) arhdr; size_t length; - const char *filename = strrchr (pathname, '/'); + const char *filename = lbasename (pathname); size_t maxlen = ar_maxnamelen (abfd); -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (pathname, '\\'); - if (filename == NULL || (bslash != NULL && bslash > filename)) - filename = bslash; - if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':') - filename = pathname + 1; - } -#endif - - if (filename == NULL) - filename = pathname; - else - ++filename; - length = strlen (filename); if (length <= maxlen) @@ -1866,26 +1945,9 @@ bfd_gnu_truncate_arname (bfd *abfd, const char *pathname, char *arhdr) { struct ar_hdr *hdr = (struct ar_hdr *) arhdr; size_t length; - const char *filename = strrchr (pathname, '/'); + const char *filename = lbasename (pathname); size_t maxlen = ar_maxnamelen (abfd); -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (pathname, '\\'); - - if (filename == NULL || (bslash != NULL && bslash > filename)) - filename = bslash; - if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':') - filename = pathname + 1; - } -#endif - - if (filename == NULL) - filename = pathname; - else - ++filename; - length = strlen (filename); if (length <= maxlen) @@ -2004,12 +2066,10 @@ _bfd_write_archive_contents (bfd *arch) { char buffer[DEFAULT_BUFFERSIZE]; unsigned int remaining = arelt_size (current); - struct ar_hdr *hdr = arch_hdr (current); /* Write ar header. */ - if (bfd_bwrite (hdr, sizeof (*hdr), arch) - != sizeof (*hdr)) - return FALSE; + if (!_bfd_write_ar_hdr (arch, current)) + return FALSE; if (bfd_is_thin_archive (arch)) continue; if (bfd_seek (current, (file_ptr) 0, SEEK_SET) != 0) @@ -2145,6 +2205,7 @@ _bfd_compute_and_write_armap (bfd *arch, unsigned int elength) if ((flags & BSF_GLOBAL || flags & BSF_WEAK || flags & BSF_INDIRECT + || flags & BSF_GNU_UNIQUE || bfd_is_com_section (sec)) && ! bfd_is_und_section (sec)) { @@ -2282,7 +2343,10 @@ bsd_write_armap (bfd *arch, { do { - firstreal += arelt_size (current) + sizeof (struct ar_hdr); + struct areltdata *ared = arch_eltdata (current); + + firstreal += (ared->parsed_size + ared->extra_size + + sizeof (struct ar_hdr)); firstreal += firstreal % 2; current = current->archive_next; } diff --git a/contrib/gdb-7/bfd/archive64.c b/contrib/gdb-7/bfd/archive64.c index 0a1f6edf4c..bbc4c3f72f 100644 --- a/contrib/gdb-7/bfd/archive64.c +++ b/contrib/gdb-7/bfd/archive64.c @@ -1,6 +1,6 @@ /* MIPS-specific support for 64-bit ELF - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007 - Free Software Foundation, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, + 2010 Free Software Foundation, Inc. Ian Lance Taylor, Cygnus Support Linker support added by Mark Mitchell, CodeSourcery, LLC. @@ -43,7 +43,6 @@ bfd_elf64_archive_slurp_armap (bfd *abfd) { struct artdata *ardata = bfd_ardata (abfd); char nextname[17]; - file_ptr arhdrpos; bfd_size_type i, parsed_size, nsymz, stringsize, carsym_size, ptrsize; struct areltdata *mapdata; bfd_byte int_buf[8]; @@ -55,7 +54,6 @@ bfd_elf64_archive_slurp_armap (bfd *abfd) ardata->symdefs = NULL; /* Get the name of the first element. */ - arhdrpos = bfd_tell (abfd); i = bfd_bread (nextname, 16, abfd); if (i == 0) return TRUE; @@ -196,27 +194,27 @@ bfd_elf64_archive_write_armap (bfd *arch, /* Write out the file offset for the file associated with each symbol, and remember to keep the offsets padded out. */ - - current = arch->archive_head; count = 0; - while (current != NULL && count < symbol_count) + for (current = arch->archive_head; + current != NULL && count < symbol_count; + current = current->archive_next) { /* For each symbol which is used defined in this object, write out the object file's address in the archive */ - while (map[count].u.abfd == current) + for (; + count < symbol_count && map[count].u.abfd == current; + count++) { bfd_putb64 ((bfd_vma) archive_member_file_ptr, buf); if (bfd_bwrite (buf, 8, arch) != 8) return FALSE; - count++; } /* Add size of this archive entry */ archive_member_file_ptr += (arelt_size (current) + sizeof (struct ar_hdr)); /* remember about the even alignment */ archive_member_file_ptr += archive_member_file_ptr % 2; - current = current->archive_next; } /* now write the strings themselves */ diff --git a/contrib/gdb-7/bfd/archures.c b/contrib/gdb-7/bfd/archures.c index df73b3f959..0e085713b8 100644 --- a/contrib/gdb-7/bfd/archures.c +++ b/contrib/gdb-7/bfd/archures.c @@ -1,6 +1,6 @@ /* BFD library support routines for architectures. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Hacked by John Gilmore and Steve Chamberlain of Cygnus Support. @@ -230,6 +230,8 @@ DESCRIPTION .#define bfd_mach_ppc_7400 7400 .#define bfd_mach_ppc_e500 500 .#define bfd_mach_ppc_e500mc 5001 +.#define bfd_mach_ppc_e500mc64 5005 +.#define bfd_mach_ppc_titan 83 . bfd_arch_rs6000, {* IBM RS/6000 *} .#define bfd_mach_rs6k 6000 .#define bfd_mach_rs6k_rs1 6001 @@ -303,6 +305,7 @@ DESCRIPTION .#define bfd_mach_tic3x 30 .#define bfd_mach_tic4x 40 . bfd_arch_tic54x, {* Texas Instruments TMS320C54X *} +. bfd_arch_tic6x, {* Texas Instruments TMS320C6X *} . bfd_arch_tic80, {* TI TMS320c80 (MVP) *} . bfd_arch_v850, {* NEC V850 *} .#define bfd_mach_v850 1 @@ -380,6 +383,8 @@ DESCRIPTION .#define bfd_mach_cris_v0_v10 255 .#define bfd_mach_cris_v32 32 .#define bfd_mach_cris_v10_v32 1032 +. bfd_arch_rx, {* Renesas RX. *} +.#define bfd_mach_rx 0x75 . bfd_arch_s390, {* IBM s390 *} .#define bfd_mach_s390_31 31 .#define bfd_mach_s390_64 64 @@ -412,9 +417,6 @@ DESCRIPTION .#define bfd_mach_xc16xs 3 . bfd_arch_xtensa, {* Tensilica's Xtensa cores. *} .#define bfd_mach_xtensa 1 -. bfd_arch_maxq, {* Dallas MAXQ 10/20 *} -.#define bfd_mach_maxq10 10 -.#define bfd_mach_maxq20 20 . bfd_arch_z80, .#define bfd_mach_z80strict 1 {* No undocumented opcodes. *} .#define bfd_mach_z80 3 {* With ixl, ixh, iyl, and iyh. *} @@ -493,7 +495,6 @@ extern const bfd_arch_info_type bfd_m68hc11_arch; extern const bfd_arch_info_type bfd_m68hc12_arch; extern const bfd_arch_info_type bfd_m68k_arch; extern const bfd_arch_info_type bfd_m88k_arch; -extern const bfd_arch_info_type bfd_maxq_arch; extern const bfd_arch_info_type bfd_mcore_arch; extern const bfd_arch_info_type bfd_mep_arch; extern const bfd_arch_info_type bfd_mips_arch; @@ -513,6 +514,7 @@ extern const bfd_arch_info_type bfd_plugin_arch; extern const bfd_arch_info_type bfd_powerpc_archs[]; #define bfd_powerpc_arch bfd_powerpc_archs[0] extern const bfd_arch_info_type bfd_rs6000_arch; +extern const bfd_arch_info_type bfd_rx_arch; extern const bfd_arch_info_type bfd_s390_arch; extern const bfd_arch_info_type bfd_score_arch; extern const bfd_arch_info_type bfd_sh_arch; @@ -521,6 +523,7 @@ extern const bfd_arch_info_type bfd_spu_arch; extern const bfd_arch_info_type bfd_tic30_arch; extern const bfd_arch_info_type bfd_tic4x_arch; extern const bfd_arch_info_type bfd_tic54x_arch; +extern const bfd_arch_info_type bfd_tic6x_arch; extern const bfd_arch_info_type bfd_tic80_arch; extern const bfd_arch_info_type bfd_v850_arch; extern const bfd_arch_info_type bfd_vax_arch; @@ -569,7 +572,6 @@ static const bfd_arch_info_type * const bfd_archures_list[] = &bfd_m68hc12_arch, &bfd_m68k_arch, &bfd_m88k_arch, - &bfd_maxq_arch, &bfd_mcore_arch, &bfd_mep_arch, &bfd_microblaze_arch, @@ -586,6 +588,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] = &bfd_pdp11_arch, &bfd_powerpc_arch, &bfd_rs6000_arch, + &bfd_rx_arch, &bfd_s390_arch, &bfd_score_arch, &bfd_sh_arch, @@ -594,6 +597,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] = &bfd_tic30_arch, &bfd_tic4x_arch, &bfd_tic54x_arch, + &bfd_tic6x_arch, &bfd_tic80_arch, &bfd_v850_arch, &bfd_vax_arch, diff --git a/contrib/gdb-7/bfd/bfd-in.h b/contrib/gdb-7/bfd/bfd-in.h index 516102eb94..cfa5225325 100644 --- a/contrib/gdb-7/bfd/bfd-in.h +++ b/contrib/gdb-7/bfd/bfd-in.h @@ -1,7 +1,7 @@ /* Main header file for the bfd library -- portable access to object files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -294,7 +294,7 @@ typedef struct bfd_section *sec_ptr; (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \ / bfd_octets_per_byte (bfd)) -/* Return TRUE if section has been discarded. */ +/* Return TRUE if input section SEC has been discarded. */ #define elf_discarded_section(sec) \ (!bfd_is_abs_section (sec) \ && bfd_is_abs_section ((sec)->output_section) \ @@ -635,8 +635,8 @@ extern struct bfd_link_needed_list *bfd_elf_get_needed_list extern bfd_boolean bfd_elf_get_bfd_needed_list (bfd *, struct bfd_link_needed_list **); extern bfd_boolean bfd_elf_size_dynamic_sections - (bfd *, const char *, const char *, const char *, const char * const *, - struct bfd_link_info *, struct bfd_section **, + (bfd *, const char *, const char *, const char *, const char *, const char *, + const char * const *, struct bfd_link_info *, struct bfd_section **, struct bfd_elf_version_tree *); extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr (bfd *, struct bfd_link_info *); @@ -906,7 +906,14 @@ extern bfd_boolean elf32_arm_build_stubs /* ARM unwind section editing support. */ extern bfd_boolean elf32_arm_fix_exidx_coverage - (struct bfd_section **, unsigned int, struct bfd_link_info *); +(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean); + +/* PowerPC @tls opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tls_transform + (unsigned int, unsigned int); +/* PowerPC @tprel opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tprel_transform + (unsigned int, unsigned int); /* TI COFF load page support. */ extern void bfd_ticoff_set_section_load_page diff --git a/contrib/gdb-7/bfd/bfd-in2.h b/contrib/gdb-7/bfd/bfd-in2.h index 40d3b7a896..f97c67fd13 100644 --- a/contrib/gdb-7/bfd/bfd-in2.h +++ b/contrib/gdb-7/bfd/bfd-in2.h @@ -8,7 +8,7 @@ /* Main header file for the bfd library -- portable access to object files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -301,7 +301,7 @@ typedef struct bfd_section *sec_ptr; (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \ / bfd_octets_per_byte (bfd)) -/* Return TRUE if section has been discarded. */ +/* Return TRUE if input section SEC has been discarded. */ #define elf_discarded_section(sec) \ (!bfd_is_abs_section (sec) \ && bfd_is_abs_section ((sec)->output_section) \ @@ -642,8 +642,8 @@ extern struct bfd_link_needed_list *bfd_elf_get_needed_list extern bfd_boolean bfd_elf_get_bfd_needed_list (bfd *, struct bfd_link_needed_list **); extern bfd_boolean bfd_elf_size_dynamic_sections - (bfd *, const char *, const char *, const char *, const char * const *, - struct bfd_link_info *, struct bfd_section **, + (bfd *, const char *, const char *, const char *, const char *, const char *, + const char * const *, struct bfd_link_info *, struct bfd_section **, struct bfd_elf_version_tree *); extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr (bfd *, struct bfd_link_info *); @@ -913,7 +913,14 @@ extern bfd_boolean elf32_arm_build_stubs /* ARM unwind section editing support. */ extern bfd_boolean elf32_arm_fix_exidx_coverage - (struct bfd_section **, unsigned int, struct bfd_link_info *); +(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean); + +/* PowerPC @tls opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tls_transform + (unsigned int, unsigned int); +/* PowerPC @tprel opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tprel_transform + (unsigned int, unsigned int); /* TI COFF load page support. */ extern void bfd_ticoff_set_section_load_page @@ -967,17 +974,17 @@ bfd *bfd_fdopenr (const char *filename, const char *target, int fd); bfd *bfd_openstreamr (const char *, const char *, void *); bfd *bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, + void *(*open_func) (struct bfd *nbfd, void *open_closure), void *open_closure, - file_ptr (*pread) (struct bfd *nbfd, + file_ptr (*pread_func) (struct bfd *nbfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset), - int (*close) (struct bfd *nbfd, + int (*close_func) (struct bfd *nbfd, void *stream), - int (*stat) (struct bfd *abfd, + int (*stat_func) (struct bfd *abfd, void *stream, struct stat *sb)); @@ -1360,20 +1367,12 @@ typedef struct bfd_section /* Bits used by various backends. The generic code doesn't touch these fields. */ - /* Nonzero if this section has TLS related relocations. */ - unsigned int has_tls_reloc:1; - - /* Nonzero if this section has a call to __tls_get_addr. */ - unsigned int has_tls_get_addr_call:1; - - /* Nonzero if this section has a gp reloc. */ - unsigned int has_gp_reloc:1; - - /* Nonzero if this section needs the relax finalize pass. */ - unsigned int need_finalize_relax:1; - - /* Whether relocations have been processed. */ - unsigned int reloc_done : 1; + unsigned int sec_flg0:1; + unsigned int sec_flg1:1; + unsigned int sec_flg2:1; + unsigned int sec_flg3:1; + unsigned int sec_flg4:1; + unsigned int sec_flg5:1; /* End of internal packed boolean fields. */ @@ -1638,17 +1637,17 @@ extern asection bfd_ind_section; /* name, id, index, next, prev, flags, user_set_vma, */ \ { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ \ - /* linker_mark, linker_has_input, gc_mark, */ \ - 0, 0, 1, \ + /* linker_mark, linker_has_input, gc_mark, segment_mark, */ \ + 0, 0, 1, 0, \ \ - /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ - 0, 0, 0, 0, \ + /* sec_info_type, use_rela_p, */ \ + 0, 0, \ \ - /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ \ - 0, 0, 0, \ + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \ + 0, 0, 0, 0, 0, 0, \ \ - /* reloc_done, vma, lma, size, rawsize, relax, relax_count, */ \ - 0, 0, 0, 0, 0, 0, 0, \ + /* vma, lma, size, rawsize, relax, relax_count, */ \ + 0, 0, 0, 0, 0, 0, \ \ /* output_offset, output_section, alignment_power, */ \ 0, (struct bfd_section *) &SEC, 0, \ @@ -1897,6 +1896,8 @@ enum bfd_architecture #define bfd_mach_ppc_7400 7400 #define bfd_mach_ppc_e500 500 #define bfd_mach_ppc_e500mc 5001 +#define bfd_mach_ppc_e500mc64 5005 +#define bfd_mach_ppc_titan 83 bfd_arch_rs6000, /* IBM RS/6000 */ #define bfd_mach_rs6k 6000 #define bfd_mach_rs6k_rs1 6001 @@ -1970,6 +1971,7 @@ enum bfd_architecture #define bfd_mach_tic3x 30 #define bfd_mach_tic4x 40 bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ + bfd_arch_tic6x, /* Texas Instruments TMS320C6X */ bfd_arch_tic80, /* TI TMS320c80 (MVP) */ bfd_arch_v850, /* NEC V850 */ #define bfd_mach_v850 1 @@ -2047,6 +2049,8 @@ enum bfd_architecture #define bfd_mach_cris_v0_v10 255 #define bfd_mach_cris_v32 32 #define bfd_mach_cris_v10_v32 1032 + bfd_arch_rx, /* Renesas RX. */ +#define bfd_mach_rx 0x75 bfd_arch_s390, /* IBM s390 */ #define bfd_mach_s390_31 31 #define bfd_mach_s390_64 64 @@ -2079,9 +2083,6 @@ enum bfd_architecture #define bfd_mach_xc16xs 3 bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ #define bfd_mach_xtensa 1 - bfd_arch_maxq, /* Dallas MAXQ 10/20 */ -#define bfd_mach_maxq10 10 -#define bfd_mach_maxq20 20 bfd_arch_z80, #define bfd_mach_z80strict 1 /* No undocumented opcodes. */ #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ @@ -2240,10 +2241,7 @@ struct reloc_howto_struct when doing overflow checking. */ unsigned int bitsize; - /* Notes that the relocation is relative to the location in the - data section of the addend. The relocation function will - subtract from the relocation value the address of the location - being relocated. */ + /* The relocation is relative to the field being relocated. */ bfd_boolean pc_relative; /* The bit position of the reloc value in the destination. @@ -2493,6 +2491,8 @@ relocation types already defined. */ BFD_RELOC_SPARC_GOTDATA_OP_HIX22, BFD_RELOC_SPARC_GOTDATA_OP_LOX10, BFD_RELOC_SPARC_GOTDATA_OP, + BFD_RELOC_SPARC_JMP_IREL, + BFD_RELOC_SPARC_IRELATIVE, /* I think these are specific to SPARC a.out (e.g., Sun 4). */ BFD_RELOC_SPARC_BASE13, @@ -3109,6 +3109,7 @@ pc-relative or some form of GOT-indirect relocation. */ BFD_RELOC_ARM_RELATIVE, BFD_RELOC_ARM_GOTOFF, BFD_RELOC_ARM_GOTPC, + BFD_RELOC_ARM_GOT_PREL, /* ARM thread-local storage relocations. */ BFD_RELOC_ARM_TLS_GD32, @@ -3272,6 +3273,13 @@ pc-relative or some form of GOT-indirect relocation. */ BFD_RELOC_SH_TLS_DTPMOD32, BFD_RELOC_SH_TLS_DTPOFF32, BFD_RELOC_SH_TLS_TPOFF32, + BFD_RELOC_SH_GOT20, + BFD_RELOC_SH_GOTOFF20, + BFD_RELOC_SH_GOTFUNCDESC, + BFD_RELOC_SH_GOTFUNCDESC20, + BFD_RELOC_SH_GOTOFFFUNCDESC, + BFD_RELOC_SH_GOTOFFFUNCDESC20, + BFD_RELOC_SH_FUNCDESC, /* ARC Cores relocs. ARC 22 bit pc-relative branch. The lowest two bits must be zero and are @@ -3633,6 +3641,34 @@ significant 7 bits of a 23-bit extended address are placed into the opcode. */ BFD_RELOC_TIC54X_MS7_OF_23, +/* TMS320C6000 relocations. */ + BFD_RELOC_C6000_PCR_S21, + BFD_RELOC_C6000_PCR_S12, + BFD_RELOC_C6000_PCR_S10, + BFD_RELOC_C6000_PCR_S7, + BFD_RELOC_C6000_ABS_S16, + BFD_RELOC_C6000_ABS_L16, + BFD_RELOC_C6000_ABS_H16, + BFD_RELOC_C6000_SBR_U15_B, + BFD_RELOC_C6000_SBR_U15_H, + BFD_RELOC_C6000_SBR_U15_W, + BFD_RELOC_C6000_SBR_S16, + BFD_RELOC_C6000_SBR_L16_B, + BFD_RELOC_C6000_SBR_L16_H, + BFD_RELOC_C6000_SBR_L16_W, + BFD_RELOC_C6000_SBR_H16_B, + BFD_RELOC_C6000_SBR_H16_H, + BFD_RELOC_C6000_SBR_H16_W, + BFD_RELOC_C6000_SBR_GOT_U15_W, + BFD_RELOC_C6000_SBR_GOT_L16_W, + BFD_RELOC_C6000_SBR_GOT_H16_W, + BFD_RELOC_C6000_DSBT_INDEX, + BFD_RELOC_C6000_PREL31, + BFD_RELOC_C6000_COPY, + BFD_RELOC_C6000_ALIGN, + BFD_RELOC_C6000_FPHEAD, + BFD_RELOC_C6000_NOCMP, + /* This is a 48 bit reloc for the FR30 that stores 32 bits. */ BFD_RELOC_FR30_48, @@ -3844,6 +3880,32 @@ instructions */ instructions */ BFD_RELOC_AVR_6_ADIW, +/* Renesas RX Relocations. */ + BFD_RELOC_RX_NEG8, + BFD_RELOC_RX_NEG16, + BFD_RELOC_RX_NEG24, + BFD_RELOC_RX_NEG32, + BFD_RELOC_RX_16_OP, + BFD_RELOC_RX_24_OP, + BFD_RELOC_RX_32_OP, + BFD_RELOC_RX_8U, + BFD_RELOC_RX_16U, + BFD_RELOC_RX_24U, + BFD_RELOC_RX_DIR3U_PCREL, + BFD_RELOC_RX_DIFF, + BFD_RELOC_RX_GPRELB, + BFD_RELOC_RX_GPRELW, + BFD_RELOC_RX_GPRELL, + BFD_RELOC_RX_SYM, + BFD_RELOC_RX_OP_SUBTRACT, + BFD_RELOC_RX_ABS8, + BFD_RELOC_RX_ABS16, + BFD_RELOC_RX_ABS32, + BFD_RELOC_RX_ABS16U, + BFD_RELOC_RX_ABS16UW, + BFD_RELOC_RX_ABS16UL, + BFD_RELOC_RX_RELAX, + /* Direct 12 bit. */ BFD_RELOC_390_12, @@ -4530,9 +4592,36 @@ BFD_RELOC_XTENSA_ASM_EXPAND. */ BFD_RELOC_MACH_O_PAIR. */ BFD_RELOC_MACH_O_SECTDIFF, -/* Mach-O generic relocations. */ +/* Pair of relocation. Contains the first symbol. */ BFD_RELOC_MACH_O_PAIR, +/* PCREL relocations. They are marked as branch to create PLT entry if +required. */ + BFD_RELOC_MACH_O_X86_64_BRANCH32, + BFD_RELOC_MACH_O_X86_64_BRANCH8, + +/* Used when referencing a GOT entry. */ + BFD_RELOC_MACH_O_X86_64_GOT, + +/* Used when loading a GOT entry with movq. It is specially marked so that +the linker could optimize the movq to a leaq if possible. */ + BFD_RELOC_MACH_O_X86_64_GOT_LOAD, + +/* Symbol will be substracted. Must be followed by a BFD_RELOC_64. */ + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32, + +/* Symbol will be substracted. Must be followed by a BFD_RELOC_64. */ + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_1, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_2, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_4, + /* This is a 32 bit reloc for the microblaze that stores the low 16 bits of a value */ BFD_RELOC_MICROBLAZE_32_LO, @@ -5034,6 +5123,10 @@ struct bfd /* Set if this is a thin archive. */ unsigned int is_thin_archive : 1; + + /* Set if only required symbols should be added in the link hash table for + this object. Used by VMS linkers. */ + unsigned int selective_search : 1; }; typedef enum bfd_error @@ -5461,6 +5554,7 @@ typedef struct bfd_target NAME##_truncate_arname, \ NAME##_write_armap, \ NAME##_read_ar_hdr, \ + NAME##_write_ar_hdr, \ NAME##_openr_next_archived_file, \ NAME##_get_elt_at_index, \ NAME##_generic_stat_arch_elt, \ @@ -5474,6 +5568,7 @@ typedef struct bfd_target bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *, unsigned int, int); void * (*_bfd_read_ar_hdr_fn) (bfd *); + bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); bfd * (*openr_next_archived_file) (bfd *, bfd *); #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); @@ -5569,6 +5664,7 @@ typedef struct bfd_target NAME##_bfd_link_hash_table_free, \ NAME##_bfd_link_add_symbols, \ NAME##_bfd_link_just_syms, \ + NAME##_bfd_copy_link_hash_symbol_type, \ NAME##_bfd_final_link, \ NAME##_bfd_link_split_section, \ NAME##_bfd_gc_sections, \ @@ -5600,6 +5696,12 @@ typedef struct bfd_target /* Indicate that we are only retrieving symbol values from this section. */ void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); + /* Copy the symbol type of a linker hash table entry. */ +#define bfd_copy_link_hash_symbol_type(b, t, f) \ + BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) + void (*_bfd_copy_link_hash_symbol_type) + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + /* Do a link based on the link_order structures attached to each section of the BFD. */ bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); @@ -5664,6 +5766,11 @@ bfd_boolean bfd_set_default_target (const char *name); const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); +const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); const char ** bfd_target_list (void); const bfd_target *bfd_search_for_target diff --git a/contrib/gdb-7/bfd/bfd.c b/contrib/gdb-7/bfd/bfd.c index eef9f3615b..771989b758 100644 --- a/contrib/gdb-7/bfd/bfd.c +++ b/contrib/gdb-7/bfd/bfd.c @@ -286,6 +286,10 @@ CODE_FRAGMENT . . {* Set if this is a thin archive. *} . unsigned int is_thin_archive : 1; +. +. {* Set if only required symbols should be added in the link hash table for +. this object. Used by VMS linkers. *} +. unsigned int selective_search : 1; .}; . */ diff --git a/contrib/gdb-7/bfd/bfdio.c b/contrib/gdb-7/bfd/bfdio.c index e428b165b2..ce92781d50 100644 --- a/contrib/gdb-7/bfd/bfdio.c +++ b/contrib/gdb-7/bfd/bfdio.c @@ -163,6 +163,8 @@ DESCRIPTION . int prot, int flags, file_ptr offset); .}; +.extern const struct bfd_iovec _bfd_memory_iovec; + */ @@ -178,28 +180,12 @@ bfd_bread (void *ptr, bfd_size_type size, bfd *abfd) if (abfd->arelt_data != NULL) { size_t maxbytes = ((struct areltdata *) abfd->arelt_data)->parsed_size; - if (size > maxbytes) - size = maxbytes; - } - - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - struct bfd_in_memory *bim; - bfd_size_type get; - - bim = (struct bfd_in_memory *) abfd->iostream; - get = size; - if (abfd->where + get > bim->size) - { - if (bim->size < (bfd_size_type) abfd->where) - get = 0; - else - get = bim->size - abfd->where; - bfd_set_error (bfd_error_file_truncated); - } - memcpy (ptr, bim->buffer + abfd->where, (size_t) get); - abfd->where += get; - return get; + if (abfd->where + size > maxbytes) + { + if (abfd->where >= maxbytes) + return 0; + size = maxbytes - abfd->where; + } } if (abfd->iovec) @@ -217,37 +203,6 @@ bfd_bwrite (const void *ptr, bfd_size_type size, bfd *abfd) { size_t nwrote; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; - - size = (size_t) size; - if (abfd->where + size > bim->size) - { - bfd_size_type newsize, oldsize; - - oldsize = (bim->size + 127) & ~(bfd_size_type) 127; - bim->size = abfd->where + size; - /* Round up to cut down on memory fragmentation */ - newsize = (bim->size + 127) & ~(bfd_size_type) 127; - if (newsize > oldsize) - { - bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, - newsize); - if (bim->buffer == NULL) - { - bim->size = 0; - return 0; - } - if (newsize > bim->size) - memset (bim->buffer + bim->size, 0, newsize - bim->size); - } - } - memcpy (bim->buffer + abfd->where, ptr, (size_t) size); - abfd->where += size; - return size; - } - if (abfd->iovec) nwrote = abfd->iovec->bwrite (abfd, ptr, size); else @@ -270,9 +225,6 @@ bfd_tell (bfd *abfd) { file_ptr ptr; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return abfd->where; - if (abfd->iovec) { ptr = abfd->iovec->btell (abfd); @@ -290,9 +242,6 @@ bfd_tell (bfd *abfd) int bfd_flush (bfd *abfd) { - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return 0; - if (abfd->iovec) return abfd->iovec->bflush (abfd); return 0; @@ -305,9 +254,6 @@ bfd_stat (bfd *abfd, struct stat *statbuf) { int result; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - abort (); - if (abfd->iovec) result = abfd->iovec->bstat (abfd, statbuf); else @@ -335,50 +281,6 @@ bfd_seek (bfd *abfd, file_ptr position, int direction) if (direction == SEEK_CUR && position == 0) return 0; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - struct bfd_in_memory *bim; - - bim = (struct bfd_in_memory *) abfd->iostream; - - if (direction == SEEK_SET) - abfd->where = position; - else - abfd->where += position; - - if (abfd->where > bim->size) - { - if (abfd->direction == write_direction - || abfd->direction == both_direction) - { - bfd_size_type newsize, oldsize; - - oldsize = (bim->size + 127) & ~(bfd_size_type) 127; - bim->size = abfd->where; - /* Round up to cut down on memory fragmentation */ - newsize = (bim->size + 127) & ~(bfd_size_type) 127; - if (newsize > oldsize) - { - bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, - newsize); - if (bim->buffer == NULL) - { - bim->size = 0; - return -1; - } - memset (bim->buffer + oldsize, 0, newsize - oldsize); - } - } - else - { - abfd->where = bim->size; - bfd_set_error (bfd_error_file_truncated); - return -1; - } - } - return 0; - } - if (abfd->format != bfd_archive && abfd->my_archive == 0) { if (direction == SEEK_SET && (bfd_vma) position == abfd->where) @@ -505,9 +407,6 @@ bfd_get_size (bfd *abfd) { struct stat buf; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return ((struct bfd_in_memory *) abfd->iostream)->size; - if (abfd->iovec == NULL) return 0; @@ -536,11 +435,164 @@ bfd_mmap (bfd *abfd, void *addr, bfd_size_type len, int prot, int flags, file_ptr offset) { void *ret = (void *)-1; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return ret; if (abfd->iovec == NULL) return ret; return abfd->iovec->bmmap (abfd, addr, len, prot, flags, offset); } + +/* Memory file I/O operations. */ + +static file_ptr +memory_bread (bfd *abfd, void *ptr, file_ptr size) +{ + struct bfd_in_memory *bim; + bfd_size_type get; + + bim = (struct bfd_in_memory *) abfd->iostream; + get = size; + if (abfd->where + get > bim->size) + { + if (bim->size < (bfd_size_type) abfd->where) + get = 0; + else + get = bim->size - abfd->where; + bfd_set_error (bfd_error_file_truncated); + } + memcpy (ptr, bim->buffer + abfd->where, (size_t) get); + return get; +} + +static file_ptr +memory_bwrite (bfd *abfd, const void *ptr, file_ptr size) +{ + struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; + + if (abfd->where + size > bim->size) + { + bfd_size_type newsize, oldsize; + + oldsize = (bim->size + 127) & ~(bfd_size_type) 127; + bim->size = abfd->where + size; + /* Round up to cut down on memory fragmentation */ + newsize = (bim->size + 127) & ~(bfd_size_type) 127; + if (newsize > oldsize) + { + bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, newsize); + if (bim->buffer == NULL) + { + bim->size = 0; + return 0; + } + if (newsize > bim->size) + memset (bim->buffer + bim->size, 0, newsize - bim->size); + } + } + memcpy (bim->buffer + abfd->where, ptr, (size_t) size); + return size; +} + +static file_ptr +memory_btell (bfd *abfd) +{ + return abfd->where; +} + +static int +memory_bseek (bfd *abfd, file_ptr position, int direction) +{ + file_ptr nwhere; + struct bfd_in_memory *bim; + + bim = (struct bfd_in_memory *) abfd->iostream; + + if (direction == SEEK_SET) + nwhere = position; + else + nwhere = abfd->where + position; + + if (nwhere < 0) + { + abfd->where = 0; + errno = EINVAL; + return -1; + } + + if ((bfd_size_type)nwhere > bim->size) + { + if (abfd->direction == write_direction + || abfd->direction == both_direction) + { + bfd_size_type newsize, oldsize; + + oldsize = (bim->size + 127) & ~(bfd_size_type) 127; + bim->size = nwhere; + /* Round up to cut down on memory fragmentation */ + newsize = (bim->size + 127) & ~(bfd_size_type) 127; + if (newsize > oldsize) + { + bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, newsize); + if (bim->buffer == NULL) + { + errno = EINVAL; + bim->size = 0; + return -1; + } + memset (bim->buffer + oldsize, 0, newsize - oldsize); + } + } + else + { + abfd->where = bim->size; + errno = EINVAL; + bfd_set_error (bfd_error_file_truncated); + return -1; + } + } + return 0; +} + +static int +memory_bclose (struct bfd *abfd) +{ + struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; + + if (bim->buffer != NULL) + free (bim->buffer); + free (bim); + abfd->iostream = NULL; + + return TRUE; +} + +static int +memory_bflush (bfd *abfd ATTRIBUTE_UNUSED) +{ + return 0; +} + +static int +memory_bstat (bfd *abfd, struct stat *statbuf) +{ + struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; + + memset (statbuf, 0, sizeof (statbuf)); + statbuf->st_size = bim->size; + + return 0; +} + +static void * +memory_bmmap (bfd *abfd ATTRIBUTE_UNUSED, void *addr ATTRIBUTE_UNUSED, + bfd_size_type len ATTRIBUTE_UNUSED, int prot ATTRIBUTE_UNUSED, + int flags ATTRIBUTE_UNUSED, file_ptr offset ATTRIBUTE_UNUSED) +{ + return (void *)-1; +} + +const struct bfd_iovec _bfd_memory_iovec = +{ + &memory_bread, &memory_bwrite, &memory_btell, &memory_bseek, + &memory_bclose, &memory_bflush, &memory_bstat, &memory_bmmap +}; diff --git a/contrib/gdb-7/bfd/binary.c b/contrib/gdb-7/bfd/binary.c index d264a09209..2af0293ef4 100644 --- a/contrib/gdb-7/bfd/binary.c +++ b/contrib/gdb-7/bfd/binary.c @@ -307,6 +307,8 @@ binary_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED, #define binary_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define binary_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define binary_bfd_link_just_syms _bfd_generic_link_just_syms +#define binary_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define binary_bfd_link_add_symbols _bfd_generic_link_add_symbols #define binary_bfd_final_link _bfd_generic_final_link #define binary_bfd_link_split_section _bfd_generic_link_split_section diff --git a/contrib/gdb-7/bfd/cache.c b/contrib/gdb-7/bfd/cache.c index cf1869d0ed..2239c28aac 100644 --- a/contrib/gdb-7/bfd/cache.c +++ b/contrib/gdb-7/bfd/cache.c @@ -144,33 +144,33 @@ bfd_cache_delete (bfd *abfd) static bfd_boolean close_one (void) { - register bfd *kill; + register bfd *to_kill; if (bfd_last_cache == NULL) - kill = NULL; + to_kill = NULL; else { - for (kill = bfd_last_cache->lru_prev; - ! kill->cacheable; - kill = kill->lru_prev) + for (to_kill = bfd_last_cache->lru_prev; + ! to_kill->cacheable; + to_kill = to_kill->lru_prev) { - if (kill == bfd_last_cache) + if (to_kill == bfd_last_cache) { - kill = NULL; + to_kill = NULL; break; } } } - if (kill == NULL) + if (to_kill == NULL) { /* There are no open cacheable BFD's. */ return TRUE; } - kill->where = real_ftell ((FILE *) kill->iostream); + to_kill->where = real_ftell ((FILE *) to_kill->iostream); - return bfd_cache_delete (kill); + return bfd_cache_delete (to_kill); } /* Check to see if the required BFD is the same as the last one diff --git a/contrib/gdb-7/bfd/coffgen.c b/contrib/gdb-7/bfd/coffgen.c index 5f6921d9d9..fc82d57dd7 100644 --- a/contrib/gdb-7/bfd/coffgen.c +++ b/contrib/gdb-7/bfd/coffgen.c @@ -307,20 +307,20 @@ coff_object_p (bfd *abfd) /* Get the BFD section from a COFF symbol section number. */ asection * -coff_section_from_bfd_index (bfd *abfd, int index) +coff_section_from_bfd_index (bfd *abfd, int section_index) { struct bfd_section *answer = abfd->sections; - if (index == N_ABS) + if (section_index == N_ABS) return bfd_abs_section_ptr; - if (index == N_UNDEF) + if (section_index == N_UNDEF) return bfd_und_section_ptr; - if (index == N_DEBUG) + if (section_index == N_DEBUG) return bfd_abs_section_ptr; while (answer) { - if (answer->target_index == index) + if (answer->target_index == section_index) return answer; answer = answer->next; } @@ -2152,6 +2152,7 @@ coff_find_nearest_line (bfd *abfd, maxdiff = (bfd_vma) 0 - (bfd_vma) 1; while (1) { + bfd_vma file_addr; combined_entry_type *p2; for (p2 = p + 1 + p->u.syment.n_numaux; @@ -2170,11 +2171,16 @@ coff_find_nearest_line (bfd *abfd, } } + file_addr = (bfd_vma) p2->u.syment.n_value; + /* PR 11512: Include the section address of the function name symbol. */ + if (p2->u.syment.n_scnum > 0) + file_addr += coff_section_from_bfd_index (abfd, + p2->u.syment.n_scnum)->vma; /* We use <= MAXDIFF here so that if we get a zero length file, we actually use the next file entry. */ if (p2 < pend - && offset + sec_vma >= (bfd_vma) p2->u.syment.n_value - && offset + sec_vma - (bfd_vma) p2->u.syment.n_value <= maxdiff) + && offset + sec_vma >= file_addr + && offset + sec_vma - file_addr <= maxdiff) { *filename_ptr = (char *) p->u.syment._n._n_n._n_offset; maxdiff = offset + sec_vma - p2->u.syment.n_value; diff --git a/contrib/gdb-7/bfd/compress.c b/contrib/gdb-7/bfd/compress.c index 5b6ee0e6c2..fe1b0fd3b3 100644 --- a/contrib/gdb-7/bfd/compress.c +++ b/contrib/gdb-7/bfd/compress.c @@ -1,5 +1,5 @@ -/* ELF attributes support (based on ARM EABI attributes). - Copyright 2008 +/* Compressed section support (intended for debug sections). + Copyright 2008, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -51,12 +51,10 @@ DESCRIPTION */ bfd_boolean -bfd_uncompress_section_contents (bfd_byte **buffer, bfd_size_type *size) +bfd_uncompress_section_contents (bfd_byte **buffer ATTRIBUTE_UNUSED, + bfd_size_type *size ATTRIBUTE_UNUSED) { #ifndef HAVE_ZLIB_H - /* These are just to quiet gcc. */ - buffer = 0; - size = 0; return FALSE; #else bfd_size_type compressed_size = *size; diff --git a/contrib/gdb-7/bfd/config.bfd b/contrib/gdb-7/bfd/config.bfd index e340251137..1015f3cc44 100644 --- a/contrib/gdb-7/bfd/config.bfd +++ b/contrib/gdb-7/bfd/config.bfd @@ -31,7 +31,6 @@ targ_underscore=no # Catch obsolete configurations. case $targ in - maxq-*-coff | \ null) if test "x$enable_obsolete" != xyes; then echo "*** Configuration $targ is obsolete." >&2 @@ -47,6 +46,7 @@ case $targ in m68*-apollo-* | \ m68*-bull-sysv* | \ m68*-*-rtemscoff* | \ + maxq-*-coff | \ i960-*-rtems* | \ or32-*-rtems* | \ m68*-*-lynxos* | \ @@ -90,7 +90,6 @@ m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch" ;; m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch" ;; m68*) targ_archs=bfd_m68k_arch ;; m88*) targ_archs=bfd_m88k_arch ;; -maxq*) targ_archs=bfd_maxq_arch ;; microblaze*) targ_archs=bfd_microblaze_arch ;; mips*) targ_archs=bfd_mips_arch ;; or32*) targ_archs=bfd_or32_arch ;; @@ -470,7 +469,6 @@ case "${targ}" in targ_selvecs=bfd_elf32_hppa_linux_vec ;; -#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) || defined (HOST_HPPAMPEIX) hppa*-*-bsd*) targ_defvec=som_vec targ_selvecs=bfd_elf32_hppa_vec @@ -482,7 +480,6 @@ case "${targ}" in targ_defvec=som_vec targ_selvecs=bfd_elf32_hppa_vec ;; -#endif /* defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) */ i370-*-*) targ_defvec=bfd_elf32_i370_vec @@ -499,15 +496,15 @@ case "${targ}" in targ_selvecs=i386coff_vec ;; i[3-7]86-*-solaris2*) - targ_defvec=bfd_elf32_i386_vec - targ_selvecs=i386coff_vec - targ64_selvecs="bfd_elf64_x86_64_vec bfd_elf64_l1om_vec" + targ_defvec=bfd_elf32_i386_sol2_vec + targ_selvecs="i386coff_vec" + targ64_selvecs="bfd_elf64_x86_64_sol2_vec bfd_elf64_l1om_vec" want64=true ;; #ifdef BFD64 x86_64-*-solaris2*) - targ_defvec=bfd_elf32_i386_vec - targ_selvecs="bfd_elf64_x86_64_vec bfd_elf64_l1om_vec i386coff_vec" + targ_defvec=bfd_elf32_i386_sol2_vec + targ_selvecs="bfd_elf64_x86_64_sol2_vec bfd_elf64_l1om_vec i386coff_vec" want64=true ;; #endif @@ -543,8 +540,8 @@ case "${targ}" in ;; i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*) targ_defvec=mach_o_i386_vec - targ_selvecs="mach_o_i386_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" - targ_archs="bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch" + targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" + targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch" ;; i[3-7]86-sequent-bsd*) targ_defvec=i386dynix_vec @@ -605,9 +602,9 @@ case "${targ}" in ;; #ifdef BFD64 x86_64-*-darwin*) - targ_defvec=mach_o_le_vec - targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" - targ_archs="bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch" + targ_defvec=mach_o_x86_64_vec + targ_selvecs="mach_o_i386_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" + targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch" want64=true ;; x86_64-*-dicos*) @@ -639,7 +636,7 @@ case "${targ}" in targ_defvec=x86_64pe_vec targ_selvecs="x86_64pe_vec x86_64pei_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec" want64=true - targ_underscore=yes + targ_underscore=no ;; #endif i[3-7]86-*-lynxos*) @@ -882,10 +879,6 @@ case "${targ}" in targ_underscore=yes ;; - maxq-*-coff) - targ_defvec=maxqcoff_vec - ;; - mcore-*-elf) targ_defvec=bfd_elf32_mcore_big_vec targ_selvecs="bfd_elf32_mcore_big_vec bfd_elf32_mcore_little_vec" @@ -1153,7 +1146,7 @@ case "${targ}" in powerpc-*-darwin* | powerpc-*-macos10* | powerpc-*-rhapsody*) targ_defvec=mach_o_be_vec targ_selvecs="mach_o_be_vec mach_o_le_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" - targ_archs="bfd_powerpc_arch bfd_rs6000_arch bfd_i386_arch" + targ_archs="$targ_archs bfd_i386_arch" ;; powerpc-*-macos*) targ_defvec=pmac_xcoff_vec @@ -1191,6 +1184,11 @@ case "${targ}" in targ_selvecs="bfd_powerpcle_pei_vec bfd_powerpc_pei_vec bfd_powerpcle_pe_vec bfd_powerpc_pe_vec" ;; + rx-*-elf) + targ_defvec=bfd_elf32_rx_le_vec + targ_selvecs="bfd_elf32_rx_be_vec bfd_elf32_rx_le_vec" + ;; + s390-*-linux*) targ_defvec=bfd_elf32_s390_vec targ64_selvecs=bfd_elf64_s390_vec @@ -1252,7 +1250,7 @@ case "${targ}" in sh-*-uclinux* | sh[12]-*-uclinux*) targ_defvec=bfd_elf32_sh_vec - targ_selvecs="bfd_elf32_shblin_vec bfd_elf32_shlin_vec" + targ_selvecs="bfd_elf32_shl_vec bfd_elf32_shblin_vec bfd_elf32_shlin_vec bfd_elf32_shfd_vec bfd_elf32_shbfd_vec" #ifdef BFD64 targ_selvecs="${targ_selvecs} bfd_elf32_sh64lin_vec bfd_elf32_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf64_sh64blin_vec" #endif @@ -1460,6 +1458,11 @@ case "${targ}" in ;; #endif + tic6x-*-elf) + targ_defvec=bfd_elf32_tic6x_le_vec + targ_selvecs=bfd_elf32_tic6x_be_vec + ;; + tic80*-*-*) targ_defvec=tic80coff_vec targ_underscore=yes @@ -1500,10 +1503,6 @@ case "${targ}" in targ_defvec=bfd_elf32_vax_vec ;; - vax*-*-*vms*) - targ_defvec=vms_vax_vec - ;; - we32k-*-*) targ_defvec=we32kcoff_vec ;; diff --git a/contrib/gdb-7/bfd/dwarf1.c b/contrib/gdb-7/bfd/dwarf1.c index 26740448cd..375f4cf166 100644 --- a/contrib/gdb-7/bfd/dwarf1.c +++ b/contrib/gdb-7/bfd/dwarf1.c @@ -1,5 +1,5 @@ /* DWARF 1 find nearest line (_bfd_dwarf1_find_nearest_line). - Copyright 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008 + Copyright 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Gavin Romig-Koch of Cygnus Solutions (gavin@cygnus.com). @@ -251,8 +251,8 @@ parse_die (bfd * abfd, break; case FORM_STRING: if (attr == AT_name) - aDieInfo->name = (char *)xptr; - xptr += strlen (aDieInfo->name) + 1; + aDieInfo->name = (char *) xptr; + xptr += strlen ((char *) xptr) + 1; break; } } diff --git a/contrib/gdb-7/bfd/dwarf2.c b/contrib/gdb-7/bfd/dwarf2.c index b54ef6e785..6983a1c349 100644 --- a/contrib/gdb-7/bfd/dwarf2.c +++ b/contrib/gdb-7/bfd/dwarf2.c @@ -1,6 +1,6 @@ /* DWARF 2 support. Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions (gavin@cygnus.com). @@ -45,6 +45,7 @@ struct line_head unsigned short version; bfd_vma prologue_length; unsigned char minimum_instruction_length; + unsigned char maximum_ops_per_insn; unsigned char default_is_stmt; int line_base; unsigned char line_range; @@ -216,6 +217,9 @@ struct comp_unit by its reference. */ bfd_byte *info_ptr_unit; + /* Pointer to the start of the debug section, for DW_FORM_ref_addr. */ + bfd_byte *sec_info_ptr; + /* The offset into .debug_line of the line number table. */ unsigned long line_offset; @@ -401,6 +405,54 @@ lookup_info_hash_table (struct info_hash_table *hash_table, const char *key) return entry ? entry->head : NULL; } +/* Read a section, uncompress it if necessary, and relocate it. */ + +static bfd_boolean +read_and_uncompress_section (bfd * abfd, + asection * msec, + bfd_boolean section_is_compressed, + asymbol ** syms, + bfd_byte ** section_buffer, + bfd_size_type * section_size) +{ + /* Get the unrelocated contents of the section. */ + *section_buffer = (bfd_byte *) bfd_malloc (*section_size); + if (! *section_buffer) + return FALSE; + if (! bfd_get_section_contents (abfd, msec, *section_buffer, + 0, *section_size)) + return FALSE; + + if (section_is_compressed) + { + if (! bfd_uncompress_section_contents (section_buffer, section_size)) + { + (*_bfd_error_handler) (_("Dwarf Error: unable to decompress %s section."), + bfd_get_section_name (abfd, msec)); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + } + + if (syms) + { + /* We want to relocate the data we've already read (and + decompressed), so we store a pointer to the data in + the bfd_section, and tell it that the contents are + already in memory. */ + BFD_ASSERT (msec->contents == NULL && (msec->flags & SEC_IN_MEMORY) == 0); + msec->contents = *section_buffer; + msec->flags |= SEC_IN_MEMORY; + msec->size = *section_size; + *section_buffer + = bfd_simple_get_relocated_section_contents (abfd, msec, NULL, syms); + if (! *section_buffer) + return FALSE; + } + + return TRUE; +} + /* Read a section into its appropriate place in the dwarf2_debug struct (indicated by SECTION_BUFFER and SECTION_SIZE). If SYMS is not NULL, use bfd_simple_get_relocated_section_contents to read the @@ -436,32 +488,10 @@ read_section (bfd * abfd, } *section_size = msec->rawsize ? msec->rawsize : msec->size; - if (syms) - { - *section_buffer - = bfd_simple_get_relocated_section_contents (abfd, msec, NULL, syms); - if (! *section_buffer) - return FALSE; - } - else - { - *section_buffer = (bfd_byte *) bfd_malloc (*section_size); - if (! *section_buffer) - return FALSE; - if (! bfd_get_section_contents (abfd, msec, *section_buffer, - 0, *section_size)) - return FALSE; - } - if (section_is_compressed) - { - if (! bfd_uncompress_section_contents (section_buffer, section_size)) - { - (*_bfd_error_handler) (_("Dwarf Error: unable to decompress %s section."), compressed_section_name); - bfd_set_error (bfd_error_bad_value); - return FALSE; - } - } + if (! read_and_uncompress_section (abfd, msec, section_is_compressed, + syms, section_buffer, section_size)) + return FALSE; } /* It is possible to get a bad value for the offset into the section @@ -643,10 +673,12 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash) if (! read_section (abfd, ".debug_abbrev", ".zdebug_abbrev", stash->syms, offset, &stash->dwarf_abbrev_buffer, &stash->dwarf_abbrev_size)) - return 0; + return NULL; amt = sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE; abbrevs = (struct abbrev_info **) bfd_zalloc (abfd, amt); + if (abbrevs == NULL) + return NULL; abbrev_ptr = stash->dwarf_abbrev_buffer + offset; abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); @@ -657,6 +689,8 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash) { amt = sizeof (struct abbrev_info); cur_abbrev = (struct abbrev_info *) bfd_zalloc (abfd, amt); + if (cur_abbrev == NULL) + return NULL; /* Read in abbrev header. */ cur_abbrev->number = abbrev_number; @@ -753,7 +787,7 @@ read_attribute_value (struct attribute *attr, case DW_FORM_ref_addr: /* DW_FORM_ref_addr is an address in DWARF2, and an offset in DWARF3. */ - if (unit->version == 3) + if (unit->version == 3 || unit->version == 4) { if (unit->offset_size == 4) attr->u.val = read_4_bytes (unit->abfd, info_ptr); @@ -767,9 +801,18 @@ read_attribute_value (struct attribute *attr, attr->u.val = read_address (unit, info_ptr); info_ptr += unit->addr_size; break; + case DW_FORM_sec_offset: + if (unit->offset_size == 4) + attr->u.val = read_4_bytes (unit->abfd, info_ptr); + else + attr->u.val = read_8_bytes (unit->abfd, info_ptr); + info_ptr += unit->offset_size; + break; case DW_FORM_block2: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_2_bytes (abfd, info_ptr); info_ptr += 2; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -779,6 +822,8 @@ read_attribute_value (struct attribute *attr, case DW_FORM_block4: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_4_bytes (abfd, info_ptr); info_ptr += 4; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -805,9 +850,12 @@ read_attribute_value (struct attribute *attr, attr->u.str = read_indirect_string (unit, info_ptr, &bytes_read); info_ptr += bytes_read; break; + case DW_FORM_exprloc: case DW_FORM_block: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -817,6 +865,8 @@ read_attribute_value (struct attribute *attr, case DW_FORM_block1: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_1_byte (abfd, info_ptr); info_ptr += 1; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -831,6 +881,9 @@ read_attribute_value (struct attribute *attr, attr->u.val = read_1_byte (abfd, info_ptr); info_ptr += 1; break; + case DW_FORM_flag_present: + attr->u.val = 1; + break; case DW_FORM_sdata: attr->u.sval = read_signed_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; @@ -855,6 +908,10 @@ read_attribute_value (struct attribute *attr, attr->u.val = read_8_bytes (abfd, info_ptr); info_ptr += 8; break; + case DW_FORM_ref_sig8: + attr->u.val = read_8_bytes (abfd, info_ptr); + info_ptr += 8; + break; case DW_FORM_ref_udata: attr->u.val = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; @@ -868,6 +925,7 @@ read_attribute_value (struct attribute *attr, (*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %u."), form); bfd_set_error (bfd_error_bad_value); + return NULL; } return info_ptr; } @@ -897,7 +955,8 @@ struct line_info char *filename; unsigned int line; unsigned int column; - int end_sequence; /* End of (sequential) code sequence. */ + unsigned char op_index; + unsigned char end_sequence; /* End of (sequential) code sequence. */ }; struct fileinfo @@ -908,16 +967,24 @@ struct fileinfo unsigned int size; }; +struct line_sequence +{ + bfd_vma low_pc; + struct line_sequence* prev_sequence; + struct line_info* last_line; /* Largest VMA. */ +}; + struct line_info_table { - bfd* abfd; - unsigned int num_files; - unsigned int num_dirs; - char *comp_dir; - char **dirs; - struct fileinfo* files; - struct line_info* last_line; /* largest VMA */ - struct line_info* lcl_head; /* local head; used in 'add_line_info' */ + bfd* abfd; + unsigned int num_files; + unsigned int num_dirs; + unsigned int num_sequences; + char * comp_dir; + char ** dirs; + struct fileinfo* files; + struct line_sequence* sequences; + struct line_info* lcl_head; /* Local head; used in 'add_line_info'. */ }; /* Remember some information about each function. If the function is @@ -963,7 +1030,9 @@ new_line_sorts_after (struct line_info *new_line, struct line_info *line) { return (new_line->address > line->address || (new_line->address == line->address - && new_line->end_sequence < line->end_sequence)); + && (new_line->op_index > line->op_index + || (new_line->op_index == line->op_index + && new_line->end_sequence < line->end_sequence)))); } @@ -972,19 +1041,26 @@ new_line_sorts_after (struct line_info *new_line, struct line_info *line) highest to lowest VMA (with possible duplicates); that is, line_info->prev_line always accesses an equal or smaller VMA. */ -static void +static bfd_boolean add_line_info (struct line_info_table *table, bfd_vma address, + unsigned char op_index, char *filename, unsigned int line, unsigned int column, int end_sequence) { bfd_size_type amt = sizeof (struct line_info); + struct line_sequence* seq = table->sequences; struct line_info* info = (struct line_info *) bfd_alloc (table->abfd, amt); + if (info == NULL) + return FALSE; + /* Set member data of 'info'. */ + info->prev_line = NULL; info->address = address; + info->op_index = op_index; info->line = line; info->column = column; info->end_sequence = end_sequence; @@ -992,8 +1068,9 @@ add_line_info (struct line_info_table *table, if (filename && filename[0]) { info->filename = (char *) bfd_alloc (table->abfd, strlen (filename) + 1); - if (info->filename) - strcpy (info->filename, filename); + if (info->filename == NULL) + return FALSE; + strcpy (info->filename, filename); } else info->filename = NULL; @@ -1008,28 +1085,42 @@ add_line_info (struct line_info_table *table, p...z a...j (where a < j < p < z) Note: table->lcl_head is used to head an *actual* or *possible* - sequence within the list (such as a...j) that is not directly + sub-sequence within the list (such as a...j) that is not directly headed by table->last_line Note: we may receive duplicate entries from 'decode_line_info'. */ - if (table->last_line - && table->last_line->address == address - && table->last_line->end_sequence == end_sequence) + if (seq + && seq->last_line->address == address + && seq->last_line->op_index == op_index + && seq->last_line->end_sequence == end_sequence) { /* We only keep the last entry with the same address and end sequence. See PR ld/4986. */ - if (table->lcl_head == table->last_line) + if (table->lcl_head == seq->last_line) table->lcl_head = info; - info->prev_line = table->last_line->prev_line; - table->last_line = info; + info->prev_line = seq->last_line->prev_line; + seq->last_line = info; } - else if (!table->last_line - || new_line_sorts_after (info, table->last_line)) + else if (!seq || seq->last_line->end_sequence) { - /* Normal case: add 'info' to the beginning of the list */ - info->prev_line = table->last_line; - table->last_line = info; + /* Start a new line sequence. */ + amt = sizeof (struct line_sequence); + seq = (struct line_sequence *) bfd_malloc (amt); + if (seq == NULL) + return FALSE; + seq->low_pc = address; + seq->prev_sequence = table->sequences; + seq->last_line = info; + table->lcl_head = info; + table->sequences = seq; + table->num_sequences++; + } + else if (new_line_sorts_after (info, seq->last_line)) + { + /* Normal case: add 'info' to the beginning of the current sequence. */ + info->prev_line = seq->last_line; + seq->last_line = info; /* lcl_head: initialize to head a *possible* sequence at the end. */ if (!table->lcl_head) @@ -1045,9 +1136,9 @@ add_line_info (struct line_info_table *table, } else { - /* Abnormal and hard: Neither 'last_line' nor 'lcl_head' are valid - heads for 'info'. Reset 'lcl_head'. */ - struct line_info* li2 = table->last_line; /* always non-NULL */ + /* Abnormal and hard: Neither 'last_line' nor 'lcl_head' + are valid heads for 'info'. Reset 'lcl_head'. */ + struct line_info* li2 = seq->last_line; /* Always non-NULL. */ struct line_info* li1 = li2->prev_line; while (li1) @@ -1062,7 +1153,10 @@ add_line_info (struct line_info_table *table, table->lcl_head = li2; info->prev_line = table->lcl_head->prev_line; table->lcl_head->prev_line = info; + if (address < seq->low_pc) + seq->low_pc = address; } + return TRUE; } /* Extract a fully qualified filename from a line info table. @@ -1087,40 +1181,40 @@ concat_filename (struct line_info_table *table, unsigned int file) if (!IS_ABSOLUTE_PATH (filename)) { - char *dirname = NULL; - char *subdirname = NULL; + char *dir_name = NULL; + char *subdir_name = NULL; char *name; size_t len; if (table->files[file - 1].dir) - subdirname = table->dirs[table->files[file - 1].dir - 1]; + subdir_name = table->dirs[table->files[file - 1].dir - 1]; - if (!subdirname || !IS_ABSOLUTE_PATH (subdirname)) - dirname = table->comp_dir; + if (!subdir_name || !IS_ABSOLUTE_PATH (subdir_name)) + dir_name = table->comp_dir; - if (!dirname) + if (!dir_name) { - dirname = subdirname; - subdirname = NULL; + dir_name = subdir_name; + subdir_name = NULL; } - if (!dirname) + if (!dir_name) return strdup (filename); - len = strlen (dirname) + strlen (filename) + 2; + len = strlen (dir_name) + strlen (filename) + 2; - if (subdirname) + if (subdir_name) { - len += strlen (subdirname) + 1; + len += strlen (subdir_name) + 1; name = (char *) bfd_malloc (len); if (name) - sprintf (name, "%s/%s/%s", dirname, subdirname, filename); + sprintf (name, "%s/%s/%s", dir_name, subdir_name, filename); } else { name = (char *) bfd_malloc (len); if (name) - sprintf (name, "%s/%s", dirname, filename); + sprintf (name, "%s/%s", dir_name, filename); } return name; @@ -1129,8 +1223,9 @@ concat_filename (struct line_info_table *table, unsigned int file) return strdup (filename); } -static void -arange_add (bfd *abfd, struct arange *first_arange, bfd_vma low_pc, bfd_vma high_pc) +static bfd_boolean +arange_add (bfd *abfd, struct arange *first_arange, + bfd_vma low_pc, bfd_vma high_pc) { struct arange *arange; @@ -1139,7 +1234,7 @@ arange_add (bfd *abfd, struct arange *first_arange, bfd_vma low_pc, bfd_vma high { first_arange->low = low_pc; first_arange->high = high_pc; - return; + return TRUE; } /* Next see if we can cheaply extend an existing range. */ @@ -1149,12 +1244,12 @@ arange_add (bfd *abfd, struct arange *first_arange, bfd_vma low_pc, bfd_vma high if (low_pc == arange->high) { arange->high = high_pc; - return; + return TRUE; } if (high_pc == arange->low) { arange->low = low_pc; - return; + return TRUE; } arange = arange->next; } @@ -1163,10 +1258,110 @@ arange_add (bfd *abfd, struct arange *first_arange, bfd_vma low_pc, bfd_vma high /* Need to allocate a new arange and insert it into the arange list. Order isn't significant, so just insert after the first arange. */ arange = (struct arange *) bfd_zalloc (abfd, sizeof (*arange)); + if (arange == NULL) + return FALSE; arange->low = low_pc; arange->high = high_pc; arange->next = first_arange->next; first_arange->next = arange; + return TRUE; +} + +/* Compare function for line sequences. */ + +static int +compare_sequences (const void* a, const void* b) +{ + const struct line_sequence* seq1 = a; + const struct line_sequence* seq2 = b; + + /* Sort by low_pc as the primary key. */ + if (seq1->low_pc < seq2->low_pc) + return -1; + if (seq1->low_pc > seq2->low_pc) + return 1; + + /* If low_pc values are equal, sort in reverse order of + high_pc, so that the largest region comes first. */ + if (seq1->last_line->address < seq2->last_line->address) + return 1; + if (seq1->last_line->address > seq2->last_line->address) + return -1; + + if (seq1->last_line->op_index < seq2->last_line->op_index) + return 1; + if (seq1->last_line->op_index > seq2->last_line->op_index) + return -1; + + return 0; +} + +/* Sort the line sequences for quick lookup. */ + +static bfd_boolean +sort_line_sequences (struct line_info_table* table) +{ + bfd_size_type amt; + struct line_sequence* sequences; + struct line_sequence* seq; + unsigned int n = 0; + unsigned int num_sequences = table->num_sequences; + bfd_vma last_high_pc; + + if (num_sequences == 0) + return TRUE; + + /* Allocate space for an array of sequences. */ + amt = sizeof (struct line_sequence) * num_sequences; + sequences = (struct line_sequence *) bfd_alloc (table->abfd, amt); + if (sequences == NULL) + return FALSE; + + /* Copy the linked list into the array, freeing the original nodes. */ + seq = table->sequences; + for (n = 0; n < num_sequences; n++) + { + struct line_sequence* last_seq = seq; + + BFD_ASSERT (seq); + sequences[n].low_pc = seq->low_pc; + sequences[n].prev_sequence = NULL; + sequences[n].last_line = seq->last_line; + seq = seq->prev_sequence; + free (last_seq); + } + BFD_ASSERT (seq == NULL); + + qsort (sequences, n, sizeof (struct line_sequence), compare_sequences); + + /* Make the list binary-searchable by trimming overlapping entries + and removing nested entries. */ + num_sequences = 1; + last_high_pc = sequences[0].last_line->address; + for (n = 1; n < table->num_sequences; n++) + { + if (sequences[n].low_pc < last_high_pc) + { + if (sequences[n].last_line->address <= last_high_pc) + /* Skip nested entries. */ + continue; + + /* Trim overlapping entries. */ + sequences[n].low_pc = last_high_pc; + } + last_high_pc = sequences[n].last_line->address; + if (n > num_sequences) + { + /* Close up the gap. */ + sequences[num_sequences].low_pc = sequences[n].low_pc; + sequences[num_sequences].last_line = sequences[n].last_line; + } + num_sequences++; + } + + table->sequences = sequences; + table->num_sequences = num_sequences; + return TRUE; } /* Decode the line number information for UNIT. */ @@ -1187,10 +1382,12 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) if (! read_section (abfd, ".debug_line", ".zdebug_line", stash->syms, unit->line_offset, &stash->dwarf_line_buffer, &stash->dwarf_line_size)) - return 0; + return NULL; amt = sizeof (struct line_info_table); table = (struct line_info_table *) bfd_alloc (abfd, amt); + if (table == NULL) + return NULL; table->abfd = abfd; table->comp_dir = unit->comp_dir; @@ -1200,8 +1397,9 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) table->num_dirs = 0; table->dirs = NULL; - table->files = NULL; - table->last_line = NULL; + table->num_sequences = 0; + table->sequences = NULL; + table->lcl_head = NULL; line_ptr = stash->dwarf_line_buffer + unit->line_offset; @@ -1225,6 +1423,13 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) } line_end = line_ptr + lh.total_length; lh.version = read_2_bytes (abfd, line_ptr); + if (lh.version < 2 || lh.version > 4) + { + (*_bfd_error_handler) + (_("Dwarf Error: Unhandled .debug_line version %d."), lh.version); + bfd_set_error (bfd_error_bad_value); + return NULL; + } line_ptr += 2; if (offset_size == 4) lh.prologue_length = read_4_bytes (abfd, line_ptr); @@ -1233,6 +1438,20 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) line_ptr += offset_size; lh.minimum_instruction_length = read_1_byte (abfd, line_ptr); line_ptr += 1; + if (lh.version >= 4) + { + lh.maximum_ops_per_insn = read_1_byte (abfd, line_ptr); + line_ptr += 1; + } + else + lh.maximum_ops_per_insn = 1; + if (lh.maximum_ops_per_insn == 0) + { + (*_bfd_error_handler) + (_("Dwarf Error: Invalid maximum operations per instruction.")); + bfd_set_error (bfd_error_bad_value); + return NULL; + } lh.default_is_stmt = read_1_byte (abfd, line_ptr); line_ptr += 1; lh.line_base = read_1_signed_byte (abfd, line_ptr); @@ -1266,10 +1485,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) tmp = (char **) bfd_realloc (table->dirs, amt); if (tmp == NULL) - { - free (table->dirs); - return NULL; - } + goto fail; table->dirs = tmp; } @@ -1292,11 +1508,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) tmp = (struct fileinfo *) bfd_realloc (table->files, amt); if (tmp == NULL) - { - free (table->files); - free (table->dirs); - return NULL; - } + goto fail; table->files = tmp; } @@ -1320,6 +1532,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) { /* State machine registers. */ bfd_vma address = 0; + unsigned char op_index = 0; char * filename = table->num_files ? concat_filename (table, 1) : NULL; unsigned int line = 1; unsigned int column = 0; @@ -1343,11 +1556,22 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) { /* Special operand. */ adj_opcode = op_code - lh.opcode_base; - address += (adj_opcode / lh.line_range) - * lh.minimum_instruction_length; + if (lh.maximum_ops_per_insn == 1) + address += (adj_opcode / lh.line_range) + * lh.minimum_instruction_length; + else + { + address += ((op_index + (adj_opcode / lh.line_range)) + / lh.maximum_ops_per_insn) + * lh.minimum_instruction_length; + op_index = (op_index + (adj_opcode / lh.line_range)) + % lh.maximum_ops_per_insn; + } line += lh.line_base + (adj_opcode % lh.line_range); /* Append row to matrix using current values. */ - add_line_info (table, address, filename, line, column, 0); + if (!add_line_info (table, address, op_index, filename, + line, column, 0)) + goto line_fail; if (address < low_pc) low_pc = address; if (address > high_pc) @@ -1365,16 +1589,19 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) { case DW_LNE_end_sequence: end_sequence = 1; - add_line_info (table, address, filename, line, column, - end_sequence); + if (!add_line_info (table, address, op_index, filename, + line, column, end_sequence)) + goto line_fail; if (address < low_pc) low_pc = address; if (address > high_pc) high_pc = address; - arange_add (unit->abfd, &unit->arange, low_pc, high_pc); + if (!arange_add (unit->abfd, &unit->arange, low_pc, high_pc)) + goto line_fail; break; case DW_LNE_set_address: address = read_address (unit, line_ptr); + op_index = 0; line_ptr += unit->addr_size; break; case DW_LNE_define_file: @@ -1388,12 +1615,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) amt *= sizeof (struct fileinfo); tmp = (struct fileinfo *) bfd_realloc (table->files, amt); if (tmp == NULL) - { - free (table->files); - free (table->dirs); - free (filename); - return NULL; - } + goto line_fail; table->files = tmp; } table->files[table->num_files].name = cur_file; @@ -1415,22 +1637,34 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) default: (*_bfd_error_handler) (_("Dwarf Error: mangled line number section.")); bfd_set_error (bfd_error_bad_value); - free (filename); - free (table->files); - free (table->dirs); - return NULL; + line_fail: + if (filename != NULL) + free (filename); + goto fail; } break; case DW_LNS_copy: - add_line_info (table, address, filename, line, column, 0); + if (!add_line_info (table, address, op_index, + filename, line, column, 0)) + goto line_fail; if (address < low_pc) low_pc = address; if (address > high_pc) high_pc = address; break; case DW_LNS_advance_pc: - address += lh.minimum_instruction_length - * read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + if (lh.maximum_ops_per_insn == 1) + address += lh.minimum_instruction_length + * read_unsigned_leb128 (abfd, line_ptr, + &bytes_read); + else + { + bfd_vma adjust = read_unsigned_leb128 (abfd, line_ptr, + &bytes_read); + address = ((op_index + adjust) / lh.maximum_ops_per_insn) + * lh.minimum_instruction_length; + op_index = (op_index + adjust) % lh.maximum_ops_per_insn; + } line_ptr += bytes_read; break; case DW_LNS_advance_line: @@ -1460,24 +1694,30 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) case DW_LNS_set_basic_block: break; case DW_LNS_const_add_pc: - address += lh.minimum_instruction_length - * ((255 - lh.opcode_base) / lh.line_range); + if (lh.maximum_ops_per_insn == 1) + address += lh.minimum_instruction_length + * ((255 - lh.opcode_base) / lh.line_range); + else + { + bfd_vma adjust = ((255 - lh.opcode_base) / lh.line_range); + address += lh.minimum_instruction_length + * ((op_index + adjust) / lh.maximum_ops_per_insn); + op_index = (op_index + adjust) % lh.maximum_ops_per_insn; + } break; case DW_LNS_fixed_advance_pc: address += read_2_bytes (abfd, line_ptr); + op_index = 0; line_ptr += 2; break; default: - { - int i; - - /* Unknown standard opcode, ignore it. */ - for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++) - { - (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read); - line_ptr += bytes_read; - } - } + /* Unknown standard opcode, ignore it. */ + for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++) + { + (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + line_ptr += bytes_read; + } + break; } } @@ -1485,7 +1725,17 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) free (filename); } - return table; + if (sort_line_sequences (table)) + return table; + + fail: + if (table->sequences != NULL) + free (table->sequences); + if (table->files != NULL) + free (table->files); + if (table->dirs != NULL) + free (table->dirs); + return NULL; } /* If ADDR is within TABLE set the output parameters and return TRUE, @@ -1495,99 +1745,51 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) static bfd_boolean lookup_address_in_line_info_table (struct line_info_table *table, bfd_vma addr, - struct funcinfo *function, const char **filename_ptr, unsigned int *linenumber_ptr) { - /* Note: table->last_line should be a descendingly sorted list. */ - struct line_info* next_line = table->last_line; - struct line_info* each_line = NULL; - *filename_ptr = NULL; - - if (!next_line) - return FALSE; - - each_line = next_line->prev_line; - - /* Check for large addresses */ - if (addr > next_line->address) - each_line = NULL; /* ensure we skip over the normal case */ - - /* Normal case: search the list; save */ - while (each_line && next_line) - { - /* If we have an address match, save this info. This allows us - to return as good as results as possible for strange debugging - info. */ - bfd_boolean addr_match = FALSE; - if (each_line->address <= addr && addr < next_line->address) - { - addr_match = TRUE; - - /* If this line appears to span functions, and addr is in the - later function, return the first line of that function instead - of the last line of the earlier one. This check is for GCC - 2.95, which emits the first line number for a function late. */ - - if (function != NULL) - { - bfd_vma lowest_pc; - struct arange *arange; - - /* Find the lowest address in the function's range list */ - lowest_pc = function->arange.low; - for (arange = &function->arange; - arange; - arange = arange->next) - { - if (function->arange.low < lowest_pc) - lowest_pc = function->arange.low; - } - /* Check for spanning function and set outgoing line info */ - if (addr >= lowest_pc - && each_line->address < lowest_pc - && next_line->address > lowest_pc) - { - *filename_ptr = next_line->filename; - *linenumber_ptr = next_line->line; - } - else - { - *filename_ptr = each_line->filename; - *linenumber_ptr = each_line->line; - } - } - else - { - *filename_ptr = each_line->filename; - *linenumber_ptr = each_line->line; - } - } - - if (addr_match && !each_line->end_sequence) - return TRUE; /* we have definitely found what we want */ - - next_line = each_line; - each_line = each_line->prev_line; + struct line_sequence *seq = NULL; + struct line_info *each_line; + int low, high, mid; + + /* Binary search the array of sequences. */ + low = 0; + high = table->num_sequences; + while (low < high) + { + mid = (low + high) / 2; + seq = &table->sequences[mid]; + if (addr < seq->low_pc) + high = mid; + else if (addr >= seq->last_line->address) + low = mid + 1; + else + break; } - /* At this point each_line is NULL but next_line is not. If we found - a candidate end-of-sequence point in the loop above, we can return - that (compatibility with a bug in the Intel compiler); otherwise, - assuming that we found the containing function for this address in - this compilation unit, return the first line we have a number for - (compatibility with GCC 2.95). */ - if (*filename_ptr == NULL && function != NULL) + if (seq && addr >= seq->low_pc && addr < seq->last_line->address) { - *filename_ptr = next_line->filename; - *linenumber_ptr = next_line->line; - return TRUE; + /* Note: seq->last_line should be a descendingly sorted list. */ + for (each_line = seq->last_line; + each_line; + each_line = each_line->prev_line) + if (addr >= each_line->address) + break; + + if (each_line + && !(each_line->end_sequence || each_line == seq->last_line)) + { + *filename_ptr = each_line->filename; + *linenumber_ptr = each_line->line; + return TRUE; + } } + *filename_ptr = NULL; return FALSE; } -/* Read in the .debug_ranges section for future reference */ +/* Read in the .debug_ranges section for future reference. */ static bfd_boolean read_debug_ranges (struct comp_unit *unit) @@ -1748,7 +1950,7 @@ find_abstract_instance_name (struct comp_unit *unit, if (!die_ref) abort (); - info_ptr = unit->stash->sec_info_ptr + die_ref; + info_ptr = unit->sec_info_ptr + die_ref; } else info_ptr = unit->info_ptr_unit + die_ref; @@ -1768,17 +1970,22 @@ find_abstract_instance_name (struct comp_unit *unit, { for (i = 0; i < abbrev->num_attrs; ++i) { - info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr); + info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, + info_ptr); + if (info_ptr == NULL) + break; switch (attr.name) { case DW_AT_name: - /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */ + /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name + over DW_AT_name. */ if (name == NULL) name = attr.u.str; break; case DW_AT_specification: name = find_abstract_instance_name (unit, &attr); break; + case DW_AT_linkage_name: case DW_AT_MIPS_linkage_name: name = attr.u.str; break; @@ -1788,11 +1995,12 @@ find_abstract_instance_name (struct comp_unit *unit, } } } - return (name); + return name; } -static void -read_rangelist (struct comp_unit *unit, struct arange *arange, bfd_uint64_t offset) +static bfd_boolean +read_rangelist (struct comp_unit *unit, struct arange *arange, + bfd_uint64_t offset) { bfd_byte *ranges_ptr; bfd_vma base_address = unit->base_address; @@ -1800,7 +2008,7 @@ read_rangelist (struct comp_unit *unit, struct arange *arange, bfd_uint64_t offs if (! unit->stash->dwarf_ranges_buffer) { if (! read_debug_ranges (unit)) - return; + return FALSE; } ranges_ptr = unit->stash->dwarf_ranges_buffer + offset; @@ -1819,8 +2027,13 @@ read_rangelist (struct comp_unit *unit, struct arange *arange, bfd_uint64_t offs if (low_pc == -1UL && high_pc != -1UL) base_address = high_pc; else - arange_add (unit->abfd, arange, base_address + low_pc, base_address + high_pc); + { + if (!arange_add (unit->abfd, arange, + base_address + low_pc, base_address + high_pc)) + return FALSE; + } } + return TRUE; } /* DWARF2 Compilation unit functions. */ @@ -1868,11 +2081,11 @@ scan_unit_for_symbols (struct comp_unit *unit) abbrev = lookup_abbrev (abbrev_number,unit->abbrevs); if (! abbrev) { - (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %u."), - abbrev_number); + (*_bfd_error_handler) + (_("Dwarf Error: Could not find abbrev number %u."), + abbrev_number); bfd_set_error (bfd_error_bad_value); - free (nested_funcs); - return FALSE; + goto fail; } var = NULL; @@ -1882,6 +2095,8 @@ scan_unit_for_symbols (struct comp_unit *unit) { bfd_size_type amt = sizeof (struct funcinfo); func = (struct funcinfo *) bfd_zalloc (abfd, amt); + if (func == NULL) + goto fail; func->tag = abbrev->tag; func->prev_func = unit->function_table; unit->function_table = func; @@ -1903,6 +2118,8 @@ scan_unit_for_symbols (struct comp_unit *unit) { bfd_size_type amt = sizeof (struct varinfo); var = (struct varinfo *) bfd_zalloc (abfd, amt); + if (var == NULL) + goto fail; var->tag = abbrev->tag; var->stack = 1; var->prev_var = unit->variable_table; @@ -1917,13 +2134,16 @@ scan_unit_for_symbols (struct comp_unit *unit) for (i = 0; i < abbrev->num_attrs; ++i) { info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr); + if (info_ptr == NULL) + return FALSE; if (func) { switch (attr.name) { case DW_AT_call_file: - func->caller_file = concat_filename (unit->line_table, attr.u.val); + func->caller_file = concat_filename (unit->line_table, + attr.u.val); break; case DW_AT_call_line: @@ -1935,11 +2155,13 @@ scan_unit_for_symbols (struct comp_unit *unit) break; case DW_AT_name: - /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */ + /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name + over DW_AT_name. */ if (func->name == NULL) func->name = attr.u.str; break; + case DW_AT_linkage_name: case DW_AT_MIPS_linkage_name: func->name = attr.u.str; break; @@ -1953,7 +2175,8 @@ scan_unit_for_symbols (struct comp_unit *unit) break; case DW_AT_ranges: - read_rangelist (unit, &func->arange, attr.u.val); + if (!read_rangelist (unit, &func->arange, attr.u.val)) + goto fail; break; case DW_AT_decl_file: @@ -1998,6 +2221,7 @@ scan_unit_for_symbols (struct comp_unit *unit) case DW_FORM_block1: case DW_FORM_block2: case DW_FORM_block4: + case DW_FORM_exprloc: if (*attr.u.blk->data == DW_OP_addr) { var->stack = 0; @@ -2028,7 +2252,8 @@ scan_unit_for_symbols (struct comp_unit *unit) if (func && high_pc != 0) { - arange_add (unit->abfd, &func->arange, low_pc, high_pc); + if (!arange_add (unit->abfd, &func->arange, low_pc, high_pc)) + goto fail; } if (abbrev->has_children) @@ -2044,10 +2269,7 @@ scan_unit_for_symbols (struct comp_unit *unit) bfd_realloc (nested_funcs, (nested_funcs_size * sizeof (struct funcinfo *))); if (tmp == NULL) - { - free (nested_funcs); - return FALSE; - } + goto fail; nested_funcs = tmp; } nested_funcs[nesting_level] = 0; @@ -2056,6 +2278,10 @@ scan_unit_for_symbols (struct comp_unit *unit) free (nested_funcs); return TRUE; + + fail: + free (nested_funcs); + return FALSE; } /* Parse a DWARF2 compilation unit starting at INFO_PTR. This @@ -2099,9 +2325,9 @@ parse_comp_unit (struct dwarf2_debug *stash, addr_size = read_1_byte (abfd, info_ptr); info_ptr += 1; - if (version != 2 && version != 3) + if (version != 2 && version != 3 && version != 4) { - (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2 and 3 information."), version); + (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information."), version); bfd_set_error (bfd_error_bad_value); return 0; } @@ -2148,6 +2374,8 @@ parse_comp_unit (struct dwarf2_debug *stash, amt = sizeof (struct comp_unit); unit = (struct comp_unit *) bfd_zalloc (abfd, amt); + if (unit == NULL) + return NULL; unit->abfd = abfd; unit->version = version; unit->addr_size = addr_size; @@ -2156,10 +2384,13 @@ parse_comp_unit (struct dwarf2_debug *stash, unit->end_ptr = end_ptr; unit->stash = stash; unit->info_ptr_unit = info_ptr_unit; + unit->sec_info_ptr = stash->sec_info_ptr; for (i = 0; i < abbrev->num_attrs; ++i) { info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr); + if (info_ptr == NULL) + return NULL; /* Store the data if it is of an attribute we want to keep in a partial symbol table. */ @@ -2187,7 +2418,8 @@ parse_comp_unit (struct dwarf2_debug *stash, break; case DW_AT_ranges: - read_rangelist (unit, &unit->arange, attr.u.val); + if (!read_rangelist (unit, &unit->arange, attr.u.val)) + return NULL; break; case DW_AT_comp_dir: @@ -2212,7 +2444,8 @@ parse_comp_unit (struct dwarf2_debug *stash, } if (high_pc != 0) { - arange_add (unit->abfd, &unit->arange, low_pc, high_pc); + if (!arange_add (unit->abfd, &unit->arange, low_pc, high_pc)) + return NULL; } unit->first_child_die_ptr = info_ptr; @@ -2298,7 +2531,7 @@ comp_unit_find_nearest_line (struct comp_unit *unit, if (func_p && (function->tag == DW_TAG_inlined_subroutine)) stash->inliner_chain = function; line_p = lookup_address_in_line_info_table (unit->line_table, addr, - function, filename_ptr, + filename_ptr, linenumber_ptr); return line_p || func_p; } @@ -2537,7 +2770,6 @@ place_sections (bfd *abfd, struct dwarf2_debug *stash) asection *sect; bfd_vma last_vma = 0, last_dwarf = 0; bfd_size_type amt; - struct adjusted_section *p; i = 0; for (sect = abfd->sections; sect != NULL; sect = sect->next) @@ -3036,26 +3268,26 @@ find_line (bfd *abfd, msec = find_debug_info (debug_bfd, msec)) { bfd_size_type size = msec->size; - bfd_byte* buffer; + bfd_byte *buffer, *tmp; + bfd_boolean is_compressed = + strcmp (msec->name, DWARF2_COMPRESSED_DEBUG_INFO) == 0; if (size == 0) continue; - buffer = (bfd_simple_get_relocated_section_contents - (debug_bfd, msec, NULL, symbols)); - if (! buffer) + if (! read_and_uncompress_section (debug_bfd, msec, + is_compressed, symbols, + &buffer, &size)) goto done; - if (strcmp (msec->name, DWARF2_COMPRESSED_DEBUG_INFO) == 0) + tmp = (bfd_byte *) bfd_realloc (stash->info_ptr_memory, + total_size + size); + if (tmp == NULL) { - if (! bfd_uncompress_section_contents (&buffer, &size)) - { - free (buffer); - goto done; - } + free (buffer); + goto done; } - stash->info_ptr_memory = (bfd_byte *) - bfd_realloc (stash->info_ptr_memory, total_size + size); + stash->info_ptr_memory = tmp; memcpy (stash->info_ptr_memory + total_size, buffer, size); free (buffer); total_size += size; diff --git a/contrib/gdb-7/bfd/elf-attrs.c b/contrib/gdb-7/bfd/elf-attrs.c index c34297ccda..b9d3bf2fe4 100644 --- a/contrib/gdb-7/bfd/elf-attrs.c +++ b/contrib/gdb-7/bfd/elf-attrs.c @@ -1,5 +1,5 @@ /* ELF attributes support (based on ARM EABI attributes). - Copyright 2005, 2006, 2007, 2009 + Copyright 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -96,7 +96,7 @@ vendor_obj_attr_size (bfd *abfd, int vendor) attr = elf_known_obj_attributes (abfd)[vendor]; size = 0; - for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) size += obj_attr_size (i, &attr[i]); for (list = elf_other_obj_attributes (abfd)[vendor]; @@ -188,7 +188,7 @@ vendor_set_obj_attr_contents (bfd *abfd, bfd_byte *contents, bfd_vma size, p += 4; attr = elf_known_obj_attributes (abfd)[vendor]; - for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) { int tag = i; if (get_elf_backend_data (abfd)->obj_attrs_order) @@ -349,9 +349,11 @@ _bfd_elf_copy_obj_attributes (bfd *ibfd, bfd *obfd) for (vendor = OBJ_ATTR_FIRST; vendor <= OBJ_ATTR_LAST; vendor++) { - in_attr = &elf_known_obj_attributes (ibfd)[vendor][4]; - out_attr = &elf_known_obj_attributes (obfd)[vendor][4]; - for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + in_attr + = &elf_known_obj_attributes (ibfd)[vendor][LEAST_KNOWN_OBJ_ATTRIBUTE]; + out_attr + = &elf_known_obj_attributes (obfd)[vendor][LEAST_KNOWN_OBJ_ATTRIBUTE]; + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) { out_attr->type = in_attr->type; out_attr->i = in_attr->i; @@ -564,7 +566,8 @@ _bfd_elf_merge_object_attributes (bfd *ibfd, bfd *obfd) if (in_attr->i > 0 && strcmp (in_attr->s, "gnu") != 0) { _bfd_error_handler - (_("error: %B: Must be processed by '%s' toolchain"), + (_("error: %B: Object has vendor-specific contents that " + "must be processed by the '%s' toolchain"), ibfd, in_attr->s); return FALSE; } diff --git a/contrib/gdb-7/bfd/elf-bfd.h b/contrib/gdb-7/bfd/elf-bfd.h index 82c7c774d5..754e7335b6 100644 --- a/contrib/gdb-7/bfd/elf-bfd.h +++ b/contrib/gdb-7/bfd/elf-bfd.h @@ -1,6 +1,6 @@ /* BFD back-end data structures for ELF files. Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -305,6 +305,10 @@ struct eh_cie_fde asection *sec; } u; + /* The offset of the personality data from the start of the CIE, + or 0 if the CIE doesn't have any. */ + unsigned int personality_offset : 8; + /* True if we have marked relocations associated with this CIE. */ unsigned int gc_mark : 1; @@ -312,8 +316,13 @@ struct eh_cie_fde a PC-relative one. */ unsigned int make_lsda_relative : 1; - /* True if the CIE contains personality data and if that data - uses a PC-relative encoding. */ + /* True if we have decided to turn an absolute personality + encoding into a PC-relative one. */ + unsigned int make_per_encoding_relative : 1; + + /* True if the CIE contains personality data and if that + data uses a PC-relative encoding. Always true when + make_per_encoding_relative is. */ unsigned int per_encoding_relative : 1; /* True if we need to add an 'R' (FDE encoding) entry to the @@ -322,6 +331,9 @@ struct eh_cie_fde /* True if we have merged this CIE with another. */ unsigned int merged : 1; + + /* Unused bits. */ + unsigned int pad1 : 18; } cie; } u; unsigned int reloc_index; @@ -384,12 +396,52 @@ struct eh_frame_hdr_info bfd_boolean table; }; +/* Enum used to identify target specific extensions to the elf_obj_tdata + and elf_link_hash_table structures. Note the enums deliberately start + from 1 so that we can detect an uninitialized field. The generic value + is last so that additions to this enum do not need to modify more than + one line. */ +enum elf_target_id +{ + ALPHA_ELF_DATA = 1, + ARM_ELF_DATA, + AVR_ELF_DATA, + BFIN_ELF_DATA, + CRIS_ELF_DATA, + FRV_ELF_DATA, + HPPA32_ELF_DATA, + HPPA64_ELF_DATA, + I386_ELF_DATA, + IA64_ELF_DATA, + LM32_ELF_DATA, + M32R_ELF_DATA, + M68HC11_ELF_DATA, + M68K_ELF_DATA, + MICROBLAZE_ELF_DATA, + MIPS_ELF_DATA, + MN10300_ELF_DATA, + PPC32_ELF_DATA, + PPC64_ELF_DATA, + S390_ELF_DATA, + SH_ELF_DATA, + SPARC_ELF_DATA, + SPU_ELF_DATA, + TIC6X_ELF_DATA, + X86_64_ELF_DATA, + XTENSA_ELF_DATA, + GENERIC_ELF_DATA +}; + /* ELF linker hash table. */ struct elf_link_hash_table { struct bfd_link_hash_table root; + /* An identifier used to distinguish different target + specific extensions to this structure. */ + enum elf_target_id hash_table_id; + /* Whether we have created the special dynamic sections required when linking against or generating a shared object. */ bfd_boolean dynamic_sections_created; @@ -497,6 +549,8 @@ struct elf_link_hash_table #define elf_hash_table(p) ((struct elf_link_hash_table *) ((p)->hash)) +#define elf_hash_table_id(table) ((table) -> hash_table_id) + /* Returns TRUE if the hash table is a struct elf_link_hash_table. */ #define is_elf_hash_table(htab) \ (((struct bfd_link_hash_table *) (htab))->type == bfd_link_elf_hash_table) @@ -1191,10 +1245,11 @@ struct elf_backend_data /* The section type to use for an attributes section. */ unsigned int obj_attrs_section_type; - /* This function determines the order in which any attributes are written. - It must be defined for input in the range 4..NUM_KNOWN_OBJ_ATTRIBUTES-1 - (this range is used in order to make unity easy). The returned value is - the actual tag number to place in the input position. */ + /* This function determines the order in which any attributes are + written. It must be defined for input in the range + LEAST_KNOWN_OBJ_ATTRIBUTE..NUM_KNOWN_OBJ_ATTRIBUTES-1 (this range + is used in order to make unity easy). The returned value is the + actual tag number to place in the input position. */ int (*obj_attrs_order) (int); /* This is TRUE if the linker should act like collect and gather @@ -1358,6 +1413,12 @@ struct bfd_elf_section_data #define get_elf_backend_data(abfd) \ xvec_get_elf_backend_data ((abfd)->xvec) +/* The least object attributes (within an attributes subsection) known + for any target. Some code assumes that the value 0 is not used and + the field for that attribute can instead be used as a marker to + indicate that attributes have been initialized. */ +#define LEAST_KNOWN_OBJ_ATTRIBUTE 2 + /* The maximum number of known object attributes for any target. */ #define NUM_KNOWN_OBJ_ATTRIBUTES 71 @@ -1406,27 +1467,6 @@ enum Tag_compatibility = 32 }; -/* Enum used to identify target specific extensions to the elf_obj_tdata - structure. Note the enums deliberately start from 1 so that we can - detect an uninitialized field. The generic value is last so that - additions to this enum do not need to modify more than one line. */ -enum elf_object_id -{ - ALPHA_ELF_TDATA = 1, - ARM_ELF_TDATA, - HPPA_ELF_TDATA, - I386_ELF_TDATA, - MIPS_ELF_TDATA, - PPC32_ELF_TDATA, - PPC64_ELF_TDATA, - S390_ELF_TDATA, - SH_ELF_TDATA, - SPARC_ELF_TDATA, - X86_64_ELF_TDATA, - XTENSA_ELF_TDATA, - GENERIC_ELF_TDATA -}; - /* Some private data is stashed away for future use using the tdata pointer in the bfd structure. */ @@ -1491,6 +1531,10 @@ struct elf_obj_tdata one. */ const char *dt_name; + /* The linker emulation needs to know what audit libs + are used by a dynamic object. */ + const char *dt_audit; + /* Records the result of `get_program_header_size'. */ bfd_size_type program_header_size; @@ -1587,7 +1631,7 @@ struct elf_obj_tdata /* An identifier used to distinguish different target specific extensions to this structure. */ - enum elf_object_id object_id; + enum elf_target_id object_id; }; #define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data) @@ -1620,6 +1664,7 @@ struct elf_obj_tdata #define elf_local_got_offsets(bfd) (elf_tdata(bfd) -> local_got.offsets) #define elf_local_got_ents(bfd) (elf_tdata(bfd) -> local_got.ents) #define elf_dt_name(bfd) (elf_tdata(bfd) -> dt_name) +#define elf_dt_audit(bfd) (elf_tdata(bfd) -> dt_audit) #define elf_dyn_lib_class(bfd) (elf_tdata(bfd) -> dyn_lib_class) #define elf_bad_symtab(bfd) (elf_tdata(bfd) -> bad_symtab) #define elf_flags_init(bfd) (elf_tdata(bfd) -> flags_init) @@ -1693,7 +1738,7 @@ extern unsigned long bfd_elf_gnu_hash extern bfd_reloc_status_type bfd_elf_generic_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); extern bfd_boolean bfd_elf_allocate_object - (bfd *, size_t, enum elf_object_id); + (bfd *, size_t, enum elf_target_id); extern bfd_boolean bfd_elf_make_generic_object (bfd *); extern bfd_boolean bfd_elf_mkcorefile @@ -1717,7 +1762,7 @@ extern bfd_boolean _bfd_elf_link_hash_table_init (struct elf_link_hash_table *, bfd *, struct bfd_hash_entry *(*) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *), - unsigned int); + unsigned int, enum elf_target_id); extern bfd_boolean _bfd_elf_slurp_version_tables (bfd *, bfd_boolean); extern bfd_boolean _bfd_elf_merge_sections @@ -1734,6 +1779,12 @@ extern asection *_bfd_elf_check_kept_section (asection *, struct bfd_link_info *); extern void _bfd_elf_link_just_syms (asection *, struct bfd_link_info *); +extern void _bfd_elf_copy_link_hash_symbol_type + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); +extern bfd_boolean _bfd_elf_size_group_sections + (struct bfd_link_info *); +extern bfd_boolean _bfd_elf_fixup_group_sections +(bfd *, asection *); extern bfd_boolean _bfd_elf_copy_private_header_data (bfd *, bfd *); extern bfd_boolean _bfd_elf_copy_private_symbol_data @@ -2130,10 +2181,22 @@ extern char *elfcore_write_prfpreg (bfd *, char *, int *, const void *, int); extern char *elfcore_write_prxfpreg (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_xstatereg + (bfd *, char *, int *, const void *, int); extern char *elfcore_write_ppc_vmx (bfd *, char *, int *, const void *, int); extern char *elfcore_write_ppc_vsx (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_timer + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_todcmp + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_todpreg + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_ctrs + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_prefix + (bfd *, char *, int *, const void *, int); extern char *elfcore_write_lwpstatus (bfd *, char *, int *, long, int, const void *); extern char *elfcore_write_register_note @@ -2269,12 +2332,57 @@ extern asection _bfd_elf_large_com_section; return FALSE; \ warned = TRUE; \ } \ + (void) unresolved_reloc; \ + (void) warned; \ } \ while (0) +/* This macro is to avoid lots of duplicated code in the body of the + loop over relocations in xxx_relocate_section() in the various + elfxx-xxxx.c files. + + Handle relocations against symbols from removed linkonce sections, + or sections discarded by a linker script. When doing a relocatable + link, we remove such relocations. Otherwise, we just want the + section contents zeroed and avoid any special processing. */ +#define RELOC_AGAINST_DISCARDED_SECTION(info, input_bfd, input_section, \ + rel, relend, howto, contents) \ + { \ + if (info->relocatable \ + && (input_section->flags & SEC_DEBUGGING)) \ + { \ + /* Only remove relocations in debug sections since other \ + sections may require relocations. */ \ + Elf_Internal_Shdr *rel_hdr; \ + \ + rel_hdr = &elf_section_data (input_section->output_section)->rel_hdr; \ + \ + /* Avoid empty output section. */ \ + if (rel_hdr->sh_size > rel_hdr->sh_entsize) \ + { \ + rel_hdr->sh_size -= rel_hdr->sh_entsize; \ + rel_hdr = &elf_section_data (input_section)->rel_hdr; \ + rel_hdr->sh_size -= rel_hdr->sh_entsize; \ + \ + memmove (rel, rel + 1, (relend - rel) * sizeof (*rel)); \ + \ + input_section->reloc_count--; \ + relend--; \ + rel--; \ + continue; \ + } \ + } \ + \ + _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); \ + rel->r_info = 0; \ + rel->r_addend = 0; \ + continue; \ + } + /* Will a symbol be bound to the the definition within the shared - library, if any. */ + library, if any. A unique symbol can never be bound locally. */ #define SYMBOLIC_BIND(INFO, H) \ - ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic)) + (!(H)->unique_global \ + && ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic))) #endif /* _LIBELF_H_ */ diff --git a/contrib/gdb-7/bfd/elf-eh-frame.c b/contrib/gdb-7/bfd/elf-eh-frame.c index 5525d2041d..8380ef8600 100644 --- a/contrib/gdb-7/bfd/elf-eh-frame.c +++ b/contrib/gdb-7/bfd/elf-eh-frame.c @@ -1,5 +1,5 @@ /* .eh_frame section optimization. - Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Jakub Jelinek . @@ -423,6 +423,28 @@ skip_non_nops (bfd_byte *buf, bfd_byte *end, unsigned int encoded_ptr_width, return last; } +/* Convert absolute encoding ENCODING into PC-relative form. + SIZE is the size of a pointer. */ + +static unsigned char +make_pc_relative (unsigned char encoding, unsigned int ptr_size) +{ + if ((encoding & 0x7f) == DW_EH_PE_absptr) + switch (ptr_size) + { + case 2: + encoding |= DW_EH_PE_sdata2; + break; + case 4: + encoding |= DW_EH_PE_sdata4; + break; + case 8: + encoding |= DW_EH_PE_sdata8; + break; + } + return encoding | DW_EH_PE_pcrel; +} + /* Called before calling _bfd_elf_parse_eh_frame on every input bfd's .eh_frame section. */ @@ -614,7 +636,9 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, REQUIRE (read_byte (&buf, end, &cie->version)); /* Cannot handle unknown versions. */ - REQUIRE (cie->version == 1 || cie->version == 3); + REQUIRE (cie->version == 1 + || cie->version == 3 + || cie->version == 4); REQUIRE (strlen ((char *) buf) < sizeof (cie->augmentation)); strcpy (cie->augmentation, (char *) buf); @@ -629,6 +653,13 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, REQUIRE (skip_bytes (&buf, end, ptr_size)); SKIP_RELOCS (buf); } + if (cie->version >= 4) + { + REQUIRE (buf + 1 < end); + REQUIRE (buf[0] == ptr_size); + REQUIRE (buf[1] == 0); + buf += 2; + } REQUIRE (read_uleb128 (&buf, end, &cie->code_align)); REQUIRE (read_sleb128 (&buf, end, &cie->data_align)); if (cie->version == 1) @@ -675,11 +706,12 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, per_width = get_DW_EH_PE_width (cie->per_encoding, ptr_size); REQUIRE (per_width); - if ((cie->per_encoding & 0xf0) == DW_EH_PE_aligned) + if ((cie->per_encoding & 0x70) == DW_EH_PE_aligned) { length = -(buf - ehbuf) & (per_width - 1); REQUIRE (skip_bytes (&buf, end, length)); } + this_inf->u.cie.personality_offset = buf - start; ENSURE_NO_RELOCS (buf); /* Ensure we have a reloc here. */ REQUIRE (GET_RELOC (buf)); @@ -705,27 +737,23 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, ->elf_backend_can_make_relative_eh_frame (abfd, info, sec))) { - if ((cie->fde_encoding & 0xf0) == DW_EH_PE_absptr) + if ((cie->fde_encoding & 0x70) == DW_EH_PE_absptr) this_inf->make_relative = 1; /* If the CIE doesn't already have an 'R' entry, it's fairly easy to add one, provided that there's no aligned data after the augmentation string. */ else if (cie->fde_encoding == DW_EH_PE_omit - && (cie->per_encoding & 0xf0) != DW_EH_PE_aligned) + && (cie->per_encoding & 0x70) != DW_EH_PE_aligned) { if (*cie->augmentation == 0) this_inf->add_augmentation_size = 1; this_inf->u.cie.add_fde_encoding = 1; this_inf->make_relative = 1; } - } - if (info->shared - && (get_elf_backend_data (abfd) - ->elf_backend_can_make_lsda_relative_eh_frame - (abfd, info, sec)) - && (cie->lsda_encoding & 0xf0) == DW_EH_PE_absptr) - cie->can_make_lsda_relative = 1; + if ((cie->lsda_encoding & 0x70) == DW_EH_PE_absptr) + cie->can_make_lsda_relative = 1; + } /* If FDE encoding was not specified, it defaults to DW_EH_absptr. */ @@ -843,7 +871,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, cie->length -= end - insns_end; } if (set_loc_count - && ((cie->fde_encoding & 0xf0) == DW_EH_PE_pcrel + && ((cie->fde_encoding & 0x70) == DW_EH_PE_pcrel || this_inf->make_relative)) { unsigned int cnt; @@ -963,7 +991,7 @@ _bfd_elf_gc_mark_fdes (struct bfd_link_info *info, asection *sec, relocations in REL. */ static struct eh_cie_fde * -find_merged_cie (bfd *abfd, asection *sec, +find_merged_cie (bfd *abfd, struct bfd_link_info *info, asection *sec, struct eh_frame_hdr_info *hdr_info, struct elf_reloc_cookie *cookie, struct eh_cie_fde *cie_inf) @@ -993,6 +1021,8 @@ find_merged_cie (bfd *abfd, asection *sec, if (cie->per_encoding != DW_EH_PE_omit) { + bfd_boolean per_binds_local; + /* Work out the address of personality routine, either as an absolute value or as a symbol. */ rel = cookie->rels + cie->personality.reloc_index; @@ -1016,6 +1046,7 @@ find_merged_cie (bfd *abfd, asection *sec, h = (struct elf_link_hash_entry *) h->root.u.i.link; cie->personality.h = h; + per_binds_local = SYMBOL_REFERENCES_LOCAL (info, h); } else { @@ -1036,6 +1067,17 @@ find_merged_cie (bfd *abfd, asection *sec, cie->personality.val = (sym->st_value + sym_sec->output_offset + sym_sec->output_section->vma); + per_binds_local = TRUE; + } + + if (per_binds_local + && info->shared + && (cie->per_encoding & 0x70) == DW_EH_PE_absptr + && (get_elf_backend_data (abfd) + ->elf_backend_can_make_relative_eh_frame (abfd, info, sec))) + { + cie_inf->u.cie.make_per_encoding_relative = 1; + cie_inf->u.cie.per_encoding_relative = 1; } } @@ -1110,9 +1152,9 @@ _bfd_elf_discard_section_eh_frame if (!(*reloc_symbol_deleted_p) (ent->offset + 8, cookie)) { if (info->shared - && (((ent->fde_encoding & 0xf0) == DW_EH_PE_absptr + && (((ent->fde_encoding & 0x70) == DW_EH_PE_absptr && ent->make_relative == 0) - || (ent->fde_encoding & 0xf0) == DW_EH_PE_aligned)) + || (ent->fde_encoding & 0x70) == DW_EH_PE_aligned)) { /* If a shared library uses absolute pointers which we cannot turn into PC relative, @@ -1125,8 +1167,8 @@ _bfd_elf_discard_section_eh_frame } ent->removed = 0; hdr_info->fde_count++; - ent->u.fde.cie_inf = find_merged_cie (abfd, sec, hdr_info, cookie, - ent->u.fde.cie_inf); + ent->u.fde.cie_inf = find_merged_cie (abfd, info, sec, hdr_info, + cookie, ent->u.fde.cie_inf); } } @@ -1236,13 +1278,11 @@ _bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *info) bfd_vma _bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info, + struct bfd_link_info *info ATTRIBUTE_UNUSED, asection *sec, bfd_vma offset) { struct eh_frame_sec_info *sec_info; - struct elf_link_hash_table *htab; - struct eh_frame_hdr_info *hdr_info; unsigned int lo, hi, mid; if (sec->sec_info_type != ELF_INFO_TYPE_EH_FRAME) @@ -1252,9 +1292,6 @@ _bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, if (offset >= sec->rawsize) return offset - sec->rawsize + sec->size; - htab = elf_hash_table (info); - hdr_info = &htab->eh_info; - lo = 0; hi = sec_info->count; mid = 0; @@ -1276,6 +1313,14 @@ _bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, if (sec_info->entry[mid].removed) return (bfd_vma) -1; + /* If converting personality pointers to DW_EH_PE_pcrel, there will be + no need for run-time relocation against the personality field. */ + if (sec_info->entry[mid].cie + && sec_info->entry[mid].u.cie.make_per_encoding_relative + && offset == (sec_info->entry[mid].offset + 8 + + sec_info->entry[mid].u.cie.personality_offset)) + return (bfd_vma) -2; + /* If converting to DW_EH_PE_pcrel, there will be no need for run-time relocation against FDE's initial_location field. */ if (!sec_info->entry[mid].cie @@ -1435,7 +1480,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, { BFD_ASSERT (action & 1); *aug++ = 'R'; - *buf++ = DW_EH_PE_pcrel; + *buf++ = make_pc_relative (DW_EH_PE_absptr, ptr_size); action &= ~1; } @@ -1446,18 +1491,20 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, if (action & 2) { BFD_ASSERT (*buf == ent->lsda_encoding); - *buf |= DW_EH_PE_pcrel; + *buf = make_pc_relative (*buf, ptr_size); action &= ~2; } buf++; break; case 'P': + if (ent->u.cie.make_per_encoding_relative) + *buf = make_pc_relative (*buf, ptr_size); per_encoding = *buf++; per_width = get_DW_EH_PE_width (per_encoding, ptr_size); BFD_ASSERT (per_width != 0); BFD_ASSERT (((per_encoding & 0x70) == DW_EH_PE_pcrel) == ent->u.cie.per_encoding_relative); - if ((per_encoding & 0xf0) == DW_EH_PE_aligned) + if ((per_encoding & 0x70) == DW_EH_PE_aligned) buf = (contents + ((buf - contents + per_width - 1) & ~((bfd_size_type) per_width - 1))); @@ -1467,8 +1514,15 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, val = read_value (abfd, buf, per_width, get_DW_EH_PE_signed (per_encoding)); - val += (bfd_vma) ent->offset - ent->new_offset; - val -= extra_string + extra_data; + if (ent->u.cie.make_per_encoding_relative) + val -= (sec->output_section->vma + + sec->output_offset + + (buf - contents)); + else + { + val += (bfd_vma) ent->offset - ent->new_offset; + val -= extra_string + extra_data; + } write_value (abfd, buf, val, per_width); action &= ~4; } @@ -1478,7 +1532,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, if (action & 1) { BFD_ASSERT (*buf == ent->fde_encoding); - *buf |= DW_EH_PE_pcrel; + *buf = make_pc_relative (*buf, ptr_size); action &= ~1; } buf++; @@ -1511,9 +1565,8 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, address = value; if (value) { - switch (ent->fde_encoding & 0xf0) + switch (ent->fde_encoding & 0x70) { - case DW_EH_PE_indirect: case DW_EH_PE_textrel: BFD_ASSERT (hdr_info == NULL); break; @@ -1550,7 +1603,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, + ent->new_offset); } - if ((ent->lsda_encoding & 0xf0) == DW_EH_PE_pcrel + if ((ent->lsda_encoding & 0x70) == DW_EH_PE_pcrel || cie->u.cie.make_lsda_relative) { buf += ent->lsda_offset; @@ -1559,7 +1612,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, get_DW_EH_PE_signed (ent->lsda_encoding)); if (value) { - if ((ent->lsda_encoding & 0xf0) == DW_EH_PE_pcrel) + if ((ent->lsda_encoding & 0x70) == DW_EH_PE_pcrel) value += (bfd_vma) ent->offset - ent->new_offset; else if (cie->u.cie.make_lsda_relative) value -= (sec->output_section->vma @@ -1580,7 +1633,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, if (ent->set_loc) { /* Adjust DW_CFA_set_loc. */ - unsigned int cnt, width; + unsigned int cnt; bfd_vma new_offset; width = get_DW_EH_PE_width (ent->fde_encoding, ptr_size); @@ -1590,7 +1643,6 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, for (cnt = 1; cnt <= ent->set_loc[0]; cnt++) { - bfd_vma value; buf = start + ent->set_loc[cnt]; value = read_value (abfd, buf, width, @@ -1598,7 +1650,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, if (!value) continue; - if ((ent->fde_encoding & 0xf0) == DW_EH_PE_pcrel) + if ((ent->fde_encoding & 0x70) == DW_EH_PE_pcrel) value += (bfd_vma) ent->offset + 8 - new_offset; if (ent->make_relative) value -= (sec->output_section->vma diff --git a/contrib/gdb-7/bfd/elf.c b/contrib/gdb-7/bfd/elf.c index e7116d8994..0fa75d255c 100644 --- a/contrib/gdb-7/bfd/elf.c +++ b/contrib/gdb-7/bfd/elf.c @@ -1,7 +1,7 @@ /* ELF executable support for BFD. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -45,6 +45,10 @@ SECTION #include "libiberty.h" #include "safe-ctype.h" +#ifdef CORE_HEADER +#include CORE_HEADER +#endif + static int elf_sort_sections (const void *, const void *); static bfd_boolean assign_file_positions_except_relocs (bfd *, struct bfd_link_info *); static bfd_boolean prep_headers (bfd *); @@ -232,7 +236,7 @@ bfd_elf_gnu_hash (const char *namearg) bfd_boolean bfd_elf_allocate_object (bfd *abfd, size_t object_size, - enum elf_object_id object_id) + enum elf_target_id object_id) { BFD_ASSERT (object_size >= sizeof (struct elf_obj_tdata)); abfd->tdata.any = bfd_zalloc (abfd, object_size); @@ -249,7 +253,7 @@ bfd_boolean bfd_elf_make_generic_object (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf_obj_tdata), - GENERIC_ELF_TDATA); + GENERIC_ELF_DATA); } bfd_boolean @@ -734,18 +738,18 @@ _bfd_elf_setup_sections (bfd *abfd) } else { - asection *link = NULL; + asection *linksec = NULL; if (elfsec < elf_numsections (abfd)) { this_hdr = elf_elfsections (abfd)[elfsec]; - link = this_hdr->bfd_section; + linksec = this_hdr->bfd_section; } /* PR 1991, 2008: Some strip/objcopy may leave an incorrect value in sh_link. We don't want to proceed. */ - if (link == NULL) + if (linksec == NULL) { (*_bfd_error_handler) (_("%B: sh_link [%d] in section `%A' is incorrect"), @@ -753,7 +757,7 @@ _bfd_elf_setup_sections (bfd *abfd) result = FALSE; } - elf_linked_to_section (s) = link; + elf_linked_to_section (s) = linksec; } } } @@ -872,6 +876,8 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, return FALSE; if ((hdr->sh_flags & SHF_TLS) != 0) flags |= SEC_THREAD_LOCAL; + if ((hdr->sh_flags & SHF_EXCLUDE) != 0) + flags |= SEC_EXCLUDE; if ((flags & SEC_ALLOC) == 0) { @@ -974,7 +980,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, for (i = 0; i < elf_elfheader (abfd)->e_phnum; i++, phdr++) { if (phdr->p_type == PT_LOAD - && ELF_IS_SECTION_IN_SEGMENT (hdr, phdr)) + && ELF_SECTION_IN_SEGMENT (hdr, phdr)) { if ((flags & SEC_LOAD) == 0) newsect->lma = (phdr->p_paddr @@ -1062,7 +1068,6 @@ _bfd_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd) /* Copy object attributes. */ _bfd_elf_copy_obj_attributes (ibfd, obfd); - return TRUE; } @@ -1518,10 +1523,11 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex) return FALSE; if (hdr->sh_link > elf_numsections (abfd)) { - /* PR 10478: Accept sparc binaries with a sh_link + /* PR 10478: Accept Solaris binaries with a sh_link field set to SHN_BEFORE or SHN_AFTER. */ switch (bfd_get_arch (abfd)) { + case bfd_arch_i386: case bfd_arch_sparc: if (hdr->sh_link == (SHN_LORESERVE & 0xffff) /* SHN_BEFORE */ || hdr->sh_link == ((SHN_LORESERVE + 1) & 0xffff) /* SHN_AFTER */) @@ -1960,11 +1966,11 @@ bfd_sym_from_r_symndx (struct sym_cache *cache, section. */ asection * -bfd_section_from_elf_index (bfd *abfd, unsigned int index) +bfd_section_from_elf_index (bfd *abfd, unsigned int sec_index) { - if (index >= elf_numsections (abfd)) + if (sec_index >= elf_numsections (abfd)) return NULL; - return elf_elfsections (abfd)[index]->bfd_section; + return elf_elfsections (abfd)[sec_index]->bfd_section; } static const struct bfd_elf_special_section special_sections_b[] = @@ -2265,7 +2271,7 @@ _bfd_elf_new_section_hook (bfd *abfd, asection *sec) bfd_boolean _bfd_elf_make_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, - int index, + int hdr_index, const char *type_name) { asection *newsect; @@ -2280,7 +2286,7 @@ _bfd_elf_make_section_from_phdr (bfd *abfd, if (hdr->p_filesz > 0) { - sprintf (namebuf, "%s%d%s", type_name, index, split ? "a" : ""); + sprintf (namebuf, "%s%d%s", type_name, hdr_index, split ? "a" : ""); len = strlen (namebuf) + 1; name = (char *) bfd_alloc (abfd, len); if (!name) @@ -2316,7 +2322,7 @@ _bfd_elf_make_section_from_phdr (bfd *abfd, { bfd_vma align; - sprintf (namebuf, "%s%d%s", type_name, index, split ? "b" : ""); + sprintf (namebuf, "%s%d%s", type_name, hdr_index, split ? "b" : ""); len = strlen (namebuf) + 1; name = (char *) bfd_alloc (abfd, len); if (!name) @@ -2355,51 +2361,51 @@ _bfd_elf_make_section_from_phdr (bfd *abfd, } bfd_boolean -bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index) +bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index) { const struct elf_backend_data *bed; switch (hdr->p_type) { case PT_NULL: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "null"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "null"); case PT_LOAD: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "load"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "load"); case PT_DYNAMIC: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "dynamic"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "dynamic"); case PT_INTERP: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "interp"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "interp"); case PT_NOTE: - if (! _bfd_elf_make_section_from_phdr (abfd, hdr, index, "note")) + if (! _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "note")) return FALSE; if (! elf_read_notes (abfd, hdr->p_offset, hdr->p_filesz)) return FALSE; return TRUE; case PT_SHLIB: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "shlib"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "shlib"); case PT_PHDR: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "phdr"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "phdr"); case PT_GNU_EH_FRAME: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "eh_frame_hdr"); case PT_GNU_STACK: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "stack"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "stack"); case PT_GNU_RELRO: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro"); default: /* Check for any processor-specific program segment types. */ bed = get_elf_backend_data (abfd); - return bed->elf_backend_section_from_phdr (abfd, hdr, index, "proc"); + return bed->elf_backend_section_from_phdr (abfd, hdr, hdr_index, "proc"); } } @@ -2623,6 +2629,8 @@ elf_fake_sections (bfd *abfd, asection *asect, void *failedptrarg) } } } + if ((asect->flags & (SEC_GROUP | SEC_EXCLUDE)) == SEC_EXCLUDE) + this_hdr->sh_flags |= SHF_EXCLUDE; /* Check for processor-specific section types. */ sh_type = this_hdr->sh_type; @@ -2742,17 +2750,16 @@ bfd_elf_set_group_contents (bfd *abfd, asection *sec, void *failedptrarg) while (elt != NULL) { asection *s; - unsigned int idx; s = elt; - if (! elf_discarded_section (s)) + if (!gas) + s = s->output_section; + if (s != NULL + && !bfd_is_abs_section (s)) { + unsigned int idx = elf_section_data (s)->this_idx; + loc -= 4; - if (!gas) - s = s->output_section; - idx = 0; - if (s != NULL) - idx = elf_section_data (s)->this_idx; H_PUT_32 (abfd, idx, loc); } elt = elf_next_in_group (elt); @@ -2893,10 +2900,11 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) for (sec = abfd->sections; sec; sec = sec->next) { - struct bfd_elf_section_data *d = elf_section_data (sec); asection *s; const char *name; + d = elf_section_data (sec); + i_shdrp[d->this_idx] = &d->this_hdr; if (d->rel_idx != 0) i_shdrp[d->rel_idx] = &d->rel_hdr; @@ -3859,7 +3867,8 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) && CONST_STRNEQ (s->name, ".note")) { asection *s2; - unsigned count = 1; + + count = 1; amt = sizeof (struct elf_segment_map); if (s->alignment_power == 2) for (s2 = s; s2->next != NULL; s2 = s2->next) @@ -3902,8 +3911,6 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) /* If there are any SHF_TLS output sections, add PT_TLS segment. */ if (tls_count > 0) { - int i; - amt = sizeof (struct elf_segment_map); amt += (tls_count - 1) * sizeof (asection *); m = (struct elf_segment_map *) bfd_zalloc (abfd, amt); @@ -3915,7 +3922,7 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) /* Mandated PF_R. */ m->p_flags = PF_R; m->p_flags_valid = 1; - for (i = 0; i < tls_count; ++i) + for (i = 0; i < (unsigned int) tls_count; ++i) { BFD_ASSERT (first_tls->flags & SEC_THREAD_LOCAL); m->sections[i] = first_tls; @@ -4126,6 +4133,22 @@ print_segment_map (const struct elf_segment_map *m) putc ('\n',stderr); } +static bfd_boolean +write_zeros (bfd *abfd, file_ptr pos, bfd_size_type len) +{ + void *buf; + bfd_boolean ret; + + if (bfd_seek (abfd, pos, SEEK_SET) != 0) + return FALSE; + buf = bfd_zmalloc (len); + if (buf == NULL) + return FALSE; + ret = bfd_bwrite (buf, len, abfd) == len; + free (buf); + return ret; +} + /* Assign file positions to the sections based on the mapping from sections to segments. This function also sets up some fields in the file header. */ @@ -4434,19 +4457,29 @@ assign_file_positions_for_load_sections (bfd *abfd, && ((this_hdr->sh_flags & SHF_TLS) == 0 || p->p_type == PT_TLS)))) { - bfd_signed_vma adjust = sec->vma - (p->p_vaddr + p->p_memsz); + bfd_vma adjust = sec->lma - (p->p_paddr + p->p_memsz); - if (adjust < 0) + if (sec->lma < p->p_paddr + p->p_memsz) { (*_bfd_error_handler) - (_("%B: section %A vma 0x%lx overlaps previous sections"), - abfd, sec, (unsigned long) sec->vma); + (_("%B: section %A lma 0x%lx overlaps previous sections"), + abfd, sec, (unsigned long) sec->lma); adjust = 0; + sec->lma = p->p_paddr + p->p_memsz; } p->p_memsz += adjust; if (this_hdr->sh_type != SHT_NOBITS) { + if (p->p_filesz + adjust < p->p_memsz) + { + /* We have a PROGBITS section following NOBITS ones. + Allocate file space for the NOBITS section(s) and + zero it. */ + adjust = p->p_memsz - p->p_filesz; + if (!write_zeros (abfd, off, adjust)) + return FALSE; + } off += adjust; p->p_filesz += adjust; } @@ -4523,24 +4556,38 @@ assign_file_positions_for_load_sections (bfd *abfd, /* Check that all sections are in a PT_LOAD segment. Don't check funky gdb generated core files. */ if (p->p_type == PT_LOAD && bfd_get_format (abfd) != bfd_core) - for (i = 0, secpp = m->sections; i < m->count; i++, secpp++) - { - Elf_Internal_Shdr *this_hdr; - asection *sec; - - sec = *secpp; - this_hdr = &(elf_section_data(sec)->this_hdr); - if (this_hdr->sh_size != 0 - && !ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, p)) + { + bfd_boolean check_vma = TRUE; + + for (i = 1; i < m->count; i++) + if (m->sections[i]->vma == m->sections[i - 1]->vma + && ELF_SECTION_SIZE (&(elf_section_data (m->sections[i]) + ->this_hdr), p) != 0 + && ELF_SECTION_SIZE (&(elf_section_data (m->sections[i - 1]) + ->this_hdr), p) != 0) { - (*_bfd_error_handler) - (_("%B: section `%A' can't be allocated in segment %d"), - abfd, sec, j); - print_segment_map (m); - bfd_set_error (bfd_error_bad_value); - return FALSE; + /* Looks like we have overlays packed into the segment. */ + check_vma = FALSE; + break; } - } + + for (i = 0; i < m->count; i++) + { + Elf_Internal_Shdr *this_hdr; + asection *sec; + + sec = m->sections[i]; + this_hdr = &(elf_section_data(sec)->this_hdr); + if (this_hdr->sh_size != 0 + && !ELF_SECTION_IN_SEGMENT_1 (this_hdr, p, check_vma)) + { + (*_bfd_error_handler) + (_("%B: section `%A' can't be allocated in segment %d"), + abfd, sec, j); + print_segment_map (m); + } + } + } } elf_tdata (abfd)->next_file_pos = off; @@ -4831,8 +4878,7 @@ assign_file_positions_except_relocs (bfd *abfd, static bfd_boolean prep_headers (bfd *abfd) { - Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */ - Elf_Internal_Phdr *i_phdrp = 0; /* Program header table, internal form */ + Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form. */ struct elf_strtab_hash *shstrtab; const struct elf_backend_data *bed = get_elf_backend_data (abfd); @@ -4900,7 +4946,6 @@ prep_headers (bfd *abfd) else { i_ehdrp->e_phentsize = 0; - i_phdrp = 0; i_ehdrp->e_phoff = 0; } @@ -4948,7 +4993,6 @@ bfd_boolean _bfd_elf_write_object_contents (bfd *abfd) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); - Elf_Internal_Ehdr *i_ehdrp; Elf_Internal_Shdr **i_shdrp; bfd_boolean failed; unsigned int count, num_sec; @@ -4958,7 +5002,6 @@ _bfd_elf_write_object_contents (bfd *abfd) return FALSE; i_shdrp = elf_elfsections (abfd); - i_ehdrp = elf_elfheader (abfd); failed = FALSE; bfd_map_over_sections (abfd, bed->s->write_relocs, &failed); @@ -5016,34 +5059,34 @@ unsigned int _bfd_elf_section_from_bfd_section (bfd *abfd, struct bfd_section *asect) { const struct elf_backend_data *bed; - unsigned int index; + unsigned int sec_index; if (elf_section_data (asect) != NULL && elf_section_data (asect)->this_idx != 0) return elf_section_data (asect)->this_idx; if (bfd_is_abs_section (asect)) - index = SHN_ABS; + sec_index = SHN_ABS; else if (bfd_is_com_section (asect)) - index = SHN_COMMON; + sec_index = SHN_COMMON; else if (bfd_is_und_section (asect)) - index = SHN_UNDEF; + sec_index = SHN_UNDEF; else - index = SHN_BAD; + sec_index = SHN_BAD; bed = get_elf_backend_data (abfd); if (bed->elf_backend_section_from_bfd_section) { - int retval = index; + int retval = sec_index; if ((*bed->elf_backend_section_from_bfd_section) (abfd, asect, &retval)) return retval; } - if (index == SHN_BAD) + if (sec_index == SHN_BAD) bfd_set_error (bfd_error_nonrepresentable_section); - return index; + return sec_index; } /* Given a BFD symbol, return the index in the ELF symbol table, or -1 @@ -5814,7 +5857,8 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd) section = section->next) { this_hdr = &(elf_section_data(section)->this_hdr); - if (ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, segment)) + if (this_hdr->sh_size != 0 + && ELF_SECTION_IN_SEGMENT (this_hdr, segment)) { if (!first_section) first_section = lowest_section = section; @@ -5893,7 +5937,8 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd) section = section->next) { this_hdr = &(elf_section_data(section)->this_hdr); - if (ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, segment)) + if (this_hdr->sh_size != 0 + && ELF_SECTION_IN_SEGMENT (this_hdr, segment)) { map->sections[isec++] = section->output_section; if (isec == section_count) @@ -5970,7 +6015,8 @@ copy_private_bfd_data (bfd *ibfd, bfd *obfd) /* Check if this section is covered by the segment. */ this_hdr = &(elf_section_data(section)->this_hdr); - if (ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, segment)) + if (this_hdr->sh_size != 0 + && ELF_SECTION_IN_SEGMENT (this_hdr, segment)) { /* FIXME: Check if its output section is changed or removed. What else do we need to check? */ @@ -6015,18 +6061,21 @@ _bfd_elf_init_private_section_data (bfd *ibfd, { Elf_Internal_Shdr *ihdr, *ohdr; - bfd_boolean need_group = link_info == NULL || link_info->relocatable; + bfd_boolean final_link = link_info != NULL && !link_info->relocatable; if (ibfd->xvec->flavour != bfd_target_elf_flavour || obfd->xvec->flavour != bfd_target_elf_flavour) return TRUE; - /* Don't copy the output ELF section type from input if the - output BFD section flags have been set to something different. - elf_fake_sections will set ELF section type based on BFD - section flags. */ + /* For objcopy and relocatable link, don't copy the output ELF + section type from input if the output BFD section flags have been + set to something different. For a final link allow some flags + that the linker clears to differ. */ if (elf_section_type (osec) == SHT_NULL - && (osec->flags == isec->flags || !osec->flags)) + && (osec->flags == isec->flags + || (final_link + && ((osec->flags ^ isec->flags) + & ~ (SEC_LINK_ONCE | SEC_LINK_DUPLICATES)) == 0))) elf_section_type (osec) = elf_section_type (isec); /* FIXME: Is this correct for all OS/PROC specific flags? */ @@ -6037,7 +6086,7 @@ _bfd_elf_init_private_section_data (bfd *ibfd, SHT_GROUP section will have its elf_next_in_group pointing back to the input group members. Ignore linker created group section. See elfNN_ia64_object_p in elfxx-ia64.c. */ - if (need_group) + if (!final_link) { if (elf_sec_group (isec) == NULL || (elf_sec_group (isec)->flags & SEC_LINKER_CREATED) == 0) @@ -6096,52 +6145,92 @@ _bfd_elf_copy_private_section_data (bfd *ibfd, NULL); } -/* Copy private header information. */ +/* Look at all the SHT_GROUP sections in IBFD, making any adjustments + necessary if we are removing either the SHT_GROUP section or any of + the group member sections. DISCARDED is the value that a section's + output_section has if the section will be discarded, NULL when this + function is called from objcopy, bfd_abs_section_ptr when called + from the linker. */ bfd_boolean -_bfd_elf_copy_private_header_data (bfd *ibfd, bfd *obfd) +_bfd_elf_fixup_group_sections (bfd *ibfd, asection *discarded) { asection *isec; - if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return TRUE; - - /* Copy over private BFD data if it has not already been copied. - This must be done here, rather than in the copy_private_bfd_data - entry point, because the latter is called after the section - contents have been set, which means that the program headers have - already been worked out. */ - if (elf_tdata (obfd)->segment_map == NULL && elf_tdata (ibfd)->phdr != NULL) - { - if (! copy_private_bfd_data (ibfd, obfd)) - return FALSE; - } - - /* _bfd_elf_copy_private_section_data copied over the SHF_GROUP flag - but this might be wrong if we deleted the group section. */ for (isec = ibfd->sections; isec != NULL; isec = isec->next) - if (elf_section_type (isec) == SHT_GROUP - && isec->output_section == NULL) + if (elf_section_type (isec) == SHT_GROUP) { asection *first = elf_next_in_group (isec); asection *s = first; + bfd_size_type removed = 0; + while (s != NULL) { - if (s->output_section != NULL) + /* If this member section is being output but the + SHT_GROUP section is not, then clear the group info + set up by _bfd_elf_copy_private_section_data. */ + if (s->output_section != discarded + && isec->output_section == discarded) { elf_section_flags (s->output_section) &= ~SHF_GROUP; elf_group_name (s->output_section) = NULL; } + /* Conversely, if the member section is not being output + but the SHT_GROUP section is, then adjust its size. */ + else if (s->output_section == discarded + && isec->output_section != discarded) + removed += 4; s = elf_next_in_group (s); if (s == first) break; } + if (removed != 0) + { + if (discarded != NULL) + { + /* If we've been called for ld -r, then we need to + adjust the input section size. This function may + be called multiple times, so save the original + size. */ + if (isec->rawsize == 0) + isec->rawsize = isec->size; + isec->size = isec->rawsize - removed; + } + else + { + /* Adjust the output section size when called from + objcopy. */ + isec->output_section->size -= removed; + } + } } return TRUE; } +/* Copy private header information. */ + +bfd_boolean +_bfd_elf_copy_private_header_data (bfd *ibfd, bfd *obfd) +{ + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour + || bfd_get_flavour (obfd) != bfd_target_elf_flavour) + return TRUE; + + /* Copy over private BFD data if it has not already been copied. + This must be done here, rather than in the copy_private_bfd_data + entry point, because the latter is called after the section + contents have been set, which means that the program headers have + already been worked out. */ + if (elf_tdata (obfd)->segment_map == NULL && elf_tdata (ibfd)->phdr != NULL) + { + if (! copy_private_bfd_data (ibfd, obfd)) + return FALSE; + } + + return _bfd_elf_fixup_group_sections (ibfd, NULL); +} + /* Copy private symbol information. If this symbol is in a section which we did not map into a BFD section, try to map the section index correctly. We use special macro definitions for the mapped @@ -7419,6 +7508,8 @@ _bfd_elf_rel_vtable_reloc_fn out details about the corefile. */ #ifdef HAVE_SYS_PROCFS_H +/* Needed for new procfs interface on sparc-solaris. */ +# define _STRUCTURED_PROC 1 # include #endif @@ -7600,6 +7691,16 @@ elfcore_grok_prxfpreg (bfd *abfd, Elf_Internal_Note *note) return elfcore_make_note_pseudosection (abfd, ".reg-xfp", note); } +/* Linux dumps the Intel XSAVE extended state in a note named "LINUX" + with a note type of NT_X86_XSTATE. Just include the whole note's + contents literally. */ + +static bfd_boolean +elfcore_grok_xstatereg (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-xstate", note); +} + static bfd_boolean elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note) { @@ -7612,6 +7713,42 @@ elfcore_grok_ppc_vsx (bfd *abfd, Elf_Internal_Note *note) return elfcore_make_note_pseudosection (abfd, ".reg-ppc-vsx", note); } +static bfd_boolean +elfcore_grok_s390_high_gprs (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-high-gprs", note); +} + +static bfd_boolean +elfcore_grok_s390_timer (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-timer", note); +} + +static bfd_boolean +elfcore_grok_s390_todcmp (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-todcmp", note); +} + +static bfd_boolean +elfcore_grok_s390_todpreg (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-todpreg", note); +} + +static bfd_boolean +elfcore_grok_s390_ctrs (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-ctrs", note); +} + +static bfd_boolean +elfcore_grok_s390_prefix (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-prefix", note); +} + #if defined (HAVE_PRPSINFO_T) typedef prpsinfo_t elfcore_psinfo_t; #if defined (HAVE_PRPSINFO32_T) /* Sparc64 cross Sparc32 */ @@ -7766,7 +7903,10 @@ elfcore_grok_lwpstatus (bfd *abfd, Elf_Internal_Note *note) memcpy (&lwpstat, note->descdata, sizeof (lwpstat)); elf_tdata (abfd)->core_lwpid = lwpstat.pr_lwpid; - elf_tdata (abfd)->core_signal = lwpstat.pr_cursig; + /* Do not overwrite the core signal if it has already been set by + another thread. */ + if (elf_tdata (abfd)->core_signal == 0) + elf_tdata (abfd)->core_signal = lwpstat.pr_cursig; /* Make a ".reg/999" section. */ @@ -7959,6 +8099,13 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) else return TRUE; + case NT_X86_XSTATE: /* Linux XSAVE extension */ + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_xstatereg (abfd, note); + else + return TRUE; + case NT_PPC_VMX: if (note->namesz == 6 && strcmp (note->namedata, "LINUX") == 0) @@ -7973,6 +8120,48 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) else return TRUE; + case NT_S390_HIGH_GPRS: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_high_gprs (abfd, note); + else + return TRUE; + + case NT_S390_TIMER: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_timer (abfd, note); + else + return TRUE; + + case NT_S390_TODCMP: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_todcmp (abfd, note); + else + return TRUE; + + case NT_S390_TODPREG: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_todpreg (abfd, note); + else + return TRUE; + + case NT_S390_CTRS: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_ctrs (abfd, note); + else + return TRUE; + + case NT_S390_PREFIX: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_prefix (abfd, note); + else + return TRUE; + case NT_PRPSINFO: case NT_PSINFO: if (bed->elf_backend_grok_psinfo) @@ -8591,6 +8780,15 @@ elfcore_write_prxfpreg (bfd *abfd, note_name, NT_PRXFPREG, xfpregs, size); } +char * +elfcore_write_xstatereg (bfd *abfd, char *buf, int *bufsiz, + const void *xfpregs, int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_X86_XSTATE, xfpregs, size); +} + char * elfcore_write_ppc_vmx (bfd *abfd, char *buf, @@ -8615,6 +8813,79 @@ elfcore_write_ppc_vsx (bfd *abfd, note_name, NT_PPC_VSX, ppc_vsx, size); } +static char * +elfcore_write_s390_high_gprs (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_high_gprs, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_HIGH_GPRS, + s390_high_gprs, size); +} + +char * +elfcore_write_s390_timer (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_timer, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_TIMER, s390_timer, size); +} + +char * +elfcore_write_s390_todcmp (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_todcmp, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_TODCMP, s390_todcmp, size); +} + +char * +elfcore_write_s390_todpreg (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_todpreg, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_TODPREG, s390_todpreg, size); +} + +char * +elfcore_write_s390_ctrs (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_ctrs, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_CTRS, s390_ctrs, size); +} + +char * +elfcore_write_s390_prefix (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_prefix, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_PREFIX, s390_prefix, size); +} + char * elfcore_write_register_note (bfd *abfd, char *buf, @@ -8627,10 +8898,24 @@ elfcore_write_register_note (bfd *abfd, return elfcore_write_prfpreg (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-xfp") == 0) return elfcore_write_prxfpreg (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-xstate") == 0) + return elfcore_write_xstatereg (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-ppc-vmx") == 0) return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-ppc-vsx") == 0) return elfcore_write_ppc_vsx (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-high-gprs") == 0) + return elfcore_write_s390_high_gprs (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-timer") == 0) + return elfcore_write_s390_timer (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-todcmp") == 0) + return elfcore_write_s390_todcmp (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-todpreg") == 0) + return elfcore_write_s390_todpreg (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-ctrs") == 0) + return elfcore_write_s390_ctrs (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-prefix") == 0) + return elfcore_write_s390_prefix (abfd, buf, bufsiz, data, size); return NULL; } @@ -8985,7 +9270,7 @@ _bfd_elf_get_synthetic_symtab (bfd *abfd, if (p->addend != 0) { char buf[30], *a; - int len; + memcpy (names, "+0x", sizeof ("+0x") - 1); names += sizeof ("+0x") - 1; bfd_sprintf_vma (abfd, buf, p->addend); diff --git a/contrib/gdb-7/bfd/elf32-i386.c b/contrib/gdb-7/bfd/elf32-i386.c index 9de1a6c7af..7964c4fd6e 100644 --- a/contrib/gdb-7/bfd/elf32-i386.c +++ b/contrib/gdb-7/bfd/elf32-i386.c @@ -1,6 +1,6 @@ /* Intel 80386/80486-specific support for 32-bit ELF Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -634,13 +634,13 @@ struct elf_i386_obj_tdata #define is_i386_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == I386_ELF_TDATA) + && elf_object_id (bfd) == I386_ELF_DATA) static bfd_boolean elf_i386_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf_i386_obj_tdata), - I386_ELF_TDATA); + I386_ELF_DATA); } /* i386 ELF linker hash table. */ @@ -653,19 +653,8 @@ struct elf_i386_link_hash_table asection *sdynbss; asection *srelbss; - /* The (unloaded but important) .rel.plt.unloaded section on VxWorks. */ - asection *srelplt2; - - /* True if the target system is VxWorks. */ - int is_vxworks; - - /* Value used to fill the last word of the first plt entry. */ - bfd_byte plt0_pad_byte; - - /* The index of the next unused R_386_TLS_DESC slot in .rel.plt. */ - bfd_vma next_tls_desc_index; - - union { + union + { bfd_signed_vma refcount; bfd_vma offset; } tls_ldm_got; @@ -682,13 +671,26 @@ struct elf_i386_link_hash_table /* Used by local STT_GNU_IFUNC symbols. */ htab_t loc_hash_table; - void *loc_hash_memory; + void * loc_hash_memory; + + /* The (unloaded but important) .rel.plt.unloaded section on VxWorks. */ + asection *srelplt2; + + /* True if the target system is VxWorks. */ + int is_vxworks; + + /* The index of the next unused R_386_TLS_DESC slot in .rel.plt. */ + bfd_vma next_tls_desc_index; + + /* Value used to fill the last word of the first plt entry. */ + bfd_byte plt0_pad_byte; }; /* Get the i386 ELF linker hash table from a link_info structure. */ #define elf_i386_hash_table(p) \ - ((struct elf_i386_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == I386_ELF_DATA ? ((struct elf_i386_link_hash_table *) ((p)->hash)) : NULL) #define elf_i386_compute_jump_table_size(htab) \ ((htab)->next_tls_desc_index * 4) @@ -808,7 +810,8 @@ elf_i386_link_hash_table_create (bfd *abfd) if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, elf_i386_link_hash_newfunc, - sizeof (struct elf_i386_link_hash_entry))) + sizeof (struct elf_i386_link_hash_entry), + I386_ELF_DATA)) { free (ret); return NULL; @@ -867,6 +870,9 @@ elf_i386_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info) return FALSE; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); if (!info->shared) htab->srelbss = bfd_get_section_by_name (dynobj, ".rel.bss"); @@ -1234,12 +1240,19 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd, name = h->root.root.string; else { - Elf_Internal_Sym *isym; struct elf_i386_link_hash_table *htab; + htab = elf_i386_hash_table (info); - isym = bfd_sym_from_r_symndx (&htab->sym_cache, - abfd, r_symndx); - name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + if (htab == NULL) + name = "*unknown*"; + else + { + Elf_Internal_Sym *isym; + + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + } } (*_bfd_error_handler) @@ -1278,6 +1291,9 @@ elf_i386_check_relocs (bfd *abfd, BFD_ASSERT (is_i386_elf (abfd)); htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); @@ -1318,7 +1334,7 @@ elf_i386_check_relocs (bfd *abfd, TRUE); if (h == NULL) return FALSE; - + /* Fake a STT_GNU_IFUNC symbol. */ h->type = STT_GNU_IFUNC; h->def_regular = 1; @@ -1367,7 +1383,7 @@ elf_i386_check_relocs (bfd *abfd, /* It is referenced by a non-shared object. */ h->ref_regular = 1; h->needs_plt = 1; - + /* STT_GNU_IFUNC symbol must go through PLT. */ h->plt.refcount += 1; @@ -1669,7 +1685,6 @@ elf_i386_check_relocs (bfd *abfd, easily. Oh well. */ void **vpp; asection *s; - Elf_Internal_Sym *isym; isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx); @@ -1758,6 +1773,7 @@ elf_i386_gc_sweep_hook (bfd *abfd, asection *sec, const Elf_Internal_Rela *relocs) { + struct elf_i386_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; @@ -1766,6 +1782,10 @@ elf_i386_gc_sweep_hook (bfd *abfd, if (info->relocatable) return TRUE; + htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + elf_section_data (sec)->local_dynrel = NULL; symtab_hdr = &elf_symtab_hdr (abfd); @@ -1811,8 +1831,8 @@ elf_i386_gc_sweep_hook (bfd *abfd, switch (r_type) { case R_386_TLS_LDM: - if (elf_i386_hash_table (info)->tls_ldm_got.refcount > 0) - elf_i386_hash_table (info)->tls_ldm_got.refcount -= 1; + if (htab->tls_ldm_got.refcount > 0) + htab->tls_ldm_got.refcount -= 1; break; case R_386_TLS_GD: @@ -1947,6 +1967,8 @@ elf_i386_adjust_dynamic_symbol (struct bfd_link_info *info, } htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; /* If there aren't any dynamic relocs in read-only sections, then we can keep the dynamic relocs and avoid the copy reloc. This @@ -2026,6 +2048,8 @@ elf_i386_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) info = (struct bfd_link_info *) inf; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it here if it is defined and referenced in a non-shared object. */ @@ -2349,6 +2373,8 @@ elf_i386_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, bfd *ibfd; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; dynobj = htab->elf.dynobj; if (dynobj == NULL) abort (); @@ -2635,17 +2661,22 @@ elf_i386_always_size_sections (bfd *output_bfd, if (tlsbase && tlsbase->type == STT_TLS) { + struct elf_i386_link_hash_table *htab; struct bfd_link_hash_entry *bh = NULL; const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); + htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + if (!(_bfd_generic_link_add_one_symbol (info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL, tls_sec, 0, NULL, FALSE, bed->collect, &bh))) return FALSE; - elf_i386_hash_table (info)->tls_module_base = bh; + htab->tls_module_base = bh; tlsbase = (struct elf_link_hash_entry *)bh; tlsbase->def_regular = 1; @@ -2665,7 +2696,7 @@ elf_i386_fake_sections (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Shdr *hdr, asection *sec) { - register const char *name; + const char *name; name = bfd_get_section_name (abfd, sec); @@ -2699,17 +2730,21 @@ elf_i386_fake_sections (bfd *abfd ATTRIBUTE_UNUSED, static void elf_i386_set_tls_module_base (struct bfd_link_info *info) { + struct elf_i386_link_hash_table *htab; struct bfd_link_hash_entry *base; if (!info->executable) return; - base = elf_i386_hash_table (info)->tls_module_base; + htab = elf_i386_hash_table (info); + if (htab == NULL) + return; - if (!base) + base = htab->tls_module_base; + if (base == NULL) return; - base->u.def.value = elf_hash_table (info)->tls_size; + base->u.def.value = htab->elf.tls_size; } /* Return the base VMA address which should be subtracted from real addresses @@ -2761,8 +2796,10 @@ elf_i386_relocate_section (bfd *output_bfd, bfd_boolean is_vxworks_tls; BFD_ASSERT (is_i386_elf (input_bfd)); - + htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); local_got_offsets = elf_local_got_offsets (input_bfd); @@ -2909,7 +2946,7 @@ elf_i386_relocate_section (bfd *output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, @@ -2918,15 +2955,8 @@ elf_i386_relocate_section (bfd *output_bfd, } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3045,7 +3075,7 @@ elf_i386_relocate_section (bfd *output_bfd, /* We can't use h->got.offset here to save state, or even just remember the offset, as finish_dynamic_symbol would use that as offset into .got. */ - + if (htab->elf.splt != NULL) { plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; @@ -3477,7 +3507,7 @@ elf_i386_relocate_section (bfd *output_bfd, xchg %ax,%ax */ bfd_vma roff; - + roff = rel->r_offset; bfd_put_8 (output_bfd, 0x66, contents + roff); bfd_put_8 (output_bfd, 0x90, contents + roff + 1); @@ -3610,7 +3640,7 @@ elf_i386_relocate_section (bfd *output_bfd, { Elf_Internal_Rela outrel; bfd_byte *loc; - int dr_type, indx; + int dr_type; asection *sreloc; if (htab->elf.srelgot == NULL) @@ -3939,7 +3969,6 @@ elf_i386_relocate_section (bfd *output_bfd, Elf_Internal_Rela outrel; asection *sreloc; bfd_byte *loc; - int indx; outrel.r_offset = rel->r_offset + input_section->output_section->vma @@ -4048,6 +4077,8 @@ elf_i386_finish_dynamic_symbol (bfd *output_bfd, struct elf_i386_link_hash_table *htab; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -4092,7 +4123,7 @@ elf_i386_finish_dynamic_symbol (bfd *output_bfd, Get the offset into the .got table of the entry that corresponds to this function. Each .got entry is 4 bytes. The first three are reserved. - + For static executables, we don't reserve anything. */ if (plt == htab->elf.splt) @@ -4251,13 +4282,15 @@ elf_i386_finish_dynamic_symbol (bfd *output_bfd, } else { + asection *plt; + if (!h->pointer_equality_needed) abort (); /* For non-shared object, we can't use .got.plt, which contains the real function addres if we need pointer equality. We load the GOT entry with the PLT entry. */ - asection *plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt; + plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt; bfd_put_32 (output_bfd, (plt->output_section->vma + plt->output_offset + h->plt.offset), @@ -4365,6 +4398,9 @@ elf_i386_finish_dynamic_sections (bfd *output_bfd, asection *sdyn; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -4577,7 +4613,7 @@ elf_i386_hash_symbol (struct elf_link_hash_entry *h) file. */ static bfd_boolean -elf_i386_add_symbol_hook (bfd * abfd ATTRIBUTE_UNUSED, +elf_i386_add_symbol_hook (bfd * abfd, struct bfd_link_info * info ATTRIBUTE_UNUSED, Elf_Internal_Sym * sym, const char ** namep ATTRIBUTE_UNUSED, @@ -4585,7 +4621,8 @@ elf_i386_add_symbol_hook (bfd * abfd ATTRIBUTE_UNUSED, asection ** secp ATTRIBUTE_UNUSED, bfd_vma * valp ATTRIBUTE_UNUSED) { - if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; return TRUE; @@ -4675,6 +4712,29 @@ elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) #include "elf32-target.h" +/* Solaris 2. */ + +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM bfd_elf32_i386_sol2_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf32-i386-sol2" + +/* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE + objects won't be recognized. */ +#undef ELF_OSABI + +#undef elf32_bed +#define elf32_bed elf32_i386_sol2_bed + +/* The Solaris 2 ABI requires a plt symbol on all platforms. + + Cf. Linker and Libraries Guide, Ch. 2, Link-Editor, Generating the Output + File, p.63. */ +#undef elf_backend_want_plt_sym +#define elf_backend_want_plt_sym 1 + +#include "elf32-target.h" + /* VxWorks support. */ #undef TARGET_LITTLE_SYM diff --git a/contrib/gdb-7/bfd/elf64-x86-64.c b/contrib/gdb-7/bfd/elf64-x86-64.c index 4fb325a9b0..21524fa749 100644 --- a/contrib/gdb-7/bfd/elf64-x86-64.c +++ b/contrib/gdb-7/bfd/elf64-x86-64.c @@ -1,6 +1,6 @@ /* X86-64 specific support for 64-bit ELF - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Jan Hubicka . This file is part of BFD, the Binary File Descriptor library. @@ -451,13 +451,13 @@ struct elf64_x86_64_obj_tdata #define is_x86_64_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == X86_64_ELF_TDATA) + && elf_object_id (bfd) == X86_64_ELF_DATA) static bfd_boolean elf64_x86_64_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf64_x86_64_obj_tdata), - X86_64_ELF_TDATA); + X86_64_ELF_DATA); } /* x86-64 ELF linker hash table. */ @@ -470,16 +470,8 @@ struct elf64_x86_64_link_hash_table asection *sdynbss; asection *srelbss; - /* The offset into splt of the PLT entry for the TLS descriptor - resolver. Special values are 0, if not necessary (or not found - to be necessary yet), and -1 if needed but not determined - yet. */ - bfd_vma tlsdesc_plt; - /* The offset into sgot of the GOT entry used by the PLT entry - above. */ - bfd_vma tlsdesc_got; - - union { + union + { bfd_signed_vma refcount; bfd_vma offset; } tls_ld_got; @@ -495,13 +487,23 @@ struct elf64_x86_64_link_hash_table /* Used by local STT_GNU_IFUNC symbols. */ htab_t loc_hash_table; - void *loc_hash_memory; + void * loc_hash_memory; + + /* The offset into splt of the PLT entry for the TLS descriptor + resolver. Special values are 0, if not necessary (or not found + to be necessary yet), and -1 if needed but not determined + yet. */ + bfd_vma tlsdesc_plt; + /* The offset into sgot of the GOT entry used by the PLT entry + above. */ + bfd_vma tlsdesc_got; }; /* Get the x86-64 ELF linker hash table from a link_info structure. */ #define elf64_x86_64_hash_table(p) \ - ((struct elf64_x86_64_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == X86_64_ELF_DATA ? ((struct elf64_x86_64_link_hash_table *) ((p)->hash)) : NULL) #define elf64_x86_64_compute_jump_table_size(htab) \ ((htab)->elf.srelplt->reloc_count * GOT_ENTRY_SIZE) @@ -622,7 +624,8 @@ elf64_x86_64_link_hash_table_create (bfd *abfd) if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, elf64_x86_64_link_hash_newfunc, - sizeof (struct elf64_x86_64_link_hash_entry))) + sizeof (struct elf64_x86_64_link_hash_entry), + X86_64_ELF_DATA)) { free (ret); return NULL; @@ -679,6 +682,9 @@ elf64_x86_64_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info) return FALSE; htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); if (!info->shared) htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss"); @@ -1018,12 +1024,19 @@ elf64_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd, name = h->root.root.string; else { - Elf_Internal_Sym *isym; struct elf64_x86_64_link_hash_table *htab; + htab = elf64_x86_64_hash_table (info); - isym = bfd_sym_from_r_symndx (&htab->sym_cache, - abfd, r_symndx); - name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + if (htab == NULL) + name = "*unknown*"; + else + { + Elf_Internal_Sym *isym; + + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + } } (*_bfd_error_handler) @@ -1061,6 +1074,9 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, BFD_ASSERT (is_x86_64_elf (abfd)); htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); @@ -1100,7 +1116,7 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, TRUE); if (h == NULL) return FALSE; - + /* Fake a STT_GNU_IFUNC symbol. */ h->type = STT_GNU_IFUNC; h->def_regular = 1; @@ -1152,7 +1168,7 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, /* It is referenced by a non-shared object. */ h->ref_regular = 1; h->needs_plt = 1; - + /* STT_GNU_IFUNC symbol must go through PLT. */ h->plt.refcount += 1; @@ -1504,7 +1520,6 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, easily. Oh well. */ asection *s; void **vpp; - Elf_Internal_Sym *isym; isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx); @@ -1595,6 +1610,7 @@ elf64_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, asection *sec, const Elf_Internal_Rela *relocs) { + struct elf64_x86_64_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; @@ -1603,6 +1619,10 @@ elf64_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, if (info->relocatable) return TRUE; + htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + elf_section_data (sec)->local_dynrel = NULL; symtab_hdr = &elf_symtab_hdr (abfd); @@ -1648,8 +1668,8 @@ elf64_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, switch (r_type) { case R_X86_64_TLSLD: - if (elf64_x86_64_hash_table (info)->tls_ld_got.refcount > 0) - elf64_x86_64_hash_table (info)->tls_ld_got.refcount -= 1; + if (htab->tls_ld_got.refcount > 0) + htab->tls_ld_got.refcount -= 1; break; case R_X86_64_TLSGD: @@ -1835,6 +1855,8 @@ elf64_x86_64_adjust_dynamic_symbol (struct bfd_link_info *info, same memory location for the variable. */ htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; /* We must generate a R_X86_64_COPY reloc to tell the dynamic linker to copy the initial value out of the dynamic object and into the @@ -1870,6 +1892,8 @@ elf64_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) info = (struct bfd_link_info *) inf; htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it here if it is defined and referenced in a non-shared object. */ @@ -2160,6 +2184,9 @@ elf64_x86_64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, bfd *ibfd; htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; if (dynobj == NULL) abort (); @@ -2455,17 +2482,22 @@ elf64_x86_64_always_size_sections (bfd *output_bfd, if (tlsbase && tlsbase->type == STT_TLS) { + struct elf64_x86_64_link_hash_table *htab; struct bfd_link_hash_entry *bh = NULL; const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); + htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + if (!(_bfd_generic_link_add_one_symbol (info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL, tls_sec, 0, NULL, FALSE, bed->collect, &bh))) return FALSE; - elf64_x86_64_hash_table (info)->tls_module_base = bh; + htab->tls_module_base = bh; tlsbase = (struct elf_link_hash_entry *)bh; tlsbase->def_regular = 1; @@ -2485,17 +2517,21 @@ elf64_x86_64_always_size_sections (bfd *output_bfd, static void elf64_x86_64_set_tls_module_base (struct bfd_link_info *info) { + struct elf64_x86_64_link_hash_table *htab; struct bfd_link_hash_entry *base; if (!info->executable) return; - base = elf64_x86_64_hash_table (info)->tls_module_base; + htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return; - if (!base) + base = htab->tls_module_base; + if (base == NULL) return; - base->u.def.value = elf_hash_table (info)->tls_size; + base->u.def.value = htab->elf.tls_size; } /* Return the base VMA address which should be subtracted from real addresses @@ -2543,6 +2579,16 @@ is_32bit_relative_branch (bfd_byte *contents, bfd_vma offset) && (contents [offset - 1] & 0xf0) == 0x80)); } +static void +elf64_x86_64_append_rela (bfd *abfd, asection *s, Elf_Internal_Rela *rel) +{ + bfd_byte *loc = s->contents; + loc += s->reloc_count++ * sizeof (Elf64_External_Rela); + BFD_ASSERT (loc + sizeof (Elf64_External_Rela) + <= s->contents + s->size); + bfd_elf64_swap_reloca_out (abfd, rel, loc); +} + /* Relocate an x86_64 ELF section. */ static bfd_boolean @@ -2563,6 +2609,8 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, BFD_ASSERT (is_x86_64_elf (input_bfd)); htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); local_got_offsets = elf_local_got_offsets (input_bfd); @@ -2628,7 +2676,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - bfd_boolean warned; + bfd_boolean warned ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, @@ -2637,15 +2685,8 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -2712,7 +2753,6 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, if (info->shared && h->non_got_ref) { Elf_Internal_Rela outrel; - bfd_byte *loc; asection *sreloc; /* Need a dynamic relocation to get the real function @@ -2745,10 +2785,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } sreloc = htab->elf.irelifunc; - loc = sreloc->contents; - loc += (sreloc->reloc_count++ - * sizeof (Elf64_External_Rela)); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf64_x86_64_append_rela (output_bfd, sreloc, &outrel); /* If this reloc is against an external symbol, we do not want to fiddle with the addend. Otherwise, @@ -2931,7 +2968,6 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, { asection *s; Elf_Internal_Rela outrel; - bfd_byte *loc; /* We need to generate a R_X86_64_RELATIVE reloc for the dynamic linker. */ @@ -2944,9 +2980,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, + off); outrel.r_info = ELF64_R_INFO (0, R_X86_64_RELATIVE); outrel.r_addend = relocation; - loc = s->contents; - loc += s->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf64_x86_64_append_rela (output_bfd, s, &outrel); } local_got_offsets[r_symndx] |= 1; @@ -3135,7 +3169,6 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, || h->root.type == bfd_link_hash_undefined))) { Elf_Internal_Rela outrel; - bfd_byte *loc; bfd_boolean skip, relocate; asection *sreloc; @@ -3219,9 +3252,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL); - loc = sreloc->contents; - loc += sreloc->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf64_x86_64_append_rela (output_bfd, sreloc, &outrel); /* If this reloc is against an external symbol, we do not want to fiddle with the addend. Otherwise, we @@ -3281,13 +3312,11 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, leaq x@tlsdesc(%rip), %rax Change it to: - movl $x@tpoff, %rax - */ + movl $x@tpoff, %rax. */ - unsigned int val, type, type2; + unsigned int val, type; type = bfd_get_8 (input_bfd, contents + roff - 3); - type2 = bfd_get_8 (input_bfd, contents + roff - 2); val = bfd_get_8 (input_bfd, contents + roff - 1); bfd_put_8 (output_bfd, 0x48 | ((type >> 2) & 1), contents + roff - 3); @@ -3392,7 +3421,6 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, else { Elf_Internal_Rela outrel; - bfd_byte *loc; int dr_type, indx; asection *sreloc; @@ -3411,16 +3439,11 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, + offplt + htab->sgotplt_jump_table_size); sreloc = htab->elf.srelplt; - loc = sreloc->contents; - loc += sreloc->reloc_count++ - * sizeof (Elf64_External_Rela); - BFD_ASSERT (loc + sizeof (Elf64_External_Rela) - <= sreloc->contents + sreloc->size); if (indx == 0) outrel.r_addend = relocation - elf64_x86_64_dtpoff_base (info); else outrel.r_addend = 0; - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf64_x86_64_append_rela (output_bfd, sreloc, &outrel); } sreloc = htab->elf.srelgot; @@ -3442,11 +3465,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, outrel.r_addend = relocation - elf64_x86_64_dtpoff_base (info); outrel.r_info = ELF64_R_INFO (indx, dr_type); - loc = sreloc->contents; - loc += sreloc->reloc_count++ * sizeof (Elf64_External_Rela); - BFD_ASSERT (loc + sizeof (Elf64_External_Rela) - <= sreloc->contents + sreloc->size); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf64_x86_64_append_rela (output_bfd, sreloc, &outrel); if (GOT_TLS_GD_P (tls_type)) { @@ -3464,11 +3483,8 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, outrel.r_info = ELF64_R_INFO (indx, R_X86_64_DTPOFF64); outrel.r_offset += GOT_ENTRY_SIZE; - sreloc->reloc_count++; - loc += sizeof (Elf64_External_Rela); - BFD_ASSERT (loc + sizeof (Elf64_External_Rela) - <= sreloc->contents + sreloc->size); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf64_x86_64_append_rela (output_bfd, sreloc, + &outrel); } } @@ -3529,14 +3545,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, leaq x@tlsdesc(%rip), %rax Change it to: - movq x@gottpoff(%rip), %rax # before xchg %ax,%ax - */ - - unsigned int val, type, type2; - - type = bfd_get_8 (input_bfd, contents + roff - 3); - type2 = bfd_get_8 (input_bfd, contents + roff - 2); - val = bfd_get_8 (input_bfd, contents + roff - 1); + movq x@gottpoff(%rip), %rax # before xchg %ax,%ax. */ /* Now modify the instruction as appropriate. To turn a leaq into a movq in the form we use it, it @@ -3561,12 +3570,8 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, call *(%rax) Change it to: - xchg %ax,%ax. */ - - unsigned int val, type; + xchg %ax, %ax. */ - type = bfd_get_8 (input_bfd, contents + roff); - val = bfd_get_8 (input_bfd, contents + roff + 1); bfd_put_8 (output_bfd, 0x66, contents + roff); bfd_put_8 (output_bfd, 0x90, contents + roff + 1); continue; @@ -3608,7 +3613,6 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, else { Elf_Internal_Rela outrel; - bfd_byte *loc; if (htab->elf.srelgot == NULL) abort (); @@ -3622,9 +3626,8 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, htab->elf.sgot->contents + off + GOT_ENTRY_SIZE); outrel.r_info = ELF64_R_INFO (0, R_X86_64_DTPMOD64); outrel.r_addend = 0; - loc = htab->elf.srelgot->contents; - loc += htab->elf.srelgot->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf64_x86_64_append_rela (output_bfd, htab->elf.srelgot, + &outrel); htab->tls_ld_got.offset |= 1; } relocation = htab->elf.sgot->output_section->vma @@ -3718,6 +3721,8 @@ elf64_x86_64_finish_dynamic_symbol (bfd *output_bfd, struct elf64_x86_64_link_hash_table *htab; htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -3757,7 +3762,7 @@ elf64_x86_64_finish_dynamic_symbol (bfd *output_bfd, corresponds to this symbol. This is the index of this symbol in all the symbols for which we are making plt entries. The first entry in the procedure linkage table is reserved. - + Get the offset into the .got table of the entry that corresponds to this function. Each .got entry is GOT_ENTRY_SIZE bytes. The first three are reserved for the dynamic linker. @@ -3858,7 +3863,6 @@ elf64_x86_64_finish_dynamic_symbol (bfd *output_bfd, && elf64_x86_64_hash_entry (h)->tls_type != GOT_TLS_IE) { Elf_Internal_Rela rela; - bfd_byte *loc; /* This symbol has an entry in the global offset table. Set it up. */ @@ -3921,15 +3925,12 @@ do_glob_dat: rela.r_addend = 0; } - loc = htab->elf.srelgot->contents; - loc += htab->elf.srelgot->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &rela, loc); + elf64_x86_64_append_rela (output_bfd, htab->elf.srelgot, &rela); } if (h->needs_copy) { Elf_Internal_Rela rela; - bfd_byte *loc; /* This symbol needs a copy reloc. Set it up. */ @@ -3944,9 +3945,7 @@ do_glob_dat: + h->root.u.def.section->output_offset); rela.r_info = ELF64_R_INFO (h->dynindx, R_X86_64_COPY); rela.r_addend = 0; - loc = htab->srelbss->contents; - loc += htab->srelbss->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &rela, loc); + elf64_x86_64_append_rela (output_bfd, htab->srelbss, &rela); } /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. SYM may @@ -4003,6 +4002,9 @@ elf64_x86_64_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *inf asection *sdyn; htab = elf64_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -4232,10 +4234,11 @@ elf64_x86_64_add_symbol_hook (bfd *abfd, } *secp = lcomm; *valp = sym->st_size; - break; + return TRUE; } - if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; return TRUE; @@ -4247,11 +4250,11 @@ elf64_x86_64_add_symbol_hook (bfd *abfd, static bfd_boolean elf64_x86_64_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED, - asection *sec, int *index) + asection *sec, int *index_return) { if (sec == &_bfd_elf_large_com_section) { - *index = SHN_X86_64_LCOMMON; + *index_return = SHN_X86_64_LCOMMON; return TRUE; } return FALSE; @@ -4487,6 +4490,29 @@ static const struct bfd_elf_special_section #include "elf64-target.h" +/* Solaris 2 support. */ + +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM bfd_elf64_x86_64_sol2_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf64-x86-64-sol2" + +/* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE + objects won't be recognized. */ +#undef ELF_OSABI + +#undef elf64_bed +#define elf64_bed elf64_x86_64_sol2_bed + +/* The Solaris 2 ABI requires a plt symbol on all platforms. + + Cf. Linker and Libraries Guide, Ch. 2, Link-Editor, Generating the Output + File, p.63. */ +#undef elf_backend_want_plt_sym +#define elf_backend_want_plt_sym 1 + +#include "elf64-target.h" + /* Intel L1OM support. */ static bfd_boolean diff --git a/contrib/gdb-7/bfd/elfcode.h b/contrib/gdb-7/bfd/elfcode.h index f5391194b6..cd06455664 100644 --- a/contrib/gdb-7/bfd/elfcode.h +++ b/contrib/gdb-7/bfd/elfcode.h @@ -1,6 +1,6 @@ /* ELF executable support for BFD. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support, from information published @@ -279,7 +279,10 @@ elf_swap_ehdr_out (bfd *abfd, H_PUT_32 (abfd, src->e_flags, dst->e_flags); H_PUT_16 (abfd, src->e_ehsize, dst->e_ehsize); H_PUT_16 (abfd, src->e_phentsize, dst->e_phentsize); - H_PUT_16 (abfd, src->e_phnum, dst->e_phnum); + tmp = src->e_phnum; + if (tmp > PN_XNUM) + tmp = PN_XNUM; + H_PUT_16 (abfd, tmp, dst->e_phnum); H_PUT_16 (abfd, src->e_shentsize, dst->e_shentsize); tmp = src->e_shnum; if (tmp >= (SHN_LORESERVE & 0xffff)) @@ -701,6 +704,14 @@ elf_object_p (bfd *abfd) goto got_wrong_format_error; } + /* And program headers. */ + if (i_ehdrp->e_phnum == PN_XNUM && i_shdr.sh_info != 0) + { + i_ehdrp->e_phnum = i_shdr.sh_info; + if (i_ehdrp->e_phnum != i_shdr.sh_info) + goto got_wrong_format_error; + } + /* Sanity check that we can read all of the section headers. It ought to be good enough to just read the last one. */ if (i_ehdrp->e_shnum != 1) @@ -761,10 +772,13 @@ elf_object_p (bfd *abfd) /* Sanity check sh_link and sh_info. */ if (i_shdrp[shindex].sh_link >= num_sec) { - /* PR 10478: Accept sparc binaries with a sh_link + /* PR 10478: Accept Solaris binaries with a sh_link field set to SHN_BEFORE or SHN_AFTER. */ switch (ebd->elf_machine_code) { + case EM_386: + case EM_486: + case EM_X86_64: case EM_OLD_SPARCV9: case EM_SPARC32PLUS: case EM_SPARCV9: @@ -1069,6 +1083,8 @@ elf_write_shdrs_and_ehdr (bfd *abfd) /* Some fields in the first section header handle overflow of ehdr fields. */ + if (i_ehdrp->e_phnum >= PN_XNUM) + i_shdrp[0]->sh_info = i_ehdrp->e_phnum; if (i_ehdrp->e_shnum >= (SHN_LORESERVE & 0xffff)) i_shdrp[0]->sh_size = i_ehdrp->e_shnum; if (i_ehdrp->e_shstrndx >= (SHN_LORESERVE & 0xffff)) @@ -1825,6 +1841,8 @@ NAME(_bfd_elf,bfd_from_remote_memory) bim->buffer = contents; nbfd->iostream = bim; nbfd->flags = BFD_IN_MEMORY; + nbfd->iovec = &_bfd_memory_iovec; + nbfd->origin = 0; nbfd->direction = read_direction; nbfd->mtime = time (NULL); nbfd->mtime_set = TRUE; diff --git a/contrib/gdb-7/bfd/elfcore.h b/contrib/gdb-7/bfd/elfcore.h index c51c575606..168c81ae21 100644 --- a/contrib/gdb-7/bfd/elfcore.h +++ b/contrib/gdb-7/bfd/elfcore.h @@ -1,6 +1,6 @@ /* ELF core file support for BFD. Copyright 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2007, - 2008 Free Software Foundation, Inc. + 2008, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -184,6 +184,61 @@ elf_core_file_p (bfd *abfd) if (i_ehdrp->e_phentsize != sizeof (Elf_External_Phdr)) goto wrong; + /* If the program header count is PN_XNUM(0xffff), the actual + count is in the first section header. */ + if (i_ehdrp->e_shoff != 0 && i_ehdrp->e_phnum == PN_XNUM) + { + Elf_External_Shdr x_shdr; + Elf_Internal_Shdr i_shdr; + bfd_signed_vma where = i_ehdrp->e_shoff; + + if (where != (file_ptr) where) + goto wrong; + + /* Seek to the section header table in the file. */ + if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + goto fail; + + /* Read the first section header at index 0, and convert to internal + form. */ + if (bfd_bread (&x_shdr, sizeof (x_shdr), abfd) != sizeof (x_shdr)) + goto fail; + elf_swap_shdr_in (abfd, &x_shdr, &i_shdr); + + if (i_shdr.sh_info != 0) + { + i_ehdrp->e_phnum = i_shdr.sh_info; + if (i_ehdrp->e_phnum != i_shdr.sh_info) + goto wrong; + } + } + + /* Sanity check that we can read all of the program headers. + It ought to be good enough to just read the last one. */ + if (i_ehdrp->e_phnum > 1) + { + Elf_External_Phdr x_phdr; + Elf_Internal_Phdr i_phdr; + bfd_signed_vma where; + + /* Check that we don't have a totally silly number of + program headers. */ + if (i_ehdrp->e_phnum > (unsigned int) -1 / sizeof (x_phdr) + || i_ehdrp->e_phnum > (unsigned int) -1 / sizeof (i_phdr)) + goto wrong; + + where = i_ehdrp->e_phoff + (i_ehdrp->e_phnum - 1) * sizeof (x_phdr); + if (where != (file_ptr) where) + goto wrong; + if ((bfd_size_type) where <= i_ehdrp->e_phoff) + goto wrong; + + if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + goto fail; + if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr)) + goto fail; + } + /* Move to the start of the program headers. */ if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_phoff, SEEK_SET) != 0) goto wrong; diff --git a/contrib/gdb-7/bfd/elflink.c b/contrib/gdb-7/bfd/elflink.c index c42c6e135b..f445912dc9 100644 --- a/contrib/gdb-7/bfd/elflink.c +++ b/contrib/gdb-7/bfd/elflink.c @@ -1,6 +1,6 @@ /* ELF linking support for BFD. Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -185,7 +185,7 @@ bfd_boolean _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) { flagword flags; - register asection *s; + asection *s; const struct elf_backend_data *bed; if (! is_elf_hash_table (info->hash)) @@ -570,8 +570,7 @@ bfd_elf_record_link_assignment (bfd *output_bfd, if (provide && hidden) { - const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); - + bed = get_elf_backend_data (output_bfd); h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN; (*bed->elf_backend_hide_symbol) (info, h, TRUE); } @@ -1014,6 +1013,11 @@ _bfd_elf_merge_symbol (bfd *abfd, break; } + /* Differentiate strong and weak symbols. */ + newweak = bind == STB_WEAK; + oldweak = (h->root.type == bfd_link_hash_defweak + || h->root.type == bfd_link_hash_undefweak); + /* In cases involving weak versioned symbols, we may wind up trying to merge a symbol with itself. Catch that here, to avoid the confusion that results if we try to override a symbol with @@ -1021,6 +1025,7 @@ _bfd_elf_merge_symbol (bfd *abfd, _GLOBAL_OFFSET_TABLE_, which are regular symbols defined in a dynamic object, which we do want to handle here. */ if (abfd == oldbfd + && (newweak || oldweak) && ((abfd->flags & DYNAMIC) == 0 || !h->def_regular)) return TRUE; @@ -1184,9 +1189,8 @@ _bfd_elf_merge_symbol (bfd *abfd, was referenced before. */ if (h->ref_regular) { - const struct elf_backend_data *bed - = get_elf_backend_data (abfd); struct elf_link_hash_entry *vh = *sym_hash; + vh->root.type = h->root.type; h->root.type = bfd_link_hash_indirect; (*bed->elf_backend_copy_indirect_symbol) (info, vh, h); @@ -1243,11 +1247,6 @@ _bfd_elf_merge_symbol (bfd *abfd, return TRUE; } - /* Differentiate strong and weak symbols. */ - newweak = bind == STB_WEAK; - oldweak = (h->root.type == bfd_link_hash_defweak - || h->root.type == bfd_link_hash_undefweak); - if (bind == STB_GNU_UNIQUE) h->unique_global = 1; @@ -1548,7 +1547,6 @@ _bfd_elf_merge_symbol (bfd *abfd, /* Handle the case where we had a versioned symbol in a dynamic library and now find a definition in a normal object. In this case, we make the versioned symbol point to the normal one. */ - const struct elf_backend_data *bed = get_elf_backend_data (abfd); flip->root.type = h->root.type; flip->root.u.undef.abfd = h->root.u.undef.abfd; h->root.type = bfd_link_hash_indirect; @@ -1718,7 +1716,7 @@ _bfd_elf_add_default_symbol (bfd *abfd, { if (! dynamic) { - if (info->shared + if (! info->executable || hi->ref_dynamic) *dynsym = TRUE; } @@ -1787,7 +1785,7 @@ nondefault: { if (! dynamic) { - if (info->shared + if (! info->executable || hi->ref_dynamic) *dynsym = TRUE; } @@ -3234,6 +3232,8 @@ elf_finalize_dynstr (bfd *output_bfd, struct bfd_link_info *info) case DT_RUNPATH: case DT_FILTER: case DT_AUXILIARY: + case DT_AUDIT: + case DT_DEPAUDIT: dyn.d_un.d_val = _bfd_elf_strtab_offset (dynstr, dyn.d_un.d_val); break; default: @@ -3525,6 +3525,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) { asection *s; const char *soname = NULL; + char *audit = NULL; struct bfd_link_needed_list *rpath = NULL, *runpath = NULL; int ret; @@ -3653,6 +3654,11 @@ error_free_dyn: ; *pn = n; } + if (dyn.d_tag == DT_AUDIT) + { + unsigned int tagv = dyn.d_un.d_val; + audit = bfd_elf_string_from_elf_section (abfd, shlink, tagv); + } } free (dynbuf); @@ -3705,6 +3711,9 @@ error_free_dyn: particular dynamic object more than once. */ if (ret > 0) return TRUE; + + /* Save the DT_AUDIT entry for the linker emulation code. */ + elf_dt_audit (abfd) = audit; } /* If this is a dynamic object, we always link against the .dynsym @@ -3866,6 +3875,7 @@ error_free_dyn: bfd_boolean common; unsigned int old_alignment; bfd *old_bfd; + bfd * undef_bfd = NULL; override = FALSE; @@ -3990,6 +4000,20 @@ error_free_dyn: unsigned int vernum = 0; bfd_boolean skip; + /* If this is a definition of a symbol which was previously + referenced in a non-weak manner then make a note of the bfd + that contained the reference. This is used if we need to + refer to the source of the reference later on. */ + if (! bfd_is_und_section (sec)) + { + h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); + + if (h != NULL + && h->root.type == bfd_link_hash_undefined + && h->root.u.undef.abfd) + undef_bfd = h->root.u.undef.abfd; + } + if (ever == NULL) { if (info->default_imported_symver) @@ -4097,6 +4121,19 @@ error_free_dyn: name = newname; } + /* If necessary, make a second attempt to locate the bfd + containing an unresolved, non-weak reference to the + current symbol. */ + if (! bfd_is_und_section (sec) && undef_bfd == NULL) + { + h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); + + if (h != NULL + && h->root.type == bfd_link_hash_undefined + && h->root.u.undef.abfd) + undef_bfd = h->root.u.undef.abfd; + } + if (!_bfd_elf_merge_symbol (abfd, info, name, isym, &sec, &value, &old_alignment, sym_hash, &skip, &override, @@ -4362,7 +4399,6 @@ error_free_dyn: if (definition && (sec->flags & SEC_DEBUGGING) && !info->relocatable) { /* We don't want to make debug symbol dynamic. */ - (*bed->elf_backend_hide_symbol) (info, h, TRUE); dynsym = FALSE; } @@ -4433,13 +4469,18 @@ error_free_dyn: /* A symbol from a library loaded via DT_NEEDED of some other library is referenced by a regular object. Add a DT_NEEDED entry for it. Issue an error if - --no-add-needed is used. */ - if ((elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0) + --no-add-needed is used and the reference was not + a weak one. */ + if (undef_bfd != NULL + && (elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0) { (*_bfd_error_handler) - (_("%s: invalid DSO for symbol `%s' definition"), + (_("%B: undefined reference to symbol '%s'"), + undef_bfd, name); + (*_bfd_error_handler) + (_("note: '%s' is defined in DSO %B so try adding it to the linker command line"), abfd, name); - bfd_set_error (bfd_error_bad_value); + bfd_set_error (bfd_error_invalid_operation); goto error_free_vers; } @@ -5441,6 +5482,20 @@ compute_bucket_count (struct bfd_link_info *info, return best_size; } +/* Size any SHT_GROUP section for ld -r. */ + +bfd_boolean +_bfd_elf_size_group_sections (struct bfd_link_info *info) +{ + bfd *ibfd; + + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + if (bfd_get_flavour (ibfd) == bfd_target_elf_flavour + && !_bfd_elf_fixup_group_sections (ibfd, bfd_abs_section_ptr)) + return FALSE; + return TRUE; +} + /* Set up the sizes and contents of the ELF dynamic sections. This is called by the ELF linker emulation before_allocation routine. We must set the sizes of the sections before the linker sets the @@ -5451,6 +5506,8 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, const char *soname, const char *rpath, const char *filter_shlib, + const char *audit, + const char *depaudit, const char * const *auxiliary_filters, struct bfd_link_info *info, asection **sinterpptr, @@ -5513,6 +5570,10 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, elf_hash_table (info)->init_plt_refcount = elf_hash_table (info)->init_plt_offset; + if (info->relocatable + && !_bfd_elf_size_group_sections (info)) + return FALSE; + /* The backend may have to create some sections regardless of whether we're dynamic or not. */ if (bed->elf_backend_always_size_sections @@ -5603,6 +5664,28 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, } } + if (audit != NULL) + { + bfd_size_type indx; + + indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, audit, + TRUE); + if (indx == (bfd_size_type) -1 + || !_bfd_elf_add_dynamic_entry (info, DT_AUDIT, indx)) + return FALSE; + } + + if (depaudit != NULL) + { + bfd_size_type indx; + + indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, depaudit, + TRUE); + if (indx == (bfd_size_type) -1 + || !_bfd_elf_add_dynamic_entry (info, DT_DEPAUDIT, indx)) + return FALSE; + } + eif.info = info; eif.verdefs = verdefs; eif.failed = FALSE; @@ -5864,6 +5947,10 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, { struct bfd_elf_version_deps *n; + /* Don't emit base version twice. */ + if (t->vernum == 0) + continue; + size += sizeof (Elf_External_Verdef); size += sizeof (Elf_External_Verdaux); ++cdefs; @@ -5963,6 +6050,10 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, unsigned int cdeps; struct bfd_elf_version_deps *n; + /* Don't emit the base version twice. */ + if (t->vernum == 0) + continue; + cdeps = 0; for (n = t->deps; n != NULL; n = n->next) ++cdeps; @@ -5994,7 +6085,13 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, def.vd_hash = bfd_elf_hash (t->name); def.vd_aux = sizeof (Elf_External_Verdef); def.vd_next = 0; - if (t->next != NULL) + + /* If a basever node is next, it *must* be the last node in + the chain, otherwise Verdef construction breaks. */ + if (t->next != NULL && t->next->vernum == 0) + BFD_ASSERT (t->next->next == NULL); + + if (t->next != NULL && t->next->vernum != 0) def.vd_next = (sizeof (Elf_External_Verdef) + (cdeps + 1) * sizeof (Elf_External_Verdaux)); @@ -6095,7 +6192,7 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, unsigned int crefs; bfd_byte *p; - /* Build the version definition section. */ + /* Build the version dependency section. */ size = 0; crefs = 0; for (t = elf_tdata (output_bfd)->verref; @@ -6718,7 +6815,8 @@ _bfd_elf_link_hash_table_init struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *), - unsigned int entsize) + unsigned int entsize, + enum elf_target_id target_id) { bfd_boolean ret; int can_refcount = get_elf_backend_data (abfd)->can_refcount; @@ -6732,7 +6830,9 @@ _bfd_elf_link_hash_table_init table->dynsymcount = 1; ret = _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize); + table->root.type = bfd_link_elf_hash_table; + table->hash_table_id = target_id; return ret; } @@ -6750,7 +6850,8 @@ _bfd_elf_link_hash_table_create (bfd *abfd) return NULL; if (! _bfd_elf_link_hash_table_init (ret, abfd, _bfd_elf_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + GENERIC_ELF_DATA)) { free (ret); return NULL; @@ -8443,10 +8544,14 @@ elf_link_check_versioned_symbol (struct bfd_link_info *info, _bfd_elf_swap_versym_in (input, ever, &iver); - if ((iver.vs_vers & VERSYM_HIDDEN) == 0) + if ((iver.vs_vers & VERSYM_HIDDEN) == 0 + && !(h->def_regular + && h->forced_local)) { /* If we have a non-hidden versioned sym, then it should - have provided a definition for the undefined sym. */ + have provided a definition for the undefined sym unless + it is defined in a non-shared object and forced local. + */ abort (); } @@ -8511,7 +8616,9 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data) { /* If we have an undefined symbol reference here then it must have come from a shared library that is being linked in. (Undefined - references in regular files have already been handled). */ + references in regular files have already been handled unless + they are in unreferenced sections which are removed by garbage + collection). */ bfd_boolean ignore_undef = FALSE; /* Some symbols may be special in that the fact that they're @@ -8522,12 +8629,13 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data) /* If we are reporting errors for this situation then do so now. */ if (ignore_undef == FALSE && h->ref_dynamic - && ! h->ref_regular + && (!h->ref_regular || finfo->info->gc_sections) && ! elf_link_check_versioned_symbol (finfo->info, bed, h) && finfo->info->unresolved_syms_in_shared_libs != RM_IGNORE) { if (! (finfo->info->callbacks->undefined_symbol - (finfo->info, h->root.root.string, h->root.u.undef.abfd, + (finfo->info, h->root.root.string, + h->ref_regular ? NULL : h->root.u.undef.abfd, NULL, 0, finfo->info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR))) { eoinfo->failed = TRUE; @@ -8587,9 +8695,11 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data) strip = FALSE; /* If we're stripping it, and it's not a dynamic symbol, there's - nothing else to do unless it is a forced local symbol. */ + nothing else to do unless it is a forced local symbol or a + STT_GNU_IFUNC symbol. */ if (strip && h->dynindx == -1 + && h->type != STT_GNU_IFUNC && !h->forced_local) return TRUE; @@ -8597,7 +8707,11 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data) sym.st_size = h->size; sym.st_other = h->other; if (h->forced_local) - sym.st_info = ELF_ST_INFO (STB_LOCAL, h->type); + { + sym.st_info = ELF_ST_INFO (STB_LOCAL, h->type); + /* Turn off visibility on local symbol. */ + sym.st_other &= ~ELF_ST_VISIBILITY (-1); + } else if (h->unique_global) sym.st_info = ELF_ST_INFO (STB_GNU_UNIQUE, h->type); else if (h->root.type == bfd_link_hash_undefweak @@ -10053,9 +10167,9 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) bfd_boolean emit_relocs; bfd *dynobj; struct elf_final_link_info finfo; - register asection *o; - register struct bfd_link_order *p; - register bfd *sub; + asection *o; + struct bfd_link_order *p; + bfd *sub; bfd_size_type max_contents_size; bfd_size_type max_external_reloc_size; bfd_size_type max_internal_reloc_count; @@ -10504,9 +10618,10 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) if (size == 0 && (sec->flags & SEC_HAS_CONTENTS) == 0) { - struct bfd_link_order *o = sec->map_tail.link_order; - if (o != NULL) - size = o->offset + o->size; + struct bfd_link_order *ord = sec->map_tail.link_order; + + if (ord != NULL) + size = ord->offset + ord->size; } end = sec->vma + size; } @@ -10669,13 +10784,11 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) asection *s; bfd_byte *dest; - sym.st_size = e->isym.st_size; - sym.st_other = e->isym.st_other; - - /* Copy the internal symbol as is. + /* Copy the internal symbol and turn off visibility. Note that we saved a word of storage and overwrote the original st_name with the dynstr_index. */ sym = e->isym; + sym.st_other &= ~ELF_ST_VISIBILITY (-1); s = bfd_section_from_elf_index (e->input_bfd, e->isym.st_shndx); @@ -11277,6 +11390,8 @@ _bfd_elf_gc_mark_hook (asection *sec, struct elf_link_hash_entry *h, Elf_Internal_Sym *sym) { + const char *sec_name; + if (h != NULL) { switch (h->root.type) @@ -11288,6 +11403,33 @@ _bfd_elf_gc_mark_hook (asection *sec, case bfd_link_hash_common: return h->root.u.c.p->section; + case bfd_link_hash_undefined: + case bfd_link_hash_undefweak: + /* To work around a glibc bug, keep all XXX input sections + when there is an as yet undefined reference to __start_XXX + or __stop_XXX symbols. The linker will later define such + symbols for orphan input sections that have a name + representable as a C identifier. */ + if (strncmp (h->root.root.string, "__start_", 8) == 0) + sec_name = h->root.root.string + 8; + else if (strncmp (h->root.root.string, "__stop_", 7) == 0) + sec_name = h->root.root.string + 7; + else + sec_name = NULL; + + if (sec_name && *sec_name != '\0') + { + bfd *i; + + for (i = info->input_bfds; i; i = i->link_next) + { + sec = bfd_get_section_by_name (i, sec_name); + if (sec) + sec->flags |= SEC_KEEP; + } + } + break; + default: break; } @@ -11473,9 +11615,10 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info) o->gc_mark = first->gc_mark; } else if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0 - || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0) + || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0 + || elf_section_data (o)->this_hdr.sh_type == SHT_NOTE) { - /* Keep debug and special sections. */ + /* Keep debug, special and SHT_NOTE sections. */ o->gc_mark = 1; } @@ -12495,7 +12638,7 @@ _bfd_elf_get_dynamic_reloc_section (bfd * abfd, section does not exist it is created and attached to the DYNOBJ bfd and stored in the SRELOC field of SEC's elf_section_data structure. - + ALIGNMENT is the alignment for the newly created section and IS_RELA defines whether the name should be .rela. or .rel.. The section name is looked up in the @@ -12540,3 +12683,15 @@ _bfd_elf_make_dynamic_reloc_section (asection * sec, return reloc_sec; } + +/* Copy the ELF symbol type associated with a linker hash entry. */ +void +_bfd_elf_copy_link_hash_symbol_type (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry * hdest, + struct bfd_link_hash_entry * hsrc) +{ + struct elf_link_hash_entry *ehdest = (struct elf_link_hash_entry *)hdest; + struct elf_link_hash_entry *ehsrc = (struct elf_link_hash_entry *)hsrc; + + ehdest->type = ehsrc->type; +} diff --git a/contrib/gdb-7/bfd/elfxx-target.h b/contrib/gdb-7/bfd/elfxx-target.h index 413f273f8b..ebce6a8f07 100644 --- a/contrib/gdb-7/bfd/elfxx-target.h +++ b/contrib/gdb-7/bfd/elfxx-target.h @@ -260,6 +260,11 @@ #define bfd_elfNN_bfd_link_just_syms _bfd_elf_link_just_syms #endif +#ifndef bfd_elfNN_bfd_copy_link_hash_symbol_type +#define bfd_elfNN_bfd_copy_link_hash_symbol_type \ + _bfd_elf_copy_link_hash_symbol_type +#endif + #ifndef bfd_elfNN_bfd_link_split_section #define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section #endif diff --git a/contrib/gdb-7/bfd/hash.c b/contrib/gdb-7/bfd/hash.c index 5223e21d2c..fc05923a5c 100644 --- a/contrib/gdb-7/bfd/hash.c +++ b/contrib/gdb-7/bfd/hash.c @@ -425,7 +425,7 @@ bfd_hash_lookup (struct bfd_hash_table *table, unsigned int c; struct bfd_hash_entry *hashp; unsigned int len; - unsigned int index; + unsigned int _index; hash = 0; len = 0; @@ -439,8 +439,8 @@ bfd_hash_lookup (struct bfd_hash_table *table, hash += len + (len << 17); hash ^= hash >> 2; - index = hash % table->size; - for (hashp = table->table[index]; + _index = hash % table->size; + for (hashp = table->table[_index]; hashp != NULL; hashp = hashp->next) { @@ -478,16 +478,16 @@ bfd_hash_insert (struct bfd_hash_table *table, unsigned long hash) { struct bfd_hash_entry *hashp; - unsigned int index; + unsigned int _index; hashp = (*table->newfunc) (NULL, table, string); if (hashp == NULL) return NULL; hashp->string = string; hashp->hash = hash; - index = hash % table->size; - hashp->next = table->table[index]; - table->table[index] = hashp; + _index = hash % table->size; + hashp->next = table->table[_index]; + table->table[_index] = hashp; table->count++; if (!table->frozen && table->count > table->size * 3 / 4) @@ -524,9 +524,9 @@ bfd_hash_insert (struct bfd_hash_table *table, chain_end = chain_end->next; table->table[hi] = chain_end->next; - index = chain->hash % newsize; - chain_end->next = newtable[index]; - newtable[index] = chain; + _index = chain->hash % newsize; + chain_end->next = newtable[_index]; + newtable[_index] = chain; } table->table = newtable; table->size = newsize; @@ -542,11 +542,11 @@ bfd_hash_replace (struct bfd_hash_table *table, struct bfd_hash_entry *old, struct bfd_hash_entry *nw) { - unsigned int index; + unsigned int _index; struct bfd_hash_entry **pph; - index = old->hash % table->size; - for (pph = &table->table[index]; + _index = old->hash % table->size; + for (pph = &table->table[_index]; (*pph) != NULL; pph = &(*pph)->next) { @@ -617,14 +617,14 @@ bfd_hash_set_default_size (bfd_size_type hash_size) { 251, 509, 1021, 2039, 4051, 8599, 16699, 32749 }; - size_t index; + size_t _index; /* Work out best prime number near the hash_size. */ - for (index = 0; index < ARRAY_SIZE (hash_size_primes) - 1; ++index) - if (hash_size <= hash_size_primes[index]) + for (_index = 0; _index < ARRAY_SIZE (hash_size_primes) - 1; ++_index) + if (hash_size <= hash_size_primes[_index]) break; - bfd_default_hash_table_size = hash_size_primes[index]; + bfd_default_hash_table_size = hash_size_primes[_index]; } /* A few different object file formats (a.out, COFF, ELF) use a string diff --git a/contrib/gdb-7/bfd/ihex.c b/contrib/gdb-7/bfd/ihex.c index aaad6d7b46..6a9816c0b5 100644 --- a/contrib/gdb-7/bfd/ihex.c +++ b/contrib/gdb-7/bfd/ihex.c @@ -939,6 +939,8 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED, #define ihex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define ihex_bfd_link_add_symbols _bfd_generic_link_add_symbols #define ihex_bfd_link_just_syms _bfd_generic_link_just_syms +#define ihex_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define ihex_bfd_final_link _bfd_generic_final_link #define ihex_bfd_link_split_section _bfd_generic_link_split_section diff --git a/contrib/gdb-7/bfd/libbfd.c b/contrib/gdb-7/bfd/libbfd.c index f79e190540..b378622b6b 100644 --- a/contrib/gdb-7/bfd/libbfd.c +++ b/contrib/gdb-7/bfd/libbfd.c @@ -1,6 +1,6 @@ /* Assorted BFD support routines, only used internally. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. Written by Cygnus Support. @@ -804,9 +804,9 @@ bfd_put_bits (bfd_uint64_t data, void *p, int bits, bfd_boolean big_p) bytes = bits / 8; for (i = 0; i < bytes; i++) { - int index = big_p ? bytes - i - 1 : i; + int addr_index = big_p ? bytes - i - 1 : i; - addr[index] = data & 0xff; + addr[addr_index] = data & 0xff; data >>= 8; } } @@ -826,9 +826,9 @@ bfd_get_bits (const void *p, int bits, bfd_boolean big_p) bytes = bits / 8; for (i = 0; i < bytes; i++) { - int index = big_p ? i : bytes - i - 1; + int addr_index = big_p ? i : bytes - i - 1; - data = (data << 8) | addr[index]; + data = (data << 8) | addr[addr_index]; } return data; diff --git a/contrib/gdb-7/bfd/libbfd.h b/contrib/gdb-7/bfd/libbfd.h index 2450b2d80b..3da79d9dde 100644 --- a/contrib/gdb-7/bfd/libbfd.h +++ b/contrib/gdb-7/bfd/libbfd.h @@ -7,7 +7,8 @@ (This include file is not for users of the library.) Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -95,6 +96,7 @@ struct artdata { struct areltdata { char * arch_header; /* it's actually a string */ unsigned int parsed_size; /* octets of filesize not including ar_hdr */ + unsigned int extra_size; /* BSD4.4: extra bytes after the header. */ char *filename; /* null-terminated */ file_ptr origin; /* for element of a thin archive */ }; @@ -140,6 +142,8 @@ bfd_boolean _bfd_add_bfd_to_archive_cache (bfd *, file_ptr, bfd *); bfd_boolean _bfd_generic_mkarchive (bfd *abfd); +char *_bfd_append_relative_path + (bfd *arch, char *elt_name); const bfd_target *bfd_generic_archive_p (bfd *abfd); bfd_boolean bfd_slurp_armap @@ -212,6 +216,12 @@ extern void _bfd_ar_spacepad extern void *_bfd_generic_read_ar_hdr_mag (bfd *, const char *); +extern bfd_boolean _bfd_generic_write_ar_hdr + (bfd *, bfd *); + +extern bfd_boolean _bfd_bsd44_write_ar_hdr + (bfd *, bfd *); + bfd * bfd_generic_openr_next_archived_file (bfd *archive, bfd *last_file); @@ -220,6 +230,8 @@ int bfd_generic_stat_arch_elt #define _bfd_read_ar_hdr(abfd) \ BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd)) +#define _bfd_write_ar_hdr(archive, abfd) \ + BFD_SEND (abfd, _bfd_write_ar_hdr_fn, (archive, abfd)) /* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use BFD_JUMP_TABLE_GENERIC (_bfd_generic). */ @@ -278,6 +290,8 @@ extern bfd_boolean _bfd_nocore_core_file_matches_executable_p ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \ bfd_false) #define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr +#define _bfd_noarchive_write_ar_hdr \ + ((bfd_boolean (*) (bfd *, bfd *)) bfd_false) #define _bfd_noarchive_openr_next_archived_file \ ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr) #define _bfd_noarchive_get_elt_at_index \ @@ -296,6 +310,7 @@ extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table #define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname #define _bfd_archive_bsd_write_armap bsd_write_armap #define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_bsd_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_archive_bsd_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index @@ -315,6 +330,7 @@ extern bfd_boolean _bfd_archive_coff_construct_extended_name_table #define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname #define _bfd_archive_coff_write_armap coff_write_armap #define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_coff_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_archive_coff_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index @@ -322,6 +338,52 @@ extern bfd_boolean _bfd_archive_coff_construct_extended_name_table bfd_generic_stat_arch_elt #define _bfd_archive_coff_update_armap_timestamp bfd_true +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD4.4 style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd44). */ + +#define _bfd_archive_bsd44_slurp_armap bfd_slurp_bsd_armap +#define _bfd_archive_bsd44_slurp_extended_name_table \ + _bfd_slurp_extended_name_table +extern bfd_boolean _bfd_archive_bsd44_construct_extended_name_table + (bfd *, char **, bfd_size_type *, const char **); +#define _bfd_archive_bsd44_truncate_arname bfd_bsd_truncate_arname +#define _bfd_archive_bsd44_write_armap bsd_write_armap +#define _bfd_archive_bsd44_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_bsd44_write_ar_hdr _bfd_bsd44_write_ar_hdr +#define _bfd_archive_bsd44_openr_next_archived_file \ + bfd_generic_openr_next_archived_file +#define _bfd_archive_bsd44_get_elt_at_index _bfd_generic_get_elt_at_index +#define _bfd_archive_bsd44_generic_stat_arch_elt \ + bfd_generic_stat_arch_elt +#define _bfd_archive_bsd44_update_armap_timestamp \ + _bfd_archive_bsd_update_armap_timestamp + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get VMS style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib). Some of them + are irrelevant and never called, so defined as NULL. */ + +extern bfd_boolean _bfd_vms_lib_write_archive_contents (bfd *arch); +#define _bfd_vms_lib_slurp_armap NULL +#define _bfd_vms_lib_slurp_extended_name_table NULL +#define _bfd_vms_lib_construct_extended_name_table NULL +#define _bfd_vms_lib_truncate_arname NULL +#define _bfd_vms_lib_write_armap NULL +#define _bfd_vms_lib_read_ar_hdr NULL +#define _bfd_vms_lib_write_ar_hdr NULL +extern bfd *_bfd_vms_lib_openr_next_archived_file (bfd *, bfd *); +extern bfd *_bfd_vms_lib_get_elt_at_index (bfd *, symindex); +extern int _bfd_vms_lib_generic_stat_arch_elt (bfd *, struct stat *); +#define _bfd_vms_lib_update_armap_timestamp bfd_true + +/* Extra routines for VMS style archives. */ + +extern symindex _bfd_vms_lib_find_symbol (bfd *, const char *); +extern bfd *_bfd_vms_lib_get_imagelib_file (bfd *); +extern const bfd_target *_bfd_vms_lib_alpha_archive_p (bfd *abfd); +extern const bfd_target *_bfd_vms_lib_ia64_archive_p (bfd *abfd); +extern bfd_boolean _bfd_vms_lib_alpha_mkarchive (bfd *abfd); +extern bfd_boolean _bfd_vms_lib_ia64_mkarchive (bfd *abfd); + /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */ @@ -415,6 +477,9 @@ extern bfd_boolean _bfd_generic_set_section_contents ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false) #define _bfd_nolink_bfd_link_just_syms \ ((void (*) (asection *, struct bfd_link_info *)) bfd_void) +#define _bfd_nolink_bfd_copy_link_hash_symbol_type \ + ((void (*) (bfd *, struct bfd_link_hash_entry *, \ + struct bfd_link_hash_entry *)) bfd_void) #define _bfd_nolink_bfd_final_link \ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false) #define _bfd_nolink_bfd_link_split_section \ @@ -529,6 +594,10 @@ extern bfd_boolean _bfd_generic_link_add_one_symbol extern void _bfd_generic_link_just_syms (asection *, struct bfd_link_info *); +/* Generic routine that does nothing. */ +extern void _bfd_generic_copy_link_hash_symbol_type + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + /* Generic link routine. */ extern bfd_boolean _bfd_generic_final_link (bfd *, struct bfd_link_info *); @@ -777,6 +846,7 @@ struct bfd_iovec void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len, int prot, int flags, file_ptr offset); }; +extern const struct bfd_iovec _bfd_memory_iovec; /* Extracted from bfdwin.c. */ struct _bfd_window_internal { struct _bfd_window_internal *next; @@ -888,6 +958,8 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_SPARC_GOTDATA_OP_HIX22", "BFD_RELOC_SPARC_GOTDATA_OP_LOX10", "BFD_RELOC_SPARC_GOTDATA_OP", + "BFD_RELOC_SPARC_JMP_IREL", + "BFD_RELOC_SPARC_IRELATIVE", "BFD_RELOC_SPARC_BASE13", "BFD_RELOC_SPARC_BASE22", "BFD_RELOC_SPARC_10", @@ -1288,6 +1360,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_ARM_RELATIVE", "BFD_RELOC_ARM_GOTOFF", "BFD_RELOC_ARM_GOTPC", + "BFD_RELOC_ARM_GOT_PREL", "BFD_RELOC_ARM_TLS_GD32", "BFD_RELOC_ARM_TLS_LDO32", "BFD_RELOC_ARM_TLS_LDM32", @@ -1440,6 +1513,13 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_SH_TLS_DTPMOD32", "BFD_RELOC_SH_TLS_DTPOFF32", "BFD_RELOC_SH_TLS_TPOFF32", + "BFD_RELOC_SH_GOT20", + "BFD_RELOC_SH_GOTOFF20", + "BFD_RELOC_SH_GOTFUNCDESC", + "BFD_RELOC_SH_GOTFUNCDESC20", + "BFD_RELOC_SH_GOTOFFFUNCDESC", + "BFD_RELOC_SH_GOTOFFFUNCDESC20", + "BFD_RELOC_SH_FUNCDESC", "BFD_RELOC_ARC_B22_PCREL", "BFD_RELOC_ARC_B26", "BFD_RELOC_BFIN_16_IMM", @@ -1564,6 +1644,32 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_TIC54X_23", "BFD_RELOC_TIC54X_16_OF_23", "BFD_RELOC_TIC54X_MS7_OF_23", + "BFD_RELOC_C6000_PCR_S21", + "BFD_RELOC_C6000_PCR_S12", + "BFD_RELOC_C6000_PCR_S10", + "BFD_RELOC_C6000_PCR_S7", + "BFD_RELOC_C6000_ABS_S16", + "BFD_RELOC_C6000_ABS_L16", + "BFD_RELOC_C6000_ABS_H16", + "BFD_RELOC_C6000_SBR_U15_B", + "BFD_RELOC_C6000_SBR_U15_H", + "BFD_RELOC_C6000_SBR_U15_W", + "BFD_RELOC_C6000_SBR_S16", + "BFD_RELOC_C6000_SBR_L16_B", + "BFD_RELOC_C6000_SBR_L16_H", + "BFD_RELOC_C6000_SBR_L16_W", + "BFD_RELOC_C6000_SBR_H16_B", + "BFD_RELOC_C6000_SBR_H16_H", + "BFD_RELOC_C6000_SBR_H16_W", + "BFD_RELOC_C6000_SBR_GOT_U15_W", + "BFD_RELOC_C6000_SBR_GOT_L16_W", + "BFD_RELOC_C6000_SBR_GOT_H16_W", + "BFD_RELOC_C6000_DSBT_INDEX", + "BFD_RELOC_C6000_PREL31", + "BFD_RELOC_C6000_COPY", + "BFD_RELOC_C6000_ALIGN", + "BFD_RELOC_C6000_FPHEAD", + "BFD_RELOC_C6000_NOCMP", "BFD_RELOC_FR30_48", "BFD_RELOC_FR30_20", "BFD_RELOC_FR30_6_IN_4", @@ -1646,6 +1752,30 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_AVR_LDI", "BFD_RELOC_AVR_6", "BFD_RELOC_AVR_6_ADIW", + "BFD_RELOC_RX_NEG8", + "BFD_RELOC_RX_NEG16", + "BFD_RELOC_RX_NEG24", + "BFD_RELOC_RX_NEG32", + "BFD_RELOC_RX_16_OP", + "BFD_RELOC_RX_24_OP", + "BFD_RELOC_RX_32_OP", + "BFD_RELOC_RX_8U", + "BFD_RELOC_RX_16U", + "BFD_RELOC_RX_24U", + "BFD_RELOC_RX_DIR3U_PCREL", + "BFD_RELOC_RX_DIFF", + "BFD_RELOC_RX_GPRELB", + "BFD_RELOC_RX_GPRELW", + "BFD_RELOC_RX_GPRELL", + "BFD_RELOC_RX_SYM", + "BFD_RELOC_RX_OP_SUBTRACT", + "BFD_RELOC_RX_ABS8", + "BFD_RELOC_RX_ABS16", + "BFD_RELOC_RX_ABS32", + "BFD_RELOC_RX_ABS16U", + "BFD_RELOC_RX_ABS16UW", + "BFD_RELOC_RX_ABS16UL", + "BFD_RELOC_RX_RELAX", "BFD_RELOC_390_12", "BFD_RELOC_390_GOT12", "BFD_RELOC_390_PLT32", @@ -2072,6 +2202,15 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_LM32_RELATIVE", "BFD_RELOC_MACH_O_SECTDIFF", "BFD_RELOC_MACH_O_PAIR", + "BFD_RELOC_MACH_O_X86_64_BRANCH32", + "BFD_RELOC_MACH_O_X86_64_BRANCH8", + "BFD_RELOC_MACH_O_X86_64_GOT", + "BFD_RELOC_MACH_O_X86_64_GOT_LOAD", + "BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32", + "BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64", + "BFD_RELOC_MACH_O_X86_64_PCREL32_1", + "BFD_RELOC_MACH_O_X86_64_PCREL32_2", + "BFD_RELOC_MACH_O_X86_64_PCREL32_4", "BFD_RELOC_MICROBLAZE_32_LO", "BFD_RELOC_MICROBLAZE_32_LO_PCREL", "BFD_RELOC_MICROBLAZE_32_ROSDA", diff --git a/contrib/gdb-7/bfd/libcoff.h b/contrib/gdb-7/bfd/libcoff.h index db5e2904f6..966f71ee10 100644 --- a/contrib/gdb-7/bfd/libcoff.h +++ b/contrib/gdb-7/bfd/libcoff.h @@ -122,6 +122,7 @@ typedef struct pe_tdata struct internal_extra_pe_aouthdr pe_opthdr; int dll; int has_reloc_section; + int dont_strip_reloc; bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *); flagword real_flags; } pe_data_type; diff --git a/contrib/gdb-7/bfd/libecoff.h b/contrib/gdb-7/bfd/libecoff.h index 0e7ea855c5..8afdccb0ce 100644 --- a/contrib/gdb-7/bfd/libecoff.h +++ b/contrib/gdb-7/bfd/libecoff.h @@ -1,6 +1,7 @@ /* BFD ECOFF object file private structure. Copyright 1993, 1994, 1995, 1996, 1999, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -270,6 +271,7 @@ extern bfd_boolean _bfd_ecoff_slurp_armap (bfd *); extern bfd_boolean _bfd_ecoff_write_armap (bfd *, unsigned int, struct orl *, unsigned int, int); #define _bfd_ecoff_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_ecoff_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_ecoff_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_ecoff_get_elt_at_index _bfd_generic_get_elt_at_index @@ -315,6 +317,8 @@ extern struct bfd_link_hash_table *_bfd_ecoff_bfd_link_hash_table_create extern bfd_boolean _bfd_ecoff_bfd_link_add_symbols (bfd *, struct bfd_link_info *); #define _bfd_ecoff_bfd_link_just_syms _bfd_generic_link_just_syms +#define _bfd_ecoff_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type extern bfd_boolean _bfd_ecoff_bfd_final_link (bfd *, struct bfd_link_info *); diff --git a/contrib/gdb-7/bfd/linker.c b/contrib/gdb-7/bfd/linker.c index 1163a5591c..76bc70af09 100644 --- a/contrib/gdb-7/bfd/linker.c +++ b/contrib/gdb-7/bfd/linker.c @@ -797,6 +797,17 @@ _bfd_generic_link_just_syms (asection *sec, sec->output_offset = sec->vma; } +/* Copy the type of a symbol assiciated with a linker hast table entry. + Override this so that symbols created in linker scripts get their + type from the RHS of the assignment. + The default implementation does nothing. */ +void +_bfd_generic_copy_link_hash_symbol_type (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry * hdest ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry * hsrc ATTRIBUTE_UNUSED) +{ +} + /* Add symbols from an object file to the global hash table. */ static bfd_boolean diff --git a/contrib/gdb-7/bfd/merge.c b/contrib/gdb-7/bfd/merge.c index 80f80b83a0..7aa088ff94 100644 --- a/contrib/gdb-7/bfd/merge.c +++ b/contrib/gdb-7/bfd/merge.c @@ -136,12 +136,12 @@ static struct sec_merge_hash_entry * sec_merge_hash_lookup (struct sec_merge_hash *table, const char *string, unsigned int alignment, bfd_boolean create) { - register const unsigned char *s; - register unsigned long hash; - register unsigned int c; + const unsigned char *s; + unsigned long hash; + unsigned int c; struct sec_merge_hash_entry *hashp; unsigned int len, i; - unsigned int index; + unsigned int _index; hash = 0; len = 0; @@ -192,8 +192,8 @@ sec_merge_hash_lookup (struct sec_merge_hash *table, const char *string, len = table->entsize; } - index = hash % table->table.size; - for (hashp = (struct sec_merge_hash_entry *) table->table.table[index]; + _index = hash % table->table.size; + for (hashp = (struct sec_merge_hash_entry *) table->table.table[_index]; hashp != NULL; hashp = (struct sec_merge_hash_entry *) hashp->root.next) { @@ -263,7 +263,7 @@ static struct sec_merge_hash_entry * sec_merge_add (struct sec_merge_hash *tab, const char *str, unsigned int alignment, struct sec_merge_sec_info *secinfo) { - register struct sec_merge_hash_entry *entry; + struct sec_merge_hash_entry *entry; entry = sec_merge_hash_lookup (tab, str, alignment, TRUE); if (entry == NULL) diff --git a/contrib/gdb-7/bfd/opncls.c b/contrib/gdb-7/bfd/opncls.c index a0374e31dc..79c3274bcc 100644 --- a/contrib/gdb-7/bfd/opncls.c +++ b/contrib/gdb-7/bfd/opncls.c @@ -376,47 +376,47 @@ FUNCTION SYNOPSIS bfd *bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, - void *open_closure), + void *(*open_func) (struct bfd *nbfd, + void *open_closure), void *open_closure, - file_ptr (*pread) (struct bfd *nbfd, - void *stream, - void *buf, - file_ptr nbytes, - file_ptr offset), - int (*close) (struct bfd *nbfd, - void *stream), - int (*stat) (struct bfd *abfd, - void *stream, - struct stat *sb)); + file_ptr (*pread_func) (struct bfd *nbfd, + void *stream, + void *buf, + file_ptr nbytes, + file_ptr offset), + int (*close_func) (struct bfd *nbfd, + void *stream), + int (*stat_func) (struct bfd *abfd, + void *stream, + struct stat *sb)); DESCRIPTION Create and return a BFD backed by a read-only @var{stream}. - The @var{stream} is created using @var{open}, accessed using - @var{pread} and destroyed using @var{close}. + The @var{stream} is created using @var{open_func}, accessed using + @var{pread_func} and destroyed using @var{close_func}. Calls <>, so @var{target} is interpreted as by that function. - Calls @var{open} (which can call <> and + Calls @var{open_func} (which can call <> and <>) to obtain the read-only stream backing - the BFD. @var{open} either succeeds returning the + the BFD. @var{open_func} either succeeds returning the non-<> @var{stream}, or fails returning <> (setting <>). - Calls @var{pread} to request @var{nbytes} of data from + Calls @var{pread_func} to request @var{nbytes} of data from @var{stream} starting at @var{offset} (e.g., via a call to - <>). @var{pread} either succeeds returning the + <>). @var{pread_func} either succeeds returning the number of bytes read (which can be less than @var{nbytes} when end-of-file), or fails returning -1 (setting <>). - Calls @var{close} when the BFD is later closed using - <>. @var{close} either succeeds returning 0, or + Calls @var{close_func} when the BFD is later closed using + <>. @var{close_func} either succeeds returning 0, or fails returning -1 (setting <>). - Calls @var{stat} to fill in a stat structure for bfd_stat, - bfd_get_size, and bfd_get_mtime calls. @var{stat} returns 0 + Calls @var{stat_func} to fill in a stat structure for bfd_stat, + bfd_get_size, and bfd_get_mtime calls. @var{stat_func} returns 0 on success, or returns -1 on failure (setting <>). If <> returns <> then an error has @@ -523,19 +523,12 @@ static const struct bfd_iovec opncls_iovec = { bfd * bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, - void *open_closure), + void *(*open_p) (struct bfd *, void *), void *open_closure, - file_ptr (*pread) (struct bfd *abfd, - void *stream, - void *buf, - file_ptr nbytes, - file_ptr offset), - int (*close) (struct bfd *nbfd, - void *stream), - int (*stat) (struct bfd *abfd, - void *stream, - struct stat *sb)) + file_ptr (*pread_p) (struct bfd *, void *, void *, + file_ptr, file_ptr), + int (*close_p) (struct bfd *, void *), + int (*stat_p) (struct bfd *, void *, struct stat *)) { bfd *nbfd; const bfd_target *target_vec; @@ -556,8 +549,8 @@ bfd_openr_iovec (const char *filename, const char *target, nbfd->filename = filename; nbfd->direction = read_direction; - /* `open (...)' would get expanded by an the open(2) syscall macro. */ - stream = (*open) (nbfd, open_closure); + /* `open_p (...)' would get expanded by an the open(2) syscall macro. */ + stream = (*open_p) (nbfd, open_closure); if (stream == NULL) { _bfd_delete_bfd (nbfd); @@ -566,9 +559,9 @@ bfd_openr_iovec (const char *filename, const char *target, vec = (struct opncls *) bfd_zalloc (nbfd, sizeof (struct opncls)); vec->stream = stream; - vec->pread = pread; - vec->close = close; - vec->stat = stat; + vec->pread = pread_p; + vec->close = close_p; + vec->stat = stat_p; nbfd->iovec = &opncls_iovec; nbfd->iostream = vec; @@ -635,7 +628,7 @@ _maybe_make_executable (bfd * abfd) /* If the file was open for writing and is now executable, make it so. */ if (abfd->direction == write_direction - && abfd->flags & EXEC_P) + && (abfd->flags & (EXEC_P | DYNAMIC)) != 0) { struct stat buf; @@ -703,18 +696,7 @@ bfd_close (bfd *abfd) if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) return FALSE; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - /* FIXME: cagney/2004-02-15: Need to implement a BFD_IN_MEMORY io - vector. - Until that's done, at least don't leak memory. */ - struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; - free (bim->buffer); - free (bim); - ret = TRUE; - } - else - ret = abfd->iovec->bclose (abfd); + ret = abfd->iovec->bclose (abfd); if (ret) _maybe_make_executable (abfd); @@ -828,6 +810,8 @@ bfd_make_writable (bfd *abfd) bim->buffer = 0; abfd->flags |= BFD_IN_MEMORY; + abfd->iovec = &_bfd_memory_iovec; + abfd->origin = 0; abfd->direction = write_direction; abfd->where = 0; @@ -866,7 +850,6 @@ bfd_make_readable (bfd *abfd) if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) return FALSE; - abfd->arch_info = &bfd_default_arch_struct; abfd->where = 0; @@ -1232,7 +1215,7 @@ DESCRIPTION static char * find_separate_debug_file (bfd *abfd, const char *debug_file_directory) { - char *basename; + char *base; char *dir; char *debugfile; char *canon_dir; @@ -1251,13 +1234,13 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory) return NULL; } - basename = get_debug_link_info (abfd, & crc32); - if (basename == NULL) + base = get_debug_link_info (abfd, & crc32); + if (base == NULL) return NULL; - if (basename[0] == '\0') + if (base[0] == '\0') { - free (basename); + free (base); bfd_set_error (bfd_error_no_debug_section); return NULL; } @@ -1269,7 +1252,7 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory) dir = (char *) bfd_malloc (dirlen + 1); if (dir == NULL) { - free (basename); + free (base); return NULL; } memcpy (dir, abfd->filename, dirlen); @@ -1287,11 +1270,11 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory) bfd_malloc (strlen (debug_file_directory) + 1 + (canon_dirlen > dirlen ? canon_dirlen : dirlen) + strlen (".debug/") - + strlen (basename) + + strlen (base) + 1); if (debugfile == NULL) { - free (basename); + free (base); free (dir); free (canon_dir); return NULL; @@ -1299,11 +1282,11 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory) /* First try in the same directory as the original file: */ strcpy (debugfile, dir); - strcat (debugfile, basename); + strcat (debugfile, base); if (separate_debug_file_exists (debugfile, crc32)) { - free (basename); + free (base); free (dir); free (canon_dir); return debugfile; @@ -1312,11 +1295,11 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory) /* Then try in a subdirectory called .debug. */ strcpy (debugfile, dir); strcat (debugfile, ".debug/"); - strcat (debugfile, basename); + strcat (debugfile, base); if (separate_debug_file_exists (debugfile, crc32)) { - free (basename); + free (base); free (dir); free (canon_dir); return debugfile; @@ -1330,18 +1313,18 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory) && canon_dir[0] != '/') strcat (debugfile, "/"); strcat (debugfile, canon_dir); - strcat (debugfile, basename); + strcat (debugfile, base); if (separate_debug_file_exists (debugfile, crc32)) { - free (basename); + free (base); free (dir); free (canon_dir); return debugfile; } free (debugfile); - free (basename); + free (base); free (dir); free (canon_dir); return NULL; diff --git a/contrib/gdb-7/bfd/reloc.c b/contrib/gdb-7/bfd/reloc.c index 3be29fea33..7d16869263 100644 --- a/contrib/gdb-7/bfd/reloc.c +++ b/contrib/gdb-7/bfd/reloc.c @@ -1,6 +1,6 @@ /* BFD support for handling relocation entries. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -305,10 +305,7 @@ CODE_FRAGMENT . when doing overflow checking. *} . unsigned int bitsize; . -. {* Notes that the relocation is relative to the location in the -. data section of the addend. The relocation function will -. subtract from the relocation value the address of the location -. being relocated. *} +. {* The relocation is relative to the field being relocated. *} . bfd_boolean pc_relative; . . {* The bit position of the reloc value in the destination. @@ -504,7 +501,7 @@ bfd_check_overflow (enum complain_overflow how, overflow check. */ fieldmask = N_ONES (bitsize); signmask = ~fieldmask; - addrmask = N_ONES (addrsize) | fieldmask; + addrmask = N_ONES (addrsize) | (fieldmask << rightshift); a = (relocation & addrmask) >> rightshift;; switch (how) @@ -1434,9 +1431,11 @@ _bfd_relocate_contents (reloc_howto_type *howto, See also bfd_check_overflow. */ fieldmask = N_ONES (howto->bitsize); signmask = ~fieldmask; - addrmask = N_ONES (bfd_arch_bits_per_address (input_bfd)) | fieldmask; + addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd)) + | (fieldmask << rightshift)); a = (relocation & addrmask) >> rightshift; b = (x & howto->src_mask & addrmask) >> bitpos; + addrmask >>= rightshift; switch (howto->complain_on_overflow) { @@ -1454,7 +1453,7 @@ _bfd_relocate_contents (reloc_howto_type *howto, field. Note that when bfd_vma is 32 bits, a 32-bit reloc can't overflow, which is exactly what we want. */ ss = a & signmask; - if (ss != 0 && ss != ((addrmask >> rightshift) & signmask)) + if (ss != 0 && ss != (addrmask & signmask)) flag = bfd_reloc_overflow; /* We only need this next bit of code if the sign bit of B @@ -1870,6 +1869,10 @@ ENUMX BFD_RELOC_SPARC_GOTDATA_OP_LOX10 ENUMX BFD_RELOC_SPARC_GOTDATA_OP +ENUMX + BFD_RELOC_SPARC_JMP_IREL +ENUMX + BFD_RELOC_SPARC_IRELATIVE ENUMDOC SPARC ELF relocations. There is probably some overlap with other relocation types already defined. @@ -2930,6 +2933,8 @@ ENUMX BFD_RELOC_ARM_GOTOFF ENUMX BFD_RELOC_ARM_GOTPC +ENUMX + BFD_RELOC_ARM_GOT_PREL ENUMDOC Relocations for setting up GOTs and PLTs for shared libraries. @@ -3250,6 +3255,20 @@ ENUMX BFD_RELOC_SH_TLS_DTPOFF32 ENUMX BFD_RELOC_SH_TLS_TPOFF32 +ENUMX + BFD_RELOC_SH_GOT20 +ENUMX + BFD_RELOC_SH_GOTOFF20 +ENUMX + BFD_RELOC_SH_GOTFUNCDESC +ENUMX + BFD_RELOC_SH_GOTFUNCDESC20 +ENUMX + BFD_RELOC_SH_GOTOFFFUNCDESC +ENUMX + BFD_RELOC_SH_GOTOFFFUNCDESC20 +ENUMX + BFD_RELOC_SH_FUNCDESC ENUMDOC Renesas / SuperH SH relocs. Not all of these appear in object files. @@ -3754,6 +3773,61 @@ ENUMDOC significant 7 bits of a 23-bit extended address are placed into the opcode. +ENUM + BFD_RELOC_C6000_PCR_S21 +ENUMX + BFD_RELOC_C6000_PCR_S12 +ENUMX + BFD_RELOC_C6000_PCR_S10 +ENUMX + BFD_RELOC_C6000_PCR_S7 +ENUMX + BFD_RELOC_C6000_ABS_S16 +ENUMX + BFD_RELOC_C6000_ABS_L16 +ENUMX + BFD_RELOC_C6000_ABS_H16 +ENUMX + BFD_RELOC_C6000_SBR_U15_B +ENUMX + BFD_RELOC_C6000_SBR_U15_H +ENUMX + BFD_RELOC_C6000_SBR_U15_W +ENUMX + BFD_RELOC_C6000_SBR_S16 +ENUMX + BFD_RELOC_C6000_SBR_L16_B +ENUMX + BFD_RELOC_C6000_SBR_L16_H +ENUMX + BFD_RELOC_C6000_SBR_L16_W +ENUMX + BFD_RELOC_C6000_SBR_H16_B +ENUMX + BFD_RELOC_C6000_SBR_H16_H +ENUMX + BFD_RELOC_C6000_SBR_H16_W +ENUMX + BFD_RELOC_C6000_SBR_GOT_U15_W +ENUMX + BFD_RELOC_C6000_SBR_GOT_L16_W +ENUMX + BFD_RELOC_C6000_SBR_GOT_H16_W +ENUMX + BFD_RELOC_C6000_DSBT_INDEX +ENUMX + BFD_RELOC_C6000_PREL31 +ENUMX + BFD_RELOC_C6000_COPY +ENUMX + BFD_RELOC_C6000_ALIGN +ENUMX + BFD_RELOC_C6000_FPHEAD +ENUMX + BFD_RELOC_C6000_NOCMP +ENUMDOC + TMS320C6000 relocations. + ENUM BFD_RELOC_FR30_48 ENUMDOC @@ -4051,6 +4125,57 @@ ENUMDOC This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw instructions +ENUM + BFD_RELOC_RX_NEG8 +ENUMX + BFD_RELOC_RX_NEG16 +ENUMX + BFD_RELOC_RX_NEG24 +ENUMX + BFD_RELOC_RX_NEG32 +ENUMX + BFD_RELOC_RX_16_OP +ENUMX + BFD_RELOC_RX_24_OP +ENUMX + BFD_RELOC_RX_32_OP +ENUMX + BFD_RELOC_RX_8U +ENUMX + BFD_RELOC_RX_16U +ENUMX + BFD_RELOC_RX_24U +ENUMX + BFD_RELOC_RX_DIR3U_PCREL +ENUMX + BFD_RELOC_RX_DIFF +ENUMX + BFD_RELOC_RX_GPRELB +ENUMX + BFD_RELOC_RX_GPRELW +ENUMX + BFD_RELOC_RX_GPRELL +ENUMX + BFD_RELOC_RX_SYM +ENUMX + BFD_RELOC_RX_OP_SUBTRACT +ENUMX + BFD_RELOC_RX_ABS8 +ENUMX + BFD_RELOC_RX_ABS16 +ENUMX + BFD_RELOC_RX_ABS32 +ENUMX + BFD_RELOC_RX_ABS16U +ENUMX + BFD_RELOC_RX_ABS16UW +ENUMX + BFD_RELOC_RX_ABS16UL +ENUMX + BFD_RELOC_RX_RELAX +ENUMDOC + Renesas RX Relocations. + ENUM BFD_RELOC_390_12 ENUMDOC @@ -5184,14 +5309,51 @@ ENUMDOC Lattice Mico32 relocations. ENUM - BFD_RELOC_MACH_O_SECTDIFF + BFD_RELOC_MACH_O_SECTDIFF +ENUMDOC + Difference between two section addreses. Must be followed by a + BFD_RELOC_MACH_O_PAIR. +ENUM + BFD_RELOC_MACH_O_PAIR +ENUMDOC + Pair of relocation. Contains the first symbol. + +ENUM + BFD_RELOC_MACH_O_X86_64_BRANCH32 +ENUMX + BFD_RELOC_MACH_O_X86_64_BRANCH8 +ENUMDOC + PCREL relocations. They are marked as branch to create PLT entry if + required. +ENUM + BFD_RELOC_MACH_O_X86_64_GOT +ENUMDOC + Used when referencing a GOT entry. +ENUM + BFD_RELOC_MACH_O_X86_64_GOT_LOAD +ENUMDOC + Used when loading a GOT entry with movq. It is specially marked so that + the linker could optimize the movq to a leaq if possible. +ENUM + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 +ENUMDOC + Symbol will be substracted. Must be followed by a BFD_RELOC_64. +ENUM + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 +ENUMDOC + Symbol will be substracted. Must be followed by a BFD_RELOC_64. +ENUM + BFD_RELOC_MACH_O_X86_64_PCREL32_1 +ENUMDOC + Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. +ENUM + BFD_RELOC_MACH_O_X86_64_PCREL32_2 ENUMDOC - Difference between two section addreses. Must be followed by a - BFD_RELOC_MACH_O_PAIR. + Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. ENUM - BFD_RELOC_MACH_O_PAIR + BFD_RELOC_MACH_O_X86_64_PCREL32_4 ENUMDOC - Mach-O generic relocations. + Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. ENUM BFD_RELOC_MICROBLAZE_32_LO diff --git a/contrib/gdb-7/bfd/section.c b/contrib/gdb-7/bfd/section.c index d92dc2d4d7..6e13fdb10e 100644 --- a/contrib/gdb-7/bfd/section.c +++ b/contrib/gdb-7/bfd/section.c @@ -1,6 +1,6 @@ /* Object file "section" support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -383,20 +383,12 @@ CODE_FRAGMENT . {* Bits used by various backends. The generic code doesn't touch . these fields. *} . -. {* Nonzero if this section has TLS related relocations. *} -. unsigned int has_tls_reloc:1; -. -. {* Nonzero if this section has a call to __tls_get_addr. *} -. unsigned int has_tls_get_addr_call:1; -. -. {* Nonzero if this section has a gp reloc. *} -. unsigned int has_gp_reloc:1; -. -. {* Nonzero if this section needs the relax finalize pass. *} -. unsigned int need_finalize_relax:1; -. -. {* Whether relocations have been processed. *} -. unsigned int reloc_done : 1; +. unsigned int sec_flg0:1; +. unsigned int sec_flg1:1; +. unsigned int sec_flg2:1; +. unsigned int sec_flg3:1; +. unsigned int sec_flg4:1; +. unsigned int sec_flg5:1; . . {* End of internal packed boolean fields. *} . @@ -661,17 +653,17 @@ CODE_FRAGMENT . {* name, id, index, next, prev, flags, user_set_vma, *} \ . { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ . \ -. {* linker_mark, linker_has_input, gc_mark, *} \ -. 0, 0, 1, \ +. {* linker_mark, linker_has_input, gc_mark, segment_mark, *} \ +. 0, 0, 1, 0, \ . \ -. {* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, *} \ -. 0, 0, 0, 0, \ +. {* sec_info_type, use_rela_p, *} \ +. 0, 0, \ . \ -. {* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, *} \ -. 0, 0, 0, \ +. {* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, *} \ +. 0, 0, 0, 0, 0, 0, \ . \ -. {* reloc_done, vma, lma, size, rawsize, relax, relax_count, *} \ -. 0, 0, 0, 0, 0, 0, 0, \ +. {* vma, lma, size, rawsize, relax, relax_count, *} \ +. 0, 0, 0, 0, 0, 0, \ . \ . {* output_offset, output_section, alignment_power, *} \ . 0, (struct bfd_section *) &SEC, 0, \ diff --git a/contrib/gdb-7/bfd/srec.c b/contrib/gdb-7/bfd/srec.c index d66fa6d99d..1251a7e93c 100644 --- a/contrib/gdb-7/bfd/srec.c +++ b/contrib/gdb-7/bfd/srec.c @@ -1261,6 +1261,8 @@ srec_print_symbol (bfd *abfd, #define srec_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols #define srec_bfd_link_just_syms _bfd_generic_link_just_syms +#define srec_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define srec_bfd_final_link _bfd_generic_final_link #define srec_bfd_link_split_section _bfd_generic_link_split_section diff --git a/contrib/gdb-7/bfd/targets.c b/contrib/gdb-7/bfd/targets.c index a33790bcbe..bb20189bfe 100644 --- a/contrib/gdb-7/bfd/targets.c +++ b/contrib/gdb-7/bfd/targets.c @@ -1,6 +1,6 @@ /* Generic target-file-type support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -328,6 +328,7 @@ BFD_JUMP_TABLE macros. . NAME##_truncate_arname, \ . NAME##_write_armap, \ . NAME##_read_ar_hdr, \ +. NAME##_write_ar_hdr, \ . NAME##_openr_next_archived_file, \ . NAME##_get_elt_at_index, \ . NAME##_generic_stat_arch_elt, \ @@ -341,6 +342,7 @@ BFD_JUMP_TABLE macros. . bfd_boolean (*write_armap) . (bfd *, unsigned int, struct orl *, unsigned int, int); . void * (*_bfd_read_ar_hdr_fn) (bfd *); +. bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); . bfd * (*openr_next_archived_file) (bfd *, bfd *); .#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) . bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); @@ -436,6 +438,7 @@ BFD_JUMP_TABLE macros. . NAME##_bfd_link_hash_table_free, \ . NAME##_bfd_link_add_symbols, \ . NAME##_bfd_link_just_syms, \ +. NAME##_bfd_copy_link_hash_symbol_type, \ . NAME##_bfd_final_link, \ . NAME##_bfd_link_split_section, \ . NAME##_bfd_gc_sections, \ @@ -467,6 +470,12 @@ BFD_JUMP_TABLE macros. . {* Indicate that we are only retrieving symbol values from this section. *} . void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); . +. {* Copy the symbol type of a linker hash table entry. *} +.#define bfd_copy_link_hash_symbol_type(b, t, f) \ +. BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) +. void (*_bfd_copy_link_hash_symbol_type) +. (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); +. . {* Do a link based on the link_order structures attached to each . section of the BFD. *} . bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); @@ -594,6 +603,7 @@ extern const bfd_target bfd_elf32_hppa_nbsd_vec; extern const bfd_target bfd_elf32_hppa_vec; extern const bfd_target bfd_elf32_i370_vec; extern const bfd_target bfd_elf32_i386_freebsd_vec; +extern const bfd_target bfd_elf32_i386_sol2_vec; extern const bfd_target bfd_elf32_i386_vxworks_vec; extern const bfd_target bfd_elf32_i386_vec; extern const bfd_target bfd_elf32_i860_little_vec; @@ -641,6 +651,8 @@ extern const bfd_target bfd_elf32_pjl_vec; extern const bfd_target bfd_elf32_powerpc_vec; extern const bfd_target bfd_elf32_powerpcle_vec; extern const bfd_target bfd_elf32_powerpc_vxworks_vec; +extern const bfd_target bfd_elf32_rx_le_vec; +extern const bfd_target bfd_elf32_rx_be_vec; extern const bfd_target bfd_elf32_s390_vec; extern const bfd_target bfd_elf32_bigscore_vec; extern const bfd_target bfd_elf32_littlescore_vec; @@ -651,7 +663,9 @@ extern const bfd_target bfd_elf32_sh64blin_vec; extern const bfd_target bfd_elf32_sh64lnbsd_vec; extern const bfd_target bfd_elf32_sh64nbsd_vec; extern const bfd_target bfd_elf32_sh_vec; +extern const bfd_target bfd_elf32_shbfd_vec; extern const bfd_target bfd_elf32_shblin_vec; +extern const bfd_target bfd_elf32_shfd_vec; extern const bfd_target bfd_elf32_shl_vec; extern const bfd_target bfd_elf32_shl_symbian_vec; extern const bfd_target bfd_elf32_shlin_vec; @@ -662,6 +676,8 @@ extern const bfd_target bfd_elf32_shvxworks_vec; extern const bfd_target bfd_elf32_sparc_vec; extern const bfd_target bfd_elf32_sparc_vxworks_vec; extern const bfd_target bfd_elf32_spu_vec; +extern const bfd_target bfd_elf32_tic6x_be_vec; +extern const bfd_target bfd_elf32_tic6x_le_vec; extern const bfd_target bfd_elf32_tradbigmips_vec; extern const bfd_target bfd_elf32_tradlittlemips_vec; extern const bfd_target bfd_elf32_us_cris_vec; @@ -698,6 +714,7 @@ extern const bfd_target bfd_elf64_sparc_freebsd_vec; extern const bfd_target bfd_elf64_tradbigmips_vec; extern const bfd_target bfd_elf64_tradlittlemips_vec; extern const bfd_target bfd_elf64_x86_64_freebsd_vec; +extern const bfd_target bfd_elf64_x86_64_sol2_vec; extern const bfd_target bfd_elf64_x86_64_vec; extern const bfd_target bfd_elf64_l1om_freebsd_vec; extern const bfd_target bfd_elf64_l1om_vec; @@ -751,7 +768,7 @@ extern const bfd_target mach_o_be_vec; extern const bfd_target mach_o_le_vec; extern const bfd_target mach_o_fat_vec; extern const bfd_target mach_o_i386_vec; -extern const bfd_target maxqcoff_vec; +extern const bfd_target mach_o_x86_64_vec; extern const bfd_target mcore_pe_big_vec; extern const bfd_target mcore_pe_little_vec; extern const bfd_target mcore_pei_big_vec; @@ -811,7 +828,7 @@ extern const bfd_target vaxnetbsd_vec; extern const bfd_target vax1knetbsd_vec; extern const bfd_target versados_vec; extern const bfd_target vms_alpha_vec; -extern const bfd_target vms_vax_vec; +extern const bfd_target vms_lib_txt_vec; extern const bfd_target w65_vec; extern const bfd_target we32kcoff_vec; extern const bfd_target x86_64pe_vec; @@ -927,6 +944,7 @@ static const bfd_target * const _bfd_target_vector[] = &bfd_elf32_hppa_vec, &bfd_elf32_i370_vec, &bfd_elf32_i386_freebsd_vec, + &bfd_elf32_i386_sol2_vec, &bfd_elf32_i386_vxworks_vec, &bfd_elf32_i386_vec, &bfd_elf32_i860_little_vec, @@ -978,13 +996,17 @@ static const bfd_target * const _bfd_target_vector[] = &bfd_elf32_powerpc_vec, &bfd_elf32_powerpc_vxworks_vec, &bfd_elf32_powerpcle_vec, + &bfd_elf32_rx_be_vec, + &bfd_elf32_rx_le_vec, &bfd_elf32_s390_vec, #ifdef BFD64 &bfd_elf32_bigscore_vec, &bfd_elf32_littlescore_vec, #endif &bfd_elf32_sh_vec, + &bfd_elf32_shbfd_vec, &bfd_elf32_shblin_vec, + &bfd_elf32_shfd_vec, &bfd_elf32_shl_vec, &bfd_elf32_shl_symbian_vec, &bfd_elf32_shlin_vec, @@ -1003,6 +1025,8 @@ static const bfd_target * const _bfd_target_vector[] = &bfd_elf32_sparc_vec, &bfd_elf32_sparc_vxworks_vec, &bfd_elf32_spu_vec, + &bfd_elf32_tic6x_be_vec, + &bfd_elf32_tic6x_le_vec, &bfd_elf32_tradbigmips_vec, &bfd_elf32_tradlittlemips_vec, &bfd_elf32_us_cris_vec, @@ -1040,6 +1064,7 @@ static const bfd_target * const _bfd_target_vector[] = &bfd_elf64_tradbigmips_vec, &bfd_elf64_tradlittlemips_vec, &bfd_elf64_x86_64_freebsd_vec, + &bfd_elf64_x86_64_sol2_vec, &bfd_elf64_x86_64_vec, &bfd_elf64_l1om_freebsd_vec, &bfd_elf64_l1om_vec, @@ -1123,7 +1148,9 @@ static const bfd_target * const _bfd_target_vector[] = &mach_o_le_vec, &mach_o_fat_vec, &mach_o_i386_vec, - &maxqcoff_vec, +#ifdef BFD64 + &mach_o_x86_64_vec, +#endif &mcore_pe_big_vec, &mcore_pe_little_vec, &mcore_pei_big_vec, @@ -1175,9 +1202,7 @@ static const bfd_target * const _bfd_target_vector[] = &shlcoff_vec, &shlpe_vec, &shlpei_vec, -#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) &som_vec, -#endif &sparccoff_vec, &sparcle_aout_vec, &sparclinux_vec, @@ -1202,7 +1227,7 @@ static const bfd_target * const _bfd_target_vector[] = #ifdef BFD64 &vms_alpha_vec, #endif - &vms_vax_vec, + &vms_lib_txt_vec, &w65_vec, &we32kcoff_vec, &z80coff_vec, @@ -1424,6 +1449,122 @@ bfd_find_target (const char *target_name, bfd *abfd) return target; } +/* Helper function for bfd_get_target_info to determine the target's + architecture. This method handles bfd internal target names as + tuples and triplets. */ +static bfd_boolean +_bfd_find_arch_match (const char *tname, const char **arch, + const char **def_target_arch) +{ + if (!arch) + return FALSE; + + while (*arch != NULL) + { + const char *in_a = strstr (*arch, tname); + char end_ch = (in_a ? in_a[strlen (tname)] : 0); + + if (in_a && (in_a == *arch || in_a[-1] == ':') + && end_ch == 0) + { + *def_target_arch = *arch; + return TRUE; + } + arch++; + } + return FALSE; +} + +/* +FUNCTION + bfd_get_target_info +SYNOPSIS + const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); +DESCRIPTION + Return a pointer to the transfer vector for the object target + named @var{target_name}. If @var{target_name} is <>, + choose the one in the environment variable <>; if + that is null or not defined, then choose the first entry in the + target list. Passing in the string "default" or setting the + environment variable to "default" will cause the first entry in + the target list to be returned, and "target_defaulted" will be + set in the BFD if @var{abfd} isn't <>. This causes + <> to loop over all the targets to find the + one that matches the file being read. + If @var{is_bigendian} is not <>, then set this value to target's + endian mode. True for big-endian, FALSE for little-endian or for + invalid target. + If @var{underscoring} is not <>, then set this value to target's + underscoring mode. Zero for none-underscoring, -1 for invalid target, + else the value of target vector's symbol underscoring. + If @var{def_target_arch} is not <>, then set it to the architecture + string specified by the target_name. +*/ +const bfd_target * +bfd_get_target_info (const char *target_name, bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, const char **def_target_arch) +{ + const bfd_target *target_vec; + + if (is_bigendian) + *is_bigendian = FALSE; + if (underscoring) + *underscoring = -1; + if (def_target_arch) + *def_target_arch = NULL; + target_vec = bfd_find_target (target_name, abfd); + if (! target_vec) + return NULL; + if (is_bigendian) + *is_bigendian = ((target_vec->byteorder == BFD_ENDIAN_BIG) ? TRUE + : FALSE); + if (underscoring) + *underscoring = ((int) target_vec->symbol_leading_char) & 0xff; + + if (def_target_arch) + { + const char *tname = target_vec->name; + const char **arches = bfd_arch_list (); + + if (arches && tname) + { + char *hyp = strchr (tname, '-'); + + if (hyp != NULL) + { + tname = ++hyp; + + /* Make sure we detect architecture names + for triplets like "pe-arm-wince-little". */ + if (!_bfd_find_arch_match (tname, arches, def_target_arch)) + { + char new_tname[50]; + + strcpy (new_tname, hyp); + while ((hyp = strrchr (new_tname, '-')) != NULL) + { + *hyp = 0; + if (_bfd_find_arch_match (new_tname, arches, + def_target_arch)) + break; + } + } + } + else + _bfd_find_arch_match (tname, arches, def_target_arch); + } + + if (arches) + free (arches); + } + return target_vec; +} + /* FUNCTION bfd_target_list @@ -1443,11 +1584,6 @@ bfd_target_list (void) { int vec_length = 0; bfd_size_type amt; -#if defined (HOST_HPPAHPUX) && ! defined (__STDC__) - /* The native compiler on the HP9000/700 has a bug which causes it - to loop endlessly when compiling this file. This avoids it. */ - volatile -#endif const bfd_target * const *target; const char **name_list, **name_ptr; diff --git a/contrib/gdb-7/bfd/tekhex.c b/contrib/gdb-7/bfd/tekhex.c index 0be3ab9675..2204ebba6e 100644 --- a/contrib/gdb-7/bfd/tekhex.c +++ b/contrib/gdb-7/bfd/tekhex.c @@ -461,22 +461,22 @@ static bfd_boolean pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *)) { unsigned int chars_on_line; - bfd_boolean eof = FALSE; + bfd_boolean is_eof = FALSE; /* To the front of the file. */ if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) return FALSE; - while (! eof) + while (! is_eof) { char src[MAXCHUNK]; char type; /* Find first '%'. */ - eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); - while (*src != '%' && !eof) - eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); + is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); + while (*src != '%' && !is_eof) + is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); - if (eof) + if (is_eof) break; /* Fetch the type and the length and the checksum. */ @@ -952,6 +952,8 @@ tekhex_print_symbol (bfd *abfd, #define tekhex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define tekhex_bfd_link_add_symbols _bfd_generic_link_add_symbols #define tekhex_bfd_link_just_syms _bfd_generic_link_just_syms +#define tekhex_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define tekhex_bfd_final_link _bfd_generic_final_link #define tekhex_bfd_link_split_section _bfd_generic_link_split_section #define tekhex_get_section_contents_in_window _bfd_generic_get_section_contents_in_window diff --git a/contrib/gdb-7/bfd/verilog.c b/contrib/gdb-7/bfd/verilog.c index 2c60849090..551e5c4280 100644 --- a/contrib/gdb-7/bfd/verilog.c +++ b/contrib/gdb-7/bfd/verilog.c @@ -1,5 +1,5 @@ /* BFD back-end for verilog hex memory dump files. - Copyright 2009 + Copyright 2009, 2010 Free Software Foundation, Inc. Written by Anthony Green @@ -222,14 +222,11 @@ verilog_write_section (bfd *abfd, verilog_write_address (abfd, list->where); while (octets_written < list->size) { - bfd_vma address; unsigned int octets_this_chunk = list->size - octets_written; if (octets_this_chunk > 16) octets_this_chunk = 16; - address = list->where + octets_written / bfd_octets_per_byte (abfd); - if (! verilog_write_record (abfd, location, location + octets_this_chunk)) diff --git a/contrib/gdb-7/bfd/version.h b/contrib/gdb-7/bfd/version.h index ab2d0d2f2b..ef40e5fca0 100644 --- a/contrib/gdb-7/bfd/version.h +++ b/contrib/gdb-7/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20090916 +#define BFD_VERSION_DATE 20100707 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/contrib/gdb-7/configure.ac b/contrib/gdb-7/configure.ac deleted file mode 100644 index 17c8db3035..0000000000 --- a/contrib/gdb-7/configure.ac +++ /dev/null @@ -1,3184 +0,0 @@ -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING3. If not see -# . - -############################################################################## -### WARNING: this file contains embedded tabs. Do not run untabify on this file. - -m4_include(config/acx.m4) -m4_include(config/override.m4) -m4_include(config/proginstall.m4) - -AC_INIT(move-if-change) -AC_PREREQ(2.64) -AC_DISABLE_OPTION_CHECKING - -progname=$0 -# if PWD already has a value, it is probably wrong. -if test -n "$PWD" ; then PWD=`${PWDCMD-pwd}`; fi - -# Export original configure arguments for use by sub-configures. -# Quote arguments with shell meta charatcers. -TOPLEVEL_CONFIGURE_ARGUMENTS= -set -- "$progname" "$@" -for ac_arg -do - case "$ac_arg" in - *" "*|*" "*|*[[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\']]*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` - # if the argument is of the form -foo=baz, quote the baz part only - ac_arg=`echo "'$ac_arg'" | sed "s/^'\([[-a-zA-Z0-9]]*=\)/\\1'/"` ;; - *) ;; - esac - # Add the quoted argument to the list. - TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS $ac_arg" -done -if test "$silent" = yes; then - TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS --silent" -fi -# Remove the initial space we just introduced and, as these will be -# expanded by make, quote '$'. -TOPLEVEL_CONFIGURE_ARGUMENTS=`echo "x$TOPLEVEL_CONFIGURE_ARGUMENTS" | sed -e 's/^x *//' -e 's,\\$,$$,g'` -AC_SUBST(TOPLEVEL_CONFIGURE_ARGUMENTS) - -# Find the build, host, and target systems. -ACX_NONCANONICAL_BUILD -ACX_NONCANONICAL_HOST -ACX_NONCANONICAL_TARGET - -dnl Autoconf 2.5x and later will set a default program prefix if -dnl --target was used, even if it was the same as --host. Disable -dnl that behavior. This must be done before AC_CANONICAL_SYSTEM -dnl to take effect. -test "$host_noncanonical" = "$target_noncanonical" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_transform_name=s,y,y, - -AC_CANONICAL_SYSTEM -AC_ARG_PROGRAM - -m4_pattern_allow([^AS_FOR_TARGET$])dnl -m4_pattern_allow([^AS_FOR_BUILD$])dnl - -# Get 'install' or 'install-sh' and its variants. -AC_PROG_INSTALL -ACX_PROG_LN -AC_PROG_LN_S -AC_PROG_SED -AC_PROG_AWK - -### we might need to use some other shell than /bin/sh for running subshells -### If we are on Windows, search for the shell. This will permit people -### to not have /bin/sh, but to be able to see /SOME/PATH/sh configure -### without also having to set CONFIG_SHELL. This code will work when -### using bash, which sets OSTYPE. -case "${OSTYPE}" in -*win32*) - if test x${CONFIG_SHELL} = x ; then - if test ! -f /bin/sh ; then - if test x${SHELL} != x && test -f ${SHELL} ; then - CONFIG_SHELL=${SHELL} - export CONFIG_SHELL - else - for prog in sh sh.exe bash bash.exe; do - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/$prog; then - CONFIG_SHELL=$dir/$prog - export CONFIG_SHELL - break - fi - done - IFS="$save_ifs" - test -n "${CONFIG_SHELL}" && break - done - fi - fi - fi - ;; -esac - -config_shell=${CONFIG_SHELL-/bin/sh} - -moveifchange=${srcdir}/move-if-change - -srcpwd=`cd ${srcdir} ; ${PWDCMD-pwd}` - -# We pass INSTALL explicitly to sub-makes. Make sure that it is not -# a relative path. -if test "$INSTALL" = "${srcdir}/install-sh -c"; then - INSTALL="${srcpwd}/install-sh -c" -fi - -# Set srcdir to "." if that's what it is. -# This is important for multilib support. -pwd=`${PWDCMD-pwd}` -if test "${pwd}" = "${srcpwd}" ; then - srcdir=. -fi - -topsrcdir=$srcpwd - -extra_host_args= - -### To add a new directory to the tree, first choose whether it is a target -### or a host dependent tool. Then put it into the appropriate list -### (library or tools, host or target), doing a dependency sort. - -# Subdirs will be configured in the order listed in build_configdirs, -# configdirs, or target_configdirs; see the serialization section below. - -# Dependency sorting is only needed when *configuration* must be done in -# a particular order. In all cases a dependency should be specified in -# the Makefile, whether or not it's implicitly specified here. - -# Double entries in build_configdirs, configdirs, or target_configdirs may -# cause circular dependencies and break everything horribly. - -# these library is used by various programs built for the build -# environment -# -build_libs="build-libiberty" - -# these tools are built for the build environment -build_tools="build-texinfo build-byacc build-flex build-bison build-m4 build-fixincludes" - -# these libraries are used by various programs built for the host environment -# -host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libiconv" - -# these tools are built for the host environment -# Note, the powerpc-eabi build depends on sim occurring before gdb in order to -# know that we are building the simulator. -# binutils, gas and ld appear in that order because it makes sense to run -# "make check" in that particular order. -# If --enable-gold is used, "gold" will replace "ld". -host_tools="byacc flex bison binutils gas ld fixincludes gcc cgen sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" - -# libgcj represents the runtime libraries only used by gcj. -libgcj="target-libffi \ - target-zlib \ - target-qthreads \ - target-libjava" - -# these libraries are built for the target environment, and are built after -# the host libraries and the host tools (which may be a cross compiler) -# -target_libraries="target-libgcc \ - target-libiberty \ - target-libgloss \ - target-newlib \ - target-libgomp \ - target-libstdc++-v3 \ - target-libmudflap \ - target-libssp \ - target-libgfortran \ - target-boehm-gc \ - ${libgcj} \ - target-libobjc \ - target-libada" - -# these tools are built using the target libraries, and are intended to -# run only in the target environment -# -# note: any program that *uses* libraries that are in the "target_libraries" -# list belongs in this list. those programs are also very likely -# candidates for the "native_only" list which follows -# -target_tools="target-examples target-groff target-gperf target-rda" - -################################################################################ - -## All tools belong in one of the four categories, and are assigned above -## We assign ${configdirs} this way to remove all embedded newlines. This -## is important because configure will choke if they ever get through. -## ${configdirs} is directories we build using the host tools. -## ${target_configdirs} is directories we build using the target tools. -configdirs=`echo ${host_libs} ${host_tools}` -target_configdirs=`echo ${target_libraries} ${target_tools}` -build_configdirs=`echo ${build_libs} ${build_tools}` - -m4_divert_text([PARSE_ARGS], -[ac_subdirs_all=`cd $srcdir && echo */configure | sed 's,/configure,,g'` -]) - -################################################################################ - -srcname="gnu development package" - -# This gets set non-empty for some net releases of packages. -appdirs="" - -# Define is_cross_compiler to save on calls to 'test'. -is_cross_compiler= -if test x"${host}" = x"${target}" ; then - is_cross_compiler=no -else - is_cross_compiler=yes -fi - -# Find the build and target subdir names. -GCC_TOPLEV_SUBDIRS - -# Skipdirs are removed silently. -skipdirs= -# Noconfigdirs are removed loudly. -noconfigdirs="" - -use_gnu_ld= -# Make sure we don't let GNU ld be added if we didn't want it. -if test x$with_gnu_ld = xno ; then - use_gnu_ld=no - noconfigdirs="$noconfigdirs ld gold" -fi - -use_gnu_as= -# Make sure we don't let GNU as be added if we didn't want it. -if test x$with_gnu_as = xno ; then - use_gnu_as=no - noconfigdirs="$noconfigdirs gas" -fi - -# some tools are so dependent upon X11 that if we're not building with X, -# it's not even worth trying to configure, much less build, that tool. - -case ${with_x} in - yes | "") ;; # the default value for this tree is that X11 is available - no) - skipdirs="${skipdirs} tk itcl libgui" - # We won't be able to build gdbtk without X. - enable_gdbtk=no - ;; - *) echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2 ;; -esac - -# Some tools are only suitable for building in a "native" situation. -# Remove these if host!=target. -native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf" - -# Similarly, some are only suitable for cross toolchains. -# Remove these if host=target. -cross_only="target-libgloss target-newlib target-opcodes" - -case $is_cross_compiler in - no) skipdirs="${skipdirs} ${cross_only}" ;; - yes) skipdirs="${skipdirs} ${native_only}" ;; -esac - -# If both --with-headers and --with-libs are specified, default to -# --without-newlib. -if test x"${with_headers}" != x && test x"${with_headers}" != xno \ - && test x"${with_libs}" != x && test x"${with_libs}" != xno ; then - if test x"${with_newlib}" = x ; then - with_newlib=no - fi -fi - -# Recognize --with-newlib/--without-newlib. -case ${with_newlib} in - no) skipdirs="${skipdirs} target-newlib" ;; - yes) skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'` ;; -esac - -# Handle --enable-gold. - -AC_ARG_ENABLE(gold, -[ --enable-gold use gold instead of ld], -ENABLE_GOLD=$enableval, -ENABLE_GOLD=no) -if test "${ENABLE_GOLD}" = "yes"; then - # Check for ELF target. - is_elf=no - case "${target}" in - *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ - | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ - | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-solaris2* | *-*-nto*) - case "${target}" in - *-*-linux*aout* | *-*-linux*oldld*) - ;; - *) - is_elf=yes - ;; - esac - esac - - if test "$is_elf" = "yes"; then - # Check for target supported by gold. - case "${target}" in - i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*) - configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`" - ;; - esac - fi -fi - -# Configure extra directories which are host specific - -case "${host}" in - *-cygwin*) - configdirs="$configdirs libtermcap" ;; -esac - -# A target can indicate whether a language isn't supported for some reason. -# Only spaces may be used in this macro; not newlines or tabs. -unsupported_languages= - -# Remove more programs from consideration, based on the host or -# target this usually means that a port of the program doesn't -# exist yet. - -case "${host}" in - hppa*64*-*-*) - noconfigdirs="$noconfigdirs byacc" - ;; - i[[3456789]]86-*-vsta) - noconfigdirs="$noconfigdirs tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl itcl gnuserv gettext" - ;; - i[[3456789]]86-*-go32* | i[[3456789]]86-*-msdosdjgpp*) - noconfigdirs="$noconfigdirs tcl tk expect dejagnu send-pr uudecode guile itcl gnuserv libffi" - ;; - x86_64-*-mingw*) - noconfigdirs="$noconfigdirs expect dejagnu autoconf automake send-pr rcs guile perl texinfo libtool newlib" - ;; - i[[3456789]]86-*-mingw32*) - # noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl itcl gnuserv" - noconfigdirs="$noconfigdirs expect dejagnu autoconf automake send-pr rcs guile perl texinfo libtool newlib" - ;; - i[[3456789]]86-*-beos*) - noconfigdirs="$noconfigdirs tk itcl libgui gdb" - ;; - *-*-cygwin*) - noconfigdirs="$noconfigdirs autoconf automake send-pr rcs guile perl" - ;; - *-*-netbsd*) - noconfigdirs="$noconfigdirs rcs" - ;; - ppc*-*-pe) - noconfigdirs="$noconfigdirs patch diff make tk tcl expect dejagnu autoconf automake texinfo bison send-pr gprof rcs guile perl itcl gnuserv" - ;; - powerpc-*-beos*) - noconfigdirs="$noconfigdirs tk itcl libgui gdb dejagnu readline" - ;; -esac - - -AC_ARG_ENABLE(libada, -[ --enable-libada build libada directory], -ENABLE_LIBADA=$enableval, -ENABLE_LIBADA=yes) -if test "${ENABLE_LIBADA}" != "yes" ; then - noconfigdirs="$noconfigdirs gnattools" -fi - -AC_ARG_ENABLE(libssp, -[ --enable-libssp build libssp directory], -ENABLE_LIBSSP=$enableval, -ENABLE_LIBSSP=yes) - -# Save it here so that, even in case of --enable-libgcj, if the Java -# front-end isn't enabled, we still get libgcj disabled. -libgcj_saved=$libgcj -case $enable_libgcj in -yes) - # If we reset it here, it won't get added to noconfigdirs in the - # target-specific build rules, so it will be forcibly enabled - # (unless the Java language itself isn't enabled). - libgcj= - ;; -no) - # Make sure we get it printed in the list of not supported target libs. - noconfigdirs="$noconfigdirs ${libgcj}" - ;; -esac - - -# Disable libmudflap on some systems. -if test x$enable_libmudflap = x ; then - case "${target}" in - *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | bfin*-*-uclinux* | *-*-kopensolaris*-gnu) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) - # Enable libmudflap by default in FreeBSD. - ;; - *) - # Disable it by default everywhere else. - noconfigdirs="$noconfigdirs target-libmudflap" - ;; - esac -fi - -# Disable libgomp on non POSIX hosted systems. -if test x$enable_libgomp = x ; then - # Enable libgomp by default on hosted POSIX systems. - case "${target}" in - *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) - ;; - *-*-netbsd* | *-*-freebsd* | *-*-openbsd*) - ;; - *-*-solaris2* | *-*-sysv4* | *-*-irix6* | *-*-osf* | *-*-hpux11*) - ;; - *-*-darwin* | *-*-aix*) - ;; - *) - noconfigdirs="$noconfigdirs target-libgomp" - ;; - esac -fi - -# Default libgloss CPU subdirectory. -libgloss_dir="$target_cpu" - -case "${target}" in - *-*-chorusos) - noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}" - ;; - powerpc-*-darwin*) - noconfigdirs="$noconfigdirs ld gas gdb gprof" - noconfigdirs="$noconfigdirs sim target-rda" - ;; - i[[3456789]]86-*-darwin*) - noconfigdirs="$noconfigdirs ld gprof" - noconfigdirs="$noconfigdirs sim target-rda" - ;; - x86_64-*-darwin[[912]]*) - noconfigdirs="$noconfigdirs ld gas gprof" - noconfigdirs="$noconfigdirs sim target-rda" - ;; - *-*-darwin*) - noconfigdirs="$noconfigdirs ld gas gdb gprof" - noconfigdirs="$noconfigdirs sim target-rda" - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - *-*-freebsd[[12]] | *-*-freebsd[[12]].* | *-*-freebsd*aout*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}" - ;; - *-*-freebsd*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - if test "x$with_gmp" = x && test "x$with_gmp_dir" = x \ - && test -f /usr/local/include/gmp.h; then - with_gmp=/usr/local - fi - - # Skip some stuff that's unsupported on some FreeBSD configurations. - case "${target}" in - i*86-*-*) ;; - alpha*-*-*) ;; - *) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - esac - ;; - *-*-kaos*) - # Remove unsupported stuff on all kaOS configurations. - skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx" - skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" - skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" - noconfigdirs="$noconfigdirs target-libgloss" - ;; - *-*-netbsd*) - # Skip some stuff on all NetBSD configurations. - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" - - # Skip some stuff that's unsupported on some NetBSD configurations. - case "${target}" in - i*86-*-netbsdelf*) ;; - arm*-*-netbsdelf*) ;; - *) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - esac - ;; - *-*-netware*) - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap" - ;; - *-*-rtems*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - # The tpf target doesn't support gdb yet. - *-*-tpf*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl" - ;; - *-*-uclinux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" - ;; - *-*-vxworks*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" - ;; - alpha*-dec-osf*) - # ld works, but does not support shared libraries. - # newlib is not 64 bit ready. I'm not sure about fileutils. - # gas doesn't generate exception information. - noconfigdirs="$noconfigdirs gas ld fileutils target-newlib target-libgloss" - ;; - alpha*-*-*vms*) - noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss ${libgcj}" - ;; - alpha*-*-linux*) - # newlib is not 64 bit ready - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; - alpha*-*-*) - # newlib is not 64 bit ready - noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}" - ;; - am33_2.0-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; - sh-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; - sh*-*-pe|mips*-*-pe|*arm-wince-pe) - noconfigdirs="$noconfigdirs ${libgcj}" - noconfigdirs="$noconfigdirs target-examples" - noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" - noconfigdirs="$noconfigdirs tcl tk itcl libgui sim" - noconfigdirs="$noconfigdirs expect dejagnu" - # the C++ libraries don't build on top of CE's C libraries - noconfigdirs="$noconfigdirs target-libstdc++-v3" - noconfigdirs="$noconfigdirs target-newlib" - case "${host}" in - *-*-cygwin*) ;; # keep gdb and readline - *) noconfigdirs="$noconfigdirs gdb readline" - ;; - esac - libgloss_dir=wince - ;; - arc-*-*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - arm-semi-aof ) - ;; - arm-*-coff | strongarm-*-coff | xscale-*-coff) - noconfigdirs="$noconfigdirs ${libgcj}" - libgloss_dir=arm - ;; - arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - libgloss_dir=arm - ;; - arm*-*-linux-gnueabi) - noconfigdirs="$noconfigdirs target-qthreads" - case ${with_newlib} in - no) noconfigdirs="$noconfigdirs target-newlib target-libgloss" - esac - libgloss_dir=arm - ;; - arm*-*-symbianelf*) - noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" - libgloss_dir=arm - ;; - arm-*-pe*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - thumb-*-coff) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - thumb-*-elf) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - thumb-*-pe) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - arm-*-riscix*) - noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}" - ;; - avr-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" - ;; - bfin-*-*) - unsupported_languages="$unsupported_languages java" - noconfigdirs="$noconfigdirs target-boehm-gc gdb" - if test x${is_cross_compiler} != xno ; then - target_configdirs="${target_configdirs} target-bsp target-cygmon" - fi - ;; - c4x-*-* | tic4x-*-*) - noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libgloss ${libgcj}" - ;; - c54x*-*-* | tic54x-*-*) - noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libgloss ${libgcj} gcc gdb newlib" - ;; - cr16-*-*) - noconfigdirs="$noconfigdirs ${libgcj} gdb" - ;; - cris-*-* | crisv32-*-*) - unsupported_languages="$unsupported_languages java" - case "${target}" in - *-*-aout) - unsupported_languages="$unsupported_languages fortran" - noconfigdirs="$noconfigdirs target-libffi target-boehm-gc";; - *-*-elf) - noconfigdirs="$noconfigdirs target-boehm-gc";; - *-*-linux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss";; - *) - unsupported_languages="$unsupported_languages fortran" - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss";; - esac - libgloss_dir=cris - ;; - crx-*-*) - noconfigdirs="$noconfigdirs target-libstdc++-v3 target-mudflap ${libgcj}" - ;; - d10v-*-*) - noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libgloss ${libgcj}" - ;; - d30v-*-*) - noconfigdirs="$noconfigdirs ${libgcj} gdb" - ;; - ep9312-*-elf | ep9312-*-coff) - libgloss_dir=arm - ;; - fr30-*-elf*) - noconfigdirs="$noconfigdirs ${libgcj} gdb" - ;; - frv-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - moxie-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - noconfigdirs="$noconfigdirs gprof" - ;; - h8300*-*-*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - h8500-*-*) - noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libgloss ${libgcj}" - ;; - hppa1.1-*-osf* | hppa1.1-*-bsd* ) - ;; - hppa*64*-*-linux* | parisc*64*-*-linux*) - # In this case, it's because the hppa64-linux target is for - # the kernel only at this point and has no libc, and thus no - # headers, crt*.o, etc., all of which are needed by these. - noconfigdirs="$noconfigdirs target-zlib" - ;; - parisc*-*-linux* | hppa*-*-linux*) - ;; - hppa*-*-*elf* | \ - hppa*-*-lites* | \ - hppa*-*-openbsd* | \ - hppa*64*-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - hppa*-hp-hpux11*) - noconfigdirs="$noconfigdirs ld shellutils" - ;; - hppa*-*-pro*) - libgloss_dir=pa - ;; - hppa*-*-*) - # According to Alexandre Oliva , libjava won't - # build on HP-UX 10.20. - noconfigdirs="$noconfigdirs ld shellutils ${libgcj}" - ;; - i960-*-*) - noconfigdirs="$noconfigdirs ${libgcj} gdb" - ;; - ia64*-*-elf*) - # No gdb support yet. - noconfigdirs="$noconfigdirs readline mmalloc libgui itcl gdb" - ;; - ia64*-**-hpux*) - # No gdb or ld support yet. - noconfigdirs="$noconfigdirs ${libgcj} readline mmalloc libgui itcl gdb ld" - ;; - ia64*-*-*vms*) - # No gdb or ld support yet. - noconfigdirs="$noconfigdirs ${libgcj} tix readline mmalloc libgui itcl gdb ld" - ;; - i370-*-opened*) - ;; - i[[3456789]]86-*-coff | i[[3456789]]86-*-elf) - noconfigdirs="$noconfigdirs ${libgcj}" - libgloss_dir=i386 - ;; - i[[3456789]]86-*-linux*) - # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's - # not build java stuff by default. - case "${target}" in - *-*-*libc1*) - noconfigdirs="$noconfigdirs ${libgcj}";; - esac - - # This section makes it possible to build newlib natively on linux. - # If we are using a cross compiler then don't configure newlib. - if test x${is_cross_compiler} != xno ; then - noconfigdirs="$noconfigdirs target-newlib" - fi - noconfigdirs="$noconfigdirs target-libgloss" - # If we are not using a cross compiler, do configure newlib. - # Note however, that newlib will only be configured in this situation - # if the --with-newlib option has been given, because otherwise - # 'target-newlib' will appear in skipdirs. - ;; - i[[3456789]]86-*-mingw32*) - target_configdirs="$target_configdirs target-winsup" - noconfigdirs="$noconfigdirs expect target-libgloss target-newlib ${libgcj}" - ;; - x86_64-*-mingw*) - target_configdirs="$target_configdirs target-winsup" - noconfigdirs="$noconfigdirs expect target-libgloss target-newlib ${libgcj}" - ;; - *-*-cygwin*) - target_configdirs="$target_configdirs target-libtermcap target-winsup" - noconfigdirs="$noconfigdirs target-gperf target-libgloss" - # always build newlib if winsup directory is present. - if test -d "$srcdir/winsup/cygwin"; then - skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'` - elif test -d "$srcdir/newlib"; then - echo "Warning: winsup/cygwin is missing so newlib can't be built." - fi - ;; - i[[3456789]]86-moss-msdos | i[[3456789]]86-*-moss* | \ - i[[3456789]]86-*-uwin* | i[[3456789]]86-*-interix* ) - ;; - i[[3456789]]86-*-pe) - noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libgloss ${libgcj}" - ;; - i[[3456789]]86-*-sco3.2v5*) - # The linker does not yet know about weak symbols in COFF, - # and is not configured to handle mixed ELF and COFF. - noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}" - ;; - i[[3456789]]86-*-sco*) - noconfigdirs="$noconfigdirs gprof target-libgloss ${libgcj}" - ;; - i[[3456789]]86-*-solaris2*) - noconfigdirs="$noconfigdirs target-libgloss" - ;; - i[[3456789]]86-*-sysv4*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - i[[3456789]]86-*-beos*) - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss ${libgcj}" - ;; - i[[3456789]]86-*-rdos*) - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" - ;; - m32r-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - libgloss_dir=m68hc11 - ;; - m68k-*-elf*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - m68k-*-coff*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - m68*-*-* | fido-*-*) - libgloss_dir=m68k - ;; - mcore-*-pe*) - # The EPOC C++ environment does not support exceptions or rtti, - # and so building libstdc++-v3 tends not to always work. - noconfigdirs="$noconfigdirs target-libstdc++-v3" - ;; - mmix-*-*) - noconfigdirs="$noconfigdirs target-libffi target-boehm-gc gdb libgloss" - unsupported_languages="$unsupported_languages fortran java" - ;; - mn10200-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - mn10300-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - mt-*-*) - noconfigdirs="$noconfigdirs sim" - ;; - powerpc-*-aix*) - # copied from rs6000-*-* entry - noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp target-newlib ${libgcj}" - ;; - powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe) - target_configdirs="$target_configdirs target-winsup" - noconfigdirs="$noconfigdirs gdb tcl tk make expect target-libgloss itcl gnuserv ${libgcj}" - # always build newlib. - skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'` - ;; - # This is temporary until we can link against shared libraries - powerpcle-*-solaris*) - noconfigdirs="$noconfigdirs gdb sim make tcl tk expect itcl gnuserv ${libgcj}" - libgloss_dir=rs6000 - ;; - powerpc-*-beos*) - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss ${libgcj}" - ;; - powerpc-*-eabi) - noconfigdirs="$noconfigdirs ${libgcj}" - libgloss_dir=rs6000 - ;; - powerpc-*-eabi* | powerpcle-*-eabi* | powerpc-*-rtems* ) - libgloss_dir=rs6000 - ;; - rs6000-*-lynxos*) - noconfigdirs="$noconfigdirs target-newlib gprof ${libgcj}" - ;; - rs6000-*-aix*) - noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp target-newlib ${libgcj}" - ;; - rs6000-*-*) - noconfigdirs="$noconfigdirs gprof ${libgcj}" - ;; - m68k-apollo-*) - noconfigdirs="$noconfigdirs ld binutils gprof target-libgloss ${libgcj}" - ;; - microblaze*) - noconfigdirs="$noconfigdirs gprof ${libgcj}" - ;; - mips*-sde-elf*) - skipdirs="$skipdirs target-libiberty" - noconfigdirs="$noconfigdirs ${libgcj}" - if test x$with_newlib = xyes; then - noconfigdirs="$noconfigdirs gprof" - fi - libgloss_dir=mips - ;; - mips*-*-irix5*) - noconfigdirs="$noconfigdirs gprof target-libgloss ${libgcj}" - ;; - mips*-*-irix6*) - # Linking libjava exceeds command-line length limits on at least - # IRIX 6.2, but not on IRIX 6.5. - # Also, boehm-gc won't build on IRIX 6.5, according to Jeffrey Oldham - # - noconfigdirs="$noconfigdirs gprof target-libgloss ${libgcj}" - ;; - mips*-*-bsd*) - noconfigdirs="$noconfigdirs gprof target-libgloss ${libgcj}" - ;; - mips*-*-linux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; - mips*-*-*) - noconfigdirs="$noconfigdirs gprof ${libgcj}" - libgloss_dir=mips - ;; - romp-*-*) - noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" - ;; - sh-*-* | sh64-*-*) - case "${host}" in - i[[3456789]]86-*-vsta) ;; # don't add gprof back in - i[[3456789]]86-*-go32*) ;; # don't add gprof back in - i[[3456789]]86-*-msdosdjgpp*) ;; # don't add gprof back in - *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;; - esac - case "${target}" in - sh*-*-elf) - noconfigdirs="$noconfigdirs ${libgcj}" ;; - *) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" ;; - esac - ;; - sparclet-*-aout* | sparc86x-*-*) - libgloss_dir=sparc - ;; - sparc-*-elf*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - sparc64-*-elf*) - noconfigdirs="$noconfigdirs ${libgcj}" - libgloss_dir=sparc - ;; - sparclite-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - libgloss_dir=sparc - ;; - sparc-*-sunos4*) - noconfigdirs="$noconfigdirs ${libgcj}" - if test x${is_cross_compiler} != xno ; then - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" - else - use_gnu_ld=no - fi - ;; - sparc-*-solaris2.[[0-6]] | sparc-*-solaris2.[[0-6]].*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - sparc-*-solaris* | sparc64-*-solaris* | sparcv9-*-solaris*) - ;; - v810-*-*) - noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libstdc++-v3 opcodes target-libgloss ${libgcj}" - ;; - v850-*-*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - v850e-*-*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - v850ea-*-*) - noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" - ;; - vax-*-vms) - noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes target-libgloss ${libgcj}" - ;; - vax-*-*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}" - ;; - xtensa*-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; - ip2k-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" - ;; - *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; - *-*-lynxos*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}" - ;; - *-*-*) - noconfigdirs="$noconfigdirs ${libgcj}" - ;; -esac - -# If we aren't building newlib, then don't build libgloss, since libgloss -# depends upon some newlib header files. -case "${noconfigdirs}" in - *target-libgloss*) ;; - *target-newlib*) noconfigdirs="$noconfigdirs target-libgloss" ;; -esac - -# Work in distributions that contain no compiler tools, like Autoconf. -tentative_cc="" -host_makefile_frag=/dev/null -if test -d ${srcdir}/config ; then -case "${host}" in - m68k-hp-hpux*) - # Avoid "too much defining" errors from HPUX compiler. - tentative_cc="cc -Wp,-H256000" - # If "ar" in $PATH is GNU ar, the symbol table may need rebuilding. - # If it's HP/UX ar, this should be harmless. - RANLIB="ar ts" - ;; - m68k-apollo-sysv*) - tentative_cc="cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DUSG" - ;; - m68k-apollo-bsd*) - #None of the Apollo compilers can compile gas or binutils. The preprocessor - # chokes on bfd, the compiler won't let you assign integers to enums, and - # other problems. Defining CC to gcc is a questionable way to say "don't use - # the apollo compiler" (the preferred version of GCC could be called cc, - # or whatever), but I'm not sure leaving CC as cc is any better... - #CC=cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DNO_STDARG - # Used to have BISON=yacc. - tentative_cc=gcc - ;; - m88k-dg-dgux*) - tentative_cc="gcc -Wall -ansi -D__using_DGUX" - ;; - m88k-harris-cxux*) - # Under CX/UX, we want to tell the compiler to use ANSI mode. - tentative_cc="cc -Xa" - host_makefile_frag="config/mh-cxux" - ;; - m88k-motorola-sysv*) - ;; - mips*-dec-ultrix*) - tentative_cc="cc -Wf,-XNg1000" - host_makefile_frag="config/mh-decstation" - ;; - mips*-nec-sysv4*) - # The C compiler on NEC MIPS SVR4 needs bigger tables. - tentative_cc="cc -ZXNd=5000 -ZXNg=1000" - host_makefile_frag="config/mh-necv4" - ;; - mips*-sgi-irix4*) - # Tell compiler to use K&R C. We can't compile under the SGI Ansi - # environment. Also bump switch table size so that cp-parse will - # compile. Bump string length limit so linker builds. - tentative_cc="cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh2000 -Wf,-XNl8192" - ;; - mips*-*-sysv4*) - host_makefile_frag="config/mh-sysv4" - ;; - mips*-*-sysv*) - # This is for a MIPS running RISC/os 4.52C. - - # This is needed for GDB, but needs to be in the top-level make because - # if a library is compiled with the bsd headers and gets linked with the - # sysv system libraries all hell can break loose (e.g. a jmp_buf might be - # a different size). - # ptrace(2) apparently has problems in the BSD environment. No workaround is - # known except to select the sysv environment. Could we use /proc instead? - # These "sysv environments" and "bsd environments" often end up being a pain. - # - # This is not part of CFLAGS because perhaps not all C compilers have this - # option. - tentative_cc="cc -systype sysv" - ;; - i370-ibm-opened*) - tentative_cc="c89" - ;; - i[[3456789]]86-*-sysv5*) - host_makefile_frag="config/mh-sysv5" - ;; - i[[3456789]]86-*-dgux*) - tentative_cc="gcc -Wall -ansi -D__using_DGUX" - host_makefile_frag="config/mh-dgux386" - ;; - i[[3456789]]86-ncr-sysv4.3*) - # The MetaWare compiler will generate a copyright message unless you - # turn it off by adding the -Hnocopyr flag. - tentative_cc="cc -Hnocopyr" - ;; - i[[3456789]]86-ncr-sysv4*) - # for an NCR 3000 (i486/SVR4) system. - # The NCR 3000 ships with a MetaWare compiler installed as /bin/cc. - # This compiler not only emits obnoxious copyright messages every time - # you run it, but it chokes and dies on a whole bunch of GNU source - # files. Default to using the AT&T compiler installed in /usr/ccs/ATT/cc. - tentative_cc="/usr/ccs/ATT/cc" - host_makefile_frag="config/mh-ncr3000" - ;; - i[[3456789]]86-*-sco3.2v5*) - ;; - i[[3456789]]86-*-sco*) - # The native C compiler botches some simple uses of const. Unfortunately, - # it doesn't defined anything like "__sco__" for us to test for in ansidecl.h. - tentative_cc="cc -Dconst=" - host_makefile_frag="config/mh-sco" - ;; - i[[3456789]]86-*-udk*) - host_makefile_frag="config/mh-sysv5" - ;; - i[[3456789]]86-*-solaris2*) - host_makefile_frag="config/mh-sysv4" - ;; - i[[3456789]]86-*-msdosdjgpp*) - host_makefile_frag="config/mh-djgpp" - ;; - *-cygwin*) - ACX_CHECK_CYGWIN_CAT_WORKS - host_makefile_frag="config/mh-cygwin" - ;; - *-mingw*) - host_makefile_frag="config/mh-mingw" - ;; - *-interix*) - host_makefile_frag="config/mh-interix" - ;; - vax-*-ultrix2*) - # The old BSD pcc isn't up to compiling parts of gdb so use gcc - tentative_cc=gcc - ;; - *-*-solaris2*) - host_makefile_frag="config/mh-solaris" - ;; - m68k-sun-sunos*) - # Sun's C compiler needs the -J flag to be able to compile cp-parse.c - # without overflowing the jump tables (-J says to use a 32 bit table) - tentative_cc="cc -J" - ;; - hppa*-hp-hpux10*) - tentative_cc="cc -Wp,-H256000" - host_makefile_frag="config/mh-pa-hpux10" - ;; - hppa*-hp-hpux* | hppa*-*-hiux*) - tentative_cc="cc -Wp,-H256000" - host_makefile_frag="config/mh-pa" - ;; - hppa*-*) - host_makefile_frag="config/mh-pa" - ;; - *-hp-hpux* | *-*-hiux*) - tentative_cc="cc -Wp,-H256000" - ;; - rs6000-*-lynxos*) - # /bin/cc is less than useful for our purposes. Always use GCC - tentative_cc="/usr/cygnus/progressive/bin/gcc" - host_makefile_frag="config/mh-lynxrs6k" - ;; - powerpc-*-darwin*) - host_makefile_frag="config/mh-ppc-darwin" - ;; - powerpc-*-aix*) - host_makefile_frag="config/mh-ppc-aix" - ;; - rs6000-*-aix*) - host_makefile_frag="config/mh-ppc-aix" - ;; - *-*-lynxos*) - # /bin/cc is less than useful for our purposes. Always use GCC - tentative_cc="/bin/gcc" - ;; - *-*-sysv4*) - host_makefile_frag="config/mh-sysv4" - ;; - # This is placed last to prevent interfering with the cases above. - i[[3456789]]86-*-*) - # Build the stage2 and stage3 compilers with -fomit-frame-pointer. - host_makefile_frag="config/mh-x86omitfp" - ;; -esac -fi - -# If we aren't going to be using gcc, see if we can extract a definition -# of CC from the fragment. -# Actually, use the 'pre-extracted' version above. -if test -z "${CC}" && test "${build}" = "${host}" ; then - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" - found= - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/gcc; then - found=yes - break - fi - done - IFS="$save_ifs" - if test -z "${found}" && test -n "${tentative_cc}" ; then - CC=$tentative_cc - fi -fi - -if test "${build}" != "${host}" ; then - AR_FOR_BUILD=${AR_FOR_BUILD-ar} - AS_FOR_BUILD=${AS_FOR_BUILD-as} - CC_FOR_BUILD=${CC_FOR_BUILD-gcc} - CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} - GCJ_FOR_BUILD=${GCJ_FOR_BUILD-gcj} - GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} - DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} - LD_FOR_BUILD=${LD_FOR_BUILD-ld} - NM_FOR_BUILD=${NM_FOR_BUILD-nm} - RANLIB_FOR_BUILD=${RANLIB_FOR_BUILD-ranlib} - WINDRES_FOR_BUILD=${WINDRES_FOR_BUILD-windres} - WINDMC_FOR_BUILD=${WINDMC_FOR_BUILD-windmc} -else - AR_FOR_BUILD="\$(AR)" - AS_FOR_BUILD="\$(AS)" - CC_FOR_BUILD="\$(CC)" - CXX_FOR_BUILD="\$(CXX)" - GCJ_FOR_BUILD="\$(GCJ)" - GFORTRAN_FOR_BUILD="\$(GFORTRAN)" - DLLTOOL_FOR_BUILD="\$(DLLTOOL)" - LD_FOR_BUILD="\$(LD)" - NM_FOR_BUILD="\$(NM)" - RANLIB_FOR_BUILD="\$(RANLIB)" - WINDRES_FOR_BUILD="\$(WINDRES)" - WINDMC_FOR_BUILD="\$(WINDMC)" -fi - -AC_PROG_CC -AC_PROG_CXX - -# We must set the default linker to the linker used by gcc for the correct -# operation of libtool. If LD is not defined and we are using gcc, try to -# set the LD default to the ld used by gcc. -if test -z "$LD"; then - if test "$GCC" = yes; then - case $build in - *-*-mingw*) - gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;; - *) - gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;; - esac - case $gcc_prog_ld in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - LD="$gcc_prog_ld" ;; - esac - fi -fi - -ACX_PROG_GNAT -ACX_PROG_CMP_IGNORE_INITIAL - -# See if we are building gcc with C++. -AC_ARG_ENABLE(build-with-cxx, -[ --enable-build-with-cxx build with C++ compiler instead of C compiler], -ENABLE_BUILD_WITH_CXX=$enableval, -ENABLE_BUILD_WITH_CXX=no) - -# Check for GMP, MPFR and MPC -gmplibs="-lmpfr -lgmp" -gmpinc= -have_gmp=no -mpclibs=-lmpc -mpcinc= -have_mpc=no - -# Specify a location for mpc -# check for this first so it ends up on the link line before mpfr. -AC_ARG_WITH(mpc, [ --with-mpc=PATH specify prefix directory for installed MPC package. - Equivalent to --with-mpc-include=PATH/include - plus --with-mpc-lib=PATH/lib]) -AC_ARG_WITH(mpc_include, [ --with-mpc-include=PATH - specify directory for installed MPC include files]) -AC_ARG_WITH(mpc_lib, [ --with-mpc-lib=PATH specify directory for the installed MPC library]) - -if test "x$with_mpc" != x; then - mpclibs="-L$with_mpc/lib -lmpc" - mpcinc="-I$with_mpc/include $mpcinc" -fi -if test "x$with_mpc_include" != x; then - mpcinc="-I$with_mpc_include $mpcinc" -fi -if test "x$with_mpc_lib" != x; then - mpclibs="-L$with_mpc_lib -lmpc" -fi -if test "x$with_mpc$with_mpc_include$with_mpc_lib" = x && test -d ${srcdir}/mpc; then - mpclibs='-L$$r/$(HOST_SUBDIR)/mpc/src/.libs -L$$r/$(HOST_SUBDIR)/mpc/src/_libs -lmpc' - mpcinc='-I$$s/mpc/src '"$mpcinc" - # Do not test the mpc version. Assume that it is sufficient, since - # it is in the source tree, and the library has not been built yet - # but it would be included on the link line in the version check below - # hence making the test fail. - have_mpc=yes -fi - -# Specify a location for mpfr -# check for this first so it ends up on the link line before gmp. -AC_ARG_WITH(mpfr-dir, [ --with-mpfr-dir=PATH this option has been REMOVED], - AC_MSG_ERROR([The --with-mpfr-dir=PATH option has been removed. -Use --with-mpfr=PATH or --with-mpfr-include=PATH plus --with-mpfr-lib=PATH])) - -AC_ARG_WITH(mpfr, [ --with-mpfr=PATH specify prefix directory for installed MPFR package. - Equivalent to --with-mpfr-include=PATH/include - plus --with-mpfr-lib=PATH/lib]) -AC_ARG_WITH(mpfr_include, [ --with-mpfr-include=PATH - specify directory for installed MPFR include files]) -AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH specify directory for the installed MPFR library]) - -if test "x$with_mpfr" != x; then - gmplibs="-L$with_mpfr/lib $gmplibs" - gmpinc="-I$with_mpfr/include" -fi -if test "x$with_mpfr_include" != x; then - gmpinc="-I$with_mpfr_include" -fi -if test "x$with_mpfr_lib" != x; then - gmplibs="-L$with_mpfr_lib $gmplibs" -fi -if test "x$with_mpfr$with_mpfr_include$with_mpfr_lib" = x && test -d ${srcdir}/mpfr; then - gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/.libs -L$$r/$(HOST_SUBDIR)/mpfr/_libs '"$gmplibs" - gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr -I$$s/mpfr '"$gmpinc" - extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr' - # Do not test the mpfr version. Assume that it is sufficient, since - # it is in the source tree, and the library has not been built yet - # but it would be included on the link line in the version check below - # hence making the test fail. - have_gmp=yes -fi - -# Specify a location for gmp -AC_ARG_WITH(gmp-dir, [ --with-gmp-dir=PATH this option has been REMOVED], - AC_MSG_ERROR([The --with-gmp-dir=PATH option has been removed. -Use --with-gmp=PATH or --with-gmp-include=PATH plus --with-gmp-lib=PATH])) - -AC_ARG_WITH(gmp, [ --with-gmp=PATH specify prefix directory for the installed GMP package. - Equivalent to --with-gmp-include=PATH/include - plus --with-gmp-lib=PATH/lib]) -AC_ARG_WITH(gmp_include, [ --with-gmp-include=PATH specify directory for installed GMP include files]) -AC_ARG_WITH(gmp_lib, [ --with-gmp-lib=PATH specify directory for the installed GMP library]) - - -if test "x$with_gmp" != x; then - gmplibs="-L$with_gmp/lib $gmplibs" - gmpinc="-I$with_gmp/include $gmpinc" -fi -if test "x$with_gmp_include" != x; then - gmpinc="-I$with_gmp_include $gmpinc" -fi -if test "x$with_gmp_lib" != x; then - gmplibs="-L$with_gmp_lib $gmplibs" -fi -if test "x$with_gmp$with_gmp_include$with_gmp_lib" = x && test -d ${srcdir}/gmp; then - gmplibs='-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/gmp/_libs '"$gmplibs" - gmpinc='-I$$r/$(HOST_SUBDIR)/gmp -I$$s/gmp '"$gmpinc" - extra_mpfr_configure_flags='--with-gmp-build=$$r/$(HOST_SUBDIR)/gmp' - extra_mpc_gmp_configure_flags='--with-gmp-include=$$r/$(HOST_SUBDIR)/gmp' - # Do not test the gmp version. Assume that it is sufficient, since - # it is in the source tree, and the library has not been built yet - # but it would be included on the link line in the version check below - # hence making the test fail. - have_gmp=yes -fi - -if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then - have_gmp=yes - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $gmpinc" - # Check GMP actually works - AC_MSG_CHECKING([for correct version of gmp.h]) - AC_TRY_COMPILE([#include "gmp.h"],[ - #if __GNU_MP_VERSION < 4 || (__GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR < 2) - choke me - #endif - ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no]) - - # If we have GMP, check the MPFR version. - if test x"$have_gmp" = xyes; then - dnl MPFR 2.3.1 is acceptable, but MPFR 2.3.2 is better. - AC_MSG_CHECKING([for correct version of mpfr.h]) - AC_TRY_COMPILE([#include - #include ],[ - #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,1) - choke me - #endif - ], AC_TRY_COMPILE([#include - #include ],[ - #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,2) - choke me - #endif - ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])]), - [AC_MSG_RESULT([no]); have_gmp=no]) - fi - - # Check for the MPC header version. - if test x"$have_mpc" != xyes ; then - CFLAGS="$CFLAGS $mpcinc" - AC_MSG_CHECKING([for the correct version of mpc.h]) - AC_TRY_COMPILE([#include ],[ - #if MPC_VERSION < MPC_VERSION_NUM (0,6,0) - choke me - #endif - ], [AC_MSG_RESULT([yes]); have_mpc=maybe], - [AC_MSG_RESULT([no]); have_mpc=no; mpclibs= ; mpcinc= ]) - fi - - # Now check the MPFR library. - if test x"$have_gmp" = xyes; then - saved_LIBS="$LIBS" - LIBS="$LIBS $gmplibs" - AC_MSG_CHECKING([for the correct version of the gmp/mpfr libraries]) - AC_TRY_LINK([#include - #include ],[ - mpfr_t n; - mpfr_t x; - int t; - mpfr_init (n); - mpfr_init (x); - mpfr_atan2 (n, n, x, GMP_RNDN); - mpfr_erfc (n, x, GMP_RNDN); - mpfr_subnormalize (x, t, GMP_RNDN); - ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no]) - LIBS="$saved_LIBS" - fi - - if test x"$have_mpc" = xmaybe; then - saved_LIBS="$LIBS" - LIBS="$LIBS $mpclibs $gmplibs" - AC_MSG_CHECKING([for the correct version of the mpc library]) - AC_TRY_LINK([#include ],[ - mpc_t n; - mpc_init2 (n, 53); - mpc_set_ui_ui (n, 1, 1, MPC_RNDNN); - mpc_sin (n, n, MPC_RNDNN); - mpc_cos (n, n, MPC_RNDNN); - mpc_tan (n, n, MPC_RNDNN); - mpc_sinh (n, n, MPC_RNDNN); - mpc_cosh (n, n, MPC_RNDNN); - mpc_tanh (n, n, MPC_RNDNN); - mpc_exp (n, n, MPC_RNDNN); - mpc_log (n, n, MPC_RNDNN); - mpc_sqrt (n, n, MPC_RNDNN); - mpc_proj (n, n, MPC_RNDNN); - mpc_neg (n, n, MPC_RNDNN); - mpc_sqr (n, n, MPC_RNDNN); - mpc_clear (n); - ], [AC_MSG_RESULT([yes]); have_mpc=yes], - [AC_MSG_RESULT([no]); have_mpc=no; mpclibs= ; mpcinc= ]) - LIBS="$saved_LIBS" - fi - - CFLAGS="$saved_CFLAGS" - - if test x$have_gmp != xyes; then - AC_MSG_ERROR([Building GCC requires GMP 4.2+ and MPFR 2.3.2+. -Try the --with-gmp and/or --with-mpfr options to specify their locations. -Copies of these libraries' source code can be found at their respective -hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/. -See also http://gcc.gnu.org/install/prerequisites.html for additional info. -If you obtained GMP and/or MPFR from a vendor distribution package, make -sure that you have installed both the libraries and the header files. -They may be located in separate packages.]) - fi -fi - -if test x$have_mpc != xyes ; then - mpcinc= - mpclibs= -fi - -gmpinc="$mpcinc $gmpinc" -gmplibs="$mpclibs $gmplibs" - -# Flags needed for both GMP, MPFR and/or MPC. -AC_SUBST(gmplibs) -AC_SUBST(gmpinc) -AC_SUBST(extra_mpfr_configure_flags) -AC_SUBST(extra_mpc_gmp_configure_flags) -AC_SUBST(extra_mpc_mpfr_configure_flags) - -# Allow host libstdc++ to be specified for static linking with PPL. -AC_ARG_WITH(host-libstdcxx, [ --with-host-libstdcxx=L Use linker arguments L to link with libstdc++ - when linking with PPL]) - -case $with_host_libstdcxx in - no|yes) - AC_MSG_ERROR([-with-host-libstdcxx needs an argument]) - ;; -esac - -# Linker flags to use for stage1 or when not boostrapping. -AC_ARG_WITH(stage1-ldflags, -[ --with-stage1-ldflags=FLAGS Linker flags for stage1], -[if test "$withval" = "no" -o "$withval" = "yes"; then - stage1_ldflags= - else - stage1_ldflags=$withval - fi], -[stage1_ldflags=]) -AC_SUBST(stage1_ldflags) - -# Libraries to use for stage1 or when not bootstrapping. -AC_ARG_WITH(stage1-libs, -[ -with-stage1-libs=LIBS Libraries for stage1], -[if test "$withval" = "no" -o "$withval" = "yes"; then - stage1_libs= - else - stage1_libs=$withval - fi], -[stage1_libs=$with_host_libstdcxx]) -AC_SUBST(stage1_libs) - -# Linker flags to use for stage2 and later builds. -AC_ARG_WITH(boot-ldflags, -[ --with-boot-ldflags=FLAGS Linker flags for stage2 and later], -[if test "$withval" = "no" -o "$withval" = "yes"; then - poststage1_ldflags= - else - poststage1_ldflags=$withval - fi], -[if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then - poststage1_ldflags=-static-libstdc++ - else - poststage1_ldflags= - fi]) -AC_SUBST(poststage1_ldflags) - -# Libraries to use for stage2 and later builds. This defaults to the -# argument passed to --with-host-libstdcxx. -AC_ARG_WITH(boot-libs, -[ --with-boot-libs=LIBS Libraries for stage2 and later], -[if test "$withval" = "no" -o "$withval" = "yes"; then - poststage1_libs= - else - poststage1_libs=$withval - fi], -[poststage1_libs=$with_host_libstdcxx]) -AC_SUBST(poststage1_libs) - -# Check for PPL -ppl_major_version=0 -ppl_minor_version=10 -ppllibs=" -lppl_c -lppl -lgmpxx" -pplinc= - -AC_ARG_WITH(ppl, [ --with-ppl=PATH Specify prefix directory for the installed PPL package - Equivalent to --with-ppl-include=PATH/include - plus --with-ppl-lib=PATH/lib],, with_ppl=no) -AC_ARG_WITH(ppl_include, [ --with-ppl-include=PATH Specify directory for installed PPL include files]) -AC_ARG_WITH(ppl_lib, [ --with-ppl-lib=PATH Specify the directory for the installed PPL library]) - -case $with_ppl in - no) - ppllibs= - ;; - *) - ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx" - pplinc="-I$with_ppl/include $pplinc" - LIBS="$ppllibs $LIBS" - ;; -esac -if test "x$with_ppl_include" != x; then - pplinc="-I$with_ppl_include $pplinc" -fi -if test "x$with_ppl_lib" != x; then - ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx" - LIBS="$ppllibs $LIBS" -fi -if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then - ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx ' - pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include ' - LIBS="$ppllibs $LIBS" -fi - -AC_ARG_ENABLE(ppl-version-check, -[ --disable-ppl-version-check disable check for PPL version], -ENABLE_PPL_CHECK=$enableval, -ENABLE_PPL_CHECK=yes) - -if test "${ENABLE_PPL_CHECK}" = "yes"; then - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pplinc $gmpinc" - AC_MSG_CHECKING([for version $ppl_major_version.$ppl_minor_version of PPL]) - AC_TRY_COMPILE([#include "ppl_c.h"],[ - #if PPL_VERSION_MAJOR != $ppl_major_version || PPL_VERSION_MINOR != $ppl_minor_version - choke me - #endif - ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ]) - CFLAGS="$saved_CFLAGS" -fi - -# Flags needed for PPL -AC_SUBST(ppllibs) -AC_SUBST(pplinc) - - -# Check for CLOOG -clooglibs=" -lcloog " -clooginc=" -DCLOOG_PPL_BACKEND " - -AC_ARG_WITH(cloog, [ --with-cloog=PATH Specify prefix directory for the installed CLooG-PPL package - Equivalent to --with-cloog-include=PATH/include - plus --with-cloog-lib=PATH/lib],, with_cloog=no) -AC_ARG_WITH(cloog_include, [ --with-cloog-include=PATH Specify directory for installed CLooG include files]) -AC_ARG_WITH(cloog_lib, [ --with-cloog-lib=PATH Specify the directory for the installed CLooG library]) - -case $with_cloog in - no) - clooglibs= - clooginc= - ;; - *) - clooglibs="-L$with_cloog/lib -lcloog" - clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND " - LIBS="$clooglibs $LIBS" - ;; -esac -if test "x$with_cloog_include" != x; then - clooginc="-I$with_cloog_include -DCLOOG_PPL_BACKEND " -fi -if test "x$with_cloog_lib" != x; then - clooglibs="-L$with_cloog_lib -lcloog" - LIBS="$clooglibs $LIBS" -fi -if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then - clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/.libs -L$$r/$(HOST_SUBDIR)/cloog/_libs -lcloog ' - clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND ' - LIBS="$clooglibs $LIBS" -fi - -AC_ARG_ENABLE(cloog-version-check, -[ --disable-cloog-version-check disable check for CLooG version], -ENABLE_CLOOG_CHECK=$enableval, -ENABLE_CLOOG_CHECK=yes) - -if test "${ENABLE_CLOOG_CHECK}" = "yes"; then - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc" - AC_MSG_CHECKING([for correct version of CLooG]) - AC_TRY_COMPILE([#include "cloog/cloog.h"],[ - #if CLOOG_VERSION_MAJOR != 0 || CLOOG_VERSION_MINOR != 15 - choke me - #endif - ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); clooglibs= ; clooginc= ]) - CFLAGS="$saved_CFLAGS" -fi - -# Flags needed for CLOOG -AC_SUBST(clooglibs) -AC_SUBST(clooginc) - - -# By default, C is the only stage 1 language. -stage1_languages=,c, - -# Target libraries that we bootstrap. -bootstrap_target_libs=,target-libgcc, - -# Figure out what language subdirectories are present. -# Look if the user specified --enable-languages="..."; if not, use -# the environment variable $LANGUAGES if defined. $LANGUAGES might -# go away some day. -# NB: embedded tabs in this IF block -- do not untabify -if test -d ${srcdir}/gcc; then - if test x"${enable_languages+set}" != xset; then - if test x"${LANGUAGES+set}" = xset; then - enable_languages="${LANGUAGES}" - echo configure.in: warning: setting LANGUAGES is deprecated, use --enable-languages instead 1>&2 - else - enable_languages=all - fi - else - if test x"${enable_languages}" = x || - test x"${enable_languages}" = xyes; - then - echo configure.in: --enable-languages needs at least one language argument 1>&2 - exit 1 - fi - fi - enable_languages=`echo "${enable_languages}" | sed -e 's/[[ ,]][[ ,]]*/,/g' -e 's/,$//'` - - # 'f95' is the old name for the 'fortran' language. We issue a warning - # and make the substitution. - case ,${enable_languages}, in - *,f95,*) - echo configure.in: warning: 'f95' as language name is deprecated, use 'fortran' instead 1>&2 - enable_languages=`echo "${enable_languages}" | sed -e 's/f95/fortran/g'` - ;; - esac - - # First scan to see if an enabled language requires some other language. - # We assume that a given config-lang.in will list all the language - # front ends it requires, even if some are required indirectly. - for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do - case ${lang_frag} in - ..) ;; - # The odd quoting in the next line works around - # an apparent bug in bash 1.12 on linux. - ${srcdir}/gcc/[[*]]/config-lang.in) ;; - *) - # From the config-lang.in, get $language, $lang_requires - language= - lang_requires= - . ${lang_frag} - for other in ${lang_requires} ; do - case ,${enable_languages}, in - *,$other,*) ;; - *,all,*) ;; - *,$language,*) - echo " \`$other' language required by \`$language'; enabling" 1>&2 - enable_languages="${enable_languages},${other}" - ;; - esac - done - ;; - esac - done - - new_enable_languages=,c, - missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ ` - potential_languages=,c, - - for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do - case ${lang_frag} in - ..) ;; - # The odd quoting in the next line works around - # an apparent bug in bash 1.12 on linux. - ${srcdir}/gcc/[[*]]/config-lang.in) ;; - *) - # From the config-lang.in, get $language, $target_libs, - # $lang_dirs, $boot_language, and $build_by_default - language= - target_libs= - lang_dirs= - subdir_requires= - boot_language=no - build_by_default=yes - . ${lang_frag} - if test x${language} = x; then - echo "${lang_frag} doesn't set \$language." 1>&2 - exit 1 - fi - - if test "$language" = "c++" -a "$ENABLE_BUILD_WITH_CXX" = "yes"; then - boot_language=yes - fi - - case ,${enable_languages}, in - *,${language},*) - # Language was explicitly selected; include it. - add_this_lang=yes - ;; - *,all,*) - # 'all' was selected, select it if it is a default language - add_this_lang=${build_by_default} - ;; - *) - add_this_lang=no - ;; - esac - - # Disable languages that need other directories if these aren't available. - for i in $subdir_requires; do - test -f "$srcdir/gcc/$i/config-lang.in" && continue - case ,${enable_languages}, in - *,${language},*) - # Specifically requested language; tell them. - AC_MSG_ERROR([The gcc/$i directory contains parts of $language but is missing]) - ;; - *) - # Silently disable. - add_this_lang=unsupported - ;; - esac - done - - # Disable Ada if no preexisting GNAT is available. - case ,${enable_languages},:${language}:${have_gnat} in - *,${language},*:ada:no) - # Specifically requested language; tell them. - AC_MSG_ERROR([GNAT is required to build $language]) - ;; - *:ada:no) - # Silently disable. - add_this_lang=unsupported - ;; - esac - - # Disable a language that is unsupported by the target. - case " $unsupported_languages " in - *" $language "*) - add_this_lang=unsupported - ;; - esac - - case $add_this_lang in - unsupported) - # Remove language-dependent dirs. - eval noconfigdirs='"$noconfigdirs "'\"$target_libs $lang_dirs\" - ;; - no) - # Remove language-dependent dirs; still show language as supported. - eval noconfigdirs='"$noconfigdirs "'\"$target_libs $lang_dirs\" - potential_languages="${potential_languages}${language}," - ;; - yes) - new_enable_languages="${new_enable_languages}${language}," - potential_languages="${potential_languages}${language}," - missing_languages=`echo "$missing_languages" | sed "s/,$language,/,/"` - case ${boot_language} in - yes) - # Add to (comma-separated) list of stage 1 languages. - stage1_languages="${stage1_languages}${language}," - # We need to bootstrap any supporting libraries. - bootstrap_target_libs="${bootstrap_target_libs}${target_libs}," - ;; - esac - ;; - esac - ;; - esac - done - - AC_ARG_ENABLE(stage1-languages, -[ --enable-stage1-languages@<:@=all@:>@ choose additional languages to build during - stage1. Mostly useful for compiler development.], - [case ,${enable_stage1_languages}, in - ,no,|,,) - # Set it to something that will have no effect in the loop below - enable_stage1_languages=c ;; - ,yes,) - enable_stage1_languages=`echo $new_enable_languages | \ - sed -e "s/^,//" -e "s/,$//" ` ;; - *,all,*) - enable_stage1_languages=`echo ,$enable_stage1_languages, | \ - sed -e "s/,all,/$new_enable_languages/" -e "s/^,//" -e "s/,$//" ` ;; - esac - - # Add "good" languages from enable_stage1_languages to stage1_languages, - # while "bad" languages go in missing_languages. Leave no duplicates. - for i in `echo $enable_stage1_languages | sed 's/,/ /g' `; do - case $potential_languages in - *,$i,*) - case $stage1_languages in - *,$i,*) ;; - *) stage1_languages="$stage1_languages$i," ;; - esac ;; - *) - case $missing_languages in - *,$i,*) ;; - *) missing_languages="$missing_languages$i," ;; - esac ;; - esac - done]) - - # Remove leading/trailing commas that were added for simplicity - potential_languages=`echo "$potential_languages" | sed -e "s/^,//" -e "s/,$//"` - missing_languages=`echo "$missing_languages" | sed -e "s/^,//" -e "s/,$//"` - stage1_languages=`echo "$stage1_languages" | sed -e "s/^,//" -e "s/,$//"` - new_enable_languages=`echo "$new_enable_languages" | sed -e "s/^,//" -e "s/,$//"` - - if test "x$missing_languages" != x; then - AC_MSG_ERROR([ -The following requested languages could not be built: ${missing_languages} -Supported languages are: ${potential_languages}]) - fi - if test "x$new_enable_languages" != "x$enable_languages"; then - echo The following languages will be built: ${new_enable_languages} - enable_languages="$new_enable_languages" - fi - - AC_SUBST(stage1_languages) - ac_configure_args=`echo " $ac_configure_args" | sed -e "s/ '--enable-languages=[[^ ]]*'//g" -e "s/$/ '--enable-languages="$enable_languages"'/" ` -fi - -# Handle --disable- generically. -for dir in $configdirs $build_configdirs $target_configdirs ; do - dirname=`echo $dir | sed -e s/target-//g -e s/build-//g -e s/-/_/g` - varname=`echo $dirname | sed -e s/+/_/g` - if eval test x\${enable_${varname}} "=" xno ; then - noconfigdirs="$noconfigdirs $dir" - fi -done - -# Check for Boehm's garbage collector -AC_ARG_ENABLE(objc-gc, -[ --enable-objc-gc enable use of Boehm's garbage collector with the - GNU Objective-C runtime], -[case ,${enable_languages},:${enable_objc_gc}:${noconfigdirs} in - *,objc,*:*:yes:*target-boehm-gc*) - AC_MSG_ERROR([Boehm's garbage collector was requested yet not supported in this configuration]) - ;; -esac]) - -# Make sure we only build Boehm's garbage collector if required. -case ,${enable_languages},:${enable_objc_gc} in - *,objc,*:yes) - # Keep target-boehm-gc if requested for Objective-C. - ;; - *) - # Otherwise remove target-boehm-gc depending on target-libjava. - if echo " ${noconfigdirs} " | grep "target-libjava" >/dev/null 2>&1; then - noconfigdirs="$noconfigdirs target-boehm-gc" - fi - ;; -esac - -# Remove the entries in $skipdirs and $noconfigdirs from $configdirs, -# $build_configdirs and $target_configdirs. -# If we have the source for $noconfigdirs entries, add them to $notsupp. - -notsupp="" -for dir in . $skipdirs $noconfigdirs ; do - dirname=`echo $dir | sed -e s/target-//g -e s/build-//g` - if test $dir != . && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then - configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"` - if test -r $srcdir/$dirname/configure ; then - if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then - true - else - notsupp="$notsupp $dir" - fi - fi - fi - if test $dir != . && echo " ${build_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then - build_configdirs=`echo " ${build_configdirs} " | sed -e "s/ ${dir} / /"` - if test -r $srcdir/$dirname/configure ; then - if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then - true - else - notsupp="$notsupp $dir" - fi - fi - fi - if test $dir != . && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then - target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"` - if test -r $srcdir/$dirname/configure ; then - if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then - true - else - notsupp="$notsupp $dir" - fi - fi - fi -done - -# Sometimes the tools are distributed with libiberty but with no other -# libraries. In that case, we don't want to build target-libiberty. -# Don't let libgcc imply libiberty either. -if test -n "${target_configdirs}" ; then - libgcc= - others= - for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do - if test "$i" = "libgcc"; then - libgcc=target-libgcc - elif test "$i" != "libiberty" ; then - if test -r $srcdir/$i/configure ; then - others=yes; - break; - fi - fi - done - if test -z "${others}" ; then - target_configdirs=$libgcc - fi -fi - -# Quietly strip out all directories which aren't configurable in this tree. -# This relies on all configurable subdirectories being autoconfiscated, which -# is now the case. -build_configdirs_all="$build_configdirs" -build_configdirs= -for i in ${build_configdirs_all} ; do - j=`echo $i | sed -e s/build-//g` - if test -f ${srcdir}/$j/configure ; then - build_configdirs="${build_configdirs} $i" - fi -done - -configdirs_all="$configdirs" -configdirs= -for i in ${configdirs_all} ; do - if test -f ${srcdir}/$i/configure ; then - configdirs="${configdirs} $i" - fi -done - -target_configdirs_all="$target_configdirs" -target_configdirs= -for i in ${target_configdirs_all} ; do - j=`echo $i | sed -e s/target-//g` - if test -f ${srcdir}/$j/configure ; then - target_configdirs="${target_configdirs} $i" - fi -done - -# Produce a warning message for the subdirs we can't configure. -# This isn't especially interesting in the Cygnus tree, but in the individual -# FSF releases, it's important to let people know when their machine isn't -# supported by the one or two programs in a package. - -if test -n "${notsupp}" && test -z "${norecursion}" ; then - # If $appdirs is non-empty, at least one of those directories must still - # be configured, or we error out. (E.g., if the gas release supports a - # specified target in some subdirs but not the gas subdir, we shouldn't - # pretend that all is well.) - if test -n "$appdirs" ; then - for dir in $appdirs ; do - if test -r $dir/Makefile.in ; then - if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then - appdirs="" - break - fi - if echo " ${target_configdirs} " | grep " target-${dir} " >/dev/null 2>&1; then - appdirs="" - break - fi - fi - done - if test -n "$appdirs" ; then - echo "*** This configuration is not supported by this package." 1>&2 - exit 1 - fi - fi - # Okay, some application will build, or we don't care to check. Still - # notify of subdirs not getting built. - echo "*** This configuration is not supported in the following subdirectories:" 1>&2 - echo " ${notsupp}" 1>&2 - echo " (Any other directories should still work fine.)" 1>&2 -fi - -case "$host" in - *msdosdjgpp*) - enable_gdbtk=no ;; -esac - -# To find our prefix, in gcc_cv_tool_prefix. -ACX_TOOL_DIRS - -copy_dirs= - -AC_ARG_WITH([build-sysroot], - [ --with-build-sysroot=SYSROOT - use sysroot as the system root during the build], - [if test x"$withval" != x ; then - SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval" - fi], - [SYSROOT_CFLAGS_FOR_TARGET=]) -AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET) - -AC_ARG_WITH([debug-prefix-map], - [ --with-debug-prefix-map='A=B C=D ...' - map A to B, C to D ... in debug information], - [if test x"$withval" != x; then - DEBUG_PREFIX_CFLAGS_FOR_TARGET= - for debug_map in $withval; do - DEBUG_PREFIX_CFLAGS_FOR_TARGET="$DEBUG_PREFIX_CFLAGS_FOR_TARGET -fdebug-prefix-map=$debug_map" - done - fi], - [DEBUG_PREFIX_CFLAGS_FOR_TARGET=]) -AC_SUBST(DEBUG_PREFIX_CFLAGS_FOR_TARGET) - -# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS -# might be empty or "-g". We don't require a C++ compiler, so CXXFLAGS -# might also be empty (or "-g", if a non-GCC C++ compiler is in the path). -# We want to ensure that TARGET libraries (which we know are built with -# gcc) are built with "-O2 -g", so include those options when setting -# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET. -if test "x$CFLAGS_FOR_TARGET" = x; then - CFLAGS_FOR_TARGET=$CFLAGS - case " $CFLAGS " in - *" -O2 "*) ;; - *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;; - esac - case " $CFLAGS " in - *" -g "* | *" -g3 "*) ;; - *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;; - esac -fi -AC_SUBST(CFLAGS_FOR_TARGET) - -if test "x$CXXFLAGS_FOR_TARGET" = x; then - CXXFLAGS_FOR_TARGET=$CXXFLAGS - case " $CXXFLAGS " in - *" -O2 "*) ;; - *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;; - esac - case " $CXXFLAGS " in - *" -g "* | *" -g3 "*) ;; - *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;; - esac -fi -AC_SUBST(CXXFLAGS_FOR_TARGET) - -# Handle --with-headers=XXX. If the value is not "yes", the contents of -# the named directory are copied to $(tooldir)/sys-include. -if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then - if test x${is_cross_compiler} = xno ; then - echo 1>&2 '***' --with-headers is only supported when cross compiling - exit 1 - fi - if test x"${with_headers}" != xyes ; then - x=${gcc_cv_tool_prefix} - copy_dirs="${copy_dirs} ${with_headers} $x/${target_noncanonical}/sys-include" - fi -fi - -# Handle --with-libs=XXX. If the value is not "yes", the contents of -# the name directories are copied to $(tooldir)/lib. Multiple directories -# are permitted. -if test x"${with_libs}" != x && test x"${with_libs}" != xno ; then - if test x${is_cross_compiler} = xno ; then - echo 1>&2 '***' --with-libs is only supported when cross compiling - exit 1 - fi - if test x"${with_libs}" != xyes ; then - # Copy the libraries in reverse order, so that files in the first named - # library override files in subsequent libraries. - x=${gcc_cv_tool_prefix} - for l in ${with_libs}; do - copy_dirs="$l $x/${target_noncanonical}/lib ${copy_dirs}" - done - fi -fi - -# Set with_gnu_as and with_gnu_ld as appropriate. -# -# This is done by determining whether or not the appropriate directory -# is available, and by checking whether or not specific configurations -# have requested that this magic not happen. -# -# The command line options always override the explicit settings in -# configure.in, and the settings in configure.in override this magic. -# -# If the default for a toolchain is to use GNU as and ld, and you don't -# want to do that, then you should use the --without-gnu-as and -# --without-gnu-ld options for the configure script. - -if test x${use_gnu_as} = x && - echo " ${configdirs} " | grep " gas " > /dev/null 2>&1 ; then - with_gnu_as=yes - extra_host_args="$extra_host_args --with-gnu-as" -fi - -if test x${use_gnu_ld} = x && - echo " ${configdirs} " | egrep " (go)?ld " > /dev/null 2>&1 ; then - with_gnu_ld=yes - extra_host_args="$extra_host_args --with-gnu-ld" -fi - -# If using newlib, add --with-newlib to the extra_host_args so that gcc/configure -# can detect this case. - -if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " target-newlib " > /dev/null 2>&1 ; then - with_newlib=yes - extra_host_args="$extra_host_args --with-newlib" -fi - -# Handle ${copy_dirs} -set fnord ${copy_dirs} -shift -while test $# != 0 ; do - if test -f $2/COPIED && test x"`cat $2/COPIED`" = x"$1" ; then - : - else - echo Copying $1 to $2 - - # Use the install script to create the directory and all required - # parent directories. - if test -d $2 ; then - : - else - echo >config.temp - ${srcdir}/install-sh -c -m 644 config.temp $2/COPIED - fi - - # Copy the directory, assuming we have tar. - # FIXME: Should we use B in the second tar? Not all systems support it. - (cd $1; tar -cf - .) | (cd $2; tar -xpf -) - - # It is the responsibility of the user to correctly adjust all - # symlinks. If somebody can figure out how to handle them correctly - # here, feel free to add the code. - - echo $1 > $2/COPIED - fi - shift; shift -done - -# Determine a target-dependent exec_prefix that the installed -# gcc will search in. Keep this list sorted by triplet, with -# the *-*-osname triplets last. -md_exec_prefix= -case "${target}" in - alpha*-*-*vms*) - md_exec_prefix=/gnu/lib/gcc-lib - ;; - i[[34567]]86-pc-msdosdjgpp*) - md_exec_prefix=/dev/env/DJDIR/bin - ;; - i[[34567]]86-*-sco3.2v5*) - if test $with_gnu_as = yes; then - md_exec_prefix=/usr/gnu/bin - else - md_exec_prefix=/usr/ccs/bin/elf - fi - ;; - - mn10300-*-* | \ - powerpc-*-chorusos* | \ - powerpc*-*-eabi* | \ - powerpc*-*-sysv* | \ - powerpc*-*-kaos* | \ - s390x-ibm-tpf*) - md_exec_prefix=/usr/ccs/bin - ;; - sparc64-*-elf*) - ;; - v850*-*-*) - md_exec_prefix=/usr/ccs/bin - ;; - xtensa*-*-elf*) - ;; - - *-*-beos* | \ - *-*-elf* | \ - *-*-hpux* | \ - *-*-netware* | \ - *-*-nto-qnx* | \ - *-*-rtems* | \ - *-*-solaris2* | \ - *-*-sysv[[45]]* | \ - *-*-vxworks* | \ - *-wrs-windiss) - md_exec_prefix=/usr/ccs/bin - ;; -esac - -extra_arflags_for_target= -extra_nmflags_for_target= -extra_ranlibflags_for_target= -target_makefile_frag=/dev/null -case "${target}" in - mep*-*-*) - target_makefile_frag="config/mt-mep" - ;; - spu-*-*) - target_makefile_frag="config/mt-spu" - ;; - mips*-sde-elf*) - target_makefile_frag="config/mt-sde" - ;; - mipsisa*-*-elfoabi*) - target_makefile_frag="config/mt-mips-elfoabi" - ;; - mips*-*-*linux* | mips*-*-gnu*) - target_makefile_frag="config/mt-mips-gnu" - ;; - *-*-netware*) - target_makefile_frag="config/mt-netware" - ;; - *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) - target_makefile_frag="config/mt-gnu" - ;; - *-*-aix4.[[3456789]]* | *-*-aix[[56789]].*) - # nm and ar from AIX 4.3 and above require -X32_64 flag to all ar and nm - # commands to handle both 32-bit and 64-bit objects. These flags are - # harmless if we're using GNU nm or ar. - extra_arflags_for_target=" -X32_64" - extra_nmflags_for_target=" -B -X32_64" - ;; - *-*-darwin*) - # ranlib from Darwin requires the -c flag to look at common symbols. - extra_ranlibflags_for_target=" -c" - ;; - mips*-*-pe | sh*-*-pe | *arm-wince-pe) - target_makefile_frag="config/mt-wince" - ;; -esac - -alphaieee_frag=/dev/null -case $target in - alpha*-*-*) - # This just makes sure to use the -mieee option to build target libs. - # This should probably be set individually by each library. - alphaieee_frag="config/mt-alphaieee" - ;; -esac - -# If --enable-target-optspace always use -Os instead of -O2 to build -# the target libraries, similarly if it is not specified, use -Os -# on selected platforms. -ospace_frag=/dev/null -case "${enable_target_optspace}:${target}" in - yes:*) - ospace_frag="config/mt-ospace" - ;; - :d30v-*) - ospace_frag="config/mt-d30v" - ;; - :m32r-* | :d10v-* | :fr30-*) - ospace_frag="config/mt-ospace" - ;; - no:* | :*) - ;; - *) - echo "*** bad value \"${enable_target_optspace}\" for --enable-target-optspace flag; ignored" 1>&2 - ;; -esac - -# Default to using --with-stabs for certain targets. -if test x${with_stabs} = x ; then - case "${target}" in - mips*-*-irix[[56]]*) - ;; - mips*-*-* | alpha*-*-osf*) - with_stabs=yes; - extra_host_args="${extra_host_args} --with-stabs" - ;; - esac -fi - -# hpux11 in 64bit mode has libraries in a weird place. Arrange to find -# them automatically. -case "${host}" in - hppa*64*-*-hpux11*) - extra_host_args="$extra_host_args -x-libraries=/usr/lib/pa20_64 -x-includes=/usr/X11R6/include" - ;; -esac - -# Some systems (e.g., one of the i386-aix systems the gas testers are -# using) don't handle "\$" correctly, so don't use it here. -tooldir='${exec_prefix}'/${target_noncanonical} -build_tooldir=${tooldir} - -# Create a .gdbinit file which runs the one in srcdir -# and tells GDB to look there for source files. - -if test -r ${srcdir}/.gdbinit ; then - case ${srcdir} in - .) ;; - *) cat > ./.gdbinit < conftest.c -${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c -if test $? = 0 ; then - if test -s conftest || test -s conftest.exe ; then - we_are_ok=yes - fi -fi -case $we_are_ok in - no) - echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed." - echo 1>&2 "*** You must set the environment variable CC to a working compiler." - rm -f conftest* - exit 1 - ;; -esac -rm -f conftest* - -# The Solaris /usr/ucb/cc compiler does not appear to work. -case "${host}" in - sparc-sun-solaris2*) - CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`" - if test "`type $CCBASE | sed 's/^[[^/]]*//'`" = "/usr/ucb/cc" ; then - could_use= - test -d /opt/SUNWspro/bin && could_use="/opt/SUNWspro/bin" - if test -d /opt/cygnus/bin ; then - if test "$could_use" = "" ; then - could_use="/opt/cygnus/bin" - else - could_use="$could_use or /opt/cygnus/bin" - fi - fi - if test "$could_use" = "" ; then - echo "Warning: compilation may fail because you're using" - echo "/usr/ucb/cc. You should change your PATH or CC " - echo "variable and rerun configure." - else - echo "Warning: compilation may fail because you're using" - echo "/usr/ucb/cc, when you should use the C compiler from" - echo "$could_use. You should change your" - echo "PATH or CC variable and rerun configure." - fi - fi - ;; -esac - -# Decide which environment variable is used to find dynamic libraries. -case "${host}" in - *-*-hpux*) RPATH_ENVVAR=SHLIB_PATH ;; - *-*-darwin* | *-*-rhapsody* ) RPATH_ENVVAR=DYLD_LIBRARY_PATH ;; - *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;; - *) RPATH_ENVVAR=LD_LIBRARY_PATH ;; -esac - -# On systems where the dynamic library environment variable is PATH, -# gcc/ will put dynamic libraries into a subdirectory to avoid adding -# built executables to PATH. -if test "$RPATH_ENVVAR" = PATH; then - GCC_SHLIB_SUBDIR=/shlib -else - GCC_SHLIB_SUBDIR= -fi - -# Record target_configdirs and the configure arguments for target and -# build configuration in Makefile. -target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'` -build_configdirs=`echo "${build_configdirs}" | sed -e 's/build-//g'` - -# Determine whether gdb needs tk/tcl or not. -# Use 'maybe' since enable_gdbtk might be true even if tk isn't available -# and in that case we want gdb to be built without tk. Ugh! -# In fact I believe gdb is the *only* package directly dependent on tk, -# so we should be able to put the 'maybe's in unconditionally and -# leave out the maybe dependencies when enable_gdbtk is false. I'm not -# 100% sure that that's safe though. - -gdb_tk="maybe-all-tcl maybe-all-tk maybe-all-itcl maybe-all-libgui" -case "$enable_gdbtk" in - no) - GDB_TK="" ;; - yes) - GDB_TK="${gdb_tk}" ;; - *) - # Only add the dependency on gdbtk when GDBtk is part of the gdb - # distro. Eventually someone will fix this and move Insight, nee - # gdbtk to a separate directory. - if test -d ${srcdir}/gdb/gdbtk ; then - GDB_TK="${gdb_tk}" - else - GDB_TK="" - fi - ;; -esac -CONFIGURE_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-configure-/g` -INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g` - -# Strip out unwanted targets. - -# While at that, we remove Makefiles if we were started for recursive -# configuration, so that the top-level Makefile reconfigures them, -# like we used to do when configure itself was recursive. - -# Loop over modules. We used to use the "$extrasub" feature from Autoconf -# but now we're fixing up the Makefile ourselves with the additional -# commands passed to AC_CONFIG_FILES. Use separate variables -# extrasub-{build,host,target} not because there is any reason to split -# the substitutions up that way, but only to remain below the limit of -# 99 commands in a script, for HP-UX sed. -# Do not nest @if/@endif pairs, because configure will not warn you at all. - -AC_ARG_ENABLE([bootstrap], -[ --enable-bootstrap enable bootstrapping @<:@yes if native build@:>@],, -enable_bootstrap=default) - -# Issue errors and warnings for invalid/strange bootstrap combinations. -case "$configdirs" in - *gcc*) have_compiler=yes ;; - *) have_compiler=no ;; -esac - -case "$have_compiler:$host:$target:$enable_bootstrap" in - *:*:*:no) ;; - - # Default behavior. Enable bootstrap if we have a compiler - # and we are in a native configuration. - yes:$build:$build:default) - enable_bootstrap=yes ;; - - *:*:*:default) - enable_bootstrap=no ;; - - # We have a compiler and we are in a native configuration, bootstrap is ok - yes:$build:$build:yes) - ;; - - # Other configurations, but we have a compiler. Assume the user knows - # what he's doing. - yes:*:*:yes) - AC_MSG_WARN([trying to bootstrap a cross compiler]) - ;; - - # No compiler: if they passed --enable-bootstrap explicitly, fail - no:*:*:yes) - AC_MSG_ERROR([cannot bootstrap without a compiler]) ;; - - # Fail if wrong command line - *) - AC_MSG_ERROR([invalid option for --enable-bootstrap]) - ;; -esac - -# Adjust the toplevel makefile according to whether bootstrap was selected. -case $enable_bootstrap in - yes) - bootstrap_suffix=bootstrap - BUILD_CONFIG=bootstrap-debug - ;; - no) - bootstrap_suffix=no-bootstrap - BUILD_CONFIG= - ;; -esac - -AC_MSG_CHECKING(for default BUILD_CONFIG) - -AC_ARG_WITH([build-config], - [--with-build-config='NAME NAME2...' - Use config/NAME.mk build configuration], - [case $with_build_config in - yes) with_build_config= ;; - no) with_build_config= BUILD_CONFIG= ;; - esac]) - -if test "x${with_build_config}" != x; then - BUILD_CONFIG=$with_build_config -else - case $BUILD_CONFIG in - bootstrap-debug) - if echo "int f (void) { return 0; }" > conftest.c && - ${CC} -c conftest.c && - mv conftest.o conftest.o.g0 && - ${CC} -c -g conftest.c && - mv conftest.o conftest.o.g && - ${srcdir}/contrib/compare-debug conftest.o.g0 conftest.o.g; then - : - else - BUILD_CONFIG= - fi - rm -f conftest.c conftest.o conftest.o.g0 conftest.o.g - ;; - esac -fi -AC_MSG_RESULT($BUILD_CONFIG) -AC_SUBST(BUILD_CONFIG) - -extrasub_build= -for module in ${build_configdirs} ; do - if test -z "${no_recursion}" \ - && test -f ${build_subdir}/${module}/Makefile; then - echo 1>&2 "*** removing ${build_subdir}/${module}/Makefile to force reconfigure" - rm -f ${build_subdir}/${module}/Makefile - fi - extrasub_build="$extrasub_build -/^@if build-$module\$/d -/^@endif build-$module\$/d -/^@if build-$module-$bootstrap_suffix\$/d -/^@endif build-$module-$bootstrap_suffix\$/d" -done -extrasub_host= -for module in ${configdirs} ; do - if test -z "${no_recursion}"; then - for file in stage*-${module}/Makefile prev-${module}/Makefile ${module}/Makefile; do - if test -f ${file}; then - echo 1>&2 "*** removing ${file} to force reconfigure" - rm -f ${file} - fi - done - fi - extrasub_host="$extrasub_host -/^@if $module\$/d -/^@endif $module\$/d -/^@if $module-$bootstrap_suffix\$/d -/^@endif $module-$bootstrap_suffix\$/d" -done -extrasub_target= -for module in ${target_configdirs} ; do - if test -z "${no_recursion}" \ - && test -f ${target_subdir}/${module}/Makefile; then - echo 1>&2 "*** removing ${target_subdir}/${module}/Makefile to force reconfigure" - rm -f ${target_subdir}/${module}/Makefile - fi - - # We only bootstrap target libraries listed in bootstrap_target_libs. - case $bootstrap_target_libs in - *,target-$module,*) target_bootstrap_suffix=$bootstrap_suffix ;; - *) target_bootstrap_suffix=no-bootstrap ;; - esac - - extrasub_target="$extrasub_target -/^@if target-$module\$/d -/^@endif target-$module\$/d -/^@if target-$module-$target_bootstrap_suffix\$/d -/^@endif target-$module-$target_bootstrap_suffix\$/d" -done - -# Do the final fixup along with target modules. -extrasub_target="$extrasub_target -/^@if /,/^@endif /d" - -# Create the serialization dependencies. This uses a temporary file. - -AC_ARG_ENABLE([serial-configure], -[ --enable-serial-@<:@{host,target,build}-@:>@configure - force sequential configuration of - sub-packages for the host, target or build - machine, or all sub-packages]) - -case ${enable_serial_configure} in - yes) - enable_serial_build_configure=yes - enable_serial_host_configure=yes - enable_serial_target_configure=yes - ;; -esac - -# These force 'configure's to be done one at a time, to avoid problems -# with contention over a shared config.cache. -rm -f serdep.tmp -echo '# serdep.tmp' > serdep.tmp -olditem= -test "x${enable_serial_build_configure}" = xyes && -for item in ${build_configdirs} ; do - case ${olditem} in - "") ;; - *) echo "configure-build-${item}: configure-build-${olditem}" >> serdep.tmp ;; - esac - olditem=${item} -done -olditem= -test "x${enable_serial_host_configure}" = xyes && -for item in ${configdirs} ; do - case ${olditem} in - "") ;; - *) echo "configure-${item}: configure-${olditem}" >> serdep.tmp ;; - esac - olditem=${item} -done -olditem= -test "x${enable_serial_target_configure}" = xyes && -for item in ${target_configdirs} ; do - case ${olditem} in - "") ;; - *) echo "configure-target-${item}: configure-target-${olditem}" >> serdep.tmp ;; - esac - olditem=${item} -done -serialization_dependencies=serdep.tmp -AC_SUBST_FILE(serialization_dependencies) - -# Base args. Strip norecursion, cache-file, srcdir, host, build, -# target, nonopt, and variable assignments. These are the ones we -# might not want to pass down to subconfigures. Also strip -# program-prefix, program-suffix, and program-transform-name, so that -# we can pass down a consistent program-transform-name. -baseargs= -keep_next=no -skip_next=no -eval "set -- $ac_configure_args" -for ac_arg -do - if test X"$skip_next" = X"yes"; then - skip_next=no - continue - fi - if test X"$keep_next" = X"yes"; then - case $ac_arg in - *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - baseargs="$baseargs '$ac_arg'" - keep_next=no - continue - fi - - # Handle separated arguments. Based on the logic generated by - # autoconf 2.59. - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - separate_arg=no - ;; - -*) - separate_arg=yes - ;; - *) - separate_arg=no - ;; - esac - - case "$ac_arg" in - --no*) - continue - ;; - --c* | \ - --sr* | \ - --ho* | \ - --bu* | \ - --t* | \ - --program-* | \ - -cache_file* | \ - -srcdir* | \ - -host* | \ - -build* | \ - -target* | \ - -program-prefix* | \ - -program-suffix* | \ - -program-transform-name* ) - skip_next=$separate_arg - continue - ;; - -*) - # An option. Add it. - case $ac_arg in - *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - baseargs="$baseargs '$ac_arg'" - keep_next=$separate_arg - ;; - *) - # Either a variable assignment, or a nonopt (triplet). Don't - # pass it down; let the Makefile handle this. - continue - ;; - esac -done -# Remove the initial space we just introduced and, as these will be -# expanded by make, quote '$'. -baseargs=`echo "x$baseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'` - -# Add in --program-transform-name, after --program-prefix and -# --program-suffix have been applied to it. Autoconf has already -# doubled dollar signs and backslashes in program_transform_name; we want -# the backslashes un-doubled, and then the entire thing wrapped in single -# quotes, because this will be expanded first by make and then by the shell. -# Also, because we want to override the logic in subdir configure scripts to -# choose program_transform_name, replace any s,x,x, with s,y,y,. -sed -e "s,\\\\\\\\,\\\\,g; s,','\\\\'',g; s/s,x,x,/s,y,y,/" < conftestsed.out -${program_transform_name} -EOF_SED -gcc_transform_name=`cat conftestsed.out` -rm -f conftestsed.out -baseargs="$baseargs --program-transform-name='${gcc_transform_name}'" -if test "$silent" = yes; then - baseargs="$baseargs --silent" -fi -baseargs="$baseargs --disable-option-checking" - -# For the build-side libraries, we just need to pretend we're native, -# and not use the same cache file. Multilibs are neither needed nor -# desired. -build_configargs="--cache-file=../config.cache ${baseargs}" - -# For host modules, accept cache file option, or specification as blank. -case "${cache_file}" in -"") # empty - cache_file_option="" ;; -/* | [[A-Za-z]]:[[\\/]]* ) # absolute path - cache_file_option="--cache-file=${cache_file}" ;; -*) # relative path - cache_file_option="--cache-file=../${cache_file}" ;; -esac - -# Host dirs don't like to share a cache file either, horribly enough. -# This seems to be due to autoconf 2.5x stupidity. -host_configargs="--cache-file=./config.cache ${extra_host_args} ${baseargs}" - -target_configargs=${baseargs} - -# Passing a --with-cross-host argument lets the target libraries know -# whether they are being built with a cross-compiler or being built -# native. However, it would be better to use other mechanisms to make the -# sorts of decisions they want to make on this basis. Please consider -# this option to be deprecated. FIXME. -if test x${is_cross_compiler} = xyes ; then - target_configargs="--with-cross-host=${host_noncanonical} ${target_configargs}" -fi - -# Default to --enable-multilib. -if test x${enable_multilib} = x ; then - target_configargs="--enable-multilib ${target_configargs}" -fi - -# Pass --with-newlib if appropriate. Note that target_configdirs has -# changed from the earlier setting of with_newlib. -if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then - target_configargs="--with-newlib ${target_configargs}" -fi - -# Different target subdirs use different values of certain variables -# (notably CXX). Worse, multilibs use *lots* of different values. -# Worse yet, autoconf 2.5x makes some of these 'precious', meaning that -# it doesn't automatically accept command-line overrides of them. -# This means it's not safe for target subdirs to share a cache file, -# which is disgusting, but there you have it. Hopefully this can be -# fixed in future. It's still worthwhile to use a cache file for each -# directory. I think. - -# Pass the appropriate --build, --host, --target and --cache-file arguments. -# We need to pass --target, as newer autoconf's requires consistency -# for target_alias and gcc doesn't manage it consistently. -target_configargs="--cache-file=./config.cache ${target_configargs}" - -FLAGS_FOR_TARGET= -case " $target_configdirs " in - *" newlib "*) - case " $target_configargs " in - *" --with-newlib "*) - case "$target" in - *-cygwin*) - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/include -isystem $$s/winsup/cygwin/include -isystem $$s/winsup/w32api/include' ;; - esac - - # If we're not building GCC, don't discard standard headers. - if test -d ${srcdir}/gcc; then - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -nostdinc' - - if test "${build}" != "${host}"; then - # On Canadian crosses, CC_FOR_TARGET will have already been set - # by `configure', so we won't have an opportunity to add -Bgcc/ - # to it. This is right: we don't want to search that directory - # for binaries, but we want the header files in there, so add - # them explicitly. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include' - - # Someone might think of using the pre-installed headers on - # Canadian crosses, in case the installed compiler is not fully - # compatible with the compiler being built. In this case, it - # would be better to flag an error than risking having - # incompatible object files being constructed. We can't - # guarantee that an error will be flagged, but let's hope the - # compiler will do it, when presented with incompatible header - # files. - fi - fi - - case "${target}-${is_cross_compiler}" in - i[[3456789]]86-*-linux*-no) - # Here host == target, so we don't need to build gcc, - # so we don't want to discard standard headers. - FLAGS_FOR_TARGET=`echo " $FLAGS_FOR_TARGET " | sed -e 's/ -nostdinc / /'` - ;; - *) - # If we're building newlib, use its generic headers last, but search - # for any libc-related directories first (so make it the last -B - # switch). - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/newlib/ -isystem $$r/$(TARGET_SUBDIR)/newlib/targ-include -isystem $$s/newlib/libc/include' - - # If we're building libgloss, find the startup file, simulator library - # and linker script. - case " $target_configdirs " in - *" libgloss "*) - # Look for startup file, simulator library and maybe linker script. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/libgloss/'"$libgloss_dir" - # Look for libnosys.a in case the target needs it. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/libnosys' - # Most targets have the linker script in the source directory. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$s/libgloss/'"$libgloss_dir" - ;; - esac - ;; - esac - ;; - esac - ;; -esac -case "$target" in -*-mingw*) - # Can't be handled as Cygwin above since Mingw does not use newlib. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup/mingw -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/mingw/include -isystem $$s/winsup/w32api/include' ;; -esac - -# Allow the user to override the flags for -# our build compiler if desired. -if test x"${build}" = x"${host}" ; then - CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}} - CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}} - LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}} -fi - -# On Canadian crosses, we'll be searching the right directories for -# the previously-installed cross compiler, so don't bother to add -# flags for directories within the install tree of the compiler -# being built; programs in there won't even run. -if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then - # Search for pre-installed headers if nothing else fits. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include' -fi - -if test "x${use_gnu_ld}" = x && - echo " ${configdirs} " | grep " ld " > /dev/null ; then - # Arrange for us to find uninstalled linker scripts. - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(HOST_SUBDIR)/ld' -fi - -# Search for other target-specific linker scripts and such. -case "${target}" in - mep*) - FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary" - ;; -esac - -# Makefile fragments. -for frag in host_makefile_frag target_makefile_frag alphaieee_frag ospace_frag; -do - eval fragval=\$$frag - if test $fragval != /dev/null; then - eval $frag=${srcdir}/$fragval - fi -done -AC_SUBST_FILE(host_makefile_frag) -AC_SUBST_FILE(target_makefile_frag) -AC_SUBST_FILE(alphaieee_frag) -AC_SUBST_FILE(ospace_frag) - -# Miscellanea: directories, flags, etc. -AC_SUBST(RPATH_ENVVAR) -AC_SUBST(GCC_SHLIB_SUBDIR) -AC_SUBST(tooldir) -AC_SUBST(build_tooldir) -AC_SUBST(CONFIGURE_GDB_TK) -AC_SUBST(GDB_TK) -AC_SUBST(INSTALL_GDB_TK) - -# Build module lists & subconfigure args. -AC_SUBST(build_configargs) -AC_SUBST(build_configdirs) - -# Host module lists & subconfigure args. -AC_SUBST(host_configargs) -AC_SUBST(configdirs) - -# Target module lists & subconfigure args. -AC_SUBST(target_configargs) - - -# Build tools. -AC_SUBST(AR_FOR_BUILD) -AC_SUBST(AS_FOR_BUILD) -AC_SUBST(CC_FOR_BUILD) -AC_SUBST(CFLAGS_FOR_BUILD) -AC_SUBST(CXXFLAGS_FOR_BUILD) -AC_SUBST(CXX_FOR_BUILD) -AC_SUBST(DLLTOOL_FOR_BUILD) -AC_SUBST(GCJ_FOR_BUILD) -AC_SUBST(GFORTRAN_FOR_BUILD) -AC_SUBST(LDFLAGS_FOR_BUILD) -AC_SUBST(LD_FOR_BUILD) -AC_SUBST(NM_FOR_BUILD) -AC_SUBST(RANLIB_FOR_BUILD) -AC_SUBST(WINDMC_FOR_BUILD) -AC_SUBST(WINDRES_FOR_BUILD) -AC_SUBST(config_shell) - -# Generate default definitions for YACC, M4, LEX and other programs that run -# on the build machine. These are used if the Makefile can't locate these -# programs in objdir. -MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing - -AC_CHECK_PROGS([YACC], ['bison -y' byacc yacc], [$MISSING bison -y]) -case " $build_configdirs " in - *" bison "*) YACC='$$r/$(BUILD_SUBDIR)/bison/tests/bison -y' ;; - *" byacc "*) YACC='$$r/$(BUILD_SUBDIR)/byacc/byacc' ;; -esac - -AC_CHECK_PROGS([BISON], [bison], [$MISSING bison]) -case " $build_configdirs " in - *" bison "*) BISON='$$r/$(BUILD_SUBDIR)/bison/tests/bison' ;; -esac - -AC_CHECK_PROGS([M4], [gm4 gnum4 m4], [$MISSING m4]) -case " $build_configdirs " in - *" m4 "*) M4='$$r/$(BUILD_SUBDIR)/m4/m4' ;; -esac - -AC_CHECK_PROGS([LEX], [flex lex], [$MISSING flex]) -case " $build_configdirs " in - *" flex "*) LEX='$$r/$(BUILD_SUBDIR)/flex/flex' ;; - *" lex "*) LEX='$$r/$(BUILD_SUBDIR)/lex/lex' ;; -esac - -AC_CHECK_PROGS([FLEX], [flex], [$MISSING flex]) -case " $build_configdirs " in - *" flex "*) FLEX='$$r/$(BUILD_SUBDIR)/flex/flex' ;; -esac - -AC_CHECK_PROGS([MAKEINFO], makeinfo, [$MISSING makeinfo]) -case " $build_configdirs " in - *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;; - *) -changequote(,) - # For an installed makeinfo, we require it to be from texinfo 4.7 or - # higher, else we use the "missing" dummy. - if ${MAKEINFO} --version \ - | egrep 'texinfo[^0-9]*(4\.([7-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then - : - else - MAKEINFO="$MISSING makeinfo" - fi - ;; -changequote([,]) -esac - -# FIXME: expect and dejagnu may become build tools? - -AC_CHECK_PROGS(EXPECT, expect, expect) -case " $configdirs " in - *" expect "*) - test $host = $build && EXPECT='$$r/$(HOST_SUBDIR)/expect/expect' - ;; -esac - -AC_CHECK_PROGS(RUNTEST, runtest, runtest) -case " $configdirs " in - *" dejagnu "*) - test $host = $build && RUNTEST='$$s/$(HOST_SUBDIR)/dejagnu/runtest' - ;; -esac - - -# Host tools. -NCN_STRICT_CHECK_TOOLS(AR, ar) -NCN_STRICT_CHECK_TOOLS(AS, as) -NCN_STRICT_CHECK_TOOLS(DLLTOOL, dlltool) -NCN_STRICT_CHECK_TOOLS(LD, ld) -NCN_STRICT_CHECK_TOOLS(LIPO, lipo) -NCN_STRICT_CHECK_TOOLS(NM, nm) -NCN_STRICT_CHECK_TOOLS(RANLIB, ranlib, :) -NCN_STRICT_CHECK_TOOLS(STRIP, strip, :) -NCN_STRICT_CHECK_TOOLS(WINDRES, windres) -NCN_STRICT_CHECK_TOOLS(WINDMC, windmc) -NCN_STRICT_CHECK_TOOLS(OBJCOPY, objcopy) -NCN_STRICT_CHECK_TOOLS(OBJDUMP, objdump) -AC_SUBST(CC) -AC_SUBST(CXX) -AC_SUBST(CFLAGS) -AC_SUBST(CXXFLAGS) - -# Target tools. -AC_ARG_WITH([build-time-tools], - [ --with-build-time-tools=PATH - use given path to find target tools during the build], - [case x"$withval" in - x/*) ;; - *) - with_build_time_tools= - AC_MSG_WARN([argument to --with-build-time-tools must be an absolute path]) - ;; - esac], - [with_build_time_tools=]) - -NCN_STRICT_CHECK_TARGET_TOOLS(CC_FOR_TARGET, cc gcc) -NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TARGET, c++ g++ cxx gxx) -NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET}) -NCN_STRICT_CHECK_TARGET_TOOLS(GCJ_FOR_TARGET, gcj) -NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran) - -ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar) -ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as) -ACX_CHECK_INSTALLED_TARGET_TOOL(DLLTOOL_FOR_TARGET, dlltool) -ACX_CHECK_INSTALLED_TARGET_TOOL(LD_FOR_TARGET, ld) -ACX_CHECK_INSTALLED_TARGET_TOOL(LIPO_FOR_TARGET, lipo) -ACX_CHECK_INSTALLED_TARGET_TOOL(NM_FOR_TARGET, nm) -ACX_CHECK_INSTALLED_TARGET_TOOL(OBJDUMP_FOR_TARGET, objdump) -ACX_CHECK_INSTALLED_TARGET_TOOL(RANLIB_FOR_TARGET, ranlib, :) -ACX_CHECK_INSTALLED_TARGET_TOOL(STRIP_FOR_TARGET, strip) -ACX_CHECK_INSTALLED_TARGET_TOOL(WINDRES_FOR_TARGET, windres) -ACX_CHECK_INSTALLED_TARGET_TOOL(WINDMC_FOR_TARGET, windmc) - -RAW_CXX_FOR_TARGET="$CXX_FOR_TARGET" - -GCC_TARGET_TOOL(ar, AR_FOR_TARGET, AR, [binutils/ar]) -GCC_TARGET_TOOL(as, AS_FOR_TARGET, AS, [gas/as-new]) -GCC_TARGET_TOOL(cc, CC_FOR_TARGET, CC, [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/]) -GCC_TARGET_TOOL(c++, CXX_FOR_TARGET, CXX, - [gcc/g++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ `test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs], - c++) -GCC_TARGET_TOOL(c++ for libstdc++, RAW_CXX_FOR_TARGET, CXX, - [gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs], - c++) -GCC_TARGET_TOOL(dlltool, DLLTOOL_FOR_TARGET, DLLTOOL, [binutils/dlltool]) -GCC_TARGET_TOOL(gcc, GCC_FOR_TARGET, , [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/]) -GCC_TARGET_TOOL(gcj, GCJ_FOR_TARGET, GCJ, - [gcc/gcj -B$$r/$(HOST_SUBDIR)/gcc/], java) -GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN, - [gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran) -GCC_TARGET_TOOL(ld, LD_FOR_TARGET, LD, [ld/ld-new]) -GCC_TARGET_TOOL(lipo, LIPO_FOR_TARGET, LIPO) -GCC_TARGET_TOOL(nm, NM_FOR_TARGET, NM, [binutils/nm-new]) -GCC_TARGET_TOOL(objdump, OBJDUMP_FOR_TARGET, OBJDUMP, [binutils/objdump]) -GCC_TARGET_TOOL(ranlib, RANLIB_FOR_TARGET, RANLIB, [binutils/ranlib]) -GCC_TARGET_TOOL(strip, STRIP_FOR_TARGET, STRIP, [binutils/strip]) -GCC_TARGET_TOOL(windres, WINDRES_FOR_TARGET, WINDRES, [binutils/windres]) -GCC_TARGET_TOOL(windmc, WINDMC_FOR_TARGET, WINDMC, [binutils/windmc]) - -AC_SUBST(FLAGS_FOR_TARGET) -AC_SUBST(RAW_CXX_FOR_TARGET) - -# Certain tools may need extra flags. -AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target} -RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${extra_ranlibflags_for_target} -NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target} - -# When building target libraries, except in a Canadian cross, we use -# the same toolchain as the compiler we just built. -COMPILER_AS_FOR_TARGET='$(AS_FOR_TARGET)' -COMPILER_LD_FOR_TARGET='$(LD_FOR_TARGET)' -COMPILER_NM_FOR_TARGET='$(NM_FOR_TARGET)' -if test $host = $build; then - case " $configdirs " in - *" gcc "*) - COMPILER_AS_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/as' - COMPILER_LD_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/collect-ld' - COMPILER_NM_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/nm'${extra_nmflags_for_target} - ;; - esac -fi - -AC_SUBST(COMPILER_AS_FOR_TARGET) -AC_SUBST(COMPILER_LD_FOR_TARGET) -AC_SUBST(COMPILER_NM_FOR_TARGET) - -AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) -AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) -AC_MSG_RESULT($USE_MAINTAINER_MODE) -AC_SUBST(MAINTAINER_MODE_TRUE) -AC_SUBST(MAINTAINER_MODE_FALSE) -if test "$USE_MAINTAINER_MODE" = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi -MAINT=$MAINTAINER_MODE_TRUE -AC_SUBST(MAINT)dnl - -# --------------------- -# GCC bootstrap support -# --------------------- - -# Stage specific cflags for build. -stage1_cflags="-g" -case $build in - vax-*-*) - case ${GCC} in - yes) stage1_cflags="-g -Wa,-J" ;; - *) stage1_cflags="-g -J" ;; - esac ;; -esac - -# This is aimed to mimic bootstrap with a non-GCC compiler to catch problems. -if test "$GCC" = yes -a "$ENABLE_BUILD_WITH_CXX" != yes; then - saved_CFLAGS="$CFLAGS" - - # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it. - CFLAGS="$CFLAGS -fkeep-inline-functions" - AC_MSG_CHECKING([whether -fkeep-inline-functions is supported]) - AC_TRY_COMPILE([ -#if (__GNUC__ < 3) \ - || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3 \ - || (__GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ < 1))) -#error http://gcc.gnu.org/PR29382 -#endif - ],, - [AC_MSG_RESULT([yes]); stage1_cflags="$stage1_cflags -fkeep-inline-functions"], - [AC_MSG_RESULT([no])]) - - CFLAGS="$saved_CFLAGS" -fi - -AC_SUBST(stage1_cflags) - -# Enable --enable-checking in stage1 of the compiler. -AC_ARG_ENABLE(stage1-checking, -[ --enable-stage1-checking@<:@=all@:>@ choose additional checking for stage1 - of the compiler], -[stage1_checking=--enable-checking=${enable_stage1_checking}], -[if test "x$enable_checking" = xno || test "x$enable_checking" = x; then - stage1_checking=--enable-checking=yes,types -else - stage1_checking=--enable-checking=$enable_checking,types -fi]) -AC_SUBST(stage1_checking) - -# Enable -Werror in bootstrap stage2 and later. -AC_ARG_ENABLE(werror, -[ --enable-werror enable -Werror in bootstrap stage2 and later], [], -[if test -d ${srcdir}/gcc && test x"`cat $srcdir/gcc/DEV-PHASE`" = xexperimental; then - enable_werror=yes -else - enable_werror=no -fi]) -case ${enable_werror} in - yes) stage2_werror_flag="--enable-werror-always" ;; - *) stage2_werror_flag="" ;; -esac -AC_SUBST(stage2_werror_flag) - -# Specify what files to not compare during bootstrap. - -compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*" -case "$target" in - hppa*64*-*-hpux*) ;; - hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/*" ;; -esac -AC_SUBST(compare_exclusions) - -AC_CONFIG_FILES([Makefile], - [sed "$extrasub_build" Makefile | - sed "$extrasub_host" | - sed "$extrasub_target" > mf$$ - mv -f mf$$ Makefile], - [extrasub_build="$extrasub_build" - extrasub_host="$extrasub_host" - extrasub_target="$extrasub_target"]) -AC_OUTPUT diff --git a/contrib/gdb-7/gdb/COPYING b/contrib/gdb-7/gdb/COPYING index 07b6944fef..94a9ed024d 100644 --- a/contrib/gdb-7/gdb/COPYING +++ b/contrib/gdb-7/gdb/COPYING @@ -1,286 +1,626 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of this License. - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it @@ -288,15 +628,15 @@ free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least +state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + Copyright (C) - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -305,38 +645,30 @@ the "copyright" line and a pointer to where the full notice is found. 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, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA - + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/contrib/gdb-7/gdb/Makefile.in b/contrib/gdb-7/gdb/Makefile.in deleted file mode 100644 index 7d53205aeb..0000000000 --- a/contrib/gdb-7/gdb/Makefile.in +++ /dev/null @@ -1,2037 +0,0 @@ -# Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation, Inc. - -# This file is part of GDB. - -# 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 . - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(libdir)/$(target_alias) - -datadir = @datadir@ -localedir = @localedir@ -mandir = @mandir@ -man1dir = $(mandir)/man1 -man2dir = $(mandir)/man2 -man3dir = $(mandir)/man3 -man4dir = $(mandir)/man4 -man5dir = $(mandir)/man5 -man6dir = $(mandir)/man6 -man7dir = $(mandir)/man7 -man8dir = $(mandir)/man8 -man9dir = $(mandir)/man9 -infodir = @infodir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -htmldir = @htmldir@ -pdfdir = @pdfdir@ -includedir = @includedir@ - -# This can be referenced by `LIBINTL' as computed by -# ZW_GNU_GETTEXT_SISTER_DIR. -top_builddir = . - -SHELL = @SHELL@ -EXEEXT = @EXEEXT@ - -AWK = @AWK@ -LN_S = @LN_S@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -DESTDIR = - -AR = @AR@ -AR_FLAGS = qv -RANLIB = @RANLIB@ -DLLTOOL = @DLLTOOL@ -WINDRES = @WINDRES@ -MIG = @MIG@ - -XGETTEXT = @XGETTEXT@ -GMSGFMT = @GMSGFMT@ -MSGMERGE = msgmerge - -PACKAGE = @PACKAGE@ -CATALOGS = @CATALOGS@ - -# If you are compiling with GCC, make sure that either 1) You have the -# fixed include files where GCC can reach them, or 2) You use the -# -traditional flag. Otherwise the ioctl calls in inflow.c -# will be incorrectly compiled. The "fixincludes" script in the gcc -# distribution will fix your include files up. -CC=@CC@ - -# Dependency tracking information. -DEPMODE = @CCDEPMODE@ -DEPDIR = @DEPDIR@ -depcomp = $(SHELL) $(srcdir)/../depcomp - -# Note that these are overridden by GNU make-specific code below if -# GNU make is used. The overrides implement dependency tracking. -COMPILE.pre = $(CC) -COMPILE.post = -c -o $@ -COMPILE = $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post) -POSTCOMPILE = @true - -# Directory containing source files. -srcdir = @srcdir@ -VPATH = @srcdir@ - -YACC=@YACC@ - -# This is used to rebuild ada-lex.c from ada-lex.l. If the program is -# not defined, but ada-lex.c is present, compilation will continue, -# possibly with a warning. -FLEX = flex - -YLWRAP = $(srcdir)/../ylwrap - -# where to find makeinfo, preferably one designed for texinfo-2 -MAKEINFO=makeinfo - -MAKEHTML = $(MAKEINFO) --html -MAKEHTMLFLAGS = - -# Set this up with gcc if you have gnu ld and the loader will print out -# line numbers for undefined references. -#CC_LD=gcc -static -CC_LD=$(CC) - -# Where is our "include" directory? Typically $(srcdir)/../include. -# This is essentially the header file directory for the library -# routines in libiberty. -INCLUDE_DIR = $(srcdir)/../include -INCLUDE_CFLAGS = -I$(INCLUDE_DIR) - -# Where is the "-liberty" library? Typically in ../libiberty. -LIBIBERTY = ../libiberty/libiberty.a - -# Where is the BFD library? Typically in ../bfd. -BFD_DIR = ../bfd -BFD = $(BFD_DIR)/libbfd.a -BFD_SRC = $(srcdir)/$(BFD_DIR) -BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC) - -# Where is the decnumber library? Typically in ../libdecnumber. -LIBDECNUMBER_DIR = ../libdecnumber -LIBDECNUMBER = $(LIBDECNUMBER_DIR)/libdecnumber.a -LIBDECNUMBER_SRC = $(srcdir)/$(LIBDECNUMBER_DIR) -LIBDECNUMBER_CFLAGS = -I$(LIBDECNUMBER_DIR) -I$(LIBDECNUMBER_SRC) - -# Where is the READLINE library? Typically in ../readline. -READLINE_DIR = ../readline -READLINE_SRC = $(srcdir)/$(READLINE_DIR) -READLINE = @READLINE@ -READLINE_DEPS = @READLINE_DEPS@ -READLINE_CFLAGS = @READLINE_CFLAGS@ - -# Where is expat? This will be empty if expat was not available. -LIBEXPAT = @LIBEXPAT@ - -WARN_CFLAGS = @WARN_CFLAGS@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -GDB_WARN_CFLAGS = $(WARN_CFLAGS) -GDB_WERROR_CFLAGS = $(WERROR_CFLAGS) - -GDB_WARN_CFLAGS_NO_FORMAT = `echo " $(GDB_WARN_CFLAGS) " | sed "s/ -Wformat-nonliteral / /g"` - -# Where is the INTL library? Typically in ../intl. -INTL = @LIBINTL@ -INTL_DEPS = @LIBINTL_DEP@ -INTL_CFLAGS = @INCINTL@ - -# Did the user give us a --with-sysroot option? -TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@ -TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@ - -# Did the user give us a --with-gdb-datadir option? -GDB_DATADIR = @GDB_DATADIR@ - -# Helper code from gnulib. -LIBGNU = gnulib/libgnu.a -INCGNU = -I$(srcdir)/gnulib -Ignulib - -# Generated headers in the gnulib directory. These must be listed -# so that they are generated before other files are compiled. -GNULIB_H = gnulib/string.h @GNULIB_STDINT_H@ - -# -# CLI sub directory definitons -# -SUBDIR_CLI_OBS = \ - cli-dump.o \ - cli-decode.o cli-script.o cli-cmds.o cli-setshow.o \ - cli-logging.o \ - cli-interp.o -SUBDIR_CLI_SRCS = \ - cli/cli-dump.c \ - cli/cli-decode.c cli/cli-script.c cli/cli-cmds.c cli/cli-setshow.c \ - cli/cli-logging.c \ - cli/cli-interp.c -SUBDIR_CLI_DEPS = -SUBDIR_CLI_LDFLAGS= -SUBDIR_CLI_CFLAGS= - -# -# MI sub directory definitons -# -SUBDIR_MI_OBS = \ - mi-out.o mi-console.o \ - mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \ - mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o \ - mi-interp.o \ - mi-main.o mi-parse.o mi-getopt.o mi-common.o -SUBDIR_MI_SRCS = \ - mi/mi-out.c mi/mi-console.c \ - mi/mi-cmds.c mi/mi-cmd-env.c \ - mi/mi-cmd-var.c mi/mi-cmd-break.c mi/mi-cmd-stack.c \ - mi/mi-cmd-file.c mi/mi-cmd-disas.c mi/mi-symbol-cmds.c \ - mi/mi-cmd-target.c mi/mi-interp.c \ - mi/mi-main.c mi/mi-parse.c mi/mi-getopt.c mi/mi-common.c -SUBDIR_MI_DEPS = -SUBDIR_MI_LDFLAGS= -SUBDIR_MI_CFLAGS= \ - -DMI_OUT=1 - -# -# TUI sub directory definitions -# - -# Name of the TUI program -TUI=gdbtui - -SUBDIR_TUI_OBS = \ - tui-command.o \ - tui-data.o \ - tui-disasm.o \ - tui-file.o tui.o \ - tui-hooks.o \ - tui-interp.o \ - tui-io.o \ - tui-layout.o \ - tui-out.o \ - tui-regs.o \ - tui-source.o \ - tui-stack.o \ - tui-win.o \ - tui-windata.o \ - tui-wingeneral.o \ - tui-winsource.o -SUBDIR_TUI_SRCS = \ - tui/tui-command.c \ - tui/tui-data.c \ - tui/tui-disasm.c \ - tui/tui-file.c \ - tui/tui-hooks.c \ - tui/tui-interp.c \ - tui/tui-io.c \ - tui/tui-layout.c \ - tui/tui-out.c \ - tui/tui-regs.c \ - tui/tui-source.c \ - tui/tui-stack.c \ - tui/tui-win.c \ - tui/tui-windata.c \ - tui/tui-wingeneral.c \ - tui/tui-winsource.c \ - tui/tui.c -SUBDIR_TUI_DEPS = -SUBDIR_TUI_LDFLAGS= -SUBDIR_TUI_CFLAGS= \ - -DTUI=1 - -# -# python sub directory definitons -# -SUBDIR_PYTHON_OBS = \ - python.o \ - py-cmd.o \ - py-frame.o \ - py-function.o \ - py-objfile.o \ - py-prettyprint.o \ - py-type.o \ - py-utils.o \ - py-value.o -SUBDIR_PYTHON_SRCS = \ - python/python.c \ - python/py-cmd.c \ - python/py-frame.c \ - python/py-function.c \ - python/py-objfile.c \ - python/py-prettyprint.c \ - python/py-type.c \ - python/py-utils.c \ - python/py-value.c -SUBDIR_PYTHON_DEPS = -SUBDIR_PYTHON_LDFLAGS= -SUBDIR_PYTHON_CFLAGS= - - -# Opcodes currently live in one of two places. Either they are in the -# opcode library, typically ../opcodes, or they are in a header file -# in INCLUDE_DIR. -# Where is the "-lopcodes" library, with (some of) the opcode tables and -# disassemblers? -OPCODES_DIR = ../opcodes -OPCODES_SRC = $(srcdir)/$(OPCODES_DIR) -OPCODES = $(OPCODES_DIR)/libopcodes.a -# Where are the other opcode tables which only have header file -# versions? -OP_INCLUDE = $(INCLUDE_DIR)/opcode -OPCODES_CFLAGS = -I$(OP_INCLUDE) - -# The simulator is usually nonexistent; targets that include one -# should set this to list all the .o or .a files to be linked in. -SIM = @SIM@ - -WIN32LIBS = @WIN32LIBS@ - -# Tcl et al cflags and libraries -TCL = @TCL_LIBRARY@ -TCL_CFLAGS = @TCL_INCLUDE@ -GDBTKLIBS = @GDBTKLIBS@ -# Extra flags that the GDBTK files need: -GDBTK_CFLAGS = @GDBTK_CFLAGS@ - -TK = @TK_LIBRARY@ -TK_CFLAGS = @TK_INCLUDE@ - -X11_CFLAGS = @TK_XINCLUDES@ -X11_LDFLAGS = -X11_LIBS = - -WIN32LDAPP = @WIN32LDAPP@ - -LIBGUI = @LIBGUI@ -GUI_CFLAGS_X = @GUI_CFLAGS_X@ -IDE_CFLAGS=$(GUI_CFLAGS_X) $(IDE_CFLAGS_X) - -ALL_TCL_CFLAGS = $(TCL_CFLAGS) $(TK_CFLAGS) - -# The version of gdbtk we're building. This should be kept -# in sync with GDBTK_VERSION and friends in gdbtk.h. -GDBTK_VERSION = 1.0 -GDBTK_LIBRARY = $(datadir)/insight$(GDBTK_VERSION) - -# Gdbtk requires an absolute path to the source directory or -# the testsuite won't run properly. -GDBTK_SRC_DIR = @GDBTK_SRC_DIR@ - -SUBDIR_GDBTK_OBS = \ - gdbtk.o gdbtk-bp.o gdbtk-cmds.o gdbtk-hooks.o gdbtk-interp.o \ - gdbtk-register.o gdbtk-stack.o gdbtk-varobj.o gdbtk-wrapper.o -SUBDIR_GDBTK_SRCS = \ - gdbtk/generic/gdbtk.c gdbtk/generic/gdbtk-bp.c \ - gdbtk/generic/gdbtk-cmds.c gdbtk/generic/gdbtk-hooks.c \ - gdbtk/generic/gdbtk-interp.c \ - gdbtk/generic/gdbtk-register.c gdbtk/generic/gdbtk-stack.c \ - gdbtk/generic/gdbtk-varobj.c gdbtk/generic/gdbtk-wrapper.c \ - gdbtk/generic/gdbtk-main.c -SUBDIR_GDBTK_DEPS = $(LIBGUI) $(TCL_DEPS) $(TK_DEPS) -SUBDIR_GDBTK_LDFLAGS= -SUBDIR_GDBTK_CFLAGS= -DGDBTK - -CONFIG_OBS= @CONFIG_OBS@ -CONFIG_SRCS= @CONFIG_SRCS@ -CONFIG_DEPS= @CONFIG_DEPS@ -CONFIG_LDFLAGS = @CONFIG_LDFLAGS@ -ENABLE_CFLAGS= @ENABLE_CFLAGS@ -CONFIG_ALL= @CONFIG_ALL@ -CONFIG_CLEAN= @CONFIG_CLEAN@ -CONFIG_INSTALL = @CONFIG_INSTALL@ -CONFIG_UNINSTALL = @CONFIG_UNINSTALL@ - -# -I. for config files. -# -I$(srcdir) for gdb internal headers. -# -I$(srcdir)/config for more generic config files. - -# It is also possible that you will need to add -I/usr/include/sys if -# your system doesn't have fcntl.h in /usr/include (which is where it -# should be according to Posix). -DEFS = @DEFS@ -GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/common -I$(srcdir)/config \ - -DLOCALEDIR="\"$(localedir)\"" $(DEFS) - -# MH_CFLAGS, if defined, has host-dependent CFLAGS from the config directory. -GLOBAL_CFLAGS = $(MH_CFLAGS) - -PROFILE_CFLAGS = @PROFILE_CFLAGS@ - -# CFLAGS is specifically reserved for setting from the command line -# when running make. I.E. "make CFLAGS=-Wmissing-prototypes". -CFLAGS = @CFLAGS@ - -# Set by configure, for e.g. expat. -INTERNAL_CPPFLAGS = @CPPFLAGS@ - -# Need to pass this to testsuite for "make check". Probably should be -# consistent with top-level Makefile.in and gdb/testsuite/Makefile.in -# so "make check" has the same result no matter where it is run. -CXXFLAGS = -g -O - -# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros. -INTERNAL_CFLAGS_BASE = \ - $(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \ - $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \ - $(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \ - $(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS) -INTERNAL_WARN_CFLAGS = $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS) -INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS) - -# LDFLAGS is specifically reserved for setting from the command line -# when running make. -LDFLAGS = @LDFLAGS@ - -# Profiling options need to go here to work. -# I think it's perfectly reasonable for a user to set -pg in CFLAGS -# and have it work; that's why CFLAGS is here. -# PROFILE_CFLAGS is _not_ included, however, because we use monstartup. -INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_LDFLAGS) - -# If your system is missing alloca(), or, more likely, it's there but -# it doesn't work, then refer to libiberty. - -# Libraries and corresponding dependencies for compiling gdb. -# {X,T}M_CLIBS, defined in *config files, have host- and target-dependent libs. -# LIBIBERTY appears twice on purpose. -# If you have the Cygnus libraries installed, -# you can use 'CLIBS=$(INSTALLED_LIBS)' 'CDEPS=' -INSTALLED_LIBS=-lbfd -lreadline -lopcodes -liberty -ldecnumber \ - $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \ - -lintl -liberty $(LIBGNU) -CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \ - $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \ - $(LIBEXPAT) \ - $(LIBIBERTY) $(WIN32LIBS) $(LIBGNU) -CDEPS = $(XM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) \ - $(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU) - -ADD_FILES = $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES) -ADD_DEPS = $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES) - -DIST=gdb - -LINT=/usr/5bin/lint -LINTFLAGS= $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \ - $(BFD_CFLAGS) $(INCLUDE_CFLAGS) \ - $(INTL_CFLAGS) - -RUNTEST = runtest -RUNTESTFLAGS= - -# XML files to build in to GDB. -XMLFILES = $(srcdir)/features/gdb-target.dtd $(srcdir)/features/xinclude.dtd \ - $(srcdir)/features/library-list.dtd $(srcdir)/features/osdata.dtd - -# This is ser-unix.o for any system which supports a v7/BSD/SYSV/POSIX -# interface to the serial port. Hopefully if get ported to OS/2, VMS, -# etc., then there will be (as part of the C library or perhaps as -# part of libiberty) a POSIX interface. But at least for now the -# host-dependent makefile fragment might need to use something else -# besides ser-unix.o -SER_HARDWIRE = @SER_HARDWIRE@ - -# The `remote' debugging target is supported for most architectures, -# but not all (e.g. 960) -REMOTE_OBS = remote.o dcache.o tracepoint.o ax-general.o ax-gdb.o remote-fileio.o - -# This is remote-sim.o if a simulator is to be linked in. -SIM_OBS = @SIM_OBS@ - -# Target-dependent object files. -TARGET_OBS = @TARGET_OBS@ - -# All target-dependent objects files that require 64-bit CORE_ADDR -# (used with --enable-targets=all --enable-64-bit-bfd). -ALL_64_TARGET_OBS = \ - alphabsd-tdep.o alphafbsd-tdep.o alpha-linux-tdep.o alpha-mdebug-tdep.o \ - alphanbsd-tdep.o alphaobsd-tdep.o alpha-osf1-tdep.o alpha-tdep.o \ - amd64fbsd-tdep.o amd64-darwin-tdep.o amd64-dicos-tdep.o \ - amd64-linux-tdep.o amd64nbsd-tdep.o \ - amd64obsd-tdep.o amd64-sol2-tdep.o amd64-tdep.o amd64-windows-tdep.o \ - ia64-linux-tdep.o ia64-tdep.o \ - mips64obsd-tdep.o \ - sparc64fbsd-tdep.o sparc64-linux-tdep.o sparc64nbsd-tdep.o \ - sparc64obsd-tdep.o sparc64-sol2-tdep.o sparc64-tdep.o - -# All other target-dependent objects files (used with --enable-targets=all). -ALL_TARGET_OBS = \ - armbsd-tdep.o arm-linux-tdep.o armnbsd-tdep.o armobsd-tdep.o \ - arm-tdep.o arm-wince-tdep.o \ - avr-tdep.o \ - cris-tdep.o \ - dicos-tdep.o \ - frv-linux-tdep.o frv-tdep.o \ - h8300-tdep.o \ - hppabsd-tdep.o hppanbsd-tdep.o hppaobsd-tdep.o \ - hppa-hpux-tdep.o hppa-linux-tdep.o hppa-tdep.o \ - i386bsd-tdep.o i386-cygwin-tdep.o i386fbsd-tdep.o i386gnu-tdep.o \ - i386-linux-tdep.o i386nbsd-tdep.o i386-nto-tdep.o i386obsd-tdep.o \ - i386-sol2-tdep.o i386-tdep.o i387-tdep.o \ - i386-dicos-tdep.o i386-darwin-tdep.o \ - iq2000-tdep.o \ - linux-tdep.o \ - lm32-tdep.o \ - m32c-tdep.o \ - m32r-linux-tdep.o m32r-tdep.o \ - m68hc11-tdep.o \ - m68kbsd-tdep.o m68klinux-tdep.o m68k-tdep.o \ - m88k-tdep.o \ - mep-tdep.o \ - mips-irix-tdep.o mips-linux-tdep.o \ - mipsnbsd-tdep.o mips-tdep.o \ - mn10300-linux-tdep.o mn10300-tdep.o \ - moxie-tdep.o \ - mt-tdep.o \ - nto-tdep.o \ - ppc-linux-tdep.o ppcnbsd-tdep.o ppcobsd-tdep.o ppc-sysv-tdep.o \ - rs6000-aix-tdep.o rs6000-tdep.o \ - s390-tdep.o \ - score-tdep.o \ - sh64-tdep.o sh-linux-tdep.o shnbsd-tdep.o sh-tdep.o \ - sparc-linux-tdep.o sparcnbsd-tdep.o sparcobsd-tdep.o \ - sparc-sol2-tdep.o sparc-tdep.o \ - spu-tdep.o spu-multiarch.o solib-spu.o \ - v850-tdep.o \ - vaxnbsd-tdep.o vaxobsd-tdep.o vax-tdep.o \ - xstormy16-tdep.o \ - xtensa-config.o xtensa-tdep.o xtensa-linux-tdep.o \ - glibc-tdep.o \ - bsd-uthread.o \ - nbsd-tdep.o obsd-tdep.o \ - sol2-tdep.o \ - solib-frv.o solib-irix.o solib-svr4.o solib-target.o \ - solib-som.o solib-pa64.o solib-darwin.o \ - dbug-rom.o dink32-rom.o ppcbug-rom.o m32r-rom.o dsrec.o monitor.o \ - remote-m32r-sdi.o \ - xcoffread.o \ - symfile-mem.o \ - corelow.o \ - windows-tdep.o \ - linux-record.o - -# Host-dependent makefile fragment comes in here. -@host_makefile_frag@ -# End of host-dependent makefile fragment - -FLAGS_TO_PASS = \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "datarootdir=$(datarootdir)" \ - "docdir=$(docdir)" \ - "htmldir=$(htmldir)" \ - "pdfdir=$(pdfdir)" \ - "libdir=$(libdir)" \ - "mandir=$(mandir)" \ - "datadir=$(datadir)" \ - "includedir=$(includedir)" \ - "against=$(against)" \ - "DESTDIR=$(DESTDIR)" \ - "AR=$(AR)" \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC=$(CC)" \ - "CFLAGS=$(CFLAGS)" \ - "CXX=$(CXX)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "DLLTOOL=$(DLLTOOL)" \ - "LDFLAGS=$(LDFLAGS)" \ - "RANLIB=$(RANLIB)" \ - "MAKEINFO=$(MAKEINFO)" \ - "MAKEHTML=$(MAKEHTML)" \ - "MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" - -# Flags that we pass when building the testsuite. - -# empty for native, $(target_alias)/ for cross -target_subdir = @target_subdir@ - -CC_FOR_TARGET = ` \ - if [ -f $${rootme}/../gcc/xgcc ] ; then \ - if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \ - else \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \ - fi; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CC); \ - else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ - fi; \ - fi` - -CXX = gcc -CXX_FOR_TARGET = ` \ - if [ -f $${rootme}/../gcc/xgcc ] ; then \ - if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \ - else \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \ - fi; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CXX); \ - else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ - fi; \ - fi` - -# The use of $$(x_FOR_TARGET) reduces the command line length by not -# duplicating the lengthy definition. -TARGET_FLAGS_TO_PASS = \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "against=$(against)" \ - 'CC=$$(CC_FOR_TARGET)' \ - "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ - "CFLAGS=$(CFLAGS)" \ - 'CXX=$$(CXX_FOR_TARGET)' \ - "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "MAKEINFO=$(MAKEINFO)" \ - "MAKEHTML=$(MAKEHTML)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "FORCE_PARALLEL=$(FORCE_PARALLEL)" - -# All source files that go into linking GDB. -# Links made at configuration time should not be specified here, since -# SFILES is used in building the distribution archive. - -SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \ - addrmap.c \ - auxv.c ax-general.c ax-gdb.c \ - bcache.c \ - bfd-target.c \ - block.c blockframe.c breakpoint.c buildsym.c \ - c-exp.y c-lang.c c-typeprint.c c-valprint.c \ - charset.c cli-out.c coffread.c coff-pe-read.c \ - complaints.c completer.c corefile.c \ - cp-abi.c cp-support.c cp-namespace.c cp-valprint.c \ - cp-name-parser.y \ - dbxread.c demangle.c dictionary.c disasm.c doublest.c dummy-frame.c \ - dwarf2expr.c dwarf2loc.c dwarf2read.c dwarf2-frame.c \ - elfread.c environ.c eval.c event-loop.c event-top.c expprint.c \ - f-exp.y f-lang.c f-typeprint.c f-valprint.c findcmd.c findvar.c \ - frame.c frame-base.c frame-unwind.c \ - gdbarch.c arch-utils.c gdbtypes.c gnu-v2-abi.c gnu-v3-abi.c \ - inf-loop.c \ - infcall.c \ - infcmd.c inflow.c infrun.c \ - inline-frame.c \ - interps.c \ - jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c \ - language.c linespec.c \ - m2-exp.y m2-lang.c m2-typeprint.c m2-valprint.c \ - macrotab.c macroexp.c macrocmd.c macroscope.c main.c maint.c \ - mdebugread.c memattr.c mem-break.c minsyms.c mipsread.c memory-map.c \ - objc-exp.y objc-lang.c \ - objfiles.c osabi.c observer.c osdata.c \ - p-exp.y p-lang.c p-typeprint.c p-valprint.c parse.c printcmd.c \ - prologue-value.c \ - regcache.c reggroups.c remote.c remote-fileio.c reverse.c \ - scm-exp.c scm-lang.c scm-valprint.c \ - sentinel-frame.c \ - serial.c ser-base.c ser-unix.c \ - solib.c solib-null.c source.c \ - stabsread.c stack.c std-regs.c symfile.c symfile-mem.c symmisc.c \ - symtab.c \ - target.c target-descriptions.c target-memory.c \ - thread.c top.c tracepoint.c \ - trad-frame.c \ - tramp-frame.c \ - typeprint.c \ - ui-out.c utils.c ui-file.h ui-file.c \ - user-regs.c \ - valarith.c valops.c valprint.c value.c varobj.c vec.c \ - wrapper.c \ - xml-tdesc.c xml-support.c \ - inferior.c gdb_usleep.c \ - record.c \ - jit.c \ - xml-syscall.c \ - -LINTFILES = $(SFILES) $(YYFILES) $(CONFIG_SRCS) init.c - -# Header files that need to have srcdir added. Note that in the cases -# where we use a macro like $(gdbcmd_h), things are carefully arranged -# so that each .h file is listed exactly once (M-x tags-search works -# wrong if TAGS has files twice). Because this is tricky to get -# right, it is probably easiest just to list .h files here directly. - -HFILES_NO_SRCDIR = osf-share/cma_debug_client.h \ -osf-share/HP800/cma_thread_io.h osf-share/cma_sequence.h \ -osf-share/cma_mutex.h osf-share/cma_semaphore_defs.h \ -osf-share/cma_list.h osf-share/cma_handle.h osf-share/cma_stack.h \ -osf-share/cma_util.h osf-share/RIOS/cma_thread_io.h \ -osf-share/cma_errors.h osf-share/cma_tcb_defs.h osf-share/cma_attr.h \ -osf-share/cma_stack_int.h osf-share/cma_init.h \ -osf-share/cma_deb_core.h osf-share/AT386/cma_thread_io.h \ -osf-share/cma_sched.h proc-utils.h arm-tdep.h ax-gdb.h ppcnbsd-tdep.h \ -cli-out.h gdb_expat.h breakpoint.h infcall.h obsd-tdep.h gnu-v2-abi.h \ -exec.h m32r-tdep.h osabi.h gdbcore.h solib-som.h \ -i386bsd-nat.h xml-support.h xml-tdesc.h alphabsd-tdep.h gdb_obstack.h \ -ia64-tdep.h ada-lang.h varobj.h frv-tdep.h nto-tdep.h serial.h \ -c-lang.h frame.h event-loop.h block.h cli/cli-setshow.h \ -cli/cli-decode.h cli/cli-cmds.h cli/cli-dump.h \ -cli/cli-script.h macrotab.h symtab.h version.h gnulib/wchar.in.h \ -gnulib/string.in.h gnulib/str-two-way.h gnulib/extra/link-warning.h \ -gnulib/stdint.in.h remote.h gdb.h sparc-nat.h gdbserver/win32-low.h \ -gdbserver/i387-fp.h gdbserver/server.h gdbserver/terminal.h \ -gdbserver/mem-break.h gdbserver/wincecompat.h gdbserver/target.h \ -gdbserver/linux-low.h gdbserver/gdb_proc_service.h \ -gdbserver/regcache.h gdbthread.h dwarf2-frame.h nbsd-nat.h dcache.h \ -amd64-nat.h s390-tdep.h arm-linux-tdep.h exceptions.h macroscope.h \ -gdbarch.h bsd-uthread.h gdb_thread_db.h gdb_stat.h memory-map.h \ -mdebugread.h m88k-tdep.h stabsread.h hppa-linux-offsets.h linux-fork.h \ -ser-unix.h scm-lang.h inf-ptrace.h terminal.h ui-out.h frame-base.h \ -f-lang.h dwarf2loc.h value.h sparc-tdep.h defs.h target-descriptions.h \ -objfiles.h vec.h disasm.h mips-tdep.h ser-base.h \ -gdb_curses.h bfd-target.h memattr.h inferior.h ax.h dummy-frame.h \ -inflow.h fbsd-nat.h libunwind-frame.h completer.h inf-ttrace.h \ -solib-target.h shnbsd-tdep.h gdb_vfork.h alpha-tdep.h dwarf2expr.h \ -m2-lang.h stack.h charset.h addrmap.h command.h solist.h source.h \ -target.h prologue-value.h cp-abi.h tui/tui-hooks.h tui/tui.h \ -tui/tui-file.h tui/tui-command.h tui/tui-disasm.h tui/tui-wingeneral.h \ -tui/tui-windata.h tui/tui-data.h tui/tui-win.h tui/tui-stack.h \ -tui/tui-winsource.h tui/tui-regs.h tui/tui-io.h tui/tui-layout.h \ -tui/tui-source.h xcoffsolib.h sol2-tdep.h gregset.h sh-tdep.h \ -expression.h score-tdep.h gdb_select.h ser-tcp.h buildsym.h valprint.h \ -call-cmds.h typeprint.h mi/mi-getopt.h mi/mi-parse.h mi/mi-console.h \ -mi/mi-out.h mi/mi-main.h mi/mi-common.h mi/mi-cmds.h linux-nat.h \ -complaints.h gdb_proc_service.h gdb_regex.h xtensa-tdep.h inf-loop.h \ -gdb_wait.h gdb_assert.h solib.h ppc-tdep.h cp-support.h glibc-tdep.h \ -interps.h auxv.h gdbcmd.h tramp-frame.h mipsnbsd-tdep.h \ -amd64-linux-tdep.h linespec.h i387-tdep.h mn10300-tdep.h \ -sparc64-tdep.h monitor.h ppcobsd-tdep.h srec.h solib-pa64.h \ -coff-pe-read.h parser-defs.h gdb_ptrace.h mips-linux-tdep.h \ -m68k-tdep.h spu-tdep.h jv-lang.h environ.h solib-irix.h amd64-tdep.h \ -doublest.h regset.h hppa-tdep.h ppc-linux-tdep.h rs6000-tdep.h \ -gdb_locale.h gdb_dirent.h arch-utils.h trad-frame.h gnu-nat.h \ -language.h nbsd-tdep.h wrapper.h solib-svr4.h \ -macroexp.h ui-file.h regcache.h gdb_string.h tracepoint.h i386-tdep.h \ -inf-child.h p-lang.h event-top.h gdbtypes.h scm-tags.h user-regs.h \ -regformats/regdef.h config/alpha/nm-osf3.h config/i386/nm-i386gnu.h \ -config/i386/nm-fbsd.h config/i386/nm-i386sol2.h config/i386/nm-linux.h \ -config/nm-nto.h config/sparc/nm-sol2.h config/nm-linux.h \ -config/rs6000/nm-rs6000.h top.h bsd-kvm.h gdb-stabs.h reggroups.h \ -annotate.h sim-regno.h dictionary.h dfp.h main.h frame-unwind.h \ -remote-fileio.h i386-linux-tdep.h vax-tdep.h objc-lang.h \ -sentinel-frame.h bcache.h symfile.h windows-tdep.h linux-tdep.h \ -gdb_usleep.h jit.h xml-syscall.h ada-operator.inc - -# Header files that already have srcdir in them, or which are in objdir. - -HFILES_WITH_SRCDIR = ../bfd/bfd.h - - -# GDB "info" files, which should be included in their entirety -INFOFILES = gdb.info* - -REMOTE_EXAMPLES = m68k-stub.c i386-stub.c sparc-stub.c rem-multi.shar - -# {X,T,NAT}DEPFILES are something of a pain in that it's hard to -# default their values the way we do for SER_HARDWIRE; in the future -# maybe much of the stuff now in {X,T,NAT}DEPFILES will go into other -# variables analogous to SER_HARDWIRE which get defaulted in this -# Makefile.in - -DEPFILES = $(TARGET_OBS) $(SER_HARDWIRE) $(NATDEPFILES) \ - $(REMOTE_OBS) $(SIM_OBS) - -SOURCES = $(SFILES) $(ALLDEPFILES) $(YYFILES) $(CONFIG_SRCS) -# Don't include YYFILES (*.c) because we already include *.y in SFILES, -# and it's more useful to see it in the .y file. -TAGFILES_NO_SRCDIR = $(SFILES) $(HFILES_NO_SRCDIR) $(ALLDEPFILES) \ - $(CONFIG_SRCS) -TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR) - -COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \ - version.o \ - annotate.o \ - addrmap.o \ - auxv.o \ - bfd-target.o \ - blockframe.o breakpoint.o findvar.o regcache.o \ - charset.o disasm.o dummy-frame.o dfp.o \ - source.o value.o eval.o valops.o valarith.o valprint.o printcmd.o \ - block.o symtab.o symfile.o symmisc.o linespec.o dictionary.o \ - infcall.o \ - infcmd.o infrun.o \ - expprint.o environ.o stack.o thread.o \ - exceptions.o \ - inf-child.o \ - interps.o \ - main.o \ - macrotab.o macrocmd.o macroexp.o macroscope.o \ - event-loop.o event-top.o inf-loop.o completer.o \ - gdbarch.o arch-utils.o gdbtypes.o osabi.o copying.o \ - memattr.o mem-break.o target.o parse.o language.o buildsym.o \ - findcmd.o \ - std-regs.o \ - signals.o \ - exec.o reverse.o \ - bcache.o objfiles.o observer.o minsyms.o maint.o demangle.o \ - dbxread.o coffread.o coff-pe-read.o \ - dwarf2read.o mipsread.o stabsread.o corefile.o \ - dwarf2expr.o dwarf2loc.o dwarf2-frame.o \ - ada-lang.o c-lang.o f-lang.o objc-lang.o \ - ada-tasks.o \ - ui-out.o cli-out.o \ - varobj.o vec.o wrapper.o \ - jv-lang.o jv-valprint.o jv-typeprint.o \ - m2-lang.o p-lang.o p-typeprint.o p-valprint.o \ - scm-exp.o scm-lang.o scm-valprint.o \ - sentinel-frame.o \ - complaints.o typeprint.o \ - ada-typeprint.o c-typeprint.o f-typeprint.o m2-typeprint.o \ - ada-valprint.o c-valprint.o cp-valprint.o f-valprint.o m2-valprint.o \ - serial.o mdebugread.o top.o utils.o \ - ui-file.o \ - user-regs.o \ - frame.o frame-unwind.o doublest.o \ - frame-base.o \ - inline-frame.o \ - gnu-v2-abi.o gnu-v3-abi.o cp-abi.o cp-support.o \ - cp-namespace.o \ - reggroups.o regset.o \ - trad-frame.o \ - tramp-frame.o \ - solib.o solib-null.o \ - prologue-value.o memory-map.o xml-support.o xml-syscall.o \ - target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o \ - inferior.o osdata.o gdb_usleep.o record.o \ - jit.o - -# Definitions for the syscall's XML files and dir -XML_SYSCALLS_DIR = syscalls/ -XML_SYSCALLS_FILES = gdb-syscalls.dtd \ - ppc-linux.xml ppc64-linux.xml \ - i386-linux.xml amd64-linux.xml - -TSOBS = inflow.o - -SUBDIRS = @subdirs@ -CLEANDIRS = $(SUBDIRS) gnulib - -# For now, shortcut the "configure GDB for fewer languages" stuff. -YYFILES = c-exp.c \ - cp-name-parser.c \ - objc-exp.c \ - ada-lex.c \ - ada-exp.c \ - jv-exp.c \ - f-exp.c m2-exp.c p-exp.c -YYOBJ = c-exp.o \ - cp-name-parser.o \ - objc-exp.o \ - ada-exp.o \ - jv-exp.o \ - f-exp.o m2-exp.o p-exp.o - -# Things which need to be built when making a distribution. - -DISTSTUFF = $(YYFILES) - - -# All generated files which can be included by another file. -generated_files = config.h observer.h observer.inc ada-lex.c \ - $(GNULIB_H) $(NAT_GENERATED_FILES) - -.c.o: - $(COMPILE) $< - $(POSTCOMPILE) - -all: gdb$(EXEEXT) $(CONFIG_ALL) xml-syscall-copy - @$(MAKE) $(FLAGS_TO_PASS) DO=all "DODIRS=`echo $(SUBDIRS) | sed 's/testsuite//'`" subdir_do -.PHONY: all-tui -all-tui: $(TUI)$(EXEEXT) - -# This is needed for running GDB from the build directory -.PHONY: xml-syscall-copy -xml-syscall-copy: - if [ "`cd $(srcdir) && pwd`" != "`pwd`" ] ; then \ - mkdir -p ./$(XML_SYSCALLS_DIR) ; \ - list='$(XML_SYSCALLS_FILES)' ; \ - for file in $$list ; do \ - f=$(srcdir)/$(XML_SYSCALLS_DIR)/$$file ; \ - if test -f $$f ; then \ - $(INSTALL_DATA) $$f \ - ./$(XML_SYSCALLS_DIR) ; \ - fi ; \ - done ; \ - fi ; - -# This target is responsible for properly installing the syscalls' -# XML files in the system. -.PHONY: xml-syscall-install -xml-syscall-install: - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDB_DATADIR)/$(XML_SYSCALLS_DIR) ; \ - list='$(XML_SYSCALLS_FILES)' ; \ - for file in $$list ; do \ - f=$(srcdir)/$(XML_SYSCALLS_DIR)/$$file ; \ - if test -f $$f ; then \ - $(INSTALL_DATA) $$f \ - $(DESTDIR)$(GDB_DATADIR)/$(XML_SYSCALLS_DIR) ; \ - fi ; \ - done ; - -installcheck: - -# The check target can not use subdir_do, because subdir_do does not -# use TARGET_FLAGS_TO_PASS. -check: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check; \ - else true; fi - -# The idea is to parallelize testing of multilibs, for example: -# make -j3 check//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu} -# will run 3 concurrent sessions of check, eventually testing all 10 -# combinations. GNU make is required for the % pattern to work, as is -# a shell that expands alternations within braces. If GNU make is not -# used, this rule will harmlessly fail to match. Used FORCE_PARALLEL to -# prevent serialized checking due to the passed RUNTESTFLAGS. -# FIXME: use config.status --config not --version, when available. -check//%: force - @if [ -f testsuite/config.status ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - target=`echo "$@" | sed 's,//.*,,'`; \ - variant=`echo "$@" | sed 's,^[^/]*//,,'`; \ - vardots=`echo "$$variant" | sed 's,/,.,g'`; \ - testdir=testsuite.$$vardots; \ - if [ ! -f $$testdir/Makefile ] && [ -f testsuite/config.status ]; then \ - configargs=`cd testsuite && ./config.status --version | \ - sed -n -e 's,"$$,,' -e 's,^ *with options ",,p'`; \ - $(SHELL) $(srcdir)/../mkinstalldirs $$testdir && \ - (cd $$testdir && \ - eval $(SHELL) "\"\$$rootsrc/testsuite/configure\" $$configargs" \ - "\"--srcdir=\$$rootsrc/testsuite\"" \ - ); \ - else :; fi && cd $$testdir && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) \ - RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \ - FORCE_PARALLEL=$(if $(FORCE_PARALLEL),1,$(if $(RUNTESTFLAGS),,1)) \ - "$$target"; \ - else true; fi - -info install-info clean-info dvi pdf install-pdf html install-html: force - @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do - -gdb.z:gdb.1 - nroff -man $(srcdir)/gdb.1 | col -b > gdb.t - pack gdb.t ; rm -f gdb.t - mv gdb.t.z gdb.z - -# Traditionally "install" depends on "all". But it may be useful -# not to; for example, if the user has made some trivial change to a -# source file and doesn't care about rebuilding or just wants to save the -# time it takes for make to check that all is up to date. -# install-only is intended to address that need. -install: all install-only - -# The "install-only" target also installs the syscalls' XML files in -# the system. -install-only: $(CONFIG_INSTALL) xml-syscall-install - transformed_name=`t='$(program_transform_name)'; \ - echo gdb | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ - $(INSTALL_PROGRAM) gdb$(EXEEXT) \ - $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(man1dir) ; \ - $(INSTALL_DATA) $(srcdir)/gdb.1 \ - $(DESTDIR)$(man1dir)/$$transformed_name.1 - @$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do -.PHONY: install-tui -install-tui: - transformed_name=`t='$(program_transform_name)'; \ - echo $(TUI) | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=$(TUI) ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ - $(INSTALL_PROGRAM) $(TUI)$(EXEEXT) \ - $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(man1dir) ; \ - $(INSTALL_DATA) $(srcdir)/gdb.1 \ - $(DESTDIR)$(man1dir)/$$transformed_name.1 - - -uninstall: force $(CONFIG_UNINSTALL) - transformed_name=`t='$(program_transform_name)'; \ - echo gdb | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \ - $(DESTDIR)$(man1dir)/$$transformed_name.1 - @$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do -.PHONY: uninstall-tui -uninstall-tui: - transformed_name=`t='$(program_transform_name)'; \ - echo $(TUI) | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=$(TUI) ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \ - $(DESTDIR)$(man1dir)/$$transformed_name.1 - -# The C++ name parser can be built standalone for testing. -test-cp-name-parser.o: cp-name-parser.c - $(COMPILE) -DTEST_CPNAMES cp-name-parser.c - $(POSTCOMPILE) - -test-cp-name-parser$(EXEEXT): test-cp-name-parser.o $(LIBIBERTY) - $(CC_LD) $(INTERNAL_LDFLAGS) -o test-cp-name-parser$(EXEEXT) \ - test-cp-name-parser.o $(LIBIBERTY) - -# We do this by grepping through sources. If that turns out to be too slow, -# maybe we could just require every .o file to have an initialization routine -# of a given name (top.o -> _initialize_top, etc.). -# -# Formatting conventions: The name of the _initialize_* routines must start -# in column zero, and must not be inside #if. -# -# Note that the set of files with init functions might change, or the names -# of the functions might change, so this files needs to depend on all the -# object files that will be linked into gdb. - -# FIXME: There is a problem with this approach - init.c may force -# unnecessary files to be linked in. - -# FIXME: cagney/2002-06-09: gdb/564: gdb/563: Force the order so that -# the first call is to _initialize_gdbtypes (implemented by explicitly -# putting that function's name first in the init.l-tmp file). This is -# a hack to ensure that all the architecture dependant global -# builtin_type_* variables are initialized before anything else -# (per-architecture code is called in the same order that it is -# registered). The ``correct fix'' is to have all the builtin types -# made part of the architecture and initialize them on-demand (using -# gdbarch_data) just like everything else. The catch is that other -# modules still take the address of these builtin types forcing them -# to be variables, sigh! - -# NOTE: cagney/2003-03-18: The sed pattern ``s|^\([^ /]...'' is -# anchored on the first column and excludes the ``/'' character so -# that it doesn't add the $(srcdir) prefix to any file that already -# has an absolute path. It turns out that $(DEC)'s True64 make -# automatically adds the $(srcdir) prefixes when it encounters files -# in sub-directories such as cli/ and mi/. - -# NOTE: cagney/2004-02-08: The ``case "$$fs" in'' eliminates -# duplicates. Files in the gdb/ directory can end up appearing in -# COMMON_OBS (as a .o file) and CONFIG_SRCS (as a .c file). - -INIT_FILES = $(COMMON_OBS) $(TSOBS) $(CONFIG_SRCS) -init.c: $(INIT_FILES) - @echo Making init.c - @rm -f init.c-tmp init.l-tmp - @touch init.c-tmp - @echo gdbtypes > init.l-tmp - @-LANG=C ; export LANG ; \ - LC_ALL=C ; export LC_ALL ; \ - echo $(INIT_FILES) | \ - tr ' ' '\012' | \ - sed \ - -e '/^gdbtypes.[co]$$/d' \ - -e '/^init.[co]$$/d' \ - -e '/xdr_ld.[co]$$/d' \ - -e '/xdr_ptrace.[co]$$/d' \ - -e '/xdr_rdb.[co]$$/d' \ - -e '/udr.[co]$$/d' \ - -e '/udip2soc.[co]$$/d' \ - -e '/udi2go32.[co]$$/d' \ - -e '/version.[co]$$/d' \ - -e '/^[a-z0-9A-Z_]*_[SU].[co]$$/d' \ - -e '/[a-z0-9A-Z_]*-exp.tab.[co]$$/d' \ - -e 's/\.[co]$$/.c/' \ - -e 's,signals\.c,common/signals\.c,' \ - -e 's|^\([^ /][^ ]*\)|$(srcdir)/\1|g' | \ - while read f; do \ - sed -n -e 's/^_initialize_\([a-z_0-9A-Z]*\).*/\1/p' $$f 2>/dev/null; \ - done | \ - while read f; do \ - case " $$fs " in \ - *" $$f "* ) ;; \ - * ) echo $$f ; fs="$$fs $$f";; \ - esac; \ - done >> init.l-tmp - @echo '/* Do not modify this file. */' >>init.c-tmp - @echo '/* It is created automatically by the Makefile. */'>>init.c-tmp - @echo '#include "defs.h" /* For initialize_file_ftype. */' >>init.c-tmp - @echo '#include "call-cmds.h" /* For initialize_all_files. */' >>init.c-tmp - @sed -e 's/\(.*\)/extern initialize_file_ftype _initialize_\1;/' >init.c-tmp - @echo 'void' >>init.c-tmp - @echo 'initialize_all_files (void)' >>init.c-tmp - @echo '{' >>init.c-tmp - @sed -e 's/\(.*\)/ _initialize_\1 ();/' >init.c-tmp - @echo '}' >>init.c-tmp - @rm init.l-tmp - @mv init.c-tmp init.c - -.PRECIOUS: init.c - -# Removing the old gdb first works better if it is running, at least on SunOS. -gdb$(EXEEXT): gdb.o libgdb.a $(ADD_DEPS) $(CDEPS) $(TDEPLIBS) - rm -f gdb$(EXEEXT) - $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \ - -o gdb$(EXEEXT) gdb.o libgdb.a \ - $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES) - -$(TUI)$(EXEEXT): tui-main.o libgdb.a $(ADD_DEPS) $(CDEPS) $(TDEPLIBS) - rm -f $(TUI)$(EXEEXT) - $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \ - -o $(TUI)$(EXEEXT) tui-main.o libgdb.a \ - $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES) - -# Convenience rule to handle recursion. -$(LIBGNU) $(GNULIB_H): all-lib -all-lib: gnulib/Makefile - @$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=gnulib subdir_do -.PHONY: all-lib - -# Create a library of the gdb object files and build GDB by linking -# against that. -# -# init.o is very important. It pulls in the rest of GDB. -LIBGDB_OBS= $(COMMON_OBS) $(TSOBS) $(ADD_FILES) init.o -libgdb.a: $(LIBGDB_OBS) - -rm -f libgdb.a - $(AR) q libgdb.a $(LIBGDB_OBS) - $(RANLIB) libgdb.a - -# This is useful when debugging GDB, because some Unix's don't let you run GDB -# on itself without copying the executable. So "make gdb1" will make -# gdb and put a copy in gdb1, and you can run it with "gdb gdb1". -# Removing gdb1 before the copy is the right thing if gdb1 is open -# in another process. -gdb1$(EXEEXT): gdb$(EXEEXT) - rm -f gdb1$(EXEEXT) - cp gdb$(EXEEXT) gdb1$(EXEEXT) - -# Put the proper machine-specific files first, so M-. on a machine -# specific routine gets the one for the correct machine. (FIXME: those -# files go in twice; we should be removing them from the main list). - -# TAGS depends on all the files that go into it so you can rebuild TAGS -# with `make TAGS' and not have to say `rm TAGS' first. - -GDB_NM_FILE = @GDB_NM_FILE@ -TAGS: $(DEPFILES) $(TAGFILES_NO_SRCDIR) $(TAGFILES_WITH_SRCDIR) - @echo Making TAGS - @etags $(srcdir)/$(GDB_NM_FILE) \ - `(for i in $(DEPFILES) $(TAGFILES_NO_SRCDIR); do \ - echo $(srcdir)/$$i ; \ - done ; for i in $(TAGFILES_WITH_SRCDIR); do \ - echo $$i ; \ - done) | sed -e 's/\.o$$/\.c/'` \ - `find $(srcdir)/config -name '*.h' -print` - -tags: TAGS - -clean mostlyclean: $(CONFIG_CLEAN) - @$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do - rm -f *.o *.a $(ADD_FILES) *~ init.c-tmp init.l-tmp version.c-tmp - rm -f init.c version.c - rm -f gdb$(EXEEXT) core make.log - rm -f gdb[0-9]$(EXEEXT) - rm -f test-cp-name-parser$(EXEEXT) - rm -f xml-builtin.c stamp-xml - rm -f $(DEPDIR)/* - -.PHONY: clean-tui -clean-tui: - rm -f $(TUI)$(EXEEXT) - -# This used to depend on c-exp.c m2-exp.c TAGS -# I believe this is wrong; the makefile standards for distclean just -# describe removing files; the only sort of "re-create a distribution" -# functionality described is if the distributed files are unmodified. -# NB: While GDBSERVER might be configured on native systems, it isn't -# always included in SUBDIRS. Remove the gdbserver files explicitly. -distclean: clean - @$(MAKE) $(FLAGS_TO_PASS) DO=distclean "DODIRS=$(CLEANDIRS)" subdir_do - rm -f gdbserver/config.status gdbserver/config.log - rm -f gdbserver/tm.h gdbserver/xm.h gdbserver/nm.h - rm -f gdbserver/Makefile gdbserver/config.cache - rm -f nm.h config.status config.h stamp-h .gdbinit - rm -f y.output yacc.acts yacc.tmp y.tab.h - rm -f config.log config.cache - rm -f Makefile - rm -rf $(DEPDIR) - -maintainer-clean: local-maintainer-clean do-maintainer-clean distclean -realclean: maintainer-clean - -local-maintainer-clean: - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f c-exp.c \ - cp-name-parser.c \ - ada-lex.c ada-exp.c \ - objc-exp.c \ - jv-exp.tab \ - f-exp.c m2-exp.c p-exp.c - rm -f TAGS $(INFOFILES) - rm -f $(YYFILES) - rm -f nm.h config.status - -do-maintainer-clean: - @$(MAKE) $(FLAGS_TO_PASS) DO=maintainer-clean "DODIRS=$(CLEANDIRS)" \ - subdir_do - -diststuff: $(DISTSTUFF) $(PACKAGE).pot $(CATALOGS) - cd doc; $(MAKE) $(MFLAGS) diststuff - -subdir_do: force - @for i in $(DODIRS); do \ - if [ -f ./$$i/Makefile ] ; then \ - if (cd ./$$i; \ - $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \ - else exit 1 ; fi ; \ - else true ; fi ; \ - done - -Makefile: Makefile.in config.status @frags@ - # Regenerate the Makefile and the tm.h / nm.h links. - CONFIG_FILES="Makefile" \ - CONFIG_COMMANDS= \ - CONFIG_HEADERS= \ - $(SHELL) config.status - -gnulib/Makefile: gnulib/Makefile.in gnulib/Makefile.in config.status @frags@ - CONFIG_FILES="gnulib/Makefile" \ - CONFIG_COMMANDS="depfiles" \ - CONFIG_HEADERS= \ - CONFIG_LINKS= \ - $(SHELL) config.status - -config.h: stamp-h ; @true -stamp-h: $(srcdir)/config.in config.status - CONFIG_HEADERS=config.h:config.in \ - CONFIG_COMMANDS="default depdir" \ - CONFIG_FILES= \ - CONFIG_LINKS= \ - $(SHELL) config.status - -config.status: $(srcdir)/configure configure.tgt configure.host - $(SHELL) config.status --recheck - -ACLOCAL = aclocal -ACLOCAL_AMFLAGS = -I gnulib/m4 -aclocal_m4_deps = \ - configure.ac \ - gnulib/m4/extensions.m4 \ - gnulib/m4/gnulib-common.m4 \ - gnulib/m4/gnulib-comp.m4 \ - gnulib/m4/include_next.m4 \ - gnulib/m4/longlong.m4 \ - gnulib/m4/memchr.m4 \ - gnulib/m4/memcmp.m4 \ - gnulib/m4/memmem.m4 \ - gnulib/m4/onceonly_2_57.m4 \ - gnulib/m4/stdint.m4 \ - gnulib/m4/string_h.m4 \ - gnulib/m4/wchar.m4 \ - ../config/extensions.m4 \ - ../config/lead-dot.m4 \ - ../config/proginstall.m4 \ - ../bfd/bfd.m4 \ - ../config/acinclude.m4 \ - ../config/override.m4 \ - ../config/gettext-sister.m4 \ - ../config/lib-ld.m4 \ - ../config/lib-prefix.m4 \ - ../config/lib-link.m4 \ - ../config/acx.m4 \ - ../config/tcl.m4 \ - ../config/depstand.m4 \ - ../config/lcmessage.m4 \ - ../config/codeset.m4 - -$(srcdir)/aclocal.m4: @MAINTAINER_MODE_TRUE@ $(aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -AUTOCONF = autoconf -configure_deps = $(srcdir)/configure.ac $(srcdir)/aclocal.m4 -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(configure_deps) - cd $(srcdir) && $(AUTOCONF) - -AUTOHEADER = autoheader -$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(configure_deps) - cd $(srcdir) && $(AUTOHEADER) - rm -f stamp-h - touch $@ - -# automatic rebuilding in automake-generated Makefiles requires -# this rule in the toplevel Makefile, which, with GNU make, causes -# the desired updates through the implicit regeneration of the Makefile -# and all of its prerequisites. -am--refresh: - @: - -force: - -# Documentation! -# GDB QUICK REFERENCE (TeX dvi file, CM fonts) -doc/refcard.dvi: - cd doc; $(MAKE) refcard.dvi $(FLAGS_TO_PASS) - -# GDB QUICK REFERENCE (PostScript output, common PS fonts) -doc/refcard.ps: - cd doc; $(MAKE) refcard.ps $(FLAGS_TO_PASS) - -# GDB MANUAL: TeX dvi file -doc/gdb.dvi: - cd doc; $(MAKE) gdb.dvi $(FLAGS_TO_PASS) - -# GDB MANUAL: info file -doc/gdb.info: - cd doc; $(MAKE) gdb.info $(FLAGS_TO_PASS) - -# Make copying.c from COPYING -$(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ $(srcdir)/../COPYING3 $(srcdir)/copying.awk - awk -f $(srcdir)/copying.awk \ - < $(srcdir)/../COPYING3 > $(srcdir)/copying.tmp - mv $(srcdir)/copying.tmp $(srcdir)/copying.c - -version.c: Makefile version.in - rm -f version.c-tmp version.c - echo '#include "version.h"' >> version.c-tmp - echo 'const char version[] = "'"`sed q ${srcdir}/version.in`"'";' >> version.c-tmp - echo 'const char host_name[] = "$(host_alias)";' >> version.c-tmp - echo 'const char target_name[] = "$(target_alias)";' >> version.c-tmp - mv version.c-tmp version.c - -observer.h: observer.sh doc/observer.texi - ${srcdir}/observer.sh h ${srcdir}/doc/observer.texi observer.h - -observer.inc: observer.sh doc/observer.texi - ${srcdir}/observer.sh inc ${srcdir}/doc/observer.texi observer.inc - -lint: $(LINTFILES) - $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \ - `echo $(DEPFILES) $(CONFIG_OBS) | sed 's/\.o /\.c /g'` - -gdb.cxref: $(SFILES) - cxref -I. $(SFILES) >gdb.cxref - -force_update: - -# GNU Make has an annoying habit of putting *all* the Makefile variables -# into the environment, unless you include this target as a circumvention. -# Rumor is that this will be fixed (and this target can be removed) -# in GNU Make 4.0. -.NOEXPORT: - -# GNU Make 3.63 has a different problem: it keeps tacking command line -# overrides onto the definition of $(MAKE). This variable setting -# will remove them. -MAKEOVERRIDES= - -ALLDEPFILES = \ - aix-thread.c \ - alpha-nat.c alphabsd-nat.c alpha-linux-nat.c \ - alpha-tdep.c alpha-mdebug-tdep.c \ - alpha-linux-tdep.c alpha-osf1-tdep.c \ - alphabsd-tdep.c alphafbsd-tdep.c alphanbsd-tdep.c alphaobsd-tdep.c \ - amd64-nat.c amd64-tdep.c \ - amd64bsd-nat.c amd64fbsd-nat.c amd64fbsd-tdep.c \ - amd64nbsd-nat.c amd64nbsd-tdep.c \ - amd64obsd-nat.c amd64obsd-tdep.c \ - amd64-darwin-tdep.c \ - amd64-dicos-tdep.c \ - amd64-linux-nat.c amd64-linux-tdep.c \ - amd64-sol2-tdep.c \ - arm-linux-nat.c arm-linux-tdep.c arm-tdep.c \ - armnbsd-nat.c armbsd-tdep.c armnbsd-tdep.c armobsd-tdep.c \ - avr-tdep.c \ - bsd-uthread.c bsd-kvm.c \ - core-regset.c corelow.c \ - dcache.c dicos-tdep.c darwin-nat.c \ - exec.c \ - fbsd-nat.c \ - fork-child.c \ - glibc-tdep.c \ - go32-nat.c h8300-tdep.c \ - hppa-tdep.c hppa-hpux-tdep.c hppa-hpux-nat.c \ - hppa-linux-tdep.c hppa-linux-nat.c \ - hppabsd-nat.c hppabsd-tdep.c \ - hppaobsd-tdep.c \ - hppanbsd-nat.c hppanbsd-tdep.c \ - i386-tdep.c i386-linux-nat.c \ - i386v4-nat.c i386-cygwin-tdep.c \ - i386bsd-nat.c i386bsd-tdep.c i386fbsd-nat.c i386fbsd-tdep.c \ - i386nbsd-nat.c i386nbsd-tdep.c i386obsd-nat.c i386obsd-tdep.c \ - i387-tdep.c \ - i386-darwin-tdep.c i386-darwin-nat.c \ - i386-dicos-tdep.c \ - i386-linux-tdep.c i386-nat.c \ - i386-sol2-nat.c i386-sol2-tdep.c \ - i386gnu-nat.c i386gnu-tdep.c \ - ia64-linux-nat.c ia64-linux-tdep.c ia64-tdep.c \ - inf-ptrace.c inf-ttrace.c \ - irix5-nat.c \ - libunwind-frame.c \ - linux-fork.c \ - linux-tdep.c \ - linux-record.c \ - lm32-tdep.c \ - m68hc11-tdep.c \ - m32r-tdep.c \ - m32r-linux-nat.c m32r-linux-tdep.c \ - m68k-tdep.c \ - m68kbsd-nat.c m68kbsd-tdep.c \ - m68klinux-nat.c m68klinux-tdep.c \ - m88k-tdep.c m88kbsd-nat.c \ - mingw-hdep.c \ - mips-linux-nat.c mips-linux-tdep.c \ - mips-irix-tdep.c \ - mips-tdep.c \ - mipsnbsd-nat.c mipsnbsd-tdep.c \ - mips64obsd-nat.c mips64obsd-tdep.c \ - nbsd-nat.c nbsd-tdep.c obsd-tdep.c \ - solib-osf.c \ - solib-target.c \ - somread.c solib-som.c \ - posix-hdep.c \ - ppc-sysv-tdep.c ppc-linux-nat.c ppc-linux-tdep.c \ - ppcnbsd-nat.c ppcnbsd-tdep.c \ - ppcobsd-nat.c ppcobsd-tdep.c \ - procfs.c \ - remote-m32r-sdi.c remote-mips.c \ - remote-sim.c \ - dcache.c \ - rs6000-nat.c rs6000-tdep.c \ - s390-tdep.c s390-nat.c \ - score-tdep.c \ - ser-go32.c ser-pipe.c ser-tcp.c ser-mingw.c \ - sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \ - sol2-tdep.c \ - solib-irix.c solib-svr4.c solib-sunos.c \ - sparc-linux-nat.c sparc-linux-tdep.c \ - sparc-sol2-nat.c sparc-sol2-tdep.c sparc64-sol2-tdep.c \ - sparc-nat.c sparc-tdep.c sparc64-linux-nat.c sparc64-linux-tdep.c \ - sparc64-nat.c sparc64-tdep.c sparc64fbsd-nat.c sparc64fbsd-tdep.c \ - sparc64nbsd-nat.c sparc64nbsd-tdep.c sparc64obsd-tdep.c \ - sparcnbsd-nat.c sparcnbsd-tdep.c sparcobsd-tdep.c \ - spu-linux-nat.c spu-tdep.c spu-multiarch.c solib-spu.c \ - v850-tdep.c \ - vax-nat.c vax-tdep.c vaxbsd-nat.c vaxnbsd-tdep.c \ - windows-nat.c windows-tdep.c \ - xcoffread.c xcoffsolib.c \ - xstormy16-tdep.c \ - xtensa-tdep.c xtensa-config.c \ - xtensa-linux-tdep.c xtensa-linux-nat.c xtensa-xtregs.c - -# Some files need explicit build rules (due to -Werror problems) or due -# to sub-directory fun 'n' games. - -hpux-thread.o: $(srcdir)/hpux-thread.c - $(COMPILE) -I$(srcdir)/osf-share -I$(srcdir)/osf-share/HP800 \ - -I/usr/include/dce $(srcdir)/hpux-thread.c - $(POSTCOMPILE) - -# main.o needs an explicit build rule to get TARGET_SYSTEM_ROOT and BINDIR. -main.o: $(srcdir)/main.c - $(COMPILE) $(TARGET_SYSTEM_ROOT_DEFINE) -DBINDIR=\"$(bindir)\" $(srcdir)/main.c - $(POSTCOMPILE) - -# FIXME: cagney/2003-08-10: "monitor.c" gets -Wformat-nonliteral -# errors. It turns out that that is the least of monitor.c's -# problems. The function print_vsprintf appears to be using -# va_arg(long) to extract CORE_ADDR parameters - something that -# definitly will not work. "monitor.c" needs to be rewritten so that -# it doesn't use format strings and instead uses callbacks. -monitor.o: $(srcdir)/monitor.c - $(COMPILE.pre) $(INTERNAL_WARN_CFLAGS) $(COMPILE.post) $(srcdir)/monitor.c - $(POSTCOMPILE) - -# Do not try to build "printcmd.c" with -Wformat-nonliteral. It manually -# checks format strings. -printcmd.o: $(srcdir)/printcmd.c - $(COMPILE.pre) $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS_NO_FORMAT) \ - $(GDB_WERROR_CFLAGS) $(COMPILE.post) $(srcdir)/printcmd.c - $(POSTCOMPILE) - -# Message files. Based on code in gcc/Makefile.in. - -# Rules for generating translated message descriptions. Disabled by -# autoconf if the tools are not available. - -.SUFFIXES: .po .gmo .pox .pot -.PHONY: all-po install-po uninstall-po clean-po update-po $(PACKAGE).pot - -all-po: $(CATALOGS) - -# This notation should be acceptable to all Make implementations used -# by people who are interested in updating .po files. -update-po: $(CATALOGS:.gmo=.pox) - -# N.B. We do not attempt to copy these into $(srcdir). The snapshot -# script does that. -.po.gmo: - -test -d po || mkdir po - $(GMSGFMT) --statistics -o $@ $< - -# The new .po has to be gone over by hand, so we deposit it into -# build/po with a different extension. If build/po/$(PACKAGE).pot -# exists, use it (it was just created), else use the one in srcdir. -.po.pox: - -test -d po || mkdir po - $(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \ - then echo po/$(PACKAGE).pot; \ - else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@ - -# This rule has to look for .gmo modules in both srcdir and the cwd, -# and has to check that we actually have a catalog for each language, -# in case they weren't built or included with the distribution. -install-po: - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(datadir) - cats="$(CATALOGS)"; for cat in $$cats; do \ - lang=`basename $$cat | sed 's/\.gmo$$//'`; \ - if [ -f $$cat ]; then :; \ - elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ - else continue; \ - fi; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - echo $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir || exit 1; \ - echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - done -uninstall-po: - cats="$(CATALOGS)"; for cat in $$cats; do \ - lang=`basename $$cat | sed 's/\.gmo$$//'`; \ - if [ -f $$cat ]; then :; \ - elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ - else continue; \ - fi; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - rm -f $(DESTDIR)$$dir/$(PACKAGE).mo; \ - done -# Delete po/*.gmo only if we are not building in the source directory. -clean-po: - -if [ ! -f Makefile.in ]; then rm -f po/*.gmo; fi - -# Rule for regenerating the message template (gdb.pot). Instead of -# forcing everyone to edit POTFILES.in, which proved impractical, this -# rule has no dependencies and always regenerates gdb.pot. This is -# relatively harmless since the .po files do not directly depend on -# it. The .pot file is left in the build directory. Since GDB's -# Makefile lacks a cannonical list of sources (missing xm, tm and nm -# files) force this rule. -$(PACKAGE).pot: po/$(PACKAGE).pot -po/$(PACKAGE).pot: force - -test -d po || mkdir po - sh -e $(srcdir)/po/gdbtext $(XGETTEXT) $(PACKAGE) . $(srcdir) - - -# -# YACC/LEX dependencies -# -# LANG-exp.c is generated in objdir from LANG-exp.y if it doesn't -# exist in srcdir, then compiled in objdir to LANG-exp.o. If we -# said LANG-exp.c rather than ./c-exp.c some makes would -# sometimes re-write it into $(srcdir)/c-exp.c. Remove bogus -# decls for malloc/realloc/free which conflict with everything else. -# Strictly speaking c-exp.c should therefore depend on -# Makefile.in, but that was a pretty big annoyance. - -.SUFFIXES: .y .l -.y.c: - $(SHELL) $(YLWRAP) $< y.tab.c $@.tmp -- $(YACC) $(YFLAGS) - -sed -e '/extern.*malloc/d' \ - -e '/extern.*realloc/d' \ - -e '/extern.*free/d' \ - -e '/include.*malloc.h/d' \ - -e 's/\([^x]\)malloc/\1xmalloc/g' \ - -e 's/\([^x]\)realloc/\1xrealloc/g' \ - -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \ - -e 's/\([ \t;,(]\)free$$/\1xfree/g' \ - -e '/^#line.*y.tab.c/d' \ - < $@.tmp > $@.new - -rm $@.tmp - mv $@.new ./$*.c -.l.c: - if [ "$(FLEX)" ] && $(FLEX) --version >/dev/null 2>&1; then \ - $(FLEX) -o$@ $< && \ - rm -f $@.new && \ - sed -e '/extern.*malloc/d' \ - -e '/extern.*realloc/d' \ - -e '/extern.*free/d' \ - -e '/include.*malloc.h/d' \ - -e 's/\([^x]\)malloc/\1xmalloc/g' \ - -e 's/\([^x]\)realloc/\1xrealloc/g' \ - -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \ - -e 's/\([ \t;,(]\)free$$/\1xfree/g' \ - -e 's/yy_flex_xrealloc/yyxrealloc/g' \ - < $@ > $@.new && \ - rm -f $@ && \ - mv $@.new $@; \ - elif [ -f $@ ]; then \ - echo "Warning: $*.c older than $*.l and flex not available."; \ - else \ - echo "$@ missing and flex not available."; \ - false; \ - fi - -.PRECIOUS: ada-exp.c ada-lex.c -.PRECIOUS: c-exp.c -.PRECIOUS: f-exp.c -.PRECIOUS: jv-exp.c -.PRECIOUS: m2-exp.c -.PRECIOUS: objc-exp.c -.PRECIOUS: p-exp.c - -# XML rules - -xml-builtin.c: stamp-xml; @true -stamp-xml: $(srcdir)/features/feature_to_c.sh Makefile $(XMLFILES) - rm -f xml-builtin.tmp - AWK="$(AWK)" \ - $(SHELL) $(srcdir)/features/feature_to_c.sh \ - xml-builtin.tmp $(XMLFILES) - $(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin.c - echo stamp > stamp-xml - -.PRECIOUS: xml-builtin.c - -# -# gdb/cli/ dependencies -# -# Need to explicitly specify the compile rule as make will do nothing -# or try to compile the object file into the sub-directory. - -cli-cmds.o: $(srcdir)/cli/cli-cmds.c - $(COMPILE) $(srcdir)/cli/cli-cmds.c - $(POSTCOMPILE) - -cli-decode.o: $(srcdir)/cli/cli-decode.c - $(COMPILE) $(srcdir)/cli/cli-decode.c - $(POSTCOMPILE) - -cli-dump.o: $(srcdir)/cli/cli-dump.c - $(COMPILE) $(srcdir)/cli/cli-dump.c - $(POSTCOMPILE) - -cli-interp.o: $(srcdir)/cli/cli-interp.c - $(COMPILE) $(srcdir)/cli/cli-interp.c - $(POSTCOMPILE) - -cli-logging.o: $(srcdir)/cli/cli-logging.c - $(COMPILE) $(srcdir)/cli/cli-logging.c - $(POSTCOMPILE) - -cli-script.o: $(srcdir)/cli/cli-script.c - $(COMPILE) $(srcdir)/cli/cli-script.c - $(POSTCOMPILE) - -cli-setshow.o: $(srcdir)/cli/cli-setshow.c - $(COMPILE) $(srcdir)/cli/cli-setshow.c - $(POSTCOMPILE) - - -# -# GDBTK sub-directory -# -# Need to explicitly specify the compile rule as make will do nothing -# or try to compile the object file into the mi directory. - -all-gdbtk: insight$(EXEEXT) - -install-gdbtk: - transformed_name=`t='$(program_transform_name)'; \ - echo insight | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=insight ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \ - $(INSTALL_PROGRAM) insight$(EXEEXT) \ - $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(libdir)/insight$(GDBTK_VERSION) ; \ - $(INSTALL_DATA) $(srcdir)/gdbtk/plugins/plugins.tcl \ - $(DESTDIR)$(libdir)/insight$(GDBTK_VERSION)/plugins.tcl ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY)/images \ - $(DESTDIR)$(GDBTK_LIBRARY)/images2 ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY)/help \ - $(DESTDIR)$(GDBTK_LIBRARY)/help/images \ - $(DESTDIR)$(GDBTK_LIBRARY)/help/trace ; \ - cd $(srcdir)/gdbtk/library ; \ - for i in *.tcl *.itcl *.ith *.itb images/*.gif images2/*.gif images/icons.txt images2/icons.txt tclIndex help/*.html help/trace/*.html help/trace/index.toc help/images/*.gif help/images/*.png; \ - do \ - $(INSTALL_DATA) $$i $(DESTDIR)$(GDBTK_LIBRARY)/$$i ; \ - done ; - -uninstall-gdbtk: - transformed_name=`t='$(program_transform_name)'; \ - echo insight | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=insight ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - rm -rf $(DESTDIR)$(GDBTK_LIBRARY) - -clean-gdbtk: - rm -f insight$(EXEEXT) - -# Removing the old gdb first works better if it is running, at least on SunOS. -insight$(EXEEXT): gdbtk-main.o libgdb.a $(ADD_DEPS) \ - $(CDEPS) $(TDEPLIBS) - rm -f insight$(EXEEXT) - $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \ - -o insight$(EXEEXT) gdbtk-main.o libgdb.a \ - $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES) - -gdbres.o: $(srcdir)/gdbtk/gdb.rc $(srcdir)/gdbtk/gdbtool.ico - $(WINDRES) --include $(srcdir)/gdbtk $(srcdir)/gdbtk/gdb.rc gdbres.o - -all_gdbtk_cflags = $(IDE_CFLAGS) $(ITCL_CFLAGS) \ - $(ITK_CFLAGS) $(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) \ - $(GDBTK_CFLAGS) \ - -DGDBTK_LIBRARY=\"$(GDBTK_LIBRARY)\" \ - -DSRC_DIR=\"$(GDBTK_SRC_DIR)\" - -gdbtk.o: $(srcdir)/gdbtk/generic/gdbtk.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk.c - $(POSTCOMPILE) - -gdbtk-bp.o: $(srcdir)/gdbtk/generic/gdbtk-bp.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-bp.c - $(POSTCOMPILE) - -gdbtk-cmds.o: $(srcdir)/gdbtk/generic/gdbtk-cmds.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-cmds.c - $(POSTCOMPILE) - -gdbtk-hooks.o: $(srcdir)/gdbtk/generic/gdbtk-hooks.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-hooks.c - $(POSTCOMPILE) - -gdbtk-interp.o: $(srcdir)/gdbtk/generic/gdbtk-interp.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-interp.c - $(POSTCOMPILE) - -gdbtk-main.o: $(srcdir)/gdbtk/generic/gdbtk-main.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-main.c - $(POSTCOMPILE) - -gdbtk-register.o: $(srcdir)/gdbtk/generic/gdbtk-register.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-register.c - $(POSTCOMPILE) - -gdbtk-stack.o: $(srcdir)/gdbtk/generic/gdbtk-stack.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-stack.c - $(POSTCOMPILE) - -gdbtk-varobj.o: $(srcdir)/gdbtk/generic/gdbtk-varobj.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-varobj.c - $(POSTCOMPILE) - -gdbtk-wrapper.o: $(srcdir)/gdbtk/generic/gdbtk-wrapper.c - $(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-wrapper.c - $(POSTCOMPILE) - - -# -# gdb/mi/ dependencies -# -# Need to explicitly specify the compile rule as make will do nothing -# or try to compile the object file into the sub-directory. - -mi-cmd-break.o: $(srcdir)/mi/mi-cmd-break.c - $(COMPILE) $(srcdir)/mi/mi-cmd-break.c - $(POSTCOMPILE) - -mi-cmd-disas.o: $(srcdir)/mi/mi-cmd-disas.c - $(COMPILE) $(srcdir)/mi/mi-cmd-disas.c - $(POSTCOMPILE) - -mi-cmd-env.o: $(srcdir)/mi/mi-cmd-env.c - $(COMPILE) $(srcdir)/mi/mi-cmd-env.c - $(POSTCOMPILE) - -mi-cmd-file.o: $(srcdir)/mi/mi-cmd-file.c - $(COMPILE) $(srcdir)/mi/mi-cmd-file.c - $(POSTCOMPILE) - -mi-cmds.o: $(srcdir)/mi/mi-cmds.c - $(COMPILE) $(srcdir)/mi/mi-cmds.c - $(POSTCOMPILE) - -mi-cmd-stack.o: $(srcdir)/mi/mi-cmd-stack.c - $(COMPILE) $(srcdir)/mi/mi-cmd-stack.c - $(POSTCOMPILE) - -mi-cmd-target.o: $(srcdir)/mi/mi-cmd-target.c - $(COMPILE) $(srcdir)/mi/mi-cmd-target.c - $(POSTCOMPILE) - -mi-cmd-var.o: $(srcdir)/mi/mi-cmd-var.c - $(COMPILE) $(srcdir)/mi/mi-cmd-var.c - $(POSTCOMPILE) - -mi-console.o: $(srcdir)/mi/mi-console.c - $(COMPILE) $(srcdir)/mi/mi-console.c - $(POSTCOMPILE) - -mi-getopt.o: $(srcdir)/mi/mi-getopt.c - $(COMPILE) $(srcdir)/mi/mi-getopt.c - $(POSTCOMPILE) - -mi-interp.o: $(srcdir)/mi/mi-interp.c - $(COMPILE) $(srcdir)/mi/mi-interp.c - $(POSTCOMPILE) - -mi-main.o: $(srcdir)/mi/mi-main.c - $(COMPILE) $(srcdir)/mi/mi-main.c - $(POSTCOMPILE) - -mi-out.o: $(srcdir)/mi/mi-out.c - $(COMPILE) $(srcdir)/mi/mi-out.c - $(POSTCOMPILE) - -mi-parse.o: $(srcdir)/mi/mi-parse.c - $(COMPILE) $(srcdir)/mi/mi-parse.c - $(POSTCOMPILE) - -mi-symbol-cmds.o: $(srcdir)/mi/mi-symbol-cmds.c - $(COMPILE) $(srcdir)/mi/mi-symbol-cmds.c - $(POSTCOMPILE) - -mi-common.o: $(srcdir)/mi/mi-common.c - $(COMPILE) $(srcdir)/mi/mi-common.c - $(POSTCOMPILE) - -# -# gdb/common/ dependencies -# -# Need to explicitly specify the compile rule as make will do nothing -# or try to compile the object file into the sub-directory. - -signals.o: $(srcdir)/common/signals.c - $(COMPILE) $(srcdir)/common/signals.c - $(POSTCOMPILE) - -# -# gdb/tui/ dependencies -# -# Need to explicitly specify the compile rule as make will do nothing -# or try to compile the object file into the sub-directory. - -tui.o: $(srcdir)/tui/tui.c - $(COMPILE) $(srcdir)/tui/tui.c - $(POSTCOMPILE) - -tui-command.o: $(srcdir)/tui/tui-command.c - $(COMPILE) $(srcdir)/tui/tui-command.c - $(POSTCOMPILE) - -tui-data.o: $(srcdir)/tui/tui-data.c - $(COMPILE) $(srcdir)/tui/tui-data.c - $(POSTCOMPILE) - -tui-disasm.o: $(srcdir)/tui/tui-disasm.c - $(COMPILE) $(srcdir)/tui/tui-disasm.c - $(POSTCOMPILE) - -tui-file.o: $(srcdir)/tui/tui-file.c - $(COMPILE) $(srcdir)/tui/tui-file.c - $(POSTCOMPILE) - -tui-hooks.o: $(srcdir)/tui/tui-hooks.c - $(COMPILE) $(srcdir)/tui/tui-hooks.c - $(POSTCOMPILE) - -tui-interp.o: $(srcdir)/tui/tui-interp.c - $(COMPILE) $(srcdir)/tui/tui-interp.c - $(POSTCOMPILE) - -tui-io.o: $(srcdir)/tui/tui-io.c - $(COMPILE) $(srcdir)/tui/tui-io.c - $(POSTCOMPILE) - -tui-layout.o: $(srcdir)/tui/tui-layout.c - $(COMPILE) $(srcdir)/tui/tui-layout.c - $(POSTCOMPILE) - -tui-main.o: $(srcdir)/tui/tui-main.c - $(COMPILE) $(srcdir)/tui/tui-main.c - $(POSTCOMPILE) - -tui-out.o: $(srcdir)/tui/tui-out.c - $(COMPILE) $(srcdir)/tui/tui-out.c - $(POSTCOMPILE) - -tui-regs.o: $(srcdir)/tui/tui-regs.c - $(COMPILE) $(srcdir)/tui/tui-regs.c - $(POSTCOMPILE) - -tui-source.o: $(srcdir)/tui/tui-source.c - $(COMPILE) $(srcdir)/tui/tui-source.c - $(POSTCOMPILE) - -tui-stack.o: $(srcdir)/tui/tui-stack.c - $(COMPILE) $(srcdir)/tui/tui-stack.c - $(POSTCOMPILE) - -tui-win.o: $(srcdir)/tui/tui-win.c - $(COMPILE) $(srcdir)/tui/tui-win.c - $(POSTCOMPILE) - -tui-windata.o: $(srcdir)/tui/tui-windata.c - $(COMPILE) $(srcdir)/tui/tui-windata.c - $(POSTCOMPILE) - -tui-wingeneral.o: $(srcdir)/tui/tui-wingeneral.c - $(COMPILE) $(srcdir)/tui/tui-wingeneral.c - $(POSTCOMPILE) - -tui-winsource.o: $(srcdir)/tui/tui-winsource.c - $(COMPILE) $(srcdir)/tui/tui-winsource.c - $(POSTCOMPILE) - -# -# gdb/python/ dependencies -# -# Need to explicitly specify the compile rule as make will do nothing -# or try to compile the object file into the sub-directory. - -# Flags needed to compile Python code -PYTHON_CFLAGS=@PYTHON_CFLAGS@ - -python.o: $(srcdir)/python/python.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/python.c - $(POSTCOMPILE) - -py-cmd.o: $(srcdir)/python/py-cmd.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-cmd.c - $(POSTCOMPILE) - -py-frame.o: $(srcdir)/python/py-frame.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-frame.c - $(POSTCOMPILE) - -py-function.o: $(srcdir)/python/py-function.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-function.c - $(POSTCOMPILE) - -py-objfile.o: $(srcdir)/python/py-objfile.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-objfile.c - $(POSTCOMPILE) - -py-prettyprint.o: $(srcdir)/python/py-prettyprint.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-prettyprint.c - $(POSTCOMPILE) - -py-type.o: $(srcdir)/python/py-type.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-type.c - $(POSTCOMPILE) - -py-utils.o: $(srcdir)/python/py-utils.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-utils.c - $(POSTCOMPILE) - -py-value.o: $(srcdir)/python/py-value.c - $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-value.c - $(POSTCOMPILE) - -# -# Dependency tracking. Most of this is conditional on GNU Make being -# found by configure; if GNU Make is not found, we fall back to a -# simpler scheme. -# - -@GMAKE_TRUE@ifeq ($(DEPMODE),depmode=gcc3) -# Note that we put the dependencies into a .Tpo file, then move them -# into place if the compile succeeds. We need this because gcc does -# not atomically write the dependency output file. -@GMAKE_TRUE@override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \ -@GMAKE_TRUE@ -MF $(DEPDIR)/$(basename $(@F)).Tpo -@GMAKE_TRUE@override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \ -@GMAKE_TRUE@ $(DEPDIR)/$(basename $(@F)).Po -@GMAKE_TRUE@else -@GMAKE_TRUE@override COMPILE.pre = source='$<' object='$@' libtool=no \ -@GMAKE_TRUE@ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC) -# depcomp handles atomicity for us, so we don't need a postcompile -# step. -@GMAKE_TRUE@override POSTCOMPILE = -@GMAKE_TRUE@endif - -# A list of all the objects we might care about in this build, for -# dependency tracking. -all_object_files = gdb.o tui-main.o $(LIBGDB_OBS) gdbtk-main.o \ - test-cp-name-parser.o - -# Ensure that generated files are created early. Use order-only -# dependencies if available. They require GNU make 3.80 or newer, -# and the .VARIABLES variable was introduced at the same time. -@GMAKE_TRUE@ifdef .VARIABLES -@GMAKE_TRUE@$(all_object_files): | $(generated_files) -@GMAKE_TRUE@else -$(all_object_files) : $(generated_files) -@GMAKE_TRUE@endif - -# Dependencies. -@GMAKE_TRUE@-include $(patsubst %.o, $(DEPDIR)/%.Po, $(all_object_files)) - -### end of the gdb Makefile.in. diff --git a/contrib/gdb-7/gdb/PROBLEMS b/contrib/gdb-7/gdb/PROBLEMS index 030f8ed7ad..094957e012 100644 --- a/contrib/gdb-7/gdb/PROBLEMS +++ b/contrib/gdb-7/gdb/PROBLEMS @@ -1,104 +1,6 @@ - Known problems in GDB 6.5 + Known problems in GDB 7.2 See also: http://www.gnu.org/software/gdb/bugs/ - -*** Build problems - -build/1411: build fails on hpux 10.20 and hpux 11.00 with CMA threads - -GDB does not build on HP/UX 10.20 or HP/UX 11.00 if the CMA -thread package is installed. The compile error is: - - ../../gdb/hpux-thread.c:222: variable-size type declared outside of any function - -This happens only if the CMA thread package is installed. - -As a workaround, you can disable support for CMA threads -by editing the file gdb/configure. Find the line: - - if test -f /usr/include/dce/cma_config.h ; then - -And replace it with: - - if false ; then - -*** Misc - -gdb/1560: Control-C does not always interrupt GDB. - -When GDB is busy processing a command which takes a long time to -complete, hitting Control-C does not have the expected effect. -The command execution is not aborted, and the "QUIT" message confirming -the abortion is displayed only after the command has been completed. - -*** C++ support - -gdb/931: GDB could be more generous when reading types C++ templates on input - -When the user types a template, GDB frequently requires the type to be -typed in a certain way (e.g. "const char*" as opposed to "const char *" -or "char const *" or "char const*"). - -gdb/1512: no canonical way to output names of C++ types - -We currently don't have any canonical way to output names of C++ types. -E.g. "const char *" versus "char const *"; more subtleties arise when -dealing with templates. - -gdb/1516: [regression] local classes, gcc 2.95.3, dwarf-2 - -With gcc 2.95.3 and the dwarf-2 debugging format, classes which are -defined locally to a function include the demangled name of the function -as part of their name. For example, if a function "foobar" contains a -local class definition "Local", gdb will say that the name of the class -type is "foobar__Fi.0:Local". - -This applies only to classes where the class type is defined inside a -function, not to variables defined with types that are defined somewhere -outside any function (which most types are). - -gdb/1588: names of c++ nested types in casts must be enclosed in quotes - -You must type - (gdb) print ('Foo::Bar') x -or - (gdb) print ('Foo::Bar' *) y -instead of - (gdb) print (Foo::Bar) x -or - (gdb) print (Foo::Bar *) y -respectively. - -gdb/1091: Constructor breakpoints ignored -gdb/1193: g++ 3.3 creates multiple constructors: gdb 5.3 can't set breakpoints - -When gcc 3.x compiles a C++ constructor or C++ destructor, it generates -2 or 3 different versions of the object code. These versions have -unique mangled names (they have to, in order for linking to work), but -they have identical source code names, which leads to a great deal of -confusion. Specifically, if you set a breakpoint in a constructor or a -destructor, gdb will put a breakpoint in one of the versions, but your -program may execute the other version. This makes it impossible to set -breakpoints reliably in constructors or destructors. - -gcc 3.x generates these multiple object code functions in order to -implement virtual base classes. gcc 2.x generated just one object code -function with a hidden parameter, but gcc 3.x conforms to a multi-vendor -ABI for C++ which requires multiple object code functions. - -*** Threads - -threads/1650: manythreads.exp - -On GNU/Linux systems that use the old LinuxThreads thread library, a -program rapidly creating and deleting threads can confuse GDB leading -to an internal error. - -This problem does not occur on newer systems that use the NPTL -library, and did not occur with GDB 6.1. - -threads/2137: Native Solaris Thread Debugging broken. - -Use GDB 6.4 if thread debugging is needed on Solaris. +None worth mentioning here. diff --git a/contrib/gdb-7/gdb/README b/contrib/gdb-7/gdb/README index 79024bfa88..0ee97050be 100644 --- a/contrib/gdb-7/gdb/README +++ b/contrib/gdb-7/gdb/README @@ -1,5 +1,4 @@ - README for gdb-7.0 release - Updated 06, October, 2009 + README for GDB release This is GDB, the GNU source-level debugger. @@ -17,33 +16,27 @@ bugs. Unpacking and Installation -- quick overview ========================== - In this release, the GDB debugger sources, the generic GNU include + The release is provided as a gzipped tar file called +'gdb-VERSION.tar.gz', where VERSION is the version of GDB. + + The GDB debugger sources, the generic GNU include files, the BFD ("binary file description") library, the readline library, and other libraries all have directories of their own -underneath the gdb-7.0 directory. The idea is that a variety of GNU +underneath the gdb-VERSION directory. The idea is that a variety of GNU tools can share a common copy of these things. Be aware of variation -over time--for example don't try to build gdb with a copy of bfd from -a release other than the gdb release (such as a binutils release), +over time--for example don't try to build GDB with a copy of bfd from +a release other than the GDB release (such as a binutils release), especially if the releases are more than a few weeks apart. Configuration scripts and makefiles exist to cruise up and down this directory tree and automatically build all the pieces in the right order. - When you unpack the gdb-7.0.tar.gz file, you'll find a directory -called `gdb-7.0', which contains: - - COPYING config-ml.in gettext.m4 ltconfig sim - COPYING.LIB config.guess include ltmain.sh src-release - Makefile.def config.sub install-sh md5.sum symlink-tree - Makefile.in configure libiberty missing texinfo - Makefile.tpl configure.in libtool.m4 mkinstalldirs ylwrap - README djunpack.bat ltcf-c.sh move-if-change - bfd etc ltcf-cxx.sh opcodes - config gdb ltcf-gcj.sh readline + When you unpack the gdb-VERSION.tar.gz file, it will create a +source directory called `gdb-VERSION'. You can build GDB right in the source directory: - cd gdb-7.0 + cd gdb-VERSION ./configure make cp gdb/gdb /usr/local/bin/gdb (or wherever you want) @@ -57,26 +50,26 @@ You can build GDB in any empty build directory: mkdir build cd build - /gdb-7.0/configure + /gdb-VERSION/configure make cp gdb/gdb /usr/local/bin/gdb (or wherever you want) (Building GDB with DJGPP tools for MS-DOS/MS-Windows is slightly -different; see the file gdb-7.0/gdb/config/djgpp/README for details.) +different; see the file gdb-VERSION/gdb/config/djgpp/README for details.) This will configure and build all the libraries as well as GDB. If `configure' can't determine your system type, specify one as its argument, e.g., `./configure sun4' or `./configure decstation'. - Make sure that your 'configure' line ends in 'gdb-7.0/configure': + Make sure that your 'configure' line ends in 'gdb-VERSION/configure': - /berman/migchain/source/gdb-7.0/configure # RIGHT - /berman/migchain/source/gdb-7.0/gdb/configure # WRONG + /berman/migchain/source/gdb-VERSION/configure # RIGHT + /berman/migchain/source/gdb-VERSION/gdb/configure # WRONG - The gdb package contains several subdirectories, such as 'gdb', + The GDB package contains several subdirectories, such as 'gdb', 'bfd', and 'readline'. If your 'configure' line ends in -'gdb-7.0/gdb/configure', then you are configuring only the gdb -subdirectory, not the whole gdb package. This leads to build errors +'gdb-VERSION/gdb/configure', then you are configuring only the gdb +subdirectory, not the whole GDB package. This leads to build errors such as: make: *** No rule to make target `../bfd/bfd.h', needed by `gdb.o'. Stop. @@ -88,7 +81,7 @@ Bugs' section below; there are a few known problems. C compiler for your system, you may be able to download and install the GNU CC compiler. It is available via anonymous FTP from the directory `ftp://ftp.gnu.org/pub/gnu/gcc'. GDB also requires an ISO -C standard library. The GDB remote server, gdbserver, builds with some +C standard library. The GDB remote server, GDBserver, builds with some non-ISO standard libraries - e.g. for Windows CE. GDB uses Expat, an XML parsing library, to implement some target-specific @@ -113,7 +106,7 @@ documentation and TeX (or `texi2roff') to typeset the printed version. GDB includes an already formatted copy of the on-line Info version of this manual in the `gdb/doc' subdirectory. The main Info file is -`gdb-7.0/gdb/doc/gdb.info', and it refers to subordinate files +`gdb-VERSION/gdb/doc/gdb.info', and it refers to subordinate files matching `gdb.info*' in the same directory. If necessary, you can print out these files, or read them with any editor; but they are easier to read using the `info' subsystem in GNU Emacs or the @@ -125,8 +118,8 @@ Info formatting programs, such as `texinfo-format-buffer' or `makeinfo'. If you have `makeinfo' installed, and are in the top level GDB -source directory (`gdb-7.0', in the case of version 7.0), you can make -the Info file by typing: +source directory (`gdb-VERSION'), you can make the Info file by +typing: cd gdb/doc make info @@ -134,7 +127,7 @@ the Info file by typing: If you want to typeset and print copies of this manual, you need TeX, a program to print its DVI output files, and `texinfo.tex', the Texinfo definitions file. This file is included in the GDB -distribution, in the directory `gdb-7.0/texinfo'. +distribution, in the directory `gdb-VERSION/texinfo'. TeX is a typesetting program; it does not print files directly, but produces output files called DVI files. To print a typeset document, @@ -148,11 +141,11 @@ without any extension or a `.dvi' extension. This file tells TeX how to typeset a document written in Texinfo format. On its own, TeX cannot read, much less typeset a Texinfo file. `texinfo.tex' is distributed with GDB and is located in the -`gdb-7.0/texinfo' directory. +`gdb-VERSION/texinfo' directory. If you have TeX and a DVI printer program installed, you can typeset and print this manual. First switch to the the `gdb' subdirectory of -the main source directory (for example, to `gdb-7.0/gdb') and then type: +the main source directory (for example, to `gdb-VERSION/gdb') and then type: make doc/gdb.dvi @@ -172,46 +165,42 @@ preparing GDB for installation; you can then use `make' to build the `gdb' program. The GDB distribution includes all the source code you need for GDB in -a single directory, whose name is usually composed by appending the -version number to `gdb'. - - For example, the GDB version 7.0 distribution is in the `gdb-7.0' -directory. That directory contains: +a single directory. That directory contains: -`gdb-7.0/{COPYING,COPYING.LIB}' +`gdb-VERSION/{COPYING,COPYING.LIB}' Standard GNU license files. Please read them. -`gdb-7.0/bfd' +`gdb-VERSION/bfd' source for the Binary File Descriptor library -`gdb-7.0/config*' +`gdb-VERSION/config*' script for configuring GDB, along with other support files -`gdb-7.0/gdb' +`gdb-VERSION/gdb' the source specific to GDB itself -`gdb-7.0/include' +`gdb-VERSION/include' GNU include files -`gdb-7.0/libiberty' +`gdb-VERSION/libiberty' source for the `-liberty' free software library -`gdb-7.0/opcodes' +`gdb-VERSION/opcodes' source for the library of opcode tables and disassemblers -`gdb-7.0/readline' +`gdb-VERSION/readline' source for the GNU command-line interface NOTE: The readline library is compiled for use by GDB, but will not be installed on your system when "make install" is issued. -`gdb-7.0/sim' +`gdb-VERSION/sim' source for some simulators (ARM, D10V, SPARC, M32R, MIPS, PPC, V850, etc) -`gdb-7.0/texinfo' +`gdb-VERSION/texinfo' The `texinfo.tex' file, which you need in order to make a printed manual using TeX. -`gdb-7.0/etc' +`gdb-VERSION/etc' Coding standards, useful files for editing GDB, and other miscellanea. @@ -220,15 +209,14 @@ Unix-like systems. Instructions for building with DJGPP for MS-DOS/MS-Windows are in the file gdb/config/djgpp/README. The simplest way to configure and build GDB is to run `configure' -from the `gdb-VERSION-NUMBER' source directory, which in this example -is the `gdb-7.0' directory. +from the `gdb-VERSION' directory. - First switch to the `gdb-VERSION-NUMBER' source directory if you are + First switch to the `gdb-VERSION' source directory if you are not already in it; then run `configure'. For example: - cd gdb-7.0 + cd gdb-VERSION ./configure make @@ -244,20 +232,9 @@ you may need to run `sh' on it explicitly: sh configure If you run `configure' from a directory that contains source -directories for multiple libraries or programs, such as the `gdb-7.0' -source directory for version 7.0, `configure' creates configuration -files for every directory level underneath (unless you tell it not to, -with the `--norecursion' option). - - You can run the `configure' script from any of the subordinate -directories in the GDB distribution, if you only want to configure that -subdirectory; but be sure to specify a path to it. - - For example, with version 7.0, type the following to configure only -the `bfd' subdirectory: - - cd gdb-7.0/bfd - ../configure +directories for multiple libraries or programs, `configure' creates +configuration files for every directory level underneath (unless +you tell it not to, with the `--norecursion' option). You can install `gdb' anywhere; it has no hardwired paths. However, you should make sure that the shell on your path (named by the `SHELL' @@ -285,13 +262,13 @@ directory. If the path to `configure' would be the same as the argument to `--srcdir', you can leave out the `--srcdir' option; it will be assumed.) - For example, with version 7.0, you can build GDB in a separate + For example, you can build GDB in a separate directory for a Sun 4 like this: - cd gdb-7.0 + cd gdb-VERSION mkdir ../gdb-sun4 cd ../gdb-sun4 - ../gdb-7.0/configure + ../gdb-VERSION/configure make When `configure' builds a configuration using a remote source @@ -312,8 +289,8 @@ called `configure' (or one of its subdirectories). The `Makefile' that `configure' generates in each source directory also runs recursively. If you type `make' in a source directory such -as `gdb-7.0' (or in a separate configured directory configured with -`--srcdir=PATH/gdb-7.0'), you will build all the required libraries, +as `gdb-VERSION' (or in a separate configured directory configured with +`--srcdir=PATH/gdb-VERSION'), you will build all the required libraries, and then build GDB. When you have multiple hosts or targets configured in separate @@ -355,8 +332,7 @@ you can use it to test your guesses on abbreviations--for example: % sh config.sub i786v Invalid configuration `i786v': machine `i786v' not recognized -`config.sub' is also distributed in the GDB source directory -(`gdb-7.0', for version 7.0). +`config.sub' is also distributed in the GDB source directory. `configure' options @@ -545,12 +521,12 @@ standalone on an m68k, i386, or SPARC cpu and communicate properly with the remote.c stub over a serial line. The directory gdb/gdbserver/ contains `gdbserver', a program that -allows remote debugging for Unix applications. gdbserver is only +allows remote debugging for Unix applications. GDBserver is only supported for some native configurations, including Sun 3, Sun 4, and Linux. -The file gdb/gdbserver/README includes further notes on gdbserver; in -particular, it explains how to build gdbserver for cross-debugging -(where gdbserver runs on the target machine, which is of a different +The file gdb/gdbserver/README includes further notes on GDBserver; in +particular, it explains how to build GDBserver for cross-debugging +(where GDBserver runs on the target machine, which is of a different architecture than the host machine running GDB). There are a number of remote interfaces for talking to existing ROM @@ -572,13 +548,13 @@ method is to use the World Wide Web: As an alternative, the bug report can be submitted, via e-mail, to the address "bug-gdb@gnu.org". - When submitting a bug, please include the GDB version number (e.g., -gdb-7.0), and how you configured it (e.g., "sun4" or "mach386 host, + When submitting a bug, please include the GDB version number, and +how you configured it (e.g., "sun4" or "mach386 host, i586-intel-synopsys target"). Since GDB now supports so many different configurations, it is important that you be precise about -this. If at all possible, you should include the actual banner that -GDB prints when it starts up, or failing that, the actual configure -command that you used when configuring GDB. +this. If at all possible, you should include the actual banner +that GDB prints when it starts up, or failing that, the actual +configure command that you used when configuring GDB. For more information on how/whether to report bugs, see the Reporting Bugs chapter of the GDB manual (gdb/doc/gdb.texinfo). @@ -628,17 +604,17 @@ ftp://sources.redhat.com/pub/dejagnu/ will contain a recent snapshot. Once DejaGNU is installed, you can run the tests in one of the following ways: - (1) cd gdb-7.0 + (1) cd gdb-VERSION make check-gdb or - (2) cd gdb-7.0/gdb + (2) cd gdb-VERSION/gdb make check or - (3) cd gdb-7.0/gdb/testsuite + (3) cd gdb-VERSION/gdb/testsuite make site.exp (builds the site specific file) runtest -tool gdb GDB=../gdb (or GDB= as appropriate) diff --git a/contrib/gdb-7/gdb/ada-exp.y b/contrib/gdb-7/gdb/ada-exp.y index 1d3c6193cb..722db2fc07 100644 --- a/contrib/gdb-7/gdb/ada-exp.y +++ b/contrib/gdb-7/gdb/ada-exp.y @@ -1,6 +1,6 @@ /* YACC parser for Ada expressions, for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1993, 1994, 1997, 2000, 2003, 2004, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -1021,8 +1021,8 @@ block_lookup (struct block *context, char *raw_name) name = ada_encode (raw_name); nsyms = ada_lookup_symbol_list (name, context, VAR_DOMAIN, &syms); - if (context == NULL && - (nsyms == 0 || SYMBOL_CLASS (syms[0].sym) != LOC_BLOCK)) + if (context == NULL + && (nsyms == 0 || SYMBOL_CLASS (syms[0].sym) != LOC_BLOCK)) symtab = lookup_symtab (name); else symtab = NULL; @@ -1091,7 +1091,6 @@ find_primitive_type (char *name) { /* Check to see if we have a regular definition of this type that just didn't happen to have been read yet. */ - int ntypes; struct symbol *sym; char *expanded_name = (char *) alloca (strlen (name) + sizeof ("standard__")); @@ -1366,7 +1365,6 @@ write_var_or_type (struct block *block, struct stoken name0) } else if (nsyms == 0) { - int i; struct minimal_symbol *msym = ada_lookup_simple_minsym (encoded_name); if (msym != NULL) diff --git a/contrib/gdb-7/gdb/ada-lang.c b/contrib/gdb-7/gdb/ada-lang.c index 9b5d2c616f..1d4c38b8d3 100644 --- a/contrib/gdb-7/gdb/ada-lang.c +++ b/contrib/gdb-7/gdb/ada-lang.c @@ -56,6 +56,9 @@ #include "source.h" #include "observer.h" #include "vec.h" +#include "stack.h" + +#include "psymtab.h" /* Define whether or not the C operator '/' truncates towards zero for differently signed operands (truncation direction is undefined in C). @@ -65,8 +68,6 @@ #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2) #endif -static void extract_string (CORE_ADDR addr, char *buf); - static void modify_general_field (struct type *, char *, LONGEST, int, int); static struct type *desc_base_type (struct type *); @@ -120,10 +121,6 @@ static int num_defns_collected (struct obstack *); static struct ada_symbol_info *defns_collected (struct obstack *, int); -static struct partial_symbol *ada_lookup_partial_symbol (struct partial_symtab - *, const char *, int, - domain_enum, int); - static struct value *resolve_subexp (struct expression **, int *, int, struct type *); @@ -157,6 +154,9 @@ static struct type *ada_lookup_struct_elt_type (struct type *, char *, static struct value *evaluate_subexp_type (struct expression *, int *); +static struct type *ada_find_parallel_type_with_name (struct type *, + const char *); + static int is_dynamic_field (struct type *, int); static struct type *to_fixed_variant_branch_type (struct type *, @@ -165,19 +165,24 @@ static struct type *to_fixed_variant_branch_type (struct type *, static struct type *to_fixed_array_type (struct type *, struct value *, int); -static struct type *to_fixed_range_type (char *, struct value *, - struct type *); +static struct type *to_fixed_range_type (struct type *, struct value *); static struct type *to_static_fixed_type (struct type *); static struct type *static_unwrap_type (struct type *type); static struct value *unwrap_value (struct value *); -static struct type *packed_array_type (struct type *, long *); +static struct type *constrained_packed_array_type (struct type *, long *); + +static struct type *decode_constrained_packed_array_type (struct type *); -static struct type *decode_packed_array_type (struct type *); +static long decode_packed_array_bitsize (struct type *); -static struct value *decode_packed_array (struct value *); +static struct value *decode_constrained_packed_array (struct value *); + +static int ada_is_packed_array_type (struct type *); + +static int ada_is_unconstrained_packed_array_type (struct type *); static struct value *value_subscript_packed (struct value *, int, struct value **); @@ -220,8 +225,6 @@ static int find_struct_field (char *, struct type *, int, static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR, struct value *); -static struct value *ada_to_fixed_value (struct value *); - static int ada_resolve_function (struct ada_symbol_info *, int, struct value **, int, const char *, struct type *); @@ -302,6 +305,66 @@ static const char *known_auxiliary_function_name_patterns[] = { /* Space for allocating results of ada_lookup_symbol_list. */ static struct obstack symbol_list_obstack; + /* Inferior-specific data. */ + +/* Per-inferior data for this module. */ + +struct ada_inferior_data +{ + /* The ada__tags__type_specific_data type, which is used when decoding + tagged types. With older versions of GNAT, this type was directly + accessible through a component ("tsd") in the object tag. But this + is no longer the case, so we cache it for each inferior. */ + struct type *tsd_type; +}; + +/* Our key to this module's inferior data. */ +static const struct inferior_data *ada_inferior_data; + +/* A cleanup routine for our inferior data. */ +static void +ada_inferior_data_cleanup (struct inferior *inf, void *arg) +{ + struct ada_inferior_data *data; + + data = inferior_data (inf, ada_inferior_data); + if (data != NULL) + xfree (data); +} + +/* Return our inferior data for the given inferior (INF). + + This function always returns a valid pointer to an allocated + ada_inferior_data structure. If INF's inferior data has not + been previously set, this functions creates a new one with all + fields set to zero, sets INF's inferior to it, and then returns + a pointer to that newly allocated ada_inferior_data. */ + +static struct ada_inferior_data * +get_ada_inferior_data (struct inferior *inf) +{ + struct ada_inferior_data *data; + + data = inferior_data (inf, ada_inferior_data); + if (data == NULL) + { + data = XZALLOC (struct ada_inferior_data); + set_inferior_data (inf, ada_inferior_data, data); + } + + return data; +} + +/* Perform all necessary cleanups regarding our module's inferior data + that is required after the inferior INF just exited. */ + +static void +ada_inferior_exit (struct inferior *inf) +{ + ada_inferior_data_cleanup (inf, NULL); + set_inferior_data (inf, ada_inferior_data, NULL); +} + /* Utilities */ /* Given DECODED_NAME a string holding a symbol name in its @@ -350,25 +413,6 @@ ada_print_array_index (struct value *index_value, struct ui_file *stream, fprintf_filtered (stream, " => "); } -/* Read the string located at ADDR from the inferior and store the - result into BUF. */ - -static void -extract_string (CORE_ADDR addr, char *buf) -{ - int char_index = 0; - - /* Loop, reading one byte at a time, until we reach the '\000' - end-of-string marker. */ - do - { - target_read_memory (addr + char_index * sizeof (char), - buf + char_index * sizeof (char), sizeof (char)); - char_index++; - } - while (buf[char_index - 1] != '\000'); -} - /* Assuming VECT points to an array of *SIZE objects of size ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects, updating *SIZE as necessary and returning the (new) array. */ @@ -393,6 +437,7 @@ static int field_name_match (const char *field_name, const char *target) { int len = strlen (target); + return (strncmp (field_name, target, len) == 0 && (field_name[len] == '\0' @@ -438,6 +483,7 @@ ada_name_prefix_len (const char *name) else { const char *p = strstr (name, "___"); + if (p == NULL) return strlen (name); else @@ -452,6 +498,7 @@ static int is_suffix (const char *str, const char *suffix) { int len1, len2; + if (str == NULL) return 0; len1 = strlen (str); @@ -516,14 +563,14 @@ cond_offset_target (CORE_ADDR address, long offset) /* FIXME: cagney/2004-10-10: This function is mimicking the behavior provided by "complaint". */ -static void lim_warning (const char *format, ...) ATTR_FORMAT (printf, 1, 2); +static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2); static void lim_warning (const char *format, ...) { va_list args; - va_start (args, format); + va_start (args, format); warnings_issued += 1; if (warnings_issued <= warning_limit) vwarning (format, args); @@ -542,16 +589,12 @@ check_size (const struct type *type) error (_("object size is larger than varsize-limit")); } - -/* Note: would have used MAX_OF_TYPE and MIN_OF_TYPE macros from - gdbtypes.h, but some of the necessary definitions in that file - seem to have gone missing. */ - /* Maximum value of a SIZE-byte signed integer type. */ static LONGEST max_of_size (int size) { LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2); + return top_bit | (top_bit - 1); } @@ -567,6 +610,7 @@ static ULONGEST umax_of_size (int size) { ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1); + return top_bit | (top_bit - 1); } @@ -591,8 +635,8 @@ min_of_type (struct type *t) } /* The largest value in the domain of TYPE, a discrete type, as an integer. */ -static LONGEST -discrete_type_high_bound (struct type *type) +LONGEST +ada_discrete_type_high_bound (struct type *type) { switch (TYPE_CODE (type)) { @@ -606,13 +650,13 @@ discrete_type_high_bound (struct type *type) case TYPE_CODE_INT: return max_of_type (type); default: - error (_("Unexpected type in discrete_type_high_bound.")); + error (_("Unexpected type in ada_discrete_type_high_bound.")); } } /* The largest value in the domain of TYPE, a discrete type, as an integer. */ -static LONGEST -discrete_type_low_bound (struct type *type) +LONGEST +ada_discrete_type_low_bound (struct type *type) { switch (TYPE_CODE (type)) { @@ -626,7 +670,7 @@ discrete_type_low_bound (struct type *type) case TYPE_CODE_INT: return min_of_type (type); default: - error (_("Unexpected type in discrete_type_low_bound.")); + error (_("Unexpected type in ada_discrete_type_low_bound.")); } } @@ -649,13 +693,10 @@ base_type (struct type *type) /* Language Selection */ /* If the main program is in Ada, return language_ada, otherwise return LANG - (the main program is in Ada iif the adainit symbol is found). - - MAIN_PST is not used. */ + (the main program is in Ada iif the adainit symbol is found). */ enum language -ada_update_initial_language (enum language lang, - struct partial_symtab *main_pst) +ada_update_initial_language (enum language lang) { if (lookup_minimal_symbol ("adainit", (const char *) NULL, (struct objfile *) NULL) != NULL) @@ -805,6 +846,7 @@ ada_fold_name (const char *name) else { int i; + for (i = 0; i <= len; i += 1) fold_buffer[i] = tolower (name[i]); } @@ -835,6 +877,7 @@ ada_remove_trailing_digits (const char *encoded, int *len) if (*len > 1 && isdigit (encoded[*len - 1])) { int i = *len - 2; + while (i > 0 && isdigit (encoded[i])) i--; if (i >= 0 && encoded[i] == '.') @@ -870,6 +913,26 @@ ada_remove_po_subprogram_suffix (const char *encoded, int *len) *len = *len - 1; } +/* Remove trailing X[bn]* suffixes (indicating names in package bodies). */ + +static void +ada_remove_Xbn_suffix (const char *encoded, int *len) +{ + int i = *len - 1; + + while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n')) + i--; + + if (encoded[i] != 'X') + return; + + if (i == 0) + return; + + if (isalnum (encoded[i-1])) + *len = i; +} + /* If ENCODED follows the GNAT entity encoding conventions, then return the decoded form of ENCODED. Otherwise, return "<%s>" where "%s" is replaced by ENCODED. @@ -926,6 +989,13 @@ ada_decode (const char *encoded) if (len0 > 3 && strncmp (encoded + len0 - 3, "TKB", 3) == 0) len0 -= 3; + /* Remove any trailing TB suffix. The TB suffix is slightly different + from the TKB suffix because it is used for non-anonymous task + bodies. */ + + if (len0 > 2 && strncmp (encoded + len0 - 2, "TB", 2) == 0) + len0 -= 2; + /* Remove trailing "B" suffixes. */ /* FIXME: brobecker/2006-04-19: Not sure what this are used for... */ @@ -964,6 +1034,7 @@ ada_decode (const char *encoded) if (at_start_name && encoded[i] == 'O') { int k; + for (k = 0; ada_opname_table[k].encoded != NULL; k += 1) { int op_len = strlen (ada_opname_table[k].encoded); @@ -1140,12 +1211,15 @@ ada_decode_symbol (const struct general_symbol_info *gsymbol) { char **resultp = (char **) &gsymbol->language_specific.cplus_specific.demangled_name; + if (*resultp == NULL) { const char *decoded = ada_decode (gsymbol->name); + if (gsymbol->obj_section != NULL) { struct objfile *objf = gsymbol->obj_section->objfile; + *resultp = obsavestring (decoded, strlen (decoded), &objf->objfile_obstack); } @@ -1157,6 +1231,7 @@ ada_decode_symbol (const struct general_symbol_info *gsymbol) { char **slot = (char **) htab_find_slot (decoded_names_store, decoded, INSERT); + if (*slot == NULL) *slot = xstrdup (decoded); *resultp = *slot; @@ -1189,6 +1264,7 @@ ada_match_name (const char *sym_name, const char *name, int wild) else { int len_name = strlen (name); + return (strncmp (sym_name, name, len_name) == 0 && is_name_suffix (sym_name + len_name)) || (strncmp (sym_name, "_ada_", 5) == 0 @@ -1200,6 +1276,61 @@ ada_match_name (const char *sym_name, const char *name, int wild) /* Arrays */ +/* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure + generated by the GNAT compiler to describe the index type used + for each dimension of an array, check whether it follows the latest + known encoding. If not, fix it up to conform to the latest encoding. + Otherwise, do nothing. This function also does nothing if + INDEX_DESC_TYPE is NULL. + + The GNAT encoding used to describle the array index type evolved a bit. + Initially, the information would be provided through the name of each + field of the structure type only, while the type of these fields was + described as unspecified and irrelevant. The debugger was then expected + to perform a global type lookup using the name of that field in order + to get access to the full index type description. Because these global + lookups can be very expensive, the encoding was later enhanced to make + the global lookup unnecessary by defining the field type as being + the full index type description. + + The purpose of this routine is to allow us to support older versions + of the compiler by detecting the use of the older encoding, and by + fixing up the INDEX_DESC_TYPE to follow the new one (at this point, + we essentially replace each field's meaningless type by the associated + index subtype). */ + +void +ada_fixup_array_indexes_type (struct type *index_desc_type) +{ + int i; + + if (index_desc_type == NULL) + return; + gdb_assert (TYPE_NFIELDS (index_desc_type) > 0); + + /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient + to check one field only, no need to check them all). If not, return + now. + + If our INDEX_DESC_TYPE was generated using the older encoding, + the field type should be a meaningless integer type whose name + is not equal to the field name. */ + if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL + && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)), + TYPE_FIELD_NAME (index_desc_type, 0)) == 0) + return; + + /* Fixup each field of INDEX_DESC_TYPE. */ + for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++) + { + char *name = TYPE_FIELD_NAME (index_desc_type, i); + struct type *raw_type = ada_check_typedef (ada_find_any_type (name)); + + if (raw_type) + TYPE_FIELD_TYPE (index_desc_type, i) = raw_type; + } +} + /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors. */ static char *bound_name[] = { @@ -1257,6 +1388,7 @@ static struct type * thin_descriptor_type (struct type *type) { struct type *base_type = desc_base_type (type); + if (base_type == NULL) return NULL; if (is_suffix (ada_type_name (base_type), "___XVE")) @@ -1264,6 +1396,7 @@ thin_descriptor_type (struct type *type) else { struct type *alt_type = ada_find_parallel_type (base_type, "___XVE"); + if (alt_type == NULL) return base_type; else @@ -1278,6 +1411,7 @@ thin_data_pntr (struct value *val) { struct type *type = value_type (val); struct type *data_type = desc_data_target_type (thin_descriptor_type (type)); + data_type = lookup_pointer_type (data_type); if (TYPE_CODE (type) == TYPE_CODE_PTR) @@ -1333,6 +1467,7 @@ static struct value * desc_bounds (struct value *arr) { struct type *type = ada_check_typedef (value_type (arr)); + if (is_thin_pntr (type)) { struct type *bounds_type = @@ -1417,6 +1552,7 @@ static struct value * desc_data (struct value *arr) { struct type *type = value_type (arr); + if (is_thin_pntr (type)) return thin_data_pntr (arr); else if (is_thick_pntr (type)) @@ -1595,15 +1731,23 @@ ada_is_bogus_array_descriptor (struct type *type) struct type * ada_type_of_array (struct value *arr, int bounds) { - if (ada_is_packed_array_type (value_type (arr))) - return decode_packed_array_type (value_type (arr)); + if (ada_is_constrained_packed_array_type (value_type (arr))) + return decode_constrained_packed_array_type (value_type (arr)); if (!ada_is_array_descriptor_type (value_type (arr))) return value_type (arr); if (!bounds) - return - ada_check_typedef (desc_data_target_type (value_type (arr))); + { + struct type *array_type = + ada_check_typedef (desc_data_target_type (value_type (arr))); + + if (ada_is_unconstrained_packed_array_type (value_type (arr))) + TYPE_FIELD_BITSIZE (array_type, 0) = + decode_packed_array_bitsize (value_type (arr)); + + return array_type; + } else { struct type *elt_type; @@ -1625,12 +1769,16 @@ ada_type_of_array (struct value *arr, int bounds) struct type *array_type = alloc_type_copy (value_type (arr)); struct value *low = desc_one_bound (descriptor, arity, 0); struct value *high = desc_one_bound (descriptor, arity, 1); - arity -= 1; + arity -= 1; create_range_type (range_type, value_type (low), longest_to_int (value_as_long (low)), longest_to_int (value_as_long (high))); elt_type = create_array_type (array_type, elt_type, range_type); + + if (ada_is_unconstrained_packed_array_type (value_type (arr))) + TYPE_FIELD_BITSIZE (elt_type, 0) = + decode_packed_array_bitsize (value_type (arr)); } return lookup_pointer_type (elt_type); @@ -1648,12 +1796,13 @@ ada_coerce_to_simple_array_ptr (struct value *arr) if (ada_is_array_descriptor_type (value_type (arr))) { struct type *arrType = ada_type_of_array (arr, 1); + if (arrType == NULL) return NULL; return value_cast (arrType, value_copy (desc_data (arr))); } - else if (ada_is_packed_array_type (value_type (arr))) - return decode_packed_array (arr); + else if (ada_is_constrained_packed_array_type (value_type (arr))) + return decode_constrained_packed_array (arr); else return arr; } @@ -1668,13 +1817,14 @@ ada_coerce_to_simple_array (struct value *arr) if (ada_is_array_descriptor_type (value_type (arr))) { struct value *arrVal = ada_coerce_to_simple_array_ptr (arr); + if (arrVal == NULL) error (_("Bounds unavailable for null array pointer.")); check_size (TYPE_TARGET_TYPE (value_type (arrVal))); return value_ind (arrVal); } - else if (ada_is_packed_array_type (value_type (arr))) - return decode_packed_array (arr); + else if (ada_is_constrained_packed_array_type (value_type (arr))) + return decode_constrained_packed_array (arr); else return arr; } @@ -1686,8 +1836,8 @@ ada_coerce_to_simple_array (struct value *arr) struct type * ada_coerce_to_simple_array_type (struct type *type) { - if (ada_is_packed_array_type (type)) - return decode_packed_array_type (type); + if (ada_is_constrained_packed_array_type (type)) + return decode_constrained_packed_array_type (type); if (ada_is_array_descriptor_type (type)) return ada_check_typedef (desc_data_target_type (type)); @@ -1697,8 +1847,8 @@ ada_coerce_to_simple_array_type (struct type *type) /* Non-zero iff TYPE represents a standard GNAT packed-array type. */ -int -ada_is_packed_array_type (struct type *type) +static int +ada_is_packed_array_type (struct type *type) { if (type == NULL) return 0; @@ -1709,6 +1859,54 @@ ada_is_packed_array_type (struct type *type) && strstr (ada_type_name (type), "___XP") != NULL; } +/* Non-zero iff TYPE represents a standard GNAT constrained + packed-array type. */ + +int +ada_is_constrained_packed_array_type (struct type *type) +{ + return ada_is_packed_array_type (type) + && !ada_is_array_descriptor_type (type); +} + +/* Non-zero iff TYPE represents an array descriptor for a + unconstrained packed-array type. */ + +static int +ada_is_unconstrained_packed_array_type (struct type *type) +{ + return ada_is_packed_array_type (type) + && ada_is_array_descriptor_type (type); +} + +/* Given that TYPE encodes a packed array type (constrained or unconstrained), + return the size of its elements in bits. */ + +static long +decode_packed_array_bitsize (struct type *type) +{ + char *raw_name = ada_type_name (ada_check_typedef (type)); + char *tail; + long bits; + + if (!raw_name) + raw_name = ada_type_name (desc_base_type (type)); + + if (!raw_name) + return 0; + + tail = strstr (raw_name, "___XP"); + + if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1) + { + lim_warning + (_("could not understand bit size information on packed array")); + return 0; + } + + return bits; +} + /* Given that TYPE is a standard GDB array type with all bounds filled in, and that the element size of its ultimate scalar constituents (that is, either its elements, or, if it is an array of arrays, its @@ -1719,7 +1917,7 @@ ada_is_packed_array_type (struct type *type) in bits. */ static struct type * -packed_array_type (struct type *type, long *elt_bits) +constrained_packed_array_type (struct type *type, long *elt_bits) { struct type *new_elt_type; struct type *new_type; @@ -1730,8 +1928,9 @@ packed_array_type (struct type *type, long *elt_bits) return type; new_type = alloc_type_copy (type); - new_elt_type = packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)), - elt_bits); + new_elt_type = + constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)), + elt_bits); create_array_type (new_type, new_elt_type, TYPE_INDEX_TYPE (type)); TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits; TYPE_NAME (new_type) = ada_type_name (type); @@ -1752,19 +1951,17 @@ packed_array_type (struct type *type, long *elt_bits) return new_type; } -/* The array type encoded by TYPE, where ada_is_packed_array_type (TYPE). */ +/* The array type encoded by TYPE, where + ada_is_constrained_packed_array_type (TYPE). */ static struct type * -decode_packed_array_type (struct type *type) +decode_constrained_packed_array_type (struct type *type) { - struct symbol *sym; - struct block **blocks; char *raw_name = ada_type_name (ada_check_typedef (type)); char *name; char *tail; struct type *shadow_type; long bits; - int i, n; if (!raw_name) raw_name = ada_type_name (desc_base_type (type)); @@ -1779,13 +1976,13 @@ decode_packed_array_type (struct type *type) memcpy (name, raw_name, tail - raw_name); name[tail - raw_name] = '\000'; - sym = standard_lookup (name, get_selected_block (0), VAR_DOMAIN); - if (sym == NULL || SYMBOL_TYPE (sym) == NULL) + shadow_type = ada_find_parallel_type_with_name (type, name); + + if (shadow_type == NULL) { lim_warning (_("could not find bounds information on packed array")); return NULL; } - shadow_type = SYMBOL_TYPE (sym); CHECK_TYPEDEF (shadow_type); if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY) @@ -1794,24 +1991,18 @@ decode_packed_array_type (struct type *type) return NULL; } - if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1) - { - lim_warning - (_("could not understand bit size information on packed array")); - return NULL; - } - - return packed_array_type (shadow_type, &bits); + bits = decode_packed_array_bitsize (type); + return constrained_packed_array_type (shadow_type, &bits); } -/* Given that ARR is a struct value *indicating a GNAT packed array, - returns a simple array that denotes that array. Its type is a +/* Given that ARR is a struct value *indicating a GNAT constrained packed + array, returns a simple array that denotes that array. Its type is a standard GDB array type except that the BITSIZEs of the array target types are set to the number of bits in each element, and the type length is set appropriately. */ static struct value * -decode_packed_array (struct value *arr) +decode_constrained_packed_array (struct value *arr) { struct type *type; @@ -1826,7 +2017,7 @@ decode_packed_array (struct value *arr) if (TYPE_CODE (value_type (arr)) == TYPE_CODE_PTR) arr = value_ind (arr); - type = decode_packed_array_type (value_type (arr)); + type = decode_constrained_packed_array_type (value_type (arr)); if (type == NULL) { error (_("can't unpack array")); @@ -1982,6 +2173,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr, if (obj != NULL) { CORE_ADDR new_addr; + set_value_component_location (v, obj); new_addr = value_address (obj) + offset; set_value_bitpos (v, bit_offset + value_bitpos (obj)); @@ -2058,6 +2250,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr, 1; /* Sign-extend bits for this byte. */ unsigned int signMask = sign & ~unusedMSMask; + accum |= (((bytes[src] >> unusedLS) & unusedMSMask) | signMask) << accumSize; accumSize += HOST_CHAR_BIT - unusedLS; @@ -2110,6 +2303,7 @@ move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source, while (n > 0) { int unused_right; + accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source; accum_bits += HOST_CHAR_BIT; source += 1; @@ -2200,9 +2394,8 @@ ada_value_assign (struct value *toval, struct value *fromval) move_bits (buffer, value_bitpos (toval), value_contents (fromval), 0, bits, 0); write_memory (to_addr, buffer, len); - if (deprecated_memory_changed_hook) - deprecated_memory_changed_hook (to_addr, len); - + observer_notify_memory_changed (to_addr, len, buffer); + val = value_copy (toval); memcpy (value_contents_raw (val), value_contents (fromval), TYPE_LENGTH (type)); @@ -2311,13 +2504,14 @@ ada_value_slice_from_ptr (struct value *array_ptr, struct type *type, int low, int high) { CORE_ADDR base = value_as_address (array_ptr) - + ((low - TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type))) + + ((low - ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type))) * TYPE_LENGTH (TYPE_TARGET_TYPE (type))); struct type *index_type = create_range_type (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type)), low, high); struct type *slice_type = create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type); + return value_at_lazy (slice_type, base); } @@ -2330,6 +2524,7 @@ ada_value_slice (struct value *array, int low, int high) create_range_type (NULL, TYPE_INDEX_TYPE (type), low, high); struct type *slice_type = create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type); + return value_cast (slice_type, value_slice (array, low, high - low + 1)); } @@ -2454,13 +2649,12 @@ static LONGEST ada_array_bound_from_type (struct type * arr_type, int n, int which) { struct type *type, *elt_type, *index_type_desc, *index_type; - LONGEST retval; int i; gdb_assert (which == 0 || which == 1); - if (ada_is_packed_array_type (arr_type)) - arr_type = decode_packed_array_type (arr_type); + if (ada_is_constrained_packed_array_type (arr_type)) + arr_type = decode_constrained_packed_array_type (arr_type); if (arr_type == NULL || !ada_is_simple_array_type (arr_type)) return (LONGEST) - which; @@ -2475,28 +2669,17 @@ ada_array_bound_from_type (struct type * arr_type, int n, int which) elt_type = TYPE_TARGET_TYPE (type); index_type_desc = ada_find_parallel_type (type, "___XA"); + ada_fixup_array_indexes_type (index_type_desc); if (index_type_desc != NULL) - index_type = to_fixed_range_type (TYPE_FIELD_NAME (index_type_desc, n - 1), - NULL, TYPE_INDEX_TYPE (elt_type)); + index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1), + NULL); else index_type = TYPE_INDEX_TYPE (elt_type); - switch (TYPE_CODE (index_type)) - { - case TYPE_CODE_RANGE: - retval = which == 0 ? TYPE_LOW_BOUND (index_type) - : TYPE_HIGH_BOUND (index_type); - break; - case TYPE_CODE_ENUM: - retval = which == 0 ? TYPE_FIELD_BITPOS (index_type, 0) - : TYPE_FIELD_BITPOS (index_type, - TYPE_NFIELDS (index_type) - 1); - break; - default: - internal_error (__FILE__, __LINE__, _("invalid type code of index type")); - } - - return retval; + return + (LONGEST) (which == 0 + ? ada_discrete_type_low_bound (index_type) + : ada_discrete_type_high_bound (index_type)); } /* Given that arr is an array value, returns the lower bound of the @@ -2509,8 +2692,8 @@ ada_array_bound (struct value *arr, int n, int which) { struct type *arr_type = value_type (arr); - if (ada_is_packed_array_type (arr_type)) - return ada_array_bound (decode_packed_array (arr), n, which); + if (ada_is_constrained_packed_array_type (arr_type)) + return ada_array_bound (decode_constrained_packed_array (arr), n, which); else if (ada_is_simple_array_type (arr_type)) return ada_array_bound_from_type (arr_type, n, which); else @@ -2528,8 +2711,8 @@ ada_array_length (struct value *arr, int n) { struct type *arr_type = ada_check_typedef (value_type (arr)); - if (ada_is_packed_array_type (arr_type)) - return ada_array_length (decode_packed_array (arr), n); + if (ada_is_constrained_packed_array_type (arr_type)) + return ada_array_length (decode_constrained_packed_array (arr), n); if (ada_is_simple_array_type (arr_type)) return (ada_array_bound_from_type (arr_type, n, 1) @@ -2549,6 +2732,7 @@ empty_array (struct type *arr_type, int low) create_range_type (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type)), low, low - 1); struct type *elt_type = ada_array_element_type (arr_type, 1); + return allocate_value (create_array_type (NULL, elt_type, index_type)); } @@ -2950,10 +3134,9 @@ resolve_subexp (struct expression **expp, int *pos, int deprocedure_p, /* Return non-zero if formal type FTYPE matches actual type ATYPE. If MAY_DEREF is non-zero, the formal may be a pointer and the actual - a non-pointer. A type of 'void' (which is never a valid expression type) - by convention matches anything. */ + a non-pointer. */ /* The term "match" here is rather loose. The match is heuristic and - liberal. FIXME: TOO liberal, in fact. */ + liberal. */ static int ada_type_match (struct type *ftype, struct type *atype, int may_deref) @@ -2966,14 +3149,10 @@ ada_type_match (struct type *ftype, struct type *atype, int may_deref) if (TYPE_CODE (atype) == TYPE_CODE_REF) atype = TYPE_TARGET_TYPE (atype); - if (TYPE_CODE (ftype) == TYPE_CODE_VOID - || TYPE_CODE (atype) == TYPE_CODE_VOID) - return 1; - switch (TYPE_CODE (ftype)) { default: - return 1; + return TYPE_CODE (ftype) == TYPE_CODE (atype); case TYPE_CODE_PTR: if (TYPE_CODE (atype) == TYPE_CODE_PTR) return ada_type_match (TYPE_TARGET_TYPE (ftype), @@ -3038,7 +3217,8 @@ ada_args_match (struct symbol *func, struct value **actuals, int n_actuals) return 0; else { - struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type, i)); + struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type, + i)); struct type *atype = ada_check_typedef (value_type (actuals[i])); if (!ada_type_match (ftype, atype, 1)) @@ -3146,6 +3326,7 @@ encoded_ordered_before (char *N0, char *N1) else { int k0, k1; + for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1) ; for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1) @@ -3154,6 +3335,7 @@ encoded_ordered_before (char *N0, char *N1) && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000') { int n0, n1; + n0 = k0; while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_') n0 -= 1; @@ -3174,6 +3356,7 @@ static void sort_choices (struct ada_symbol_info syms[], int nsyms) { int i; + for (i = 1; i < nsyms; i += 1) { struct ada_symbol_info sym = syms[i]; @@ -3238,6 +3421,7 @@ See set/show multiple-symbol.")); { struct symtab_and_line sal = find_function_start_sal (syms[i].sym, 1); + if (sal.symtab == NULL) printf_unfiltered (_("[%d] %s at :%d\n"), i + first_choice, @@ -3371,6 +3555,7 @@ get_selections (int *choices, int n_choices, int max_results, if (j < 0 || choice != choices[j]) { int k; + for (k = n_chosen - 1; k > j; k -= 1) choices[k + 1] = choices[k]; choices[j + 1] = choice; @@ -3501,6 +3686,7 @@ discrete_type_p (struct type *type) case TYPE_CODE_INT: case TYPE_CODE_RANGE: case TYPE_CODE_ENUM: + case TYPE_CODE_BOOL: return 1; default: return 0; @@ -3758,7 +3944,7 @@ ensure_lval (struct value *val, struct gdbarch *gdbarch, CORE_ADDR *sp) } VALUE_LVAL (val) = lval_memory; - write_memory (value_address (val), value_contents_raw (val), len); + write_memory (value_address (val), value_contents (val), len); } return val; @@ -3789,6 +3975,7 @@ ada_convert_actual (struct value *actual, struct type *formal_type0, || TYPE_CODE (formal_type) == TYPE_CODE_REF) { struct value *result; + if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY && ada_is_array_descriptor_type (actual_target)) result = desc_data (actual); @@ -3797,6 +3984,7 @@ ada_convert_actual (struct value *actual, struct type *formal_type0, if (VALUE_LVAL (actual) != lval_memory) { struct value *val; + actual_type = ada_check_typedef (value_type (actual)); val = allocate_value (actual_type); memcpy ((char *) value_contents_raw (val), @@ -3816,6 +4004,25 @@ ada_convert_actual (struct value *actual, struct type *formal_type0, return actual; } +/* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of + type TYPE. This is usually an inefficient no-op except on some targets + (such as AVR) where the representation of a pointer and an address + differs. */ + +static CORE_ADDR +value_pointer (struct value *value, struct type *type) +{ + struct gdbarch *gdbarch = get_type_arch (type); + unsigned len = TYPE_LENGTH (type); + gdb_byte *buf = alloca (len); + CORE_ADDR addr; + + addr = value_address (value); + gdbarch_address_to_pointer (gdbarch, type, buf, addr); + addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch)); + return addr; +} + /* Push a descriptor of type TYPE for array value ARR on the stack at *SP, updating *SP to reflect the new descriptor. Return either @@ -3851,13 +4058,15 @@ make_array_descriptor (struct type *type, struct value *arr, modify_general_field (value_type (descriptor), value_contents_writeable (descriptor), - value_address (ensure_lval (arr, gdbarch, sp)), + value_pointer (ensure_lval (arr, gdbarch, sp), + TYPE_FIELD_TYPE (desc_type, 0)), fat_pntr_data_bitpos (desc_type), fat_pntr_data_bitsize (desc_type)); modify_general_field (value_type (descriptor), value_contents_writeable (descriptor), - value_address (bounds), + value_pointer (bounds, + TYPE_FIELD_TYPE (desc_type, 1)), fat_pntr_bounds_bitpos (desc_type), fat_pntr_bounds_bitsize (desc_type)); @@ -3964,6 +4173,7 @@ lesseq_defined_than (struct symbol *sym0, struct symbol *sym1) char *name0 = SYMBOL_LINKAGE_NAME (sym0); char *name1 = SYMBOL_LINKAGE_NAME (sym1); int len0 = strlen (name0); + return TYPE_CODE (type0) == TYPE_CODE (type1) && (equiv_types (type0, type1) @@ -3987,7 +4197,6 @@ add_defn_to_vec (struct obstack *obstackp, struct block *block) { int i; - size_t tmp; struct ada_symbol_info *prevDefns = defns_collected (obstackp, 0); /* Do not try to complete stub types, as the debugger is probably @@ -4042,143 +4251,6 @@ defns_collected (struct obstack *obstackp, int finish) return (struct ada_symbol_info *) obstack_base (obstackp); } -/* Look, in partial_symtab PST, for symbol NAME in given namespace. - Check the global symbols if GLOBAL, the static symbols if not. - Do wild-card match if WILD. */ - -static struct partial_symbol * -ada_lookup_partial_symbol (struct partial_symtab *pst, const char *name, - int global, domain_enum namespace, int wild) -{ - struct partial_symbol **start; - int name_len = strlen (name); - int length = (global ? pst->n_global_syms : pst->n_static_syms); - int i; - - if (length == 0) - { - return (NULL); - } - - start = (global ? - pst->objfile->global_psymbols.list + pst->globals_offset : - pst->objfile->static_psymbols.list + pst->statics_offset); - - if (wild) - { - for (i = 0; i < length; i += 1) - { - struct partial_symbol *psym = start[i]; - - if (symbol_matches_domain (SYMBOL_LANGUAGE (psym), - SYMBOL_DOMAIN (psym), namespace) - && wild_match (name, name_len, SYMBOL_LINKAGE_NAME (psym))) - return psym; - } - return NULL; - } - else - { - if (global) - { - int U; - i = 0; - U = length - 1; - while (U - i > 4) - { - int M = (U + i) >> 1; - struct partial_symbol *psym = start[M]; - if (SYMBOL_LINKAGE_NAME (psym)[0] < name[0]) - i = M + 1; - else if (SYMBOL_LINKAGE_NAME (psym)[0] > name[0]) - U = M - 1; - else if (strcmp (SYMBOL_LINKAGE_NAME (psym), name) < 0) - i = M + 1; - else - U = M; - } - } - else - i = 0; - - while (i < length) - { - struct partial_symbol *psym = start[i]; - - if (symbol_matches_domain (SYMBOL_LANGUAGE (psym), - SYMBOL_DOMAIN (psym), namespace)) - { - int cmp = strncmp (name, SYMBOL_LINKAGE_NAME (psym), name_len); - - if (cmp < 0) - { - if (global) - break; - } - else if (cmp == 0 - && is_name_suffix (SYMBOL_LINKAGE_NAME (psym) - + name_len)) - return psym; - } - i += 1; - } - - if (global) - { - int U; - i = 0; - U = length - 1; - while (U - i > 4) - { - int M = (U + i) >> 1; - struct partial_symbol *psym = start[M]; - if (SYMBOL_LINKAGE_NAME (psym)[0] < '_') - i = M + 1; - else if (SYMBOL_LINKAGE_NAME (psym)[0] > '_') - U = M - 1; - else if (strcmp (SYMBOL_LINKAGE_NAME (psym), "_ada_") < 0) - i = M + 1; - else - U = M; - } - } - else - i = 0; - - while (i < length) - { - struct partial_symbol *psym = start[i]; - - if (symbol_matches_domain (SYMBOL_LANGUAGE (psym), - SYMBOL_DOMAIN (psym), namespace)) - { - int cmp; - - cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (psym)[0]; - if (cmp == 0) - { - cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (psym), 5); - if (cmp == 0) - cmp = strncmp (name, SYMBOL_LINKAGE_NAME (psym) + 5, - name_len); - } - - if (cmp < 0) - { - if (global) - break; - } - else if (cmp == 0 - && is_name_suffix (SYMBOL_LINKAGE_NAME (psym) - + name_len + 5)) - return psym; - } - i += 1; - } - } - return NULL; -} - /* Return a minimal symbol matching NAME according to Ada decoding rules. Returns NULL if there is no such minimal symbol. Names prefixed with "standard__" are handled specially: "standard__" is @@ -4229,6 +4301,7 @@ static int is_nondebugging_type (struct type *type) { char *name = ada_type_name (type); + return (name != NULL && strcmp (name, "") == 0); } @@ -4464,6 +4537,7 @@ remove_irrelevant_renamings (struct ada_symbol_info *syms, { int name_len = suffix - name; int j; + is_new_style_renaming = 1; for (j = 0; j < nsyms; j += 1) if (i != j && syms[j].sym != NULL @@ -4512,6 +4586,7 @@ remove_irrelevant_renamings (struct ada_symbol_info *syms, && old_renaming_is_invisible (syms[i].sym, current_function_name)) { int j; + for (j = i + 1; j < nsyms; j += 1) syms[j - 1] = syms[j]; nsyms -= 1; @@ -4557,6 +4632,31 @@ ada_add_local_symbols (struct obstack *obstackp, const char *name, add_symbols_from_enclosing_procs (obstackp, name, domain, wild_match); } +/* An object of this type is used as the user_data argument when + calling the map_ada_symtabs method. */ + +struct ada_psym_data +{ + struct obstack *obstackp; + const char *name; + domain_enum domain; + int global; + int wild_match; +}; + +/* Callback function for map_ada_symtabs. */ + +static void +ada_add_psyms (struct objfile *objfile, struct symtab *s, void *user_data) +{ + struct ada_psym_data *data = user_data; + const int block_kind = data->global ? GLOBAL_BLOCK : STATIC_BLOCK; + + ada_add_block_symbols (data->obstackp, + BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), block_kind), + data->name, data->domain, objfile, data->wild_match); +} + /* Add to OBSTACKP all non-local symbols whose name and domain match NAME and DOMAIN respectively. The search is performed on GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK symbols otherwise. */ @@ -4564,26 +4664,24 @@ ada_add_local_symbols (struct obstack *obstackp, const char *name, static void ada_add_non_local_symbols (struct obstack *obstackp, const char *name, domain_enum domain, int global, - int wild_match) + int is_wild_match) { struct objfile *objfile; - struct partial_symtab *ps; + struct ada_psym_data data; - ALL_PSYMTABS (objfile, ps) - { - QUIT; - if (ps->readin - || ada_lookup_partial_symbol (ps, name, global, domain, wild_match)) - { - struct symtab *s = PSYMTAB_TO_SYMTAB (ps); - const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK; + data.obstackp = obstackp; + data.name = name; + data.domain = domain; + data.global = global; + data.wild_match = is_wild_match; - if (s == NULL || !s->primary) - continue; - ada_add_block_symbols (obstackp, - BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), block_kind), - name, domain, objfile, wild_match); - } + ALL_OBJFILES (objfile) + { + if (objfile->sf) + objfile->sf->qf->map_ada_symtabs (objfile, wild_match, is_name_suffix, + ada_add_psyms, name, + global, domain, + is_wild_match, &data); } } @@ -4727,14 +4825,10 @@ ada_lookup_symbol (const char *name, const struct block *block0, static struct symbol * ada_lookup_symbol_nonlocal (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain) { - if (linkage_name == NULL) - linkage_name = name; - return ada_lookup_symbol (linkage_name, block_static_block (block), domain, - NULL); + return ada_lookup_symbol (name, block_static_block (block), domain, NULL); } @@ -4910,6 +5004,7 @@ wild_match (const char *patn0, int patn_len, const char *name0) { char* match; const char* start; + start = name0; while (1) { @@ -4951,6 +5046,7 @@ ada_add_block_symbols (struct obstack *obstackp, if (wild) { struct symbol *sym; + ALL_BLOCK_SYMBOLS (block, iter, sym) { if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), @@ -4979,6 +5075,7 @@ ada_add_block_symbols (struct obstack *obstackp, SYMBOL_DOMAIN (sym), domain)) { int cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym), name_len); + if (cmp == 0 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len)) { @@ -5074,7 +5171,6 @@ symbol_completion_match (const char *sym_name, const char *text, int text_len, int wild_match, int encoded) { - char *result; const int verbatim_match = (text[0] == '<'); int match = 0; @@ -5146,7 +5242,6 @@ symbol_completion_match (const char *sym_name, return sym_name; } -typedef char *char_ptr; DEF_VEC_P (char_ptr); /* A companion function to ada_make_symbol_completion_list(). @@ -5204,6 +5299,30 @@ symbol_completion_add (VEC(char_ptr) **sv, VEC_safe_push (char_ptr, *sv, completion); } +/* An object of this type is passed as the user_data argument to the + map_partial_symbol_names method. */ +struct add_partial_datum +{ + VEC(char_ptr) **completions; + char *text; + int text_len; + char *text0; + char *word; + int wild_match; + int encoded; +}; + +/* A callback for map_partial_symbol_names. */ +static void +ada_add_partial_symbol_completions (const char *name, void *user_data) +{ + struct add_partial_datum *data = user_data; + + symbol_completion_add (data->completions, name, + data->text, data->text_len, data->text0, data->word, + data->wild_match, data->encoded); +} + /* Return a list of possible symbol names completing TEXT0. The list is NULL terminated. WORD is the entire command on which completion is made. */ @@ -5218,7 +5337,6 @@ ada_make_symbol_completion_list (char *text0, char *word) VEC(char_ptr) *completions = VEC_alloc (char_ptr, 128); struct symbol *sym; struct symtab *s; - struct partial_symtab *ps; struct minimal_symbol *msymbol; struct objfile *objfile; struct block *b, *surrounding_static_block = 0; @@ -5250,34 +5368,17 @@ ada_make_symbol_completion_list (char *text0, char *word) } /* First, look at the partial symtab symbols. */ - ALL_PSYMTABS (objfile, ps) { - struct partial_symbol **psym; - - /* If the psymtab's been read in we'll get it when we search - through the blockvector. */ - if (ps->readin) - continue; - - for (psym = objfile->global_psymbols.list + ps->globals_offset; - psym < (objfile->global_psymbols.list + ps->globals_offset - + ps->n_global_syms); psym++) - { - QUIT; - symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (*psym), - text, text_len, text0, word, - wild_match, encoded); - } - - for (psym = objfile->static_psymbols.list + ps->statics_offset; - psym < (objfile->static_psymbols.list + ps->statics_offset - + ps->n_static_syms); psym++) - { - QUIT; - symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (*psym), - text, text_len, text0, word, - wild_match, encoded); - } + struct add_partial_datum data; + + data.completions = &completions; + data.text = text; + data.text_len = text_len; + data.text0 = text0; + data.word = word; + data.wild_match = wild_match; + data.encoded = encoded; + map_partial_symbol_names (ada_add_partial_symbol_completions, &data); } /* At this point scan through the misc symbol vectors and add each @@ -5431,6 +5532,7 @@ ada_is_tag_type (struct type *type) else { const char *name = ada_type_name (TYPE_TARGET_TYPE (type)); + return (name != NULL && strcmp (name, "ada__tags__dispatch_table") == 0); } @@ -5461,8 +5563,9 @@ value_tag_from_contents_and_address (struct type *type, const gdb_byte *valaddr, CORE_ADDR address) { - int tag_byte_offset, dummy1, dummy2; + int tag_byte_offset; struct type *tag_type; + if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset, NULL, NULL, NULL)) { @@ -5480,6 +5583,7 @@ static struct type * type_from_tag (struct value *tag) { const char *type_name = ada_tag_name (tag); + if (type_name != NULL) return ada_find_any_type (ada_encode (type_name)); return NULL; @@ -5507,6 +5611,7 @@ ada_tag_name_1 (void *args0) static char name[1024]; char *p; struct value *val; + args->name = NULL; val = ada_value_struct_elt (args->tag, "tsd", 1); if (val == NULL) @@ -5522,6 +5627,18 @@ ada_tag_name_1 (void *args0) return 0; } +/* Return the "ada__tags__type_specific_data" type. */ + +static struct type * +ada_get_tsd_type (struct inferior *inf) +{ + struct ada_inferior_data *data = get_ada_inferior_data (inf); + + if (data->tsd_type == 0) + data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data"); + return data->tsd_type; +} + /* Utility function for ada_tag_name_1 that tries the second representation for the dispatch table (in which there is no explicit 'tsd' field in the referent of the tag pointer, and instead @@ -5536,7 +5653,7 @@ ada_tag_name_2 (struct tag_args *args) struct value *val, *valp; args->name = NULL; - info_type = ada_find_any_type ("ada__tags__type_specific_data"); + info_type = ada_get_tsd_type (current_inferior()); if (info_type == NULL) return 0; info_type = lookup_pointer_type (lookup_pointer_type (info_type)); @@ -5558,12 +5675,13 @@ ada_tag_name_2 (struct tag_args *args) } /* The type name of the dynamic type denoted by the 'tag value TAG, as - * a C string. */ + a C string. */ const char * ada_tag_name (struct value *tag) { struct tag_args args; + if (!ada_is_tag_type (value_type (tag))) return NULL; args.tag = tag; @@ -5609,6 +5727,7 @@ int ada_is_parent_field (struct type *type, int field_num) { const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num); + return (name != NULL && (strncmp (name, "PARENT", 6) == 0 || strncmp (name, "_parent", 7) == 0)); @@ -5624,6 +5743,7 @@ int ada_is_wrapper_field (struct type *type, int field_num) { const char *name = TYPE_FIELD_NAME (type, field_num); + return (name != NULL && (strncmp (name, "PARENT", 6) == 0 || strcmp (name, "REP") == 0 @@ -5639,6 +5759,7 @@ int ada_is_variant_part (struct type *type, int field_num) { struct type *field_type = TYPE_FIELD_TYPE (type, field_num); + return (TYPE_CODE (field_type) == TYPE_CODE_UNION || (is_dynamic_field (type, field_num) && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) @@ -5654,6 +5775,7 @@ struct type * ada_variant_discrim_type (struct type *var_type, struct type *outer_type) { char *name = ada_variant_discrim_name (var_type); + return ada_lookup_struct_elt_type (outer_type, name, 1, 1, NULL); } @@ -5665,6 +5787,7 @@ int ada_is_others_clause (struct type *type, int field_num) { const char *name = TYPE_FIELD_NAME (type, field_num); + return (name != NULL && name[0] == 'O'); } @@ -5784,6 +5907,7 @@ ada_in_variant (LONGEST val, struct type *type, int field_num) case 'S': { LONGEST W; + if (!ada_scan_number (name, p + 1, &W, &p)) return 0; if (val == W) @@ -5793,6 +5917,7 @@ ada_in_variant (LONGEST val, struct type *type, int field_num) case 'R': { LONGEST L, U; + if (!ada_scan_number (name, p + 1, &L, &p) || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p)) return 0; @@ -5885,6 +6010,7 @@ find_struct_field (char *name, struct type *type, int offset, else if (name != NULL && field_name_match (t_field_name, name)) { int bit_size = TYPE_FIELD_BITSIZE (type, i); + if (field_type_p != NULL) *field_type_p = TYPE_FIELD_TYPE (type, i); if (byte_offset_p != NULL) @@ -5932,6 +6058,7 @@ static int num_visible_fields (struct type *type) { int n; + n = 0; find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n); return n; @@ -5948,8 +6075,8 @@ ada_search_struct_field (char *name, struct value *arg, int offset, struct type *type) { int i; - type = ada_check_typedef (type); + type = ada_check_typedef (type); for (i = 0; i < TYPE_NFIELDS (type); i += 1) { char *t_field_name = TYPE_FIELD_NAME (type, i); @@ -5966,6 +6093,7 @@ ada_search_struct_field (char *name, struct value *arg, int offset, ada_search_struct_field (name, arg, offset + TYPE_FIELD_BITPOS (type, i) / 8, TYPE_FIELD_TYPE (type, i)); + if (v != NULL) return v; } @@ -5974,7 +6102,8 @@ ada_search_struct_field (char *name, struct value *arg, int offset, { /* PNH: Do we ever get here? See find_struct_field. */ int j; - struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, i)); + struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, + i)); int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8; for (j = 0; j < TYPE_NFIELDS (field_type); j += 1) @@ -5983,6 +6112,7 @@ ada_search_struct_field (char *name, struct value *arg, int offset, (name, arg, var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8, TYPE_FIELD_TYPE (field_type, j)); + if (v != NULL) return v; } @@ -6029,6 +6159,7 @@ ada_index_struct_field_1 (int *index_p, struct value *arg, int offset, ada_index_struct_field_1 (index_p, arg, offset + TYPE_FIELD_BITPOS (type, i) / 8, TYPE_FIELD_TYPE (type, i)); + if (v != NULL) return v; } @@ -6235,7 +6366,8 @@ ada_lookup_struct_elt_type (struct type *type, char *name, int refok, else if (ada_is_variant_part (type, i)) { int j; - struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, i)); + struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, + i)); for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1) { @@ -6296,6 +6428,7 @@ static int is_unchecked_variant (struct type *var_type, struct type *outer_type) { char *discrim_name = ada_variant_discrim_name (var_type); + return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1, NULL) == NULL); } @@ -6380,6 +6513,7 @@ struct value * ada_value_ind (struct value *val0) { struct value *val = unwrap_value (value_ind (val0)); + return ada_to_fixed_value (val); } @@ -6392,6 +6526,7 @@ ada_coerce_ref (struct value *val0) if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF) { struct value *val = val0; + val = coerce_ref (val); val = unwrap_value (val); return ada_to_fixed_value (val); @@ -6511,12 +6646,14 @@ find_old_style_renaming_symbol (const char *name, struct block *block) the XR type name, we need to make sure that this suffix is not included. So do not include any suffix in the function name length below. */ - const int function_name_len = ada_name_prefix_len (function_name); + int function_name_len = ada_name_prefix_len (function_name); const int rename_len = function_name_len + 2 /* "__" */ + strlen (name) + 6 /* "___XR\0" */ ; /* Strip the suffix if necessary. */ - function_name[function_name_len] = '\0'; + ada_remove_trailing_digits (function_name, &function_name_len); + ada_remove_po_subprogram_suffix (function_name, &function_name_len); + ada_remove_Xbn_suffix (function_name, &function_name_len); /* Library-level functions are a special case, as GNAT adds a ``_ada_'' prefix to the function name to avoid namespace @@ -6524,15 +6661,20 @@ find_old_style_renaming_symbol (const char *name, struct block *block) have this prefix, so we need to skip this prefix if present. */ if (function_name_len > 5 /* "_ada_" */ && strstr (function_name, "_ada_") == function_name) - function_name = function_name + 5; + { + function_name += 5; + function_name_len -= 5; + } rename = (char *) alloca (rename_len * sizeof (char)); - xsnprintf (rename, rename_len * sizeof (char), "%s__%s___XR", - function_name, name); + strncpy (rename, function_name, function_name_len); + xsnprintf (rename + function_name_len, rename_len - function_name_len, + "__%s___XR", name); } else { const int rename_len = strlen (name) + 6; + rename = (char *) alloca (rename_len * sizeof (char)); xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name); } @@ -6558,7 +6700,7 @@ ada_prefer_type (struct type *type0, struct type *type1) return 0; else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL) return 1; - else if (ada_is_packed_array_type (type0)) + else if (ada_is_constrained_packed_array_type (type0)) return 1; else if (ada_is_array_descriptor_type (type0) && !ada_is_array_descriptor_type (type1)) @@ -6589,31 +6731,90 @@ ada_type_name (struct type *type) return TYPE_TAG_NAME (type); } -/* Find a parallel type to TYPE whose name is formed by appending +/* Search the list of "descriptive" types associated to TYPE for a type + whose name is NAME. */ + +static struct type * +find_parallel_type_by_descriptive_type (struct type *type, const char *name) +{ + struct type *result; + + /* If there no descriptive-type info, then there is no parallel type + to be found. */ + if (!HAVE_GNAT_AUX_INFO (type)) + return NULL; + + result = TYPE_DESCRIPTIVE_TYPE (type); + while (result != NULL) + { + char *result_name = ada_type_name (result); + + if (result_name == NULL) + { + warning (_("unexpected null name on descriptive type")); + return NULL; + } + + /* If the names match, stop. */ + if (strcmp (result_name, name) == 0) + break; + + /* Otherwise, look at the next item on the list, if any. */ + if (HAVE_GNAT_AUX_INFO (result)) + result = TYPE_DESCRIPTIVE_TYPE (result); + else + result = NULL; + } + + /* If we didn't find a match, see whether this is a packed array. With + older compilers, the descriptive type information is either absent or + irrelevant when it comes to packed arrays so the above lookup fails. + Fall back to using a parallel lookup by name in this case. */ + if (result == NULL && ada_is_constrained_packed_array_type (type)) + return ada_find_any_type (name); + + return result; +} + +/* Find a parallel type to TYPE with the specified NAME, using the + descriptive type taken from the debugging information, if available, + and otherwise using the (slower) name-based method. */ + +static struct type * +ada_find_parallel_type_with_name (struct type *type, const char *name) +{ + struct type *result = NULL; + + if (HAVE_GNAT_AUX_INFO (type)) + result = find_parallel_type_by_descriptive_type (type, name); + else + result = ada_find_any_type (name); + + return result; +} + +/* Same as above, but specify the name of the parallel type by appending SUFFIX to the name of TYPE. */ struct type * ada_find_parallel_type (struct type *type, const char *suffix) { - static char *name; - static size_t name_len = 0; + char *name, *typename = ada_type_name (type); int len; - char *typename = ada_type_name (type); if (typename == NULL) return NULL; len = strlen (typename); - GROW_VECT (name, name_len, len + strlen (suffix) + 1); + name = (char *) alloca (len + strlen (suffix) + 1); strcpy (name, typename); strcpy (name + len, suffix); - return ada_find_any_type (name); + return ada_find_parallel_type_with_name (type, name); } - /* If TYPE is a variable-size record type, return the corresponding template type describing its fields. Otherwise, return NULL. */ @@ -6628,6 +6829,7 @@ dynamic_template_type (struct type *type) else { int len = strlen (ada_type_name (type)); + if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0) return type; else @@ -6642,6 +6844,7 @@ static int is_dynamic_field (struct type *templ_type, int field_num) { const char *name = TYPE_FIELD_NAME (templ_type, field_num); + return name != NULL && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR && strstr (name, "___XVL") != NULL; @@ -6672,6 +6875,7 @@ static struct type * empty_record (struct type *template) { struct type *type = alloc_type_copy (template); + TYPE_CODE (type) = TYPE_CODE_STRUCT; TYPE_NFIELDS (type) = 0; TYPE_FIELDS (type) = NULL; @@ -6811,14 +7015,16 @@ ada_template_to_fixed_record_type_1 (struct type *type, } else { - TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f); + struct type *field_type = TYPE_FIELD_TYPE (type, f); + + TYPE_FIELD_TYPE (rtype, f) = field_type; TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f); if (TYPE_FIELD_BITSIZE (type, f) > 0) bit_incr = fld_bit_len = TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f); else bit_incr = fld_bit_len = - TYPE_LENGTH (TYPE_FIELD_TYPE (type, f)) * TARGET_CHAR_BIT; + TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT; } if (off + fld_bit_len > bit_len) bit_len = off + fld_bit_len; @@ -7007,6 +7213,7 @@ to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr, if (branch_type == NULL) { int f; + for (f = variant_field + 1; f < nfields; f += 1) TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f]; TYPE_NFIELDS (rtype) -= 1; @@ -7130,19 +7337,21 @@ to_fixed_array_type (struct type *type0, struct value *dval, { struct type *index_type_desc; struct type *result; - int packed_array_p; + int constrained_packed_array_p; if (TYPE_FIXED_INSTANCE (type0)) return type0; - packed_array_p = ada_is_packed_array_type (type0); - if (packed_array_p) - type0 = decode_packed_array_type (type0); + constrained_packed_array_p = ada_is_constrained_packed_array_type (type0); + if (constrained_packed_array_p) + type0 = decode_constrained_packed_array_type (type0); index_type_desc = ada_find_parallel_type (type0, "___XA"); + ada_fixup_array_indexes_type (index_type_desc); if (index_type_desc == NULL) { struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0)); + /* NOTE: elt_type---the fixed version of elt_type0---should never depend on the contents of the array in properly constructed debugging data. */ @@ -7159,7 +7368,7 @@ to_fixed_array_type (struct type *type0, struct value *dval, /* Make sure we always create a new array type when dealing with packed array types, since we're going to fix-up the array type length and element bitsize a little further down. */ - if (elt_type0 == elt_type && !packed_array_p) + if (elt_type0 == elt_type && !constrained_packed_array_p) result = type0; else result = create_array_type (alloc_type_copy (type0), @@ -7192,8 +7401,8 @@ to_fixed_array_type (struct type *type0, struct value *dval, for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1) { struct type *range_type = - to_fixed_range_type (TYPE_FIELD_NAME (index_type_desc, i), - dval, TYPE_INDEX_TYPE (elt_type0)); + to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval); + result = create_array_type (alloc_type_copy (elt_type0), result, range_type); elt_type0 = TYPE_TARGET_TYPE (elt_type0); @@ -7202,7 +7411,7 @@ to_fixed_array_type (struct type *type0, struct value *dval, error (_("array type with dynamic size is larger than varsize-limit")); } - if (packed_array_p) + if (constrained_packed_array_p) { /* So far, the resulting type has been created as if the original type was a regular (non-packed) array type. As a result, the @@ -7248,6 +7457,7 @@ ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr, struct type *static_type = to_static_fixed_type (type); struct type *fixed_record_type = to_fixed_record_type (type, valaddr, address, NULL); + /* If STATIC_TYPE is a tagged type and we know the object's address, then we can determine its tag, and compute the object's actual type from there. Note that we have to use the fixed record @@ -7262,6 +7472,7 @@ ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr, (fixed_record_type, valaddr, address)); + if (real_type != NULL) return to_fixed_record_type (real_type, valaddr, address, NULL); } @@ -7387,6 +7598,7 @@ static_unwrap_type (struct type *type) else { struct type *raw_real_type = ada_get_base_type (type); + if (raw_real_type == type) return type; else @@ -7423,6 +7635,7 @@ ada_check_typedef (struct type *type) { char *name = TYPE_TAG_NAME (type); struct type *type1 = ada_find_any_type (name); + return (type1 == NULL) ? type : type1; } } @@ -7438,6 +7651,7 @@ ada_to_fixed_value_create (struct type *type0, CORE_ADDR address, struct value *val0) { struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1); + if (type == type0 && val0 != NULL) return val0; else @@ -7448,29 +7662,13 @@ ada_to_fixed_value_create (struct type *type0, CORE_ADDR address, that correctly describes it. Does not necessarily create a new value. */ -static struct value * +struct value * ada_to_fixed_value (struct value *val) { return ada_to_fixed_value_create (value_type (val), value_address (val), val); } - -/* A value representing VAL, but with a standard (static-sized) type - chosen to approximate the real type of VAL as well as possible, but - without consulting any runtime values. For Ada dynamic-sized - types, therefore, the type of the result is likely to be inaccurate. */ - -static struct value * -ada_to_static_fixed_value (struct value *val) -{ - struct type *type = - to_static_fixed_type (static_unwrap_type (value_type (val))); - if (type == value_type (val)) - return val; - else - return coerce_unspec_val_to_type (val, type); -} /* Attributes */ @@ -7550,6 +7748,7 @@ value_val_atr (struct type *type, struct value *arg) if (TYPE_CODE (type) == TYPE_CODE_ENUM) { long pos = value_as_long (arg); + if (pos < 0 || pos >= TYPE_NFIELDS (type)) error (_("argument to 'VAL out of range")); return value_from_longest (type, TYPE_FIELD_BITPOS (type, pos)); @@ -7607,6 +7806,16 @@ ada_is_string_type (struct type *type) return 0; } +/* The compiler sometimes provides a parallel XVS type for a given + PAD type. Normally, it is safe to follow the PAD type directly, + but older versions of the compiler have a bug that causes the offset + of its "F" field to be wrong. Following that field in that case + would lead to incorrect results, but this can be worked around + by ignoring the PAD type and using the associated XVS type instead. + + Set to True if the debugger should trust the contents of PAD types. + Otherwise, ignore the PAD type if there is a parallel XVS type. */ +static int trust_pad_over_xvs = 1; /* True if TYPE is a struct type introduced by the compiler to force the alignment of a value. Such types have a single field with a @@ -7617,10 +7826,7 @@ ada_is_aligner_type (struct type *type) { type = ada_check_typedef (type); - /* If we can find a parallel XVS type, then the XVS type should - be used instead of this type. And hence, this is not an aligner - type. */ - if (ada_find_parallel_type (type, "___XVS") != NULL) + if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL) return 0; return (TYPE_CODE (type) == TYPE_CODE_STRUCT @@ -7661,11 +7867,20 @@ ada_get_base_type (struct type *raw_type) || TYPE_NFIELDS (real_type_namer) != 1) return raw_type; - raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0)); - if (raw_real_type == NULL) - return raw_type; - else - return raw_real_type; + if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF) + { + /* This is an older encoding form where the base type needs to be + looked up by name. We prefer the newer enconding because it is + more efficient. */ + raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0)); + if (raw_real_type == NULL) + return raw_type; + else + return raw_real_type; + } + + /* The field in our XVS type is a reference to the base type. */ + return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0)); } /* The type of value designated by TYPE, with all aligners removed. */ @@ -7732,6 +7947,7 @@ ada_enum_name (const char *name) if (name[0] == 'Q') { int v; + if (name[1] == 'U' || name[1] == 'W') { if (sscanf (name + 2, "%x", &v) != 1) @@ -7784,10 +8000,12 @@ static struct value * unwrap_value (struct value *val) { struct type *type = ada_check_typedef (value_type (val)); + if (ada_is_aligner_type (type)) { struct value *v = ada_value_struct_elt (val, "F", 0); struct type *val_type = ada_check_typedef (value_type (v)); + if (ada_type_name (val_type) == NULL) TYPE_NAME (val_type) = ada_type_name (type); @@ -7798,8 +8016,11 @@ unwrap_value (struct value *val) struct type *raw_real_type = ada_check_typedef (ada_get_base_type (type)); - if (type == raw_real_type) - return val; + /* If there is no parallel XVS or XVE type, then the value is + already unwrapped. Return it without further modification. */ + if ((type == raw_real_type) + && ada_find_parallel_type (type, "___XVE") == NULL) + return val; return coerce_unspec_val_to_type @@ -7823,6 +8044,7 @@ cast_to_fixed (struct type *type, struct value *arg) else { DOUBLEST argd = value_as_double (arg); + val = ada_float_to_fixed (type, argd); } @@ -7834,6 +8056,7 @@ cast_from_fixed (struct type *type, struct value *arg) { DOUBLEST val = ada_fixed_to_float (value_type (arg), value_as_long (arg)); + return value_from_double (type, val); } @@ -7844,6 +8067,7 @@ static struct value * coerce_for_assign (struct type *type, struct value *val) { struct type *type2 = value_type (val); + if (type == type2) return val; @@ -7962,6 +8186,7 @@ static int num_component_specs (struct expression *exp, int pc) { int n, m, i; + m = exp->elts[pc + 1].longconst; pc += 3; n = 0; @@ -7993,10 +8218,12 @@ assign_component (struct value *container, struct value *lhs, LONGEST index, { struct value *mark = value_mark (); struct value *elt; + if (TYPE_CODE (value_type (lhs)) == TYPE_CODE_ARRAY) { struct type *index_type = builtin_type (exp->gdbarch)->builtin_int; struct value *index_val = value_from_longest (index_type, index); + elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val)); } else @@ -8036,12 +8263,12 @@ assign_aggregate (struct value *container, int max_indices, num_indices; int is_array_aggregate; int i; - struct value *mark = value_mark (); *pos += 3; if (noside != EVAL_NORMAL) { int i; + for (i = 0; i < n; i += 1) ada_evaluate_subexp (NULL, exp, pos, noside); return container; @@ -8160,6 +8387,7 @@ aggregate_assign_from_choices (struct value *container, { LONGEST lower, upper; enum exp_opcode op = exp->elts[choice_pos].opcode; + if (op == OP_DISCRETE_RANGE) { choice_pos += 1; @@ -8178,6 +8406,7 @@ aggregate_assign_from_choices (struct value *container, { int ind; char *name; + switch (op) { case OP_NAME: @@ -8205,6 +8434,7 @@ aggregate_assign_from_choices (struct value *container, while (lower <= upper) { int pos1; + pos1 = expr_pc; assign_component (container, lhs, lower, exp, &pos1); lower += 1; @@ -8229,9 +8459,11 @@ aggregate_assign_others (struct value *container, for (i = 0; i < num_indices - 2; i += 2) { LONGEST ind; + for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1) { int pos; + pos = expr_pc; assign_component (container, lhs, ind, exp, &pos); } @@ -8248,10 +8480,12 @@ add_component_interval (LONGEST low, LONGEST high, LONGEST* indices, int *size, int max_size) { int i, j; + for (i = 0; i < *size; i += 2) { if (high >= indices[i] && low <= indices[i + 1]) { int kh; + for (kh = i + 2; kh < *size; kh += 2) if (high < indices[kh]) break; @@ -8298,6 +8532,9 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside) /* Evaluating Ada expressions, and printing their result. ------------------------------------------------------ + 1. Introduction: + ---------------- + We usually evaluate an Ada expression in order to print its value. We also evaluate an expression in order to print its type, which happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation, @@ -8326,6 +8563,9 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside) cleaned up, this guide might become redundant with the comments inserted in the code, and we might want to remove it. + 2. ``Fixing'' an Entity, the Simple Case: + ----------------------------------------- + When evaluating Ada expressions, the tricky issue is that they may reference entities whose type contents and size are not statically known. Consider for instance a variant record: @@ -8367,34 +8607,60 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside) such as an array of variant records, for instance. There are two possible cases: Arrays, and records. - Arrays are a little simpler to handle, because the same amount of - memory is allocated for each element of the array, even if the amount - of space used by each element changes from element to element. - Consider for instance the following array of type Rec: + 3. ``Fixing'' Arrays: + --------------------- + + The type structure in GDB describes an array in terms of its bounds, + and the type of its elements. By design, all elements in the array + have the same type and we cannot represent an array of variant elements + using the current type structure in GDB. When fixing an array, + we cannot fix the array element, as we would potentially need one + fixed type per element of the array. As a result, the best we can do + when fixing an array is to produce an array whose bounds and size + are correct (allowing us to read it from memory), but without having + touched its element type. Fixing each element will be done later, + when (if) necessary. + + Arrays are a little simpler to handle than records, because the same + amount of memory is allocated for each element of the array, even if + the amount of space actually used by each element differs from element + to element. Consider for instance the following array of type Rec: type Rec_Array is array (1 .. 2) of Rec; - The type structure in GDB describes an array in terms of its - bounds, and the type of its elements. By design, all elements - in the array have the same type. So we cannot use a fixed type - for the array elements in this case, since the fixed type depends - on the actual value of each element. - - Fortunately, what happens in practice is that each element of - the array has the same size, which is the maximum size that - might be needed in order to hold an object of the element type. - And the compiler shows it in the debugging information by wrapping - the array element inside a private PAD type. This type should not - be shown to the user, and must be "unwrap"'ed before printing. Note + The actual amount of memory occupied by each element might be different + from element to element, depending on the value of their discriminant. + But the amount of space reserved for each element in the array remains + fixed regardless. So we simply need to compute that size using + the debugging information available, from which we can then determine + the array size (we multiply the number of elements of the array by + the size of each element). + + The simplest case is when we have an array of a constrained element + type. For instance, consider the following type declarations: + + type Bounded_String (Max_Size : Integer) is + Length : Integer; + Buffer : String (1 .. Max_Size); + end record; + type Bounded_String_Array is array (1 ..2) of Bounded_String (80); + + In this case, the compiler describes the array as an array of + variable-size elements (identified by its XVS suffix) for which + the size can be read in the parallel XVZ variable. + + In the case of an array of an unconstrained element type, the compiler + wraps the array element inside a private PAD type. This type should not + be shown to the user, and must be "unwrap"'ed before printing. Note that we also use the adjective "aligner" in our code to designate these wrapper types. - These wrapper types should have a constant size, which is the size - of each element of the array. In the case when the size is statically - known, the PAD type will already have the right size, and the array - element type should remain unfixed. But there are cases when - this size is not statically known. For instance, assuming that - "Five" is an integer variable: + In some cases, the size allocated for each element is statically + known. In that case, the PAD type already has the correct size, + and the array element should remain unfixed. + + But there are cases when this size is not statically known. + For instance, assuming that "Five" is an integer variable: type Dynamic is array (1 .. Five) of Integer; type Wrapper (Has_Length : Boolean := False) is record @@ -8417,7 +8683,10 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside) In that case, a copy of the PAD type with the correct size should be used for the fixed array. - However, things are slightly different in the case of dynamic + 3. ``Fixing'' record type objects: + ---------------------------------- + + Things are slightly different from arrays in the case of dynamic record types. In this case, in order to compute the associated fixed type, we need to determine the size and offset of each of its components. This, in turn, requires us to compute the fixed @@ -8433,7 +8702,7 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside) In that case, the position of field "Length" depends on the size of field Str, which itself depends on the value of the Max_Size - discriminant. In order to fix the type of variable My_String, + discriminant. In order to fix the type of variable My_String, we need to fix the type of field Str. Therefore, fixing a variant record requires us to fix each of its components. @@ -8461,21 +8730,21 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside) The debugger computes the position of each field based on an algorithm that uses, among other things, the actual position and size of the field - preceding it. Let's now imagine that the user is trying to print the - value of My_Container. If the type fixing was recursive, we would + preceding it. Let's now imagine that the user is trying to print + the value of My_Container. If the type fixing was recursive, we would end up computing the offset of field After based on the size of the fixed version of field First. And since in our example First has only one actual field, the size of the fixed type is actually smaller than the amount of space allocated to that field, and thus we would compute the wrong offset of field After. - Unfortunately, we need to watch out for dynamic components of variant - records (identified by the ___XVL suffix in the component name). - Even if the target type is a PAD type, the size of that type might - not be statically known. So the PAD type needs to be unwrapped and - the resulting type needs to be fixed. Otherwise, we might end up - with the wrong size for our component. This can be observed with - the following type declarations: + To make things more complicated, we need to watch out for dynamic + components of variant records (identified by the ___XVL suffix in + the component name). Even if the target type is a PAD type, the size + of that type might not be statically known. So the PAD type needs + to be unwrapped and the resulting type needs to be fixed. Otherwise, + we might end up with the wrong size for our component. This can be + observed with the following type declarations: type Octal is new Integer range 0 .. 7; type Octal_Array is array (Positive range <>) of Octal; @@ -8489,7 +8758,10 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside) In that case, Buffer is a PAD type whose size is unset and needs to be computed by fixing the unwrapped type. - Lastly, when should the sub-elements of a type that remained unfixed + 4. When to ``Fix'' un-``Fixed'' sub-elements of an entity: + ---------------------------------------------------------- + + Lastly, when should the sub-elements of an entity that remained unfixed thus far, be actually fixed? The answer is: Only when referencing that element. For instance @@ -8519,7 +8791,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, int *pos, enum noside noside) { enum exp_opcode op; - int tem, tem2, tem3; + int tem; int pc; struct value *arg1 = NULL, *arg2 = NULL, *arg3; struct type *type; @@ -8553,6 +8825,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, case OP_STRING: { struct value *result; + *pos -= 1; result = evaluate_subexp_standard (expect_type, exp, pos, noside); /* The result type will have code OP_STRING, bashed there from @@ -8744,7 +9017,14 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, else if (noside == EVAL_AVOID_SIDE_EFFECTS) { type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol)); - if (ada_is_tagged_type (type, 0)) + /* Check to see if this is a tagged type. We also need to handle + the case where the type is a reference to a tagged type, but + we have to be careful to exclude pointers to tagged types. + The latter should be shown as usual (as a pointer), whereas + a reference should mostly be transparent to the user. */ + if (ada_is_tagged_type (type, 0) + || (TYPE_CODE(type) == TYPE_CODE_REF + && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))) { /* Tagged types are a little special in the fact that the real type is dynamic and can only be determined by inspecting the @@ -8814,7 +9094,8 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, goto nosideret; } - if (ada_is_packed_array_type (desc_base_type (value_type (argvec[0])))) + if (ada_is_constrained_packed_array_type + (desc_base_type (value_type (argvec[0])))) argvec[0] = ada_coerce_to_simple_array (argvec[0]); else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0) @@ -8912,6 +9193,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, evaluate_subexp (NULL_TYPE, exp, pos, noside); LONGEST low_bound; LONGEST high_bound; + low_bound_val = coerce_ref (low_bound_val); high_bound_val = coerce_ref (high_bound_val); low_bound = pos_atr (low_bound_val); @@ -8927,7 +9209,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, TYPE_TARGET_TYPE (value_type (array)) = ada_aligned_type (TYPE_TARGET_TYPE (value_type (array))); - if (ada_is_packed_array_type (value_type (array))) + if (ada_is_constrained_packed_array_type (value_type (array))) error (_("cannot slice a packed array")); /* If this is a reference to an array or an array lvalue, @@ -8968,6 +9250,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, struct type *arr_type0 = to_fixed_array_type (TYPE_TARGET_TYPE (value_type (array)), NULL, 1); + return ada_value_slice_from_ptr (array, arr_type0, longest_to_int (low_bound), longest_to_int (high_bound)); @@ -9068,6 +9351,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, case OP_ATR_LENGTH: { struct type *type_arg; + if (exp->elts[*pos].opcode == OP_TYPE) { evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); @@ -9092,7 +9376,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, { arg1 = ada_coerce_ref (arg1); - if (ada_is_packed_array_type (value_type (arg1))) + if (ada_is_constrained_packed_array_type (value_type (arg1))) arg1 = ada_coerce_to_simple_array (arg1); type = ada_index_type (value_type (arg1), tem, @@ -9122,9 +9406,10 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, { struct type *range_type; char *name = ada_type_name (type_arg); + range_type = NULL; if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM) - range_type = to_fixed_range_type (name, NULL, type_arg); + range_type = to_fixed_range_type (type_arg, NULL); if (range_type == NULL) range_type = type_arg; switch (op) @@ -9133,10 +9418,10 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, error (_("unexpected attribute encountered")); case OP_ATR_FIRST: return value_from_longest - (range_type, discrete_type_low_bound (range_type)); + (range_type, ada_discrete_type_low_bound (range_type)); case OP_ATR_LAST: return value_from_longest - (range_type, discrete_type_high_bound (range_type)); + (range_type, ada_discrete_type_high_bound (range_type)); case OP_ATR_LENGTH: error (_("the 'length attribute applies only to array types")); } @@ -9147,8 +9432,8 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, { LONGEST low, high; - if (ada_is_packed_array_type (type_arg)) - type_arg = decode_packed_array_type (type_arg); + if (ada_is_constrained_packed_array_type (type_arg)) + type_arg = decode_constrained_packed_array_type (type_arg); type = ada_index_type (type_arg, tem, ada_attribute_name (op)); if (type == NULL) @@ -9204,8 +9489,8 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, case OP_ATR_MODULUS: { struct type *type_arg = check_typedef (exp->elts[pc + 2].type); - evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); + evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); if (noside == EVAL_SKIP) goto nosideret; @@ -9304,6 +9589,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, /* GDB allows dereferencing GNAT array descriptors. */ { struct type *arrType = ada_type_of_array (arg1, 0); + if (arrType == NULL) error (_("Attempt to dereference null array pointer.")); return value_at_lazy (arrType, 0); @@ -9366,6 +9652,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp, if (noside == EVAL_AVOID_SIDE_EFFECTS) { struct type *type1 = value_type (arg1); + if (ada_is_tagged_type (type1, 1)) { type = ada_lookup_struct_elt_type (type1, @@ -9447,6 +9734,7 @@ fixed_type_info (struct type *type) if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL) { const char *tail = strstr (name, "___XF_"); + if (tail == NULL) return NULL; else @@ -9540,52 +9828,6 @@ ada_float_to_fixed (struct type *type, DOUBLEST x) return (LONGEST) (x / scaling_factor (type) + 0.5); } - - /* VAX floating formats */ - -/* Non-zero iff TYPE represents one of the special VAX floating-point - types. */ - -int -ada_is_vax_floating_type (struct type *type) -{ - int name_len = - (ada_type_name (type) == NULL) ? 0 : strlen (ada_type_name (type)); - return - name_len > 6 - && (TYPE_CODE (type) == TYPE_CODE_INT - || TYPE_CODE (type) == TYPE_CODE_RANGE) - && strncmp (ada_type_name (type) + name_len - 6, "___XF", 5) == 0; -} - -/* The type of special VAX floating-point type this is, assuming - ada_is_vax_floating_point. */ - -int -ada_vax_float_type_suffix (struct type *type) -{ - return ada_type_name (type)[strlen (ada_type_name (type)) - 1]; -} - -/* A value representing the special debugging function that outputs - VAX floating-point values of the type represented by TYPE. Assumes - ada_is_vax_floating_type (TYPE). */ - -struct value * -ada_vax_float_print_function (struct type *type) -{ - switch (ada_vax_float_type_suffix (type)) - { - case 'F': - return get_var_value ("DEBUG_STRING_F", 0); - case 'D': - return get_var_value ("DEBUG_STRING_D", 0); - case 'G': - return get_var_value ("DEBUG_STRING_G", 0); - default: - error (_("invalid VAX floating-point type")); - } -} /* Range types */ @@ -9692,32 +9934,33 @@ get_int_var_value (char *name, int *flag) in NAME, the base type given in the named range type. */ static struct type * -to_fixed_range_type (char *name, struct value *dval, struct type *orig_type) +to_fixed_range_type (struct type *raw_type, struct value *dval) { - struct type *raw_type = ada_find_any_type (name); + char *name; struct type *base_type; char *subtype_info; - /* Fall back to the original type if symbol lookup failed. */ - if (raw_type == NULL) - raw_type = orig_type; + gdb_assert (raw_type != NULL); + gdb_assert (TYPE_NAME (raw_type) != NULL); if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE) base_type = TYPE_TARGET_TYPE (raw_type); else base_type = raw_type; + name = TYPE_NAME (raw_type); subtype_info = strstr (name, "___XD"); if (subtype_info == NULL) { - LONGEST L = discrete_type_low_bound (raw_type); - LONGEST U = discrete_type_high_bound (raw_type); + LONGEST L = ada_discrete_type_low_bound (raw_type); + LONGEST U = ada_discrete_type_high_bound (raw_type); + if (L < INT_MIN || U > INT_MAX) return raw_type; else - return create_range_type (alloc_type_copy (orig_type), raw_type, - discrete_type_low_bound (raw_type), - discrete_type_high_bound (raw_type)); + return create_range_type (alloc_type_copy (raw_type), raw_type, + ada_discrete_type_low_bound (raw_type), + ada_discrete_type_high_bound (raw_type)); } else { @@ -9751,6 +9994,7 @@ to_fixed_range_type (char *name, struct value *dval, struct type *orig_type) else { int ok; + strcpy (name_buf + prefix_len, "___L"); L = get_int_var_value (name_buf, &ok); if (!ok) @@ -9769,6 +10013,7 @@ to_fixed_range_type (char *name, struct value *dval, struct type *orig_type) else { int ok; + strcpy (name_buf + prefix_len, "___U"); U = get_int_var_value (name_buf, &ok); if (!ok) @@ -9778,7 +10023,7 @@ to_fixed_range_type (char *name, struct value *dval, struct type *orig_type) } } - type = create_range_type (alloc_type_copy (orig_type), base_type, L, U); + type = create_range_type (alloc_type_copy (raw_type), base_type, L, U); TYPE_NAME (type) = name; return type; } @@ -9843,20 +10088,7 @@ ada_modulus_from_name (struct type *type, ULONGEST *modulus) ULONGEST ada_modulus (struct type *type) { - ULONGEST modulus; - - /* Normally, the modulus of a modular type is equal to the value of - its upper bound + 1. However, the upper bound is currently stored - as an int, which is not always big enough to hold the actual bound - value. To workaround this, try to take advantage of the encoding - that GNAT uses with with discrete types. To avoid some unnecessary - parsing, we do this only when the size of TYPE is greater than - the size of the field holding the bound. */ - if (TYPE_LENGTH (type) > sizeof (TYPE_HIGH_BOUND (type)) - && ada_modulus_from_name (type, &modulus)) - return modulus; - - return (ULONGEST) (unsigned int) TYPE_HIGH_BOUND (type) + 1; + return (ULONGEST) TYPE_HIGH_BOUND (type) + 1; } @@ -10013,7 +10245,7 @@ ada_exception_support_info_sniffer (void) started yet. Inform the user of these two possible causes if applicable. */ - if (ada_update_initial_language (language_unknown, NULL) != language_ada) + if (ada_update_initial_language (language_unknown) != language_ada) error (_("Unable to insert catchpoint. Is this an Ada main program?")); /* If the symbol does not exist, then check that the program is @@ -10047,21 +10279,6 @@ ada_executable_changed_observer (void) exception_info = NULL; } -/* Return the name of the function at PC, NULL if could not find it. - This function only checks the debugging information, not the symbol - table. */ - -static char * -function_name_from_pc (CORE_ADDR pc) -{ - char *func_name; - - if (!find_pc_partial_function (pc, &func_name, NULL, NULL)) - return NULL; - - return func_name; -} - /* True iff FRAME is very likely to be that of a function that is part of the runtime system. This is all very heuristic, but is intended to be used as advice as to what frames are uninteresting @@ -10072,6 +10289,7 @@ is_known_support_routine (struct frame_info *frame) { struct symtab_and_line sal; char *func_name; + enum language func_lang; int i; /* If this code does not have any debugging information (no symtab), @@ -10107,7 +10325,7 @@ is_known_support_routine (struct frame_info *frame) /* Check whether the function is a GNAT-generated entity. */ - func_name = function_name_from_pc (get_frame_address_in_block (frame)); + find_frame_funname (frame, &func_name, &func_lang); if (func_name == NULL) return 1; @@ -10172,8 +10390,10 @@ ada_unhandled_exception_name_addr_from_raise (void) while (fi != NULL) { - const char *func_name = - function_name_from_pc (get_frame_address_in_block (fi)); + char *func_name; + enum language func_lang; + + find_frame_funname (fi, &func_name, &func_lang); if (func_name != NULL && strcmp (func_name, exception_info->catch_exception_sym) == 0) break; /* We found the frame we were looking for... */ @@ -10369,6 +10589,34 @@ print_mention_exception (enum exception_catchpoint_kind ex, } } +/* Implement the PRINT_RECREATE method in the breakpoint_ops structure + for all exception catchpoint kinds. */ + +static void +print_recreate_exception (enum exception_catchpoint_kind ex, + struct breakpoint *b, struct ui_file *fp) +{ + switch (ex) + { + case ex_catch_exception: + fprintf_filtered (fp, "catch exception"); + if (b->exp_string != NULL) + fprintf_filtered (fp, " %s", b->exp_string); + break; + + case ex_catch_exception_unhandled: + fprintf_filtered (fp, "catch exception unhandled"); + break; + + case ex_catch_assert: + fprintf_filtered (fp, "catch assert"); + break; + + default: + internal_error (__FILE__, __LINE__, _("unexpected catchpoint type")); + } +} + /* Virtual table for "catch exception" breakpoints. */ static enum print_stop_action @@ -10389,6 +10637,12 @@ print_mention_catch_exception (struct breakpoint *b) print_mention_exception (ex_catch_exception, b); } +static void +print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp) +{ + print_recreate_exception (ex_catch_exception, b, fp); +} + static struct breakpoint_ops catch_exception_breakpoint_ops = { NULL, /* insert */ @@ -10396,7 +10650,8 @@ static struct breakpoint_ops catch_exception_breakpoint_ops = NULL, /* breakpoint_hit */ print_it_catch_exception, print_one_catch_exception, - print_mention_catch_exception + print_mention_catch_exception, + print_recreate_catch_exception }; /* Virtual table for "catch exception unhandled" breakpoints. */ @@ -10420,13 +10675,21 @@ print_mention_catch_exception_unhandled (struct breakpoint *b) print_mention_exception (ex_catch_exception_unhandled, b); } +static void +print_recreate_catch_exception_unhandled (struct breakpoint *b, + struct ui_file *fp) +{ + print_recreate_exception (ex_catch_exception_unhandled, b, fp); +} + static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops = { NULL, /* insert */ NULL, /* remove */ NULL, /* breakpoint_hit */ print_it_catch_exception_unhandled, print_one_catch_exception_unhandled, - print_mention_catch_exception_unhandled + print_mention_catch_exception_unhandled, + print_recreate_catch_exception_unhandled }; /* Virtual table for "catch assert" breakpoints. */ @@ -10449,13 +10712,20 @@ print_mention_catch_assert (struct breakpoint *b) print_mention_exception (ex_catch_assert, b); } +static void +print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp) +{ + print_recreate_exception (ex_catch_assert, b, fp); +} + static struct breakpoint_ops catch_assert_breakpoint_ops = { NULL, /* insert */ NULL, /* remove */ NULL, /* breakpoint_hit */ print_it_catch_assert, print_one_catch_assert, - print_mention_catch_assert + print_mention_catch_assert, + print_recreate_catch_assert }; /* Return non-zero if B is an Ada exception catchpoint. */ @@ -10814,7 +11084,8 @@ ada_decode_assert_location (char *args, char **addr_string, OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0) static void -ada_operator_length (struct expression *exp, int pc, int *oplenp, int *argsp) +ada_operator_length (const struct expression *exp, int pc, int *oplenp, + int *argsp) { switch (exp->elts[pc - 1].opcode) { @@ -10839,6 +11110,36 @@ ada_operator_length (struct expression *exp, int pc, int *oplenp, int *argsp) } } +/* Implementation of the exp_descriptor method operator_check. */ + +static int +ada_operator_check (struct expression *exp, int pos, + int (*objfile_func) (struct objfile *objfile, void *data), + void *data) +{ + const union exp_element *const elts = exp->elts; + struct type *type = NULL; + + switch (elts[pos].opcode) + { + case UNOP_IN_RANGE: + case UNOP_QUAL: + type = elts[pos + 1].type; + break; + + default: + return operator_check_standard (exp, pos, objfile_func, data); + } + + /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL. */ + + if (type && TYPE_OBJFILE (type) + && (*objfile_func) (TYPE_OBJFILE (type), data)) + return 1; + + return 0; +} + static char * ada_op_name (enum exp_opcode opcode) { @@ -10893,6 +11194,7 @@ ada_forward_operator_length (struct expression *exp, int pc, case OP_NAME: { int len = longest_to_int (exp->elts[pc + 1].longconst); + *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1); *argsp = 0; break; @@ -10954,6 +11256,7 @@ ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt) { char *name = &exp->elts[elt + 2].string; int len = longest_to_int (exp->elts[elt + 1].longconst); + fprintf_filtered (stream, "Text: `%.*s'", len, name); break; } @@ -11040,6 +11343,7 @@ ada_print_subexp (struct expression *exp, int *pos, if (nargs > 1) { int tem; + for (tem = 1; tem < nargs; tem += 1) { fputs_filtered ((tem == 1) ? " (" : ", ", stream); @@ -11161,6 +11465,7 @@ ada_language_arch_info (struct gdbarch *gdbarch, struct language_arch_info *lai) { const struct builtin_type *builtin = builtin_type (gdbarch); + lai->primitive_type_vector = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1, struct type *); @@ -11227,6 +11532,7 @@ parse (void) static const struct exp_descriptor ada_exp_descriptor = { ada_print_subexp, ada_operator_length, + ada_operator_check, ada_op_name, ada_dump_subexp_body, ada_evaluate_subexp @@ -11249,7 +11555,7 @@ const struct language_defn ada_language_defn = { ada_printstr, /* Function to print string constant */ emit_char, /* Function to print single char (not used) */ ada_print_type, /* Print a type using appropriate syntax */ - default_print_typedef, /* Print a typedef using appropriate syntax */ + ada_print_typedef, /* Print a typedef using appropriate syntax */ ada_val_print, /* Print a value using appropriate syntax */ ada_value_print, /* Print a top-level value */ NULL, /* Language specific skip_trampoline */ @@ -11273,11 +11579,55 @@ const struct language_defn ada_language_defn = { /* Provide a prototype to silence -Wmissing-prototypes. */ extern initialize_file_ftype _initialize_ada_language; +/* Command-list for the "set/show ada" prefix command. */ +static struct cmd_list_element *set_ada_list; +static struct cmd_list_element *show_ada_list; + +/* Implement the "set ada" prefix command. */ + +static void +set_ada_command (char *arg, int from_tty) +{ + printf_unfiltered (_(\ +"\"set ada\" must be followed by the name of a setting.\n")); + help_list (set_ada_list, "set ada ", -1, gdb_stdout); +} + +/* Implement the "show ada" prefix command. */ + +static void +show_ada_command (char *args, int from_tty) +{ + cmd_show_list (show_ada_list, from_tty, ""); +} + void _initialize_ada_language (void) { add_language (&ada_language_defn); + add_prefix_cmd ("ada", no_class, set_ada_command, + _("Prefix command for changing Ada-specfic settings"), + &set_ada_list, "set ada ", 0, &setlist); + + add_prefix_cmd ("ada", no_class, show_ada_command, + _("Generic command for showing Ada-specific settings."), + &show_ada_list, "show ada ", 0, &showlist); + + add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure, + &trust_pad_over_xvs, _("\ +Enable or disable an optimization trusting PAD types over XVS types"), _("\ +Show whether an optimization trusting PAD types over XVS types is activated"), + _("\ +This is related to the encoding used by the GNAT compiler. The debugger\n\ +should normally trust the contents of PAD types, but certain older versions\n\ +of GNAT have a bug that sometimes causes the information in the PAD type\n\ +to be incorrect. Turning this setting \"off\" allows the debugger to\n\ +work around this bug. It is always safe to turn this option \"off\", but\n\ +this incurs a slight performance penalty, so it is recommended to NOT change\n\ +this option to \"off\" unless necessary."), + NULL, NULL, &set_ada_list, &show_ada_list); + varsize_limit = 65536; obstack_init (&symbol_list_obstack); @@ -11287,4 +11637,9 @@ _initialize_ada_language (void) NULL, xcalloc, xfree); observer_attach_executable_changed (ada_executable_changed_observer); + + /* Setup per-inferior data. */ + observer_attach_inferior_exit (ada_inferior_exit); + ada_inferior_data + = register_inferior_data_with_cleanup (ada_inferior_data_cleanup); } diff --git a/contrib/gdb-7/gdb/ada-lang.h b/contrib/gdb-7/gdb/ada-lang.h index 8a465d4e95..d1e8ca50c5 100644 --- a/contrib/gdb-7/gdb/ada-lang.h +++ b/contrib/gdb-7/gdb/ada-lang.h @@ -1,7 +1,7 @@ /* Ada language support definitions for GDB, the GNU debugger. Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -21,7 +21,6 @@ #if !defined (ADA_LANG_H) #define ADA_LANG_H 1 -struct partial_symbol; struct frame_info; #include "value.h" @@ -157,11 +156,15 @@ extern int ada_parse (void); /* Defined in ada-exp.y */ extern void ada_error (char *); /* Defined in ada-exp.y */ /* Defined in ada-typeprint.c */ -extern void ada_print_type (struct type *, char *, struct ui_file *, int, +extern void ada_print_type (struct type *, const char *, struct ui_file *, int, int); +extern void ada_print_typedef (struct type *type, struct symbol *new_symbol, + struct ui_file *stream); + extern int ada_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); extern int ada_value_print (struct value *, struct ui_file *, @@ -174,7 +177,7 @@ extern void ada_emit_char (int, struct type *, struct ui_file *, int, int); extern void ada_printchar (int, struct type *, struct ui_file *); extern void ada_printstr (struct ui_file *, struct type *, const gdb_byte *, - unsigned int, int, + unsigned int, const char *, int, const struct value_print_options *); struct value *ada_convert_actual (struct value *actual, @@ -185,6 +188,8 @@ struct value *ada_convert_actual (struct value *actual, extern struct value *ada_value_subscript (struct value *, int, struct value **); +extern void ada_fixup_array_indexes_type (struct type *index_desc_type); + extern struct type *ada_array_element_type (struct type *, int); extern int ada_array_arity (struct type *); @@ -199,12 +204,15 @@ extern int ada_is_array_descriptor_type (struct type *); extern int ada_is_bogus_array_descriptor (struct type *); +extern LONGEST ada_discrete_type_low_bound (struct type *); + +extern LONGEST ada_discrete_type_high_bound (struct type *); + extern char *ada_decode_symbol (const struct general_symbol_info*); extern const char *ada_decode (const char*); -extern enum language ada_update_initial_language (enum language, - struct partial_symtab*); +extern enum language ada_update_initial_language (enum language); extern void clear_ada_sym_cache (void); @@ -243,7 +251,7 @@ extern struct type *ada_parent_type (struct type *); extern int ada_is_ignored_field (struct type *, int); -extern int ada_is_packed_array_type (struct type *); +extern int ada_is_constrained_packed_array_type (struct type *); extern struct value *ada_value_primitive_packed_val (struct value *, const gdb_byte *, @@ -301,12 +309,6 @@ extern DOUBLEST ada_fixed_to_float (struct type *, LONGEST); extern LONGEST ada_float_to_fixed (struct type *, DOUBLEST); -extern int ada_is_vax_floating_type (struct type *); - -extern int ada_vax_float_type_suffix (struct type *); - -extern struct value *ada_vax_float_print_function (struct type *); - extern struct type *ada_system_address_type (void); extern int ada_which_variant_applies (struct type *, struct type *, @@ -316,6 +318,8 @@ extern struct type *ada_to_fixed_type (struct type *, const gdb_byte *, CORE_ADDR, struct value *, int check_tag); +extern struct value *ada_to_fixed_value (struct value *val); + extern struct type *ada_template_to_fixed_record_type_1 (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, diff --git a/contrib/gdb-7/gdb/ada-lex.c b/contrib/gdb-7/gdb/ada-lex.c index 45c2a2b699..dc76ff27b3 100644 --- a/contrib/gdb-7/gdb/ada-lex.c +++ b/contrib/gdb-7/gdb/ada-lex.c @@ -283,30 +283,32 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 53 -#define YY_END_OF_BUFFER 54 -static yyconst short int yy_accept[190] = +#define YY_NUM_RULES 54 +#define YY_END_OF_BUFFER 55 +static yyconst short int yy_accept[196] = { 0, - 0, 0, 0, 0, 54, 52, 1, 1, 15, 51, - 41, 52, 43, 44, 41, 42, 41, 41, 41, 4, - 4, 41, 41, 41, 41, 50, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 40, 0, 14, - 0, 51, 0, 0, 0, 0, 0, 0, 0, 35, - 2, 0, 34, 0, 46, 46, 37, 0, 0, 4, - 0, 0, 49, 36, 38, 0, 33, 39, 0, 0, - 47, 0, 47, 47, 47, 47, 47, 16, 20, 47, - 47, 47, 47, 25, 47, 47, 47, 47, 47, 0, - 14, 0, 12, 12, 0, 32, 2, 0, 46, 46, - - 0, 9, 0, 3, 7, 0, 47, 0, 0, 0, - 47, 17, 18, 47, 47, 21, 22, 23, 47, 47, - 27, 47, 47, 29, 0, 0, 0, 0, 0, 0, - 46, 45, 6, 0, 0, 9, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 19, 47, 24, 47, 28, 30, 0, 48, 0, - 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 31, 47, 0, 0, 5, 11, 0, 8, 26, - 0, 5, 0, 8, 13, 0, 10, 10, 0 + 0, 0, 0, 0, 55, 53, 1, 1, 15, 52, + 42, 53, 44, 45, 42, 43, 42, 42, 42, 4, + 4, 42, 42, 42, 42, 51, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 41, 0, 14, + 0, 52, 0, 0, 0, 0, 0, 0, 0, 36, + 2, 0, 35, 0, 47, 47, 38, 0, 0, 4, + 0, 0, 50, 37, 39, 0, 34, 40, 0, 0, + 48, 0, 48, 48, 48, 48, 48, 16, 21, 48, + 48, 48, 48, 26, 48, 48, 48, 48, 48, 48, + 0, 14, 0, 12, 12, 0, 33, 2, 0, 47, + + 47, 0, 9, 0, 3, 7, 0, 48, 0, 0, + 0, 48, 18, 19, 48, 48, 22, 23, 24, 48, + 48, 28, 48, 48, 48, 48, 30, 0, 0, 0, + 0, 0, 0, 47, 46, 6, 0, 0, 9, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 48, 20, 48, 25, 48, 17, 29, + 48, 31, 0, 49, 0, 0, 0, 0, 48, 0, + 0, 0, 0, 0, 0, 0, 32, 48, 48, 0, + 0, 5, 11, 0, 8, 27, 0, 5, 0, 8, + 13, 0, 10, 10, 0 + } ; static yyconst int yy_ec[256] = @@ -318,12 +320,12 @@ static yyconst int yy_ec[256] = 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 22, 23, 24, 25, 5, 26, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 36, 36, 39, 40, 41, 42, 36, - 36, 43, 44, 45, 46, 36, 47, 48, 36, 36, + 36, 37, 38, 36, 39, 40, 41, 42, 43, 36, + 36, 44, 45, 46, 47, 36, 48, 49, 36, 36, 27, 5, 28, 5, 29, 5, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 36, 36, 39, 40, 41, - 42, 36, 36, 43, 44, 45, 46, 36, 47, 48, + 34, 35, 36, 37, 38, 36, 39, 40, 41, 42, + 43, 36, 36, 44, 45, 46, 47, 36, 48, 49, 36, 36, 26, 22, 26, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -341,247 +343,255 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[49] = +static yyconst int yy_meta[50] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 5, 5, 5, 5, 5, 5, 10, 5, 11, 11, 5, 5, 12, 13, 14, 5, 5, 5, 15, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17 + 17, 17, 17, 17, 17, 17, 17, 17, 17 } ; -static yyconst short int yy_base[211] = +static yyconst short int yy_base[217] = { 0, - 0, 0, 592, 587, 596, 736, 736, 736, 43, 0, - 736, 70, 736, 736, 581, 736, 576, 117, 567, 116, - 122, 29, 566, 564, 564, 736, 52, 150, 20, 27, - 91, 96, 124, 118, 137, 142, 145, 191, 119, 736, - 142, 0, 238, 571, 570, 569, 567, 54, 277, 736, - 0, 324, 736, 0, 0, 537, 736, 0, 46, 155, - 230, 0, 736, 736, 736, 534, 736, 736, 243, 249, - 736, 327, 149, 223, 224, 257, 258, 259, 261, 262, - 301, 304, 265, 303, 315, 320, 324, 322, 326, 541, - 543, 368, 371, 736, 374, 526, 0, 509, 0, 453, - - 359, 361, 111, 358, 0, 458, 381, 397, 412, 0, - 412, 355, 371, 393, 400, 382, 402, 407, 408, 425, - 409, 420, 431, 426, 471, 0, 466, 450, 469, 433, - 736, 0, 412, 0, 456, 456, 242, 462, 439, 330, - 237, 358, 373, 433, 390, 377, 375, 383, 346, 337, - 476, 453, 464, 465, 466, 477, 479, 331, 736, 334, - 497, 331, 124, 511, 261, 261, 258, 156, 148, 114, - 103, 481, 488, 96, 243, 504, 33, 56, 506, 496, - 42, 511, 323, 519, 539, 391, 525, 527, 736, 557, - 567, 583, 588, 604, 621, 624, 631, 166, 539, 638, - - 654, 666, 672, 683, 685, 701, 541, 542, 708, 719 + 0, 0, 622, 615, 620, 759, 759, 759, 44, 0, + 759, 71, 759, 759, 606, 759, 601, 119, 591, 118, + 124, 30, 590, 588, 588, 759, 53, 152, 22, 97, + 98, 103, 117, 119, 27, 140, 137, 194, 151, 759, + 160, 0, 242, 601, 594, 593, 592, 120, 282, 759, + 0, 330, 759, 0, 0, 560, 759, 0, 40, 329, + 171, 0, 759, 759, 759, 574, 759, 759, 171, 245, + 759, 336, 150, 219, 223, 226, 227, 162, 228, 262, + 263, 310, 266, 265, 313, 268, 312, 330, 320, 334, + 572, 569, 366, 377, 759, 380, 547, 0, 530, 0, + + 501, 169, 363, 46, 365, 0, 503, 386, 402, 417, + 0, 417, 335, 344, 412, 387, 360, 386, 406, 413, + 431, 407, 425, 408, 437, 438, 421, 518, 0, 472, + 497, 475, 474, 759, 0, 456, 0, 246, 458, 284, + 462, 451, 403, 464, 477, 478, 454, 408, 402, 392, + 390, 364, 376, 509, 455, 483, 458, 485, 473, 489, + 491, 492, 367, 759, 387, 516, 366, 48, 535, 326, + 312, 270, 220, 219, 207, 164, 501, 509, 511, 144, + 282, 527, 98, 117, 529, 519, 42, 540, 321, 543, + 562, 403, 548, 551, 759, 580, 590, 606, 611, 627, + + 644, 647, 654, 487, 562, 661, 677, 689, 695, 706, + 708, 724, 563, 565, 731, 742 } ; -static yyconst short int yy_def[211] = +static yyconst short int yy_def[217] = { 0, - 189, 1, 1, 1, 189, 189, 189, 189, 190, 191, - 189, 189, 189, 189, 189, 189, 189, 192, 189, 189, - 189, 189, 193, 189, 189, 189, 194, 194, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 189, 190, 189, - 190, 191, 38, 38, 38, 43, 189, 43, 43, 189, - 195, 192, 189, 196, 197, 197, 189, 198, 189, 189, - 189, 199, 189, 189, 189, 200, 189, 189, 189, 189, - 189, 201, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 49, - 202, 189, 189, 189, 43, 49, 195, 203, 197, 197, - - 204, 189, 189, 189, 199, 200, 189, 201, 189, 205, - 206, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 189, 207, 189, 189, 43, 203, - 189, 197, 189, 208, 204, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 209, - 206, 28, 28, 28, 28, 28, 28, 189, 189, 43, - 189, 210, 189, 189, 189, 189, 189, 189, 189, 189, - 209, 28, 28, 43, 189, 189, 189, 210, 189, 28, - 43, 189, 189, 189, 189, 189, 189, 189, 0, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189 + 195, 1, 1, 1, 195, 195, 195, 195, 196, 197, + 195, 195, 195, 195, 195, 195, 195, 198, 195, 195, + 195, 195, 199, 195, 195, 195, 200, 200, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 195, 196, 195, + 196, 197, 38, 38, 38, 43, 195, 43, 43, 195, + 201, 198, 195, 202, 203, 203, 195, 204, 195, 195, + 195, 205, 195, 195, 195, 206, 195, 195, 195, 195, + 195, 207, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 49, 208, 195, 195, 195, 43, 49, 201, 209, 203, + + 203, 210, 195, 195, 195, 205, 206, 195, 207, 195, + 211, 212, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 195, 213, 195, + 195, 43, 209, 195, 203, 195, 214, 210, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 215, 212, 28, 28, 28, 28, 28, 28, + 28, 28, 195, 195, 43, 195, 216, 195, 195, 195, + 195, 195, 195, 195, 195, 215, 28, 28, 28, 43, + 195, 195, 195, 216, 195, 28, 43, 195, 195, 195, + 195, 195, 195, 195, 0, 195, 195, 195, 195, 195, + + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195 } ; -static yyconst short int yy_nxt[785] = +static yyconst short int yy_nxt[809] = { 0, 6, 7, 8, 7, 6, 9, 6, 10, 11, 12, 13, 14, 15, 11, 16, 17, 18, 19, 20, 21, 22, 11, 23, 24, 25, 26, 11, 11, 27, 28, - 27, 27, 27, 29, 30, 27, 27, 31, 27, 32, - 33, 34, 35, 27, 36, 27, 27, 37, 40, 63, - 73, 185, 64, 69, 69, 70, 77, 73, 76, 95, - 73, 71, 177, 93, 102, 102, 183, 73, 72, 41, - 43, 44, 44, 45, 46, 46, 46, 46, 46, 47, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 48, 46, 46, 49, + 27, 27, 27, 29, 30, 27, 27, 31, 27, 27, + 32, 33, 34, 35, 27, 36, 27, 27, 37, 40, + 63, 191, 73, 64, 69, 69, 70, 73, 103, 103, + 86, 76, 71, 73, 105, 105, 185, 185, 73, 72, + 41, 43, 44, 44, 45, 46, 46, 46, 46, 46, + 47, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 48, 46, 46, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 52, 52, - 52, 73, 58, 181, 40, 78, 73, 164, 58, 104, - 104, 79, 59, 53, 60, 60, 73, 80, 59, 54, - 60, 60, 179, 179, 60, 41, 56, 91, 73, 61, - 60, 69, 69, 70, 73, 61, 139, 81, 73, 71, - 84, 58, 85, 62, 73, 82, 72, 73, 41, 83, - 86, 59, 73, 60, 60, 73, 101, 73, 87, 73, - 74, 101, 73, 60, 88, 73, 89, 139, 61, 73, - 75, 43, 44, 44, 44, 43, 43, 43, 43, 43, - - 139, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 52, 52, 52, 183, 58, 96, 77, 73, 73, 94, + 58, 189, 78, 73, 59, 53, 60, 60, 73, 79, + 59, 54, 60, 60, 73, 80, 60, 73, 56, 73, + 81, 61, 60, 69, 69, 70, 40, 61, 73, 82, + 73, 71, 84, 83, 85, 92, 62, 73, 72, 87, + 73, 187, 69, 69, 69, 136, 88, 41, 73, 90, + 73, 73, 74, 89, 104, 137, 41, 72, 169, 105, + 105, 73, 73, 75, 43, 44, 44, 44, 43, 43, + + 43, 43, 43, 73, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 43, - 43, 43, 164, 103, 69, 69, 69, 92, 104, 104, - 69, 69, 70, 73, 73, 163, 113, 163, 71, 72, - 139, 176, 176, 73, 73, 72, 112, 43, 43, 43, + 43, 43, 43, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 43, 43, 43, 69, 69, 70, 73, + 142, 93, 136, 73, 71, 114, 73, 73, 73, 142, + 73, 72, 137, 113, 73, 142, 116, 73, 73, 73, + 115, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 93, 73, 73, 73, - 139, 73, 73, 139, 116, 73, 115, 73, 73, 73, - - 114, 73, 73, 119, 139, 73, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 52, 52, 52, 108, 108, - 108, 73, 109, 73, 73, 164, 186, 177, 186, 174, - 189, 73, 139, 73, 73, 73, 54, 117, 118, 110, - 73, 120, 73, 56, 73, 73, 73, 122, 39, 121, - 73, 164, 73, 164, 73, 133, 73, 123, 124, 127, - 127, 127, 127, 127, 127, 134, 138, 138, 164, 136, - 136, 139, 69, 69, 70, 73, 138, 170, 128, 136, - 71, 128, 129, 129, 137, 73, 139, 72, 108, 108, - - 108, 73, 109, 129, 129, 129, 129, 129, 129, 187, - 187, 73, 73, 69, 69, 70, 169, 139, 168, 110, - 139, 71, 73, 73, 140, 139, 152, 139, 72, 141, - 73, 167, 73, 73, 142, 139, 143, 73, 73, 73, - 73, 144, 73, 153, 164, 161, 154, 73, 73, 73, - 73, 145, 146, 147, 148, 73, 73, 131, 155, 149, - 156, 73, 133, 165, 157, 73, 73, 127, 127, 127, - 159, 73, 134, 166, 136, 136, 158, 69, 69, 70, - 138, 138, 107, 73, 136, 71, 128, 160, 160, 137, - 138, 132, 72, 73, 73, 73, 73, 172, 160, 160, - - 160, 160, 160, 160, 73, 73, 73, 73, 173, 73, - 175, 73, 69, 69, 70, 176, 176, 73, 73, 73, - 71, 73, 182, 182, 184, 184, 73, 72, 73, 182, - 182, 180, 182, 131, 184, 92, 73, 184, 184, 182, - 127, 127, 127, 188, 188, 188, 188, 184, 125, 105, - 92, 125, 162, 188, 105, 188, 125, 162, 107, 128, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 42, 100, 94, 42, 93, 93, - 92, 42, 42, 42, 55, 55, 55, 68, 67, 65, - 57, 51, 55, 50, 55, 189, 38, 55, 55, 55, - - 66, 38, 66, 66, 66, 73, 73, 73, 189, 189, - 189, 189, 73, 73, 73, 189, 189, 189, 73, 73, - 73, 97, 97, 189, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, - 98, 99, 189, 189, 189, 99, 99, 99, 106, 189, - 189, 106, 106, 106, 106, 111, 111, 111, 189, 111, - 189, 189, 189, 189, 189, 111, 189, 189, 111, 111, - 111, 126, 189, 189, 189, 189, 126, 189, 189, 189, - 189, 126, 130, 189, 189, 130, 130, 130, 130, 135, - 189, 189, 135, 135, 189, 189, 189, 135, 135, 150, - - 150, 150, 151, 151, 151, 189, 189, 189, 189, 151, - 151, 151, 189, 189, 189, 151, 151, 151, 171, 189, - 189, 171, 171, 171, 171, 178, 189, 189, 189, 178, - 189, 189, 189, 178, 178, 5, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189 + 43, 94, 73, 73, 117, 73, 73, 168, 73, 168, + + 182, 182, 142, 73, 73, 120, 73, 73, 122, 73, + 118, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 52, 52, 52, 192, 58, 192, 109, 109, 109, + 73, 110, 73, 73, 142, 59, 195, 60, 60, 121, + 73, 73, 54, 73, 73, 119, 123, 60, 111, 56, + 73, 73, 61, 124, 73, 73, 126, 130, 130, 130, + 142, 73, 183, 125, 73, 73, 73, 127, 130, 130, + 130, 139, 139, 141, 141, 73, 131, 69, 69, 70, + 73, 139, 180, 141, 39, 71, 140, 131, 132, 132, + + 169, 73, 72, 109, 109, 109, 175, 110, 169, 132, + 132, 132, 132, 132, 132, 142, 73, 73, 69, 69, + 70, 193, 193, 174, 111, 142, 71, 73, 73, 143, + 142, 156, 142, 72, 144, 142, 73, 73, 73, 145, + 142, 146, 73, 73, 173, 155, 147, 73, 73, 160, + 172, 73, 157, 73, 73, 73, 169, 148, 149, 150, + 151, 73, 73, 159, 158, 152, 73, 73, 73, 169, + 161, 162, 73, 130, 130, 130, 139, 139, 73, 73, + 141, 141, 169, 169, 170, 73, 139, 142, 73, 166, + 141, 140, 131, 165, 165, 171, 73, 102, 134, 73, + + 142, 142, 102, 73, 165, 165, 165, 165, 165, 165, + 69, 69, 70, 73, 73, 73, 177, 164, 71, 73, + 179, 73, 73, 163, 73, 72, 73, 108, 178, 181, + 73, 73, 73, 73, 182, 182, 69, 69, 70, 73, + 135, 73, 73, 159, 71, 188, 188, 190, 190, 73, + 73, 72, 73, 186, 134, 188, 93, 190, 188, 188, + 73, 190, 190, 130, 130, 130, 194, 194, 188, 194, + 194, 190, 106, 128, 128, 167, 194, 106, 128, 194, + 167, 93, 131, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 42, 108, 101, + + 42, 95, 94, 94, 42, 42, 42, 55, 55, 55, + 93, 68, 67, 65, 57, 55, 51, 55, 50, 195, + 55, 55, 55, 66, 38, 66, 66, 66, 73, 73, + 73, 38, 195, 195, 195, 73, 73, 73, 195, 195, + 195, 73, 73, 73, 98, 98, 195, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 99, 99, 99, 100, 195, 195, 195, 100, 100, + 100, 107, 195, 195, 107, 107, 107, 107, 112, 112, + 112, 195, 112, 195, 195, 195, 195, 195, 112, 195, + 195, 112, 112, 112, 129, 195, 195, 195, 195, 129, + + 195, 195, 195, 195, 129, 133, 195, 195, 133, 133, + 133, 133, 138, 195, 195, 138, 138, 195, 195, 195, + 138, 138, 153, 153, 153, 154, 154, 154, 195, 195, + 195, 195, 154, 154, 154, 195, 195, 195, 154, 154, + 154, 176, 195, 195, 176, 176, 176, 176, 184, 195, + 195, 195, 184, 195, 195, 195, 184, 184, 5, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + + 195, 195, 195, 195, 195, 195, 195, 195 } ; -static yyconst short int yy_chk[785] = +static yyconst short int yy_chk[809] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 9, 22, - 29, 181, 22, 27, 27, 27, 30, 30, 29, 48, - 29, 27, 178, 48, 59, 59, 177, 30, 27, 9, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, + 22, 187, 29, 22, 27, 27, 27, 35, 59, 59, + 35, 29, 27, 29, 104, 104, 168, 168, 35, 27, + 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 18, 18, - 18, 31, 20, 174, 39, 31, 32, 171, 21, 103, - 103, 31, 20, 18, 20, 20, 32, 32, 21, 18, - 21, 21, 163, 163, 20, 39, 18, 41, 34, 20, - 21, 28, 28, 28, 33, 21, 170, 33, 34, 28, - 34, 60, 34, 20, 33, 33, 28, 35, 41, 33, - 35, 60, 36, 60, 60, 37, 198, 35, 36, 73, - 28, 198, 36, 60, 36, 37, 37, 169, 60, 73, - 28, 38, 38, 38, 38, 38, 38, 38, 38, 38, - - 168, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 18, 18, 18, 184, 20, 48, 30, 30, 31, 48, + 21, 183, 31, 32, 20, 18, 20, 20, 30, 31, + 21, 18, 21, 21, 32, 32, 20, 33, 18, 34, + 33, 20, 21, 28, 28, 28, 39, 21, 33, 33, + 34, 28, 34, 33, 34, 41, 20, 37, 28, 36, + 36, 180, 69, 69, 69, 102, 36, 39, 37, 37, + 73, 36, 28, 36, 61, 102, 41, 69, 176, 61, + 61, 73, 78, 28, 38, 38, 38, 38, 38, 38, + + 38, 38, 38, 78, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 43, - 43, 43, 141, 61, 69, 69, 69, 43, 61, 61, - 70, 70, 70, 74, 75, 137, 75, 137, 70, 69, - 141, 175, 175, 74, 75, 70, 74, 43, 43, 43, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 43, 43, 43, 70, 70, 70, 74, + 175, 43, 138, 75, 70, 75, 76, 77, 79, 174, + 74, 70, 138, 74, 75, 173, 77, 76, 77, 79, + 76, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 49, 76, 77, 78, - 167, 79, 80, 166, 80, 83, 77, 76, 77, 78, + 43, 49, 80, 81, 80, 84, 83, 140, 86, 140, - 76, 79, 80, 83, 165, 83, 49, 49, 49, 49, + 181, 181, 172, 80, 81, 83, 84, 83, 86, 86, + 81, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 52, 52, 52, 72, 72, - 72, 81, 72, 84, 82, 140, 183, 162, 183, 160, - 52, 81, 140, 84, 82, 85, 52, 81, 82, 72, - 86, 85, 88, 52, 87, 85, 89, 87, 158, 86, - 86, 150, 88, 142, 87, 101, 89, 88, 89, 92, - 92, 92, 93, 93, 93, 101, 104, 104, 143, 102, - 102, 142, 107, 107, 107, 112, 104, 149, 92, 102, - 107, 93, 95, 95, 102, 112, 143, 107, 108, 108, - - 108, 113, 108, 95, 95, 95, 95, 95, 95, 186, - 186, 113, 116, 111, 111, 111, 148, 147, 146, 108, - 109, 111, 116, 114, 109, 109, 114, 109, 111, 109, - 115, 145, 117, 114, 109, 109, 109, 118, 119, 121, - 115, 109, 117, 115, 139, 133, 119, 118, 119, 121, - 122, 109, 109, 109, 109, 120, 124, 130, 120, 109, - 122, 123, 135, 144, 123, 120, 124, 127, 127, 127, - 128, 123, 135, 144, 136, 136, 125, 151, 151, 151, - 138, 138, 106, 152, 136, 151, 127, 129, 129, 136, - 138, 100, 151, 152, 153, 154, 155, 153, 129, 129, - - 129, 129, 129, 129, 153, 154, 155, 156, 155, 157, - 161, 172, 164, 164, 164, 161, 161, 156, 173, 157, - 164, 172, 176, 176, 179, 179, 180, 164, 173, 182, - 182, 173, 176, 98, 179, 96, 180, 184, 184, 182, - 185, 185, 185, 187, 187, 188, 188, 184, 91, 199, - 90, 207, 208, 187, 199, 188, 207, 208, 66, 185, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 191, 56, 47, 191, 46, 45, - 44, 191, 191, 191, 192, 192, 192, 25, 24, 23, - 19, 17, 192, 15, 192, 5, 4, 192, 192, 192, - - 193, 3, 193, 193, 193, 194, 194, 194, 0, 0, - 0, 0, 194, 194, 194, 0, 0, 0, 194, 194, - 194, 195, 195, 0, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, - 196, 197, 0, 0, 0, 197, 197, 197, 200, 0, - 0, 200, 200, 200, 200, 201, 201, 201, 0, 201, - 0, 0, 0, 0, 0, 201, 0, 0, 201, 201, - 201, 202, 0, 0, 0, 0, 202, 0, 0, 0, - 0, 202, 203, 0, 0, 203, 203, 203, 203, 204, - 0, 0, 204, 204, 0, 0, 0, 204, 204, 205, - - 205, 205, 206, 206, 206, 0, 0, 0, 0, 206, - 206, 206, 0, 0, 0, 206, 206, 206, 209, 0, - 0, 209, 209, 209, 209, 210, 0, 0, 0, 210, - 0, 0, 0, 210, 210, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189 + 49, 52, 52, 52, 189, 60, 189, 72, 72, 72, + 82, 72, 87, 85, 171, 60, 52, 60, 60, 85, + 89, 82, 52, 87, 85, 82, 87, 60, 72, 52, + 88, 89, 60, 88, 90, 113, 89, 93, 93, 93, + 170, 88, 167, 88, 114, 90, 113, 90, 94, 94, + 94, 103, 103, 105, 105, 114, 93, 108, 108, 108, + 117, 103, 165, 105, 163, 108, 103, 94, 96, 96, + + 153, 117, 108, 109, 109, 109, 152, 109, 143, 96, + 96, 96, 96, 96, 96, 143, 118, 116, 112, 112, + 112, 192, 192, 151, 109, 110, 112, 118, 116, 110, + 110, 116, 110, 112, 110, 150, 119, 122, 124, 110, + 110, 110, 115, 120, 149, 115, 110, 119, 122, 124, + 148, 127, 120, 115, 120, 123, 142, 110, 110, 110, + 110, 121, 127, 123, 121, 110, 123, 125, 126, 144, + 125, 126, 121, 130, 130, 130, 139, 139, 125, 126, + 141, 141, 145, 146, 147, 155, 139, 144, 157, 136, + 141, 139, 130, 132, 132, 147, 155, 204, 133, 157, + + 145, 146, 204, 159, 132, 132, 132, 132, 132, 132, + 154, 154, 154, 156, 159, 158, 156, 131, 154, 160, + 161, 161, 162, 128, 156, 154, 158, 107, 158, 166, + 160, 177, 161, 162, 166, 166, 169, 169, 169, 178, + 101, 179, 177, 179, 169, 182, 182, 185, 185, 186, + 178, 169, 179, 178, 99, 182, 97, 185, 188, 188, + 186, 190, 190, 191, 191, 191, 193, 193, 188, 194, + 194, 190, 205, 213, 92, 214, 193, 205, 213, 194, + 214, 91, 191, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 197, 66, 56, + + 197, 47, 46, 45, 197, 197, 197, 198, 198, 198, + 44, 25, 24, 23, 19, 198, 17, 198, 15, 5, + 198, 198, 198, 199, 4, 199, 199, 199, 200, 200, + 200, 3, 0, 0, 0, 200, 200, 200, 0, 0, + 0, 200, 200, 200, 201, 201, 0, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 202, 202, 202, 203, 0, 0, 0, 203, 203, + 203, 206, 0, 0, 206, 206, 206, 206, 207, 207, + 207, 0, 207, 0, 0, 0, 0, 0, 207, 0, + 0, 207, 207, 207, 208, 0, 0, 0, 0, 208, + + 0, 0, 0, 0, 208, 209, 0, 0, 209, 209, + 209, 209, 210, 0, 0, 210, 210, 0, 0, 0, + 210, 210, 211, 211, 211, 212, 212, 212, 0, 0, + 0, 0, 212, 212, 212, 0, 0, 0, 212, 212, + 212, 215, 0, 0, 215, 215, 215, 215, 216, 0, + 0, 0, 216, 0, 0, 0, 216, 216, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + + 195, 195, 195, 195, 195, 195, 195, 195 } ; static yy_state_type yy_last_accepting_state; @@ -598,8 +608,8 @@ char *yytext; #line 1 "ada-lex.l" #define INITIAL 0 /* FLEX lexer for Ada expressions, for GDB. - Copyright (C) 1994, 1997, 1998, 2000, 2001, 2002, 2003, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1994, 1997, 1998, 2000, 2001, 2002, 2003, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -639,6 +649,10 @@ static int find_dot_all (const char *); #undef YY_DECL #define YY_DECL static int yylex ( void ) +/* Flex generates a static function "input" which is not used. + Defining YY_NO_INPUT comments it out. */ +#define YY_NO_INPUT + #undef YY_INPUT #define YY_INPUT(BUF, RESULT, MAX_SIZE) \ if ( *lexptr == '\000' ) \ @@ -654,7 +668,7 @@ static int find_dot_all (const char *); #define BEFORE_QUAL_QUOTE 1 -#line 658 "ada-lex.c" +#line 672 "ada-lex.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -805,10 +819,10 @@ YY_DECL register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; -#line 80 "ada-lex.l" +#line 84 "ada-lex.l" -#line 812 "ada-lex.c" +#line 826 "ada-lex.c" if ( yy_init ) { @@ -859,13 +873,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 190 ) + if ( yy_current_state >= 196 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 736 ); + while ( yy_base[yy_current_state] != 759 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -893,17 +907,17 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 82 "ada-lex.l" +#line 86 "ada-lex.l" { } YY_BREAK case 2: YY_RULE_SETUP -#line 84 "ada-lex.l" +#line 88 "ada-lex.l" { yyterminate(); } YY_BREAK case 3: YY_RULE_SETUP -#line 86 "ada-lex.l" +#line 90 "ada-lex.l" { canonicalizeNumeral (numbuf, yytext); return processInt (NULL, numbuf, strrchr(numbuf, 'e')+1); @@ -911,7 +925,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 91 "ada-lex.l" +#line 95 "ada-lex.l" { canonicalizeNumeral (numbuf, yytext); return processInt (NULL, numbuf, NULL); @@ -919,7 +933,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 96 "ada-lex.l" +#line 100 "ada-lex.l" { canonicalizeNumeral (numbuf, yytext); return processInt (numbuf, @@ -929,7 +943,7 @@ YY_RULE_SETUP YY_BREAK case 6: YY_RULE_SETUP -#line 103 "ada-lex.l" +#line 107 "ada-lex.l" { canonicalizeNumeral (numbuf, yytext); return processInt (numbuf, strchr (numbuf, '#') + 1, NULL); @@ -937,7 +951,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 108 "ada-lex.l" +#line 112 "ada-lex.l" { canonicalizeNumeral (numbuf, yytext+2); return processInt ("16#", numbuf, NULL); @@ -945,7 +959,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 114 "ada-lex.l" +#line 118 "ada-lex.l" { canonicalizeNumeral (numbuf, yytext); return processReal (numbuf); @@ -953,7 +967,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 119 "ada-lex.l" +#line 123 "ada-lex.l" { canonicalizeNumeral (numbuf, yytext); return processReal (numbuf); @@ -961,21 +975,21 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 124 "ada-lex.l" +#line 128 "ada-lex.l" { error (_("Based real literals not implemented yet.")); } YY_BREAK case 11: YY_RULE_SETUP -#line 128 "ada-lex.l" +#line 132 "ada-lex.l" { error (_("Based real literals not implemented yet.")); } YY_BREAK case 12: YY_RULE_SETUP -#line 132 "ada-lex.l" +#line 136 "ada-lex.l" { yylval.typed_val.type = type_char (); yylval.typed_val.val = yytext[1]; @@ -984,7 +998,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 138 "ada-lex.l" +#line 142 "ada-lex.l" { int v; yylval.typed_val.type = type_char (); @@ -995,7 +1009,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 146 "ada-lex.l" +#line 150 "ada-lex.l" { yylval.sval = processString (yytext+1, yyleng-2); return STRING; @@ -1003,14 +1017,14 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 151 "ada-lex.l" +#line 155 "ada-lex.l" { error (_("ill-formed or non-terminated string literal")); } YY_BREAK case 16: YY_RULE_SETUP -#line 156 "ada-lex.l" +#line 160 "ada-lex.l" { while (*lexptr != 'i' && *lexptr != 'I') lexptr -= 1; @@ -1018,70 +1032,82 @@ YY_RULE_SETUP return 0; } YY_BREAK -/* ADA KEYWORDS */ case 17: YY_RULE_SETUP -#line 165 "ada-lex.l" -{ return ABS; } +#line 167 "ada-lex.l" +{ + /* This keyword signals the end of the expression and + will be processed separately. */ + while (*lexptr != 't' && *lexptr != 'T') + lexptr--; + yyrestart(NULL); + return 0; + } YY_BREAK +/* ADA KEYWORDS */ case 18: YY_RULE_SETUP -#line 166 "ada-lex.l" -{ return _AND_; } +#line 178 "ada-lex.l" +{ return ABS; } YY_BREAK case 19: YY_RULE_SETUP -#line 167 "ada-lex.l" -{ return ELSE; } +#line 179 "ada-lex.l" +{ return _AND_; } YY_BREAK case 20: YY_RULE_SETUP -#line 168 "ada-lex.l" -{ return IN; } +#line 180 "ada-lex.l" +{ return ELSE; } YY_BREAK case 21: YY_RULE_SETUP -#line 169 "ada-lex.l" -{ return MOD; } +#line 181 "ada-lex.l" +{ return IN; } YY_BREAK case 22: YY_RULE_SETUP -#line 170 "ada-lex.l" -{ return NEW; } +#line 182 "ada-lex.l" +{ return MOD; } YY_BREAK case 23: YY_RULE_SETUP -#line 171 "ada-lex.l" -{ return NOT; } +#line 183 "ada-lex.l" +{ return NEW; } YY_BREAK case 24: YY_RULE_SETUP -#line 172 "ada-lex.l" -{ return NULL_PTR; } +#line 184 "ada-lex.l" +{ return NOT; } YY_BREAK case 25: YY_RULE_SETUP -#line 173 "ada-lex.l" -{ return OR; } +#line 185 "ada-lex.l" +{ return NULL_PTR; } YY_BREAK case 26: YY_RULE_SETUP -#line 174 "ada-lex.l" -{ return OTHERS; } +#line 186 "ada-lex.l" +{ return OR; } YY_BREAK case 27: YY_RULE_SETUP -#line 175 "ada-lex.l" -{ return REM; } +#line 187 "ada-lex.l" +{ return OTHERS; } YY_BREAK case 28: YY_RULE_SETUP -#line 176 "ada-lex.l" -{ return THEN; } +#line 188 "ada-lex.l" +{ return REM; } YY_BREAK case 29: YY_RULE_SETUP -#line 177 "ada-lex.l" +#line 189 "ada-lex.l" +{ return THEN; } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 190 "ada-lex.l" { return XOR; } YY_BREAK /* BOOLEAN "KEYWORDS" */ @@ -1089,71 +1115,71 @@ YY_RULE_SETUP However, the boolean type is no longer represented as an enum, so True and False are no longer defined in symbol tables. We compromise by making them keywords (when bare). */ -case 30: +case 31: YY_RULE_SETUP -#line 186 "ada-lex.l" +#line 199 "ada-lex.l" { return TRUEKEYWORD; } YY_BREAK -case 31: +case 32: YY_RULE_SETUP -#line 187 "ada-lex.l" +#line 200 "ada-lex.l" { return FALSEKEYWORD; } YY_BREAK /* ATTRIBUTES */ -case 32: +case 33: YY_RULE_SETUP -#line 191 "ada-lex.l" +#line 204 "ada-lex.l" { return processAttribute (yytext+1); } YY_BREAK /* PUNCTUATION */ -case 33: +case 34: YY_RULE_SETUP -#line 195 "ada-lex.l" +#line 208 "ada-lex.l" { return ARROW; } YY_BREAK -case 34: +case 35: YY_RULE_SETUP -#line 196 "ada-lex.l" +#line 209 "ada-lex.l" { return DOTDOT; } YY_BREAK -case 35: +case 36: YY_RULE_SETUP -#line 197 "ada-lex.l" +#line 210 "ada-lex.l" { return STARSTAR; } YY_BREAK -case 36: +case 37: YY_RULE_SETUP -#line 198 "ada-lex.l" +#line 211 "ada-lex.l" { return ASSIGN; } YY_BREAK -case 37: +case 38: YY_RULE_SETUP -#line 199 "ada-lex.l" +#line 212 "ada-lex.l" { return NOTEQUAL; } YY_BREAK -case 38: +case 39: YY_RULE_SETUP -#line 200 "ada-lex.l" +#line 213 "ada-lex.l" { return LEQ; } YY_BREAK -case 39: +case 40: YY_RULE_SETUP -#line 201 "ada-lex.l" +#line 214 "ada-lex.l" { return GEQ; } YY_BREAK -case 40: +case 41: YY_RULE_SETUP -#line 203 "ada-lex.l" +#line 216 "ada-lex.l" { BEGIN INITIAL; return '\''; } YY_BREAK -case 41: +case 42: YY_RULE_SETUP -#line 205 "ada-lex.l" +#line 218 "ada-lex.l" { return yytext[0]; } YY_BREAK -case 42: +case 43: YY_RULE_SETUP -#line 207 "ada-lex.l" +#line 220 "ada-lex.l" { if (paren_depth == 0 && comma_terminates) { lexptr -= 1; @@ -1164,14 +1190,14 @@ YY_RULE_SETUP return ','; } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 217 "ada-lex.l" +#line 230 "ada-lex.l" { paren_depth += 1; return '('; } YY_BREAK -case 44: +case 45: YY_RULE_SETUP -#line 218 "ada-lex.l" +#line 231 "ada-lex.l" { if (paren_depth == 0) { lexptr -= 1; @@ -1185,22 +1211,22 @@ YY_RULE_SETUP } } YY_BREAK -case 45: +case 46: YY_RULE_SETUP -#line 231 "ada-lex.l" +#line 244 "ada-lex.l" { return DOT_ALL; } YY_BREAK -case 46: +case 47: YY_RULE_SETUP -#line 233 "ada-lex.l" +#line 246 "ada-lex.l" { yylval.sval = processId (yytext+1, yyleng-1); return DOT_ID; } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 238 "ada-lex.l" +#line 251 "ada-lex.l" { int all_posn = find_dot_all (yytext); @@ -1216,29 +1242,29 @@ YY_RULE_SETUP } YY_BREAK /* GDB EXPRESSION CONSTRUCTS */ -case 48: +case 49: YY_RULE_SETUP -#line 255 "ada-lex.l" +#line 268 "ada-lex.l" { yyless (yyleng - 2); yylval.sval = processId (yytext, yyleng); return NAME; } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 261 "ada-lex.l" +#line 274 "ada-lex.l" { return COLONCOLON; } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 263 "ada-lex.l" +#line 276 "ada-lex.l" { return yytext[0]; } YY_BREAK /* REGISTERS AND GDB CONVENIENCE VARIABLES */ -case 51: +case 52: YY_RULE_SETUP -#line 267 "ada-lex.l" +#line 280 "ada-lex.l" { yylval.sval.ptr = yytext; yylval.sval.length = yyleng; @@ -1246,17 +1272,17 @@ YY_RULE_SETUP } YY_BREAK /* CATCH-ALL ERROR CASE */ -case 52: +case 53: YY_RULE_SETUP -#line 275 "ada-lex.l" +#line 288 "ada-lex.l" { error (_("Invalid character '%s' in expression."), yytext); } YY_BREAK -case 53: +case 54: YY_RULE_SETUP -#line 276 "ada-lex.l" +#line 289 "ada-lex.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1260 "ada-lex.c" +#line 1286 "ada-lex.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(BEFORE_QUAL_QUOTE): yyterminate(); @@ -1549,7 +1575,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 190 ) + if ( yy_current_state >= 196 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1584,11 +1610,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 190 ) + if ( yy_current_state >= 196 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 189); + yy_is_jam = (yy_current_state == 195); return yy_is_jam ? 0 : yy_current_state; } @@ -2139,7 +2165,7 @@ int main() return 0; } #endif -#line 276 "ada-lex.l" +#line 289 "ada-lex.l" #include diff --git a/contrib/gdb-7/gdb/ada-operator.inc b/contrib/gdb-7/gdb/ada-operator.inc index aba44619bb..0aa1b4c8c4 100644 --- a/contrib/gdb-7/gdb/ada-operator.inc +++ b/contrib/gdb-7/gdb/ada-operator.inc @@ -1,7 +1,7 @@ /* Ada language operator definitions for GDB, the GNU debugger. Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/ada-tasks.c b/contrib/gdb-7/gdb/ada-tasks.c index 68cc696d56..f57f44ff96 100644 --- a/contrib/gdb-7/gdb/ada-tasks.c +++ b/contrib/gdb-7/gdb/ada-tasks.c @@ -1,5 +1,5 @@ /* Copyright (C) 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2003, 2004, 2005, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -198,6 +198,7 @@ get_task_number_from_id (CORE_ADDR task_id) int valid_task_id (int task_num) { + ada_build_task_list (0); return (task_num > 0 && task_num <= VEC_length (ada_task_info_s, task_list)); } @@ -292,7 +293,6 @@ get_known_tasks_addr (void) if (ada_tasks_check_symbol_table) { - struct symbol *sym; struct minimal_symbol *msym; msym = lookup_minimal_symbol (KNOWN_TASKS_NAME, NULL, NULL); @@ -876,6 +876,19 @@ task_command_1 (char *taskno_str, int from_tty) to the thread list. */ target_find_new_threads (); + /* Verify that the ptid of the task we want to switch to is valid + (in other words, a ptid that GDB knows about). Otherwise, we will + cause an assertion failure later on, when we try to determine + the ptid associated thread_info data. We should normally never + encounter such an error, but the wrong ptid can actually easily be + computed if target_get_ada_task_ptid has not been implemented for + our target (yet). Rather than cause an assertion error in that case, + it's nicer for the user to just refuse to perform the task switch. */ + if (!find_thread_ptid (task_info->ptid)) + error (_("Unable to compute thread ID for task %d.\n" + "Cannot switch to this task."), + taskno); + switch_to_thread (task_info->ptid); ada_find_printable_frame (get_selected_frame (NULL)); printf_filtered (_("[Switching to task %d]\n"), taskno); diff --git a/contrib/gdb-7/gdb/ada-typeprint.c b/contrib/gdb-7/gdb/ada-typeprint.c index 9fabd68515..a02c8d4fec 100644 --- a/contrib/gdb-7/gdb/ada-typeprint.c +++ b/contrib/gdb-7/gdb/ada-typeprint.c @@ -1,6 +1,6 @@ /* Support for printing Ada types for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -55,7 +55,7 @@ static void print_dynamic_range_bound (struct type *, const char *, int, const char *, struct ui_file *); -static void print_range_type_named (char *, struct type *, struct ui_file *); +static void print_range_type (struct type *, struct ui_file *); @@ -114,53 +114,32 @@ decoded_type_name (struct type *type) } } -/* Print range type TYPE on STREAM. */ +/* Print TYPE on STREAM, preferably as a range. */ static void print_range (struct type *type, struct ui_file *stream) { - struct type *target_type; - target_type = TYPE_TARGET_TYPE (type); - if (target_type == NULL) - target_type = type; - - switch (TYPE_CODE (target_type)) + switch (TYPE_CODE (type)) { case TYPE_CODE_RANGE: - case TYPE_CODE_INT: - case TYPE_CODE_BOOL: - case TYPE_CODE_CHAR: case TYPE_CODE_ENUM: + { + struct type *target_type; + target_type = TYPE_TARGET_TYPE (type); + if (target_type == NULL) + target_type = type; + ada_print_scalar (target_type, ada_discrete_type_low_bound (type), + stream); + fprintf_filtered (stream, " .. "); + ada_print_scalar (target_type, ada_discrete_type_high_bound (type), + stream); + } break; default: - target_type = NULL; - break; - } - - if (TYPE_NFIELDS (type) < 2) - { - /* A range needs at least 2 bounds to be printed. If there are less - than 2, just print the type name instead of the range itself. - This check handles cases such as characters, for example. - - If the name is not defined, then we don't print anything. - */ fprintf_filtered (stream, "%.*s", ada_name_prefix_len (TYPE_NAME (type)), TYPE_NAME (type)); - } - else - { - /* We extract the range type bounds respectively from the first element - and the last element of the type->fields array */ - const LONGEST lower_bound = (LONGEST) TYPE_LOW_BOUND (type); - const LONGEST upper_bound = (TYPE_CODE (type) == TYPE_CODE_RANGE - ? (LONGEST) TYPE_HIGH_BOUND (type) - : (LONGEST) TYPE_FIELD_BITPOS (type, TYPE_NFIELDS (type) - 1)); - - ada_print_scalar (target_type, lower_bound, stream); - fprintf_filtered (stream, " .. "); - ada_print_scalar (target_type, upper_bound, stream); + break; } } @@ -172,6 +151,7 @@ print_range_bound (struct type *type, char *bounds, int *n, struct ui_file *stream) { LONGEST B; + if (ada_scan_number (bounds, *n, &B, n)) { /* STABS decodes all range types which bounds are 0 .. -1 as @@ -233,19 +213,19 @@ print_dynamic_range_bound (struct type *type, const char *name, int name_len, fprintf_filtered (stream, "?"); } -/* Print the range type named NAME. If symbol lookup fails, fall back - to ORIG_TYPE as base type. */ +/* Print RAW_TYPE as a range type, using any bound information + following the GNAT encoding (if available). */ static void -print_range_type_named (char *name, struct type *orig_type, - struct ui_file *stream) +print_range_type (struct type *raw_type, struct ui_file *stream) { - struct type *raw_type = ada_find_any_type (name); + char *name; struct type *base_type; char *subtype_info; - if (raw_type == NULL) - raw_type = orig_type; + gdb_assert (raw_type != NULL); + name = TYPE_NAME (raw_type); + gdb_assert (name != NULL); if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE) base_type = TYPE_TARGET_TYPE (raw_type); @@ -331,15 +311,6 @@ print_fixed_point_type (struct type *type, struct ui_file *stream) } } -/* Print representation of special VAX floating-point type TYPE on STREAM. */ - -static void -print_vax_floating_point_type (struct type *type, struct ui_file *stream) -{ - fprintf_filtered (stream, "", - ada_vax_float_type_suffix (type)); -} - /* Print simple (constrained) array type TYPE on STREAM. LEVEL is the recursion (indentation) level, in case the element type itself has nested structure, and SHOW is the number of levels of internal @@ -352,7 +323,7 @@ print_array_type (struct type *type, struct ui_file *stream, int show, int bitsize; int n_indices; - if (ada_is_packed_array_type (type)) + if (ada_is_constrained_packed_array_type (type)) type = ada_coerce_to_simple_array_type (type); bitsize = 0; @@ -371,10 +342,12 @@ print_array_type (struct type *type, struct ui_file *stream, int show, { if (ada_is_simple_array_type (type)) { - struct type *range_desc_type = - ada_find_parallel_type (type, "___XA"); + struct type *range_desc_type; struct type *arr_type; + range_desc_type = ada_find_parallel_type (type, "___XA"); + ada_fixup_array_indexes_type (range_desc_type); + bitsize = 0; if (range_desc_type == NULL) { @@ -391,6 +364,7 @@ print_array_type (struct type *type, struct ui_file *stream, int show, else { int k; + n_indices = TYPE_NFIELDS (range_desc_type); for (k = 0, arr_type = type; k < n_indices; @@ -398,9 +372,8 @@ print_array_type (struct type *type, struct ui_file *stream, int show, { if (k > 0) fprintf_filtered (stream, ", "); - print_range_type_named (TYPE_FIELD_NAME - (range_desc_type, k), - TYPE_INDEX_TYPE (arr_type), stream); + print_range_type (TYPE_FIELD_TYPE (range_desc_type, k), + stream); if (TYPE_FIELD_BITSIZE (arr_type, 0) > 0) bitsize = TYPE_FIELD_BITSIZE (arr_type, 0); } @@ -409,6 +382,7 @@ print_array_type (struct type *type, struct ui_file *stream, int show, else { int i, i0; + for (i = i0 = ada_array_arity (type); i > 0; i -= 1) fprintf_filtered (stream, "%s<>", i == i0 ? "" : ", "); } @@ -464,6 +438,7 @@ print_choices (struct type *type, int field_num, struct ui_file *stream, case 'S': { LONGEST W; + if (!ada_scan_number (name, p + 1, &W, &p)) goto Huh; ada_print_scalar (val_type, W, stream); @@ -472,6 +447,7 @@ print_choices (struct type *type, int field_num, struct ui_file *stream, case 'R': { LONGEST L, U; + if (!ada_scan_number (name, p + 1, &L, &p) || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p)) goto Huh; @@ -688,7 +664,7 @@ print_unchecked_union_type (struct type *type, struct ui_file *stream, for function or procedure NAME if NAME is not null. */ static void -print_func_type (struct type *type, struct ui_file *stream, char *name) +print_func_type (struct type *type, struct ui_file *stream, const char *name) { int i, len = TYPE_NFIELDS (type); @@ -738,8 +714,8 @@ print_func_type (struct type *type, struct ui_file *stream, char *name) LEVEL indicates level of recursion (for nested definitions). */ void -ada_print_type (struct type *type0, char *varstring, struct ui_file *stream, - int show, int level) +ada_print_type (struct type *type0, const char *varstring, + struct ui_file *stream, int show, int level) { struct type *type = ada_check_typedef (ada_get_base_type (type0)); char *type_name = decoded_type_name (type0); @@ -770,7 +746,7 @@ ada_print_type (struct type *type0, char *varstring, struct ui_file *stream, if (ada_is_aligner_type (type)) ada_print_type (ada_aligned_type (type), "", stream, show, level); - else if (ada_is_packed_array_type (type)) + else if (ada_is_constrained_packed_array_type (type)) { if (TYPE_CODE (type) == TYPE_CODE_PTR) { @@ -807,26 +783,23 @@ ada_print_type (struct type *type0, char *varstring, struct ui_file *stream, case TYPE_CODE_INT: if (ada_is_fixed_point_type (type)) print_fixed_point_type (type, stream); - else if (ada_is_vax_floating_type (type)) - print_vax_floating_point_type (type, stream); else { char *name = ada_type_name (type); + if (!ada_is_range_type_name (name)) fprintf_filtered (stream, _("<%d-byte integer>"), TYPE_LENGTH (type)); else { fprintf_filtered (stream, "range "); - print_range_type_named (name, type, stream); + print_range_type (type, stream); } } break; case TYPE_CODE_RANGE: if (ada_is_fixed_point_type (type)) print_fixed_point_type (type, stream); - else if (ada_is_vax_floating_type (type)) - print_vax_floating_point_type (type, stream); else if (ada_is_modular_type (type)) fprintf_filtered (stream, "mod %s", int_string (ada_modulus (type), 10, 0, 0, 1)); @@ -862,3 +835,14 @@ ada_print_type (struct type *type0, char *varstring, struct ui_file *stream, break; } } + +/* Implement the la_print_typedef language method for Ada. */ + +void +ada_print_typedef (struct type *type, struct symbol *new_symbol, + struct ui_file *stream) +{ + type = ada_check_typedef (type); + ada_print_type (type, "", stream, 0, 0); + fprintf_filtered (stream, "\n"); +} diff --git a/contrib/gdb-7/gdb/ada-valprint.c b/contrib/gdb-7/gdb/ada-valprint.c index 565172c2ed..2ab2ba2f3d 100644 --- a/contrib/gdb-7/gdb/ada-valprint.c +++ b/contrib/gdb-7/gdb/ada-valprint.c @@ -1,7 +1,8 @@ /* Support for printing Ada values for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1997, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -18,8 +19,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include #include "defs.h" +#include #include "gdb_string.h" #include "symtab.h" #include "gdbtypes.h" @@ -35,33 +36,23 @@ #include "exceptions.h" #include "objfiles.h" -/* Encapsulates arguments to ada_val_print. */ -struct ada_val_print_args -{ - struct type *type; - const gdb_byte *valaddr0; - int embedded_offset; - CORE_ADDR address; - struct ui_file *stream; - int recurse; - const struct value_print_options *options; -}; - static void print_record (struct type *, const gdb_byte *, struct ui_file *, - int, const struct value_print_options *); + int, + const struct value *, + const struct value_print_options *); static int print_field_values (struct type *, const gdb_byte *, struct ui_file *, int, + const struct value *, const struct value_print_options *, int, struct type *, const gdb_byte *); static void adjust_type_signedness (struct type *); -static int ada_val_print_stub (void *args0); - static int ada_val_print_1 (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); @@ -84,8 +75,8 @@ print_optional_low_bound (struct ui_file *stream, struct type *type, const struct value_print_options *options) { struct type *index_type; - long low_bound; - long high_bound; + LONGEST low_bound; + LONGEST high_bound; if (options->print_array_indexes) return 0; @@ -130,7 +121,7 @@ print_optional_low_bound (struct ui_file *stream, struct type *type, break; } - ada_print_scalar (index_type, (LONGEST) low_bound, stream); + ada_print_scalar (index_type, low_bound, stream); fprintf_filtered (stream, " => "); return 1; } @@ -145,6 +136,7 @@ static void val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr, int bitoffset, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { unsigned int i; @@ -162,6 +154,7 @@ val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr, { LONGEST high; + if (get_discrete_bounds (index_type, &low, &high) < 0) len = 1; else @@ -212,9 +205,10 @@ val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr, if (i - i0 > options->repeat_count_threshold) { struct value_print_options opts = *options; + opts.deref_ref = 0; val_print (elttype, value_contents (v0), 0, 0, stream, - recurse + 1, &opts, current_language); + recurse + 1, val, &opts, current_language); annotate_elt_rep (i - i0); fprintf_filtered (stream, _(" "), i - i0); annotate_elt_rep_end (); @@ -224,6 +218,7 @@ val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr, { int j; struct value_print_options opts = *options; + opts.deref_ref = 0; for (j = i0; j < i; j += 1) { @@ -243,7 +238,7 @@ val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr, stream, options); } val_print (elttype, value_contents (v0), 0, 0, stream, - recurse + 1, &opts, current_language); + recurse + 1, val, &opts, current_language); annotate_elt (); } } @@ -331,7 +326,7 @@ ada_print_floating (const gdb_byte *valaddr, struct type *type, len = strlen (result); /* Modify for Ada rules. */ - + s = strstr (result, "inf"); if (s == NULL) s = strstr (result, "Inf"); @@ -555,7 +550,7 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string, void ada_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, - unsigned int length, int force_ellipses, + unsigned int length, const char *encoding, int force_ellipses, const struct value_print_options *options) { printstr (stream, type, string, length, force_ellipses, TYPE_LENGTH (type), @@ -577,29 +572,22 @@ int ada_val_print (struct type *type, const gdb_byte *valaddr0, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { - struct ada_val_print_args args; - args.type = type; - args.valaddr0 = valaddr0; - args.embedded_offset = embedded_offset; - args.address = address; - args.stream = stream; - args.recurse = recurse; - args.options = options; - - return catch_errors (ada_val_print_stub, &args, NULL, RETURN_MASK_ALL); -} + volatile struct gdb_exception except; + int result = 0; -/* Helper for ada_val_print; used as argument to catch_errors to - unmarshal the arguments to ada_val_print_1, which does the work. */ -static int -ada_val_print_stub (void *args0) -{ - struct ada_val_print_args *argsp = (struct ada_val_print_args *) args0; - return ada_val_print_1 (argsp->type, argsp->valaddr0, - argsp->embedded_offset, argsp->address, - argsp->stream, argsp->recurse, argsp->options); + TRY_CATCH (except, RETURN_MASK_ALL) + { + result = ada_val_print_1 (type, valaddr0, embedded_offset, address, + stream, recurse, val, options); + } + + if (except.reason < 0) + result = 0; + + return result; } /* Assuming TYPE is a simple array, print the value of this array located @@ -610,6 +598,7 @@ ada_val_print_stub (void *args0) static int ada_val_print_array (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); @@ -658,10 +647,10 @@ ada_val_print_array (struct type *type, const gdb_byte *valaddr, print_optional_low_bound (stream, type, options); if (TYPE_FIELD_BITSIZE (type, 0) > 0) val_print_packed_array_elements (type, valaddr, 0, stream, - recurse, options); + recurse, val, options); else val_print_array_elements (type, valaddr, address, stream, - recurse, options, 0); + recurse, val, options, 0); fprintf_filtered (stream, ")"); } @@ -675,22 +664,24 @@ static int ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *original_value, const struct value_print_options *options) { unsigned int len; int i; struct type *elttype; - unsigned int eltlen; LONGEST val; const gdb_byte *valaddr = valaddr0 + embedded_offset; type = ada_check_typedef (type); - if (ada_is_array_descriptor_type (type) || ada_is_packed_array_type (type)) + if (ada_is_array_descriptor_type (type) + || ada_is_constrained_packed_array_type (type)) { int retn; struct value *mark = value_mark (); struct value *val; + val = value_from_contents_and_address (type, valaddr, address); val = ada_coerce_to_simple_array_ptr (val); if (val == NULL) @@ -700,7 +691,8 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, } else retn = ada_val_print_1 (value_type (val), value_contents (val), 0, - value_address (val), stream, recurse, options); + value_address (val), stream, recurse, + NULL, options); value_free_to_mark (mark); return retn; } @@ -713,17 +705,19 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, { default: return c_val_print (type, valaddr0, embedded_offset, address, stream, - recurse, options); + recurse, original_value, options); case TYPE_CODE_PTR: { int ret = c_val_print (type, valaddr0, embedded_offset, address, - stream, recurse, options); + stream, recurse, original_value, options); + if (ada_is_tag_type (type)) { struct value *val = value_from_contents_and_address (type, valaddr, address); const char *name = ada_tag_name (val); + if (name != NULL) fprintf_filtered (stream, " (%s)", name); return 0; @@ -742,25 +736,10 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, (double) ada_fixed_to_float (type, v)); return 0; } - else if (ada_is_vax_floating_type (type)) - { - struct value *val = - value_from_contents_and_address (type, valaddr, address); - struct value *func = ada_vax_float_print_function (type); - if (func != 0) - { - struct gdbarch *gdbarch = get_type_arch (type); - CORE_ADDR addr; - addr = value_as_address (call_function_by_hand (func, 1, &val)); - val_print_string (builtin_type (gdbarch)->builtin_true_char, - addr, -1, stream, options); - return 0; - } - /* No special printing function. Do as best we can. */ - } else if (TYPE_CODE (type) == TYPE_CODE_RANGE) { struct type *target_type = TYPE_TARGET_TYPE (type); + if (TYPE_LENGTH (type) != TYPE_LENGTH (target_type)) { /* Obscure case of range type that has different length from @@ -770,21 +749,24 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, struct value *v = value_cast (target_type, value_from_contents_and_address (type, valaddr, 0)); + return ada_val_print_1 (target_type, value_contents (v), 0, 0, - stream, recurse + 1, options); + stream, recurse + 1, NULL, options); } else return ada_val_print_1 (TYPE_TARGET_TYPE (type), valaddr0, embedded_offset, - address, stream, recurse, options); + address, stream, recurse, original_value, options); } else { int format = (options->format ? options->format : options->output_format); + if (format) { struct value_print_options opts = *options; + opts.format = format; print_scalar_formatted (valaddr, type, &opts, 0, stream); } @@ -837,6 +819,7 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, if (i < len) { const char *name = ada_enum_name (TYPE_FIELD_NAME (type, i)); + if (name[0] == '\'') fprintf_filtered (stream, "%ld %s", (long) val, name); else @@ -858,7 +841,7 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, case TYPE_CODE_FLT: if (options->format) return c_val_print (type, valaddr0, embedded_offset, address, stream, - recurse, options); + recurse, original_value, options); else ada_print_floating (valaddr0 + embedded_offset, type, stream); break; @@ -872,13 +855,14 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, } else { - print_record (type, valaddr, stream, recurse, options); + print_record (type, valaddr, stream, recurse, original_value, + options); return 0; } case TYPE_CODE_ARRAY: return ada_val_print_array (type, valaddr, address, stream, - recurse, options); + recurse, original_value, options); case TYPE_CODE_REF: /* For references, the debugger is expected to print the value as @@ -891,16 +875,18 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) { LONGEST deref_val_int = (LONGEST) unpack_pointer (type, valaddr); + if (deref_val_int != 0) { struct value *deref_val = ada_value_ind (value_from_longest (lookup_pointer_type (elttype), deref_val_int)); + val_print (value_type (deref_val), value_contents (deref_val), 0, value_address (deref_val), stream, recurse + 1, - options, current_language); + original_value, options, current_language); } else fputs_filtered ("(null)", stream); @@ -917,6 +903,7 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0, static int print_variant_part (struct type *type, int field_num, const gdb_byte *valaddr, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, int comma_needed, struct type *outer_type, const gdb_byte *outer_valaddr) { @@ -930,7 +917,7 @@ print_variant_part (struct type *type, int field_num, const gdb_byte *valaddr, (TYPE_FIELD_TYPE (var_type, which), valaddr + TYPE_FIELD_BITPOS (type, field_num) / HOST_CHAR_BIT + TYPE_FIELD_BITPOS (var_type, which) / HOST_CHAR_BIT, - stream, recurse, options, + stream, recurse, val, options, comma_needed, outer_type, outer_valaddr); } @@ -938,12 +925,9 @@ int ada_value_print (struct value *val0, struct ui_file *stream, const struct value_print_options *options) { - const gdb_byte *valaddr = value_contents (val0); - CORE_ADDR address = value_address (val0); - struct type *type = - ada_to_fixed_type (value_type (val0), valaddr, address, NULL, 1); - struct value *val = - value_from_contents_and_address (type, valaddr, address); + struct value *val = ada_to_fixed_value (val0); + CORE_ADDR address = value_address (val); + struct type *type = value_type (val); struct value_print_options opts; /* If it is a pointer, indicate what it points to. */ @@ -977,19 +961,20 @@ ada_value_print (struct value *val0, struct ui_file *stream, opts = *options; opts.deref_ref = 1; return (val_print (type, value_contents (val), 0, address, - stream, 0, &opts, current_language)); + stream, 0, val, &opts, current_language)); } static void print_record (struct type *type, const gdb_byte *valaddr, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { type = ada_check_typedef (type); fprintf_filtered (stream, "("); - if (print_field_values (type, valaddr, stream, recurse, options, + if (print_field_values (type, valaddr, stream, recurse, val, options, 0, type, valaddr) != 0 && options->pretty) { fprintf_filtered (stream, "\n"); @@ -1016,6 +1001,7 @@ print_record (struct type *type, const gdb_byte *valaddr, static int print_field_values (struct type *type, const gdb_byte *valaddr, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, int comma_needed, struct type *outer_type, const gdb_byte *outer_valaddr) @@ -1035,7 +1021,7 @@ print_field_values (struct type *type, const gdb_byte *valaddr, print_field_values (TYPE_FIELD_TYPE (type, i), valaddr + TYPE_FIELD_BITPOS (type, i) / HOST_CHAR_BIT, - stream, recurse, options, + stream, recurse, val, options, comma_needed, type, valaddr); continue; } @@ -1043,7 +1029,7 @@ print_field_values (struct type *type, const gdb_byte *valaddr, { comma_needed = print_variant_part (type, i, valaddr, - stream, recurse, options, comma_needed, + stream, recurse, val, options, comma_needed, outer_type, outer_valaddr); continue; } @@ -1091,8 +1077,7 @@ print_field_values (struct type *type, const gdb_byte *valaddr, /* Bitfields require special handling, especially due to byte order problems. */ - if (TYPE_CPLUS_SPECIFIC (type) != NULL - && TYPE_FIELD_IGNORE (type, i)) + if (HAVE_CPLUS_STRUCT (type) && TYPE_FIELD_IGNORE (type, i)) { fputs_filtered (_(""), stream); } @@ -1111,16 +1096,18 @@ print_field_values (struct type *type, const gdb_byte *valaddr, opts = *options; opts.deref_ref = 0; val_print (TYPE_FIELD_TYPE (type, i), value_contents (v), 0, 0, - stream, recurse + 1, &opts, current_language); + stream, recurse + 1, v, + &opts, current_language); } } else { struct value_print_options opts = *options; + opts.deref_ref = 0; ada_val_print (TYPE_FIELD_TYPE (type, i), valaddr + TYPE_FIELD_BITPOS (type, i) / HOST_CHAR_BIT, - 0, 0, stream, recurse + 1, &opts); + 0, 0, stream, recurse + 1, val, &opts); } annotate_field_end (); } diff --git a/contrib/gdb-7/gdb/addrmap.c b/contrib/gdb-7/gdb/addrmap.c index 4b119f5d00..30ec1ef57b 100644 --- a/contrib/gdb-7/gdb/addrmap.c +++ b/contrib/gdb-7/gdb/addrmap.c @@ -1,6 +1,6 @@ /* addrmap.c --- implementation of address map data structure. - Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -224,8 +224,8 @@ static splay_tree_key allocate_key (struct addrmap_mutable *map, CORE_ADDR addr) { CORE_ADDR *key = obstack_alloc (map->obstack, sizeof (*key)); - *key = addr; + *key = addr; return (splay_tree_key) key; } diff --git a/contrib/gdb-7/gdb/addrmap.h b/contrib/gdb-7/gdb/addrmap.h index 1abdf0dc77..96d4e08a80 100644 --- a/contrib/gdb-7/gdb/addrmap.h +++ b/contrib/gdb-7/gdb/addrmap.h @@ -1,6 +1,6 @@ /* addrmap.h --- interface to address map data structure. - Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/amd64-nat.c b/contrib/gdb-7/gdb/amd64-nat.c index f72842dbf6..bcf303e588 100644 --- a/contrib/gdb-7/gdb/amd64-nat.c +++ b/contrib/gdb-7/gdb/amd64-nat.c @@ -1,6 +1,7 @@ /* Native-dependent code for AMD64. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/amd64-nat.h b/contrib/gdb-7/gdb/amd64-nat.h index aab70b4cb2..d1f91992d1 100644 --- a/contrib/gdb-7/gdb/amd64-nat.h +++ b/contrib/gdb-7/gdb/amd64-nat.h @@ -1,6 +1,7 @@ /* Native-dependent code for AMD64. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/amd64-tdep.c b/contrib/gdb-7/gdb/amd64-tdep.c index 51560cf338..9feed905a6 100644 --- a/contrib/gdb-7/gdb/amd64-tdep.c +++ b/contrib/gdb-7/gdb/amd64-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for AMD64. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. @@ -36,12 +36,15 @@ #include "regcache.h" #include "regset.h" #include "symfile.h" - +#include "disasm.h" #include "gdb_assert.h" #include "amd64-tdep.h" #include "i387-tdep.h" +#include "features/i386/amd64.c" +#include "features/i386/amd64-avx.c" + /* Note that the AMD64 architecture was previously known as x86-64. The latter is (forever) engraved into the canonical system name as returned by config.guess, and used as the name for the AMD64 port @@ -69,49 +72,32 @@ static const char *amd64_register_names[] = "mxcsr", }; -/* Total number of registers. */ -#define AMD64_NUM_REGS ARRAY_SIZE (amd64_register_names) - -/* Return the name of register REGNUM. */ - -const char * -amd64_register_name (struct gdbarch *gdbarch, int regnum) +static const char *amd64_ymm_names[] = { - if (regnum >= 0 && regnum < AMD64_NUM_REGS) - return amd64_register_names[regnum]; + "ymm0", "ymm1", "ymm2", "ymm3", + "ymm4", "ymm5", "ymm6", "ymm7", + "ymm8", "ymm9", "ymm10", "ymm11", + "ymm12", "ymm13", "ymm14", "ymm15" +}; - return NULL; -} +static const char *amd64_ymmh_names[] = +{ + "ymm0h", "ymm1h", "ymm2h", "ymm3h", + "ymm4h", "ymm5h", "ymm6h", "ymm7h", + "ymm8h", "ymm9h", "ymm10h", "ymm11h", + "ymm12h", "ymm13h", "ymm14h", "ymm15h" +}; -/* Return the GDB type object for the "standard" data type of data in - register REGNUM. */ - -struct type * -amd64_register_type (struct gdbarch *gdbarch, int regnum) -{ - if (regnum >= AMD64_RAX_REGNUM && regnum <= AMD64_RDI_REGNUM) - return builtin_type (gdbarch)->builtin_int64; - if (regnum == AMD64_RBP_REGNUM || regnum == AMD64_RSP_REGNUM) - return builtin_type (gdbarch)->builtin_data_ptr; - if (regnum >= AMD64_R8_REGNUM && regnum <= AMD64_R15_REGNUM) - return builtin_type (gdbarch)->builtin_int64; - if (regnum == AMD64_RIP_REGNUM) - return builtin_type (gdbarch)->builtin_func_ptr; - if (regnum == AMD64_EFLAGS_REGNUM) - return i386_eflags_type (gdbarch); - if (regnum >= AMD64_CS_REGNUM && regnum <= AMD64_GS_REGNUM) - return builtin_type (gdbarch)->builtin_int32; - if (regnum >= AMD64_ST0_REGNUM && regnum <= AMD64_ST0_REGNUM + 7) - return i387_ext_type (gdbarch); - if (regnum >= AMD64_FCTRL_REGNUM && regnum <= AMD64_FCTRL_REGNUM + 7) - return builtin_type (gdbarch)->builtin_int32; - if (regnum >= AMD64_XMM0_REGNUM && regnum <= AMD64_XMM0_REGNUM + 15) - return i386_sse_type (gdbarch); - if (regnum == AMD64_MXCSR_REGNUM) - return i386_mxcsr_type (gdbarch); - - internal_error (__FILE__, __LINE__, _("invalid regnum")); -} +/* The registers used to pass integer arguments during a function call. */ +static int amd64_dummy_call_integer_regs[] = +{ + AMD64_RDI_REGNUM, /* %rdi */ + AMD64_RSI_REGNUM, /* %rsi */ + AMD64_RDX_REGNUM, /* %rdx */ + AMD64_RCX_REGNUM, /* %rcx */ + 8, /* %r8 */ + 9 /* %r9 */ +}; /* DWARF Register Number Mapping as defined in the System V psABI, section 3.6. */ @@ -191,6 +177,8 @@ static const int amd64_dwarf_regmap_len = static int amd64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg) { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int ymm0_regnum = tdep->ymm0_regnum; int regnum = -1; if (reg >= 0 && reg < amd64_dwarf_regmap_len) @@ -198,6 +186,9 @@ amd64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg) if (regnum == -1) warning (_("Unmapped DWARF Register #%d encountered."), reg); + else if (ymm0_regnum >= 0 + && i386_xmm_regnum_p (gdbarch, regnum)) + regnum += ymm0_regnum - I387_XMM0_REGNUM (tdep); return regnum; } @@ -238,22 +229,152 @@ amd64_arch_reg_to_regnum (int reg) return amd64_arch_regmap[reg]; } - +/* Register names for byte pseudo-registers. */ + +static const char *amd64_byte_names[] = +{ + "al", "bl", "cl", "dl", "sil", "dil", "bpl", "spl", + "r8l", "r9l", "r10l", "r11l", "r12l", "r13l", "r14l", "r15l", + "ah", "bh", "ch", "dh" +}; + +/* Number of lower byte registers. */ +#define AMD64_NUM_LOWER_BYTE_REGS 16 + +/* Register names for word pseudo-registers. */ + +static const char *amd64_word_names[] = +{ + "ax", "bx", "cx", "dx", "si", "di", "bp", "", + "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w" +}; -/* Register classes as defined in the psABI. */ +/* Register names for dword pseudo-registers. */ -enum amd64_reg_class +static const char *amd64_dword_names[] = { - AMD64_INTEGER, - AMD64_SSE, - AMD64_SSEUP, - AMD64_X87, - AMD64_X87UP, - AMD64_COMPLEX_X87, - AMD64_NO_CLASS, - AMD64_MEMORY + "eax", "ebx", "ecx", "edx", "esi", "edi", "ebp", "esp", + "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d" }; +/* Return the name of register REGNUM, or the empty string if it is + an anonymous register. */ + +static const char * +amd64_register_name (struct gdbarch *gdbarch, int regnum) +{ + /* Hide the upper YMM registers. */ + if (i386_ymmh_regnum_p (gdbarch, regnum)) + return ""; + + return tdesc_register_name (gdbarch, regnum); +} + +/* Return the name of register REGNUM. */ + +static const char * +amd64_pseudo_register_name (struct gdbarch *gdbarch, int regnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + if (i386_byte_regnum_p (gdbarch, regnum)) + return amd64_byte_names[regnum - tdep->al_regnum]; + else if (i386_ymm_regnum_p (gdbarch, regnum)) + return amd64_ymm_names[regnum - tdep->ymm0_regnum]; + else if (i386_word_regnum_p (gdbarch, regnum)) + return amd64_word_names[regnum - tdep->ax_regnum]; + else if (i386_dword_regnum_p (gdbarch, regnum)) + return amd64_dword_names[regnum - tdep->eax_regnum]; + else + return i386_pseudo_register_name (gdbarch, regnum); +} + +static void +amd64_pseudo_register_read (struct gdbarch *gdbarch, + struct regcache *regcache, + int regnum, gdb_byte *buf) +{ + gdb_byte raw_buf[MAX_REGISTER_SIZE]; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (i386_byte_regnum_p (gdbarch, regnum)) + { + int gpnum = regnum - tdep->al_regnum; + + /* Extract (always little endian). */ + if (gpnum >= AMD64_NUM_LOWER_BYTE_REGS) + { + /* Special handling for AH, BH, CH, DH. */ + regcache_raw_read (regcache, + gpnum - AMD64_NUM_LOWER_BYTE_REGS, raw_buf); + memcpy (buf, raw_buf + 1, 1); + } + else + { + regcache_raw_read (regcache, gpnum, raw_buf); + memcpy (buf, raw_buf, 1); + } + } + else if (i386_dword_regnum_p (gdbarch, regnum)) + { + int gpnum = regnum - tdep->eax_regnum; + /* Extract (always little endian). */ + regcache_raw_read (regcache, gpnum, raw_buf); + memcpy (buf, raw_buf, 4); + } + else + i386_pseudo_register_read (gdbarch, regcache, regnum, buf); +} + +static void +amd64_pseudo_register_write (struct gdbarch *gdbarch, + struct regcache *regcache, + int regnum, const gdb_byte *buf) +{ + gdb_byte raw_buf[MAX_REGISTER_SIZE]; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (i386_byte_regnum_p (gdbarch, regnum)) + { + int gpnum = regnum - tdep->al_regnum; + + if (gpnum >= AMD64_NUM_LOWER_BYTE_REGS) + { + /* Read ... AH, BH, CH, DH. */ + regcache_raw_read (regcache, + gpnum - AMD64_NUM_LOWER_BYTE_REGS, raw_buf); + /* ... Modify ... (always little endian). */ + memcpy (raw_buf + 1, buf, 1); + /* ... Write. */ + regcache_raw_write (regcache, + gpnum - AMD64_NUM_LOWER_BYTE_REGS, raw_buf); + } + else + { + /* Read ... */ + regcache_raw_read (regcache, gpnum, raw_buf); + /* ... Modify ... (always little endian). */ + memcpy (raw_buf, buf, 1); + /* ... Write. */ + regcache_raw_write (regcache, gpnum, raw_buf); + } + } + else if (i386_dword_regnum_p (gdbarch, regnum)) + { + int gpnum = regnum - tdep->eax_regnum; + + /* Read ... */ + regcache_raw_read (regcache, gpnum, raw_buf); + /* ... Modify ... (always little endian). */ + memcpy (raw_buf, buf, 4); + /* ... Write. */ + regcache_raw_write (regcache, gpnum, raw_buf); + } + else + i386_pseudo_register_write (gdbarch, regcache, regnum, buf); +} + + + /* Return the union class of CLASS1 and CLASS2. See the psABI for details. */ @@ -290,8 +411,6 @@ amd64_merge_classes (enum amd64_reg_class class1, enum amd64_reg_class class2) return AMD64_SSE; } -static void amd64_classify (struct type *type, enum amd64_reg_class class[2]); - /* Return non-zero if TYPE is a non-POD structure or union type. */ static int @@ -352,6 +471,12 @@ amd64_classify_aggregate (struct type *type, enum amd64_reg_class class[2]) struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i)); int pos = TYPE_FIELD_BITPOS (type, i) / 64; enum amd64_reg_class subclass[2]; + int bitsize = TYPE_FIELD_BITSIZE (type, i); + int endpos; + + if (bitsize == 0) + bitsize = TYPE_LENGTH (subtype) * 8; + endpos = (TYPE_FIELD_BITPOS (type, i) + bitsize - 1) / 64; /* Ignore static fields. */ if (field_is_static (&TYPE_FIELD (type, i))) @@ -361,6 +486,30 @@ amd64_classify_aggregate (struct type *type, enum amd64_reg_class class[2]) amd64_classify (subtype, subclass); class[pos] = amd64_merge_classes (class[pos], subclass[0]); + if (bitsize <= 64 && pos == 0 && endpos == 1) + /* This is a bit of an odd case: We have a field that would + normally fit in one of the two eightbytes, except that + it is placed in a way that this field straddles them. + This has been seen with a structure containing an array. + + The ABI is a bit unclear in this case, but we assume that + this field's class (stored in subclass[0]) must also be merged + into class[1]. In other words, our field has a piece stored + in the second eight-byte, and thus its class applies to + the second eight-byte as well. + + In the case where the field length exceeds 8 bytes, + it should not be necessary to merge the field class + into class[1]. As LEN > 8, subclass[1] is necessarily + different from AMD64_NO_CLASS. If subclass[1] is equal + to subclass[0], then the normal class[1]/subclass[1] + merging will take care of everything. For subclass[1] + to be different from subclass[0], I can only see the case + where we have a SSE/SSEUP or X87/X87UP pair, which both + use up all 16 bytes of the aggregate, and are already + handled just fine (because each portion sits on its own + 8-byte). */ + class[1] = amd64_merge_classes (class[1], subclass[0]); if (pos == 0) class[1] = amd64_merge_classes (class[1], subclass[1]); } @@ -383,7 +532,7 @@ amd64_classify_aggregate (struct type *type, enum amd64_reg_class class[2]) /* Classify TYPE, and store the result in CLASS. */ -static void +void amd64_classify (struct type *type, enum amd64_reg_class class[2]) { enum type_code code = TYPE_CODE (type); @@ -434,6 +583,7 @@ amd64_return_value (struct gdbarch *gdbarch, struct type *func_type, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); enum amd64_reg_class class[2]; int len = TYPE_LENGTH (type); static int integer_regnum[] = { AMD64_RAX_REGNUM, AMD64_RDX_REGNUM }; @@ -443,9 +593,10 @@ amd64_return_value (struct gdbarch *gdbarch, struct type *func_type, int i; gdb_assert (!(readbuf && writebuf)); + gdb_assert (tdep->classify); /* 1. Classify the return type with the classification algorithm. */ - amd64_classify (type, class); + tdep->classify (type, class); /* 2. If the type has class MEMORY, then the caller provides space for the return value and passes the address of this storage in @@ -543,15 +694,11 @@ static CORE_ADDR amd64_push_arguments (struct regcache *regcache, int nargs, struct value **args, CORE_ADDR sp, int struct_return) { - static int integer_regnum[] = - { - AMD64_RDI_REGNUM, /* %rdi */ - AMD64_RSI_REGNUM, /* %rsi */ - AMD64_RDX_REGNUM, /* %rdx */ - AMD64_RCX_REGNUM, /* %rcx */ - 8, /* %r8 */ - 9 /* %r9 */ - }; + struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int *integer_regs = tdep->call_dummy_integer_regs; + int num_integer_regs = tdep->call_dummy_num_integer_regs; + static int sse_regnum[] = { /* %xmm0 ... %xmm7 */ @@ -561,6 +708,11 @@ amd64_push_arguments (struct regcache *regcache, int nargs, AMD64_XMM0_REGNUM + 6, AMD64_XMM0_REGNUM + 7, }; struct value **stack_args = alloca (nargs * sizeof (struct value *)); + /* An array that mirrors the stack_args array. For all arguments + that are passed by MEMORY, if that argument's address also needs + to be stored in a register, the ARG_ADDR_REGNO array will contain + that register number (or a negative value otherwise). */ + int *arg_addr_regno = alloca (nargs * sizeof (int)); int num_stack_args = 0; int num_elements = 0; int element = 0; @@ -568,6 +720,8 @@ amd64_push_arguments (struct regcache *regcache, int nargs, int sse_reg = 0; int i; + gdb_assert (tdep->classify); + /* Reserve a register for the "hidden" argument. */ if (struct_return) integer_reg++; @@ -582,7 +736,7 @@ amd64_push_arguments (struct regcache *regcache, int nargs, int j; /* Classify argument. */ - amd64_classify (type, class); + tdep->classify (type, class); /* Calculate the number of integer and SSE registers needed for this argument. */ @@ -596,13 +750,25 @@ amd64_push_arguments (struct regcache *regcache, int nargs, /* Check whether enough registers are available, and if the argument should be passed in registers at all. */ - if (integer_reg + needed_integer_regs > ARRAY_SIZE (integer_regnum) + if (integer_reg + needed_integer_regs > num_integer_regs || sse_reg + needed_sse_regs > ARRAY_SIZE (sse_regnum) || (needed_integer_regs == 0 && needed_sse_regs == 0)) { /* The argument will be passed on the stack. */ num_elements += ((len + 7) / 8); - stack_args[num_stack_args++] = args[i]; + stack_args[num_stack_args] = args[i]; + /* If this is an AMD64_MEMORY argument whose address must also + be passed in one of the integer registers, reserve that + register and associate this value to that register so that + we can store the argument address as soon as we know it. */ + if (class[0] == AMD64_MEMORY + && tdep->memory_args_by_pointer + && integer_reg < tdep->call_dummy_num_integer_regs) + arg_addr_regno[num_stack_args] = + tdep->call_dummy_integer_regs[integer_reg++]; + else + arg_addr_regno[num_stack_args] = -1; + num_stack_args++; } else { @@ -620,7 +786,7 @@ amd64_push_arguments (struct regcache *regcache, int nargs, switch (class[j]) { case AMD64_INTEGER: - regnum = integer_regnum[integer_reg++]; + regnum = integer_regs[integer_reg++]; break; case AMD64_SSE: @@ -658,8 +824,19 @@ amd64_push_arguments (struct regcache *regcache, int nargs, struct type *type = value_type (stack_args[i]); const gdb_byte *valbuf = value_contents (stack_args[i]); int len = TYPE_LENGTH (type); - - write_memory (sp + element * 8, valbuf, len); + CORE_ADDR arg_addr = sp + element * 8; + + write_memory (arg_addr, valbuf, len); + if (arg_addr_regno[i] >= 0) + { + /* We also need to store the address of that argument in + the given register. */ + gdb_byte buf[8]; + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + + store_unsigned_integer (buf, 8, byte_order, arg_addr); + regcache_cooked_write (regcache, arg_addr_regno[i], buf); + } element += ((len + 7) / 8); } @@ -678,6 +855,7 @@ amd64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, int struct_return, CORE_ADDR struct_addr) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); gdb_byte buf[8]; /* Pass arguments. */ @@ -686,10 +864,20 @@ amd64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, /* Pass "hidden" argument". */ if (struct_return) { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + /* The "hidden" argument is passed throught the first argument + register. */ + const int arg_regnum = tdep->call_dummy_integer_regs[0]; + store_unsigned_integer (buf, 8, byte_order, struct_addr); - regcache_cooked_write (regcache, AMD64_RDI_REGNUM, buf); + regcache_cooked_write (regcache, arg_regnum, buf); } + /* Reserve some memory on the stack for the integer-parameter registers, + if required by the ABI. */ + if (tdep->integer_param_regs_saved_in_caller_frame) + sp -= tdep->call_dummy_num_integer_regs * 8; + /* Store return address. */ sp -= 8; store_unsigned_integer (buf, 8, byte_order, bp_addr); @@ -834,57 +1022,6 @@ amd64_skip_prefixes (gdb_byte *insn) return insn; } -/* fprintf-function for amd64_insn_length. - This function is a nop, we don't want to print anything, we just want to - compute the length of the insn. */ - -static int ATTR_FORMAT (printf, 2, 3) -amd64_insn_length_fprintf (void *stream, const char *format, ...) -{ - return 0; -} - -/* Initialize a struct disassemble_info for amd64_insn_length. */ - -static void -amd64_insn_length_init_dis (struct gdbarch *gdbarch, - struct disassemble_info *di, - const gdb_byte *insn, int max_len, - CORE_ADDR addr) -{ - init_disassemble_info (di, NULL, amd64_insn_length_fprintf); - - /* init_disassemble_info installs buffer_read_memory, etc. - so we don't need to do that here. - The cast is necessary until disassemble_info is const-ified. */ - di->buffer = (gdb_byte *) insn; - di->buffer_length = max_len; - di->buffer_vma = addr; - - di->arch = gdbarch_bfd_arch_info (gdbarch)->arch; - di->mach = gdbarch_bfd_arch_info (gdbarch)->mach; - di->endian = gdbarch_byte_order (gdbarch); - di->endian_code = gdbarch_byte_order_for_code (gdbarch); - - disassemble_init_for_target (di); -} - -/* Return the length in bytes of INSN. - MAX_LEN is the size of the buffer containing INSN. - libopcodes currently doesn't export a utility to compute the - instruction length, so use the disassembler until then. */ - -static int -amd64_insn_length (struct gdbarch *gdbarch, - const gdb_byte *insn, int max_len, CORE_ADDR addr) -{ - struct disassemble_info di; - - amd64_insn_length_init_dis (gdbarch, &di, insn, max_len, addr); - - return gdbarch_print_insn (gdbarch, addr, &di); -} - /* Return an integer register (other than RSP) that is unused as an input operand in INSN. In order to not require adding a rex prefix if the insn doesn't already @@ -1050,7 +1187,8 @@ fixup_riprel (struct gdbarch *gdbarch, struct displaced_step_closure *dsc, /* Compute the rip-relative address. */ disp = extract_signed_integer (insn, sizeof (int32_t), byte_order); - insn_length = amd64_insn_length (gdbarch, dsc->insn_buf, dsc->max_len, from); + insn_length = gdb_buffered_insn_length (gdbarch, dsc->insn_buf, + dsc->max_len, from); rip_base = from + insn_length; /* We need a register to hold the address. @@ -1369,6 +1507,123 @@ amd64_displaced_step_fixup (struct gdbarch *gdbarch, paddress (gdbarch, retaddr)); } } + +/* If the instruction INSN uses RIP-relative addressing, return the + offset into the raw INSN where the displacement to be adjusted is + found. Returns 0 if the instruction doesn't use RIP-relative + addressing. */ + +static int +rip_relative_offset (struct amd64_insn *insn) +{ + if (insn->modrm_offset != -1) + { + gdb_byte modrm = insn->raw_insn[insn->modrm_offset]; + + if ((modrm & 0xc7) == 0x05) + { + /* The displacement is found right after the ModRM byte. */ + return insn->modrm_offset + 1; + } + } + + return 0; +} + +static void +append_insns (CORE_ADDR *to, ULONGEST len, const gdb_byte *buf) +{ + target_write_memory (*to, buf, len); + *to += len; +} + +void +amd64_relocate_instruction (struct gdbarch *gdbarch, + CORE_ADDR *to, CORE_ADDR oldloc) +{ + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + int len = gdbarch_max_insn_length (gdbarch); + /* Extra space for sentinels. */ + int fixup_sentinel_space = len; + gdb_byte *buf = xmalloc (len + fixup_sentinel_space); + struct amd64_insn insn_details; + int offset = 0; + LONGEST rel32, newrel; + gdb_byte *insn; + int insn_length; + + read_memory (oldloc, buf, len); + + /* Set up the sentinel space so we don't have to worry about running + off the end of the buffer. An excessive number of leading prefixes + could otherwise cause this. */ + memset (buf + len, 0, fixup_sentinel_space); + + insn = buf; + amd64_get_insn_details (insn, &insn_details); + + insn_length = gdb_buffered_insn_length (gdbarch, insn, len, oldloc); + + /* Skip legacy instruction prefixes. */ + insn = amd64_skip_prefixes (insn); + + /* Adjust calls with 32-bit relative addresses as push/jump, with + the address pushed being the location where the original call in + the user program would return to. */ + if (insn[0] == 0xe8) + { + gdb_byte push_buf[16]; + unsigned int ret_addr; + + /* Where "ret" in the original code will return to. */ + ret_addr = oldloc + insn_length; + push_buf[0] = 0x68; /* pushq $... */ + memcpy (&push_buf[1], &ret_addr, 4); + /* Push the push. */ + append_insns (to, 5, push_buf); + + /* Convert the relative call to a relative jump. */ + insn[0] = 0xe9; + + /* Adjust the destination offset. */ + rel32 = extract_signed_integer (insn + 1, 4, byte_order); + newrel = (oldloc - *to) + rel32; + store_signed_integer (insn + 1, 4, newrel, byte_order); + + /* Write the adjusted jump into its displaced location. */ + append_insns (to, 5, insn); + return; + } + + offset = rip_relative_offset (&insn_details); + if (!offset) + { + /* Adjust jumps with 32-bit relative addresses. Calls are + already handled above. */ + if (insn[0] == 0xe9) + offset = 1; + /* Adjust conditional jumps. */ + else if (insn[0] == 0x0f && (insn[1] & 0xf0) == 0x80) + offset = 2; + } + + if (offset) + { + rel32 = extract_signed_integer (insn + offset, 4, byte_order); + newrel = (oldloc - *to) + rel32; + store_signed_integer (insn + offset, 4, newrel, byte_order); + if (debug_displaced) + fprintf_unfiltered (gdb_stdlog, + "Adjusted insn rel32=0x%s at 0x%s to" + " rel32=0x%s at 0x%s\n", + hex_string (rel32), paddress (gdbarch, oldloc), + hex_string (newrel), paddress (gdbarch, *to)); + } + + /* Write the adjusted instruction into its displaced location. */ + append_insns (to, insn_length, buf); +} + /* The maximum number of saved registers. This should include %rip. */ #define AMD64_NUM_SAVED_REGS AMD64_NUM_GREGS @@ -1402,7 +1657,10 @@ amd64_init_frame_cache (struct amd64_frame_cache *cache) cache->pc = 0; /* Saved registers. We initialize these to -1 since zero is a valid - offset (that's where %rbp is supposed to be stored). */ + offset (that's where %rbp is supposed to be stored). + The values start out as being offsets, and are later converted to + addresses (at which point -1 is interpreted as an address, still meaning + "invalid"). */ for (i = 0; i < AMD64_NUM_SAVED_REGS; i++) cache->saved_regs[i] = -1; cache->saved_sp = 0; @@ -1925,7 +2183,7 @@ amd64_epilogue_frame_cache (struct frame_info *this_frame, void **this_cache) struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); struct amd64_frame_cache *cache; - gdb_byte buf[4]; + gdb_byte buf[8]; if (*this_cache) return *this_cache; @@ -2019,6 +2277,26 @@ amd64_collect_fpregset (const struct regset *regset, amd64_collect_fxsave (regcache, regnum, fpregs); } +/* Similar to amd64_supply_fpregset, but use XSAVE extended state. */ + +static void +amd64_supply_xstateregset (const struct regset *regset, + struct regcache *regcache, int regnum, + const void *xstateregs, size_t len) +{ + amd64_supply_xsave (regcache, regnum, xstateregs); +} + +/* Similar to amd64_collect_fpregset, but use XSAVE extended state. */ + +static void +amd64_collect_xstateregset (const struct regset *regset, + const struct regcache *regcache, + int regnum, void *xstateregs, size_t len) +{ + amd64_collect_xsave (regcache, regnum, xstateregs, 1); +} + /* Return the appropriate register set for the core section identified by SECT_NAME and SECT_SIZE. */ @@ -2037,6 +2315,16 @@ amd64_regset_from_core_section (struct gdbarch *gdbarch, return tdep->fpregset; } + if (strcmp (sect_name, ".reg-xstate") == 0) + { + if (tdep->xstateregset == NULL) + tdep->xstateregset = regset_alloc (gdbarch, + amd64_supply_xstateregset, + amd64_collect_xstateregset); + + return tdep->xstateregset; + } + return i386_regset_from_core_section (gdbarch, sect_name, sect_size); } @@ -2086,11 +2374,41 @@ void amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + const struct target_desc *tdesc = info.target_desc; /* AMD64 generally uses `fxsave' instead of `fsave' for saving its floating-point registers. */ tdep->sizeof_fpregset = I387_SIZEOF_FXSAVE; + if (! tdesc_has_registers (tdesc)) + tdesc = tdesc_amd64; + tdep->tdesc = tdesc; + + tdep->num_core_regs = AMD64_NUM_GREGS + I387_NUM_REGS; + tdep->register_names = amd64_register_names; + + if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.avx") != NULL) + { + tdep->ymmh_register_names = amd64_ymmh_names; + tdep->num_ymm_regs = 16; + tdep->ymm0h_regnum = AMD64_YMM0H_REGNUM; + } + + tdep->num_byte_regs = 20; + tdep->num_word_regs = 16; + tdep->num_dword_regs = 16; + /* Avoid wiring in the MMX registers for now. */ + tdep->num_mmx_regs = 0; + + set_gdbarch_pseudo_register_read (gdbarch, + amd64_pseudo_register_read); + set_gdbarch_pseudo_register_write (gdbarch, + amd64_pseudo_register_write); + + set_tdesc_pseudo_register_name (gdbarch, amd64_pseudo_register_name); + + set_gdbarch_register_name (gdbarch, amd64_register_name); + /* AMD64 has an FPU and 16 SSE registers. */ tdep->st0_regnum = AMD64_ST0_REGNUM; tdep->num_xmm_regs = 16; @@ -2106,8 +2424,6 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_long_double_bit (gdbarch, 128); set_gdbarch_num_regs (gdbarch, AMD64_NUM_REGS); - set_gdbarch_register_name (gdbarch, amd64_register_name); - set_gdbarch_register_type (gdbarch, amd64_register_type); /* Register numbers of various important registers. */ set_gdbarch_sp_regnum (gdbarch, AMD64_RSP_REGNUM); /* %rsp */ @@ -2131,6 +2447,10 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_push_dummy_call (gdbarch, amd64_push_dummy_call); set_gdbarch_frame_align (gdbarch, amd64_frame_align); set_gdbarch_frame_red_zone_size (gdbarch, 128); + tdep->call_dummy_num_integer_regs = + ARRAY_SIZE (amd64_dummy_call_integer_regs); + tdep->call_dummy_integer_regs = amd64_dummy_call_integer_regs; + tdep->classify = amd64_classify; set_gdbarch_convert_register_p (gdbarch, i387_convert_register_p); set_gdbarch_register_to_value (gdbarch, i387_register_to_value); @@ -2140,10 +2460,6 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_skip_prologue (gdbarch, amd64_skip_prologue); - /* Avoid wiring in the MMX registers for now. */ - set_gdbarch_num_pseudo_regs (gdbarch, 0); - tdep->mm0_regnum = -1; - tdep->record_regmap = amd64_record_regmap; set_gdbarch_dummy_id (gdbarch, amd64_dummy_id); @@ -2164,6 +2480,18 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_regset_from_core_section); set_gdbarch_get_longjmp_target (gdbarch, amd64_get_longjmp_target); + + set_gdbarch_relocate_instruction (gdbarch, amd64_relocate_instruction); +} + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_amd64_tdep (void); + +void +_initialize_amd64_tdep (void) +{ + initialize_tdesc_amd64 (); + initialize_tdesc_amd64_avx (); } @@ -2199,6 +2527,30 @@ amd64_supply_fxsave (struct regcache *regcache, int regnum, } } +/* Similar to amd64_supply_fxsave, but use XSAVE extended state. */ + +void +amd64_supply_xsave (struct regcache *regcache, int regnum, + const void *xsave) +{ + struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + i387_supply_xsave (regcache, regnum, xsave); + + if (xsave && gdbarch_ptr_bit (gdbarch) == 64) + { + const gdb_byte *regs = xsave; + + if (regnum == -1 || regnum == I387_FISEG_REGNUM (tdep)) + regcache_raw_supply (regcache, I387_FISEG_REGNUM (tdep), + regs + 12); + if (regnum == -1 || regnum == I387_FOSEG_REGNUM (tdep)) + regcache_raw_supply (regcache, I387_FOSEG_REGNUM (tdep), + regs + 20); + } +} + /* Fill register REGNUM (if it is a floating-point or SSE register) in *FXSAVE with the value from REGCACHE. If REGNUM is -1, do this for all registers. This function doesn't touch any of the reserved @@ -2222,3 +2574,26 @@ amd64_collect_fxsave (const struct regcache *regcache, int regnum, regcache_raw_collect (regcache, I387_FOSEG_REGNUM (tdep), regs + 20); } } + +/* Similar to amd64_collect_fxsave, but but use XSAVE extended state. */ + +void +amd64_collect_xsave (const struct regcache *regcache, int regnum, + void *xsave, int gcore) +{ + struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + gdb_byte *regs = xsave; + + i387_collect_xsave (regcache, regnum, xsave, gcore); + + if (gdbarch_ptr_bit (gdbarch) == 64) + { + if (regnum == -1 || regnum == I387_FISEG_REGNUM (tdep)) + regcache_raw_collect (regcache, I387_FISEG_REGNUM (tdep), + regs + 12); + if (regnum == -1 || regnum == I387_FOSEG_REGNUM (tdep)) + regcache_raw_collect (regcache, I387_FOSEG_REGNUM (tdep), + regs + 20); + } +} diff --git a/contrib/gdb-7/gdb/amd64-tdep.h b/contrib/gdb-7/gdb/amd64-tdep.h index 121d22569a..e67106d1c7 100644 --- a/contrib/gdb-7/gdb/amd64-tdep.h +++ b/contrib/gdb-7/gdb/amd64-tdep.h @@ -1,6 +1,6 @@ /* Target-dependent definitions for AMD64. - Copyright (C) 2001, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 2001, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. @@ -61,12 +61,16 @@ enum amd64_regnum AMD64_FSTAT_REGNUM = AMD64_ST0_REGNUM + 9, AMD64_XMM0_REGNUM = 40, /* %xmm0 */ AMD64_XMM1_REGNUM, /* %xmm1 */ - AMD64_MXCSR_REGNUM = AMD64_XMM0_REGNUM + 16 + AMD64_MXCSR_REGNUM = AMD64_XMM0_REGNUM + 16, + AMD64_YMM0H_REGNUM, /* %ymm0h */ + AMD64_YMM15H_REGNUM = AMD64_YMM0H_REGNUM + 15 }; /* Number of general purpose registers. */ #define AMD64_NUM_GREGS 24 +#define AMD64_NUM_REGS (AMD64_YMM15H_REGNUM + 1) + extern struct displaced_step_closure *amd64_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs); @@ -77,12 +81,6 @@ extern void amd64_displaced_step_fixup (struct gdbarch *gdbarch, extern void amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch); -/* Functions from amd64-tdep.c which may be needed on architectures - with extra registers. */ - -extern const char *amd64_register_name (struct gdbarch *gdbarch, int regnum); -extern struct type *amd64_register_type (struct gdbarch *gdbarch, int regnum); - /* Fill register REGNUM in REGCACHE with the appropriate floating-point or SSE register value from *FXSAVE. If REGNUM is -1, do this for all registers. This function masks off any of the @@ -91,6 +89,10 @@ extern struct type *amd64_register_type (struct gdbarch *gdbarch, int regnum); extern void amd64_supply_fxsave (struct regcache *regcache, int regnum, const void *fxsave); +/* Similar to amd64_supply_fxsave, but use XSAVE extended state. */ +extern void amd64_supply_xsave (struct regcache *regcache, int regnum, + const void *xsave); + /* Fill register REGNUM (if it is a floating-point or SSE register) in *FXSAVE with the value from REGCACHE. If REGNUM is -1, do this for all registers. This function doesn't touch any of the reserved @@ -98,8 +100,18 @@ extern void amd64_supply_fxsave (struct regcache *regcache, int regnum, extern void amd64_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave); + +/* Similar to amd64_collect_fxsave, but but use XSAVE extended state. */ +extern void amd64_collect_xsave (const struct regcache *regcache, + int regnum, void *xsave, int gcore); + +void amd64_classify (struct type *type, enum amd64_reg_class class[2]); + +/* Variables exported from amd64-linux-tdep.c. */ +extern int amd64_linux_gregset_reg_offset[]; + /* Variables exported from amd64nbsd-tdep.c. */ extern int amd64nbsd_r_reg_offset[]; diff --git a/contrib/gdb-7/gdb/amd64bsd-nat.c b/contrib/gdb-7/gdb/amd64bsd-nat.c index 22a5707d68..fa73776f5c 100644 --- a/contrib/gdb-7/gdb/amd64bsd-nat.c +++ b/contrib/gdb-7/gdb/amd64bsd-nat.c @@ -1,6 +1,7 @@ /* Native-dependent code for AMD64 BSD's. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/annotate.c b/contrib/gdb-7/gdb/annotate.c index 6f52296950..66774b0199 100644 --- a/contrib/gdb-7/gdb/annotate.c +++ b/contrib/gdb-7/gdb/annotate.c @@ -1,6 +1,6 @@ /* Annotation routines for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1998, 1999, - 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/annotate.h b/contrib/gdb-7/gdb/annotate.h index 326a8db3df..e5dba73a83 100644 --- a/contrib/gdb-7/gdb/annotate.h +++ b/contrib/gdb-7/gdb/annotate.h @@ -1,6 +1,6 @@ /* Annotation routines for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1994, 1998, 1999, 2000, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/arch-utils.c b/contrib/gdb-7/gdb/arch-utils.c index b58c562c4a..e8836d2d63 100644 --- a/contrib/gdb-7/gdb/arch-utils.c +++ b/contrib/gdb-7/gdb/arch-utils.c @@ -1,7 +1,7 @@ /* Dynamic architecture support for GDB, the GNU debugger. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -533,6 +533,7 @@ gdbarch_from_bfd (bfd *abfd) { struct gdbarch_info info; gdbarch_info_init (&info); + info.abfd = abfd; return gdbarch_find_by_info (info); } @@ -580,9 +581,9 @@ void initialize_current_architecture (void) { const char **arches = gdbarch_printable_names (); + struct gdbarch_info info; /* determine a default architecture and byte order. */ - struct gdbarch_info info; gdbarch_info_init (&info); /* Find a default architecture. */ @@ -652,7 +653,6 @@ initialize_current_architecture (void) /* Create the ``set architecture'' command appending ``auto'' to the list of architectures. */ { - struct cmd_list_element *c; /* Append ``auto''. */ int nr; for (nr = 0; arches[nr] != NULL; nr++); @@ -757,6 +757,32 @@ get_current_arch (void) return target_gdbarch; } +int +default_has_shared_address_space (struct gdbarch *gdbarch) +{ + /* Simply say no. In most unix-like targets each inferior/process + has its own address space. */ + return 0; +} + +int +default_fast_tracepoint_valid_at (struct gdbarch *gdbarch, + CORE_ADDR addr, int *isize, char **msg) +{ + /* We don't know if maybe the target has some way to do fast + tracepoints that doesn't need gdbarch, so always say yes. */ + if (msg) + *msg = NULL; + return 1; +} + +void +default_remote_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, + int *kindptr) +{ + gdbarch_breakpoint_from_pc (gdbarch, pcptr, kindptr); +} + /* */ extern initialize_file_ftype _initialize_gdbarch_utils; /* -Wmissing-prototypes */ @@ -764,7 +790,6 @@ extern initialize_file_ftype _initialize_gdbarch_utils; /* -Wmissing-prototypes void _initialize_gdbarch_utils (void) { - struct cmd_list_element *c; add_setshow_enum_cmd ("endian", class_support, endian_enum, &set_endian_string, _("\ Set endianness of target."), _("\ diff --git a/contrib/gdb-7/gdb/arch-utils.h b/contrib/gdb-7/gdb/arch-utils.h index dddae55cd6..dbeb67f737 100644 --- a/contrib/gdb-7/gdb/arch-utils.h +++ b/contrib/gdb-7/gdb/arch-utils.h @@ -1,6 +1,6 @@ /* Dynamic architecture support for GDB, the GNU debugger. - Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -153,4 +153,16 @@ extern struct gdbarch *gdbarch_from_bfd (bfd *abfd); routines to determine the architecture to execute a command in. */ extern struct gdbarch *get_current_arch (void); +extern int default_has_shared_address_space (struct gdbarch *); + +extern int default_fast_tracepoint_valid_at (struct gdbarch *gdbarch, + CORE_ADDR addr, + int *isize, char **msg); + +extern void default_remote_breakpoint_from_pc (struct gdbarch *, + CORE_ADDR *pcptr, int *kindptr); + +extern const char *default_auto_charset (void); +extern const char *default_auto_wide_charset (void); + #endif diff --git a/contrib/gdb-7/gdb/auxv.c b/contrib/gdb-7/gdb/auxv.c index 7b4ecbe2bc..593b0c8059 100644 --- a/contrib/gdb-7/gdb/auxv.c +++ b/contrib/gdb-7/gdb/auxv.c @@ -1,6 +1,6 @@ /* Auxiliary vector support for GDB, the GNU debugger. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -25,6 +25,7 @@ #include "inferior.h" #include "valprint.h" #include "gdb_assert.h" +#include "gdbcore.h" #include "auxv.h" #include "elf/common.h" @@ -33,15 +34,11 @@ #include -/* This function is called like a to_xfer_partial hook, but must be - called with TARGET_OBJECT_AUXV. It handles access via - /proc/PID/auxv, which is a common method for native targets. */ +/* This function handles access via /proc/PID/auxv, which is a common method + for native targets. */ -LONGEST -procfs_xfer_auxv (struct target_ops *ops, - enum target_object object, - const char *annex, - gdb_byte *readbuf, +static LONGEST +procfs_xfer_auxv (gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, LONGEST len) @@ -50,9 +47,6 @@ procfs_xfer_auxv (struct target_ops *ops, int fd; LONGEST n; - gdb_assert (object == TARGET_OBJECT_AUXV); - gdb_assert (readbuf || writebuf); - pathname = xstrprintf ("/proc/%d/auxv", PIDGET (inferior_ptid)); fd = open (pathname, writebuf != NULL ? O_WRONLY : O_RDONLY); xfree (pathname); @@ -72,6 +66,165 @@ procfs_xfer_auxv (struct target_ops *ops, return n; } +/* This function handles access via ld.so's symbol `_dl_auxv'. */ + +static LONGEST +ld_so_xfer_auxv (gdb_byte *readbuf, + const gdb_byte *writebuf, + ULONGEST offset, + LONGEST len) +{ + struct minimal_symbol *msym; + CORE_ADDR data_address, pointer_address; + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; + size_t ptr_size = TYPE_LENGTH (ptr_type); + size_t auxv_pair_size = 2 * ptr_size; + gdb_byte *ptr_buf = alloca (ptr_size); + LONGEST retval; + size_t block; + + msym = lookup_minimal_symbol ("_dl_auxv", NULL, NULL); + if (msym == NULL) + return -1; + + if (MSYMBOL_SIZE (msym) != ptr_size) + return -1; + + /* POINTER_ADDRESS is a location where the `_dl_auxv' variable resides. + DATA_ADDRESS is the inferior value present in `_dl_auxv', therefore the + real inferior AUXV address. */ + + pointer_address = SYMBOL_VALUE_ADDRESS (msym); + + /* The location of the _dl_auxv symbol may no longer be correct if + ld.so runs at a different address than the one present in the file. + This is very common case - for unprelinked ld.so or with a PIE executable. + PIE executable forces random address even for libraries already being + prelinked to some address. PIE executables themselves are never prelinked + even on prelinked systems. Prelinking of a PIE executable would block + their purpose of randomizing load of everything including the executable. + + If the memory read fails, return -1 to fallback on another mechanism for + retrieving the AUXV. + + In most cases of a PIE running under valgrind there is no way to find + out the base addresses of any of ld.so, executable or AUXV as everything + is randomized and /proc information is not relevant for the virtual + executable running under valgrind. We think that we might need a valgrind + extension to make it work. This is PR 11440. */ + + if (target_read_memory (pointer_address, ptr_buf, ptr_size) != 0) + return -1; + + data_address = extract_typed_address (ptr_buf, ptr_type); + + /* Possibly still not initialized such as during an inferior startup. */ + if (data_address == 0) + return -1; + + data_address += offset; + + if (writebuf != NULL) + { + if (target_write_memory (data_address, writebuf, len) == 0) + return len; + else + return -1; + } + + /* Stop if trying to read past the existing AUXV block. The final AT_NULL + was already returned before. */ + + if (offset >= auxv_pair_size) + { + if (target_read_memory (data_address - auxv_pair_size, ptr_buf, + ptr_size) != 0) + return -1; + + if (extract_typed_address (ptr_buf, ptr_type) == AT_NULL) + return 0; + } + + retval = 0; + block = 0x400; + gdb_assert (block % auxv_pair_size == 0); + + while (len > 0) + { + if (block > len) + block = len; + + /* Reading sizes smaller than AUXV_PAIR_SIZE is not supported. Tails + unaligned to AUXV_PAIR_SIZE will not be read during a call (they + should be completed during next read with new/extended buffer). */ + + block &= -auxv_pair_size; + if (block == 0) + return retval; + + if (target_read_memory (data_address, readbuf, block) != 0) + { + if (block <= auxv_pair_size) + return retval; + + block = auxv_pair_size; + continue; + } + + data_address += block; + len -= block; + + /* Check terminal AT_NULL. This function is being called indefinitely + being extended its READBUF until it returns EOF (0). */ + + while (block >= auxv_pair_size) + { + retval += auxv_pair_size; + + if (extract_typed_address (readbuf, ptr_type) == AT_NULL) + return retval; + + readbuf += auxv_pair_size; + block -= auxv_pair_size; + } + } + + return retval; +} + +/* This function is called like a to_xfer_partial hook, but must be + called with TARGET_OBJECT_AUXV. It handles access to AUXV. */ + +LONGEST +memory_xfer_auxv (struct target_ops *ops, + enum target_object object, + const char *annex, + gdb_byte *readbuf, + const gdb_byte *writebuf, + ULONGEST offset, + LONGEST len) +{ + gdb_assert (object == TARGET_OBJECT_AUXV); + gdb_assert (readbuf || writebuf); + + /* ld_so_xfer_auxv is the only function safe for virtual executables being + executed by valgrind's memcheck. Using ld_so_xfer_auxv during inferior + startup is problematic, because ld.so symbol tables have not yet been + relocated. So GDB uses this function only when attaching to a process. + */ + + if (current_inferior ()->attach_flag != 0) + { + LONGEST retval; + + retval = ld_so_xfer_auxv (readbuf, writebuf, offset, len); + if (retval != -1) + return retval; + } + + return procfs_xfer_auxv (readbuf, writebuf, offset, len); +} + /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR. Return 0 if *READPTR is already at the end of the buffer. Return -1 if there is insufficient buffer for a whole entry. @@ -109,6 +262,7 @@ target_auxv_parse (struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) { struct target_ops *t; + for (t = ops; t != NULL; t = t->beneath) if (t->to_auxv_parse != NULL) return t->to_auxv_parse (t, readptr, endptr, typep, valp); @@ -127,7 +281,6 @@ target_auxv_search (struct target_ops *ops, CORE_ADDR match, CORE_ADDR *valp) gdb_byte *data; LONGEST n = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data); gdb_byte *ptr = data; - int ents = 0; if (n <= 0) return n; @@ -243,6 +396,7 @@ fprint_target_auxv (struct ui_file *file, struct target_ops *ops) case str: { struct value_print_options opts; + get_user_print_options (&opts); if (opts.addressprint) fprintf_filtered (file, "%s", paddress (target_gdbarch, val)); @@ -270,6 +424,7 @@ info_auxv_command (char *cmd, int from_tty) else { int ents = fprint_target_auxv (gdb_stdout, ¤t_target); + if (ents < 0) error (_("No auxiliary vector found, or failed reading it.")); else if (ents == 0) diff --git a/contrib/gdb-7/gdb/auxv.h b/contrib/gdb-7/gdb/auxv.h index 71e656265d..679bf17cec 100644 --- a/contrib/gdb-7/gdb/auxv.h +++ b/contrib/gdb-7/gdb/auxv.h @@ -1,6 +1,6 @@ /* Auxiliary vector support for GDB, the GNU debugger. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -43,11 +43,7 @@ extern int target_auxv_search (struct target_ops *ops, /* Print the contents of the target's AUXV on the specified file. */ extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops); -/* This function is called like a to_xfer_partial hook, but must be - called with TARGET_OBJECT_AUXV. It handles access via - /proc/PID/auxv, which is a common method for native targets. */ - -extern LONGEST procfs_xfer_auxv (struct target_ops *ops, +extern LONGEST memory_xfer_auxv (struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *readbuf, diff --git a/contrib/gdb-7/gdb/ax-gdb.c b/contrib/gdb-7/gdb/ax-gdb.c index 999b27cc1c..e01f359bd3 100644 --- a/contrib/gdb-7/gdb/ax-gdb.c +++ b/contrib/gdb-7/gdb/ax-gdb.c @@ -1,6 +1,6 @@ /* GDB-specific functions for operating on agent expressions. - Copyright (C) 1998, 1999, 2000, 2001, 2003, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -22,6 +22,7 @@ #include "symtab.h" #include "symfile.h" #include "gdbtypes.h" +#include "language.h" #include "value.h" #include "expression.h" #include "command.h" @@ -35,6 +36,10 @@ #include "regcache.h" #include "user-regs.h" #include "language.h" +#include "dictionary.h" +#include "breakpoint.h" +#include "tracepoint.h" +#include "cp-support.h" /* To make sense of this file, you should read doc/agentexpr.texi. Then look at the types and enums in ax-gdb.h. For the code itself, @@ -65,7 +70,7 @@ static struct value *const_var_ref (struct symbol *var); static struct value *const_expr (union exp_element **pc); static struct value *maybe_const_expr (union exp_element **pc); -static void gen_traced_pop (struct agent_expr *, struct axs_value *); +static void gen_traced_pop (struct gdbarch *, struct agent_expr *, struct axs_value *); static void gen_sign_extend (struct agent_expr *, struct type *); static void gen_extend (struct agent_expr *, struct type *); @@ -123,14 +128,25 @@ static void gen_logical_not (struct agent_expr *ax, struct axs_value *value, static void gen_complement (struct agent_expr *ax, struct axs_value *value); static void gen_deref (struct agent_expr *, struct axs_value *); static void gen_address_of (struct agent_expr *, struct axs_value *); -static int find_field (struct type *type, char *name); static void gen_bitfield_ref (struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *type, int start, int end); +static void gen_primitive_field (struct expression *exp, + struct agent_expr *ax, + struct axs_value *value, + int offset, int fieldno, struct type *type); +static int gen_struct_ref_recursive (struct expression *exp, + struct agent_expr *ax, + struct axs_value *value, + char *field, int offset, + struct type *type); static void gen_struct_ref (struct expression *exp, struct agent_expr *ax, struct axs_value *value, char *field, char *operator_name, char *operand_name); +static void gen_static_field (struct gdbarch *gdbarch, + struct agent_expr *ax, struct axs_value *value, + struct type *type, int fieldno); static void gen_repeat (struct expression *exp, union exp_element **pc, struct agent_expr *ax, struct axs_value *value); static void gen_sizeof (struct expression *exp, union exp_element **pc, @@ -138,6 +154,12 @@ static void gen_sizeof (struct expression *exp, union exp_element **pc, struct type *size_type); static void gen_expr (struct expression *exp, union exp_element **pc, struct agent_expr *ax, struct axs_value *value); +static void gen_expr_binop_rest (struct expression *exp, + enum exp_opcode op, union exp_element **pc, + struct agent_expr *ax, + struct axs_value *value, + struct axs_value *value1, + struct axs_value *value2); static void agent_command (char *exp, int from_tty); @@ -197,6 +219,7 @@ const_expr (union exp_element **pc) { struct type *type = (*pc)[1].type; LONGEST k = (*pc)[2].longconst; + (*pc) += 4; return value_from_longest (type, k); } @@ -204,6 +227,7 @@ const_expr (union exp_element **pc) case OP_VAR_VALUE: { struct value *v = const_var_ref ((*pc)[2].symbol); + (*pc) += 4; return v; } @@ -307,13 +331,65 @@ maybe_const_expr (union exp_element **pc) Setting the flag trace_kludge to non-zero enables the code that emits the trace bytecodes at the appropriate points. */ -static int trace_kludge; +int trace_kludge; + +/* Scan for all static fields in the given class, including any base + classes, and generate tracing bytecodes for each. */ + +static void +gen_trace_static_fields (struct gdbarch *gdbarch, + struct agent_expr *ax, + struct type *type) +{ + int i, nbases = TYPE_N_BASECLASSES (type); + struct axs_value value; + + CHECK_TYPEDEF (type); + + for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--) + { + if (field_is_static (&TYPE_FIELD (type, i))) + { + gen_static_field (gdbarch, ax, &value, type, i); + if (value.optimized_out) + continue; + switch (value.kind) + { + case axs_lvalue_memory: + { + int length = TYPE_LENGTH (check_typedef (value.type)); + + ax_const_l (ax, length); + ax_simple (ax, aop_trace); + } + break; + + case axs_lvalue_register: + /* We don't actually need the register's value to be pushed, + just note that we need it to be collected. */ + ax_reg_mask (ax, value.u.reg); + + default: + break; + } + } + } + + /* Now scan through base classes recursively. */ + for (i = 0; i < nbases; i++) + { + struct type *basetype = check_typedef (TYPE_BASECLASS (type, i)); + + gen_trace_static_fields (gdbarch, ax, basetype); + } +} /* Trace the lvalue on the stack, if it needs it. In either case, pop the value. Useful on the left side of a comma, and at the end of an expression being used for tracing. */ static void -gen_traced_pop (struct agent_expr *ax, struct axs_value *value) +gen_traced_pop (struct gdbarch *gdbarch, + struct agent_expr *ax, struct axs_value *value) { if (trace_kludge) switch (value->kind) @@ -339,16 +415,22 @@ gen_traced_pop (struct agent_expr *ax, struct axs_value *value) break; case axs_lvalue_register: - /* We need to mention the register somewhere in the bytecode, - so ax_reqs will pick it up and add it to the mask of - registers used. */ - ax_reg (ax, value->u.reg); - ax_simple (ax, aop_pop); + /* We don't actually need the register's value to be on the + stack, and the target will get heartburn if the register is + larger than will fit in a stack, so just mark it for + collection and be done with it. */ + ax_reg_mask (ax, value->u.reg); break; } else /* If we're not tracing, just pop the value. */ ax_simple (ax, aop_pop); + + /* To trace C++ classes with static fields stored elsewhere. */ + if (trace_kludge + && (TYPE_CODE (value->type) == TYPE_CODE_STRUCT + || TYPE_CODE (value->type) == TYPE_CODE_UNION)) + gen_trace_static_fields (gdbarch, ax, value->type); } @@ -373,6 +455,7 @@ static void gen_extend (struct agent_expr *ax, struct type *type) { int bits = TYPE_LENGTH (type) * TARGET_CHAR_BIT; + /* I just had to. */ ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, bits)); } @@ -393,9 +476,11 @@ gen_fetch (struct agent_expr *ax, struct type *type) switch (TYPE_CODE (type)) { case TYPE_CODE_PTR: + case TYPE_CODE_REF: case TYPE_CODE_ENUM: case TYPE_CODE_INT: case TYPE_CODE_CHAR: + case TYPE_CODE_BOOL: /* It's a scalar value, so we know how to dereference it. How many bytes long is it? */ switch (TYPE_LENGTH (type)) @@ -531,6 +616,7 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax, { /* Dereference any typedefs. */ value->type = check_typedef (SYMBOL_TYPE (var)); + value->optimized_out = 0; /* I'm imitating the code in read_var_value. */ switch (SYMBOL_CLASS (var)) @@ -608,6 +694,7 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax, { struct minimal_symbol *msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (var), NULL, NULL); + if (!msym) error (_("Couldn't resolve symbol `%s'."), SYMBOL_PRINT_NAME (var)); @@ -627,8 +714,9 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax, break; case LOC_OPTIMIZED_OUT: - error (_("The variable `%s' has been optimized out."), - SYMBOL_PRINT_NAME (var)); + /* Flag this, but don't say anything; leave it up to callers to + warn the user. */ + value->optimized_out = 1; break; default: @@ -661,6 +749,15 @@ gen_int_literal (struct agent_expr *ax, struct axs_value *value, LONGEST k, static void require_rvalue (struct agent_expr *ax, struct axs_value *value) { + /* Only deal with scalars, structs and such may be too large + to fit in a stack entry. */ + value->type = check_typedef (value->type); + if (TYPE_CODE (value->type) == TYPE_CODE_ARRAY + || TYPE_CODE (value->type) == TYPE_CODE_STRUCT + || TYPE_CODE (value->type) == TYPE_CODE_UNION + || TYPE_CODE (value->type) == TYPE_CODE_FUNC) + error (_("Value not scalar: cannot be an rvalue.")); + switch (value->kind) { case axs_rvalue: @@ -725,6 +822,7 @@ gen_usual_unary (struct expression *exp, struct agent_expr *ax, case TYPE_CODE_ARRAY: { struct type *elements = TYPE_TARGET_TYPE (value->type); + value->type = lookup_pointer_type (elements); value->kind = axs_rvalue; /* We don't need to generate any code; the address of the array @@ -738,8 +836,9 @@ gen_usual_unary (struct expression *exp, struct agent_expr *ax, case TYPE_CODE_UNION: return; - /* If the value is an enum, call it an integer. */ + /* If the value is an enum or a bool, call it an integer. */ case TYPE_CODE_ENUM: + case TYPE_CODE_BOOL: value->type = builtin_type (exp->gdbarch)->builtin_int; break; } @@ -803,7 +902,7 @@ gen_conversion (struct agent_expr *ax, struct type *from, struct type *to) static int is_nontrivial_conversion (struct type *from, struct type *to) { - struct agent_expr *ax = new_agent_expr (0); + struct agent_expr *ax = new_agent_expr (NULL, 0); int nontrivial; /* Actually generate the code, and see if anything came out. At the @@ -893,6 +992,7 @@ gen_cast (struct agent_expr *ax, struct axs_value *value, struct type *type) switch (TYPE_CODE (type)) { case TYPE_CODE_PTR: + case TYPE_CODE_REF: /* It's implementation-defined, and I'll bet this is what GCC does. */ break; @@ -904,6 +1004,7 @@ gen_cast (struct agent_expr *ax, struct axs_value *value, struct type *type) error (_("Invalid type cast: intended type must be scalar.")); case TYPE_CODE_ENUM: + case TYPE_CODE_BOOL: /* We don't have to worry about the size of the value, because all our integral values are fully sign-extended, and when casting pointers we can do anything we like. Is there any @@ -953,7 +1054,7 @@ static void gen_ptradd (struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2) { - gdb_assert (TYPE_CODE (value1->type) == TYPE_CODE_PTR); + gdb_assert (pointer_type (value1->type)); gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT); gen_scale (ax, aop_mul, value1->type); @@ -969,7 +1070,7 @@ static void gen_ptrsub (struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2) { - gdb_assert (TYPE_CODE (value1->type) == TYPE_CODE_PTR); + gdb_assert (pointer_type (value1->type)); gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT); gen_scale (ax, aop_mul, value1->type); @@ -986,8 +1087,8 @@ gen_ptrdiff (struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2, struct type *result_type) { - gdb_assert (TYPE_CODE (value1->type) == TYPE_CODE_PTR); - gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_PTR); + gdb_assert (pointer_type (value1->type)); + gdb_assert (pointer_type (value2->type)); if (TYPE_LENGTH (TYPE_TARGET_TYPE (value1->type)) != TYPE_LENGTH (TYPE_TARGET_TYPE (value2->type))) @@ -1001,6 +1102,33 @@ an integer nor a pointer of the same type.")); value->kind = axs_rvalue; } +static void +gen_equal (struct agent_expr *ax, struct axs_value *value, + struct axs_value *value1, struct axs_value *value2, + struct type *result_type) +{ + if (pointer_type (value1->type) || pointer_type (value2->type)) + ax_simple (ax, aop_equal); + else + gen_binop (ax, value, value1, value2, + aop_equal, aop_equal, 0, "equal"); + value->type = result_type; + value->kind = axs_rvalue; +} + +static void +gen_less (struct agent_expr *ax, struct axs_value *value, + struct axs_value *value1, struct axs_value *value2, + struct type *result_type) +{ + if (pointer_type (value1->type) || pointer_type (value2->type)) + ax_simple (ax, aop_less_unsigned); + else + gen_binop (ax, value, value1, value2, + aop_less_signed, aop_less_unsigned, 0, "less than"); + value->type = result_type; + value->kind = axs_rvalue; +} /* Generate code for a binary operator that doesn't do pointer magic. We set VALUE to describe the result value; we assume VALUE1 and @@ -1060,7 +1188,7 @@ gen_deref (struct agent_expr *ax, struct axs_value *value) { /* The caller should check the type, because several operators use this, and we don't know what error message to generate. */ - if (TYPE_CODE (value->type) != TYPE_CODE_PTR) + if (!pointer_type (value->type)) internal_error (__FILE__, __LINE__, _("gen_deref: expected a pointer")); @@ -1070,6 +1198,8 @@ gen_deref (struct agent_expr *ax, struct axs_value *value) T" to "T", and mark the value as an lvalue in memory. Leave it to the consumer to actually dereference it. */ value->type = check_typedef (TYPE_TARGET_TYPE (value->type)); + if (TYPE_CODE (value->type) == TYPE_CODE_VOID) + error (_("Attempt to dereference a generic pointer.")); value->kind = ((TYPE_CODE (value->type) == TYPE_CODE_FUNC) ? axs_rvalue : axs_lvalue_memory); } @@ -1102,46 +1232,6 @@ gen_address_of (struct agent_expr *ax, struct axs_value *value) } } - -/* A lot of this stuff will have to change to support C++. But we're - not going to deal with that at the moment. */ - -/* Find the field in the structure type TYPE named NAME, and return - its index in TYPE's field array. */ -static int -find_field (struct type *type, char *name) -{ - int i; - - CHECK_TYPEDEF (type); - - /* Make sure this isn't C++. */ - if (TYPE_N_BASECLASSES (type) != 0) - internal_error (__FILE__, __LINE__, - _("find_field: derived classes supported")); - - for (i = 0; i < TYPE_NFIELDS (type); i++) - { - char *this_name = TYPE_FIELD_NAME (type, i); - - if (this_name) - { - if (strcmp (name, this_name) == 0) - return i; - - if (this_name[0] == '\0') - internal_error (__FILE__, __LINE__, - _("find_field: anonymous unions not supported")); - } - } - - error (_("Couldn't find member named `%s' in struct/union `%s'"), - name, TYPE_TAG_NAME (type)); - - return 0; -} - - /* Generate code to push the value of a bitfield of a structure whose address is on the top of the stack. START and END give the starting and one-past-ending *bit* numbers of the field within the @@ -1153,8 +1243,7 @@ gen_bitfield_ref (struct expression *exp, struct agent_expr *ax, { /* Note that ops[i] fetches 8 << i bits. */ static enum agent_op ops[] - = - {aop_ref8, aop_ref16, aop_ref32, aop_ref64}; + = {aop_ref8, aop_ref16, aop_ref32, aop_ref64}; static int num_ops = (sizeof (ops) / sizeof (ops[0])); /* We don't want to touch any byte that the bitfield doesn't @@ -1302,6 +1391,93 @@ gen_bitfield_ref (struct expression *exp, struct agent_expr *ax, value->type = type; } +/* Generate bytecodes for field number FIELDNO of type TYPE. OFFSET + is an accumulated offset (in bytes), will be nonzero for objects + embedded in other objects, like C++ base classes. Behavior should + generally follow value_primitive_field. */ + +static void +gen_primitive_field (struct expression *exp, + struct agent_expr *ax, struct axs_value *value, + int offset, int fieldno, struct type *type) +{ + /* Is this a bitfield? */ + if (TYPE_FIELD_PACKED (type, fieldno)) + gen_bitfield_ref (exp, ax, value, TYPE_FIELD_TYPE (type, fieldno), + (offset * TARGET_CHAR_BIT + + TYPE_FIELD_BITPOS (type, fieldno)), + (offset * TARGET_CHAR_BIT + + TYPE_FIELD_BITPOS (type, fieldno) + + TYPE_FIELD_BITSIZE (type, fieldno))); + else + { + gen_offset (ax, offset + + TYPE_FIELD_BITPOS (type, fieldno) / TARGET_CHAR_BIT); + value->kind = axs_lvalue_memory; + value->type = TYPE_FIELD_TYPE (type, fieldno); + } +} + +/* Search for the given field in either the given type or one of its + base classes. Return 1 if found, 0 if not. */ + +static int +gen_struct_ref_recursive (struct expression *exp, struct agent_expr *ax, + struct axs_value *value, + char *field, int offset, struct type *type) +{ + int i, rslt; + int nbases = TYPE_N_BASECLASSES (type); + + CHECK_TYPEDEF (type); + + for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--) + { + char *this_name = TYPE_FIELD_NAME (type, i); + + if (this_name) + { + if (strcmp (field, this_name) == 0) + { + /* Note that bytecodes for the struct's base (aka + "this") will have been generated already, which will + be unnecessary but not harmful if the static field is + being handled as a global. */ + if (field_is_static (&TYPE_FIELD (type, i))) + { + gen_static_field (exp->gdbarch, ax, value, type, i); + if (value->optimized_out) + error (_("static field `%s' has been optimized out, cannot use"), + field); + return 1; + } + + gen_primitive_field (exp, ax, value, offset, i, type); + return 1; + } +#if 0 /* is this right? */ + if (this_name[0] == '\0') + internal_error (__FILE__, __LINE__, + _("find_field: anonymous unions not supported")); +#endif + } + } + + /* Now scan through base classes recursively. */ + for (i = 0; i < nbases; i++) + { + struct type *basetype = check_typedef (TYPE_BASECLASS (type, i)); + + rslt = gen_struct_ref_recursive (exp, ax, value, field, + offset + TYPE_BASECLASS_BITPOS (type, i) / TARGET_CHAR_BIT, + basetype); + if (rslt) + return 1; + } + + /* Not found anywhere, flag so caller can complain. */ + return 0; +} /* Generate code to reference the member named FIELD of a structure or union. The top of the stack, as described by VALUE, should have @@ -1314,12 +1490,12 @@ gen_struct_ref (struct expression *exp, struct agent_expr *ax, char *operator_name, char *operand_name) { struct type *type; - int i; + int found; /* Follow pointers until we reach a non-pointer. These aren't the C semantics, but they're what the normal GDB evaluator does, so we should at least be consistent. */ - while (TYPE_CODE (value->type) == TYPE_CODE_PTR) + while (pointer_type (value->type)) { require_rvalue (ax, value); gen_deref (ax, value); @@ -1337,23 +1513,170 @@ gen_struct_ref (struct expression *exp, struct agent_expr *ax, if (value->kind != axs_lvalue_memory) error (_("Structure does not live in memory.")); - i = find_field (type, field); + /* Search through fields and base classes recursively. */ + found = gen_struct_ref_recursive (exp, ax, value, field, 0, type); + + if (!found) + error (_("Couldn't find member named `%s' in struct/union/class `%s'"), + field, TYPE_TAG_NAME (type)); +} - /* Is this a bitfield? */ - if (TYPE_FIELD_PACKED (type, i)) - gen_bitfield_ref (exp, ax, value, TYPE_FIELD_TYPE (type, i), - TYPE_FIELD_BITPOS (type, i), - (TYPE_FIELD_BITPOS (type, i) - + TYPE_FIELD_BITSIZE (type, i))); - else +static int +gen_namespace_elt (struct expression *exp, + struct agent_expr *ax, struct axs_value *value, + const struct type *curtype, char *name); +static int +gen_maybe_namespace_elt (struct expression *exp, + struct agent_expr *ax, struct axs_value *value, + const struct type *curtype, char *name); + +static void +gen_static_field (struct gdbarch *gdbarch, + struct agent_expr *ax, struct axs_value *value, + struct type *type, int fieldno) +{ + if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR) { - gen_offset (ax, TYPE_FIELD_BITPOS (type, i) / TARGET_CHAR_BIT); + ax_const_l (ax, TYPE_FIELD_STATIC_PHYSADDR (type, fieldno)); value->kind = axs_lvalue_memory; - value->type = TYPE_FIELD_TYPE (type, i); + value->type = TYPE_FIELD_TYPE (type, fieldno); + value->optimized_out = 0; + } + else + { + char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno); + struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0); + + if (sym) + { + gen_var_ref (gdbarch, ax, value, sym); + + /* Don't error if the value was optimized out, we may be + scanning all static fields and just want to pass over this + and continue with the rest. */ + } + else + { + /* Silently assume this was optimized out; class printing + will let the user know why the data is missing. */ + value->optimized_out = 1; + } + } +} + +static int +gen_struct_elt_for_reference (struct expression *exp, + struct agent_expr *ax, struct axs_value *value, + struct type *type, char *fieldname) +{ + struct type *t = type; + int i; + + if (TYPE_CODE (t) != TYPE_CODE_STRUCT + && TYPE_CODE (t) != TYPE_CODE_UNION) + internal_error (__FILE__, __LINE__, + _("non-aggregate type to gen_struct_elt_for_reference")); + + for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--) + { + char *t_field_name = TYPE_FIELD_NAME (t, i); + + if (t_field_name && strcmp (t_field_name, fieldname) == 0) + { + if (field_is_static (&TYPE_FIELD (t, i))) + { + gen_static_field (exp->gdbarch, ax, value, t, i); + if (value->optimized_out) + error (_("static field `%s' has been optimized out, cannot use"), + fieldname); + return 1; + } + if (TYPE_FIELD_PACKED (t, i)) + error (_("pointers to bitfield members not allowed")); + + /* FIXME we need a way to do "want_address" equivalent */ + + error (_("Cannot reference non-static field \"%s\""), fieldname); + } } + + /* FIXME add other scoped-reference cases here */ + + /* Do a last-ditch lookup. */ + return gen_maybe_namespace_elt (exp, ax, value, type, fieldname); +} + +/* C++: Return the member NAME of the namespace given by the type + CURTYPE. */ + +static int +gen_namespace_elt (struct expression *exp, + struct agent_expr *ax, struct axs_value *value, + const struct type *curtype, char *name) +{ + int found = gen_maybe_namespace_elt (exp, ax, value, curtype, name); + + if (!found) + error (_("No symbol \"%s\" in namespace \"%s\"."), + name, TYPE_TAG_NAME (curtype)); + + return found; +} + +/* A helper function used by value_namespace_elt and + value_struct_elt_for_reference. It looks up NAME inside the + context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE + is a class and NAME refers to a type in CURTYPE itself (as opposed + to, say, some base class of CURTYPE). */ + +static int +gen_maybe_namespace_elt (struct expression *exp, + struct agent_expr *ax, struct axs_value *value, + const struct type *curtype, char *name) +{ + const char *namespace_name = TYPE_TAG_NAME (curtype); + struct symbol *sym; + + sym = cp_lookup_symbol_namespace (namespace_name, name, + block_for_pc (ax->scope), + VAR_DOMAIN); + + if (sym == NULL) + return 0; + + gen_var_ref (exp->gdbarch, ax, value, sym); + + if (value->optimized_out) + error (_("`%s' has been optimized out, cannot use"), + SYMBOL_PRINT_NAME (sym)); + + return 1; } +static int +gen_aggregate_elt_ref (struct expression *exp, + struct agent_expr *ax, struct axs_value *value, + struct type *type, char *field, + char *operator_name, char *operand_name) +{ + switch (TYPE_CODE (type)) + { + case TYPE_CODE_STRUCT: + case TYPE_CODE_UNION: + return gen_struct_elt_for_reference (exp, ax, value, type, field); + break; + case TYPE_CODE_NAMESPACE: + return gen_namespace_elt (exp, ax, value, type, field); + break; + default: + internal_error (__FILE__, __LINE__, + _("non-aggregate type in gen_aggregate_elt_ref")); + } + + return 0; +} + /* Generate code for GDB's magical `repeat' operator. LVALUE @ INT creates an array INT elements long, and whose elements have the same type as LVALUE, located in memory so that LVALUE is @@ -1370,6 +1693,7 @@ gen_repeat (struct expression *exp, union exp_element **pc, struct agent_expr *ax, struct axs_value *value) { struct axs_value value1; + /* We don't want to turn this into an rvalue, so no conversions here. */ gen_expr (exp, pc, ax, &value1); @@ -1418,6 +1742,7 @@ gen_sizeof (struct expression *exp, union exp_element **pc, So we generate code for the operand, and then throw it away, replacing it with code that simply pushes its size. */ int start = ax->len; + gen_expr (exp, pc, ax, value); /* Throw away the code we just generated. */ @@ -1439,8 +1764,10 @@ gen_expr (struct expression *exp, union exp_element **pc, struct agent_expr *ax, struct axs_value *value) { /* Used to hold the descriptions of operand expressions. */ - struct axs_value value1, value2; - enum exp_opcode op = (*pc)[0].opcode; + struct axs_value value1, value2, value3; + enum exp_opcode op = (*pc)[0].opcode, op2; + int if1, go1, if2, go2, end; + struct type *int_type = builtin_type (exp->gdbarch)->builtin_int; /* If we're looking at a constant expression, just push its value. */ { @@ -1464,6 +1791,8 @@ gen_expr (struct expression *exp, union exp_element **pc, case BINOP_MUL: case BINOP_DIV: case BINOP_REM: + case BINOP_LSH: + case BINOP_RSH: case BINOP_SUBSCRIPT: case BINOP_BITWISE_AND: case BINOP_BITWISE_IOR: @@ -1477,119 +1806,129 @@ gen_expr (struct expression *exp, union exp_element **pc, (*pc)++; gen_expr (exp, pc, ax, &value1); gen_usual_unary (exp, ax, &value1); + gen_expr_binop_rest (exp, op, pc, ax, value, &value1, &value2); + break; + + case BINOP_LOGICAL_AND: + (*pc)++; + /* Generate the obvious sequence of tests and jumps. */ + gen_expr (exp, pc, ax, &value1); + gen_usual_unary (exp, ax, &value1); + if1 = ax_goto (ax, aop_if_goto); + go1 = ax_goto (ax, aop_goto); + ax_label (ax, if1, ax->len); gen_expr (exp, pc, ax, &value2); gen_usual_unary (exp, ax, &value2); - gen_usual_arithmetic (exp, ax, &value1, &value2); - switch (op) - { - case BINOP_ADD: - if (TYPE_CODE (value1.type) == TYPE_CODE_INT - && TYPE_CODE (value2.type) == TYPE_CODE_PTR) - { - /* Swap the values and proceed normally. */ - ax_simple (ax, aop_swap); - gen_ptradd (ax, value, &value2, &value1); - } - else if (TYPE_CODE (value1.type) == TYPE_CODE_PTR - && TYPE_CODE (value2.type) == TYPE_CODE_INT) - gen_ptradd (ax, value, &value1, &value2); - else - gen_binop (ax, value, &value1, &value2, - aop_add, aop_add, 1, "addition"); - break; - case BINOP_SUB: - if (TYPE_CODE (value1.type) == TYPE_CODE_PTR - && TYPE_CODE (value2.type) == TYPE_CODE_INT) - gen_ptrsub (ax,value, &value1, &value2); - else if (TYPE_CODE (value1.type) == TYPE_CODE_PTR - && TYPE_CODE (value2.type) == TYPE_CODE_PTR) - /* FIXME --- result type should be ptrdiff_t */ - gen_ptrdiff (ax, value, &value1, &value2, - builtin_type (exp->gdbarch)->builtin_long); - else - gen_binop (ax, value, &value1, &value2, - aop_sub, aop_sub, 1, "subtraction"); - break; - case BINOP_MUL: - gen_binop (ax, value, &value1, &value2, - aop_mul, aop_mul, 1, "multiplication"); - break; - case BINOP_DIV: - gen_binop (ax, value, &value1, &value2, - aop_div_signed, aop_div_unsigned, 1, "division"); - break; - case BINOP_REM: - gen_binop (ax, value, &value1, &value2, - aop_rem_signed, aop_rem_unsigned, 1, "remainder"); - break; - case BINOP_SUBSCRIPT: - gen_ptradd (ax, value, &value1, &value2); - if (TYPE_CODE (value->type) != TYPE_CODE_PTR) - error (_("Invalid combination of types in array subscripting.")); - gen_deref (ax, value); - break; - case BINOP_BITWISE_AND: - gen_binop (ax, value, &value1, &value2, - aop_bit_and, aop_bit_and, 0, "bitwise and"); - break; - - case BINOP_BITWISE_IOR: - gen_binop (ax, value, &value1, &value2, - aop_bit_or, aop_bit_or, 0, "bitwise or"); - break; - - case BINOP_BITWISE_XOR: - gen_binop (ax, value, &value1, &value2, - aop_bit_xor, aop_bit_xor, 0, "bitwise exclusive-or"); - break; - - case BINOP_EQUAL: - gen_binop (ax, value, &value1, &value2, - aop_equal, aop_equal, 0, "equal"); - break; + if2 = ax_goto (ax, aop_if_goto); + go2 = ax_goto (ax, aop_goto); + ax_label (ax, if2, ax->len); + ax_const_l (ax, 1); + end = ax_goto (ax, aop_goto); + ax_label (ax, go1, ax->len); + ax_label (ax, go2, ax->len); + ax_const_l (ax, 0); + ax_label (ax, end, ax->len); + value->kind = axs_rvalue; + value->type = int_type; + break; - case BINOP_NOTEQUAL: - gen_binop (ax, value, &value1, &value2, - aop_equal, aop_equal, 0, "equal"); - gen_logical_not (ax, value, - language_bool_type (exp->language_defn, - exp->gdbarch)); - break; + case BINOP_LOGICAL_OR: + (*pc)++; + /* Generate the obvious sequence of tests and jumps. */ + gen_expr (exp, pc, ax, &value1); + gen_usual_unary (exp, ax, &value1); + if1 = ax_goto (ax, aop_if_goto); + gen_expr (exp, pc, ax, &value2); + gen_usual_unary (exp, ax, &value2); + if2 = ax_goto (ax, aop_if_goto); + ax_const_l (ax, 0); + end = ax_goto (ax, aop_goto); + ax_label (ax, if1, ax->len); + ax_label (ax, if2, ax->len); + ax_const_l (ax, 1); + ax_label (ax, end, ax->len); + value->kind = axs_rvalue; + value->type = int_type; + break; - case BINOP_LESS: - gen_binop (ax, value, &value1, &value2, - aop_less_signed, aop_less_unsigned, 0, "less than"); - break; + case TERNOP_COND: + (*pc)++; + gen_expr (exp, pc, ax, &value1); + gen_usual_unary (exp, ax, &value1); + /* For (A ? B : C), it's easiest to generate subexpression + bytecodes in order, but if_goto jumps on true, so we invert + the sense of A. Then we can do B by dropping through, and + jump to do C. */ + gen_logical_not (ax, &value1, int_type); + if1 = ax_goto (ax, aop_if_goto); + gen_expr (exp, pc, ax, &value2); + gen_usual_unary (exp, ax, &value2); + end = ax_goto (ax, aop_goto); + ax_label (ax, if1, ax->len); + gen_expr (exp, pc, ax, &value3); + gen_usual_unary (exp, ax, &value3); + ax_label (ax, end, ax->len); + /* This is arbitary - what if B and C are incompatible types? */ + value->type = value2.type; + value->kind = value2.kind; + break; - case BINOP_GTR: - ax_simple (ax, aop_swap); - gen_binop (ax, value, &value1, &value2, - aop_less_signed, aop_less_unsigned, 0, "less than"); - break; + case BINOP_ASSIGN: + (*pc)++; + if ((*pc)[0].opcode == OP_INTERNALVAR) + { + char *name = internalvar_name ((*pc)[1].internalvar); + struct trace_state_variable *tsv; - case BINOP_LEQ: - ax_simple (ax, aop_swap); - gen_binop (ax, value, &value1, &value2, - aop_less_signed, aop_less_unsigned, 0, "less than"); - gen_logical_not (ax, value, - language_bool_type (exp->language_defn, - exp->gdbarch)); - break; + (*pc) += 3; + gen_expr (exp, pc, ax, value); + tsv = find_trace_state_variable (name); + if (tsv) + { + ax_tsv (ax, aop_setv, tsv->number); + if (trace_kludge) + ax_tsv (ax, aop_tracev, tsv->number); + } + else + error (_("$%s is not a trace state variable, may not assign to it"), name); + } + else + error (_("May only assign to trace state variables")); + break; - case BINOP_GEQ: - gen_binop (ax, value, &value1, &value2, - aop_less_signed, aop_less_unsigned, 0, "less than"); - gen_logical_not (ax, value, - language_bool_type (exp->language_defn, - exp->gdbarch)); - break; + case BINOP_ASSIGN_MODIFY: + (*pc)++; + op2 = (*pc)[0].opcode; + (*pc)++; + (*pc)++; + if ((*pc)[0].opcode == OP_INTERNALVAR) + { + char *name = internalvar_name ((*pc)[1].internalvar); + struct trace_state_variable *tsv; - default: - /* We should only list operators in the outer case statement - that we actually handle in the inner case statement. */ - internal_error (__FILE__, __LINE__, - _("gen_expr: op case sets don't match")); + (*pc) += 3; + tsv = find_trace_state_variable (name); + if (tsv) + { + /* The tsv will be the left half of the binary operation. */ + ax_tsv (ax, aop_getv, tsv->number); + if (trace_kludge) + ax_tsv (ax, aop_tracev, tsv->number); + /* Trace state variables are always 64-bit integers. */ + value1.kind = axs_rvalue; + value1.type = builtin_type (exp->gdbarch)->builtin_long_long; + /* Now do right half of expression. */ + gen_expr_binop_rest (exp, op2, pc, ax, value, &value1, &value2); + /* We have a result of the binary op, set the tsv. */ + ax_tsv (ax, aop_setv, tsv->number); + if (trace_kludge) + ax_tsv (ax, aop_tracev, tsv->number); + } + else + error (_("$%s is not a trace state variable, may not assign to it"), name); } + else + error (_("May only assign to trace state variables")); break; /* Note that we need to be a little subtle about generating code @@ -1604,7 +1943,7 @@ gen_expr (struct expression *exp, union exp_element **pc, /* Don't just dispose of the left operand. We might be tracing, in which case we want to emit code to trace it if it's an lvalue. */ - gen_traced_pop (ax, &value1); + gen_traced_pop (exp->gdbarch, ax, &value1); gen_expr (exp, pc, ax, value); /* It's the consumer's responsibility to trace the right operand. */ break; @@ -1613,6 +1952,7 @@ gen_expr (struct expression *exp, union exp_element **pc, { struct type *type = (*pc)[1].type; LONGEST k = (*pc)[2].longconst; + (*pc) += 4; gen_int_literal (ax, value, k, type); } @@ -1620,6 +1960,11 @@ gen_expr (struct expression *exp, union exp_element **pc, case OP_VAR_VALUE: gen_var_ref (exp->gdbarch, ax, value, (*pc)[2].symbol); + + if (value->optimized_out) + error (_("`%s' has been optimized out, cannot use"), + SYMBOL_PRINT_NAME ((*pc)[2].symbol)); + (*pc) += 4; break; @@ -1627,6 +1972,7 @@ gen_expr (struct expression *exp, union exp_element **pc, { const char *name = &(*pc)[2].string; int reg; + (*pc) += 4 + BYTES_TO_EXP_ELEM ((*pc)[1].longconst + 1); reg = user_reg_map_name_to_regnum (exp->gdbarch, name, strlen (name)); if (reg == -1) @@ -1643,7 +1989,25 @@ gen_expr (struct expression *exp, union exp_element **pc, break; case OP_INTERNALVAR: - error (_("GDB agent expressions cannot use convenience variables.")); + { + const char *name = internalvar_name ((*pc)[1].internalvar); + struct trace_state_variable *tsv; + + (*pc) += 3; + tsv = find_trace_state_variable (name); + if (tsv) + { + ax_tsv (ax, aop_getv, tsv->number); + if (trace_kludge) + ax_tsv (ax, aop_tracev, tsv->number); + /* Trace state variables are always 64-bit integers. */ + value->kind = axs_rvalue; + value->type = builtin_type (exp->gdbarch)->builtin_long_long; + } + else + error (_("$%s is not a trace state variable; GDB agent expressions cannot use convenience variables."), name); + } + break; /* Weirdo operator: see comments for gen_repeat for details. */ case BINOP_REPEAT: @@ -1655,6 +2019,7 @@ gen_expr (struct expression *exp, union exp_element **pc, case UNOP_CAST: { struct type *type = (*pc)[1].type; + (*pc) += 3; gen_expr (exp, pc, ax, value); gen_cast (ax, value, type); @@ -1664,6 +2029,7 @@ gen_expr (struct expression *exp, union exp_element **pc, case UNOP_MEMVAL: { struct type *type = check_typedef ((*pc)[1].type); + (*pc) += 3; gen_expr (exp, pc, ax, value); /* I'm not sure I understand UNOP_MEMVAL entirely. I think @@ -1702,8 +2068,7 @@ gen_expr (struct expression *exp, union exp_element **pc, (*pc)++; gen_expr (exp, pc, ax, value); gen_usual_unary (exp, ax, value); - gen_logical_not (ax, value, - language_bool_type (exp->language_defn, exp->gdbarch)); + gen_logical_not (ax, value, int_type); break; case UNOP_COMPLEMENT: @@ -1718,7 +2083,7 @@ gen_expr (struct expression *exp, union exp_element **pc, (*pc)++; gen_expr (exp, pc, ax, value); gen_usual_unary (exp, ax, value); - if (TYPE_CODE (value->type) != TYPE_CODE_PTR) + if (!pointer_type (value->type)) error (_("Argument of unary `*' is not a pointer.")); gen_deref (ax, value); break; @@ -1759,15 +2124,245 @@ gen_expr (struct expression *exp, union exp_element **pc, } break; + case OP_THIS: + { + char *this_name; + struct symbol *func, *sym; + struct block *b; + + func = block_linkage_function (block_for_pc (ax->scope)); + this_name = language_def (SYMBOL_LANGUAGE (func))->la_name_of_this; + b = SYMBOL_BLOCK_VALUE (func); + + /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER + symbol instead of the LOC_ARG one (if both exist). */ + sym = lookup_block_symbol (b, this_name, VAR_DOMAIN); + if (!sym) + error (_("no `%s' found"), this_name); + + gen_var_ref (exp->gdbarch, ax, value, sym); + + if (value->optimized_out) + error (_("`%s' has been optimized out, cannot use"), + SYMBOL_PRINT_NAME (sym)); + + (*pc) += 2; + } + break; + + case OP_SCOPE: + { + struct type *type = (*pc)[1].type; + int length = longest_to_int ((*pc)[2].longconst); + char *name = &(*pc)[3].string; + int found; + + found = gen_aggregate_elt_ref (exp, ax, value, type, name, + "?", "??"); + if (!found) + error (_("There is no field named %s"), name); + (*pc) += 5 + BYTES_TO_EXP_ELEM (length + 1); + } + break; + case OP_TYPE: error (_("Attempt to use a type name as an expression.")); default: - error (_("Unsupported operator in expression.")); + error (_("Unsupported operator %s (%d) in expression."), + op_string (op), op); + } +} + +/* This handles the middle-to-right-side of code generation for binary + expressions, which is shared between regular binary operations and + assign-modify (+= and friends) expressions. */ + +static void +gen_expr_binop_rest (struct expression *exp, + enum exp_opcode op, union exp_element **pc, + struct agent_expr *ax, struct axs_value *value, + struct axs_value *value1, struct axs_value *value2) +{ + struct type *int_type = builtin_type (exp->gdbarch)->builtin_int; + + gen_expr (exp, pc, ax, value2); + gen_usual_unary (exp, ax, value2); + gen_usual_arithmetic (exp, ax, value1, value2); + switch (op) + { + case BINOP_ADD: + if (TYPE_CODE (value1->type) == TYPE_CODE_INT + && pointer_type (value2->type)) + { + /* Swap the values and proceed normally. */ + ax_simple (ax, aop_swap); + gen_ptradd (ax, value, value2, value1); + } + else if (pointer_type (value1->type) + && TYPE_CODE (value2->type) == TYPE_CODE_INT) + gen_ptradd (ax, value, value1, value2); + else + gen_binop (ax, value, value1, value2, + aop_add, aop_add, 1, "addition"); + break; + case BINOP_SUB: + if (pointer_type (value1->type) + && TYPE_CODE (value2->type) == TYPE_CODE_INT) + gen_ptrsub (ax,value, value1, value2); + else if (pointer_type (value1->type) + && pointer_type (value2->type)) + /* FIXME --- result type should be ptrdiff_t */ + gen_ptrdiff (ax, value, value1, value2, + builtin_type (exp->gdbarch)->builtin_long); + else + gen_binop (ax, value, value1, value2, + aop_sub, aop_sub, 1, "subtraction"); + break; + case BINOP_MUL: + gen_binop (ax, value, value1, value2, + aop_mul, aop_mul, 1, "multiplication"); + break; + case BINOP_DIV: + gen_binop (ax, value, value1, value2, + aop_div_signed, aop_div_unsigned, 1, "division"); + break; + case BINOP_REM: + gen_binop (ax, value, value1, value2, + aop_rem_signed, aop_rem_unsigned, 1, "remainder"); + break; + case BINOP_LSH: + gen_binop (ax, value, value1, value2, + aop_lsh, aop_lsh, 1, "left shift"); + break; + case BINOP_RSH: + gen_binop (ax, value, value1, value2, + aop_rsh_signed, aop_rsh_unsigned, 1, "right shift"); + break; + case BINOP_SUBSCRIPT: + { + struct type *type; + + if (binop_types_user_defined_p (op, value1->type, value2->type)) + { + error (_("\ +cannot subscript requested type: cannot call user defined functions")); + } + else + { + /* If the user attempts to subscript something that is not + an array or pointer type (like a plain int variable for + example), then report this as an error. */ + type = check_typedef (value1->type); + if (TYPE_CODE (type) != TYPE_CODE_ARRAY + && TYPE_CODE (type) != TYPE_CODE_PTR) + { + if (TYPE_NAME (type)) + error (_("cannot subscript something of type `%s'"), + TYPE_NAME (type)); + else + error (_("cannot subscript requested type")); + } + } + + if (!is_integral_type (value2->type)) + error (_("Argument to arithmetic operation not a number or boolean.")); + + gen_ptradd (ax, value, value1, value2); + gen_deref (ax, value); + break; + } + case BINOP_BITWISE_AND: + gen_binop (ax, value, value1, value2, + aop_bit_and, aop_bit_and, 0, "bitwise and"); + break; + + case BINOP_BITWISE_IOR: + gen_binop (ax, value, value1, value2, + aop_bit_or, aop_bit_or, 0, "bitwise or"); + break; + + case BINOP_BITWISE_XOR: + gen_binop (ax, value, value1, value2, + aop_bit_xor, aop_bit_xor, 0, "bitwise exclusive-or"); + break; + + case BINOP_EQUAL: + gen_equal (ax, value, value1, value2, int_type); + break; + + case BINOP_NOTEQUAL: + gen_equal (ax, value, value1, value2, int_type); + gen_logical_not (ax, value, int_type); + break; + + case BINOP_LESS: + gen_less (ax, value, value1, value2, int_type); + break; + + case BINOP_GTR: + ax_simple (ax, aop_swap); + gen_less (ax, value, value1, value2, int_type); + break; + + case BINOP_LEQ: + ax_simple (ax, aop_swap); + gen_less (ax, value, value1, value2, int_type); + gen_logical_not (ax, value, int_type); + break; + + case BINOP_GEQ: + gen_less (ax, value, value1, value2, int_type); + gen_logical_not (ax, value, int_type); + break; + + default: + /* We should only list operators in the outer case statement + that we actually handle in the inner case statement. */ + internal_error (__FILE__, __LINE__, + _("gen_expr: op case sets don't match")); } } +/* Given a single variable and a scope, generate bytecodes to trace + its value. This is for use in situations where we have only a + variable's name, and no parsed expression; for instance, when the + name comes from a list of local variables of a function. */ + +struct agent_expr * +gen_trace_for_var (CORE_ADDR scope, struct gdbarch *gdbarch, + struct symbol *var) +{ + struct cleanup *old_chain = 0; + struct agent_expr *ax = new_agent_expr (gdbarch, scope); + struct axs_value value; + + old_chain = make_cleanup_free_agent_expr (ax); + + trace_kludge = 1; + gen_var_ref (gdbarch, ax, &value, var); + + /* If there is no actual variable to trace, flag it by returning + an empty agent expression. */ + if (value.optimized_out) + { + do_cleanups (old_chain); + return NULL; + } + + /* Make sure we record the final object, and get rid of it. */ + gen_traced_pop (gdbarch, ax, &value); + + /* Oh, and terminate. */ + ax_simple (ax, aop_end); + + /* We have successfully built the agent expr, so cancel the cleanup + request. If we add more cleanups that we always want done, this + will have to get more complicated. */ + discard_cleanups (old_chain); + return ax; +} /* Generating bytecode from GDB expressions: driver */ @@ -1780,7 +2375,7 @@ struct agent_expr * gen_trace_for_expr (CORE_ADDR scope, struct expression *expr) { struct cleanup *old_chain = 0; - struct agent_expr *ax = new_agent_expr (scope); + struct agent_expr *ax = new_agent_expr (expr->gdbarch, scope); union exp_element *pc; struct axs_value value; @@ -1788,10 +2383,11 @@ gen_trace_for_expr (CORE_ADDR scope, struct expression *expr) pc = expr->elts; trace_kludge = 1; + value.optimized_out = 0; gen_expr (expr, &pc, ax, &value); /* Make sure we record the final object, and get rid of it. */ - gen_traced_pop (ax, &value); + gen_traced_pop (expr->gdbarch, ax, &value); /* Oh, and terminate. */ ax_simple (ax, aop_end); @@ -1814,7 +2410,7 @@ struct agent_expr * gen_eval_for_expr (CORE_ADDR scope, struct expression *expr) { struct cleanup *old_chain = 0; - struct agent_expr *ax = new_agent_expr (scope); + struct agent_expr *ax = new_agent_expr (expr->gdbarch, scope); union exp_element *pc; struct axs_value value; @@ -1822,8 +2418,11 @@ gen_eval_for_expr (CORE_ADDR scope, struct expression *expr) pc = expr->elts; trace_kludge = 0; + value.optimized_out = 0; gen_expr (expr, &pc, ax, &value); + require_rvalue (ax, &value); + /* Oh, and terminate. */ ax_simple (ax, aop_end); @@ -1856,6 +2455,7 @@ agent_command (char *exp, int from_tty) old_chain = make_cleanup (free_current_contents, &expr); agent = gen_trace_for_expr (get_frame_pc (fi), expr); make_cleanup_free_agent_expr (agent); + ax_reqs (agent); ax_print (gdb_stdout, agent); /* It would be nice to call ax_reqs here to gather some general info @@ -1891,6 +2491,7 @@ agent_eval_command (char *exp, int from_tty) old_chain = make_cleanup (free_current_contents, &expr); agent = gen_eval_for_expr (get_frame_pc (fi), expr); make_cleanup_free_agent_expr (agent); + ax_reqs (agent); ax_print (gdb_stdout, agent); /* It would be nice to call ax_reqs here to gather some general info diff --git a/contrib/gdb-7/gdb/ax-gdb.h b/contrib/gdb-7/gdb/ax-gdb.h index 5d03c18496..924df0891a 100644 --- a/contrib/gdb-7/gdb/ax-gdb.h +++ b/contrib/gdb-7/gdb/ax-gdb.h @@ -1,5 +1,5 @@ /* GDB-specific functions for operating on agent expressions - Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -81,6 +81,10 @@ struct axs_value "pointer to" an object of this type. */ struct type *type; + /* If nonzero, this is a variable which does not actually exist in + the program. */ + char optimized_out; + union { /* if kind == axs_lvalue_register, this is the register number */ @@ -99,6 +103,11 @@ struct axs_value function to discover which registers the expression uses. */ extern struct agent_expr *gen_trace_for_expr (CORE_ADDR, struct expression *); +extern struct agent_expr *gen_trace_for_var (CORE_ADDR, struct gdbarch *, + struct symbol *); + extern struct agent_expr *gen_eval_for_expr (CORE_ADDR, struct expression *); +extern int trace_kludge; + #endif /* AX_GDB_H */ diff --git a/contrib/gdb-7/gdb/ax-general.c b/contrib/gdb-7/gdb/ax-general.c index 65b5ba151d..ab4591fa08 100644 --- a/contrib/gdb-7/gdb/ax-general.c +++ b/contrib/gdb-7/gdb/ax-general.c @@ -1,5 +1,5 @@ /* Functions for manipulating expressions designed to be executed on the agent - Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -40,15 +40,23 @@ static void generic_ext (struct agent_expr *x, enum agent_op op, int n); /* Allocate a new, empty agent expression. */ struct agent_expr * -new_agent_expr (CORE_ADDR scope) +new_agent_expr (struct gdbarch *gdbarch, CORE_ADDR scope) { struct agent_expr *x = xmalloc (sizeof (*x)); + x->len = 0; x->size = 1; /* Change this to a larger value once reallocation code is tested. */ x->buf = xmalloc (x->size); + + x->gdbarch = gdbarch; x->scope = scope; + /* Bit vector for registers used. */ + x->reg_mask_len = 1; + x->reg_mask = xmalloc (x->reg_mask_len * sizeof (x->reg_mask[0])); + memset (x->reg_mask, 0, x->reg_mask_len * sizeof (x->reg_mask[0])); + return x; } @@ -57,6 +65,7 @@ void free_agent_expr (struct agent_expr *x) { xfree (x->buf); + xfree (x->reg_mask); xfree (x); } @@ -231,7 +240,7 @@ ax_const_l (struct agent_expr *x, LONGEST l) use the shortest representation. */ for (op = 0, size = 8; size < 64; size *= 2, op++) { - LONGEST lim = 1 << (size - 1); + LONGEST lim = ((LONGEST) 1) << (size - 1); if (-lim <= l && l <= lim - 1) break; @@ -272,6 +281,22 @@ ax_reg (struct agent_expr *x, int reg) x->buf[x->len + 2] = (reg) & 0xff; x->len += 3; } + +/* Assemble code to operate on a trace state variable. */ + +void +ax_tsv (struct agent_expr *x, enum agent_op op, int num) +{ + /* Make sure the tsv number is in range. */ + if (num < 0 || num > 0xffff) + internal_error (__FILE__, __LINE__, _("ax-general.c (ax_tsv): variable number is %d, out of range"), num); + + grow_expr (x, 3); + x->buf[x->len] = op; + x->buf[x->len + 1] = (num >> 8) & 0xff; + x->buf[x->len + 2] = (num) & 0xff; + x->len += 3; +} @@ -324,9 +349,9 @@ struct aop_map aop_map[] = {"pop", 0, 0, 1, 0}, /* 0x29 */ {"zero_ext", 1, 0, 1, 1}, /* 0x2a */ {"swap", 0, 0, 2, 2}, /* 0x2b */ - {0, 0, 0, 0, 0}, /* 0x2c */ - {0, 0, 0, 0, 0}, /* 0x2d */ - {0, 0, 0, 0, 0}, /* 0x2e */ + {"getv", 2, 0, 0, 1}, /* 0x2c */ + {"setv", 2, 0, 0, 1}, /* 0x2d */ + {"tracev", 2, 0, 0, 1}, /* 0x2e */ {0, 0, 0, 0, 0}, /* 0x2f */ {"trace16", 2, 0, 1, 1}, /* 0x30 */ }; @@ -339,6 +364,12 @@ ax_print (struct ui_file *f, struct agent_expr *x) int i; int is_float = 0; + fprintf_filtered (f, _("Scope: %s\n"), paddress (x->gdbarch, x->scope)); + fprintf_filtered (f, _("Reg mask:")); + for (i = 0; i < x->reg_mask_len; ++i) + fprintf_filtered (f, _(" %02x"), x->reg_mask[i]); + fprintf_filtered (f, _("\n")); + /* Check the size of the name array against the number of entries in the enum, to catch additions that people didn't sync. */ if ((sizeof (aop_map) / sizeof (aop_map[0])) @@ -378,19 +409,37 @@ ax_print (struct ui_file *f, struct agent_expr *x) } } +/* Add register REG to the register mask for expression AX. */ +void +ax_reg_mask (struct agent_expr *ax, int reg) +{ + int byte = reg / 8; + + /* Grow the bit mask if necessary. */ + if (byte >= ax->reg_mask_len) + { + /* It's not appropriate to double here. This isn't a + string buffer. */ + int new_len = byte + 1; + unsigned char *new_reg_mask = xrealloc (ax->reg_mask, + new_len * sizeof (ax->reg_mask[0])); + memset (new_reg_mask + ax->reg_mask_len, 0, + (new_len - ax->reg_mask_len) * sizeof (ax->reg_mask[0])); + ax->reg_mask_len = new_len; + ax->reg_mask = new_reg_mask; + } + + ax->reg_mask[byte] |= 1 << (reg % 8); +} -/* Given an agent expression AX, fill in an agent_reqs structure REQS - describing it. */ +/* Given an agent expression AX, fill in requirements and other descriptive + bits. */ void -ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) +ax_reqs (struct agent_expr *ax) { int i; int height; - /* Bit vector for registers used. */ - int reg_mask_len = 1; - unsigned char *reg_mask = xmalloc (reg_mask_len * sizeof (reg_mask[0])); - /* Jump target table. targets[i] is non-zero iff we have found a jump to offset i. */ char *targets = (char *) alloca (ax->len * sizeof (targets[0])); @@ -407,20 +456,18 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) /* Pointer to a description of the present op. */ struct aop_map *op; - memset (reg_mask, 0, reg_mask_len * sizeof (reg_mask[0])); memset (targets, 0, ax->len * sizeof (targets[0])); memset (boundary, 0, ax->len * sizeof (boundary[0])); - reqs->max_height = reqs->min_height = height = 0; - reqs->flaw = agent_flaw_none; - reqs->max_data_size = 0; + ax->max_height = ax->min_height = height = 0; + ax->flaw = agent_flaw_none; + ax->max_data_size = 0; for (i = 0; i < ax->len; i += 1 + op->op_size) { if (ax->buf[i] > (sizeof (aop_map) / sizeof (aop_map[0]))) { - reqs->flaw = agent_flaw_bad_instruction; - xfree (reg_mask); + ax->flaw = agent_flaw_bad_instruction; return; } @@ -428,15 +475,13 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) if (!op->name) { - reqs->flaw = agent_flaw_bad_instruction; - xfree (reg_mask); + ax->flaw = agent_flaw_bad_instruction; return; } if (i + 1 + op->op_size > ax->len) { - reqs->flaw = agent_flaw_incomplete_instruction; - xfree (reg_mask); + ax->flaw = agent_flaw_incomplete_instruction; return; } @@ -445,8 +490,7 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) source? */ if (targets[i] && (heights[i] != height)) { - reqs->flaw = agent_flaw_height_mismatch; - xfree (reg_mask); + ax->flaw = agent_flaw_height_mismatch; return; } @@ -454,14 +498,14 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) heights[i] = height; height -= op->consumed; - if (height < reqs->min_height) - reqs->min_height = height; + if (height < ax->min_height) + ax->min_height = height; height += op->produced; - if (height > reqs->max_height) - reqs->max_height = height; + if (height > ax->max_height) + ax->max_height = height; - if (op->data_size > reqs->max_data_size) - reqs->max_data_size = op->data_size; + if (op->data_size > ax->max_data_size) + ax->max_data_size = op->data_size; /* For jump instructions, check that the target is a valid offset. If it is, record the fact that that location is a @@ -472,8 +516,7 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) int target = read_const (ax, i + 1, 2); if (target < 0 || target >= ax->len) { - reqs->flaw = agent_flaw_bad_jump; - xfree (reg_mask); + ax->flaw = agent_flaw_bad_jump; return; } @@ -483,8 +526,7 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) { if (heights[target] != height) { - reqs->flaw = agent_flaw_height_mismatch; - xfree (reg_mask); + ax->flaw = agent_flaw_height_mismatch; return; } } @@ -501,8 +543,7 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) { if (!targets[i + 3]) { - reqs->flaw = agent_flaw_hole; - xfree (reg_mask); + ax->flaw = agent_flaw_hole; return; } @@ -513,22 +554,8 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) if (aop_reg == op - aop_map) { int reg = read_const (ax, i + 1, 2); - int byte = reg / 8; - - /* Grow the bit mask if necessary. */ - if (byte >= reg_mask_len) - { - /* It's not appropriate to double here. This isn't a - string buffer. */ - int new_len = byte + 1; - reg_mask = xrealloc (reg_mask, - new_len * sizeof (reg_mask[0])); - memset (reg_mask + reg_mask_len, 0, - (new_len - reg_mask_len) * sizeof (reg_mask[0])); - reg_mask_len = new_len; - } - reg_mask[byte] |= 1 << (reg % 8); + ax_reg_mask (ax, reg); } } @@ -536,12 +563,9 @@ ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs) for (i = 0; i < ax->len; i++) if (targets[i] && !boundary[i]) { - reqs->flaw = agent_flaw_bad_jump; - xfree (reg_mask); + ax->flaw = agent_flaw_bad_jump; return; } - reqs->final_height = height; - reqs->reg_mask_len = reg_mask_len; - reqs->reg_mask = reg_mask; + ax->final_height = height; } diff --git a/contrib/gdb-7/gdb/ax.h b/contrib/gdb-7/gdb/ax.h index 7fea3ce4c3..6ff18aaf4a 100644 --- a/contrib/gdb-7/gdb/ax.h +++ b/contrib/gdb-7/gdb/ax.h @@ -1,5 +1,5 @@ /* Definitions for expressions designed to be executed on the agent - Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -51,6 +51,33 @@ to the host GDB. */ +/* Different kinds of flaws an agent expression might have, as + detected by ax_reqs. */ +enum agent_flaws + { + agent_flaw_none = 0, /* code is good */ + + /* There is an invalid instruction in the stream. */ + agent_flaw_bad_instruction, + + /* There is an incomplete instruction at the end of the expression. */ + agent_flaw_incomplete_instruction, + + /* ax_reqs was unable to prove that every jump target is to a + valid offset. Valid offsets are within the bounds of the + expression, and to a valid instruction boundary. */ + agent_flaw_bad_jump, + + /* ax_reqs was unable to prove to its satisfaction that, for each + jump target location, the stack will have the same height whether + that location is reached via a jump or by straight execution. */ + agent_flaw_height_mismatch, + + /* ax_reqs was unable to prove that every instruction following + an unconditional jump was the target of some other jump. */ + agent_flaw_hole + }; + /* Agent expression data structures. */ /* The type of an element of the agent expression stack. @@ -67,14 +94,56 @@ union agent_val /* A buffer containing a agent expression. */ struct agent_expr { + /* The bytes of the expression. */ unsigned char *buf; - int len; /* number of characters used */ - int size; /* allocated size */ + + /* The number of bytecode in the expression. */ + int len; + + /* Allocated space available currently. */ + int size; + + /* The target architecture assumed to be in effect. */ + struct gdbarch *gdbarch; + + /* The address to which the expression applies. */ CORE_ADDR scope; - }; + /* If the following is not equal to agent_flaw_none, the rest of the + information in this structure is suspect. */ + enum agent_flaws flaw; + + /* Number of elements left on stack at end; may be negative if expr + only consumes elements. */ + int final_height; + + /* Maximum and minimum stack height, relative to initial height. */ + int max_height, min_height; + + /* Largest `ref' or `const' opcode used, in bits. Zero means the + expression has no such instructions. */ + int max_data_size; + + /* Bit vector of registers needed. Register R is needed iff + reg_mask[R / 8] & (1 << (R % 8)) + is non-zero. Note! You may not assume that this bitmask is long + enough to hold bits for all the registers of the machine; the + agent expression code has no idea how many registers the machine + has. However, the bitmask is reg_mask_len bytes long, so the + valid register numbers run from 0 to reg_mask_len * 8 - 1. + + Also note that this mask may contain registers that are needed + for the original collection expression to work, but that are + not referenced by any bytecode. This could, for example, occur + when collecting a local variable allocated to a register; the + compiler sets the mask bit and skips generating a bytecode whose + result is going to be discarded anyway. + */ + int reg_mask_len; + unsigned char *reg_mask; + }; /* The actual values of the various bytecode operations. @@ -131,6 +200,9 @@ enum agent_op aop_pop = 0x29, aop_zero_ext = 0x2a, aop_swap = 0x2b, + aop_getv = 0x2c, + aop_setv = 0x2d, + aop_tracev = 0x2e, aop_trace16 = 0x30, aop_last }; @@ -140,7 +212,7 @@ enum agent_op /* Functions for building expressions. */ /* Allocate a new, empty agent expression. */ -extern struct agent_expr *new_agent_expr (CORE_ADDR); +extern struct agent_expr *new_agent_expr (struct gdbarch *, CORE_ADDR); /* Free a agent expression. */ extern void free_agent_expr (struct agent_expr *); @@ -182,6 +254,12 @@ extern void ax_const_d (struct agent_expr *EXPR, LONGEST d); /* Assemble code to push the value of register number REG on the stack. */ extern void ax_reg (struct agent_expr *EXPR, int REG); + +/* Add the given register to the register mask of the expression. */ +extern void ax_reg_mask (struct agent_expr *ax, int reg); + +/* Assemble code to operate on a trace state variable. */ +extern void ax_tsv (struct agent_expr *expr, enum agent_op op, int num); /* Functions for printing out expressions, and otherwise debugging @@ -220,72 +298,8 @@ struct aop_map /* Map of the bytecodes, indexed by bytecode number. */ extern struct aop_map aop_map[]; -/* Different kinds of flaws an agent expression might have, as - detected by agent_reqs. */ -enum agent_flaws - { - agent_flaw_none = 0, /* code is good */ - - /* There is an invalid instruction in the stream. */ - agent_flaw_bad_instruction, - - /* There is an incomplete instruction at the end of the expression. */ - agent_flaw_incomplete_instruction, - - /* agent_reqs was unable to prove that every jump target is to a - valid offset. Valid offsets are within the bounds of the - expression, and to a valid instruction boundary. */ - agent_flaw_bad_jump, - - /* agent_reqs was unable to prove to its satisfaction that, for each - jump target location, the stack will have the same height whether - that location is reached via a jump or by straight execution. */ - agent_flaw_height_mismatch, - - /* agent_reqs was unable to prove that every instruction following - an unconditional jump was the target of some other jump. */ - agent_flaw_hole - }; - -/* Structure describing the requirements of a bytecode expression. */ -struct agent_reqs - { - - /* If the following is not equal to agent_flaw_none, the rest of the - information in this structure is suspect. */ - enum agent_flaws flaw; - - /* Number of elements left on stack at end; may be negative if expr - only consumes elements. */ - int final_height; - - /* Maximum and minimum stack height, relative to initial height. */ - int max_height, min_height; - - /* Largest `ref' or `const' opcode used, in bits. Zero means the - expression has no such instructions. */ - int max_data_size; - - /* Bit vector of registers used. Register R is used iff - - reg_mask[R / 8] & (1 << (R % 8)) - - is non-zero. Note! You may not assume that this bitmask is long - enough to hold bits for all the registers of the machine; the - agent expression code has no idea how many registers the machine - has. However, the bitmask is reg_mask_len bytes long, so the - valid register numbers run from 0 to reg_mask_len * 8 - 1. - - We're assuming eight-bit bytes. So sue me. - - The caller should free reg_list when done. */ - int reg_mask_len; - unsigned char *reg_mask; - }; - +/* Given an agent expression AX, analyze and update its requirements. */ -/* Given an agent expression AX, fill in an agent_reqs structure REQS - describing it. */ -extern void ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs); +extern void ax_reqs (struct agent_expr *ax); #endif /* AGENTEXPR_H */ diff --git a/contrib/gdb-7/gdb/bcache.c b/contrib/gdb-7/gdb/bcache.c index d56df07e4c..7d9180cbec 100644 --- a/contrib/gdb-7/gdb/bcache.c +++ b/contrib/gdb-7/gdb/bcache.c @@ -2,7 +2,7 @@ Written by Fred Fish Rewritten by Jim Blandy - Copyright (C) 1999, 2000, 2002, 2003, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -98,17 +98,17 @@ struct bcache unsigned long hash(const void *addr, int length) { - const unsigned char *k, *e; - unsigned long h; - - k = (const unsigned char *)addr; - e = k+length; - for (h=0; k< e;++k) - { - h *=16777619; - h ^= *k; - } - return (h); + const unsigned char *k, *e; + unsigned long h; + + k = (const unsigned char *)addr; + e = k+length; + for (h=0; k< e;++k) + { + h *=16777619; + h ^= *k; + } + return (h); } /* Growing the bcache's hash table. */ @@ -152,6 +152,7 @@ expand_hash_table (struct bcache *bcache) /* Allocate the new table. */ { size_t new_size = new_num_buckets * sizeof (new_buckets[0]); + new_buckets = (struct bstring **) xmalloc (new_size); memset (new_buckets, 0, new_size); @@ -257,6 +258,7 @@ bcache_full (const void *addr, int length, struct bcache *bcache, int *added) { struct bstring *new = obstack_alloc (&bcache->cache, BSTRING_SIZE (length)); + memcpy (&new->d.data, addr, length); new->length = length; new->next = bcache->bucket[hash_index]; @@ -281,6 +283,7 @@ bcache_xmalloc (void) { /* Allocate the bcache pre-zeroed. */ struct bcache *b = XCALLOC (1, struct bcache); + return b; } @@ -301,15 +304,6 @@ bcache_xfree (struct bcache *bcache) /* Printing statistics. */ -static int -compare_ints (const void *ap, const void *bp) -{ - /* Because we know we're comparing two ints which are positive, - there's no danger of overflow here. */ - return * (int *) ap - * (int *) bp; -} - - static void print_percentage (int portion, int total) { @@ -367,9 +361,9 @@ print_bcache_statistics (struct bcache *c, char *type) /* To compute the median, we need the set of chain lengths sorted. */ qsort (chain_length, c->num_buckets, sizeof (chain_length[0]), - compare_ints); + compare_positive_ints); qsort (entry_size, c->unique_count, sizeof (entry_size[0]), - compare_ints); + compare_positive_ints); if (c->num_buckets > 0) { diff --git a/contrib/gdb-7/gdb/bcache.h b/contrib/gdb-7/gdb/bcache.h index a0ddc046a4..da69a2da42 100644 --- a/contrib/gdb-7/gdb/bcache.h +++ b/contrib/gdb-7/gdb/bcache.h @@ -2,7 +2,7 @@ Written by Fred Fish Rewritten by Jim Blandy - Copyright (C) 1999, 2000, 2002, 2003, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/bfd-target.c b/contrib/gdb-7/gdb/bfd-target.c index 0e553d2589..476035094b 100644 --- a/contrib/gdb-7/gdb/bfd-target.c +++ b/contrib/gdb-7/gdb/bfd-target.c @@ -1,6 +1,7 @@ /* Very simple "bfd" target, for GDB, the GNU debugger. - Copyright (C) 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/bfd-target.h b/contrib/gdb-7/gdb/bfd-target.h index 03931d72a3..d7e0f19db0 100644 --- a/contrib/gdb-7/gdb/bfd-target.h +++ b/contrib/gdb-7/gdb/bfd-target.h @@ -1,6 +1,6 @@ /* Very simple "bfd" target, for GDB, the GNU debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/block.c b/contrib/gdb-7/gdb/block.c index 97ea67adb4..48ac21bd62 100644 --- a/contrib/gdb-7/gdb/block.c +++ b/contrib/gdb-7/gdb/block.c @@ -1,6 +1,6 @@ /* Block-related functions for the GNU debugger, GDB. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/block.h b/contrib/gdb-7/gdb/block.h index 53e7371199..7eedb6c8fe 100644 --- a/contrib/gdb-7/gdb/block.h +++ b/contrib/gdb-7/gdb/block.h @@ -1,6 +1,6 @@ /* Code dealing with blocks for GDB. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/blockframe.c b/contrib/gdb-7/gdb/blockframe.c index 09608371f8..0348bf4247 100644 --- a/contrib/gdb-7/gdb/blockframe.c +++ b/contrib/gdb-7/gdb/blockframe.c @@ -2,8 +2,8 @@ functions and pc values. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -37,10 +37,7 @@ #include "gdbcmd.h" #include "block.h" #include "inline-frame.h" - -/* Prototypes for exported functions. */ - -void _initialize_blockframe (void); +#include "psymtab.h" /* Return the innermost lexical block in execution in a specified stack frame. The frame address is assumed valid. @@ -62,7 +59,6 @@ struct block * get_frame_block (struct frame_info *frame, CORE_ADDR *addr_in_block) { const CORE_ADDR pc = get_frame_address_in_block (frame); - struct frame_info *next_frame; struct block *bl; int inline_count; @@ -141,6 +137,7 @@ struct symbol * find_pc_sect_function (CORE_ADDR pc, struct obj_section *section) { struct block *b = block_for_pc_sect (pc, section); + if (b == 0) return 0; return block_linkage_function (b); @@ -192,10 +189,10 @@ find_pc_partial_function (CORE_ADDR pc, char **name, CORE_ADDR *address, CORE_ADDR *endaddr) { struct obj_section *section; - struct partial_symtab *pst; struct symbol *f; struct minimal_symbol *msymbol; - struct partial_symbol *psb; + struct symtab *symtab = NULL; + struct objfile *objfile; int i; CORE_ADDR mapped_pc; @@ -216,55 +213,30 @@ find_pc_partial_function (CORE_ADDR pc, char **name, CORE_ADDR *address, goto return_cached_value; msymbol = lookup_minimal_symbol_by_pc_section (mapped_pc, section); - pst = find_pc_sect_psymtab (mapped_pc, section); - if (pst) + ALL_OBJFILES (objfile) + { + if (objfile->sf) + symtab = objfile->sf->qf->find_pc_sect_symtab (objfile, msymbol, + mapped_pc, section, 0); + if (symtab) + break; + } + + if (symtab) { - /* Need to read the symbols to get a good value for the end address. */ - if (endaddr != NULL && !pst->readin) - { - /* Need to get the terminal in case symbol-reading produces - output. */ - target_terminal_ours_for_output (); - PSYMTAB_TO_SYMTAB (pst); - } - - if (pst->readin) - { - /* Checking whether the msymbol has a larger value is for the - "pathological" case mentioned in print_frame_info. */ - f = find_pc_sect_function (mapped_pc, section); - if (f != NULL - && (msymbol == NULL - || (BLOCK_START (SYMBOL_BLOCK_VALUE (f)) - >= SYMBOL_VALUE_ADDRESS (msymbol)))) - { - cache_pc_function_low = BLOCK_START (SYMBOL_BLOCK_VALUE (f)); - cache_pc_function_high = BLOCK_END (SYMBOL_BLOCK_VALUE (f)); - cache_pc_function_name = SYMBOL_LINKAGE_NAME (f); - cache_pc_function_section = section; - goto return_cached_value; - } - } - else + /* Checking whether the msymbol has a larger value is for the + "pathological" case mentioned in print_frame_info. */ + f = find_pc_sect_function (mapped_pc, section); + if (f != NULL + && (msymbol == NULL + || (BLOCK_START (SYMBOL_BLOCK_VALUE (f)) + >= SYMBOL_VALUE_ADDRESS (msymbol)))) { - /* Now that static symbols go in the minimal symbol table, perhaps - we could just ignore the partial symbols. But at least for now - we use the partial or minimal symbol, whichever is larger. */ - psb = find_pc_sect_psymbol (pst, mapped_pc, section); - - if (psb - && (msymbol == NULL || - (SYMBOL_VALUE_ADDRESS (psb) - >= SYMBOL_VALUE_ADDRESS (msymbol)))) - { - /* This case isn't being cached currently. */ - if (address) - *address = SYMBOL_VALUE_ADDRESS (psb); - if (name) - *name = SYMBOL_LINKAGE_NAME (psb); - /* endaddr non-NULL can't happen here. */ - return 1; - } + cache_pc_function_low = BLOCK_START (SYMBOL_BLOCK_VALUE (f)); + cache_pc_function_high = BLOCK_END (SYMBOL_BLOCK_VALUE (f)); + cache_pc_function_name = SYMBOL_LINKAGE_NAME (f); + cache_pc_function_section = section; + goto return_cached_value; } } diff --git a/contrib/gdb-7/gdb/breakpoint.c b/contrib/gdb-7/gdb/breakpoint.c index 811cdfb4fe..6a6864cf33 100644 --- a/contrib/gdb-7/gdb/breakpoint.c +++ b/contrib/gdb-7/gdb/breakpoint.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -61,6 +61,7 @@ #include "valprint.h" #include "jit.h" #include "xml-syscall.h" +#include "parser-defs.h" /* readline include files */ #include "readline/readline.h" @@ -79,17 +80,15 @@ static void enable_delete_command (char *, int); -static void enable_delete_breakpoint (struct breakpoint *); - static void enable_once_command (char *, int); -static void enable_once_breakpoint (struct breakpoint *); - static void disable_command (char *, int); static void enable_command (char *, int); -static void map_breakpoint_numbers (char *, void (*)(struct breakpoint *)); +static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *, + void *), + void *); static void ignore_command (char *, int); @@ -112,20 +111,29 @@ struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line, enum bptype); -static void check_duplicates (struct breakpoint *); - static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int); static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch, CORE_ADDR bpaddr, enum bptype bptype); -static void describe_other_breakpoints (struct gdbarch *, CORE_ADDR, +static void describe_other_breakpoints (struct gdbarch *, + struct program_space *, CORE_ADDR, struct obj_section *, int); +static int breakpoint_address_match (struct address_space *aspace1, + CORE_ADDR addr1, + struct address_space *aspace2, + CORE_ADDR addr2); + +static int watchpoint_locations_match (struct bp_location *loc1, + struct bp_location *loc2); + static void breakpoints_info (char *, int); -static void breakpoint_1 (int, int); +static void watchpoints_info (char *, int); + +static int breakpoint_1 (int, int, int (*) (const struct breakpoint *)); static bpstat bpstat_alloc (const struct bp_location *, bpstat); @@ -139,8 +147,6 @@ static void condition_command (char *, int); static int get_number_trailer (char **, int); -void set_breakpoint_count (int); - typedef enum { mark_inserted, @@ -149,6 +155,7 @@ typedef enum insertion_state_t; static int remove_breakpoint (struct bp_location *, insertion_state_t); +static int remove_breakpoint_1 (struct bp_location *, insertion_state_t); static enum print_stop_action print_it_typical (bpstat); @@ -182,8 +189,6 @@ static void stopat_command (char *arg, int from_tty); static char *ep_parse_optional_if_clause (char **arg); -static char *ep_parse_optional_filename (char **arg); - static void catch_exception_command_1 (enum exception_event_kind ex_event, char *arg, int tempflag, int from_tty); @@ -191,7 +196,10 @@ static void tcatch_command (char *arg, int from_tty); static void ep_skip_leading_whitespace (char **s); -static int single_step_breakpoint_inserted_here_p (CORE_ADDR pc); +static void detach_single_step_breakpoints (void); + +static int single_step_breakpoint_inserted_here_p (struct address_space *, + CORE_ADDR pc); static void free_bp_location (struct bp_location *loc); @@ -201,7 +209,12 @@ static void update_global_location_list (int); static void update_global_location_list_nothrow (int); -static int is_hardware_watchpoint (struct breakpoint *bpt); +static int bpstat_remove_bp_location_callback (struct thread_info *th, + void *data); + +static int is_hardware_watchpoint (const struct breakpoint *bpt); + +static int is_watchpoint (const struct breakpoint *bpt); static void insert_breakpoint_locations (void); @@ -217,8 +230,27 @@ static void disable_trace_command (char *, int); static void trace_pass_command (char *, int); -static void skip_prologue_sal (struct symtab_and_line *sal); +/* Assuming we're creating a static tracepoint, does S look like a + static tracepoint marker spec ("-m MARKER_ID")? */ +#define is_marker_spec(s) \ + (strncmp (s, "-m", 2) == 0 && ((s)[2] == ' ' || (s)[2] == '\t')) + +/* A reference-counted struct command_line. This lets multiple + breakpoints share a single command list. */ +struct counted_command_line +{ + /* The reference count. */ + int refc; + + /* The command list. */ + struct command_line *commands; +}; +struct command_line * +breakpoint_commands (struct breakpoint *b) +{ + return b->commands ? b->commands->commands : NULL; +} /* Flag indicating that a command has proceeded the inferior past the current breakpoint. */ @@ -231,6 +263,7 @@ bpdisp_text (enum bpdisp disp) /* NOTE: the following values are a part of MI protocol and represent values of 'disp' field returned when inferior stops at a breakpoint. */ static char *bpdisps[] = {"del", "dstp", "dis", "keep"}; + return bpdisps[(int) disp]; } @@ -323,9 +356,6 @@ static int executing_breakpoint_commands; /* Are overlay event breakpoints enabled? */ static int overlay_events_enabled; -/* Are we executing startup code? */ -static int executing_startup; - /* Walk the following statement or block through all breakpoints. ALL_BREAKPOINTS_SAFE does so even if the statment deletes the current breakpoint. */ @@ -337,39 +367,70 @@ static int executing_startup; B ? (TMP=B->next, 1): 0; \ B = TMP) -/* Similar iterators for the low-level breakpoints. */ - -#define ALL_BP_LOCATIONS(B) for (B = bp_location_chain; B; B = B->global_next) +/* Similar iterator for the low-level breakpoints. SAFE variant is not + provided so update_global_location_list must not be called while executing + the block of ALL_BP_LOCATIONS. */ -#define ALL_BP_LOCATIONS_SAFE(B,TMP) \ - for (B = bp_location_chain; \ - B ? (TMP=B->global_next, 1): 0; \ - B = TMP) +#define ALL_BP_LOCATIONS(B,BP_TMP) \ + for (BP_TMP = bp_location; \ + BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \ + BP_TMP++) /* Iterator for tracepoints only. */ #define ALL_TRACEPOINTS(B) \ for (B = breakpoint_chain; B; B = B->next) \ - if ((B)->type == bp_tracepoint) + if (is_tracepoint (B)) /* Chains of all breakpoints defined. */ struct breakpoint *breakpoint_chain; -struct bp_location *bp_location_chain; +/* Array is sorted by bp_location_compare - primarily by the ADDRESS. */ + +static struct bp_location **bp_location; + +/* Number of elements of BP_LOCATION. */ + +static unsigned bp_location_count; + +/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and ADDRESS + for the current elements of BP_LOCATION which get a valid result from + bp_location_has_shadow. You can use it for roughly limiting the subrange of + BP_LOCATION to scan for shadow bytes for an address you need to read. */ + +static CORE_ADDR bp_location_placed_address_before_address_max; + +/* Maximum offset plus alignment between + bp_target_info.PLACED_ADDRESS + bp_target_info.SHADOW_LEN and ADDRESS for + the current elements of BP_LOCATION which get a valid result from + bp_location_has_shadow. You can use it for roughly limiting the subrange of + BP_LOCATION to scan for shadow bytes for an address you need to read. */ + +static CORE_ADDR bp_location_shadow_len_after_address_max; /* The locations that no longer correspond to any breakpoint, - unlinked from bp_location_chain, but for which a hit + unlinked from bp_location array, but for which a hit may still be reported by a target. */ VEC(bp_location_p) *moribund_locations = NULL; /* Number of last breakpoint made. */ -int breakpoint_count; +static int breakpoint_count; + +/* The value of `breakpoint_count' before the last command that + created breakpoints. If the last (break-like) command created more + than one breakpoint, then the difference between BREAKPOINT_COUNT + and PREV_BREAKPOINT_COUNT is more than one. */ +static int prev_breakpoint_count; /* Number of last tracepoint made. */ -int tracepoint_count; +static int tracepoint_count; + +static struct cmd_list_element *breakpoint_set_cmdlist; +static struct cmd_list_element *breakpoint_show_cmdlist; +static struct cmd_list_element *save_cmdlist; /* Return whether a breakpoint is an active enabled breakpoint. */ static int @@ -380,13 +441,36 @@ breakpoint_enabled (struct breakpoint *b) /* Set breakpoint count to NUM. */ -void +static void set_breakpoint_count (int num) { + prev_breakpoint_count = breakpoint_count; breakpoint_count = num; set_internalvar_integer (lookup_internalvar ("bpnum"), num); } +/* Used by `start_rbreak_breakpoints' below, to record the current + breakpoint count before "rbreak" creates any breakpoint. */ +static int rbreak_start_breakpoint_count; + +/* Called at the start an "rbreak" command to record the first + breakpoint made. */ + +void +start_rbreak_breakpoints (void) +{ + rbreak_start_breakpoint_count = breakpoint_count; +} + +/* Called at the end of an "rbreak" command to record the last + breakpoint made. */ + +void +end_rbreak_breakpoints (void) +{ + prev_breakpoint_count = rbreak_start_breakpoint_count; +} + /* Used in run_command to zero the hit count when a new run starts. */ void @@ -398,6 +482,64 @@ clear_breakpoint_hit_counts (void) b->hit_count = 0; } +/* Allocate a new counted_command_line with reference count of 1. + The new structure owns COMMANDS. */ + +static struct counted_command_line * +alloc_counted_command_line (struct command_line *commands) +{ + struct counted_command_line *result + = xmalloc (sizeof (struct counted_command_line)); + + result->refc = 1; + result->commands = commands; + return result; +} + +/* Increment reference count. This does nothing if CMD is NULL. */ + +static void +incref_counted_command_line (struct counted_command_line *cmd) +{ + if (cmd) + ++cmd->refc; +} + +/* Decrement reference count. If the reference count reaches 0, + destroy the counted_command_line. Sets *CMDP to NULL. This does + nothing if *CMDP is NULL. */ + +static void +decref_counted_command_line (struct counted_command_line **cmdp) +{ + if (*cmdp) + { + if (--(*cmdp)->refc == 0) + { + free_command_lines (&(*cmdp)->commands); + xfree (*cmdp); + } + *cmdp = NULL; + } +} + +/* A cleanup function that calls decref_counted_command_line. */ + +static void +do_cleanup_counted_command_line (void *arg) +{ + decref_counted_command_line (arg); +} + +/* Create a cleanup that calls decref_counted_command_line on the + argument. */ + +static struct cleanup * +make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp) +{ + return make_cleanup (do_cleanup_counted_command_line, cmdp); +} + /* Default address, symtab and line to put a breakpoint at for "break" command with no arg. if default_breakpoint_valid is zero, the other three are @@ -409,6 +551,8 @@ int default_breakpoint_valid; CORE_ADDR default_breakpoint_address; struct symtab *default_breakpoint_symtab; int default_breakpoint_line; +struct program_space *default_breakpoint_pspace; + /* *PP is a string denoting a breakpoint. Get the number of the breakpoint. Advance *PP after the string and any trailing whitespace. @@ -582,6 +726,62 @@ get_breakpoint (int num) } + +void +set_breakpoint_condition (struct breakpoint *b, char *exp, + int from_tty) +{ + struct bp_location *loc = b->loc; + + for (; loc; loc = loc->next) + { + xfree (loc->cond); + loc->cond = NULL; + } + xfree (b->cond_string); + b->cond_string = NULL; + xfree (b->cond_exp); + b->cond_exp = NULL; + + if (*exp == 0) + { + if (from_tty) + printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number); + } + else + { + char *arg = exp; + + /* I don't know if it matters whether this is the string the user + typed in or the decompiled expression. */ + b->cond_string = xstrdup (arg); + b->condition_not_parsed = 0; + + if (is_watchpoint (b)) + { + innermost_block = NULL; + arg = exp; + b->cond_exp = parse_exp_1 (&arg, 0, 0); + if (*arg) + error (_("Junk at end of expression")); + b->cond_exp_valid_block = innermost_block; + } + else + { + for (loc = b->loc; loc; loc = loc->next) + { + arg = exp; + loc->cond = + parse_exp_1 (&arg, block_for_pc (loc->address), 0); + if (*arg) + error (_("Junk at end of expression")); + } + } + } + breakpoints_changed (); + observer_notify_breakpoint_modified (b->number); +} + /* condition N EXP -- set break condition of breakpoint N to EXP. */ static void @@ -602,92 +802,267 @@ condition_command (char *arg, int from_tty) ALL_BREAKPOINTS (b) if (b->number == bnum) { - struct bp_location *loc = b->loc; - for (; loc; loc = loc->next) - { - if (loc->cond) - { - xfree (loc->cond); - loc->cond = 0; - } - } - if (b->cond_string != NULL) - xfree (b->cond_string); - - if (*p == 0) - { - b->cond_string = NULL; - if (from_tty) - printf_filtered (_("Breakpoint %d now unconditional.\n"), bnum); - } - else - { - arg = p; - /* I don't know if it matters whether this is the string the user - typed in or the decompiled expression. */ - b->cond_string = xstrdup (arg); - b->condition_not_parsed = 0; - for (loc = b->loc; loc; loc = loc->next) - { - arg = p; - loc->cond = - parse_exp_1 (&arg, block_for_pc (loc->address), 0); - if (*arg) - error (_("Junk at end of expression")); - } - } - breakpoints_changed (); - observer_notify_breakpoint_modified (b->number); + set_breakpoint_condition (b, p, from_tty); return; } error (_("No breakpoint number %d."), bnum); } -/* Set the command list of B to COMMANDS. */ +/* Check that COMMAND do not contain commands that are suitable + only for tracepoints and not suitable for ordinary breakpoints. + Throw if any such commands is found. +*/ +static void +check_no_tracepoint_commands (struct command_line *commands) +{ + struct command_line *c; + + for (c = commands; c; c = c->next) + { + int i; + + if (c->control_type == while_stepping_control) + error (_("The 'while-stepping' command can only be used for tracepoints")); + + for (i = 0; i < c->body_count; ++i) + check_no_tracepoint_commands ((c->body_list)[i]); + + /* Not that command parsing removes leading whitespace and comment + lines and also empty lines. So, we only need to check for + command directly. */ + if (strstr (c->line, "collect ") == c->line) + error (_("The 'collect' command can only be used for tracepoints")); + + if (strstr (c->line, "teval ") == c->line) + error (_("The 'teval' command can only be used for tracepoints")); + } +} + +/* Encapsulate tests for different types of tracepoints. */ + +int +is_tracepoint (const struct breakpoint *b) +{ + return (b->type == bp_tracepoint + || b->type == bp_fast_tracepoint + || b->type == bp_static_tracepoint); +} + +/* A helper function that validsates that COMMANDS are valid for a + breakpoint. This function will throw an exception if a problem is + found. */ + +static void +validate_commands_for_breakpoint (struct breakpoint *b, + struct command_line *commands) +{ + if (is_tracepoint (b)) + { + /* We need to verify that each top-level element of commands + is valid for tracepoints, that there's at most one while-stepping + element, and that while-stepping's body has valid tracing commands + excluding nested while-stepping. */ + struct command_line *c; + struct command_line *while_stepping = 0; + for (c = commands; c; c = c->next) + { + if (c->control_type == while_stepping_control) + { + if (b->type == bp_fast_tracepoint) + error (_("\ +The 'while-stepping' command cannot be used for fast tracepoint")); + else if (b->type == bp_static_tracepoint) + error (_("\ +The 'while-stepping' command cannot be used for static tracepoint")); + + if (while_stepping) + error (_("The 'while-stepping' command can be used only once")); + else + while_stepping = c; + } + } + if (while_stepping) + { + struct command_line *c2; + + gdb_assert (while_stepping->body_count == 1); + c2 = while_stepping->body_list[0]; + for (; c2; c2 = c2->next) + { + if (c2->control_type == while_stepping_control) + error (_("The 'while-stepping' command cannot be nested")); + } + } + } + else + { + check_no_tracepoint_commands (commands); + } +} + +/* Return a vector of all the static tracepoints set at ADDR. The + caller is responsible for releasing the vector. */ + +VEC(breakpoint_p) * +static_tracepoints_here (CORE_ADDR addr) +{ + struct breakpoint *b; + VEC(breakpoint_p) *found = 0; + struct bp_location *loc; + + ALL_BREAKPOINTS (b) + if (b->type == bp_static_tracepoint) + { + for (loc = b->loc; loc; loc = loc->next) + if (loc->address == addr) + VEC_safe_push(breakpoint_p, found, b); + } + + return found; +} + +/* Set the command list of B to COMMANDS. If breakpoint is tracepoint, + validate that only allowed commands are included. +*/ void breakpoint_set_commands (struct breakpoint *b, struct command_line *commands) { - free_command_lines (&b->commands); - b->commands = commands; + validate_commands_for_breakpoint (b, commands); + + decref_counted_command_line (&b->commands); + b->commands = alloc_counted_command_line (commands); breakpoints_changed (); observer_notify_breakpoint_modified (b->number); } +void +check_tracepoint_command (char *line, void *closure) +{ + struct breakpoint *b = closure; + + validate_actionline (&line, b); +} + +/* A structure used to pass information through + map_breakpoint_numbers. */ + +struct commands_info +{ + /* True if the command was typed at a tty. */ + int from_tty; + + /* The breakpoint range spec. */ + char *arg; + + /* Non-NULL if the body of the commands are being read from this + already-parsed command. */ + struct command_line *control; + + /* The command lines read from the user, or NULL if they have not + yet been read. */ + struct counted_command_line *cmd; +}; + +/* A callback for map_breakpoint_numbers that sets the commands for + commands_command. */ + static void -commands_command (char *arg, int from_tty) +do_map_commands_command (struct breakpoint *b, void *data) { - struct breakpoint *b; - char *p; - int bnum; - struct command_line *l; + struct commands_info *info = data; - /* If we allowed this, we would have problems with when to - free the storage, if we change the commands currently - being read from. */ + if (info->cmd == NULL) + { + struct command_line *l; - if (executing_breakpoint_commands) - error (_("Can't use the \"commands\" command among a breakpoint's commands.")); + if (info->control != NULL) + l = copy_command_lines (info->control->body_list[0]); + else + { + struct cleanup *old_chain; + char *str; - p = arg; - bnum = get_number (&p); + str = xstrprintf (_("Type commands for breakpoint(s) %s, one per line."), + info->arg); - if (p && *p) - error (_("Unexpected extra arguments following breakpoint number.")); + old_chain = make_cleanup (xfree, str); - ALL_BREAKPOINTS (b) - if (b->number == bnum) - { - char *tmpbuf = xstrprintf ("Type commands for when breakpoint %d is hit, one per line.", - bnum); - struct cleanup *cleanups = make_cleanup (xfree, tmpbuf); - l = read_command_lines (tmpbuf, from_tty, 1); - do_cleanups (cleanups); - breakpoint_set_commands (b, l); - return; + l = read_command_lines (str, + info->from_tty, 1, + (is_tracepoint (b) + ? check_tracepoint_command : 0), + b); + + do_cleanups (old_chain); + } + + info->cmd = alloc_counted_command_line (l); } - error (_("No breakpoint number %d."), bnum); + + /* If a breakpoint was on the list more than once, we don't need to + do anything. */ + if (b->commands != info->cmd) + { + validate_commands_for_breakpoint (b, info->cmd->commands); + incref_counted_command_line (info->cmd); + decref_counted_command_line (&b->commands); + b->commands = info->cmd; + breakpoints_changed (); + observer_notify_breakpoint_modified (b->number); + } +} + +static void +commands_command_1 (char *arg, int from_tty, struct command_line *control) +{ + struct cleanup *cleanups; + struct commands_info info; + + info.from_tty = from_tty; + info.control = control; + info.cmd = NULL; + /* If we read command lines from the user, then `info' will hold an + extra reference to the commands that we must clean up. */ + cleanups = make_cleanup_decref_counted_command_line (&info.cmd); + + if (arg == NULL || !*arg) + { + if (breakpoint_count - prev_breakpoint_count > 1) + arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, breakpoint_count); + else if (breakpoint_count > 0) + arg = xstrprintf ("%d", breakpoint_count); + else + { + /* So that we don't try to free the incoming non-NULL + argument in the cleanup below. Mapping breakpoint + numbers will fail in this case. */ + arg = NULL; + } + } + else + /* The command loop has some static state, so we need to preserve + our argument. */ + arg = xstrdup (arg); + + if (arg != NULL) + make_cleanup (xfree, arg); + + info.arg = arg; + + map_breakpoint_numbers (arg, do_map_commands_command, &info); + + if (info.cmd == NULL) + error (_("No breakpoints specified.")); + + do_cleanups (cleanups); +} + +static void +commands_command (char *arg, int from_tty) +{ + commands_command_1 (arg, from_tty, NULL); } /* Like commands_command, but instead of reading the commands from @@ -698,72 +1073,103 @@ commands_command (char *arg, int from_tty) enum command_control_type commands_from_control_command (char *arg, struct command_line *cmd) { - struct breakpoint *b; - char *p; - int bnum; - - /* If we allowed this, we would have problems with when to - free the storage, if we change the commands currently - being read from. */ - - if (executing_breakpoint_commands) - error (_("Can't use the \"commands\" command among a breakpoint's commands.")); - - /* An empty string for the breakpoint number means the last - breakpoint, but get_number expects a NULL pointer. */ - if (arg && !*arg) - p = NULL; - else - p = arg; - bnum = get_number (&p); + commands_command_1 (arg, 0, cmd); + return simple_control; +} - if (p && *p) - error (_("Unexpected extra arguments following breakpoint number.")); +/* Return non-zero if BL->TARGET_INFO contains valid information. */ - ALL_BREAKPOINTS (b) - if (b->number == bnum) - { - free_command_lines (&b->commands); - if (cmd->body_count != 1) - error (_("Invalid \"commands\" block structure.")); - /* We need to copy the commands because if/while will free the - list after it finishes execution. */ - b->commands = copy_command_lines (cmd->body_list[0]); - breakpoints_changed (); - observer_notify_breakpoint_modified (b->number); - return simple_control; - } - error (_("No breakpoint number %d."), bnum); +static int +bp_location_has_shadow (struct bp_location *bl) +{ + if (bl->loc_type != bp_loc_software_breakpoint) + return 0; + if (!bl->inserted) + return 0; + if (bl->target_info.shadow_len == 0) + /* bp isn't valid, or doesn't shadow memory. */ + return 0; + return 1; } - + /* Update BUF, which is LEN bytes read from the target address MEMADDR, - by replacing any memory breakpoints with their shadowed contents. */ + by replacing any memory breakpoints with their shadowed contents. + + The range of shadowed area by each bp_location is: + b->address - bp_location_placed_address_before_address_max + up to b->address + bp_location_shadow_len_after_address_max + The range we were requested to resolve shadows for is: + memaddr ... memaddr + len + Thus the safe cutoff boundaries for performance optimization are + memaddr + len <= b->address - bp_location_placed_address_before_address_max + and: + b->address + bp_location_shadow_len_after_address_max <= memaddr */ void breakpoint_restore_shadows (gdb_byte *buf, ULONGEST memaddr, LONGEST len) { - struct bp_location *b; - CORE_ADDR bp_addr = 0; - int bp_size = 0; - int bptoffset = 0; + /* Left boundary, right boundary and median element of our binary search. */ + unsigned bc_l, bc_r, bc; + + /* Find BC_L which is a leftmost element which may affect BUF content. It is + safe to report lower value but a failure to report higher one. */ + + bc_l = 0; + bc_r = bp_location_count; + while (bc_l + 1 < bc_r) + { + struct bp_location *b; + + bc = (bc_l + bc_r) / 2; + b = bp_location[bc]; + + /* Check first B->ADDRESS will not overflow due to the added constant. + Then advance the left boundary only if we are sure the BC element can + in no way affect the BUF content (MEMADDR to MEMADDR + LEN range). + + Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety offset so that + we cannot miss a breakpoint with its shadow range tail still reaching + MEMADDR. */ - ALL_BP_LOCATIONS (b) + if (b->address + bp_location_shadow_len_after_address_max >= b->address + && b->address + bp_location_shadow_len_after_address_max <= memaddr) + bc_l = bc; + else + bc_r = bc; + } + + /* Now do full processing of the found relevant range of elements. */ + + for (bc = bc_l; bc < bp_location_count; bc++) { + struct bp_location *b = bp_location[bc]; + CORE_ADDR bp_addr = 0; + int bp_size = 0; + int bptoffset = 0; + + /* bp_location array has B->OWNER always non-NULL. */ if (b->owner->type == bp_none) warning (_("reading through apparently deleted breakpoint #%d?"), b->owner->number); - if (b->loc_type != bp_loc_software_breakpoint) + /* Performance optimization: any futher element can no longer affect BUF + content. */ + + if (b->address >= bp_location_placed_address_before_address_max + && memaddr + len <= b->address + - bp_location_placed_address_before_address_max) + break; + + if (!bp_location_has_shadow (b)) continue; - if (!b->inserted) + if (!breakpoint_address_match (b->target_info.placed_address_space, 0, + current_program_space->aspace, 0)) continue; + /* Addresses and length of the part of the breakpoint that we need to copy. */ bp_addr = b->target_info.placed_address; bp_size = b->target_info.shadow_len; - if (bp_size == 0) - /* bp isn't valid, or doesn't shadow memory. */ - continue; if (bp_addr + bp_size <= memaddr) /* The breakpoint is entirely before the chunk of memory we @@ -801,7 +1207,6 @@ static void insert_catchpoint (struct ui_out *uo, void *args) { struct breakpoint *b = (struct breakpoint *) args; - int val = -1; gdb_assert (b->type == bp_catchpoint); gdb_assert (b->ops != NULL && b->ops->insert != NULL); @@ -809,90 +1214,42 @@ insert_catchpoint (struct ui_out *uo, void *args) b->ops->insert (b); } +/* Return true if BPT is of any hardware watchpoint kind. */ + static int -is_hardware_watchpoint (struct breakpoint *bpt) +is_hardware_watchpoint (const struct breakpoint *bpt) { return (bpt->type == bp_hardware_watchpoint || bpt->type == bp_read_watchpoint || bpt->type == bp_access_watchpoint); } -/* Find the current value of a watchpoint on EXP. Return the value in - *VALP and *RESULTP and the chain of intermediate and final values - in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does - not need them. - - If a memory error occurs while evaluating the expression, *RESULTP will - be set to NULL. *RESULTP may be a lazy value, if the result could - not be read from memory. It is used to determine whether a value - is user-specified (we should watch the whole value) or intermediate - (we should watch only the bit used to locate the final value). +/* Return true if BPT is of any watchpoint kind, hardware or + software. */ - If the final value, or any intermediate value, could not be read - from memory, *VALP will be set to NULL. *VAL_CHAIN will still be - set to any referenced values. *VALP will never be a lazy value. - This is the value which we store in struct breakpoint. - - If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the - value chain. The caller must free the values individually. If - VAL_CHAIN is NULL, all generated values will be left on the value - chain. */ - -static void -fetch_watchpoint_value (struct expression *exp, struct value **valp, - struct value **resultp, struct value **val_chain) +static int +is_watchpoint (const struct breakpoint *bpt) { - struct value *mark, *new_mark, *result; - volatile struct gdb_exception ex; - - *valp = NULL; - if (resultp) - *resultp = NULL; - if (val_chain) - *val_chain = NULL; - - /* Evaluate the expression. */ - mark = value_mark (); - result = NULL; - - TRY_CATCH (ex, RETURN_MASK_ALL) - { - result = evaluate_expression (exp); - } - if (ex.reason < 0) - { - /* Ignore memory errors, we want watchpoints pointing at - inaccessible memory to still be created; otherwise, throw the - error to some higher catcher. */ - switch (ex.error) - { - case MEMORY_ERROR: - break; - default: - throw_exception (ex); - break; - } - } - - new_mark = value_mark (); - if (mark == new_mark) - return; - if (resultp) - *resultp = result; + return (is_hardware_watchpoint (bpt) + || bpt->type == bp_watchpoint); +} - /* Make sure it's not lazy, so that after the target stops again we - have a non-lazy previous value to compare with. */ - if (result != NULL - && (!value_lazy (result) || gdb_value_fetch_lazy (result))) - *valp = result; +/* Assuming that B is a watchpoint: returns true if the current thread + and its running state are safe to evaluate or update watchpoint B. + Watchpoints on local expressions need to be evaluated in the + context of the thread that was current when the watchpoint was + created, and, that thread needs to be stopped to be able to select + the correct frame context. Watchpoints on global expressions can + be evaluated on any thread, and in any state. It is presently left + to the target allowing memory accesses when threads are + running. */ - if (val_chain) - { - /* Return the chain of intermediate values. We use this to - decide which addresses to watch. */ - *val_chain = new_mark; - value_release_to_mark (mark); - } +static int +watchpoint_in_thread_scope (struct breakpoint *b) +{ + return (ptid_equal (b->watchpoint_thread, null_ptid) + || (ptid_equal (inferior_ptid, b->watchpoint_thread) + && !is_executing (inferior_ptid))); } /* Assuming that B is a watchpoint: @@ -903,16 +1260,60 @@ fetch_watchpoint_value (struct expression *exp, struct value **valp, - Update the list of values that must be watched in B->loc. If the watchpoint disposition is disp_del_at_next_stop, then do nothing. - If this is local watchpoint that is out of scope, delete it. */ + If this is local watchpoint that is out of scope, delete it. + + Even with `set breakpoint always-inserted on' the watchpoints are removed + + inserted on each stop here. Normal breakpoints must never be removed + because they might be missed by a running thread when debugging in non-stop + mode. On the other hand, hardware watchpoints (is_hardware_watchpoint; + processed here) are specific to each LWP since they are stored in each LWP's + hardware debug registers. Therefore, such LWP must be stopped first in + order to be able to modify its hardware watchpoints. + + Hardware watchpoints must be reset exactly once after being presented to the + user. It cannot be done sooner, because it would reset the data used to + present the watchpoint hit to the user. And it must not be done later + because it could display the same single watchpoint hit during multiple GDB + stops. Note that the latter is relevant only to the hardware watchpoint + types bp_read_watchpoint and bp_access_watchpoint. False hit by + bp_hardware_watchpoint is not user-visible - its hit is suppressed if the + memory content has not changed. + + The following constraints influence the location where we can reset hardware + watchpoints: + + * target_stopped_by_watchpoint and target_stopped_data_address are called + several times when GDB stops. + + [linux] + * Multiple hardware watchpoints can be hit at the same time, causing GDB to + stop. GDB only presents one hardware watchpoint hit at a time as the + reason for stopping, and all the other hits are presented later, one after + the other, each time the user requests the execution to be resumed. + Execution is not resumed for the threads still having pending hit event + stored in LWP_INFO->STATUS. While the watchpoint is already removed from + the inferior on the first stop the thread hit event is kept being reported + from its cached value by linux_nat_stopped_data_address until the real + thread resume happens after the watchpoint gets presented and thus its + LWP_INFO->STATUS gets reset. + + Therefore the hardware watchpoint hit can get safely reset on the watchpoint + removal from inferior. */ + static void update_watchpoint (struct breakpoint *b, int reparse) { int within_current_scope; struct frame_id saved_frame_id; - struct bp_location *loc; - bpstat bs; + int frame_saved; - /* We don't free locations. They are stored in bp_location_chain and + /* If this is a local watchpoint, we only want to check if the + watchpoint frame is in scope if the current thread is the thread + that was used to create the watchpoint. */ + if (!watchpoint_in_thread_scope (b)) + return; + + /* We don't free locations. They are stored in bp_location array and update_global_locations will eventually delete them and remove breakpoints if needed. */ b->loc = NULL; @@ -920,12 +1321,7 @@ update_watchpoint (struct breakpoint *b, int reparse) if (b->disposition == disp_del_at_next_stop) return; - /* Save the current frame's ID so we can restore it after - evaluating the watchpoint expression on its own frame. */ - /* FIXME drow/2003-09-09: It would be nice if evaluate_expression - took a frame parameter, so that we didn't have to change the - selected frame. */ - saved_frame_id = get_frame_id (get_selected_frame (NULL)); + frame_saved = 0; /* Determine if the watchpoint is within scope. */ if (b->exp_valid_block == NULL) @@ -933,6 +1329,15 @@ update_watchpoint (struct breakpoint *b, int reparse) else { struct frame_info *fi; + + /* Save the current frame's ID so we can restore it after + evaluating the watchpoint expression on its own frame. */ + /* FIXME drow/2003-09-09: It would be nice if evaluate_expression + took a frame parameter, so that we didn't have to change the + selected frame. */ + frame_saved = 1; + saved_frame_id = get_frame_id (get_selected_frame (NULL)); + fi = frame_find_by_id (b->watchpoint_frame); within_current_scope = (fi != NULL); if (within_current_scope) @@ -956,6 +1361,21 @@ update_watchpoint (struct breakpoint *b, int reparse) value_free (b->val); b->val = NULL; b->val_valid = 0; + + /* Note that unlike with breakpoints, the watchpoint's condition + expression is stored in the breakpoint object, not in the + locations (re)created below. */ + if (b->cond_string != NULL) + { + if (b->cond_exp != NULL) + { + xfree (b->cond_exp); + b->cond_exp = NULL; + } + + s = b->cond_string; + b->cond_exp = parse_exp_1 (&s, b->cond_exp_valid_block, 0); + } } /* If we failed to parse the expression, for example because @@ -963,11 +1383,19 @@ update_watchpoint (struct breakpoint *b, int reparse) don't try to insert watchpoint. We don't automatically delete such watchpoint, though, since failure to parse expression is different from out-of-scope watchpoint. */ - if (within_current_scope && b->exp) + if ( !target_has_execution) { + /* Without execution, memory can't change. No use to try and + set watchpoint locations. The watchpoint will be reset when + the target gains execution, through breakpoint_re_set. */ + } + else if (within_current_scope && b->exp) + { + int pc = 0; struct value *val_chain, *v, *result, *next; + struct program_space *frame_pspace; - fetch_watchpoint_value (b->exp, &v, &result, &val_chain); + fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain); /* Avoid setting b->val if it's already set. The meaning of b->val is 'the last value' user saw, and we should update @@ -987,6 +1415,13 @@ update_watchpoint (struct breakpoint *b, int reparse) { int i, mem_cnt, other_type_used; + /* We need to determine how many resources are already used + for all other hardware watchpoints to see if we still have + enough resources to also fit this watchpoint in as well. + To avoid the hw_watchpoint_used_count call below from counting + this watchpoint, make sure that it is marked as a software + watchpoint. */ + b->type = bp_watchpoint; i = hw_watchpoint_used_count (bp_hardware_watchpoint, &other_type_used); mem_cnt = can_use_hardware_watchpoint (val_chain); @@ -1004,6 +1439,8 @@ update_watchpoint (struct breakpoint *b, int reparse) } } + frame_pspace = get_frame_program_space (get_selected_frame (NULL)); + /* Look at each value on the value chain. */ for (v = val_chain; v; v = next) { @@ -1041,6 +1478,8 @@ update_watchpoint (struct breakpoint *b, int reparse) ; *tmp = loc; loc->gdbarch = get_type_arch (value_type (v)); + + loc->pspace = frame_pspace; loc->address = addr; loc->length = len; loc->watchpoint_type = type; @@ -1052,29 +1491,37 @@ update_watchpoint (struct breakpoint *b, int reparse) value_free (v); } - /* We just regenerated the list of breakpoint locations. - The new location does not have its condition field set to anything - and therefore, we must always reparse the cond_string, independently - of the value of the reparse flag. */ - if (b->cond_string != NULL) + /* If a software watchpoint is not watching any memory, then the + above left it without any location set up. But, + bpstat_stop_status requires a location to be able to report + stops, so make sure there's at least a dummy one. */ + if (b->type == bp_watchpoint && b->loc == NULL) { - char *s = b->cond_string; - b->loc->cond = parse_exp_1 (&s, b->exp_valid_block, 0); + b->loc = allocate_bp_location (b); + b->loc->pspace = frame_pspace; + b->loc->address = -1; + b->loc->length = -1; + b->loc->watchpoint_type = -1; } } else if (!within_current_scope) { printf_filtered (_("\ -Watchpoint %d deleted because the program has left the block \n\ +Watchpoint %d deleted because the program has left the block\n\ in which its expression is valid.\n"), b->number); if (b->related_breakpoint) - b->related_breakpoint->disposition = disp_del_at_next_stop; + { + b->related_breakpoint->disposition = disp_del_at_next_stop; + b->related_breakpoint->related_breakpoint = NULL; + b->related_breakpoint= NULL; + } b->disposition = disp_del_at_next_stop; } /* Restore the selected frame. */ - select_frame (frame_find_by_id (saved_frame_id)); + if (frame_saved) + select_frame (frame_find_by_id (saved_frame_id)); } @@ -1083,7 +1530,7 @@ in which its expression is valid.\n"), static int should_be_inserted (struct bp_location *bpt) { - if (!breakpoint_enabled (bpt->owner)) + if (bpt->owner == NULL || !breakpoint_enabled (bpt->owner)) return 0; if (bpt->owner->disposition == disp_del_at_next_stop) @@ -1092,9 +1539,20 @@ should_be_inserted (struct bp_location *bpt) if (!bpt->enabled || bpt->shlib_disabled || bpt->duplicate) return 0; + /* This is set for example, when we're attached to the parent of a + vfork, and have detached from the child. The child is running + free, and we expect it to do an exec or exit, at which point the + OS makes the parent schedulable again (and the target reports + that the vfork is done). Until the child is done with the shared + memory region, do not insert breakpoints in the parent, otherwise + the child could still trip on the parent's breakpoints. Since + the parent is blocked anyway, it won't miss any breakpoint. */ + if (bpt->pspace->breakpoints_not_allowed) + return 0; + /* Tracepoints are inserted by the target at a time of its choosing, not by us. */ - if (bpt->owner->type == bp_tracepoint) + if (is_tracepoint (bpt->owner)) return 0; return 1; @@ -1120,6 +1578,7 @@ insert_bp_location (struct bp_location *bpt, /* Initialize the target-specific information. */ memset (&bpt->target_info, 0, sizeof (bpt->target_info)); bpt->target_info.placed_address = bpt->address; + bpt->target_info.placed_address_space = bpt->pspace->aspace; if (bpt->loc_type == bp_loc_software_breakpoint || bpt->loc_type == bp_loc_hardware_breakpoint) @@ -1148,7 +1607,6 @@ insert_bp_location (struct bp_location *bpt, { if (automatic_hardware_breakpoints) { - int changed = 0; enum bp_loc_type new_type; if (mr->attrib.mode != MEM_RW) @@ -1159,6 +1617,7 @@ insert_bp_location (struct bp_location *bpt, if (new_type != bpt->loc_type) { static int said = 0; + bpt->loc_type = new_type; if (!said) { @@ -1238,7 +1697,7 @@ Note: automatically using hardware breakpoints for read-only addresses.\n")); if (val) { /* Can't set the breakpoint. */ - if (solib_name_from_address (bpt->address)) + if (solib_name_from_address (bpt->pspace, bpt->address)) { /* See also: disable_breakpoints_in_shlibs. */ val = 0; @@ -1290,10 +1749,45 @@ Note: automatically using hardware breakpoints for read-only addresses.\n")); watchpoints. It's not clear that it's necessary... */ && bpt->owner->disposition != disp_del_at_next_stop) { - val = target_insert_watchpoint (bpt->address, + val = target_insert_watchpoint (bpt->address, bpt->length, - bpt->watchpoint_type); - bpt->inserted = (val != -1); + bpt->watchpoint_type, + bpt->owner->cond_exp); + + /* If trying to set a read-watchpoint, and it turns out it's not + supported, try emulating one with an access watchpoint. */ + if (val == 1 && bpt->watchpoint_type == hw_read) + { + struct bp_location *loc, **loc_temp; + + /* But don't try to insert it, if there's already another + hw_access location that would be considered a duplicate + of this one. */ + ALL_BP_LOCATIONS (loc, loc_temp) + if (loc != bpt + && loc->watchpoint_type == hw_access + && watchpoint_locations_match (bpt, loc)) + { + bpt->duplicate = 1; + bpt->inserted = 1; + bpt->target_info = loc->target_info; + bpt->watchpoint_type = hw_access; + val = 0; + break; + } + + if (val == 1) + { + val = target_insert_watchpoint (bpt->address, + bpt->length, + hw_access, + bpt->owner->cond_exp); + if (val == 0) + bpt->watchpoint_type = hw_access; + } + } + + bpt->inserted = (val == 0); } else if (bpt->owner->type == bp_catchpoint) @@ -1316,6 +1810,49 @@ Note: automatically using hardware breakpoints for read-only addresses.\n")); return 0; } +/* This function is called when program space PSPACE is about to be + deleted. It takes care of updating breakpoints to not reference + PSPACE anymore. */ + +void +breakpoint_program_space_exit (struct program_space *pspace) +{ + struct breakpoint *b, *b_temp; + struct bp_location *loc, **loc_temp; + + /* Remove any breakpoint that was set through this program space. */ + ALL_BREAKPOINTS_SAFE (b, b_temp) + { + if (b->pspace == pspace) + delete_breakpoint (b); + } + + /* Breakpoints set through other program spaces could have locations + bound to PSPACE as well. Remove those. */ + ALL_BP_LOCATIONS (loc, loc_temp) + { + struct bp_location *tmp; + + if (loc->pspace == pspace) + { + /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */ + if (loc->owner->loc == loc) + loc->owner->loc = loc->next; + else + for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next) + if (tmp->next == loc) + { + tmp->next = loc->next; + break; + } + } + } + + /* Now update the global location list to permanently delete the + removed locations above. */ + update_global_location_list (0); +} + /* Make sure all breakpoints are inserted in inferior. Throws exception on any error. A breakpoint that is already inserted won't be inserted @@ -1347,7 +1884,7 @@ static void insert_breakpoint_locations (void) { struct breakpoint *bpt; - struct bp_location *b, *temp; + struct bp_location *b, **bp_tmp; int error = 0; int val = 0; int disabled_breaks = 0; @@ -1359,18 +1896,31 @@ insert_breakpoint_locations (void) /* Explicitly mark the warning -- this will only be printed if there was an error. */ fprintf_unfiltered (tmp_error_stream, "Warning:\n"); - - ALL_BP_LOCATIONS_SAFE (b, temp) + + save_current_space_and_thread (); + + ALL_BP_LOCATIONS (b, bp_tmp) { if (!should_be_inserted (b) || b->inserted) continue; /* There is no point inserting thread-specific breakpoints if the - thread no longer exists. */ + thread no longer exists. ALL_BP_LOCATIONS bp_location has B->OWNER + always non-NULL. */ if (b->owner->thread != -1 && !valid_thread_id (b->owner->thread)) continue; + switch_to_program_space_and_thread (b->pspace); + + /* For targets that support global breakpoints, there's no need + to select an inferior to insert breakpoint to. In fact, even + if we aren't attached to any process yet, we should still + insert breakpoints. */ + if (!gdbarch_has_global_breakpoints (target_gdbarch) + && ptid_equal (inferior_ptid, null_ptid)) + continue; + val = insert_bp_location (b, tmp_error_stream, &disabled_breaks, &hw_breakpoint_error); @@ -1395,7 +1945,7 @@ insert_breakpoint_locations (void) continue; for (loc = bpt->loc; loc; loc = loc->next) - if (!loc->inserted) + if (!loc->inserted && should_be_inserted (loc)) { some_failed = 1; break; @@ -1434,10 +1984,10 @@ You may have requested too many hardware breakpoints/watchpoints.\n"); int remove_breakpoints (void) { - struct bp_location *b; + struct bp_location *b, **bp_tmp; int val = 0; - ALL_BP_LOCATIONS (b) + ALL_BP_LOCATIONS (b, bp_tmp) { if (b->inserted) val |= remove_breakpoint (b, mark_uninserted); @@ -1445,13 +1995,37 @@ remove_breakpoints (void) return val; } +/* Remove breakpoints of process PID. */ + +int +remove_breakpoints_pid (int pid) +{ + struct bp_location *b, **b_tmp; + int val; + struct inferior *inf = find_inferior_pid (pid); + + ALL_BP_LOCATIONS (b, b_tmp) + { + if (b->pspace != inf->pspace) + continue; + + if (b->inserted) + { + val = remove_breakpoint (b, mark_uninserted); + if (val != 0) + return val; + } + } + return 0; +} + int remove_hw_watchpoints (void) { - struct bp_location *b; + struct bp_location *b, **bp_tmp; int val = 0; - ALL_BP_LOCATIONS (b) + ALL_BP_LOCATIONS (b, bp_tmp) { if (b->inserted && b->loc_type == bp_loc_hardware_watchpoint) val |= remove_breakpoint (b, mark_uninserted); @@ -1462,17 +2036,30 @@ remove_hw_watchpoints (void) int reattach_breakpoints (int pid) { - struct bp_location *b; + struct cleanup *old_chain; + struct bp_location *b, **bp_tmp; int val; - struct cleanup *old_chain = save_inferior_ptid (); struct ui_file *tmp_error_stream = mem_fileopen (); int dummy1 = 0, dummy2 = 0; + struct inferior *inf; + struct thread_info *tp; + + tp = any_live_thread_of_process (pid); + if (tp == NULL) + return 1; + + inf = find_inferior_pid (pid); + old_chain = save_inferior_ptid (); + + inferior_ptid = tp->ptid; make_cleanup_ui_file_delete (tmp_error_stream); - inferior_ptid = pid_to_ptid (pid); - ALL_BP_LOCATIONS (b) + ALL_BP_LOCATIONS (b, bp_tmp) { + if (b->pspace != inf->pspace) + continue; + if (b->inserted) { b->inserted = 0; @@ -1502,6 +2089,7 @@ create_internal_breakpoint (struct gdbarch *gdbarch, sal.pc = address; sal.section = find_pc_overlay (sal.pc); + sal.pspace = current_program_space; b = set_raw_breakpoint (gdbarch, sal, type); b->number = internal_breakpoint_number--; @@ -1546,8 +2134,13 @@ create_overlay_event_breakpoint (char *func_name) static void create_longjmp_master_breakpoint (char *func_name) { + struct program_space *pspace; struct objfile *objfile; + struct cleanup *old_chain; + old_chain = save_current_program_space (); + + ALL_PSPACES (pspace) ALL_OBJFILES (objfile) { struct breakpoint *b; @@ -1556,6 +2149,8 @@ create_longjmp_master_breakpoint (char *func_name) if (!gdbarch_get_longjmp_target_p (get_objfile_arch (objfile))) continue; + set_current_program_space (pspace); + m = lookup_minimal_symbol_text (func_name, objfile); if (m == NULL) continue; @@ -1567,6 +2162,43 @@ create_longjmp_master_breakpoint (char *func_name) b->enable_state = bp_disabled; } update_global_location_list (1); + + do_cleanups (old_chain); +} + +/* Create a master std::terminate breakpoint. The actual function + looked for is named FUNC_NAME. */ +static void +create_std_terminate_master_breakpoint (const char *func_name) +{ + struct program_space *pspace; + struct objfile *objfile; + struct cleanup *old_chain; + + old_chain = save_current_program_space (); + + ALL_PSPACES (pspace) + ALL_OBJFILES (objfile) + { + struct breakpoint *b; + struct minimal_symbol *m; + + set_current_program_space (pspace); + + m = lookup_minimal_symbol (func_name, NULL, objfile); + if (m == NULL || (MSYMBOL_TYPE (m) != mst_text + && MSYMBOL_TYPE (m) != mst_file_text)) + continue; + + b = create_internal_breakpoint (get_objfile_arch (objfile), + SYMBOL_VALUE_ADDRESS (m), + bp_std_terminate_master); + b->addr_string = xstrdup (func_name); + b->enable_state = bp_disabled; + } + update_global_location_list (1); + + do_cleanups (old_chain); } void @@ -1574,7 +2206,7 @@ update_breakpoints_after_exec (void) { struct breakpoint *b; struct breakpoint *temp; - struct bp_location *bploc; + struct bp_location *bploc, **bplocp_tmp; /* We're about to delete breakpoints from GDB's lists. If the INSERTED flag is true, GDB will try to lift the breakpoints by @@ -1584,11 +2216,15 @@ update_breakpoints_after_exec (void) breakpoints out as soon as it detects an exec. We don't do that here instead, because there may be other attempts to delete breakpoints after detecting an exec and before reaching here. */ - ALL_BP_LOCATIONS (bploc) - gdb_assert (!bploc->inserted); + ALL_BP_LOCATIONS (bploc, bplocp_tmp) + if (bploc->pspace == current_program_space) + gdb_assert (!bploc->inserted); ALL_BREAKPOINTS_SAFE (b, temp) { + if (b->pspace != current_program_space) + continue; + /* Solib breakpoints must be explicitly reset after an exec(). */ if (b->type == bp_shlib_event) { @@ -1606,7 +2242,7 @@ update_breakpoints_after_exec (void) /* Thread event breakpoints must be set anew after an exec(), as must overlay event and longjmp master breakpoints. */ if (b->type == bp_thread_event || b->type == bp_overlay_event - || b->type == bp_longjmp_master) + || b->type == bp_longjmp_master || b->type == bp_std_terminate_master) { delete_breakpoint (b); continue; @@ -1682,34 +2318,52 @@ update_breakpoints_after_exec (void) create_longjmp_master_breakpoint ("_longjmp"); create_longjmp_master_breakpoint ("siglongjmp"); create_longjmp_master_breakpoint ("_siglongjmp"); + create_std_terminate_master_breakpoint ("std::terminate()"); } int detach_breakpoints (int pid) { - struct bp_location *b; + struct bp_location *b, **bp_tmp; int val = 0; struct cleanup *old_chain = save_inferior_ptid (); + struct inferior *inf = current_inferior (); if (pid == PIDGET (inferior_ptid)) error (_("Cannot detach breakpoints of inferior_ptid")); - /* Set inferior_ptid; remove_breakpoint uses this global. */ + /* Set inferior_ptid; remove_breakpoint_1 uses this global. */ inferior_ptid = pid_to_ptid (pid); - ALL_BP_LOCATIONS (b) + ALL_BP_LOCATIONS (b, bp_tmp) { + if (b->pspace != inf->pspace) + continue; + if (b->inserted) - val |= remove_breakpoint (b, mark_inserted); + val |= remove_breakpoint_1 (b, mark_inserted); } + + /* Detach single-step breakpoints as well. */ + detach_single_step_breakpoints (); + do_cleanups (old_chain); return val; } +/* Remove the breakpoint location B from the current address space. + Note that this is used to detach breakpoints from a child fork. + When we get here, the child isn't in the inferior list, and neither + do we have objects to represent its address space --- we should + *not* look at b->pspace->aspace here. */ + static int -remove_breakpoint (struct bp_location *b, insertion_state_t is) +remove_breakpoint_1 (struct bp_location *b, insertion_state_t is) { int val; + /* B is never in moribund_locations by our callers. */ + gdb_assert (b->owner != NULL); + if (b->owner->enable_state == bp_permanent) /* Permanent breakpoints cannot be inserted or removed. */ return 0; @@ -1786,7 +2440,7 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) /* In some cases, we might not be able to remove a breakpoint in a shared library that has already been removed, but we have not yet processed the shlib unload event. */ - if (val && solib_name_from_address (b->address)) + if (val && solib_name_from_address (b->pspace, b->address)) val = 0; if (val) @@ -1795,12 +2449,9 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) } else if (b->loc_type == bp_loc_hardware_watchpoint) { - struct value *v; - struct value *n; - b->inserted = (is == mark_inserted); - val = target_remove_watchpoint (b->address, b->length, - b->watchpoint_type); + val = target_remove_watchpoint (b->address, b->length, + b->watchpoint_type, b->owner->cond_exp); /* Failure to remove any of the hardware watchpoints comes here. */ if ((is == mark_uninserted) && (b->inserted)) @@ -1822,15 +2473,43 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) return 0; } +static int +remove_breakpoint (struct bp_location *b, insertion_state_t is) +{ + int ret; + struct cleanup *old_chain; + + /* B is never in moribund_locations by our callers. */ + gdb_assert (b->owner != NULL); + + if (b->owner->enable_state == bp_permanent) + /* Permanent breakpoints cannot be inserted or removed. */ + return 0; + + /* The type of none suggests that owner is actually deleted. + This should not ever happen. */ + gdb_assert (b->owner->type != bp_none); + + old_chain = save_current_space_and_thread (); + + switch_to_program_space_and_thread (b->pspace); + + ret = remove_breakpoint_1 (b, is); + + do_cleanups (old_chain); + return ret; +} + /* Clear the "inserted" flag in all breakpoints. */ void mark_breakpoints_out (void) { - struct bp_location *bpt; + struct bp_location *bpt, **bptp_tmp; - ALL_BP_LOCATIONS (bpt) - bpt->inserted = 0; + ALL_BP_LOCATIONS (bpt, bptp_tmp) + if (bpt->pspace == current_program_space) + bpt->inserted = 0; } /* Clear the "inserted" flag in all breakpoints and delete any @@ -1849,30 +2528,56 @@ void breakpoint_init_inferior (enum inf_context context) { struct breakpoint *b, *temp; - struct bp_location *bpt; + struct bp_location *bpt, **bptp_tmp; int ix; + struct program_space *pspace = current_program_space; /* If breakpoint locations are shared across processes, then there's nothing to do. */ if (gdbarch_has_global_breakpoints (target_gdbarch)) return; - ALL_BP_LOCATIONS (bpt) - if (bpt->owner->enable_state != bp_permanent) + ALL_BP_LOCATIONS (bpt, bptp_tmp) + { + /* ALL_BP_LOCATIONS bp_location has BPT->OWNER always non-NULL. */ + if (bpt->pspace == pspace + && bpt->owner->enable_state != bp_permanent) bpt->inserted = 0; + } ALL_BREAKPOINTS_SAFE (b, temp) { + if (b->loc && b->loc->pspace != pspace) + continue; + switch (b->type) { case bp_call_dummy: - case bp_watchpoint_scope: /* If the call dummy breakpoint is at the entry point it will - cause problems when the inferior is rerun, so we better - get rid of it. + cause problems when the inferior is rerun, so we better get + rid of it. */ + + case bp_watchpoint_scope: + + /* Also get rid of scope breakpoints. */ + + case bp_shlib_event: + + /* Also remove solib event breakpoints. Their addresses may + have changed since the last time we ran the program. + Actually we may now be debugging against different target; + and so the solib backend that installed this breakpoint may + not be used in by the target. E.g., + + (gdb) file prog-linux + (gdb) run # native linux target + ... + (gdb) kill + (gdb) file prog-win.exe + (gdb) tar rem :9999 # remote Windows gdbserver. + */ - Also get rid of scope breakpoints. */ delete_breakpoint (b); break; @@ -1905,6 +2610,11 @@ breakpoint_init_inferior (enum inf_context context) VEC_free (bp_location_p, moribund_locations); } +/* These functions concern about actual breakpoints inserted in the + target --- to e.g. check if we need to do decr_pc adjustment or if + we need to hop over the bkpt --- so we check for address space + match, not program space. */ + /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint exists at PC. It returns ordinary_breakpoint_here if it's an ordinary breakpoint, or permanent_breakpoint_here if it's a @@ -1916,20 +2626,22 @@ breakpoint_init_inferior (enum inf_context context) the target, to advance the PC past the breakpoint. */ enum breakpoint_here -breakpoint_here_p (CORE_ADDR pc) +breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc) { - const struct bp_location *bpt; + struct bp_location *bpt, **bptp_tmp; int any_breakpoint_here = 0; - ALL_BP_LOCATIONS (bpt) + ALL_BP_LOCATIONS (bpt, bptp_tmp) { if (bpt->loc_type != bp_loc_software_breakpoint && bpt->loc_type != bp_loc_hardware_breakpoint) continue; + /* ALL_BP_LOCATIONS bp_location has BPT->OWNER always non-NULL. */ if ((breakpoint_enabled (bpt->owner) || bpt->owner->enable_state == bp_permanent) - && bpt->address == pc) /* bp is enabled and matches pc */ + && breakpoint_address_match (bpt->pspace->aspace, bpt->address, + aspace, pc)) { if (overlay_debugging && section_is_overlay (bpt->section) @@ -1948,36 +2660,38 @@ breakpoint_here_p (CORE_ADDR pc) /* Return true if there's a moribund breakpoint at PC. */ int -moribund_breakpoint_here_p (CORE_ADDR pc) +moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc) { struct bp_location *loc; int ix; for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix) - if (loc->address == pc) + if (breakpoint_address_match (loc->pspace->aspace, loc->address, + aspace, pc)) return 1; return 0; } /* Returns non-zero if there's a breakpoint inserted at PC, which is - inserted using regular breakpoint_chain/bp_location_chain mechanism. + inserted using regular breakpoint_chain / bp_location array mechanism. This does not check for single-step breakpoints, which are inserted and removed using direct target manipulation. */ int -regular_breakpoint_inserted_here_p (CORE_ADDR pc) +regular_breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc) { - const struct bp_location *bpt; + struct bp_location *bpt, **bptp_tmp; - ALL_BP_LOCATIONS (bpt) + ALL_BP_LOCATIONS (bpt, bptp_tmp) { if (bpt->loc_type != bp_loc_software_breakpoint && bpt->loc_type != bp_loc_hardware_breakpoint) continue; if (bpt->inserted - && bpt->address == pc) /* bp is inserted and matches pc */ + && breakpoint_address_match (bpt->pspace->aspace, bpt->address, + aspace, pc)) { if (overlay_debugging && section_is_overlay (bpt->section) @@ -1994,12 +2708,12 @@ regular_breakpoint_inserted_here_p (CORE_ADDR pc) or a single step breakpoint inserted at PC. */ int -breakpoint_inserted_here_p (CORE_ADDR pc) +breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc) { - if (regular_breakpoint_inserted_here_p (pc)) + if (regular_breakpoint_inserted_here_p (aspace, pc)) return 1; - if (single_step_breakpoint_inserted_here_p (pc)) + if (single_step_breakpoint_inserted_here_p (aspace, pc)) return 1; return 0; @@ -2009,18 +2723,18 @@ breakpoint_inserted_here_p (CORE_ADDR pc) inserted at PC. */ int -software_breakpoint_inserted_here_p (CORE_ADDR pc) +software_breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc) { - const struct bp_location *bpt; - int any_breakpoint_here = 0; + struct bp_location *bpt, **bptp_tmp; - ALL_BP_LOCATIONS (bpt) + ALL_BP_LOCATIONS (bpt, bptp_tmp) { if (bpt->loc_type != bp_loc_software_breakpoint) continue; if (bpt->inserted - && bpt->address == pc) /* bp is enabled and matches pc */ + && breakpoint_address_match (bpt->pspace->aspace, bpt->address, + aspace, pc)) { if (overlay_debugging && section_is_overlay (bpt->section) @@ -2032,34 +2746,69 @@ software_breakpoint_inserted_here_p (CORE_ADDR pc) } /* Also check for software single-step breakpoints. */ - if (single_step_breakpoint_inserted_here_p (pc)) + if (single_step_breakpoint_inserted_here_p (aspace, pc)) return 1; return 0; } +int +hardware_watchpoint_inserted_in_range (struct address_space *aspace, + CORE_ADDR addr, ULONGEST len) +{ + struct breakpoint *bpt; + + ALL_BREAKPOINTS (bpt) + { + struct bp_location *loc; + + if (bpt->type != bp_hardware_watchpoint + && bpt->type != bp_access_watchpoint) + continue; + + if (!breakpoint_enabled (bpt)) + continue; + + for (loc = bpt->loc; loc; loc = loc->next) + if (loc->pspace->aspace == aspace && loc->inserted) + { + CORE_ADDR l, h; + + /* Check for intersection. */ + l = max (loc->address, addr); + h = min (loc->address + loc->length, addr + len); + if (l < h) + return 1; + } + } + return 0; +} + /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at PC is valid for process/thread PTID. */ int -breakpoint_thread_match (CORE_ADDR pc, ptid_t ptid) +breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc, + ptid_t ptid) { - const struct bp_location *bpt; + struct bp_location *bpt, **bptp_tmp; /* The thread and task IDs associated to PTID, computed lazily. */ int thread = -1; int task = 0; - ALL_BP_LOCATIONS (bpt) + ALL_BP_LOCATIONS (bpt, bptp_tmp) { if (bpt->loc_type != bp_loc_software_breakpoint && bpt->loc_type != bp_loc_hardware_breakpoint) continue; + /* ALL_BP_LOCATIONS bp_location has BPT->OWNER always non-NULL. */ if (!breakpoint_enabled (bpt->owner) && bpt->owner->enable_state != bp_permanent) continue; - if (bpt->address != pc) + if (!breakpoint_address_match (bpt->pspace->aspace, bpt->address, + aspace, pc)) continue; if (bpt->owner->thread != -1) @@ -2110,7 +2859,7 @@ bpstat_free (bpstat bs) { if (bs->old_val != NULL) value_free (bs->old_val); - free_command_lines (&bs->commands); + decref_counted_command_line (&bs->commands); xfree (bs); } @@ -2152,8 +2901,7 @@ bpstat_copy (bpstat bs) { tmp = (bpstat) xmalloc (sizeof (*tmp)); memcpy (tmp, bs, sizeof (*tmp)); - if (bs->commands != NULL) - tmp->commands = copy_command_lines (bs->commands); + incref_counted_command_line (tmp->commands); if (bs->old_val != NULL) { tmp->old_val = value_copy (bs->old_val); @@ -2173,50 +2921,20 @@ bpstat_copy (bpstat bs) /* Find the bpstat associated with this breakpoint */ -bpstat -bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint) -{ - if (bsp == NULL) - return NULL; - - for (; bsp != NULL; bsp = bsp->next) - { - if (bsp->breakpoint_at && bsp->breakpoint_at->owner == breakpoint) - return bsp; - } - return NULL; -} - -/* Find a step_resume breakpoint associated with this bpstat. - (If there are multiple step_resume bp's on the list, this function - will arbitrarily pick one.) - - It is an error to use this function if BPSTAT doesn't contain a - step_resume breakpoint. - - See wait_for_inferior's use of this function. */ -struct breakpoint * -bpstat_find_step_resume_breakpoint (bpstat bsp) -{ - int current_thread; - - gdb_assert (bsp != NULL); - - current_thread = pid_to_thread_id (inferior_ptid); +bpstat +bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint) +{ + if (bsp == NULL) + return NULL; for (; bsp != NULL; bsp = bsp->next) { - if ((bsp->breakpoint_at != NULL) - && (bsp->breakpoint_at->owner->type == bp_step_resume) - && (bsp->breakpoint_at->owner->thread == current_thread - || bsp->breakpoint_at->owner->thread == -1)) - return bsp->breakpoint_at->owner; + if (bsp->breakpoint_at && bsp->breakpoint_at->owner == breakpoint) + return bsp; } - - internal_error (__FILE__, __LINE__, _("No step_resume breakpoint found.")); + return NULL; } - /* Put in *NUM the breakpoint number of the first breakpoint we are stopped at. *BSP upon return is a bpstat which points to the remaining breakpoints stopped at (but which is not guaranteed to be good for @@ -2254,7 +2972,8 @@ bpstat_clear_actions (bpstat bs) { for (; bs != NULL; bs = bs->next) { - free_command_lines (&bs->commands); + decref_counted_command_line (&bs->commands); + bs->commands_left = NULL; if (bs->old_val != NULL) { value_free (bs->old_val); @@ -2320,6 +3039,7 @@ bpstat_do_actions_1 (bpstat *bsp) breakpoint_proceeded = 0; for (; bs != NULL; bs = bs->next) { + struct counted_command_line *ccmd; struct command_line *cmd; struct cleanup *this_cmd_tree_chain; @@ -2333,9 +3053,12 @@ bpstat_do_actions_1 (bpstat *bsp) commands are only executed once, we don't need to copy it; we can clear the pointer in the bpstat, and make sure we free the tree when we're done. */ - cmd = bs->commands; - bs->commands = 0; - this_cmd_tree_chain = make_cleanup_free_command_lines (&cmd); + ccmd = bs->commands; + bs->commands = NULL; + this_cmd_tree_chain + = make_cleanup_decref_counted_command_line (&ccmd); + cmd = bs->commands_left; + bs->commands_left = NULL; while (cmd != NULL) { @@ -2446,6 +3169,11 @@ print_it_typical (bpstat bs) if (bs->breakpoint_at == NULL) return PRINT_UNKNOWN; bl = bs->breakpoint_at; + + /* bl->owner can be NULL if it was a momentary breakpoint + which has since been placed into moribund_locations. */ + if (bl->owner == NULL) + return PRINT_UNKNOWN; b = bl->owner; stb = ui_out_stream_new (uiout); @@ -2503,6 +3231,12 @@ print_it_typical (bpstat bs) result = PRINT_NOTHING; break; + case bp_std_terminate_master: + /* These should never be enabled. */ + printf_filtered (_("std::terminate Master Breakpoint: gdb should not stop!\n")); + result = PRINT_NOTHING; + break; + case bp_watchpoint: case bp_hardware_watchpoint: annotate_watchpoint (b->number); @@ -2593,7 +3327,9 @@ print_it_typical (bpstat bs) case bp_step_resume: case bp_watchpoint_scope: case bp_call_dummy: + case bp_std_terminate: case bp_tracepoint: + case bp_fast_tracepoint: case bp_jit_event: default: result = PRINT_UNKNOWN; @@ -2701,6 +3437,7 @@ breakpoint_cond_eval (void *exp) { struct value *mark = value_mark (); int i = !value_true (evaluate_expression ((struct expression *) exp)); + value_free_to_mark (mark); return i; } @@ -2717,6 +3454,7 @@ bpstat_alloc (const struct bp_location *bl, bpstat cbs /* Current "bs" value */ bs->breakpoint_at = bl; /* If the condition is false, etc., don't do the commands. */ bs->commands = NULL; + bs->commands_left = NULL; bs->old_val = NULL; bs->print_it = print_it_normal; return bs; @@ -2737,9 +3475,7 @@ watchpoints_triggered (struct target_waitstatus *ws) /* We were not stopped by a watchpoint. Mark all watchpoints as not triggered. */ ALL_BREAKPOINTS (b) - if (b->type == bp_hardware_watchpoint - || b->type == bp_read_watchpoint - || b->type == bp_access_watchpoint) + if (is_hardware_watchpoint (b)) b->watchpoint_triggered = watch_triggered_no; return 0; @@ -2750,9 +3486,7 @@ watchpoints_triggered (struct target_waitstatus *ws) /* We were stopped by a watchpoint, but we don't know where. Mark all watchpoints as unknown. */ ALL_BREAKPOINTS (b) - if (b->type == bp_hardware_watchpoint - || b->type == bp_read_watchpoint - || b->type == bp_access_watchpoint) + if (is_hardware_watchpoint (b)) b->watchpoint_triggered = watch_triggered_unknown; return stopped_by_watchpoint; @@ -2763,12 +3497,9 @@ watchpoints_triggered (struct target_waitstatus *ws) triggered. */ ALL_BREAKPOINTS (b) - if (b->type == bp_hardware_watchpoint - || b->type == bp_read_watchpoint - || b->type == bp_access_watchpoint) + if (is_hardware_watchpoint (b)) { struct bp_location *loc; - struct value *v; b->watchpoint_triggered = watch_triggered_no; for (loc = b->loc; loc; loc = loc->next) @@ -2794,11 +3525,16 @@ watchpoints_triggered (struct target_waitstatus *ws) #define WP_VALUE_CHANGED 2 /* The value has not changed. */ #define WP_VALUE_NOT_CHANGED 3 +/* Ignore this watchpoint, no matter if the value changed or not. */ +#define WP_IGNORE 4 #define BP_TEMPFLAG 1 #define BP_HARDWAREFLAG 2 -/* Check watchpoint condition. */ +/* Evaluate watchpoint condition expression and check if its value changed. + + P should be a pointer to struct bpstat, but is defined as a void * + in order for this function to be usable with catch_errors. */ static int watchpoint_check (void *p) @@ -2808,8 +3544,17 @@ watchpoint_check (void *p) struct frame_info *fr; int within_current_scope; + /* BS is built for existing struct breakpoint. */ + gdb_assert (bs->breakpoint_at != NULL); + gdb_assert (bs->breakpoint_at->owner != NULL); b = bs->breakpoint_at->owner; + /* If this is a local watchpoint, we only want to check if the + watchpoint frame is in scope if the current thread is the thread + that was used to create the watchpoint. */ + if (!watchpoint_in_thread_scope (b)) + return WP_IGNORE; + if (b->exp_valid_block == NULL) within_current_scope = 1; else @@ -2818,6 +3563,17 @@ watchpoint_check (void *p) struct gdbarch *frame_arch = get_frame_arch (frame); CORE_ADDR frame_pc = get_frame_pc (frame); + /* in_function_epilogue_p() returns a non-zero value if we're still + in the function but the stack frame has already been invalidated. + Since we can't rely on the values of local variables after the + stack has been destroyed, we are treating the watchpoint in that + state as `not changed' without further checking. Don't mark + watchpoints as changed if the current frame is in an epilogue - + even if they are in some other frame, our view of the stack + is likely to be wrong and frame_find_by_id could error out. */ + if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc)) + return WP_IGNORE; + fr = frame_find_by_id (b->watchpoint_frame); within_current_scope = (fr != NULL); @@ -2834,17 +3590,6 @@ watchpoint_check (void *p) within_current_scope = 0; } - /* in_function_epilogue_p() returns a non-zero value if we're still - in the function but the stack frame has already been invalidated. - Since we can't rely on the values of local variables after the - stack has been destroyed, we are treating the watchpoint in that - state as `not changed' without further checking. Don't mark - watchpoints as changed if the current frame is in an epilogue - - even if they are in some other frame, our view of the stack - is likely to be wrong. */ - if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc)) - return WP_VALUE_NOT_CHANGED; - if (within_current_scope) /* If we end up stopping, the current frame will get selected in normal_stop. So this call to select_frame won't affect @@ -2859,12 +3604,17 @@ watchpoint_check (void *p) call free_all_values. We can't call free_all_values because we might be in the middle of evaluating a function call. */ + int pc = 0; struct value *mark = value_mark (); struct value *new_val; - fetch_watchpoint_value (b->exp, &new_val, NULL, NULL); + fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL); + + /* We use value_equal_contents instead of value_equal because the latter + coerces an array to a pointer, thus comparing just the address of the + array instead of its contents. This is not what we want. */ if ((b->val != NULL) != (new_val != NULL) - || (b->val != NULL && !value_equal (b->val, new_val))) + || (b->val != NULL && !value_equal_contents (b->val, new_val))) { if (new_val != NULL) { @@ -2874,14 +3624,12 @@ watchpoint_check (void *p) bs->old_val = b->val; b->val = new_val; b->val_valid = 1; - /* We will stop here */ return WP_VALUE_CHANGED; } else { - /* Nothing changed, don't do anything. */ + /* Nothing changed. */ value_free_to_mark (mark); - /* We won't stop here */ return WP_VALUE_NOT_CHANGED; } } @@ -2908,7 +3656,11 @@ watchpoint_check (void *p) which its expression is valid.\n"); if (b->related_breakpoint) - b->related_breakpoint->disposition = disp_del_at_next_stop; + { + b->related_breakpoint->disposition = disp_del_at_next_stop; + b->related_breakpoint->related_breakpoint = NULL; + b->related_breakpoint = NULL; + } b->disposition = disp_del_at_next_stop; return WP_DELETED; @@ -2919,35 +3671,40 @@ which its expression is valid.\n"); breakpoint location BL. This function does not check if we should stop, only if BL explains the stop. */ static int -bpstat_check_location (const struct bp_location *bl, CORE_ADDR bp_addr) +bpstat_check_location (const struct bp_location *bl, + struct address_space *aspace, CORE_ADDR bp_addr) { struct breakpoint *b = bl->owner; - if (b->type != bp_watchpoint - && b->type != bp_hardware_watchpoint - && b->type != bp_read_watchpoint - && b->type != bp_access_watchpoint + /* BL is from existing struct breakpoint. */ + gdb_assert (b != NULL); + + /* By definition, the inferior does not report stops at + tracepoints. */ + if (is_tracepoint (b)) + return 0; + + if (!is_watchpoint (b) && b->type != bp_hardware_breakpoint && b->type != bp_catchpoint) /* a non-watchpoint bp */ { - if (bl->address != bp_addr) /* address doesn't match */ + if (!breakpoint_address_match (bl->pspace->aspace, bl->address, + aspace, bp_addr)) return 0; if (overlay_debugging /* unmapped overlay section */ && section_is_overlay (bl->section) && !section_is_mapped (bl->section)) return 0; } - + /* Continuable hardware watchpoints are treated as non-existent if the reason we stopped wasn't a hardware watchpoint (we didn't stop on some data address). Otherwise gdb won't stop on a break instruction in the code (not from a breakpoint) when a hardware watchpoint has been defined. Also skip watchpoints which we know did not trigger (did not match the data address). */ - - if ((b->type == bp_hardware_watchpoint - || b->type == bp_read_watchpoint - || b->type == bp_access_watchpoint) + + if (is_hardware_watchpoint (b) && b->watchpoint_triggered == watch_triggered_no) return 0; @@ -2977,16 +3734,17 @@ bpstat_check_location (const struct bp_location *bl, CORE_ADDR bp_addr) static void bpstat_check_watchpoint (bpstat bs) { - const struct bp_location *bl = bs->breakpoint_at; - struct breakpoint *b = bl->owner; + const struct bp_location *bl; + struct breakpoint *b; + + /* BS is built for existing struct breakpoint. */ + bl = bs->breakpoint_at; + gdb_assert (bl != NULL); + b = bl->owner; + gdb_assert (b != NULL); - if (b->type == bp_watchpoint - || b->type == bp_read_watchpoint - || b->type == bp_access_watchpoint - || b->type == bp_hardware_watchpoint) + if (is_watchpoint (b)) { - CORE_ADDR addr; - struct value *v; int must_check_value = 0; if (b->type == bp_watchpoint) @@ -3021,14 +3779,74 @@ bpstat_check_watchpoint (bpstat bs) bs->print_it = print_it_done; /* Stop. */ break; + case WP_IGNORE: + bs->print_it = print_it_noop; + bs->stop = 0; + break; case WP_VALUE_CHANGED: if (b->type == bp_read_watchpoint) { - /* Don't stop: read watchpoints shouldn't fire if - the value has changed. This is for targets - which cannot set read-only watchpoints. */ - bs->print_it = print_it_noop; - bs->stop = 0; + /* There are two cases to consider here: + + 1. we're watching the triggered memory for reads. + In that case, trust the target, and always report + the watchpoint hit to the user. Even though + reads don't cause value changes, the value may + have changed since the last time it was read, and + since we're not trapping writes, we will not see + those, and as such we should ignore our notion of + old value. + + 2. we're watching the triggered memory for both + reads and writes. There are two ways this may + happen: + + 2.1. this is a target that can't break on data + reads only, but can break on accesses (reads or + writes), such as e.g., x86. We detect this case + at the time we try to insert read watchpoints. + + 2.2. otherwise, the target supports read + watchpoints, but, the user set an access or write + watchpoint watching the same memory as this read + watchpoint. + + If we're watching memory writes as well as reads, + ignore watchpoint hits when we find that the + value hasn't changed, as reads don't cause + changes. This still gives false positives when + the program writes the same value to memory as + what there was already in memory (we will confuse + it for a read), but it's much better than + nothing. */ + + int other_write_watchpoint = 0; + + if (bl->watchpoint_type == hw_read) + { + struct breakpoint *other_b; + + ALL_BREAKPOINTS (other_b) + if ((other_b->type == bp_hardware_watchpoint + || other_b->type == bp_access_watchpoint) + && (other_b->watchpoint_triggered + == watch_triggered_yes)) + { + other_write_watchpoint = 1; + break; + } + } + + if (other_write_watchpoint + || bl->watchpoint_type == hw_access) + { + /* We're watching the same memory for writes, + and the value changed since the last time we + updated it, so this trap must be for a write. + Ignore it. */ + bs->print_it = print_it_noop; + bs->stop = 0; + } } break; case WP_VALUE_NOT_CHANGED: @@ -3075,8 +3893,14 @@ static void bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid) { int thread_id = pid_to_thread_id (ptid); - const struct bp_location *bl = bs->breakpoint_at; - struct breakpoint *b = bl->owner; + const struct bp_location *bl; + struct breakpoint *b; + + /* BS is built for existing struct breakpoint. */ + bl = bs->breakpoint_at; + gdb_assert (bl != NULL); + b = bl->owner; + gdb_assert (b != NULL); if (frame_id_p (b->frame_id) && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ()))) @@ -3084,16 +3908,24 @@ bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid) else if (bs->stop) { int value_is_zero = 0; - + struct expression *cond; + /* If this is a scope breakpoint, mark the associated watchpoint as triggered so that we will handle the out-of-scope event. We'll get to the watchpoint next iteration. */ if (b->type == bp_watchpoint_scope) b->related_breakpoint->watchpoint_triggered = watch_triggered_yes; - - if (bl->cond && bl->owner->disposition != disp_del_at_next_stop) + + if (is_watchpoint (b)) + cond = b->cond_exp; + else + cond = bl->cond; + + if (cond && bl->owner->disposition != disp_del_at_next_stop) { + int within_current_scope = 1; + /* We use value_mark and value_free_to_mark because it could be a long time before we return to the command level and call free_all_values. We can't call free_all_values @@ -3107,15 +3939,50 @@ bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid) variables when we arrive at a breakpoint at the start of the inlined function; the current frame will be the call site. */ - select_frame (get_current_frame ()); - value_is_zero - = catch_errors (breakpoint_cond_eval, (bl->cond), - "Error in testing breakpoint condition:\n", - RETURN_MASK_ALL); + if (!is_watchpoint (b) || b->cond_exp_valid_block == NULL) + select_frame (get_current_frame ()); + else + { + struct frame_info *frame; + + /* For local watchpoint expressions, which particular + instance of a local is being watched matters, so we + keep track of the frame to evaluate the expression + in. To evaluate the condition however, it doesn't + really matter which instantiation of the function + where the condition makes sense triggers the + watchpoint. This allows an expression like "watch + global if q > 10" set in `func', catch writes to + global on all threads that call `func', or catch + writes on all recursive calls of `func' by a single + thread. We simply always evaluate the condition in + the innermost frame that's executing where it makes + sense to evaluate the condition. It seems + intuitive. */ + frame = block_innermost_frame (b->cond_exp_valid_block); + if (frame != NULL) + select_frame (frame); + else + within_current_scope = 0; + } + if (within_current_scope) + value_is_zero + = catch_errors (breakpoint_cond_eval, cond, + "Error in testing breakpoint condition:\n", + RETURN_MASK_ALL); + else + { + warning (_("Watchpoint condition cannot be tested " + "in the current scope")); + /* If we failed to set the right context for this + watchpoint, unconditionally report it. */ + value_is_zero = 0; + } /* FIXME-someday, should give breakpoint # */ value_free_to_mark (mark); } - if (bl->cond && value_is_zero) + + if (cond && value_is_zero) { bs->stop = 0; } @@ -3154,10 +4021,11 @@ bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid) commands, FIXME??? fields. */ bpstat -bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid) +bpstat_stop_status (struct address_space *aspace, + CORE_ADDR bp_addr, ptid_t ptid) { struct breakpoint *b = NULL; - const struct bp_location *bl; + struct bp_location *bl; struct bp_location *loc; /* Root of the chain of bpstat's */ struct bpstats root_bs[1]; @@ -3166,78 +4034,90 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid) int ix; int need_remove_insert; - ALL_BP_LOCATIONS (bl) - { - b = bl->owner; - gdb_assert (b); - if (!breakpoint_enabled (b) && b->enable_state != bp_permanent) - continue; + /* ALL_BP_LOCATIONS iteration would break across + update_global_location_list possibly executed by + bpstat_check_breakpoint_conditions's inferior call. */ - /* For hardware watchpoints, we look only at the first location. - The watchpoint_check function will work on entire expression, - not the individual locations. For read watchopints, the - watchpoints_triggered function have checked all locations - alrea - */ - if (b->type == bp_hardware_watchpoint && bl != b->loc) - continue; + ALL_BREAKPOINTS (b) + { + if (!breakpoint_enabled (b) && b->enable_state != bp_permanent) + continue; - if (!bpstat_check_location (bl, bp_addr)) - continue; + for (bl = b->loc; bl != NULL; bl = bl->next) + { + /* For hardware watchpoints, we look only at the first location. + The watchpoint_check function will work on the entire expression, + not the individual locations. For read watchpoints, the + watchpoints_triggered function has checked all locations + already. */ + if (b->type == bp_hardware_watchpoint && bl != b->loc) + break; - /* Come here if it's a watchpoint, or if the break address matches */ + if (bl->shlib_disabled) + continue; - bs = bpstat_alloc (bl, bs); /* Alloc a bpstat to explain stop */ + if (!bpstat_check_location (bl, aspace, bp_addr)) + continue; - /* Assume we stop. Should we find watchpoint that is not actually - triggered, or if condition of breakpoint is false, we'll reset - 'stop' to 0. */ - bs->stop = 1; - bs->print = 1; + /* Come here if it's a watchpoint, or if the break address matches */ - bpstat_check_watchpoint (bs); - if (!bs->stop) - continue; + bs = bpstat_alloc (bl, bs); /* Alloc a bpstat to explain stop */ - if (b->type == bp_thread_event || b->type == bp_overlay_event - || b->type == bp_longjmp_master) - /* We do not stop for these. */ - bs->stop = 0; - else - bpstat_check_breakpoint_conditions (bs, ptid); - - if (bs->stop) - { - ++(b->hit_count); + /* Assume we stop. Should we find watchpoint that is not actually + triggered, or if condition of breakpoint is false, we'll reset + 'stop' to 0. */ + bs->stop = 1; + bs->print = 1; - /* We will stop here */ - if (b->disposition == disp_disable) - { - if (b->enable_state != bp_permanent) - b->enable_state = bp_disabled; - update_global_location_list (0); - } - if (b->silent) - bs->print = 0; - bs->commands = b->commands; - if (bs->commands - && (strcmp ("silent", bs->commands->line) == 0 - || (xdb_commands && strcmp ("Q", bs->commands->line) == 0))) - { - bs->commands = bs->commands->next; - bs->print = 0; - } - bs->commands = copy_command_lines (bs->commands); - } + bpstat_check_watchpoint (bs); + if (!bs->stop) + continue; - /* Print nothing for this entry if we dont stop or if we dont print. */ - if (bs->stop == 0 || bs->print == 0) - bs->print_it = print_it_noop; - } + if (b->type == bp_thread_event || b->type == bp_overlay_event + || b->type == bp_longjmp_master + || b->type == bp_std_terminate_master) + /* We do not stop for these. */ + bs->stop = 0; + else + bpstat_check_breakpoint_conditions (bs, ptid); + + if (bs->stop) + { + ++(b->hit_count); + + /* We will stop here */ + if (b->disposition == disp_disable) + { + if (b->enable_state != bp_permanent) + b->enable_state = bp_disabled; + update_global_location_list (0); + } + if (b->silent) + bs->print = 0; + bs->commands = b->commands; + incref_counted_command_line (bs->commands); + bs->commands_left = bs->commands ? bs->commands->commands : NULL; + if (bs->commands_left + && (strcmp ("silent", bs->commands_left->line) == 0 + || (xdb_commands + && strcmp ("Q", + bs->commands_left->line) == 0))) + { + bs->commands_left = bs->commands_left->next; + bs->print = 0; + } + } + + /* Print nothing for this entry if we dont stop or dont print. */ + if (bs->stop == 0 || bs->print == 0) + bs->print_it = print_it_noop; + } + } for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix) { - if (loc->address == bp_addr) + if (breakpoint_address_match (loc->pspace->aspace, loc->address, + aspace, bp_addr)) { bs = bpstat_alloc (loc, bs); /* For hits of moribund locations, we should just proceed. */ @@ -3248,185 +4128,88 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid) } bs->next = NULL; /* Terminate the chain */ - bs = root_bs->next; /* Re-grab the head of the chain */ /* If we aren't stopping, the value of some hardware watchpoint may not have changed, but the intermediate memory locations we are watching may have. Don't bother if we're stopping; this will get done later. */ - for (bs = root_bs->next; bs != NULL; bs = bs->next) - if (bs->stop) - break; - need_remove_insert = 0; - if (bs == NULL) + if (! bpstat_causes_stop (root_bs->next)) for (bs = root_bs->next; bs != NULL; bs = bs->next) if (!bs->stop && bs->breakpoint_at->owner - && (bs->breakpoint_at->owner->type == bp_hardware_watchpoint - || bs->breakpoint_at->owner->type == bp_read_watchpoint - || bs->breakpoint_at->owner->type == bp_access_watchpoint)) + && is_hardware_watchpoint (bs->breakpoint_at->owner)) { - /* remove/insert can invalidate bs->breakpoint_at, if this - location is no longer used by the watchpoint. Prevent - further code from trying to use it. */ + update_watchpoint (bs->breakpoint_at->owner, 0 /* don't reparse. */); + /* Updating watchpoints invalidates bs->breakpoint_at. + Prevent further code from trying to use it. */ bs->breakpoint_at = NULL; need_remove_insert = 1; } if (need_remove_insert) - { - remove_breakpoints (); - insert_breakpoints (); - } + update_global_location_list (1); return root_bs->next; } - -/* Tell what to do about this bpstat. */ -struct bpstat_what -bpstat_what (bpstat bs) -{ - /* Classify each bpstat as one of the following. */ - enum class - { - /* This bpstat element has no effect on the main_action. */ - no_effect = 0, - - /* There was a watchpoint, stop but don't print. */ - wp_silent, - - /* There was a watchpoint, stop and print. */ - wp_noisy, - /* There was a breakpoint but we're not stopping. */ - bp_nostop, - - /* There was a breakpoint, stop but don't print. */ - bp_silent, - - /* There was a breakpoint, stop and print. */ - bp_noisy, - - /* We hit the longjmp breakpoint. */ - long_jump, +static void +handle_jit_event (void) +{ + struct frame_info *frame; + struct gdbarch *gdbarch; - /* We hit the longjmp_resume breakpoint. */ - long_resume, + /* Switch terminal for any messages produced by + breakpoint_re_set. */ + target_terminal_ours_for_output (); - /* We hit the step_resume breakpoint. */ - step_resume, + frame = get_current_frame (); + gdbarch = get_frame_arch (frame); - /* We hit the shared library event breakpoint. */ - shlib_event, + jit_event_handler (gdbarch); - /* We hit the jit event breakpoint. */ - jit_event, + target_terminal_inferior (); +} - /* This is just used to count how many enums there are. */ - class_last - }; +/* Prepare WHAT final decision for infrun. */ - /* Here is the table which drives this routine. So that we can - format it pretty, we define some abbreviations for the - enum bpstat_what codes. */ -#define kc BPSTAT_WHAT_KEEP_CHECKING -#define ss BPSTAT_WHAT_STOP_SILENT -#define sn BPSTAT_WHAT_STOP_NOISY -#define sgl BPSTAT_WHAT_SINGLE -#define slr BPSTAT_WHAT_SET_LONGJMP_RESUME -#define clr BPSTAT_WHAT_CLEAR_LONGJMP_RESUME -#define sr BPSTAT_WHAT_STEP_RESUME -#define shl BPSTAT_WHAT_CHECK_SHLIBS -#define jit BPSTAT_WHAT_CHECK_JIT - -/* "Can't happen." Might want to print an error message. - abort() is not out of the question, but chances are GDB is just - a bit confused, not unusable. */ -#define err BPSTAT_WHAT_STOP_NOISY - - /* Given an old action and a class, come up with a new action. */ - /* One interesting property of this table is that wp_silent is the same - as bp_silent and wp_noisy is the same as bp_noisy. That is because - after stopping, the check for whether to step over a breakpoint - (BPSTAT_WHAT_SINGLE type stuff) is handled in proceed() without - reference to how we stopped. We retain separate wp_silent and - bp_silent codes in case we want to change that someday. - - Another possibly interesting property of this table is that - there's a partial ordering, priority-like, of the actions. Once - you've decided that some action is appropriate, you'll never go - back and decide something of a lower priority is better. The - ordering is: - - kc < jit clr sgl shl slr sn sr ss - sgl < jit shl slr sn sr ss - slr < jit err shl sn sr ss - clr < jit err shl sn sr ss - ss < jit shl sn sr - sn < jit shl sr - jit < shl sr - shl < sr - sr < - - What I think this means is that we don't need a damned table - here. If you just put the rows and columns in the right order, - it'd look awfully regular. We could simply walk the bpstat list - and choose the highest priority action we find, with a little - logic to handle the 'err' cases. */ - - /* step_resume entries: a step resume breakpoint overrides another - breakpoint of signal handling (see comment in wait_for_inferior - at where we set the step_resume breakpoint). */ - - static const enum bpstat_what_main_action - table[(int) class_last][(int) BPSTAT_WHAT_LAST] = - { - /* old action */ - /* kc ss sn sgl slr clr sr shl jit */ -/* no_effect */ {kc, ss, sn, sgl, slr, clr, sr, shl, jit}, -/* wp_silent */ {ss, ss, sn, ss, ss, ss, sr, shl, jit}, -/* wp_noisy */ {sn, sn, sn, sn, sn, sn, sr, shl, jit}, -/* bp_nostop */ {sgl, ss, sn, sgl, slr, slr, sr, shl, jit}, -/* bp_silent */ {ss, ss, sn, ss, ss, ss, sr, shl, jit}, -/* bp_noisy */ {sn, sn, sn, sn, sn, sn, sr, shl, jit}, -/* long_jump */ {slr, ss, sn, slr, slr, err, sr, shl, jit}, -/* long_resume */ {clr, ss, sn, err, err, err, sr, shl, jit}, -/* step_resume */ {sr, sr, sr, sr, sr, sr, sr, sr, sr }, -/* shlib */ {shl, shl, shl, shl, shl, shl, sr, shl, shl}, -/* jit_event */ {jit, jit, jit, jit, jit, jit, sr, jit, jit} - }; +/* Decide what infrun needs to do with this bpstat. */ -#undef kc -#undef ss -#undef sn -#undef sgl -#undef slr -#undef clr -#undef err -#undef sr -#undef ts -#undef shl -#undef jit - enum bpstat_what_main_action current_action = BPSTAT_WHAT_KEEP_CHECKING; +struct bpstat_what +bpstat_what (bpstat bs) +{ struct bpstat_what retval; + /* We need to defer calling `solib_add', as adding new symbols + resets breakpoints, which in turn deletes breakpoint locations, + and hence may clear unprocessed entries in the BS chain. */ + int shlib_event = 0; + int jit_event = 0; + + retval.main_action = BPSTAT_WHAT_KEEP_CHECKING; + retval.call_dummy = STOP_NONE; - retval.call_dummy = 0; for (; bs != NULL; bs = bs->next) { - enum class bs_class = no_effect; + /* Extract this BS's action. After processing each BS, we check + if its action overrides all we've seem so far. */ + enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING; + enum bptype bptype; + if (bs->breakpoint_at == NULL) - /* I suspect this can happen if it was a momentary breakpoint - which has since been deleted. */ - continue; - if (bs->breakpoint_at->owner == NULL) - bs_class = bp_nostop; + { + /* I suspect this can happen if it was a momentary + breakpoint which has since been deleted. */ + bptype = bp_none; + } + else if (bs->breakpoint_at->owner == NULL) + bptype = bp_none; else - switch (bs->breakpoint_at->owner->type) + bptype = bs->breakpoint_at->owner->type; + + switch (bptype) { case bp_none: - continue; - + break; case bp_breakpoint: case bp_hardware_breakpoint: case bp_until: @@ -3434,12 +4217,12 @@ bpstat_what (bpstat bs) if (bs->stop) { if (bs->print) - bs_class = bp_noisy; + this_action = BPSTAT_WHAT_STOP_NOISY; else - bs_class = bp_silent; + this_action = BPSTAT_WHAT_STOP_SILENT; } else - bs_class = bp_nostop; + this_action = BPSTAT_WHAT_SINGLE; break; case bp_watchpoint: case bp_hardware_watchpoint: @@ -3448,74 +4231,125 @@ bpstat_what (bpstat bs) if (bs->stop) { if (bs->print) - bs_class = wp_noisy; + this_action = BPSTAT_WHAT_STOP_NOISY; else - bs_class = wp_silent; + this_action = BPSTAT_WHAT_STOP_SILENT; } else - /* There was a watchpoint, but we're not stopping. - This requires no further action. */ - bs_class = no_effect; + { + /* There was a watchpoint, but we're not stopping. + This requires no further action. */ + } break; case bp_longjmp: - bs_class = long_jump; + this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME; break; case bp_longjmp_resume: - bs_class = long_resume; + this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME; break; case bp_step_resume: if (bs->stop) + this_action = BPSTAT_WHAT_STEP_RESUME; + else { - bs_class = step_resume; + /* It is for the wrong frame. */ + this_action = BPSTAT_WHAT_SINGLE; } - else - /* It is for the wrong frame. */ - bs_class = bp_nostop; break; case bp_watchpoint_scope: - bs_class = bp_nostop; - break; - case bp_shlib_event: - bs_class = shlib_event; - break; - case bp_jit_event: - bs_class = jit_event; - break; case bp_thread_event: case bp_overlay_event: case bp_longjmp_master: - bs_class = bp_nostop; + case bp_std_terminate_master: + this_action = BPSTAT_WHAT_SINGLE; break; case bp_catchpoint: if (bs->stop) { if (bs->print) - bs_class = bp_noisy; + this_action = BPSTAT_WHAT_STOP_NOISY; else - bs_class = bp_silent; + this_action = BPSTAT_WHAT_STOP_SILENT; + } + else + { + /* There was a catchpoint, but we're not stopping. + This requires no further action. */ } + break; + case bp_shlib_event: + shlib_event = 1; + + /* If requested, stop when the dynamic linker notifies GDB + of events. This allows the user to get control and place + breakpoints in initializer routines for dynamically + loaded objects (among other things). */ + if (stop_on_solib_events) + this_action = BPSTAT_WHAT_STOP_NOISY; else - /* There was a catchpoint, but we're not stopping. - This requires no further action. */ - bs_class = no_effect; + this_action = BPSTAT_WHAT_SINGLE; + break; + case bp_jit_event: + jit_event = 1; + this_action = BPSTAT_WHAT_SINGLE; break; case bp_call_dummy: /* Make sure the action is stop (silent or noisy), so infrun.c pops the dummy frame. */ - bs_class = bp_silent; - retval.call_dummy = 1; + retval.call_dummy = STOP_STACK_DUMMY; + this_action = BPSTAT_WHAT_STOP_SILENT; + break; + case bp_std_terminate: + /* Make sure the action is stop (silent or noisy), + so infrun.c pops the dummy frame. */ + retval.call_dummy = STOP_STD_TERMINATE; + this_action = BPSTAT_WHAT_STOP_SILENT; break; case bp_tracepoint: + case bp_fast_tracepoint: + case bp_static_tracepoint: /* Tracepoint hits should not be reported back to GDB, and if one got through somehow, it should have been filtered out already. */ internal_error (__FILE__, __LINE__, - _("bpstat_what: bp_tracepoint encountered")); - break; + _("bpstat_what: tracepoint encountered")); + default: + internal_error (__FILE__, __LINE__, + _("bpstat_what: unhandled bptype %d"), (int) bptype); } - current_action = table[(int) bs_class][(int) current_action]; + + retval.main_action = max (retval.main_action, this_action); + } + + if (shlib_event) + { + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_shlib_event\n"); + + /* Check for any newly added shared libraries if we're supposed + to be adding them automatically. */ + + /* Switch terminal for any messages produced by + breakpoint_re_set. */ + target_terminal_ours_for_output (); + +#ifdef SOLIB_ADD + SOLIB_ADD (NULL, 0, ¤t_target, auto_solib_add); +#else + solib_add (NULL, 0, ¤t_target, auto_solib_add); +#endif + + target_terminal_inferior (); + } + + if (jit_event) + { + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n"); + + handle_jit_event (); } - retval.main_action = current_action; + return retval; } @@ -3527,20 +4361,41 @@ int bpstat_should_step (void) { struct breakpoint *b; + ALL_BREAKPOINTS (b) if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL) return 1; return 0; } +int +bpstat_causes_stop (bpstat bs) +{ + for (; bs != NULL; bs = bs->next) + if (bs->stop) + return 1; + + return 0; +} + +/* Print the LOC location out of the list of B->LOC locations. */ + static void print_breakpoint_location (struct breakpoint *b, struct bp_location *loc, char *wrap_indent, struct ui_stream *stb) { - if (b->source_file) + struct cleanup *old_chain = save_current_program_space (); + + if (loc != NULL && loc->shlib_disabled) + loc = NULL; + + if (loc != NULL) + set_current_program_space (loc->pspace); + + if (b->source_file && loc) { struct symbol *sym = find_pc_sect_function (loc->address, loc->section); @@ -3566,15 +4421,16 @@ static void print_breakpoint_location (struct breakpoint *b, ui_out_field_int (uiout, "line", b->line_number); } - else if (!b->loc) - { - ui_out_field_string (uiout, "pending", b->addr_string); - } - else + else if (loc) { - print_address_symbolic (loc->address, stb->stream, demangle, ""); + print_address_symbolic (loc->gdbarch, loc->address, stb->stream, + demangle, ""); ui_out_field_stream (uiout, "at", stb); } + else + ui_out_field_string (uiout, "pending", b->addr_string); + + do_cleanups (old_chain); } /* Print B to gdb_stdout. */ @@ -3583,10 +4439,10 @@ print_one_breakpoint_location (struct breakpoint *b, struct bp_location *loc, int loc_number, struct bp_location **last_loc, - int print_address_bits) + int print_address_bits, + int allflag) { struct command_line *l; - struct symbol *sym; struct ep_type_description { enum bptype type; @@ -3608,12 +4464,16 @@ print_one_breakpoint_location (struct breakpoint *b, {bp_step_resume, "step resume"}, {bp_watchpoint_scope, "watchpoint scope"}, {bp_call_dummy, "call dummy"}, + {bp_std_terminate, "std::terminate"}, {bp_shlib_event, "shlib events"}, {bp_thread_event, "thread events"}, {bp_overlay_event, "overlay events"}, {bp_longjmp_master, "longjmp master"}, + {bp_std_terminate_master, "std::terminate master"}, {bp_catchpoint, "catchpoint"}, {bp_tracepoint, "tracepoint"}, + {bp_fast_tracepoint, "fast tracepoint"}, + {bp_static_tracepoint, "static tracepoint"}, {bp_jit_event, "jit events"}, }; @@ -3738,11 +4598,15 @@ print_one_breakpoint_location (struct breakpoint *b, case bp_step_resume: case bp_watchpoint_scope: case bp_call_dummy: + case bp_std_terminate: case bp_shlib_event: case bp_thread_event: case bp_overlay_event: case bp_longjmp_master: + case bp_std_terminate_master: case bp_tracepoint: + case bp_fast_tracepoint: + case bp_static_tracepoint: case bp_jit_event: if (opts.addressprint) { @@ -3763,6 +4627,38 @@ print_one_breakpoint_location (struct breakpoint *b, break; } + + /* For backward compatibility, don't display inferiors unless there + are several. */ + if (loc != NULL + && !header_of_multiple + && (allflag + || (!gdbarch_has_global_breakpoints (target_gdbarch) + && (number_of_program_spaces () > 1 + || number_of_inferiors () > 1) + /* LOC is for existing B, it cannot be in moribund_locations and + thus having NULL OWNER. */ + && loc->owner->type != bp_catchpoint))) + { + struct inferior *inf; + int first = 1; + + for (inf = inferior_list; inf != NULL; inf = inf->next) + { + if (inf->pspace == loc->pspace) + { + if (first) + { + first = 0; + ui_out_text (uiout, " inf "); + } + else + ui_out_text (uiout, ", "); + ui_out_text (uiout, plongest (inf->num)); + } + } + } + if (!part_of_multiple) { if (b->thread != -1) @@ -3781,6 +4677,16 @@ print_one_breakpoint_location (struct breakpoint *b, ui_out_text (uiout, "\n"); + if (!part_of_multiple && b->static_trace_marker_id) + { + gdb_assert (b->type == bp_static_tracepoint); + + ui_out_text (uiout, "\tmarker id is "); + ui_out_field_string (uiout, "static-tracepoint-marker-string-id", + b->static_trace_marker_id); + ui_out_text (uiout, "\n"); + } + if (part_of_multiple && frame_id_p (b->frame_id)) { annotate_field (6); @@ -3798,7 +4704,7 @@ print_one_breakpoint_location (struct breakpoint *b, because the condition is an internal implementation detail that we do not want to expose to the user. */ annotate_field (7); - if (b->type == bp_tracepoint) + if (is_tracepoint (b)) ui_out_text (uiout, "\ttrace only if "); else ui_out_text (uiout, "\tstop only if "); @@ -3843,7 +4749,7 @@ print_one_breakpoint_location (struct breakpoint *b, ui_out_text (uiout, " hits\n"); } - l = b->commands; + l = b->commands ? b->commands->commands : NULL; if (!part_of_multiple && l) { struct cleanup *script_chain; @@ -3862,26 +4768,6 @@ print_one_breakpoint_location (struct breakpoint *b, ui_out_text (uiout, " \n"); } - if (!part_of_multiple && b->step_count) - { - annotate_field (11); - ui_out_text (uiout, "\tstep count "); - ui_out_field_int (uiout, "step", b->step_count); - ui_out_text (uiout, " \n"); - } - - if (!part_of_multiple && b->actions) - { - struct action_line *action; - annotate_field (12); - for (action = b->actions; action; action = action->next) - { - ui_out_text (uiout, " A\t"); - ui_out_text (uiout, action->action); - ui_out_text (uiout, "\n"); - } - } - if (ui_out_is_mi_like_p (uiout) && !part_of_multiple) { if (b->addr_string) @@ -3896,9 +4782,11 @@ print_one_breakpoint_location (struct breakpoint *b, static void print_one_breakpoint (struct breakpoint *b, - struct bp_location **last_loc, int print_address_bits) + struct bp_location **last_loc, int print_address_bits, + int allflag) { - print_one_breakpoint_location (b, NULL, 0, last_loc, print_address_bits); + print_one_breakpoint_location (b, NULL, 0, last_loc, + print_address_bits, allflag); /* If this breakpoint has custom print function, it's already printed. Otherwise, print individual @@ -3922,7 +4810,7 @@ print_one_breakpoint (struct breakpoint *b, int n = 1; for (loc = b->loc; loc; loc = loc->next, ++n) print_one_breakpoint_location (b, loc, n, last_loc, - print_address_bits); + print_address_bits, allflag); } } } @@ -3935,7 +4823,14 @@ breakpoint_address_bits (struct breakpoint *b) for (loc = b->loc; loc; loc = loc->next) { - int addr_bit = gdbarch_addr_bit (b->gdbarch); + int addr_bit; + + /* Software watchpoints that aren't watching memory don't have + an address to print. */ + if (b->type == bp_watchpoint && loc->watchpoint_type == -1) + continue; + + addr_bit = gdbarch_addr_bit (loc->gdbarch); if (addr_bit > print_address_bits) print_address_bits = addr_bit; } @@ -3954,12 +4849,14 @@ do_captured_breakpoint_query (struct ui_out *uiout, void *data) struct captured_breakpoint_query_args *args = data; struct breakpoint *b; struct bp_location *dummy_loc = NULL; + ALL_BREAKPOINTS (b) { if (args->bnum == b->number) { int print_address_bits = breakpoint_address_bits (b); - print_one_breakpoint (b, &dummy_loc, print_address_bits); + + print_one_breakpoint (b, &dummy_loc, print_address_bits, 0); return GDB_RC_OK; } } @@ -3970,6 +4867,7 @@ enum gdb_rc gdb_breakpoint_query (struct ui_out *uiout, int bnum, char **error_message) { struct captured_breakpoint_query_args args; + args.bnum = bnum; /* For the moment we don't trust print_one_breakpoint() to not throw an error. */ @@ -3989,19 +4887,19 @@ user_settable_breakpoint (const struct breakpoint *b) return (b->type == bp_breakpoint || b->type == bp_catchpoint || b->type == bp_hardware_breakpoint - || b->type == bp_tracepoint - || b->type == bp_watchpoint - || b->type == bp_read_watchpoint - || b->type == bp_access_watchpoint - || b->type == bp_hardware_watchpoint); + || is_tracepoint (b) + || is_watchpoint (b)); } /* Print information on user settable breakpoint (watchpoint, etc) - number BNUM. If BNUM is -1 print all user settable breakpoints. - If ALLFLAG is non-zero, include non- user settable breakpoints. */ + number BNUM. If BNUM is -1 print all user-settable breakpoints. + If ALLFLAG is non-zero, include non-user-settable breakpoints. If + FILTER is non-NULL, call it on each breakpoint and only include the + ones for which it returns non-zero. Return the total number of + breakpoints listed. */ -static void -breakpoint_1 (int bnum, int allflag) +static int +breakpoint_1 (int bnum, int allflag, int (*filter) (const struct breakpoint *)) { struct breakpoint *b; struct bp_location *last_loc = NULL; @@ -4019,6 +4917,10 @@ breakpoint_1 (int bnum, int allflag) if (bnum == -1 || bnum == b->number) { + /* If we have a filter, only list the breakpoints it accepts. */ + if (filter && !filter (b)) + continue; + if (allflag || user_settable_breakpoint (b)) { int addr_bit = breakpoint_address_bits (b); @@ -4069,24 +4971,35 @@ breakpoint_1 (int bnum, int allflag) annotate_breakpoints_table (); ALL_BREAKPOINTS (b) + { + QUIT; if (bnum == -1 || bnum == b->number) { + /* If we have a filter, only list the breakpoints it accepts. */ + if (filter && !filter (b)) + continue; + /* We only print out user settable breakpoints unless the allflag is set. */ if (allflag || user_settable_breakpoint (b)) - print_one_breakpoint (b, &last_loc, print_address_bits); + print_one_breakpoint (b, &last_loc, print_address_bits, allflag); } + } do_cleanups (bkpttbl_chain); if (nr_printable_breakpoints == 0) { - if (bnum == -1) - ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n"); - else - ui_out_message (uiout, 0, "No breakpoint or watchpoint number %d.\n", - bnum); + /* If there's a filter, let the caller decide how to report empty list. */ + if (!filter) + { + if (bnum == -1) + ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n"); + else + ui_out_message (uiout, 0, "No breakpoint or watchpoint number %d.\n", + bnum); + } } else { @@ -4097,8 +5010,29 @@ breakpoint_1 (int bnum, int allflag) /* FIXME? Should this be moved up so that it is only called when there have been breakpoints? */ annotate_breakpoints_table_end (); + + return nr_printable_breakpoints; } +/* Display the value of default-collect in a way that is generally + compatible with the breakpoint list. */ + +static void +default_collect_info (void) +{ + /* If it has no value (which is frequently the case), say nothing; a + message like "No default-collect." gets in user's face when it's + not wanted. */ + if (!*default_collect) + return; + + /* The following phrase lines up nicely with per-tracepoint collect + actions. */ + ui_out_text (uiout, "default collect "); + ui_out_field_string (uiout, "default-collect", default_collect); + ui_out_text (uiout, " \n"); +} + static void breakpoints_info (char *bnum_exp, int from_tty) { @@ -4107,7 +5041,28 @@ breakpoints_info (char *bnum_exp, int from_tty) if (bnum_exp) bnum = parse_and_eval_long (bnum_exp); - breakpoint_1 (bnum, 0); + breakpoint_1 (bnum, 0, NULL); + + default_collect_info (); +} + +static void +watchpoints_info (char *wpnum_exp, int from_tty) +{ + int wpnum = -1, num_printed; + + if (wpnum_exp) + wpnum = parse_and_eval_long (wpnum_exp); + + num_printed = breakpoint_1 (wpnum, 0, is_watchpoint); + + if (num_printed == 0) + { + if (wpnum == -1) + ui_out_message (uiout, 0, "No watchpoints.\n"); + else + ui_out_message (uiout, 0, "No watchpoint number %d.\n", wpnum); + } } static void @@ -4118,34 +5073,42 @@ maintenance_info_breakpoints (char *bnum_exp, int from_tty) if (bnum_exp) bnum = parse_and_eval_long (bnum_exp); - breakpoint_1 (bnum, 1); + breakpoint_1 (bnum, 1, NULL); + + default_collect_info (); } static int breakpoint_has_pc (struct breakpoint *b, + struct program_space *pspace, CORE_ADDR pc, struct obj_section *section) { struct bp_location *bl = b->loc; + for (; bl; bl = bl->next) { - if (bl->address == pc + if (bl->pspace == pspace + && bl->address == pc && (!overlay_debugging || bl->section == section)) return 1; } return 0; } -/* Print a message describing any breakpoints set at PC. */ +/* Print a message describing any breakpoints set at PC. This + concerns with logical breakpoints, so we match program spaces, not + address spaces. */ static void -describe_other_breakpoints (struct gdbarch *gdbarch, CORE_ADDR pc, +describe_other_breakpoints (struct gdbarch *gdbarch, + struct program_space *pspace, CORE_ADDR pc, struct obj_section *section, int thread) { int others = 0; struct breakpoint *b; ALL_BREAKPOINTS (b) - others += breakpoint_has_pc (b, pc, section); + others += breakpoint_has_pc (b, pspace, pc, section); if (others > 0) { if (others == 1) @@ -4153,7 +5116,7 @@ describe_other_breakpoints (struct gdbarch *gdbarch, CORE_ADDR pc, else /* if (others == ???) */ printf_filtered (_("Note: breakpoints ")); ALL_BREAKPOINTS (b) - if (breakpoint_has_pc (b, pc, section)) + if (breakpoint_has_pc (b, pspace, pc, section)) { others--; printf_filtered ("%d", b->number); @@ -4182,10 +5145,12 @@ describe_other_breakpoints (struct gdbarch *gdbarch, CORE_ADDR pc, for the `break' command with no arguments. */ void -set_default_breakpoint (int valid, CORE_ADDR addr, struct symtab *symtab, +set_default_breakpoint (int valid, struct program_space *pspace, + CORE_ADDR addr, struct symtab *symtab, int line) { default_breakpoint_valid = valid; + default_breakpoint_pspace = pspace; default_breakpoint_address = addr; default_breakpoint_symtab = symtab; default_breakpoint_line = line; @@ -4197,108 +5162,96 @@ set_default_breakpoint (int valid, CORE_ADDR addr, struct symtab *symtab, (or use it for any other purpose either). More specifically, each of the following breakpoint types will always - have a zero valued address and we don't want check_duplicates() to mark - breakpoints of any of these types to be a duplicate of an actual - breakpoint at address zero: + have a zero valued address and we don't want to mark breakpoints of any of + these types to be a duplicate of an actual breakpoint at address zero: bp_watchpoint - bp_hardware_watchpoint - bp_read_watchpoint - bp_access_watchpoint - bp_catchpoint */ + bp_catchpoint + +*/ static int breakpoint_address_is_meaningful (struct breakpoint *bpt) { enum bptype type = bpt->type; - return (type != bp_watchpoint - && type != bp_hardware_watchpoint - && type != bp_read_watchpoint - && type != bp_access_watchpoint - && type != bp_catchpoint); + return (type != bp_watchpoint && type != bp_catchpoint); } -/* Rescan breakpoints at the same address and section as BPT, - marking the first one as "first" and any others as "duplicates". - This is so that the bpt instruction is only inserted once. - If we have a permanent breakpoint at the same place as BPT, make - that one the official one, and the rest as duplicates. */ - -static void -check_duplicates_for (CORE_ADDR address, struct obj_section *section) -{ - struct bp_location *b; - int count = 0; - struct bp_location *perm_bp = 0; - - ALL_BP_LOCATIONS (b) - if (b->owner->enable_state != bp_disabled - && b->owner->enable_state != bp_call_disabled - && b->owner->enable_state != bp_startup_disabled - && b->enabled - && !b->shlib_disabled - && b->address == address /* address / overlay match */ - && (!overlay_debugging || b->section == section) - && breakpoint_address_is_meaningful (b->owner)) - { - /* Have we found a permanent breakpoint? */ - if (b->owner->enable_state == bp_permanent) - { - perm_bp = b; - break; - } - - count++; - b->duplicate = count > 1; - } +/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns + true if LOC1 and LOC2 represent the same watchpoint location. */ - /* If we found a permanent breakpoint at this address, go over the - list again and declare all the other breakpoints there (except - other permanent breakpoints) to be the duplicates. */ - if (perm_bp) - { - perm_bp->duplicate = 0; +static int +watchpoint_locations_match (struct bp_location *loc1, struct bp_location *loc2) +{ + /* Both of them must not be in moribund_locations. */ + gdb_assert (loc1->owner != NULL); + gdb_assert (loc2->owner != NULL); + + /* If the target can evaluate the condition expression in hardware, then we + we need to insert both watchpoints even if they are at the same place. + Otherwise the watchpoint will only trigger when the condition of whichever + watchpoint was inserted evaluates to true, not giving a chance for GDB to + check the condition of the other watchpoint. */ + if ((loc1->owner->cond_exp + && target_can_accel_watchpoint_condition (loc1->address, loc1->length, + loc1->watchpoint_type, + loc1->owner->cond_exp)) + || (loc2->owner->cond_exp + && target_can_accel_watchpoint_condition (loc2->address, loc2->length, + loc2->watchpoint_type, + loc2->owner->cond_exp))) + return 0; - /* Permanent breakpoint should always be inserted. */ - if (! perm_bp->inserted) - internal_error (__FILE__, __LINE__, - _("allegedly permanent breakpoint is not " - "actually inserted")); + /* Note that this checks the owner's type, not the location's. In + case the target does not support read watchpoints, but does + support access watchpoints, we'll have bp_read_watchpoint + watchpoints with hw_access locations. Those should be considered + duplicates of hw_read locations. The hw_read locations will + become hw_access locations later. */ + return (loc1->owner->type == loc2->owner->type + && loc1->pspace->aspace == loc2->pspace->aspace + && loc1->address == loc2->address + && loc1->length == loc2->length); +} - ALL_BP_LOCATIONS (b) - if (b != perm_bp) - { - if (b->owner->enable_state != bp_permanent - && b->owner->enable_state != bp_disabled - && b->owner->enable_state != bp_call_disabled - && b->owner->enable_state != bp_startup_disabled - && b->enabled && !b->shlib_disabled - && b->address == address /* address / overlay match */ - && (!overlay_debugging || b->section == section) - && breakpoint_address_is_meaningful (b->owner)) - { - if (b->inserted) - internal_error (__FILE__, __LINE__, - _("another breakpoint was inserted on top of " - "a permanent breakpoint")); +/* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the + same breakpoint location. In most targets, this can only be true + if ASPACE1 matches ASPACE2. On targets that have global + breakpoints, the address space doesn't really matter. */ - b->duplicate = 1; - } - } - } +static int +breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1, + struct address_space *aspace2, CORE_ADDR addr2) +{ + return ((gdbarch_has_global_breakpoints (target_gdbarch) + || aspace1 == aspace2) + && addr1 == addr2); } -static void -check_duplicates (struct breakpoint *bpt) +/* Assuming LOC1 and LOC2's types' have meaningful target addresses + (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2 + represent the same location. */ + +static int +breakpoint_locations_match (struct bp_location *loc1, struct bp_location *loc2) { - struct bp_location *bl = bpt->loc; + int hw_point1, hw_point2; - if (! breakpoint_address_is_meaningful (bpt)) - return; + /* Both of them must not be in moribund_locations. */ + gdb_assert (loc1->owner != NULL); + gdb_assert (loc2->owner != NULL); - for (; bl; bl = bl->next) - check_duplicates_for (bl->address, bl->section); + hw_point1 = is_hardware_watchpoint (loc1->owner); + hw_point2 = is_hardware_watchpoint (loc2->owner); + + if (hw_point1 != hw_point2) + return 0; + else if (hw_point1) + return watchpoint_locations_match (loc1, loc2); + else + return breakpoint_address_match (loc1->pspace->aspace, loc1->address, + loc2->pspace->aspace, loc2->address); } static void @@ -4364,7 +5317,7 @@ adjust_breakpoint_address (struct gdbarch *gdbarch, static struct bp_location * allocate_bp_location (struct breakpoint *bpt) { - struct bp_location *loc, *loc_p; + struct bp_location *loc; loc = xmalloc (sizeof (struct bp_location)); memset (loc, 0, sizeof (*loc)); @@ -4377,7 +5330,6 @@ allocate_bp_location (struct breakpoint *bpt) switch (bpt->type) { case bp_breakpoint: - case bp_tracepoint: case bp_until: case bp_finish: case bp_longjmp: @@ -4385,11 +5337,13 @@ allocate_bp_location (struct breakpoint *bpt) case bp_step_resume: case bp_watchpoint_scope: case bp_call_dummy: + case bp_std_terminate: case bp_shlib_event: case bp_thread_event: case bp_overlay_event: case bp_jit_event: case bp_longjmp_master: + case bp_std_terminate_master: loc->loc_type = bp_loc_software_breakpoint; break; case bp_hardware_breakpoint: @@ -4402,6 +5356,9 @@ allocate_bp_location (struct breakpoint *bpt) break; case bp_watchpoint: case bp_catchpoint: + case bp_tracepoint: + case bp_fast_tracepoint: + case bp_static_tracepoint: loc->loc_type = bp_loc_other; break; default: @@ -4413,6 +5370,18 @@ allocate_bp_location (struct breakpoint *bpt) static void free_bp_location (struct bp_location *loc) { + /* Be sure no bpstat's are pointing at it after it's been freed. */ + /* FIXME, how can we find all bpstat's? + We just check stop_bpstat for now. Note that we cannot just + remove bpstats pointing at bpt from the stop_bpstat list + entirely, as breakpoint commands are associated with the bpstat; + if we remove it here, then the later call to + bpstat_do_actions (&stop_bpstat); + in event-top.c won't do anything, and temporary breakpoints + with commands won't work. */ + + iterate_over_threads (bpstat_remove_bp_location_callback, loc); + if (loc->cond) xfree (loc->cond); @@ -4472,9 +5441,11 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch, static void set_breakpoint_location_function (struct bp_location *loc) { + gdb_assert (loc->owner != NULL); + if (loc->owner->type == bp_breakpoint || loc->owner->type == bp_hardware_breakpoint - || loc->owner->type == bp_tracepoint) + || is_tracepoint (loc->owner)) { find_pc_partial_function (loc->address, &(loc->function_name), NULL, NULL); @@ -4522,6 +5493,9 @@ set_raw_breakpoint (struct gdbarch *gdbarch, if (!loc_gdbarch) loc_gdbarch = b->gdbarch; + if (bptype != bp_catchpoint) + gdb_assert (sal.pspace != NULL); + /* Adjust the breakpoint's address prior to allocating a location. Once we call allocate_bp_location(), that mostly uninitialized location will be placed on the location chain. Adjustment of the @@ -4534,6 +5508,11 @@ set_raw_breakpoint (struct gdbarch *gdbarch, b->loc->gdbarch = loc_gdbarch; b->loc->requested_address = sal.pc; b->loc->address = adjusted_address; + b->loc->pspace = sal.pspace; + + /* Store the program space that was used to set the breakpoint, for + breakpoint resetting. */ + b->pspace = sal.pspace; if (sal.symtab == NULL) b->source_file = NULL; @@ -4556,6 +5535,7 @@ void make_breakpoint_permanent (struct breakpoint *b) { struct bp_location *bl; + b->enable_state = bp_permanent; /* By definition, permanent breakpoints are already present in the code. @@ -4581,9 +5561,11 @@ set_longjmp_breakpoint (int thread) longjmp "master" breakpoints. Here, we simply create momentary clones of those and enable them for the requested thread. */ ALL_BREAKPOINTS_SAFE (b, temp) - if (b->type == bp_longjmp_master) + if (b->pspace == current_program_space + && b->type == bp_longjmp_master) { struct breakpoint *clone = clone_momentary_breakpoint (b); + clone->type = bp_longjmp; clone->thread = thread; } @@ -4631,6 +5613,33 @@ disable_overlay_breakpoints (void) } } +/* Set an active std::terminate breakpoint for each std::terminate + master breakpoint. */ +void +set_std_terminate_breakpoint (void) +{ + struct breakpoint *b, *temp; + + ALL_BREAKPOINTS_SAFE (b, temp) + if (b->pspace == current_program_space + && b->type == bp_std_terminate_master) + { + struct breakpoint *clone = clone_momentary_breakpoint (b); + clone->type = bp_std_terminate; + } +} + +/* Delete all the std::terminate breakpoints. */ +void +delete_std_terminate_breakpoint (void) +{ + struct breakpoint *b, *temp; + + ALL_BREAKPOINTS_SAFE (b, temp) + if (b->type == bp_std_terminate) + delete_breakpoint (b); +} + struct breakpoint * create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address) { @@ -4654,7 +5663,8 @@ remove_thread_event_breakpoints (void) struct breakpoint *b, *temp; ALL_BREAKPOINTS_SAFE (b, temp) - if (b->type == bp_thread_event) + if (b->type == bp_thread_event + && b->loc->pspace == current_program_space) delete_breakpoint (b); } @@ -4690,7 +5700,8 @@ remove_solib_event_breakpoints (void) struct breakpoint *b, *temp; ALL_BREAKPOINTS_SAFE (b, temp) - if (b->type == bp_shlib_event) + if (b->type == bp_shlib_event + && b->loc->pspace == current_program_space) delete_breakpoint (b); } @@ -4710,24 +5721,28 @@ create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address) void disable_breakpoints_in_shlibs (void) { - struct bp_location *loc; + struct bp_location *loc, **locp_tmp; - ALL_BP_LOCATIONS (loc) + ALL_BP_LOCATIONS (loc, locp_tmp) { + /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */ struct breakpoint *b = loc->owner; + /* We apply the check to all breakpoints, including disabled for those with loc->duplicate set. This is so that when breakpoint becomes enabled, or the duplicate is removed, gdb will try to insert all breakpoints. If we don't set shlib_disabled here, we'll try to insert those breakpoints and fail. */ if (((b->type == bp_breakpoint) + || (b->type == bp_jit_event) || (b->type == bp_hardware_breakpoint) - || (b->type == bp_tracepoint)) + || (is_tracepoint (b))) + && loc->pspace == current_program_space && !loc->shlib_disabled #ifdef PC_SOLIB && PC_SOLIB (loc->address) #else - && solib_name_from_address (loc->address) + && solib_name_from_address (loc->pspace, loc->address) #endif ) { @@ -4742,7 +5757,7 @@ disable_breakpoints_in_shlibs (void) static void disable_breakpoints_in_unloaded_shlib (struct so_list *solib) { - struct bp_location *loc; + struct bp_location *loc, **locp_tmp; int disabled_shlib_breaks = 0; /* SunOS a.out shared libraries are always mapped, so do not @@ -4753,13 +5768,18 @@ disable_breakpoints_in_unloaded_shlib (struct so_list *solib) && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour) return; - ALL_BP_LOCATIONS (loc) + ALL_BP_LOCATIONS (loc, locp_tmp) { + /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */ struct breakpoint *b = loc->owner; + if ((loc->loc_type == bp_loc_hardware_breakpoint || loc->loc_type == bp_loc_software_breakpoint) + && solib->pspace == loc->pspace && !loc->shlib_disabled - && (b->type == bp_breakpoint || b->type == bp_hardware_breakpoint) + && (b->type == bp_breakpoint + || b->type == bp_jit_event + || b->type == bp_hardware_breakpoint) && solib_contains_address_p (solib, loc->address)) { loc->shlib_disabled = 1; @@ -4850,6 +5870,15 @@ print_mention_catch_fork (struct breakpoint *b) printf_filtered (_("Catchpoint %d (fork)"), b->number); } +/* Implement the "print_recreate" breakpoint_ops method for fork + catchpoints. */ + +static void +print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp) +{ + fprintf_unfiltered (fp, "catch fork"); +} + /* The breakpoint_ops structure to be used in fork catchpoints. */ static struct breakpoint_ops catch_fork_breakpoint_ops = @@ -4859,7 +5888,8 @@ static struct breakpoint_ops catch_fork_breakpoint_ops = breakpoint_hit_catch_fork, print_it_catch_fork, print_one_catch_fork, - print_mention_catch_fork + print_mention_catch_fork, + print_recreate_catch_fork }; /* Implement the "insert" breakpoint_ops method for vfork catchpoints. */ @@ -4931,6 +5961,15 @@ print_mention_catch_vfork (struct breakpoint *b) printf_filtered (_("Catchpoint %d (vfork)"), b->number); } +/* Implement the "print_recreate" breakpoint_ops method for vfork + catchpoints. */ + +static void +print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp) +{ + fprintf_unfiltered (fp, "catch vfork"); +} + /* The breakpoint_ops structure to be used in vfork catchpoints. */ static struct breakpoint_ops catch_vfork_breakpoint_ops = @@ -4940,7 +5979,8 @@ static struct breakpoint_ops catch_vfork_breakpoint_ops = breakpoint_hit_catch_vfork, print_it_catch_vfork, print_one_catch_vfork, - print_mention_catch_vfork + print_mention_catch_vfork, + print_recreate_catch_vfork }; /* Implement the "insert" breakpoint_ops method for syscall @@ -4957,11 +5997,13 @@ insert_catch_syscall (struct breakpoint *b) else { int i, iter; + for (i = 0; VEC_iterate (int, b->syscalls_to_be_caught, i, iter); i++) { int elem; + if (iter >= VEC_length (int, inf->syscalls_counts)) { int old_size = VEC_length (int, inf->syscalls_counts); @@ -4999,6 +6041,7 @@ remove_catch_syscall (struct breakpoint *b) else { int i, iter; + for (i = 0; VEC_iterate (int, b->syscalls_to_be_caught, i, iter); i++) @@ -5037,6 +6080,7 @@ breakpoint_hit_catch_syscall (struct breakpoint *b) if (b->syscalls_to_be_caught) { int i, iter; + for (i = 0; VEC_iterate (int, b->syscalls_to_be_caught, i, iter); i++) @@ -5118,6 +6162,7 @@ print_one_catch_syscall (struct breakpoint *b, { int i, iter; char *text = xstrprintf ("%s", ""); + for (i = 0; VEC_iterate (int, b->syscalls_to_be_caught, i, iter); i++) @@ -5179,6 +6224,33 @@ print_mention_catch_syscall (struct breakpoint *b) b->number); } +/* Implement the "print_recreate" breakpoint_ops method for syscall + catchpoints. */ + +static void +print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp) +{ + fprintf_unfiltered (fp, "catch syscall"); + + if (b->syscalls_to_be_caught) + { + int i, iter; + + for (i = 0; + VEC_iterate (int, b->syscalls_to_be_caught, i, iter); + i++) + { + struct syscall s; + + get_syscall_by_number (iter, &s); + if (s.name) + fprintf_unfiltered (fp, " %s", s.name); + else + fprintf_unfiltered (fp, " %d", s.number); + } + } +} + /* The breakpoint_ops structure to be used in syscall catchpoints. */ static struct breakpoint_ops catch_syscall_breakpoint_ops = @@ -5188,7 +6260,8 @@ static struct breakpoint_ops catch_syscall_breakpoint_ops = breakpoint_hit_catch_syscall, print_it_catch_syscall, print_one_catch_syscall, - print_mention_catch_syscall + print_mention_catch_syscall, + print_recreate_catch_syscall }; /* Returns non-zero if 'b' is a syscall catchpoint. */ @@ -5218,6 +6291,7 @@ create_catchpoint_without_mention (struct gdbarch *gdbarch, int tempflag, struct breakpoint *b; init_sal (&sal); + sal.pspace = current_program_space; b = set_raw_breakpoint (gdbarch, sal, bp_catchpoint); set_breakpoint_count (breakpoint_count + 1); @@ -5323,6 +6397,15 @@ print_mention_catch_exec (struct breakpoint *b) printf_filtered (_("Catchpoint %d (exec)"), b->number); } +/* Implement the "print_recreate" breakpoint_ops method for exec + catchpoints. */ + +static void +print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp) +{ + fprintf_unfiltered (fp, "catch exec"); +} + static struct breakpoint_ops catch_exec_breakpoint_ops = { insert_catch_exec, @@ -5330,7 +6413,8 @@ static struct breakpoint_ops catch_exec_breakpoint_ops = breakpoint_hit_catch_exec, print_it_catch_exec, print_one_catch_exec, - print_mention_catch_exec + print_mention_catch_exec, + print_recreate_catch_exec }; static void @@ -5377,9 +6461,7 @@ hw_watchpoint_used_count (enum bptype type, int *other_type_used) { if (b->type == type) i++; - else if ((b->type == bp_hardware_watchpoint - || b->type == bp_read_watchpoint - || b->type == bp_access_watchpoint)) + else if (is_hardware_watchpoint (b)) *other_type_used = 1; } } @@ -5393,11 +6475,7 @@ disable_watchpoints_before_interactive_call_start (void) ALL_BREAKPOINTS (b) { - if (((b->type == bp_watchpoint) - || (b->type == bp_hardware_watchpoint) - || (b->type == bp_read_watchpoint) - || (b->type == bp_access_watchpoint)) - && breakpoint_enabled (b)) + if (is_watchpoint (b) && breakpoint_enabled (b)) { b->enable_state = bp_call_disabled; update_global_location_list (0); @@ -5412,11 +6490,7 @@ enable_watchpoints_after_interactive_call_stop (void) ALL_BREAKPOINTS (b) { - if (((b->type == bp_watchpoint) - || (b->type == bp_hardware_watchpoint) - || (b->type == bp_read_watchpoint) - || (b->type == bp_access_watchpoint)) - && (b->enable_state == bp_call_disabled)) + if (is_watchpoint (b) && b->enable_state == bp_call_disabled) { b->enable_state = bp_enabled; update_global_location_list (1); @@ -5432,6 +6506,9 @@ disable_breakpoints_before_startup (void) ALL_BREAKPOINTS (b) { + if (b->pspace != current_program_space) + continue; + if ((b->type == bp_breakpoint || b->type == bp_hardware_breakpoint) && breakpoint_enabled (b)) @@ -5444,7 +6521,7 @@ disable_breakpoints_before_startup (void) if (found) update_global_location_list (0); - executing_startup = 1; + current_program_space->executing_startup = 1; } void @@ -5453,10 +6530,13 @@ enable_breakpoints_after_startup (void) struct breakpoint *b; int found = 0; - executing_startup = 0; + current_program_space->executing_startup = 0; ALL_BREAKPOINTS (b) { + if (b->pspace != current_program_space) + continue; + if ((b->type == bp_breakpoint || b->type == bp_hardware_breakpoint) && b->enable_state == bp_startup_disabled) @@ -5521,6 +6601,7 @@ clone_momentary_breakpoint (struct breakpoint *orig) copy->loc->requested_address = orig->loc->requested_address; copy->loc->address = orig->loc->address; copy->loc->section = orig->loc->section; + copy->loc->pspace = orig->loc->pspace; if (orig->source_file == NULL) copy->source_file = NULL; @@ -5530,6 +6611,7 @@ clone_momentary_breakpoint (struct breakpoint *orig) copy->line_number = orig->line_number; copy->frame_id = orig->frame_id; copy->thread = orig->thread; + copy->pspace = orig->pspace; copy->enable_state = bp_enabled; copy->disposition = disp_donttouch; @@ -5643,6 +6725,26 @@ mention (struct breakpoint *b) printf_filtered (_(" %d"), b->number); say_where = 1; break; + case bp_fast_tracepoint: + if (ui_out_is_mi_like_p (uiout)) + { + say_where = 0; + break; + } + printf_filtered (_("Fast tracepoint")); + printf_filtered (_(" %d"), b->number); + say_where = 1; + break; + case bp_static_tracepoint: + if (ui_out_is_mi_like_p (uiout)) + { + say_where = 0; + break; + } + printf_filtered (_("Static tracepoint")); + printf_filtered (_(" %d"), b->number); + say_where = 1; + break; case bp_until: case bp_finish: @@ -5650,12 +6752,14 @@ mention (struct breakpoint *b) case bp_longjmp_resume: case bp_step_resume: case bp_call_dummy: + case bp_std_terminate: case bp_watchpoint_scope: case bp_shlib_event: case bp_thread_event: case bp_overlay_event: case bp_jit_event: case bp_longjmp_master: + case bp_std_terminate_master: break; } @@ -5712,6 +6816,8 @@ add_location_to_breakpoint (struct breakpoint *b, loc->requested_address = sal->pc; loc->address = adjust_breakpoint_address (loc->gdbarch, loc->requested_address, b->type); + loc->pspace = sal->pspace; + gdb_assert (loc->pspace != NULL); loc->section = sal->section; set_breakpoint_location_function (loc); @@ -5746,7 +6852,10 @@ bp_loc_is_permanent (struct bp_location *loc) /* Enable the automatic memory restoration from breakpoints while we read the memory. Otherwise we could say about our temporary breakpoints they are permanent. */ - cleanup = make_show_memory_breakpoints_cleanup (0); + cleanup = save_current_space_and_thread (); + + switch_to_program_space_and_thread (loc->pspace); + make_show_memory_breakpoints_cleanup (0); if (target_read_memory (loc->address, target_mem, len) == 0 && memcmp (target_mem, brk, len) == 0) @@ -5764,12 +6873,12 @@ bp_loc_is_permanent (struct bp_location *loc) as condition expression. */ static void -create_breakpoint (struct gdbarch *gdbarch, - struct symtabs_and_lines sals, char *addr_string, - char *cond_string, - enum bptype type, enum bpdisp disposition, - int thread, int task, int ignore_count, - struct breakpoint_ops *ops, int from_tty, int enabled) +create_breakpoint_sal (struct gdbarch *gdbarch, + struct symtabs_and_lines sals, char *addr_string, + char *cond_string, + enum bptype type, enum bpdisp disposition, + int thread, int task, int ignore_count, + struct breakpoint_ops *ops, int from_tty, int enabled) { struct breakpoint *b = NULL; int i; @@ -5786,6 +6895,8 @@ create_breakpoint (struct gdbarch *gdbarch, error (_("Hardware breakpoints used exceeds limit.")); } + gdb_assert (sals.nelts > 0); + for (i = 0; i < sals.nelts; ++i) { struct symtab_and_line sal = sals.sals[i]; @@ -5798,7 +6909,7 @@ create_breakpoint (struct gdbarch *gdbarch, loc_gdbarch = gdbarch; describe_other_breakpoints (loc_gdbarch, - sal.pc, sal.section, thread); + sal.pspace, sal.pc, sal.section, thread); } if (i == 0) @@ -5813,8 +6924,48 @@ create_breakpoint (struct gdbarch *gdbarch, b->ignore_count = ignore_count; b->enable_state = enabled ? bp_enabled : bp_disabled; b->disposition = disposition; + b->pspace = sals.sals[0].pspace; + + if (type == bp_static_tracepoint) + { + struct static_tracepoint_marker marker; + + if (is_marker_spec (addr_string)) + { + /* We already know the marker exists, otherwise, we + wouldn't see a sal for it. */ + char *p = &addr_string[3]; + char *endp; + char *marker_str; + int i; + + while (*p == ' ' || *p == '\t') + p++; + + endp = p; + while (*endp != ' ' && *endp != '\t' && *endp != '\0') + endp++; + + marker_str = savestring (p, endp - p); + b->static_trace_marker_id = marker_str; - if (enabled && executing_startup + printf_filtered (_("Probed static tracepoint marker \"%s\"\n"), + b->static_trace_marker_id); + } + else if (target_static_tracepoint_marker_at (sal.pc, &marker)) + { + b->static_trace_marker_id = xstrdup (marker.str_id); + release_static_tracepoint_marker (&marker); + + printf_filtered (_("Probed static tracepoint marker \"%s\"\n"), + b->static_trace_marker_id); + } + else + warning (_("\ +Couldn't determine the static tracepoint marker to probe")); + } + + if (enabled && b->pspace->executing_startup && (b->type == bp_breakpoint || b->type == bp_hardware_breakpoint)) b->enable_state = bp_startup_disabled; @@ -5864,20 +7015,19 @@ remove_sal (struct symtabs_and_lines *sal, int index_to_remove) --(sal->nelts); } -/* If appropriate, obtains all sals that correspond - to the same file and line as SAL. This is done - only if SAL does not have explicit PC and has - line and file information. If we got just a single - expanded sal, return the original. +/* If appropriate, obtains all sals that correspond to the same file + and line as SAL, in all program spaces. Users debugging with IDEs, + will want to set a breakpoint at foo.c:line, and not really care + about program spaces. This is done only if SAL does not have + explicit PC and has line and file information. If we got just a + single expanded sal, return the original. - Otherwise, if SAL.explicit_line is not set, filter out - all sals for which the name of enclosing function - is different from SAL. This makes sure that if we have - breakpoint originally set in template instantiation, say - foo(), we won't expand SAL to locations at the same - line in all existing instantiations of 'foo'. + Otherwise, if SAL.explicit_line is not set, filter out all sals for + which the name of enclosing function is different from SAL. This + makes sure that if we have breakpoint originally set in template + instantiation, say foo(), we won't expand SAL to locations at + the same line in all existing instantiations of 'foo'. */ -*/ static struct symtabs_and_lines expand_line_sal_maybe (struct symtab_and_line sal) { @@ -5886,6 +7036,7 @@ expand_line_sal_maybe (struct symtab_and_line sal) char *original_function = NULL; int found; int i; + struct cleanup *old_chain; /* If we have explicit pc, don't expand. If we have no line number, we can't expand. */ @@ -5898,18 +7049,27 @@ expand_line_sal_maybe (struct symtab_and_line sal) } sal.pc = 0; + + old_chain = save_current_space_and_thread (); + + switch_to_program_space_and_thread (sal.pspace); + find_pc_partial_function (original_pc, &original_function, NULL, NULL); - + + /* Note that expand_line_sal visits *all* program spaces. */ expanded = expand_line_sal (sal); + if (expanded.nelts == 1) { - /* We had one sal, we got one sal. Without futher - processing, just return the original sal. */ + /* We had one sal, we got one sal. Return that sal, adjusting it + past the function prologue if necessary. */ xfree (expanded.sals); expanded.nelts = 1; expanded.sals = xmalloc (sizeof (struct symtab_and_line)); sal.pc = original_pc; expanded.sals[0] = sal; + skip_prologue_sal (&expanded.sals[0]); + do_cleanups (old_chain); return expanded; } @@ -5920,6 +7080,11 @@ expand_line_sal_maybe (struct symtab_and_line sal) { CORE_ADDR pc = expanded.sals[i].pc; char *this_function; + + /* We need to switch threads as well since we're about to + read memory. */ + switch_to_program_space_and_thread (expanded.sals[i].pspace); + if (find_pc_partial_function (pc, &this_function, &func_addr, &func_end)) { @@ -5929,41 +7094,16 @@ expand_line_sal_maybe (struct symtab_and_line sal) remove_sal (&expanded, i); --i; } - else if (func_addr == pc) - { - /* We're at beginning of a function, and should - skip prologue. */ - struct symbol *sym = find_pc_function (pc); - if (sym) - expanded.sals[i] = find_function_start_sal (sym, 1); - else - { - /* Since find_pc_partial_function returned true, - we should really always find the section here. */ - struct obj_section *section = find_pc_section (pc); - if (section) - { - struct gdbarch *gdbarch - = get_objfile_arch (section->objfile); - expanded.sals[i].pc - = gdbarch_skip_prologue (gdbarch, pc); - } - } - } } } } - else - { - for (i = 0; i < expanded.nelts; ++i) - { - /* If this SAL corresponds to a breakpoint inserted using a - line number, then skip the function prologue if necessary. */ - skip_prologue_sal (&expanded.sals[i]); - } - } - + /* Skip the function prologue if necessary. */ + for (i = 0; i < expanded.nelts; ++i) + skip_prologue_sal (&expanded.sals[i]); + + do_cleanups (old_chain); + if (expanded.nelts <= 1) { /* This is un ugly workaround. If we get zero @@ -6008,23 +7148,24 @@ expand_line_sal_maybe (struct symtab_and_line sal) COND and SALS arrays and each of those arrays contents. */ static void -create_breakpoints (struct gdbarch *gdbarch, - struct symtabs_and_lines sals, char **addr_string, - char *cond_string, - enum bptype type, enum bpdisp disposition, - int thread, int task, int ignore_count, - struct breakpoint_ops *ops, int from_tty, - int enabled) +create_breakpoints_sal (struct gdbarch *gdbarch, + struct symtabs_and_lines sals, char **addr_string, + char *cond_string, + enum bptype type, enum bpdisp disposition, + int thread, int task, int ignore_count, + struct breakpoint_ops *ops, int from_tty, + int enabled) { int i; + for (i = 0; i < sals.nelts; ++i) { struct symtabs_and_lines expanded = expand_line_sal_maybe (sals.sals[i]); - create_breakpoint (gdbarch, expanded, addr_string[i], - cond_string, type, disposition, - thread, task, ignore_count, ops, from_tty, enabled); + create_breakpoint_sal (gdbarch, expanded, addr_string[i], + cond_string, type, disposition, + thread, task, ignore_count, ops, from_tty, enabled); } } @@ -6040,6 +7181,7 @@ parse_breakpoint_sals (char **address, int *not_found_ptr) { char *addr_start = *address; + *addr_string = NULL; /* If no arg given, or if first arg is 'if ', use the default breakpoint. */ @@ -6049,12 +7191,14 @@ parse_breakpoint_sals (char **address, if (default_breakpoint_valid) { struct symtab_and_line sal; + init_sal (&sal); /* initialize to zeroes */ sals->sals = (struct symtab_and_line *) xmalloc (sizeof (struct symtab_and_line)); sal.pc = default_breakpoint_address; sal.line = default_breakpoint_line; sal.symtab = default_breakpoint_symtab; + sal.pspace = default_breakpoint_pspace; sal.section = find_pc_overlay (sal.pc); /* "break" without arguments is equivalent to "break *PC" where PC is @@ -6098,11 +7242,13 @@ parse_breakpoint_sals (char **address, if (addr_start != (*address)) { int i; + for (i = 0; i < sals->nelts; i++) { /* Add the string if not present. */ if ((*addr_string)[i] == NULL) - (*addr_string)[i] = savestring (addr_start, (*address) - addr_start); + (*addr_string)[i] = savestring (addr_start, + (*address) - addr_start); } } } @@ -6112,14 +7258,46 @@ parse_breakpoint_sals (char **address, inserted as a breakpoint. If it can't throw an error. */ static void -breakpoint_sals_to_pc (struct symtabs_and_lines *sals, - char *address) +breakpoint_sals_to_pc (struct symtabs_and_lines *sals) { int i; + for (i = 0; i < sals->nelts; i++) resolve_sal_pc (&sals->sals[i]); } +/* Fast tracepoints may have restrictions on valid locations. For + instance, a fast tracepoint using a jump instead of a trap will + likely have to overwrite more bytes than a trap would, and so can + only be placed where the instruction is longer than the jump, or a + multi-instruction sequence does not have a jump into the middle of + it, etc. */ + +static void +check_fast_tracepoint_sals (struct gdbarch *gdbarch, + struct symtabs_and_lines *sals) +{ + int i, rslt; + struct symtab_and_line *sal; + char *msg; + struct cleanup *old_chain; + + for (i = 0; i < sals->nelts; i++) + { + sal = &sals->sals[i]; + + rslt = gdbarch_fast_tracepoint_valid_at (gdbarch, sal->pc, + NULL, &msg); + old_chain = make_cleanup (xfree, msg); + + if (!rslt) + error (_("May not have a fast tracepoint at 0x%s%s"), + paddress (gdbarch, sal->pc), (msg ? msg : "")); + + do_cleanups (old_chain); + } +} + static void do_captured_parse_breakpoint (struct ui_out *ui, void *data) { @@ -6147,6 +7325,7 @@ find_condition_and_thread (char *tok, CORE_ADDR pc, int toklen; char *cond_start = NULL; char *cond_end = NULL; + while (*tok == ' ' || *tok == '\t') tok++; @@ -6190,39 +7369,89 @@ find_condition_and_thread (char *tok, CORE_ADDR pc, if (tok == tmptok) error (_("Junk after task keyword.")); if (!valid_task_id (*task)) - error (_("Unknown task %d\n"), *task); + error (_("Unknown task %d."), *task); } else error (_("Junk at end of arguments.")); } } -/* Set a breakpoint. This function is shared between - CLI and MI functions for setting a breakpoint. - This function has two major modes of operations, - selected by the PARSE_CONDITION_AND_THREAD parameter. - If non-zero, the function will parse arg, extracting - breakpoint location, address and thread. Otherwise, - ARG is just the location of breakpoint, with condition - and thread specified by the COND_STRING and THREAD - parameters. */ +/* Decode a static tracepoint marker spec. */ + +static struct symtabs_and_lines +decode_static_tracepoint_spec (char **arg_p) +{ + VEC(static_tracepoint_marker_p) *markers = NULL; + struct symtabs_and_lines sals; + struct symtab_and_line sal; + struct symbol *sym; + struct cleanup *old_chain; + char *p = &(*arg_p)[3]; + char *endp; + char *marker_str; + int i; + + while (*p == ' ' || *p == '\t') + p++; + + endp = p; + while (*endp != ' ' && *endp != '\t' && *endp != '\0') + endp++; + + marker_str = savestring (p, endp - p); + old_chain = make_cleanup (xfree, marker_str); + + markers = target_static_tracepoint_markers_by_strid (marker_str); + if (VEC_empty(static_tracepoint_marker_p, markers)) + error (_("No known static tracepoint marker named %s"), marker_str); + + sals.nelts = VEC_length(static_tracepoint_marker_p, markers); + sals.sals = xmalloc (sizeof *sals.sals * sals.nelts); + + for (i = 0; i < sals.nelts; i++) + { + struct static_tracepoint_marker *marker; + + marker = VEC_index (static_tracepoint_marker_p, markers, i); + + init_sal (&sals.sals[i]); + + sals.sals[i] = find_pc_line (marker->address, 0); + sals.sals[i].pc = marker->address; + + release_static_tracepoint_marker (marker); + } + + do_cleanups (old_chain); + + *arg_p = endp; + return sals; +} + +/* Set a breakpoint. This function is shared between CLI and MI + functions for setting a breakpoint. This function has two major + modes of operations, selected by the PARSE_CONDITION_AND_THREAD + parameter. If non-zero, the function will parse arg, extracting + breakpoint location, address and thread. Otherwise, ARG is just the + location of breakpoint, with condition and thread specified by the + COND_STRING and THREAD parameters. Returns true if any breakpoint + was created; false otherwise. */ -static void -break_command_really (struct gdbarch *gdbarch, - char *arg, char *cond_string, int thread, - int parse_condition_and_thread, - int tempflag, int hardwareflag, int traceflag, - int ignore_count, - enum auto_boolean pending_break_support, - struct breakpoint_ops *ops, - int from_tty, - int enabled) +int +create_breakpoint (struct gdbarch *gdbarch, + char *arg, char *cond_string, int thread, + int parse_condition_and_thread, + int tempflag, enum bptype type_wanted, + int ignore_count, + enum auto_boolean pending_break_support, + struct breakpoint_ops *ops, + int from_tty, + int enabled) { struct gdb_exception e; struct symtabs_and_lines sals; struct symtab_and_line pending_sal; char *copy_arg; - char *err_msg; char *addr_start = arg; char **addr_string; struct cleanup *old_chain; @@ -6231,8 +7460,8 @@ break_command_really (struct gdbarch *gdbarch, int i; int pending = 0; int not_found = 0; - enum bptype type_wanted; int task = 0; + int prev_bkpt_count = breakpoint_count; sals.sals = NULL; sals.nelts = 0; @@ -6243,6 +7472,19 @@ break_command_really (struct gdbarch *gdbarch, parse_args.addr_string_p = &addr_string; parse_args.not_found_ptr = ¬_found; + if (type_wanted == bp_static_tracepoint && is_marker_spec (arg)) + { + int i; + + sals = decode_static_tracepoint_spec (&arg); + + copy_arg = savestring (addr_start, arg - addr_start); + addr_string = xcalloc (sals.nelts, sizeof (char **)); + for (i = 0; i < sals.nelts; i++) + addr_string[i] = xstrdup (copy_arg); + goto done; + } + e = catch_exception (uiout, do_captured_parse_breakpoint, &parse_args, RETURN_MASK_ALL); @@ -6268,7 +7510,7 @@ break_command_really (struct gdbarch *gdbarch, selects no, then simply return the error code. */ if (pending_break_support == AUTO_BOOLEAN_AUTO && !nquery ("Make breakpoint pending on future shared library load? ")) - return; + return 0; /* At this point, either the user was queried about setting a pending breakpoint and selected yes, or pending @@ -6286,9 +7528,11 @@ break_command_really (struct gdbarch *gdbarch, } default: if (!sals.nelts) - return; + return 0; } + done: + /* Create a chain of things that always need to be cleaned up. */ old_chain = make_cleanup (null_cleanup, 0); @@ -6318,11 +7562,11 @@ break_command_really (struct gdbarch *gdbarch, /* Resolve all line numbers to PC's and verify that the addresses are ok for the target. */ if (!pending) - breakpoint_sals_to_pc (&sals, addr_start); + breakpoint_sals_to_pc (&sals); - type_wanted = (traceflag - ? bp_tracepoint - : (hardwareflag ? bp_hardware_breakpoint : bp_breakpoint)); + /* Fast tracepoints may have additional restrictions on location. */ + if (type_wanted == bp_fast_tracepoint) + check_fast_tracepoint_sals (gdbarch, &sals); /* Verify that condition can be parsed, before setting any breakpoints. Allocate a separate condition expression for each @@ -6351,13 +7595,58 @@ break_command_really (struct gdbarch *gdbarch, make_cleanup (xfree, cond_string); } } - create_breakpoints (gdbarch, sals, addr_string, cond_string, type_wanted, - tempflag ? disp_del : disp_donttouch, - thread, task, ignore_count, ops, from_tty, enabled); + + /* If the user is creating a static tracepoint by marker id + (strace -m MARKER_ID), then store the sals index, so that + breakpoint_re_set can try to match up which of the newly + found markers corresponds to this one, and, don't try to + expand multiple locations for each sal, given than SALS + already should contain all sals for MARKER_ID. */ + if (type_wanted == bp_static_tracepoint + && is_marker_spec (addr_string[0])) + { + int i; + + for (i = 0; i < sals.nelts; ++i) + { + struct symtabs_and_lines expanded; + struct breakpoint *tp; + struct cleanup *old_chain; + + expanded.nelts = 1; + expanded.sals = xmalloc (sizeof (struct symtab_and_line)); + expanded.sals[0] = sals.sals[i]; + old_chain = make_cleanup (xfree, expanded.sals); + + create_breakpoint_sal (gdbarch, expanded, addr_string[i], + cond_string, type_wanted, + tempflag ? disp_del : disp_donttouch, + thread, task, ignore_count, ops, + from_tty, enabled); + + do_cleanups (old_chain); + + /* Get the tracepoint we just created. */ + tp = get_breakpoint (breakpoint_count); + gdb_assert (tp != NULL); + + /* Given that its possible to have multiple markers with + the same string id, if the user is creating a static + tracepoint by marker id ("strace -m MARKER_ID"), then + store the sals index, so that breakpoint_re_set can + try to match up which of the newly found markers + corresponds to this one */ + tp->static_trace_marker_id_idx = i; + } + } + else + create_breakpoints_sal (gdbarch, sals, addr_string, cond_string, + type_wanted, tempflag ? disp_del : disp_donttouch, + thread, task, ignore_count, ops, from_tty, + enabled); } else { - struct symtab_and_line sal = {0}; struct breakpoint *b; make_cleanup (xfree, copy_arg); @@ -6373,8 +7662,9 @@ break_command_really (struct gdbarch *gdbarch, b->condition_not_parsed = 1; b->ops = ops; b->enable_state = enabled ? bp_enabled : bp_disabled; + b->pspace = current_program_space; - if (enabled && executing_startup + if (enabled && b->pspace->executing_startup && (b->type == bp_breakpoint || b->type == bp_hardware_breakpoint)) b->enable_state = bp_startup_disabled; @@ -6383,8 +7673,12 @@ break_command_really (struct gdbarch *gdbarch, } if (sals.nelts > 1) - warning (_("Multiple breakpoints were set.\n" - "Use the \"delete\" command to delete unwanted breakpoints.")); + { + warning (_("Multiple breakpoints were set.\n" + "Use the \"delete\" command to delete unwanted breakpoints.")); + prev_breakpoint_count = prev_bkpt_count; + } + /* That's it. Discard the cleanups for data inserted into the breakpoint. */ discard_cleanups (bkpt_chain); @@ -6393,6 +7687,8 @@ break_command_really (struct gdbarch *gdbarch, /* error call may happen here - have BKPT_CHAIN already discarded. */ update_global_location_list (1); + + return 1; } /* Set a breakpoint. @@ -6405,63 +7701,23 @@ break_command_really (struct gdbarch *gdbarch, static void break_command_1 (char *arg, int flag, int from_tty) { - int hardwareflag = flag & BP_HARDWAREFLAG; int tempflag = flag & BP_TEMPFLAG; + enum bptype type_wanted = (flag & BP_HARDWAREFLAG + ? bp_hardware_breakpoint + : bp_breakpoint); - break_command_really (get_current_arch (), - arg, - NULL, 0, 1 /* parse arg */, - tempflag, hardwareflag, 0 /* traceflag */, - 0 /* Ignore count */, - pending_break_support, - NULL /* breakpoint_ops */, - from_tty, - 1 /* enabled */); + create_breakpoint (get_current_arch (), + arg, + NULL, 0, 1 /* parse arg */, + tempflag, type_wanted, + 0 /* Ignore count */, + pending_break_support, + NULL /* breakpoint_ops */, + from_tty, + 1 /* enabled */); } -void -set_breakpoint (struct gdbarch *gdbarch, - char *address, char *condition, - int hardwareflag, int tempflag, - int thread, int ignore_count, - int pending, int enabled) -{ - break_command_really (gdbarch, - address, condition, thread, - 0 /* condition and thread are valid. */, - tempflag, hardwareflag, 0 /* traceflag */, - ignore_count, - pending - ? AUTO_BOOLEAN_TRUE : AUTO_BOOLEAN_FALSE, - NULL, 0, enabled); -} - -/* Adjust SAL to the first instruction past the function prologue. - The end of the prologue is determined using the line table from - the debugging information. explicit_pc and explicit_line are - not modified. - - If SAL is already past the prologue, then do nothing. */ - -static void -skip_prologue_sal (struct symtab_and_line *sal) -{ - struct symbol *sym = find_pc_function (sal->pc); - struct symtab_and_line start_sal; - - if (sym == NULL) - return; - - start_sal = find_function_start_sal (sym, 1); - if (sal->pc < start_sal.pc) - { - start_sal.explicit_line = sal->explicit_line; - start_sal.explicit_pc = sal->explicit_pc; - *sal = start_sal; - } -} - /* Helper function for break_command_1 and disassemble_command. */ void @@ -6479,12 +7735,7 @@ resolve_sal_pc (struct symtab_and_line *sal) /* If this SAL corresponds to a breakpoint inserted using a line number, then skip the function prologue if necessary. */ if (sal->explicit_line) - { - /* Preserve the original line number. */ - int saved_line = sal->line; - skip_prologue_sal (sal); - sal->line = saved_line; - } + skip_prologue_sal (sal); } if (sal->section == 0 && sal->symtab != NULL) @@ -6510,10 +7761,15 @@ resolve_sal_pc (struct symtab_and_line *sal) source). */ struct minimal_symbol *msym; + struct cleanup *old_chain = save_current_space_and_thread (); + + switch_to_program_space_and_thread (sal->pspace); msym = lookup_minimal_symbol_by_pc (sal->pc); if (msym) sal->section = SYMBOL_OBJ_SECTION (msym); + + do_cleanups (old_chain); } } } @@ -6616,17 +7872,120 @@ stopat_command (char *arg, int from_tty) break_command_1 (arg, 0, from_tty); } +/* Return non-zero if EXP is verified as constant. Returned zero means EXP is + variable. Also the constant detection may fail for some constant + expressions and in such case still falsely return zero. */ +static int +watchpoint_exp_is_const (const struct expression *exp) +{ + int i = exp->nelts; + + while (i > 0) + { + int oplenp, argsp; + + /* We are only interested in the descriptor of each element. */ + operator_length (exp, i, &oplenp, &argsp); + i -= oplenp; + + switch (exp->elts[i].opcode) + { + case BINOP_ADD: + case BINOP_SUB: + case BINOP_MUL: + case BINOP_DIV: + case BINOP_REM: + case BINOP_MOD: + case BINOP_LSH: + case BINOP_RSH: + case BINOP_LOGICAL_AND: + case BINOP_LOGICAL_OR: + case BINOP_BITWISE_AND: + case BINOP_BITWISE_IOR: + case BINOP_BITWISE_XOR: + case BINOP_EQUAL: + case BINOP_NOTEQUAL: + case BINOP_LESS: + case BINOP_GTR: + case BINOP_LEQ: + case BINOP_GEQ: + case BINOP_REPEAT: + case BINOP_COMMA: + case BINOP_EXP: + case BINOP_MIN: + case BINOP_MAX: + case BINOP_INTDIV: + case BINOP_CONCAT: + case BINOP_IN: + case BINOP_RANGE: + case TERNOP_COND: + case TERNOP_SLICE: + case TERNOP_SLICE_COUNT: + + case OP_LONG: + case OP_DOUBLE: + case OP_DECFLOAT: + case OP_LAST: + case OP_COMPLEX: + case OP_STRING: + case OP_BITSTRING: + case OP_ARRAY: + case OP_TYPE: + case OP_NAME: + case OP_OBJC_NSSTRING: + + case UNOP_NEG: + case UNOP_LOGICAL_NOT: + case UNOP_COMPLEMENT: + case UNOP_ADDR: + case UNOP_HIGH: + /* Unary, binary and ternary operators: We have to check their + operands. If they are constant, then so is the result of + that operation. For instance, if A and B are determined to be + constants, then so is "A + B". + + UNOP_IND is one exception to the rule above, because the value + of *ADDR is not necessarily a constant, even when ADDR is. */ + break; + + case OP_VAR_VALUE: + /* Check whether the associated symbol is a constant. + We use SYMBOL_CLASS rather than TYPE_CONST because it's + possible that a buggy compiler could mark a variable as constant + even when it is not, and TYPE_CONST would return true in this + case, while SYMBOL_CLASS wouldn't. + We also have to check for function symbols because they are + always constant. */ + { + struct symbol *s = exp->elts[i + 2].symbol; + + if (SYMBOL_CLASS (s) != LOC_BLOCK + && SYMBOL_CLASS (s) != LOC_CONST + && SYMBOL_CLASS (s) != LOC_CONST_BYTES) + return 0; + break; + } + + /* The default action is to return 0 because we are using + the optimistic approach here: If we don't know something, + then it is not a constant. */ + default: + return 0; + } + } + + return 1; +} + /* accessflag: hw_write: watch write, hw_read: watch read, hw_access: watch access (read or write) */ static void watch_command_1 (char *arg, int accessflag, int from_tty) { - struct gdbarch *gdbarch = get_current_arch (); struct breakpoint *b, *scope_breakpoint = NULL; - struct symtab_and_line sal; struct expression *exp; - struct block *exp_valid_block; + struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL; struct value *val, *mark; struct frame_info *frame; char *exp_start = NULL; @@ -6635,13 +7994,11 @@ watch_command_1 (char *arg, int accessflag, int from_tty) int toklen; char *cond_start = NULL; char *cond_end = NULL; - struct expression *cond = NULL; int i, other_type_used, target_resources_ok = 0; enum bptype bp_type; int mem_cnt = 0; int thread = -1; - - init_sal (&sal); /* initialize to zeroes */ + int pc = 0; /* Make sure that we actually have parameters to parse. */ if (arg != NULL && arg[0] != '\0') @@ -6715,9 +8072,20 @@ watch_command_1 (char *arg, int accessflag, int from_tty) while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t')) --exp_end; + /* Checking if the expression is not constant. */ + if (watchpoint_exp_is_const (exp)) + { + int len; + + len = exp_end - exp_start; + while (len > 0 && isspace (exp_start[len - 1])) + len--; + error (_("Cannot watch constant value `%.*s'."), len, exp_start); + } + exp_valid_block = innermost_block; mark = value_mark (); - fetch_watchpoint_value (exp, &val, NULL, NULL); + fetch_subexp_value (exp, &pc, &val, NULL, NULL); if (val != NULL) release_value (val); @@ -6732,8 +8100,17 @@ watch_command_1 (char *arg, int accessflag, int from_tty) toklen = end_tok - tok; if (toklen >= 1 && strncmp (tok, "if", toklen) == 0) { + struct expression *cond; + + innermost_block = NULL; tok = cond_start = end_tok + 1; cond = parse_exp_1 (&tok, 0, 0); + + /* The watchpoint expression may not be local, but the condition + may still be. E.g.: `watch global if local > 0'. */ + cond_exp_valid_block = innermost_block; + + xfree (cond); cond_end = tok; } if (*tok) @@ -6773,7 +8150,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty) breakpoint at the point where we've left the scope of the watchpoint expression. Create the scope breakpoint before the watchpoint, so that we will encounter it first in bpstat_stop_status. */ - if (innermost_block && frame) + if (exp_valid_block && frame) { if (frame_id_p (frame_unwind_caller_id (frame))) { @@ -6803,26 +8180,32 @@ watch_command_1 (char *arg, int accessflag, int from_tty) } /* Now set up the breakpoint. */ - b = set_raw_breakpoint (gdbarch, sal, bp_type); + b = set_raw_breakpoint_without_location (NULL, bp_type); set_breakpoint_count (breakpoint_count + 1); b->number = breakpoint_count; b->thread = thread; b->disposition = disp_donttouch; b->exp = exp; b->exp_valid_block = exp_valid_block; + b->cond_exp_valid_block = cond_exp_valid_block; b->exp_string = savestring (exp_start, exp_end - exp_start); b->val = val; b->val_valid = 1; - b->loc->cond = cond; if (cond_start) b->cond_string = savestring (cond_start, cond_end - cond_start); else b->cond_string = 0; if (frame) - b->watchpoint_frame = get_frame_id (frame); + { + b->watchpoint_frame = get_frame_id (frame); + b->watchpoint_thread = inferior_ptid; + } else - b->watchpoint_frame = null_frame_id; + { + b->watchpoint_frame = null_frame_id; + b->watchpoint_thread = null_ptid; + } if (scope_breakpoint != NULL) { @@ -6833,6 +8216,11 @@ watch_command_1 (char *arg, int accessflag, int from_tty) } value_free_to_mark (mark); + + /* Finally update the new watchpoint. This creates the locations + that should be inserted. */ + update_watchpoint (b, 1); + mention (b); update_global_location_list (1); } @@ -6904,9 +8292,9 @@ can_use_hardware_watchpoint (struct value *v) } else if (VALUE_LVAL (v) != not_lval && deprecated_value_modifiable (v) == 0) - return 0; /* ??? What does this represent? */ + return 0; /* These are values from the history (e.g., $1). */ else if (VALUE_LVAL (v) == lval_register) - return 0; /* cannot watch a register with a HW watchpoint */ + return 0; /* Cannot watch a register with a HW watchpoint. */ } /* The expression itself looks suitable for using a hardware @@ -7098,42 +8486,6 @@ ep_parse_optional_if_clause (char **arg) return cond_string; } -/* This function attempts to parse an optional filename from the arg - string. If one is not found, it returns NULL. - - Else, it returns a pointer to the parsed filename. (This function - makes no attempt to verify that a file of that name exists, or is - accessible.) And, it updates arg to point to the first character - following the parsed filename in the arg string. - - Note that clients needing to preserve the returned filename for - future access should copy it to their own buffers. */ -static char * -ep_parse_optional_filename (char **arg) -{ - static char filename[1024]; - char *arg_p = *arg; - int i; - char c; - - if ((*arg_p == '\0') || isspace (*arg_p)) - return NULL; - - for (i = 0;; i++) - { - c = *arg_p; - if (isspace (c)) - c = '\0'; - filename[i] = c; - if (c == '\0') - break; - arg_p++; - } - *arg = arg_p; - - return filename; -} - /* Commands to deal with catching events, such as signals, exceptions, process start/exit, etc. */ @@ -7145,7 +8497,8 @@ typedef enum catch_fork_kind; static void -catch_fork_command_1 (char *arg, int from_tty, struct cmd_list_element *command) +catch_fork_command_1 (char *arg, int from_tty, + struct cmd_list_element *command) { struct gdbarch *gdbarch = get_current_arch (); char *cond_string = NULL; @@ -7191,7 +8544,8 @@ catch_fork_command_1 (char *arg, int from_tty, struct cmd_list_element *command) } static void -catch_exec_command_1 (char *arg, int from_tty, struct cmd_list_element *command) +catch_exec_command_1 (char *arg, int from_tty, + struct cmd_list_element *command) { struct gdbarch *gdbarch = get_current_arch (); int tempflag; @@ -7251,9 +8605,11 @@ print_exception_catchpoint (struct breakpoint *b) } static void -print_one_exception_catchpoint (struct breakpoint *b, struct bp_location **last_loc) +print_one_exception_catchpoint (struct breakpoint *b, + struct bp_location **last_loc) { struct value_print_options opts; + get_user_print_options (&opts); if (opts.addressprint) { @@ -7288,13 +8644,29 @@ print_mention_exception_catchpoint (struct breakpoint *b) : _(" (catch)")); } +/* Implement the "print_recreate" breakpoint_ops method for throw and + catch catchpoints. */ + +static void +print_recreate_exception_catchpoint (struct breakpoint *b, struct ui_file *fp) +{ + int bp_temp; + int bp_throw; + + bp_temp = b->disposition == disp_del; + bp_throw = strstr (b->addr_string, "throw") != NULL; + fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch "); + fprintf_unfiltered (fp, bp_throw ? "throw" : "catch"); +} + static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = { NULL, /* insert */ NULL, /* remove */ NULL, /* breakpoint_hit */ print_exception_catchpoint, print_one_exception_catchpoint, - print_mention_exception_catchpoint + print_mention_exception_catchpoint, + print_recreate_exception_catchpoint }; static int @@ -7308,14 +8680,14 @@ handle_gnu_v3_exceptions (int tempflag, char *cond_string, else trigger_func_name = "__cxa_throw"; - break_command_really (get_current_arch (), - trigger_func_name, cond_string, -1, - 0 /* condition and thread are valid. */, - tempflag, 0, 0, - 0, - AUTO_BOOLEAN_TRUE /* pending */, - &gnu_v3_exception_catchpoint_ops, from_tty, - 1 /* enabled */); + create_breakpoint (get_current_arch (), + trigger_func_name, cond_string, -1, + 0 /* condition and thread are valid. */, + tempflag, bp_breakpoint, + 0, + AUTO_BOOLEAN_TRUE /* pending */, + &gnu_v3_exception_catchpoint_ops, from_tty, + 1 /* enabled */); return 1; } @@ -7327,7 +8699,6 @@ catch_exception_command_1 (enum exception_event_kind ex_event, char *arg, int tempflag, int from_tty) { char *cond_string = NULL; - struct symtab_and_line *sal = NULL; if (!arg) arg = ""; @@ -7354,6 +8725,7 @@ static void catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command) { int tempflag = get_cmd_context (command) == CATCH_TEMPORARY; + catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty); } @@ -7363,6 +8735,7 @@ static void catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command) { int tempflag = get_cmd_context (command) == CATCH_TEMPORARY; + catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty); } @@ -7387,7 +8760,8 @@ create_ada_exception_breakpoint (struct gdbarch *gdbarch, if (!loc_gdbarch) loc_gdbarch = gdbarch; - describe_other_breakpoints (loc_gdbarch, sal.pc, sal.section, -1); + describe_other_breakpoints (loc_gdbarch, + sal.pspace, sal.pc, sal.section, -1); /* FIXME: brobecker/2006-12-28: Actually, re-implement a special version for exception catchpoints, because two catchpoints used for different exception names will use the same address. @@ -7426,7 +8800,6 @@ catch_ada_exception_command (char *arg, int from_tty, struct gdbarch *gdbarch = get_current_arch (); int tempflag; struct symtab_and_line sal; - enum bptype type; char *addr_string = NULL; char *exp_string = NULL; char *cond_string = NULL; @@ -7479,17 +8852,7 @@ catch_syscall_split_args (char *arg) /* Check if the user provided a syscall name or a number. */ syscall_number = (int) strtol (cur_name, &endptr, 0); if (*endptr == '\0') - { - get_syscall_by_number (syscall_number, &s); - - if (s.name == NULL) - /* We can issue just a warning, but still create the catchpoint. - This is because, even not knowing the syscall name that - this number represents, we can still try to catch the syscall - number. */ - warning (_("The number '%d' does not represent a known syscall."), - syscall_number); - } + get_syscall_by_number (syscall_number, &s); else { /* We have a name. Let's check if it's valid and convert it @@ -7514,7 +8877,8 @@ catch_syscall_split_args (char *arg) /* Implement the "catch syscall" command. */ static void -catch_syscall_command_1 (char *arg, int from_tty, struct cmd_list_element *command) +catch_syscall_command_1 (char *arg, int from_tty, + struct cmd_list_element *command) { int tempflag; VEC(int) *filter; @@ -7611,6 +8975,7 @@ clear_command (char *arg, int from_tty) sal.line = default_breakpoint_line; sal.symtab = default_breakpoint_symtab; sal.pc = default_breakpoint_address; + sal.pspace = default_breakpoint_pspace; if (sal.symtab == 0) error (_("No source file specified.")); @@ -7665,22 +9030,20 @@ clear_command (char *arg, int from_tty) { int match = 0; /* Are we going to delete b? */ - if (b->type != bp_none - && b->type != bp_watchpoint - && b->type != bp_hardware_watchpoint - && b->type != bp_read_watchpoint - && b->type != bp_access_watchpoint) + if (b->type != bp_none && !is_watchpoint (b)) { struct bp_location *loc = b->loc; for (; loc; loc = loc->next) { - int pc_match = sal.pc + int pc_match = sal.pc + && (loc->pspace == sal.pspace) && (loc->address == sal.pc) && (!section_is_overlay (loc->section) || loc->section == sal.section); int line_match = ((default_match || (0 == sal.pc)) && b->source_file != NULL && sal.symtab != NULL + && sal.pspace == loc->pspace && strcmp (b->source_file, sal.symtab->filename) == 0 && b->line_number == sal.line); if (pc_match || line_match) @@ -7748,14 +9111,72 @@ breakpoint_auto_delete (bpstat bs) } } -/* A cleanup function which destroys a vector. */ +/* A comparison function for bp_location AP and BP being interfaced to qsort. + Sort elements primarily by their ADDRESS (no matter what does + breakpoint_address_is_meaningful say for its OWNER), secondarily by ordering + first bp_permanent OWNERed elements and terciarily just ensuring the array + is sorted stable way despite qsort being an instable algorithm. */ + +static int +bp_location_compare (const void *ap, const void *bp) +{ + struct bp_location *a = *(void **) ap; + struct bp_location *b = *(void **) bp; + /* A and B come from existing breakpoints having non-NULL OWNER. */ + int a_perm = a->owner->enable_state == bp_permanent; + int b_perm = b->owner->enable_state == bp_permanent; + + if (a->address != b->address) + return (a->address > b->address) - (a->address < b->address); + + /* Sort permanent breakpoints first. */ + if (a_perm != b_perm) + return (a_perm < b_perm) - (a_perm > b_perm); + + /* Make the user-visible order stable across GDB runs. Locations of the same + breakpoint can be sorted in arbitrary order. */ + + if (a->owner->number != b->owner->number) + return (a->owner->number > b->owner->number) + - (a->owner->number < b->owner->number); + + return (a > b) - (a < b); +} + +/* Set bp_location_placed_address_before_address_max and + bp_location_shadow_len_after_address_max according to the current content of + the bp_location array. */ static void -do_vec_free (void *p) +bp_location_target_extensions_update (void) { - VEC(bp_location_p) **vec = p; - if (*vec) - VEC_free (bp_location_p, *vec); + struct bp_location *bl, **blp_tmp; + + bp_location_placed_address_before_address_max = 0; + bp_location_shadow_len_after_address_max = 0; + + ALL_BP_LOCATIONS (bl, blp_tmp) + { + CORE_ADDR start, end, addr; + + if (!bp_location_has_shadow (bl)) + continue; + + start = bl->target_info.placed_address; + end = start + bl->target_info.shadow_len; + + gdb_assert (bl->address >= start); + addr = bl->address - start; + if (addr > bp_location_placed_address_before_address_max) + bp_location_placed_address_before_address_max = addr; + + /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */ + + gdb_assert (bl->address < end); + addr = end - bl->address; + if (addr > bp_location_shadow_len_after_address_max) + bp_location_shadow_len_after_address_max = addr; + } } /* If SHOULD_INSERT is false, do not insert any breakpoint locations @@ -7777,49 +9198,85 @@ static void update_global_location_list (int should_insert) { struct breakpoint *b; - struct bp_location **next = &bp_location_chain; - struct bp_location *loc; - struct bp_location *loc2; - VEC(bp_location_p) *old_locations = NULL; - int ret; - int ix; + struct bp_location **locp, *loc; struct cleanup *cleanups; - cleanups = make_cleanup (do_vec_free, &old_locations); - /* Store old locations for future reference. */ - for (loc = bp_location_chain; loc; loc = loc->global_next) - VEC_safe_push (bp_location_p, old_locations, loc); + /* Used in the duplicates detection below. When iterating over all + bp_locations, points to the first bp_location of a given address. + Breakpoints and watchpoints of different types are never + duplicates of each other. Keep one pointer for each type of + breakpoint/watchpoint, so we only need to loop over all locations + once. */ + struct bp_location *bp_loc_first; /* breakpoint */ + struct bp_location *wp_loc_first; /* hardware watchpoint */ + struct bp_location *awp_loc_first; /* access watchpoint */ + struct bp_location *rwp_loc_first; /* read watchpoint */ + + /* Saved former bp_location array which we compare against the newly built + bp_location from the current state of ALL_BREAKPOINTS. */ + struct bp_location **old_location, **old_locp; + unsigned old_location_count; + + old_location = bp_location; + old_location_count = bp_location_count; + bp_location = NULL; + bp_location_count = 0; + cleanups = make_cleanup (xfree, old_location); - bp_location_chain = NULL; ALL_BREAKPOINTS (b) - { - for (loc = b->loc; loc; loc = loc->next) - { - *next = loc; - next = &(loc->global_next); - *next = NULL; - } - } + for (loc = b->loc; loc; loc = loc->next) + bp_location_count++; + + bp_location = xmalloc (sizeof (*bp_location) * bp_location_count); + locp = bp_location; + ALL_BREAKPOINTS (b) + for (loc = b->loc; loc; loc = loc->next) + *locp++ = loc; + qsort (bp_location, bp_location_count, sizeof (*bp_location), + bp_location_compare); + + bp_location_target_extensions_update (); /* Identify bp_location instances that are no longer present in the new list, and therefore should be freed. Note that it's not necessary that those locations should be removed from inferior -- if there's another location at the same address (previously marked as duplicate), - we don't need to remove/insert the location. */ - for (ix = 0; VEC_iterate(bp_location_p, old_locations, ix, loc); ++ix) + we don't need to remove/insert the location. + + LOCP is kept in sync with OLD_LOCP, each pointing to the current and + former bp_location array state respectively. */ + + locp = bp_location; + for (old_locp = old_location; old_locp < old_location + old_location_count; + old_locp++) { - /* Tells if 'loc' is found amoung the new locations. If not, we + struct bp_location *old_loc = *old_locp; + struct bp_location **loc2p; + + /* Tells if 'old_loc' is found amoung the new locations. If not, we have to free it. */ int found_object = 0; /* Tells if the location should remain inserted in the target. */ int keep_in_target = 0; int removed = 0; - for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next) - if (loc2 == loc) - { - found_object = 1; - break; - } + + /* Skip LOCP entries which will definitely never be needed. Stop either + at or being the one matching OLD_LOC. */ + while (locp < bp_location + bp_location_count + && (*locp)->address < old_loc->address) + locp++; + + for (loc2p = locp; + (loc2p < bp_location + bp_location_count + && (*loc2p)->address == old_loc->address); + loc2p++) + { + if (*loc2p == old_loc) + { + found_object = 1; + break; + } + } /* If this location is no longer present, and inserted, look if there's maybe a new location at the same address. If so, mark that one @@ -7827,11 +9284,11 @@ update_global_location_list (int should_insert) don't have a time window where a breakpoint at certain location is not inserted. */ - if (loc->inserted) + if (old_loc->inserted) { /* If the location is inserted now, we might have to remove it. */ - if (found_object && should_be_inserted (loc)) + if (found_object && should_be_inserted (old_loc)) { /* The location is still present in the location list, and still should be inserted. Don't do anything. */ @@ -7842,37 +9299,58 @@ update_global_location_list (int should_insert) /* The location is either no longer present, or got disabled. See if there's another location at the same address, in which case we don't need to remove this one from the target. */ - if (breakpoint_address_is_meaningful (loc->owner)) - for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next) - { - /* For the sake of should_insert_location. The - call to check_duplicates will fix up this later. */ - loc2->duplicate = 0; - if (should_be_inserted (loc2) - && loc2 != loc && loc2->address == loc->address) - { - loc2->inserted = 1; - loc2->target_info = loc->target_info; - keep_in_target = 1; - break; - } - } + + /* OLD_LOC comes from existing struct breakpoint. */ + if (breakpoint_address_is_meaningful (old_loc->owner)) + { + for (loc2p = locp; + (loc2p < bp_location + bp_location_count + && (*loc2p)->address == old_loc->address); + loc2p++) + { + struct bp_location *loc2 = *loc2p; + + if (breakpoint_locations_match (loc2, old_loc)) + { + /* For the sake of should_be_inserted. + Duplicates check below will fix up this later. */ + loc2->duplicate = 0; + + /* Read watchpoint locations are switched to + access watchpoints, if the former are not + supported, but the latter are. */ + if (is_hardware_watchpoint (old_loc->owner)) + { + gdb_assert (is_hardware_watchpoint (loc2->owner)); + loc2->watchpoint_type = old_loc->watchpoint_type; + } + + if (loc2 != old_loc && should_be_inserted (loc2)) + { + loc2->inserted = 1; + loc2->target_info = old_loc->target_info; + keep_in_target = 1; + break; + } + } + } + } } if (!keep_in_target) { - if (remove_breakpoint (loc, mark_uninserted)) + if (remove_breakpoint (old_loc, mark_uninserted)) { /* This is just about all we can do. We could keep this location on the global list, and try to remove it next time, but there's no particular reason why we will succeed next time. - Note that at this point, loc->owner is still valid, + Note that at this point, old_loc->owner is still valid, as delete_breakpoint frees the breakpoint only after calling us. */ printf_filtered (_("warning: Error removing breakpoint %d\n"), - loc->owner->number); + old_loc->owner->number); } removed = 1; } @@ -7880,33 +9358,125 @@ update_global_location_list (int should_insert) if (!found_object) { - if (removed && non_stop) + if (removed && non_stop + && breakpoint_address_is_meaningful (old_loc->owner) + && !is_hardware_watchpoint (old_loc->owner)) { - /* This location was removed from the targets. In non-stop mode, - a race condition is possible where we've removed a breakpoint, - but stop events for that breakpoint are already queued and will - arrive later. To suppress spurious SIGTRAPs reported to user, - we keep this breakpoint location for a bit, and will retire it - after we see 3 * thread_count events. - The theory here is that reporting of events should, - "on the average", be fair, so after that many event we'll see - events from all threads that have anything of interest, and no - longer need to keep this breakpoint. This is just a - heuristic, but if it's wrong, we'll report unexpected SIGTRAP, - which is usability issue, but not a correctness problem. */ - loc->events_till_retirement = 3 * (thread_count () + 1); - loc->owner = NULL; - - VEC_safe_push (bp_location_p, moribund_locations, loc); + /* This location was removed from the target. In + non-stop mode, a race condition is possible where + we've removed a breakpoint, but stop events for that + breakpoint are already queued and will arrive later. + We apply an heuristic to be able to distinguish such + SIGTRAPs from other random SIGTRAPs: we keep this + breakpoint location for a bit, and will retire it + after we see some number of events. The theory here + is that reporting of events should, "on the average", + be fair, so after a while we'll see events from all + threads that have anything of interest, and no longer + need to keep this breakpoint location around. We + don't hold locations forever so to reduce chances of + mistaking a non-breakpoint SIGTRAP for a breakpoint + SIGTRAP. + + The heuristic failing can be disastrous on + decr_pc_after_break targets. + + On decr_pc_after_break targets, like e.g., x86-linux, + if we fail to recognize a late breakpoint SIGTRAP, + because events_till_retirement has reached 0 too + soon, we'll fail to do the PC adjustment, and report + a random SIGTRAP to the user. When the user resumes + the inferior, it will most likely immediately crash + with SIGILL/SIGBUS/SIGSEGV, or worse, get silently + corrupted, because of being resumed e.g., in the + middle of a multi-byte instruction, or skipped a + one-byte instruction. This was actually seen happen + on native x86-linux, and should be less rare on + targets that do not support new thread events, like + remote, due to the heuristic depending on + thread_count. + + Mistaking a random SIGTRAP for a breakpoint trap + causes similar symptoms (PC adjustment applied when + it shouldn't), but then again, playing with SIGTRAPs + behind the debugger's back is asking for trouble. + + Since hardware watchpoint traps are always + distinguishable from other traps, so we don't need to + apply keep hardware watchpoint moribund locations + around. We simply always ignore hardware watchpoint + traps we can no longer explain. */ + + old_loc->events_till_retirement = 3 * (thread_count () + 1); + old_loc->owner = NULL; + + VEC_safe_push (bp_location_p, moribund_locations, old_loc); } else - free_bp_location (loc); + free_bp_location (old_loc); } } - ALL_BREAKPOINTS (b) - { - check_duplicates (b); + /* Rescan breakpoints at the same address and section, marking the + first one as "first" and any others as "duplicates". This is so + that the bpt instruction is only inserted once. If we have a + permanent breakpoint at the same place as BPT, make that one the + official one, and the rest as duplicates. Permanent breakpoints + are sorted first for the same address. + + Do the same for hardware watchpoints, but also considering the + watchpoint's type (regular/access/read) and length. */ + + bp_loc_first = NULL; + wp_loc_first = NULL; + awp_loc_first = NULL; + rwp_loc_first = NULL; + ALL_BP_LOCATIONS (loc, locp) + { + /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */ + struct breakpoint *b = loc->owner; + struct bp_location **loc_first_p; + + if (b->enable_state == bp_disabled + || b->enable_state == bp_call_disabled + || b->enable_state == bp_startup_disabled + || !loc->enabled + || loc->shlib_disabled + || !breakpoint_address_is_meaningful (b) + || is_tracepoint (b)) + continue; + + /* Permanent breakpoint should always be inserted. */ + if (b->enable_state == bp_permanent && ! loc->inserted) + internal_error (__FILE__, __LINE__, + _("allegedly permanent breakpoint is not " + "actually inserted")); + + if (b->type == bp_hardware_watchpoint) + loc_first_p = &wp_loc_first; + else if (b->type == bp_read_watchpoint) + loc_first_p = &rwp_loc_first; + else if (b->type == bp_access_watchpoint) + loc_first_p = &awp_loc_first; + else + loc_first_p = &bp_loc_first; + + if (*loc_first_p == NULL + || (overlay_debugging && loc->section != (*loc_first_p)->section) + || !breakpoint_locations_match (loc, *loc_first_p)) + { + *loc_first_p = loc; + loc->duplicate = 0; + continue; + } + + loc->duplicate = 1; + + if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted + && b->enable_state != bp_permanent) + internal_error (__FILE__, __LINE__, + _("another breakpoint was inserted on top of " + "a permanent breakpoint")); } if (breakpoints_always_inserted_mode () && should_insert @@ -7936,17 +9506,19 @@ static void update_global_location_list_nothrow (int inserting) { struct gdb_exception e; + TRY_CATCH (e, RETURN_MASK_ERROR) update_global_location_list (inserting); } -/* Clear BPT from a BPS. */ +/* Clear LOC from a BPS. */ static void -bpstat_remove_breakpoint (bpstat bps, struct breakpoint *bpt) +bpstat_remove_bp_location (bpstat bps, struct bp_location *loc) { bpstat bs; + for (bs = bps; bs; bs = bs->next) - if (bs->breakpoint_at && bs->breakpoint_at->owner == bpt) + if (bs->breakpoint_at == loc) { bs->breakpoint_at = NULL; bs->old_val = NULL; @@ -7956,10 +9528,11 @@ bpstat_remove_breakpoint (bpstat bps, struct breakpoint *bpt) /* Callback for iterate_over_threads. */ static int -bpstat_remove_breakpoint_callback (struct thread_info *th, void *data) +bpstat_remove_bp_location_callback (struct thread_info *th, void *data) { - struct breakpoint *bpt = data; - bpstat_remove_breakpoint (th->stop_bpstat, bpt); + struct bp_location *loc = data; + + bpstat_remove_bp_location (th->stop_bpstat, loc); return 0; } @@ -7970,7 +9543,6 @@ void delete_breakpoint (struct breakpoint *bpt) { struct breakpoint *b; - struct bp_location *loc, *next; gdb_assert (bpt != NULL); @@ -7990,6 +9562,16 @@ delete_breakpoint (struct breakpoint *bpt) if (bpt->type == bp_none) return; + /* At least avoid this stale reference until the reference counting of + breakpoints gets resolved. */ + if (bpt->related_breakpoint != NULL) + { + gdb_assert (bpt->related_breakpoint->related_breakpoint == bpt); + bpt->related_breakpoint->disposition = disp_del_at_next_stop; + bpt->related_breakpoint->related_breakpoint = NULL; + bpt->related_breakpoint = NULL; + } + observer_notify_breakpoint_deleted (bpt->number); if (breakpoint_chain == bpt) @@ -8002,35 +9584,17 @@ delete_breakpoint (struct breakpoint *bpt) break; } - free_command_lines (&bpt->commands); - if (bpt->cond_string != NULL) - xfree (bpt->cond_string); - if (bpt->addr_string != NULL) - xfree (bpt->addr_string); - if (bpt->exp != NULL) - xfree (bpt->exp); - if (bpt->exp_string != NULL) - xfree (bpt->exp_string); - if (bpt->val != NULL) - value_free (bpt->val); - if (bpt->source_file != NULL) - xfree (bpt->source_file); - if (bpt->exec_pathname != NULL) - xfree (bpt->exec_pathname); + decref_counted_command_line (&bpt->commands); + xfree (bpt->cond_string); + xfree (bpt->cond_exp); + xfree (bpt->addr_string); + xfree (bpt->exp); + xfree (bpt->exp_string); + value_free (bpt->val); + xfree (bpt->source_file); + xfree (bpt->exec_pathname); clean_up_filters (&bpt->syscalls_to_be_caught); - /* Be sure no bpstat's are pointing at it after it's been freed. */ - /* FIXME, how can we find all bpstat's? - We just check stop_bpstat for now. Note that we cannot just - remove bpstats pointing at bpt from the stop_bpstat list - entirely, as breakpoint commands are associated with the bpstat; - if we remove it here, then the later call to - bpstat_do_actions (&stop_bpstat); - in event-top.c won't do anything, and temporary breakpoints - with commands won't work. */ - - iterate_over_threads (bpstat_remove_breakpoint_callback, bpt); - /* Now that breakpoint is removed from breakpoint list, update the global location list. This will remove locations that used to belong to @@ -8061,6 +9625,15 @@ make_cleanup_delete_breakpoint (struct breakpoint *b) return make_cleanup (do_delete_breakpoint_cleanup, b); } +/* A callback for map_breakpoint_numbers that calls + delete_breakpoint. */ + +static void +do_delete_breakpoint (struct breakpoint *b, void *ignore) +{ + delete_breakpoint (b); +} + void delete_command (char *arg, int from_tty) { @@ -8078,11 +9651,13 @@ delete_command (char *arg, int from_tty) ALL_BREAKPOINTS (b) { if (b->type != bp_call_dummy + && b->type != bp_std_terminate && b->type != bp_shlib_event && b->type != bp_jit_event && b->type != bp_thread_event && b->type != bp_overlay_event && b->type != bp_longjmp_master + && b->type != bp_std_terminate_master && b->number >= 0) { breaks_to_delete = 1; @@ -8097,18 +9672,20 @@ delete_command (char *arg, int from_tty) ALL_BREAKPOINTS_SAFE (b, temp) { if (b->type != bp_call_dummy + && b->type != bp_std_terminate && b->type != bp_shlib_event && b->type != bp_thread_event && b->type != bp_jit_event && b->type != bp_overlay_event && b->type != bp_longjmp_master + && b->type != bp_std_terminate_master && b->number >= 0) delete_breakpoint (b); } } } else - map_breakpoint_numbers (arg, delete_breakpoint); + map_breakpoint_numbers (arg, do_delete_breakpoint, NULL); } static int @@ -8129,7 +9706,8 @@ ambiguous_names_p (struct bp_location *loc) { struct bp_location *l; htab_t htab = htab_create_alloc (13, htab_hash_string, - (int (*) (const void *, const void *)) streq, + (int (*) (const void *, + const void *)) streq, NULL, xcalloc, xfree); for (l = loc; l != NULL; l = l->next) @@ -8137,24 +9715,157 @@ ambiguous_names_p (struct bp_location *loc) const char **slot; const char *name = l->function_name; - /* Allow for some names to be NULL, ignore them. */ - if (name == NULL) - continue; + /* Allow for some names to be NULL, ignore them. */ + if (name == NULL) + continue; + + slot = (const char **) htab_find_slot (htab, (const void *) name, + INSERT); + /* NOTE: We can assume slot != NULL here because xcalloc never returns + NULL. */ + if (*slot != NULL) + { + htab_delete (htab); + return 1; + } + *slot = name; + } + + htab_delete (htab); + return 0; +} + +/* When symbols change, it probably means the sources changed as well, + and it might mean the static tracepoint markers are no longer at + the same address or line numbers they used to be at last we + checked. Losing your static tracepoints whenever you rebuild is + undesirable. This function tries to resync/rematch gdb static + tracepoints with the markers on the target, for static tracepoints + that have not been set by marker id. Static tracepoint that have + been set by marker id are reset by marker id in breakpoint_re_set. + The heuristic is: + + 1) For a tracepoint set at a specific address, look for a marker at + the old PC. If one is found there, assume to be the same marker. + If the name / string id of the marker found is different from the + previous known name, assume that means the user renamed the marker + in the sources, and output a warning. + + 2) For a tracepoint set at a given line number, look for a marker + at the new address of the old line number. If one is found there, + assume to be the same marker. If the name / string id of the + marker found is different from the previous known name, assume that + means the user renamed the marker in the sources, and output a + warning. + + 3) If a marker is no longer found at the same address or line, it + may mean the marker no longer exists. But it may also just mean + the code changed a bit. Maybe the user added a few lines of code + that made the marker move up or down (in line number terms). Ask + the target for info about the marker with the string id as we knew + it. If found, update line number and address in the matching + static tracepoint. This will get confused if there's more than one + marker with the same ID (possible in UST, although unadvised + precisely because it confuses tools). */ + +static struct symtab_and_line +update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal) +{ + struct static_tracepoint_marker marker; + CORE_ADDR pc; + int i; + + pc = sal.pc; + if (sal.line) + find_line_pc (sal.symtab, sal.line, &pc); + + if (target_static_tracepoint_marker_at (pc, &marker)) + { + if (strcmp (b->static_trace_marker_id, marker.str_id) != 0) + warning (_("static tracepoint %d changed probed marker from %s to %s"), + b->number, + b->static_trace_marker_id, marker.str_id); + + xfree (b->static_trace_marker_id); + b->static_trace_marker_id = xstrdup (marker.str_id); + release_static_tracepoint_marker (&marker); + + return sal; + } + + /* Old marker wasn't found on target at lineno. Try looking it up + by string ID. */ + if (!sal.explicit_pc + && sal.line != 0 + && sal.symtab != NULL + && b->static_trace_marker_id != NULL) + { + VEC(static_tracepoint_marker_p) *markers; + + markers + = target_static_tracepoint_markers_by_strid (b->static_trace_marker_id); + + if (!VEC_empty(static_tracepoint_marker_p, markers)) + { + struct symtab_and_line sal; + struct symbol *sym; + struct static_tracepoint_marker *marker; + + marker = VEC_index (static_tracepoint_marker_p, markers, 0); + + xfree (b->static_trace_marker_id); + b->static_trace_marker_id = xstrdup (marker->str_id); + + warning (_("marker for static tracepoint %d (%s) not " + "found at previous line number"), + b->number, b->static_trace_marker_id); + + init_sal (&sal); + + sal.pc = marker->address; + + sal = find_pc_line (marker->address, 0); + sym = find_pc_sect_function (marker->address, NULL); + ui_out_text (uiout, "Now in "); + if (sym) + { + ui_out_field_string (uiout, "func", + SYMBOL_PRINT_NAME (sym)); + ui_out_text (uiout, " at "); + } + ui_out_field_string (uiout, "file", sal.symtab->filename); + ui_out_text (uiout, ":"); + + if (ui_out_is_mi_like_p (uiout)) + { + char *fullname = symtab_to_fullname (sal.symtab); + + if (fullname) + ui_out_field_string (uiout, "fullname", fullname); + } + + ui_out_field_int (uiout, "line", sal.line); + ui_out_text (uiout, "\n"); + + b->line_number = sal.line; + + xfree (b->source_file); + if (sym) + b->source_file = xstrdup (sal.symtab->filename); + else + b->source_file = NULL; - slot = (const char **) htab_find_slot (htab, (const void *) name, - INSERT); - /* NOTE: We can assume slot != NULL here because xcalloc never returns - NULL. */ - if (*slot != NULL) - { - htab_delete (htab); - return 1; + xfree (b->addr_string); + b->addr_string = xstrprintf ("%s:%d", + sal.symtab->filename, b->line_number); + + /* Might be nice to check if function changed, and warn if + so. */ + + release_static_tracepoint_marker (marker); } - *slot = name; } - - htab_delete (htab); - return 0; + return sal; } static void @@ -8235,7 +9946,8 @@ update_breakpoint_locations (struct breakpoint *b, if (have_ambiguous_names) { for (; l; l = l->next) - if (e->address == l->address) + if (breakpoint_address_match (e->pspace->aspace, e->address, + l->pspace->aspace, l->address)) { l->enabled = 0; break; @@ -8258,7 +9970,6 @@ update_breakpoint_locations (struct breakpoint *b, update_global_location_list (1); } - /* Reset a breakpoint given it's struct breakpoint * BINT. The value we return ends up being the return value from catch_errors. Unused in this case. */ @@ -8268,16 +9979,14 @@ breakpoint_re_set_one (void *bint) { /* get past catch_errs */ struct breakpoint *b = (struct breakpoint *) bint; - struct value *mark; - int i; int not_found = 0; int *not_found_ptr = ¬_found; - struct symtabs_and_lines sals = {}; - struct symtabs_and_lines expanded; + struct symtabs_and_lines sals = {0}; + struct symtabs_and_lines expanded = {0}; char *s; - enum enable_state save_enable; struct gdb_exception e; - struct cleanup *cleanups; + struct cleanup *cleanups = make_cleanup (null_cleanup, NULL); + int marker_spec = 0; switch (b->type) { @@ -8288,6 +9997,8 @@ breakpoint_re_set_one (void *bint) case bp_breakpoint: case bp_hardware_breakpoint: case bp_tracepoint: + case bp_fast_tracepoint: + case bp_static_tracepoint: /* Do not attempt to re-set breakpoints disabled during startup. */ if (b->enable_state == bp_startup_disabled) return 0; @@ -8299,13 +10010,31 @@ breakpoint_re_set_one (void *bint) return 0; } - set_language (b->language); input_radix = b->input_radix; s = b->addr_string; + + save_current_space_and_thread (); + switch_to_program_space_and_thread (b->pspace); + + marker_spec = b->type == bp_static_tracepoint && is_marker_spec (s); + + set_language (b->language); TRY_CATCH (e, RETURN_MASK_ERROR) { - sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL, - not_found_ptr); + if (marker_spec) + { + sals = decode_static_tracepoint_spec (&s); + if (sals.nelts > b->static_trace_marker_id_idx) + { + sals.sals[0] = sals.sals[b->static_trace_marker_id_idx]; + sals.nelts = 1; + } + else + error (_("marker %s not found"), b->static_trace_marker_id); + } + else + sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL, + not_found_ptr); } if (e.reason < 0) { @@ -8335,29 +10064,34 @@ breakpoint_re_set_one (void *bint) } } - if (not_found) - break; - - gdb_assert (sals.nelts == 1); - resolve_sal_pc (&sals.sals[0]); - if (b->condition_not_parsed && s && s[0]) + if (!not_found) { - char *cond_string = 0; - int thread = -1; - int task = 0; - - find_condition_and_thread (s, sals.sals[0].pc, - &cond_string, &thread, &task); - if (cond_string) - b->cond_string = cond_string; - b->thread = thread; - b->task = task; - b->condition_not_parsed = 0; + gdb_assert (sals.nelts == 1); + + resolve_sal_pc (&sals.sals[0]); + if (b->condition_not_parsed && s && s[0]) + { + char *cond_string = 0; + int thread = -1; + int task = 0; + + find_condition_and_thread (s, sals.sals[0].pc, + &cond_string, &thread, &task); + if (cond_string) + b->cond_string = cond_string; + b->thread = thread; + b->task = task; + b->condition_not_parsed = 0; + } + + if (b->type == bp_static_tracepoint && !marker_spec) + sals.sals[0] = update_static_tracepoint (b, sals.sals[0]); + + expanded = expand_line_sal_maybe (sals.sals[0]); } - expanded = expand_line_sal_maybe (sals.sals[0]); - cleanups = make_cleanup (xfree, sals.sals); + + make_cleanup (xfree, sals.sals); update_breakpoint_locations (b, expanded); - do_cleanups (cleanups); break; case bp_watchpoint: @@ -8404,6 +10138,7 @@ breakpoint_re_set_one (void *bint) reset later by breakpoint_re_set. */ case bp_overlay_event: case bp_longjmp_master: + case bp_std_terminate_master: delete_breakpoint (b); break; @@ -8423,6 +10158,7 @@ breakpoint_re_set_one (void *bint) case bp_finish: case bp_watchpoint_scope: case bp_call_dummy: + case bp_std_terminate: case bp_step_resume: case bp_longjmp: case bp_longjmp_resume: @@ -8430,6 +10166,7 @@ breakpoint_re_set_one (void *bint) break; } + do_cleanups (cleanups); return 0; } @@ -8440,9 +10177,12 @@ breakpoint_re_set (void) struct breakpoint *b, *temp; enum language save_language; int save_input_radix; + struct cleanup *old_chain; save_language = current_language->la_language; save_input_radix = input_radix; + old_chain = save_current_program_space (); + ALL_BREAKPOINTS_SAFE (b, temp) { /* Format possible error msg */ @@ -8457,11 +10197,14 @@ breakpoint_re_set (void) jit_breakpoint_re_set (); + do_cleanups (old_chain); + create_overlay_event_breakpoint ("_ovly_debug_event"); create_longjmp_master_breakpoint ("longjmp"); create_longjmp_master_breakpoint ("_longjmp"); create_longjmp_master_breakpoint ("siglongjmp"); create_longjmp_master_breakpoint ("_siglongjmp"); + create_std_terminate_master_breakpoint ("std::terminate()"); } /* Reset the thread number of this breakpoint: @@ -8475,6 +10218,12 @@ breakpoint_re_set_thread (struct breakpoint *b) { if (in_thread_list (inferior_ptid)) b->thread = pid_to_thread_id (inferior_ptid); + + /* We're being called after following a fork. The new fork is + selected as current, and unless this was a vfork will have a + different program space from the original thread. Reset that + as well. */ + b->loc->pspace = current_program_space; } } @@ -8493,6 +10242,14 @@ set_ignore_count (int bptnum, int count, int from_tty) ALL_BREAKPOINTS (b) if (b->number == bptnum) { + if (is_tracepoint (b)) + { + if (from_tty && count != 0) + printf_filtered (_("Ignore count ignored for tracepoint %d."), + bptnum); + return; + } + b->ignore_count = count; if (from_tty) { @@ -8549,7 +10306,9 @@ ignore_command (char *args, int from_tty) whose numbers are given in ARGS. */ static void -map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *)) +map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *, + void *), + void *data) { char *p = args; char *p1; @@ -8577,9 +10336,9 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *)) { struct breakpoint *related_breakpoint = b->related_breakpoint; match = 1; - function (b); + function (b, data); if (related_breakpoint) - function (related_breakpoint); + function (related_breakpoint, data); break; } if (match == 0) @@ -8655,10 +10414,20 @@ disable_breakpoint (struct breakpoint *bpt) observer_notify_breakpoint_modified (bpt->number); } +/* A callback for map_breakpoint_numbers that calls + disable_breakpoint. */ + +static void +do_map_disable_breakpoint (struct breakpoint *b, void *ignore) +{ + disable_breakpoint (b); +} + static void disable_command (char *args, int from_tty) { struct breakpoint *bpt; + if (args == 0) ALL_BREAKPOINTS (bpt) switch (bpt->type) @@ -8669,6 +10438,8 @@ disable_command (char *args, int from_tty) continue; case bp_breakpoint: case bp_tracepoint: + case bp_fast_tracepoint: + case bp_static_tracepoint: case bp_catchpoint: case bp_hardware_breakpoint: case bp_watchpoint: @@ -8687,14 +10458,13 @@ disable_command (char *args, int from_tty) update_global_location_list (0); } else - map_breakpoint_numbers (args, disable_breakpoint); + map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL); } static void do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition) { - int target_resources_ok, other_type_used; - struct value *mark; + int target_resources_ok; if (bpt->type == bp_hardware_breakpoint) { @@ -8709,10 +10479,7 @@ do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition) error (_("Hardware breakpoints used exceeds limit.")); } - if (bpt->type == bp_watchpoint - || bpt->type == bp_hardware_watchpoint - || bpt->type == bp_read_watchpoint - || bpt->type == bp_access_watchpoint) + if (is_watchpoint (bpt)) { struct gdb_exception e; @@ -8744,6 +10511,15 @@ enable_breakpoint (struct breakpoint *bpt) do_enable_breakpoint (bpt, bpt->disposition); } +/* A callback for map_breakpoint_numbers that calls + enable_breakpoint. */ + +static void +do_map_enable_breakpoint (struct breakpoint *b, void *ignore) +{ + enable_breakpoint (b); +} + /* The enable command enables the specified breakpoints (or all defined breakpoints) so they once again become (or continue to be) effective in stopping the inferior. */ @@ -8752,6 +10528,7 @@ static void enable_command (char *args, int from_tty) { struct breakpoint *bpt; + if (args == 0) ALL_BREAKPOINTS (bpt) switch (bpt->type) @@ -8762,6 +10539,8 @@ enable_command (char *args, int from_tty) continue; case bp_breakpoint: case bp_tracepoint: + case bp_fast_tracepoint: + case bp_static_tracepoint: case bp_catchpoint: case bp_hardware_breakpoint: case bp_watchpoint: @@ -8780,11 +10559,11 @@ enable_command (char *args, int from_tty) update_global_location_list (1); } else - map_breakpoint_numbers (args, enable_breakpoint); + map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL); } static void -enable_once_breakpoint (struct breakpoint *bpt) +enable_once_breakpoint (struct breakpoint *bpt, void *ignore) { do_enable_breakpoint (bpt, disp_disable); } @@ -8792,11 +10571,11 @@ enable_once_breakpoint (struct breakpoint *bpt) static void enable_once_command (char *args, int from_tty) { - map_breakpoint_numbers (args, enable_once_breakpoint); + map_breakpoint_numbers (args, enable_once_breakpoint, NULL); } static void -enable_delete_breakpoint (struct breakpoint *bpt) +enable_delete_breakpoint (struct breakpoint *bpt, void *ignore) { do_enable_breakpoint (bpt, disp_del); } @@ -8804,7 +10583,7 @@ enable_delete_breakpoint (struct breakpoint *bpt) static void enable_delete_command (char *args, int from_tty) { - map_breakpoint_numbers (args, enable_delete_breakpoint); + map_breakpoint_numbers (args, enable_delete_breakpoint, NULL); } static void @@ -8817,12 +10596,42 @@ show_breakpoint_cmd (char *args, int from_tty) { } +/* Invalidate last known value of any hardware watchpoint if + the memory which that value represents has been written to by + GDB itself. */ + +static void +invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len, + const bfd_byte *data) +{ + struct breakpoint *bp; + + ALL_BREAKPOINTS (bp) + if (bp->enable_state == bp_enabled + && bp->type == bp_hardware_watchpoint + && bp->val_valid && bp->val) + { + struct bp_location *loc; + + for (loc = bp->loc; loc != NULL; loc = loc->next) + if (loc->loc_type == bp_loc_hardware_watchpoint + && loc->address + loc->length > addr + && addr + len > loc->address) + { + value_free (bp->val); + bp->val = NULL; + bp->val_valid = 0; + } + } +} + /* Use default_breakpoint_'s, or nothing if they aren't valid. */ struct symtabs_and_lines decode_line_spec_1 (char *string, int funfirstline) { struct symtabs_and_lines sals; + if (string == 0) error (_("Empty line specification.")); if (default_breakpoint_valid) @@ -8845,14 +10654,16 @@ decode_line_spec_1 (char *string, int funfirstline) someday. */ void * -deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc) +deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch, + struct address_space *aspace, CORE_ADDR pc) { struct bp_target_info *bp_tgt; - bp_tgt = xmalloc (sizeof (struct bp_target_info)); - memset (bp_tgt, 0, sizeof (struct bp_target_info)); + bp_tgt = XZALLOC (struct bp_target_info); + bp_tgt->placed_address_space = aspace; bp_tgt->placed_address = pc; + if (target_insert_breakpoint (gdbarch, bp_tgt) != 0) { /* Could not insert the breakpoint. */ @@ -8885,7 +10696,8 @@ static struct gdbarch *single_step_gdbarch[2]; /* Create and insert a breakpoint for software single step. */ void -insert_single_step_breakpoint (struct gdbarch *gdbarch, CORE_ADDR next_pc) +insert_single_step_breakpoint (struct gdbarch *gdbarch, + struct address_space *aspace, CORE_ADDR next_pc) { void **bpt_p; @@ -8908,7 +10720,7 @@ insert_single_step_breakpoint (struct gdbarch *gdbarch, CORE_ADDR next_pc) corresponding changes elsewhere where single step breakpoints are handled, however. So, for now, we use this. */ - *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, next_pc); + *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc); if (*bpt_p == NULL) error (_("Could not insert single-step breakpoint at %s"), paddress (gdbarch, next_pc)); @@ -8937,17 +10749,54 @@ remove_single_step_breakpoints (void) } } +/* Delete software single step breakpoints without removing them from + the inferior. This is intended to be used if the inferior's address + space where they were inserted is already gone, e.g. after exit or + exec. */ + +void +cancel_single_step_breakpoints (void) +{ + int i; + + for (i = 0; i < 2; i++) + if (single_step_breakpoints[i]) + { + xfree (single_step_breakpoints[i]); + single_step_breakpoints[i] = NULL; + single_step_gdbarch[i] = NULL; + } +} + +/* Detach software single-step breakpoints from INFERIOR_PTID without + removing them. */ + +static void +detach_single_step_breakpoints (void) +{ + int i; + + for (i = 0; i < 2; i++) + if (single_step_breakpoints[i]) + target_remove_breakpoint (single_step_gdbarch[i], + single_step_breakpoints[i]); +} + /* Check whether a software single-step breakpoint is inserted at PC. */ static int -single_step_breakpoint_inserted_here_p (CORE_ADDR pc) +single_step_breakpoint_inserted_here_p (struct address_space *aspace, + CORE_ADDR pc) { int i; for (i = 0; i < 2; i++) { struct bp_target_info *bp_tgt = single_step_breakpoints[i]; - if (bp_tgt && bp_tgt->placed_address == pc) + if (bp_tgt + && breakpoint_address_match (bp_tgt->placed_address_space, + bp_tgt->placed_address, + aspace, pc)) return 1; } @@ -9005,6 +10854,7 @@ catch_syscall_completer (struct cmd_list_element *cmd, char *text, char *word) { const char **list = get_syscall_names (); + return (list == NULL) ? NULL : complete_on_enum (list, text, word); } @@ -9021,48 +10871,172 @@ set_tracepoint_count (int num) void trace_command (char *arg, int from_tty) { - break_command_really (get_current_arch (), - arg, - NULL, 0, 1 /* parse arg */, - 0 /* tempflag */, 0 /* hardwareflag */, - 1 /* traceflag */, - 0 /* Ignore count */, - pending_break_support, - NULL, - from_tty, - 1 /* enabled */); - set_tracepoint_count (breakpoint_count); + if (create_breakpoint (get_current_arch (), + arg, + NULL, 0, 1 /* parse arg */, + 0 /* tempflag */, + bp_tracepoint /* type_wanted */, + 0 /* Ignore count */, + pending_break_support, + NULL, + from_tty, + 1 /* enabled */)) + set_tracepoint_count (breakpoint_count); +} + +void +ftrace_command (char *arg, int from_tty) +{ + if (create_breakpoint (get_current_arch (), + arg, + NULL, 0, 1 /* parse arg */, + 0 /* tempflag */, + bp_fast_tracepoint /* type_wanted */, + 0 /* Ignore count */, + pending_break_support, + NULL, + from_tty, + 1 /* enabled */)) + set_tracepoint_count (breakpoint_count); +} + +/* strace command implementation. Creates a static tracepoint. */ + +void +strace_command (char *arg, int from_tty) +{ + if (create_breakpoint (get_current_arch (), + arg, + NULL, 0, 1 /* parse arg */, + 0 /* tempflag */, + bp_static_tracepoint /* type_wanted */, + 0 /* Ignore count */, + pending_break_support, + NULL, + from_tty, + 1 /* enabled */)) + set_tracepoint_count (breakpoint_count); } +/* Set up a fake reader function that gets command lines from a linked + list that was acquired during tracepoint uploading. */ + +static struct uploaded_tp *this_utp; +static int next_cmd; + +static char * +read_uploaded_action (void) +{ + char *rslt; + + VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt); + + next_cmd++; + + return rslt; +} + +/* Given information about a tracepoint as recorded on a target (which + can be either a live system or a trace file), attempt to create an + equivalent GDB tracepoint. This is not a reliable process, since + the target does not necessarily have all the information used when + the tracepoint was originally defined. */ + +struct breakpoint * +create_tracepoint_from_upload (struct uploaded_tp *utp) +{ + char *addr_str, small_buf[100]; + struct breakpoint *tp; + + if (utp->at_string) + addr_str = utp->at_string; + else + { + /* In the absence of a source location, fall back to raw + address. Since there is no way to confirm that the address + means the same thing as when the trace was started, warn the + user. */ + warning (_("Uploaded tracepoint %d has no source location, using raw address"), + utp->number); + sprintf (small_buf, "*%s", hex_string (utp->addr)); + addr_str = small_buf; + } + + /* There's not much we can do with a sequence of bytecodes. */ + if (utp->cond && !utp->cond_string) + warning (_("Uploaded tracepoint %d condition has no source form, ignoring it"), + utp->number); + + if (!create_breakpoint (get_current_arch (), + addr_str, + utp->cond_string, -1, 0 /* parse cond/thread */, + 0 /* tempflag */, + utp->type /* type_wanted */, + 0 /* Ignore count */, + pending_break_support, + NULL, + 0 /* from_tty */, + utp->enabled /* enabled */)) + return NULL; + + set_tracepoint_count (breakpoint_count); + + /* Get the tracepoint we just created. */ + tp = get_tracepoint (tracepoint_count); + gdb_assert (tp != NULL); + + if (utp->pass > 0) + { + sprintf (small_buf, "%d %d", utp->pass, tp->number); + + trace_pass_command (small_buf, 0); + } + + /* If we have uploaded versions of the original commands, set up a + special-purpose "reader" function and call the usual command line + reader, then pass the result to the breakpoint command-setting + function. */ + if (!VEC_empty (char_ptr, utp->cmd_strings)) + { + struct command_line *cmd_list; + + this_utp = utp; + next_cmd = 0; + + cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL); + + breakpoint_set_commands (tp, cmd_list); + } + else if (!VEC_empty (char_ptr, utp->actions) + || !VEC_empty (char_ptr, utp->step_actions)) + warning (_("Uploaded tracepoint %d actions have no source form, ignoring them"), + utp->number); + + return tp; + } + /* Print information on tracepoint number TPNUM_EXP, or all if omitted. */ static void tracepoints_info (char *tpnum_exp, int from_tty) { - struct breakpoint *b; - int tps_to_list = 0; + int tpnum = -1, num_printed; + + if (tpnum_exp) + tpnum = parse_and_eval_long (tpnum_exp); + + num_printed = breakpoint_1 (tpnum, 0, is_tracepoint); - /* In the no-arguments case, say "No tracepoints" if none found. */ - if (tpnum_exp == 0) + if (num_printed == 0) { - ALL_TRACEPOINTS (b) - { - if (b->number >= 0) - { - tps_to_list = 1; - break; - } - } - if (!tps_to_list) - { - ui_out_message (uiout, 0, "No tracepoints.\n"); - return; - } + if (tpnum == -1) + ui_out_message (uiout, 0, "No tracepoints.\n"); + else + ui_out_message (uiout, 0, "No tracepoint number %d.\n", tpnum); } - /* Otherwise be the same as "info break". */ - breakpoints_info (tpnum_exp, from_tty); + default_collect_info (); } /* The 'enable trace' command enables tracepoints. @@ -9111,14 +11085,14 @@ delete_trace_command (char *arg, int from_tty) { ALL_BREAKPOINTS_SAFE (b, temp) { - if (b->type == bp_tracepoint + if (is_tracepoint (b) && b->number >= 0) delete_breakpoint (b); } } } else - map_breakpoint_numbers (arg, delete_breakpoint); + map_breakpoint_numbers (arg, do_delete_breakpoint, NULL); } /* Set passcount for tracepoint. @@ -9184,6 +11158,22 @@ get_tracepoint (int num) return NULL; } +/* Find the tracepoint with the given target-side number (which may be + different from the tracepoint number after disconnecting and + reconnecting). */ + +struct breakpoint * +get_tracepoint_by_number_on_target (int num) +{ + struct breakpoint *t; + + ALL_TRACEPOINTS (t) + if (t->number_on_target == num) + return t; + + return NULL; +} + /* Utility: parse a tracepoint number and look it up in the list. If MULTI_P is true, there might be a range of tracepoints in ARG. if OPTIONAL_P is true, then if the argument is missing, the most @@ -9229,86 +11219,197 @@ get_tracepoint_by_number (char **arg, int multi_p, int optional_p) return NULL; } -/* save-tracepoints command */ +/* Save information on user settable breakpoints (watchpoints, etc) to + a new script file named FILENAME. If FILTER is non-NULL, call it + on each breakpoint and only include the ones for which it returns + non-zero. */ + static void -tracepoint_save_command (char *args, int from_tty) +save_breakpoints (char *filename, int from_tty, + int (*filter) (const struct breakpoint *)) { struct breakpoint *tp; - int any_tp = 0; - struct action_line *line; - FILE *fp; - char *i1 = " ", *i2 = " "; - char *indent, *actionline, *pathname; - char tmp[40]; + int any = 0; + char *pathname; struct cleanup *cleanup; + struct ui_file *fp; + int extra_trace_bits = 0; - if (args == 0 || *args == 0) - error (_("Argument required (file name in which to save tracepoints)")); + if (filename == 0 || *filename == 0) + error (_("Argument required (file name in which to save)")); /* See if we have anything to save. */ - ALL_TRACEPOINTS (tp) + ALL_BREAKPOINTS (tp) { - any_tp = 1; - break; + /* Skip internal and momentary breakpoints. */ + if (!user_settable_breakpoint (tp)) + continue; + + /* If we have a filter, only save the breakpoints it accepts. */ + if (filter && !filter (tp)) + continue; + + any = 1; + + if (is_tracepoint (tp)) + { + extra_trace_bits = 1; + + /* We can stop searching. */ + break; + } } - if (!any_tp) + + if (!any) { - warning (_("save-tracepoints: no tracepoints to save.")); + warning (_("Nothing to save.")); return; } - pathname = tilde_expand (args); + pathname = tilde_expand (filename); cleanup = make_cleanup (xfree, pathname); - fp = fopen (pathname, "w"); + fp = gdb_fopen (pathname, "w"); if (!fp) - error (_("Unable to open file '%s' for saving tracepoints (%s)"), - args, safe_strerror (errno)); - make_cleanup_fclose (fp); - - ALL_TRACEPOINTS (tp) + error (_("Unable to open file '%s' for saving (%s)"), + filename, safe_strerror (errno)); + make_cleanup_ui_file_delete (fp); + + if (extra_trace_bits) + save_trace_state_variables (fp); + + ALL_BREAKPOINTS (tp) { - if (tp->addr_string) - fprintf (fp, "trace %s\n", tp->addr_string); + /* Skip internal and momentary breakpoints. */ + if (!user_settable_breakpoint (tp)) + continue; + + /* If we have a filter, only save the breakpoints it accepts. */ + if (filter && !filter (tp)) + continue; + + if (tp->ops != NULL) + (tp->ops->print_recreate) (tp, fp); else { - sprintf_vma (tmp, tp->loc->address); - fprintf (fp, "trace *0x%s\n", tmp); + if (tp->type == bp_fast_tracepoint) + fprintf_unfiltered (fp, "ftrace"); + if (tp->type == bp_static_tracepoint) + fprintf_unfiltered (fp, "strace"); + else if (tp->type == bp_tracepoint) + fprintf_unfiltered (fp, "trace"); + else if (tp->type == bp_breakpoint && tp->disposition == disp_del) + fprintf_unfiltered (fp, "tbreak"); + else if (tp->type == bp_breakpoint) + fprintf_unfiltered (fp, "break"); + else if (tp->type == bp_hardware_breakpoint + && tp->disposition == disp_del) + fprintf_unfiltered (fp, "thbreak"); + else if (tp->type == bp_hardware_breakpoint) + fprintf_unfiltered (fp, "hbreak"); + else if (tp->type == bp_watchpoint) + fprintf_unfiltered (fp, "watch"); + else if (tp->type == bp_hardware_watchpoint) + fprintf_unfiltered (fp, "watch"); + else if (tp->type == bp_read_watchpoint) + fprintf_unfiltered (fp, "rwatch"); + else if (tp->type == bp_access_watchpoint) + fprintf_unfiltered (fp, "awatch"); + else + internal_error (__FILE__, __LINE__, + _("unhandled breakpoint type %d"), (int) tp->type); + + if (tp->exp_string) + fprintf_unfiltered (fp, " %s", tp->exp_string); + else if (tp->addr_string) + fprintf_unfiltered (fp, " %s", tp->addr_string); + else + { + char tmp[40]; + + sprintf_vma (tmp, tp->loc->address); + fprintf_unfiltered (fp, " *0x%s", tmp); + } } + if (tp->thread != -1) + fprintf_unfiltered (fp, " thread %d", tp->thread); + + if (tp->task != 0) + fprintf_unfiltered (fp, " task %d", tp->task); + + fprintf_unfiltered (fp, "\n"); + + /* Note, we can't rely on tp->number for anything, as we can't + assume the recreated breakpoint numbers will match. Use $bpnum + instead. */ + + if (tp->cond_string) + fprintf_unfiltered (fp, " condition $bpnum %s\n", tp->cond_string); + + if (tp->ignore_count) + fprintf_unfiltered (fp, " ignore $bpnum %d\n", tp->ignore_count); + if (tp->pass_count) - fprintf (fp, " passcount %d\n", tp->pass_count); + fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count); - if (tp->actions) + if (tp->commands) { - fprintf (fp, " actions\n"); - indent = i1; - for (line = tp->actions; line; line = line->next) + volatile struct gdb_exception ex; + + fprintf_unfiltered (fp, " commands\n"); + + ui_out_redirect (uiout, fp); + TRY_CATCH (ex, RETURN_MASK_ERROR) { - struct cmd_list_element *cmd; + print_command_lines (uiout, tp->commands->commands, 2); + } + ui_out_redirect (uiout, NULL); + + if (ex.reason < 0) + throw_exception (ex); - QUIT; /* allow user to bail out with ^C */ - actionline = line->action; - while (isspace ((int) *actionline)) - actionline++; + fprintf_unfiltered (fp, " end\n"); + } - fprintf (fp, "%s%s\n", indent, actionline); - if (*actionline != '#') /* skip for comment lines */ - { - cmd = lookup_cmd (&actionline, cmdlist, "", -1, 1); - if (cmd == 0) - error (_("Bad action list item: %s"), actionline); - if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand)) - indent = i2; - else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand)) - indent = i1; - } - } + if (tp->enable_state == bp_disabled) + fprintf_unfiltered (fp, "disable\n"); + + /* If this is a multi-location breakpoint, check if the locations + should be individually disabled. Watchpoint locations are + special, and not user visible. */ + if (!is_watchpoint (tp) && tp->loc && tp->loc->next) + { + struct bp_location *loc; + int n = 1; + + for (loc = tp->loc; loc != NULL; loc = loc->next, n++) + if (!loc->enabled) + fprintf_unfiltered (fp, "disable $bpnum.%d\n", n); } } + + if (extra_trace_bits && *default_collect) + fprintf_unfiltered (fp, "set default-collect %s\n", default_collect); + do_cleanups (cleanup); if (from_tty) - printf_filtered (_("Tracepoints saved to file '%s'.\n"), args); - return; + printf_filtered (_("Saved to file '%s'.\n"), filename); +} + +/* The `save breakpoints' command. */ + +static void +save_breakpoints_command (char *args, int from_tty) +{ + save_breakpoints (args, from_tty, NULL); +} + +/* The `save tracepoints' command. */ + +static void +save_tracepoints_command (char *args, int from_tty) +{ + save_breakpoints (args, from_tty, is_tracepoint); } /* Create a vector of all tracepoints. */ @@ -9337,13 +11438,14 @@ LOCATION may be a line number, function name, or \"*\" and an address.\n\ If a line number is specified, break at start of code for that line.\n\ If a function is specified, break at start of code for that function.\n\ If an address is specified, break at that exact address.\n\ -With no LOCATION, uses current execution address of selected stack frame.\n\ -This is useful for breaking on return to a stack frame.\n\ +With no LOCATION, uses current execution address of the selected\n\ +stack frame. This is useful for breaking on return to a stack frame.\n\ \n\ THREADNUM is the number from \"info threads\".\n\ CONDITION is a boolean expression.\n\ \n\ -Multiple breakpoints at one place are permitted, and useful if conditional.\n\ +Multiple breakpoints at one place are permitted, and useful if their\n\ +conditions are different.\n\ \n\ Do \"help breakpoints\" for info on other commands dealing with breakpoints." @@ -9379,14 +11481,30 @@ add_catch_command (char *name, char *docstring, set_cmd_completer (command, completer); } +static void +clear_syscall_counts (struct inferior *inf) +{ + inf->total_syscalls_count = 0; + inf->any_syscall_count = 0; + VEC_free (int, inf->syscalls_counts); +} + +static void +save_command (char *arg, int from_tty) +{ + printf_unfiltered (_("\ +\"save\" must be followed by the name of a save subcommand.\n")); + help_list (save_cmdlist, "save ", -1, gdb_stdout); +} + void _initialize_breakpoint (void) { - static struct cmd_list_element *breakpoint_set_cmdlist; - static struct cmd_list_element *breakpoint_show_cmdlist; struct cmd_list_element *c; observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib); + observer_attach_inferior_exit (clear_syscall_counts); + observer_attach_memory_changed (invalidate_bp_value_on_memory_change); breakpoint_chain = 0; /* Don't bother to call set_breakpoint_count. $bpnum isn't useful @@ -9457,7 +11575,7 @@ With a subcommand you can enable temporarily.")); add_com_alias ("en", "enable", class_breakpoint, 1); - add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\ + add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\ Enable some breakpoints.\n\ Give breakpoint numbers (separated by spaces) as arguments.\n\ This is used to cancel the effect of the \"disable\" command.\n\ @@ -9541,6 +11659,7 @@ With no argument, clears all breakpoints in the line that the selected frame\n\ is executing in.\n\ \n\ See also the \"delete\" command which clears breakpoints by number.")); + add_com_alias ("cl", "clear", class_breakpoint, 1); c = add_com ("break", class_breakpoint, break_command, _("\ Set breakpoint at specified line or function.\n" @@ -9597,6 +11716,8 @@ is prefixed with \"server \".\n\n\ Convenience variable \"$bpnum\" contains the number of the last\n\ breakpoint set.")); + add_info_alias ("b", "breakpoints", 1); + if (xdb_commands) add_com ("lb", class_breakpoint, breakpoints_info, _("\ Status of user-settable breakpoints, or breakpoint number NUMBER.\n\ @@ -9718,8 +11839,9 @@ A watchpoint stops execution of your program whenever the value of\n\ an expression is either read or written.")); set_cmd_completer (c, expression_completer); - add_info ("watchpoints", breakpoints_info, - _("Synonym for ``info breakpoints''.")); + add_info ("watchpoints", watchpoints_info, _("\ +Status of watchpoints, or watchpoint number NUMBER.")); + /* XXX: cagney/2005-02-23: This should be a boolean, and should @@ -9752,6 +11874,39 @@ Do \"help tracepoints\" for info on other tracepoint commands.")); add_com_alias ("tra", "trace", class_alias, 1); add_com_alias ("trac", "trace", class_alias, 1); + c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\ +Set a fast tracepoint at specified line or function.\n\ +\n" +BREAK_ARGS_HELP ("ftrace") "\n\ +Do \"help tracepoints\" for info on other tracepoint commands.")); + set_cmd_completer (c, location_completer); + + c = add_com ("strace", class_breakpoint, strace_command, _("\ +Set a static tracepoint at specified line, function or marker.\n\ +\n\ +strace [LOCATION] [if CONDITION]\n\ +LOCATION may be a line number, function name, \"*\" and an address,\n\ +or -m MARKER_ID.\n\ +If a line number is specified, probe the marker at start of code\n\ +for that line. If a function is specified, probe the marker at start\n\ +of code for that function. If an address is specified, probe the marker\n\ +at that exact address. If a marker id is specified, probe the marker\n\ +with that name. With no LOCATION, uses current execution address of\n\ +the selected stack frame.\n\ +Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\ +This collects arbitrary user data passed in the probe point call to the\n\ +tracing library. You can inspect it when analyzing the trace buffer,\n\ +by printing the $_sdata variable like any other convenience variable.\n\ +\n\ +CONDITION is a boolean expression.\n\ +\n\ +Multiple tracepoints at one place are permitted, and useful if their\n\ +conditions are different.\n\ +\n\ +Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\ +Do \"help tracepoints\" for info on other tracepoint commands.")); + set_cmd_completer (c, location_completer); + add_info ("tracepoints", tracepoints_info, _("\ Status of tracepoints, or tracepoint number NUMBER.\n\ Convenience variable \"$tpnum\" contains the number of the\n\ @@ -9785,11 +11940,28 @@ The trace will end when the tracepoint has been passed 'count' times.\n\ Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\ if TPNUM is omitted, passcount refers to the last tracepoint defined.")); - c = add_com ("save-tracepoints", class_trace, tracepoint_save_command, _("\ + add_prefix_cmd ("save", class_breakpoint, save_command, + _("Save breakpoint definitions as a script."), + &save_cmdlist, "save ", + 0/*allow-unknown*/, &cmdlist); + + c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\ +Save current breakpoint definitions as a script.\n\ +This includes all types of breakpoints (breakpoints, watchpoints,\n\ +catchpoints, tracepoints). Use the 'source' command in another debug\n\ +session to restore them."), + &save_cmdlist); + set_cmd_completer (c, filename_completer); + + c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\ Save current tracepoint definitions as a script.\n\ -Use the 'source' command in another debug session to restore them.")); +Use the 'source' command in another debug session to restore them."), + &save_cmdlist); set_cmd_completer (c, filename_completer); + c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0); + deprecate_cmd (c, "save tracepoints"); + add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\ Breakpoint specific settings\n\ Configure various breakpoint-specific variables such as\n\ diff --git a/contrib/gdb-7/gdb/breakpoint.h b/contrib/gdb-7/gdb/breakpoint.h index ba499c6fe0..6f5d050d4a 100644 --- a/contrib/gdb-7/gdb/breakpoint.h +++ b/contrib/gdb-7/gdb/breakpoint.h @@ -1,6 +1,6 @@ /* Data structures associated with breakpoints in GDB. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -83,6 +83,10 @@ enum bptype of scope (with hardware support for watchpoints)). */ bp_call_dummy, + /* A breakpoint set on std::terminate, that is used to catch + otherwise uncaught exceptions thrown during an inferior call. */ + bp_std_terminate, + /* Some dynamic linkers (HP, maybe Solaris) can arrange for special code in the inferior to run when significant events occur in the dynamic linker (for example a library is loaded or unloaded). @@ -118,9 +122,14 @@ enum bptype bp_longjmp_master, + /* Master copies of std::terminate breakpoints. */ + bp_std_terminate_master, + bp_catchpoint, bp_tracepoint, + bp_fast_tracepoint, + bp_static_tracepoint, /* Event for JIT compiled code generation or deletion. */ bp_jit_event, @@ -176,6 +185,9 @@ enum target_hw_bp_type struct bp_target_info { + /* Address space at which the breakpoint was placed. */ + struct address_space *placed_address_space; + /* Address at which the breakpoint was placed. This is normally the same as ADDRESS from the bp_location, except when adjustment happens in gdbarch_breakpoint_from_pc. The most common form of @@ -228,23 +240,22 @@ struct bp_location the same parent breakpoint. */ struct bp_location *next; - /* Pointer to the next breakpoint location, in a global - list of all breakpoint locations. */ - struct bp_location *global_next; - /* Type of this breakpoint location. */ enum bp_loc_type loc_type; /* Each breakpoint location must belong to exactly one higher-level breakpoint. This and the DUPLICATE flag are more straightforward - than reference counting. */ + than reference counting. This pointer is NULL iff this bp_location is in + (and therefore only in) moribund_locations. */ struct breakpoint *owner; - /* Conditional. Break only if this expression's value is nonzero. - Unlike string form of condition, which is associated with breakpoint, - this is associated with location, since if breakpoint has several - locations, the evaluation of expression can be different for - different locations. */ + /* Conditional. Break only if this expression's value is nonzero. + Unlike string form of condition, which is associated with + breakpoint, this is associated with location, since if breakpoint + has several locations, the evaluation of expression can be + different for different locations. Only valid for real + breakpoints; a watchpoint's conditional expression is stored in + the owner breakpoint object. */ struct expression *cond; /* This location's address is in an unloaded solib, and so this @@ -272,6 +283,14 @@ struct bp_location different from the breakpoint architecture. */ struct gdbarch *gdbarch; + /* The program space associated with this breakpoint location + address. Note that an address space may be represented in more + than one program space (e.g. each uClinux program will be given + its own program space, but there will only be one address space + for all of them), but we must not insert more than one location + at the same address in the same address space. */ + struct program_space *pspace; + /* Note that zero is a perfectly valid code address on some platforms (for example, the mn10200 (OBSOLETE) and mn10300 simulators). NULL is not a special value for this field. Valid for all types except @@ -345,6 +364,9 @@ struct breakpoint_ops /* Display information about this breakpoint after setting it (roughly speaking; this is called from "mention"). */ void (*print_mention) (struct breakpoint *); + + /* Print to FP the CLI command that recreates this breakpoint. */ + void (*print_recreate) (struct breakpoint *, struct ui_file *fp); }; enum watchpoint_triggered @@ -366,6 +388,11 @@ DEF_VEC_I(int); typedef struct bp_location *bp_location_p; DEF_VEC_P(bp_location_p); +/* A reference-counted struct command_line. This lets multiple + breakpoints share a single command list. This is an implementation + detail to the breakpoints module. */ +struct counted_command_line; + /* Note that the ->silent field is not currently used by any commands (though the code is in there if it was to be, and set_raw_breakpoint does set it to 0). I implemented it because I thought it would be @@ -404,11 +431,14 @@ struct breakpoint be continued automatically before really stopping. */ int ignore_count; /* Chain of command lines to execute when this breakpoint is hit. */ - struct command_line *commands; + struct counted_command_line *commands; /* Stack depth (address of frame). If nonzero, break only if fp equals this. */ struct frame_id frame_id; + /* The program space used to set the breakpoint. */ + struct program_space *pspace; + /* String we used to set the breakpoint (malloc'd). */ char *addr_string; /* Architecture we used to set the breakpoint. */ @@ -428,6 +458,11 @@ struct breakpoint /* The largest block within which it is valid, or NULL if it is valid anywhere (e.g. consists just of global symbols). */ struct block *exp_valid_block; + /* The conditional expression if any. NULL if not a watchpoint. */ + struct expression *cond_exp; + /* The largest block within which it is valid, or NULL if it is + valid anywhere (e.g. consists just of global symbols). */ + struct block *cond_exp_valid_block; /* Value of the watchpoint the last time we checked it, or NULL when we do not know the value yet or the value was not readable. VAL is never lazy. */ @@ -447,6 +482,11 @@ struct breakpoint should be evaluated on the outermost frame. */ struct frame_id watchpoint_frame; + /* Holds the thread which identifies the frame this watchpoint + should be considered in scope for, or `null_ptid' if the + watchpoint should be evaluated in all threads. */ + ptid_t watchpoint_thread; + /* For hardware watchpoints, the triggered status according to the hardware. */ enum watchpoint_triggered watchpoint_triggered; @@ -495,8 +535,20 @@ struct breakpoint disabling/ending. */ int pass_count; - /* Chain of action lines to execute when this tracepoint is hit. */ - struct action_line *actions; + /* The number of the tracepoint on the target. */ + int number_on_target; + + /* The static tracepoint marker id, if known. */ + char *static_trace_marker_id; + + /* LTTng/UST allow more than one marker with the same ID string, + although it unadvised because it confuses tools. When setting + static tracepoints by marker ID, this will record the index in + the array of markers we found for the given marker ID for which + this static tracepoint corresponds. When resetting + breakpoints, we will use this index to try to find the same + marker again. */ + int static_trace_marker_id_idx; }; typedef struct breakpoint *breakpoint_p; @@ -520,10 +572,24 @@ extern void bpstat_clear (bpstat *); is part of the bpstat is copied as well. */ extern bpstat bpstat_copy (bpstat); -extern bpstat bpstat_stop_status (CORE_ADDR pc, ptid_t ptid); +extern bpstat bpstat_stop_status (struct address_space *aspace, + CORE_ADDR pc, ptid_t ptid); /* This bpstat_what stuff tells wait_for_inferior what to do with a - breakpoint (a challenging task). */ + breakpoint (a challenging task). + + The enum values order defines priority-like order of the actions. + Once you've decided that some action is appropriate, you'll never + go back and decide something of a lower priority is better. Each + of these actions is mutually exclusive with the others. That + means, that if you find yourself adding a new action class here and + wanting to tell GDB that you have two simultaneous actions to + handle, something is wrong, and you probably don't actually need a + new action type. + + Note that a step resume breakpoint overrides another breakpoint of + signal handling (see comment in wait_for_inferior at where we set + the step_resume breakpoint). */ enum bpstat_what_main_action { @@ -532,18 +598,6 @@ enum bpstat_what_main_action else). */ BPSTAT_WHAT_KEEP_CHECKING, - /* Rather than distinguish between noisy and silent stops here, it - might be cleaner to have bpstat_print make that decision (also - taking into account stop_print_frame and source_only). But the - implications are a bit scary (interaction with auto-displays, etc.), - so I won't try it. */ - - /* Stop silently. */ - BPSTAT_WHAT_STOP_SILENT, - - /* Stop and print. */ - BPSTAT_WHAT_STOP_NOISY, - /* Remove breakpoints, single step once, then put them back in and go back to what we were doing. It's possible that this should be removed from the main_action and put into a separate field, to more @@ -560,18 +614,34 @@ enum bpstat_what_main_action BPSTAT_WHAT_KEEP_CHECKING. */ BPSTAT_WHAT_CLEAR_LONGJMP_RESUME, + /* Rather than distinguish between noisy and silent stops here, it + might be cleaner to have bpstat_print make that decision (also + taking into account stop_print_frame and source_only). But the + implications are a bit scary (interaction with auto-displays, etc.), + so I won't try it. */ + + /* Stop silently. */ + BPSTAT_WHAT_STOP_SILENT, + + /* Stop and print. */ + BPSTAT_WHAT_STOP_NOISY, + /* Clear step resume breakpoint, and keep checking. */ BPSTAT_WHAT_STEP_RESUME, + }; - /* Check the dynamic linker's data structures for new libraries, then - keep checking. */ - BPSTAT_WHAT_CHECK_SHLIBS, +/* An enum indicating the kind of "stack dummy" stop. This is a bit + of a misnomer because only one kind of truly a stack dummy. */ +enum stop_stack_kind + { + /* We didn't stop at a stack dummy breakpoint. */ + STOP_NONE = 0, - /* Check for new JITed code. */ - BPSTAT_WHAT_CHECK_JIT, + /* Stopped at a stack dummy. */ + STOP_STACK_DUMMY, - /* This is just used to keep track of how many enums there are. */ - BPSTAT_WHAT_LAST + /* Stopped at std::terminate. */ + STOP_STD_TERMINATE }; struct bpstat_what @@ -582,7 +652,7 @@ struct bpstat_what of BPSTAT_WHAT_STOP_SILENT or BPSTAT_WHAT_STOP_NOISY (the concept of continuing from a call dummy without popping the frame is not a useful one). */ - int call_dummy; + enum stop_stack_kind call_dummy; }; /* The possible return values for print_bpstat, print_it_normal, @@ -601,23 +671,15 @@ struct bpstat_what bpstat_what (bpstat); /* Find the bpstat associated with a breakpoint. NULL otherwise. */ bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *); -/* Find a step_resume breakpoint associated with this bpstat. - (If there are multiple step_resume bp's on the list, this function - will arbitrarily pick one.) - - It is an error to use this function if BPSTAT doesn't contain a - step_resume breakpoint. - - See wait_for_inferior's use of this function. - */ -extern struct breakpoint *bpstat_find_step_resume_breakpoint (bpstat); - /* Nonzero if a signal that we got in wait() was due to circumstances explained by the BS. */ /* Currently that is true if we have hit a breakpoint, or if there is a watchpoint enabled. */ #define bpstat_explains_signal(bs) ((bs) != NULL) +/* Nonzero is this bpstat causes a stop. */ +extern int bpstat_causes_stop (bpstat); + /* Nonzero if we should step constantly (e.g. watchpoints on machines without hardware support). This isn't related to a specific bpstat, just to things like whether watchpoints are set. */ @@ -671,8 +733,11 @@ struct bpstats bpstat next; /* Breakpoint that we are at. */ const struct bp_location *breakpoint_at; - /* Commands left to be done. */ - struct command_line *commands; + /* The associated command list. */ + struct counted_command_line *commands; + /* Commands left to be done. This points somewhere in + base_command. */ + struct command_line *commands_left; /* Old value associated with a watchpoint. */ struct value *old_val; @@ -707,17 +772,23 @@ enum breakpoint_here /* Prototypes for breakpoint-related functions. */ -extern enum breakpoint_here breakpoint_here_p (CORE_ADDR); +extern enum breakpoint_here breakpoint_here_p (struct address_space *, CORE_ADDR); -extern int moribund_breakpoint_here_p (CORE_ADDR); +extern int moribund_breakpoint_here_p (struct address_space *, CORE_ADDR); -extern int breakpoint_inserted_here_p (CORE_ADDR); +extern int breakpoint_inserted_here_p (struct address_space *, CORE_ADDR); -extern int regular_breakpoint_inserted_here_p (CORE_ADDR); +extern int regular_breakpoint_inserted_here_p (struct address_space *, CORE_ADDR); -extern int software_breakpoint_inserted_here_p (CORE_ADDR); +extern int software_breakpoint_inserted_here_p (struct address_space *, CORE_ADDR); -extern int breakpoint_thread_match (CORE_ADDR, ptid_t); +/* Returns true if there's a hardware watchpoint or access watchpoint + inserted in the range defined by ADDR and LEN. */ +extern int hardware_watchpoint_inserted_in_range (struct address_space *, + CORE_ADDR addr, + ULONGEST len); + +extern int breakpoint_thread_match (struct address_space *, CORE_ADDR, ptid_t); extern void until_break_command (char *, int, int); @@ -735,7 +806,8 @@ extern struct breakpoint *clone_momentary_breakpoint (struct breakpoint *bpkt); extern void set_ignore_count (int, int, int); -extern void set_default_breakpoint (int, CORE_ADDR, struct symtab *, int); +extern void set_default_breakpoint (int, struct program_space *, + CORE_ADDR, struct symtab *, int); extern void breakpoint_init_inferior (enum inf_context); @@ -745,6 +817,10 @@ extern void delete_breakpoint (struct breakpoint *); extern void breakpoint_auto_delete (bpstat); +/* Return the chain of command lines to execute when this breakpoint + is hit. */ +extern struct command_line *breakpoint_commands (struct breakpoint *b); + extern void break_command (char *, int); extern void hbreak_command_wrapper (char *, int); @@ -755,17 +831,22 @@ extern void awatch_command_wrapper (char *, int); extern void rwatch_command_wrapper (char *, int); extern void tbreak_command (char *, int); -extern void set_breakpoint (struct gdbarch *gdbarch, - char *address, char *condition, - int hardwareflag, int tempflag, - int thread, int ignore_count, - int pending, - int enabled); +extern int create_breakpoint (struct gdbarch *gdbarch, char *arg, + char *cond_string, int thread, + int parse_condition_and_thread, + int tempflag, enum bptype wanted_type, + int ignore_count, + enum auto_boolean pending_break_support, + struct breakpoint_ops *ops, + int from_tty, + int enabled); extern void insert_breakpoints (void); extern int remove_breakpoints (void); +extern int remove_breakpoints_pid (int pid); + /* This function can be used to physically insert eventpoints from the specified traced inferior process, without modifying the breakpoint package's state. This can be useful for those targets which support @@ -801,12 +882,20 @@ extern void update_breakpoints_after_exec (void); inferior_ptid. */ extern int detach_breakpoints (int); +/* This function is called when program space PSPACE is about to be + deleted. It takes care of updating breakpoints to not reference + this PSPACE anymore. */ +extern void breakpoint_program_space_exit (struct program_space *pspace); + extern void set_longjmp_breakpoint (int thread); extern void delete_longjmp_breakpoint (int thread); extern void enable_overlay_breakpoints (void); extern void disable_overlay_breakpoints (void); +extern void set_std_terminate_breakpoint (void); +extern void delete_std_terminate_breakpoint (void); + /* These functions respectively disable or reenable all currently enabled watchpoints. When disabled, the watchpoints are marked call_disabled. When reenabled, they are marked enabled. @@ -909,13 +998,16 @@ extern int remove_hw_watchpoints (void); /* Manage a software single step breakpoint (or two). Insert may be called twice before remove is called. */ -extern void insert_single_step_breakpoint (struct gdbarch *, CORE_ADDR); +extern void insert_single_step_breakpoint (struct gdbarch *, + struct address_space *, CORE_ADDR); extern void remove_single_step_breakpoints (void); +extern void cancel_single_step_breakpoints (void); /* Manage manual breakpoints, separate from the normal chain of breakpoints. These functions are used in murky target-specific ways. Please do not add more uses! */ -extern void *deprecated_insert_raw_breakpoint (struct gdbarch *, CORE_ADDR); +extern void *deprecated_insert_raw_breakpoint (struct gdbarch *, + struct address_space *, CORE_ADDR); extern int deprecated_remove_raw_breakpoint (struct gdbarch *, void *); /* Check if any hardware watchpoints have triggered, according to the @@ -934,6 +1026,10 @@ extern int breakpoints_always_inserted_mode (void); in our opinion won't ever trigger. */ extern void breakpoint_retire_moribund (void); +/* Set break condition of breakpoint B to EXP. */ +extern void set_breakpoint_condition (struct breakpoint *b, char *exp, + int from_tty); + /* Checks if we are catching syscalls or not. Returns 0 if not, greater than 0 if we are. */ extern int catch_syscall_enabled (void); @@ -949,6 +1045,8 @@ extern void make_breakpoint_silent (struct breakpoint *); /* Return a tracepoint with the given number if found. */ extern struct breakpoint *get_tracepoint (int num); +extern struct breakpoint *get_tracepoint_by_number_on_target (int num); + /* Find a tracepoint by parsing a number in the supplied string. */ extern struct breakpoint *get_tracepoint_by_number (char **arg, int multi_p, int optional_p); @@ -957,4 +1055,20 @@ extern struct breakpoint *get_tracepoint_by_number (char **arg, int multi_p, is newly allocated; the caller should free when done with it. */ extern VEC(breakpoint_p) *all_tracepoints (void); +extern int is_tracepoint (const struct breakpoint *b); + +/* Return a vector of all static tracepoints defined at ADDR. The + vector is newly allocated; the caller should free when done with + it. */ +extern VEC(breakpoint_p) *static_tracepoints_here (CORE_ADDR addr); + +/* Function that can be passed to read_command_line to validate + that each command is suitable for tracepoint command list. */ +extern void check_tracepoint_command (char *line, void *closure); + +/* Call at the start and end of an "rbreak" command to register + breakpoint numbers for a later "commands" command. */ +extern void start_rbreak_breakpoints (void); +extern void end_rbreak_breakpoints (void); + #endif /* !defined (BREAKPOINT_H) */ diff --git a/contrib/gdb-7/gdb/bsd-kvm.c b/contrib/gdb-7/gdb/bsd-kvm.c index 0e202cde1e..c7d6c9d957 100644 --- a/contrib/gdb-7/gdb/bsd-kvm.c +++ b/contrib/gdb-7/gdb/bsd-kvm.c @@ -1,6 +1,7 @@ /* BSD Kernel Data Access Library (libkvm) interface. - Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/bsd-kvm.h b/contrib/gdb-7/gdb/bsd-kvm.h index 4a583e91e8..dc8e231a39 100644 --- a/contrib/gdb-7/gdb/bsd-kvm.h +++ b/contrib/gdb-7/gdb/bsd-kvm.h @@ -1,6 +1,6 @@ /* BSD Kernel Data Access Library (libkvm) interface. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/bsd-uthread.c b/contrib/gdb-7/gdb/bsd-uthread.c index 1de2da4f1d..bb54f2d1c0 100644 --- a/contrib/gdb-7/gdb/bsd-uthread.c +++ b/contrib/gdb-7/gdb/bsd-uthread.c @@ -1,6 +1,6 @@ /* BSD user-level threads support. - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -250,7 +250,7 @@ bsd_uthread_solib_loaded (struct so_list *so) { if (strncmp (so->so_original_name, *names, strlen (*names)) == 0) { - solib_read_symbols (so, so->from_tty ? SYMFILE_VERBOSE : 0); + solib_read_symbols (so, 0); if (bsd_uthread_activate (so->objfile)) { diff --git a/contrib/gdb-7/gdb/bsd-uthread.h b/contrib/gdb-7/gdb/bsd-uthread.h index 6559614ee0..0d9e311012 100644 --- a/contrib/gdb-7/gdb/bsd-uthread.h +++ b/contrib/gdb-7/gdb/bsd-uthread.h @@ -1,6 +1,6 @@ /* BSD user-level threads support. - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/buildsym.c b/contrib/gdb-7/gdb/buildsym.c index 9324a14e3f..e690a0ca0e 100644 --- a/contrib/gdb-7/gdb/buildsym.c +++ b/contrib/gdb-7/gdb/buildsym.c @@ -1,7 +1,7 @@ /* Support routines for building symbol tables in GDB's internal format. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -163,8 +163,8 @@ find_symbol_in_list (struct pending *list, char *name, int length) for (j = list->nsyms; --j >= 0;) { pp = SYMBOL_LINKAGE_NAME (list->symbol[j]); - if (*pp == *name && strncmp (pp, name, length) == 0 && - pp[length] == '\0') + if (*pp == *name && strncmp (pp, name, length) == 0 + && pp[length] == '\0') { return (list->symbol[j]); } @@ -387,6 +387,7 @@ finish_block (struct symbol *symbol, struct pending **listhead, } block_set_using (block, using_directives, &objfile->objfile_obstack); + using_directives = NULL; record_pending_block (objfile, block, opblock); @@ -583,8 +584,8 @@ start_subfile (char *name, char *dirname) source file. */ subfile->language = deduce_language_from_filename (subfile->name); - if (subfile->language == language_unknown && - subfile->next != NULL) + if (subfile->language == language_unknown + && subfile->next != NULL) { subfile->language = subfile->next->language; } @@ -656,8 +657,8 @@ patch_subfile_names (struct subfile *subfile, char *name) symbols have been processed for a given source file. */ subfile->language = deduce_language_from_filename (subfile->name); - if (subfile->language == language_unknown && - subfile->next != NULL) + if (subfile->language == language_unknown + && subfile->next != NULL) { subfile->language = subfile->next->language; } @@ -673,7 +674,7 @@ void push_subfile (void) { struct subfile_stack *tem - = (struct subfile_stack *) xmalloc (sizeof (struct subfile_stack)); + = (struct subfile_stack *) xmalloc (sizeof (struct subfile_stack)); tem->next = subfile_stack; subfile_stack = tem; @@ -707,8 +708,8 @@ void record_line (struct subfile *subfile, int line, CORE_ADDR pc) { struct linetable_entry *e; - /* Ignore the dummy line number in libg.o */ + /* Ignore the dummy line number in libg.o */ if (line == 0xffff) { return; diff --git a/contrib/gdb-7/gdb/buildsym.h b/contrib/gdb-7/gdb/buildsym.h index 6f8b09f4e0..f559b4b04b 100644 --- a/contrib/gdb-7/gdb/buildsym.h +++ b/contrib/gdb-7/gdb/buildsym.h @@ -1,6 +1,6 @@ /* Build symbol tables in GDB's internal format. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1996, - 1997, 1998, 1999, 2000, 2002, 2003, 2007, 2008, 2009 + 1997, 1998, 1999, 2000, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/c-exp.y b/contrib/gdb-7/gdb/c-exp.y index f8e4f12826..d83bbf4d8a 100644 --- a/contrib/gdb-7/gdb/c-exp.y +++ b/contrib/gdb-7/gdb/c-exp.y @@ -1,6 +1,6 @@ /* YACC parser for C expressions, for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2003, 2004, 2006, 2007, 2008, 2009 + 1998, 1999, 2000, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -157,11 +157,12 @@ void yyerror (char *); %{ /* YYSTYPE gets defined by %union */ static int parse_number (char *, int, int, YYSTYPE *); +static struct stoken operator_stoken (const char *); %} %type exp exp1 type_exp start variable qualified_name lcurly %type rcurly -%type type typebase qualified_type +%type type typebase %type nonempty_typelist /* %type block */ @@ -185,6 +186,7 @@ static int parse_number (char *, int, int, YYSTYPE *); %token STRING %token CHAR %token NAME /* BLOCKNAME defined below to give it higher precedence. */ +%token UNKNOWN_CPP_NAME %token COMPLETE %token TYPENAME %type name @@ -199,15 +201,19 @@ static int parse_number (char *, int, int, YYSTYPE *); %token NAME_OR_INT +%token OPERATOR %token STRUCT CLASS UNION ENUM SIZEOF UNSIGNED COLONCOLON %token TEMPLATE %token ERROR +%token NEW DELETE +%type operator +%token REINTERPRET_CAST DYNAMIC_CAST STATIC_CAST CONST_CAST /* Special type cases, put in to allow the parser to distinguish different legal basetypes. */ %token SIGNED_KEYWORD LONG SHORT INT_KEYWORD CONST_KEYWORD VOLATILE_KEYWORD DOUBLE_KEYWORD -%token VARIABLE +%token VARIABLE %token ASSIGN_MODIFY @@ -386,6 +392,29 @@ exp : exp '(' write_exp_elt_opcode (OP_FUNCALL); } ; +exp : UNKNOWN_CPP_NAME '(' + { + /* This could potentially be a an argument defined + lookup function (Koenig). */ + write_exp_elt_opcode (OP_ADL_FUNC); + write_exp_elt_block (expression_context_block); + write_exp_elt_sym (NULL); /* Placeholder. */ + write_exp_string ($1.stoken); + write_exp_elt_opcode (OP_ADL_FUNC); + + /* This is to save the value of arglist_len + being accumulated by an outer function call. */ + + start_arglist (); + } + arglist ')' %prec ARROW + { + write_exp_elt_opcode (OP_FUNCALL); + write_exp_elt_longcst ((LONGEST) end_arglist ()); + write_exp_elt_opcode (OP_FUNCALL); + } + ; + lcurly : '{' { start_arglist (); } ; @@ -401,6 +430,18 @@ arglist : arglist ',' exp %prec ABOVE_COMMA { arglist_len++; } ; +exp : exp '(' nonempty_typelist ')' const_or_volatile + { int i; + write_exp_elt_opcode (TYPE_INSTANCE); + write_exp_elt_longcst ((LONGEST) $3[0]); + for (i = 0; i < $3[0]; ++i) + write_exp_elt_type ($3[i + 1]); + write_exp_elt_longcst((LONGEST) $3[0]); + write_exp_elt_opcode (TYPE_INSTANCE); + free ($3); + } + ; + rcurly : '}' { $$ = end_arglist () - 1; } ; @@ -564,7 +605,9 @@ exp : variable ; exp : VARIABLE - /* Already written by write_dollar_variable. */ + { + write_dollar_variable ($1); + } ; exp : SIZEOF '(' type ')' %prec UNARY @@ -575,6 +618,32 @@ exp : SIZEOF '(' type ')' %prec UNARY write_exp_elt_opcode (OP_LONG); } ; +exp : REINTERPRET_CAST '<' type '>' '(' exp ')' %prec UNARY + { write_exp_elt_opcode (UNOP_REINTERPRET_CAST); + write_exp_elt_type ($3); + write_exp_elt_opcode (UNOP_REINTERPRET_CAST); } + ; + +exp : STATIC_CAST '<' type '>' '(' exp ')' %prec UNARY + { write_exp_elt_opcode (UNOP_CAST); + write_exp_elt_type ($3); + write_exp_elt_opcode (UNOP_CAST); } + ; + +exp : DYNAMIC_CAST '<' type '>' '(' exp ')' %prec UNARY + { write_exp_elt_opcode (UNOP_DYNAMIC_CAST); + write_exp_elt_type ($3); + write_exp_elt_opcode (UNOP_DYNAMIC_CAST); } + ; + +exp : CONST_CAST '<' type '>' '(' exp ')' %prec UNARY + { /* We could do more error checking here, but + it doesn't seem worthwhile. */ + write_exp_elt_opcode (UNOP_CAST); + write_exp_elt_type ($3); + write_exp_elt_opcode (UNOP_CAST); } + ; + string_exp: STRING { @@ -700,9 +769,10 @@ variable: block COLONCOLON name write_exp_elt_opcode (OP_VAR_VALUE); } ; -qualified_name: typebase COLONCOLON name +qualified_name: TYPENAME COLONCOLON name { - struct type *type = $1; + struct type *type = $1.type; + CHECK_TYPEDEF (type); if (TYPE_CODE (type) != TYPE_CODE_STRUCT && TYPE_CODE (type) != TYPE_CODE_UNION && TYPE_CODE (type) != TYPE_CODE_NAMESPACE) @@ -714,10 +784,11 @@ qualified_name: typebase COLONCOLON name write_exp_string ($3); write_exp_elt_opcode (OP_SCOPE); } - | typebase COLONCOLON '~' name + | TYPENAME COLONCOLON '~' name { - struct type *type = $1; + struct type *type = $1.type; struct stoken tmp_token; + CHECK_TYPEDEF (type); if (TYPE_CODE (type) != TYPE_CODE_STRUCT && TYPE_CODE (type) != TYPE_CODE_UNION && TYPE_CODE (type) != TYPE_CODE_NAMESPACE) @@ -737,12 +808,19 @@ qualified_name: typebase COLONCOLON name write_exp_string (tmp_token); write_exp_elt_opcode (OP_SCOPE); } + | TYPENAME COLONCOLON name COLONCOLON name + { + char *copy = copy_name ($3); + error (_("No type \"%s\" within class " + "or namespace \"%s\"."), + copy, TYPE_NAME ($1.type)); + } ; variable: qualified_name - | COLONCOLON name + | COLONCOLON name_not_typename { - char *name = copy_name ($2); + char *name = copy_name ($2.stoken); struct symbol *sym; struct minimal_symbol *msymbol; @@ -775,9 +853,9 @@ variable: name_not_typename { if (symbol_read_needs_frame (sym)) { - if (innermost_block == 0 || - contained_in (block_found, - innermost_block)) + if (innermost_block == 0 + || contained_in (block_found, + innermost_block)) innermost_block = block_found; } @@ -794,8 +872,9 @@ variable: name_not_typename /* C++: it hangs off of `this'. Must not inadvertently convert from a method call to data ref. */ - if (innermost_block == 0 || - contained_in (block_found, innermost_block)) + if (innermost_block == 0 + || contained_in (block_found, + innermost_block)) innermost_block = block_found; write_exp_elt_opcode (OP_THIS); write_exp_elt_opcode (OP_THIS); @@ -991,77 +1070,6 @@ typebase /* Implements (approximately): (type-qualifier)* type-specifier */ { $$ = follow_types ($2); } | typebase const_or_volatile_or_space_identifier_noopt { $$ = follow_types ($1); } - | qualified_type - ; - -/* FIXME: carlton/2003-09-25: This next bit leads to lots of - reduce-reduce conflicts, because the parser doesn't know whether or - not to use qualified_name or qualified_type: the rules are - identical. If the parser is parsing 'A::B::x', then, when it sees - the second '::', it knows that the expression to the left of it has - to be a type, so it uses qualified_type. But if it is parsing just - 'A::B', then it doesn't have any way of knowing which rule to use, - so there's a reduce-reduce conflict; it picks qualified_name, since - that occurs earlier in this file than qualified_type. - - There's no good way to fix this with the grammar as it stands; as - far as I can tell, some of the problems arise from ambiguities that - GDB introduces ('start' can be either an expression or a type), but - some of it is inherent to the nature of C++ (you want to treat the - input "(FOO)" fairly differently depending on whether FOO is an - expression or a type, and if FOO is a complex expression, this can - be hard to determine at the right time). Fortunately, it works - pretty well in most cases. For example, if you do 'ptype A::B', - where A::B is a nested type, then the parser will mistakenly - misidentify it as an expression; but evaluate_subexp will get - called with 'noside' set to EVAL_AVOID_SIDE_EFFECTS, and everything - will work out anyways. But there are situations where the parser - will get confused: the most common one that I've run into is when - you want to do - - print *((A::B *) x)" - - where the parser doesn't realize that A::B has to be a type until - it hits the first right paren, at which point it's too late. (The - workaround is to type "print *(('A::B' *) x)" instead.) (And - another solution is to fix our symbol-handling code so that the - user never wants to type something like that in the first place, - because we get all the types right without the user's help!) - - Perhaps we could fix this by making the lexer smarter. Some of - this functionality used to be in the lexer, but in a way that - worked even less well than the current solution: that attempt - involved having the parser sometimes handle '::' and having the - lexer sometimes handle it, and without a clear division of - responsibility, it quickly degenerated into a big mess. Probably - the eventual correct solution will give more of a role to the lexer - (ideally via code that is shared between the lexer and - decode_line_1), but I'm not holding my breath waiting for somebody - to get around to cleaning this up... */ - -qualified_type: typebase COLONCOLON name - { - struct type *type = $1; - struct type *new_type; - char *ncopy = alloca ($3.length + 1); - - memcpy (ncopy, $3.ptr, $3.length); - ncopy[$3.length] = '\0'; - - if (TYPE_CODE (type) != TYPE_CODE_STRUCT - && TYPE_CODE (type) != TYPE_CODE_UNION - && TYPE_CODE (type) != TYPE_CODE_NAMESPACE) - error ("`%s' is not defined as an aggregate type.", - TYPE_NAME (type)); - - new_type = cp_lookup_nested_type (type, ncopy, - expression_context_block); - if (new_type == NULL) - error ("No type \"%s\" within class or namespace \"%s\".", - ncopy, TYPE_NAME (type)); - - $$ = new_type; - } ; typename: TYPENAME @@ -1117,10 +1125,131 @@ const_or_volatile_noopt: const_and_volatile { push_type (tp_volatile); } ; +operator: OPERATOR NEW + { $$ = operator_stoken (" new"); } + | OPERATOR DELETE + { $$ = operator_stoken (" delete"); } + | OPERATOR NEW '[' ']' + { $$ = operator_stoken (" new[]"); } + | OPERATOR DELETE '[' ']' + { $$ = operator_stoken (" delete[]"); } + | OPERATOR '+' + { $$ = operator_stoken ("+"); } + | OPERATOR '-' + { $$ = operator_stoken ("-"); } + | OPERATOR '*' + { $$ = operator_stoken ("*"); } + | OPERATOR '/' + { $$ = operator_stoken ("/"); } + | OPERATOR '%' + { $$ = operator_stoken ("%"); } + | OPERATOR '^' + { $$ = operator_stoken ("^"); } + | OPERATOR '&' + { $$ = operator_stoken ("&"); } + | OPERATOR '|' + { $$ = operator_stoken ("|"); } + | OPERATOR '~' + { $$ = operator_stoken ("~"); } + | OPERATOR '!' + { $$ = operator_stoken ("!"); } + | OPERATOR '=' + { $$ = operator_stoken ("="); } + | OPERATOR '<' + { $$ = operator_stoken ("<"); } + | OPERATOR '>' + { $$ = operator_stoken (">"); } + | OPERATOR ASSIGN_MODIFY + { const char *op = "unknown"; + switch ($2) + { + case BINOP_RSH: + op = ">>="; + break; + case BINOP_LSH: + op = "<<="; + break; + case BINOP_ADD: + op = "+="; + break; + case BINOP_SUB: + op = "-="; + break; + case BINOP_MUL: + op = "*="; + break; + case BINOP_DIV: + op = "/="; + break; + case BINOP_REM: + op = "%="; + break; + case BINOP_BITWISE_IOR: + op = "|="; + break; + case BINOP_BITWISE_AND: + op = "&="; + break; + case BINOP_BITWISE_XOR: + op = "^="; + break; + default: + break; + } + + $$ = operator_stoken (op); + } + | OPERATOR LSH + { $$ = operator_stoken ("<<"); } + | OPERATOR RSH + { $$ = operator_stoken (">>"); } + | OPERATOR EQUAL + { $$ = operator_stoken ("=="); } + | OPERATOR NOTEQUAL + { $$ = operator_stoken ("!="); } + | OPERATOR LEQ + { $$ = operator_stoken ("<="); } + | OPERATOR GEQ + { $$ = operator_stoken (">="); } + | OPERATOR ANDAND + { $$ = operator_stoken ("&&"); } + | OPERATOR OROR + { $$ = operator_stoken ("||"); } + | OPERATOR INCREMENT + { $$ = operator_stoken ("++"); } + | OPERATOR DECREMENT + { $$ = operator_stoken ("--"); } + | OPERATOR ',' + { $$ = operator_stoken (","); } + | OPERATOR ARROW_STAR + { $$ = operator_stoken ("->*"); } + | OPERATOR ARROW + { $$ = operator_stoken ("->"); } + | OPERATOR '(' ')' + { $$ = operator_stoken ("()"); } + | OPERATOR '[' ']' + { $$ = operator_stoken ("[]"); } + | OPERATOR ptype + { char *name; + long length; + struct ui_file *buf = mem_fileopen (); + + c_print_type ($2, NULL, buf, -1, 0); + name = ui_file_xstrdup (buf, &length); + ui_file_delete (buf); + $$ = operator_stoken (name); + free (name); + } + ; + + + name : NAME { $$ = $1.stoken; } | BLOCKNAME { $$ = $1.stoken; } | TYPENAME { $$ = $1.stoken; } | NAME_OR_INT { $$ = $1.stoken; } + | UNKNOWN_CPP_NAME { $$ = $1.stoken; } + | operator { $$ = $1; } ; name_not_typename : NAME @@ -1132,10 +1261,36 @@ name_not_typename : NAME context where only a name could occur, this might be useful. | NAME_OR_INT */ + | operator + { + $$.stoken = $1; + $$.sym = lookup_symbol ($1.ptr, + expression_context_block, + VAR_DOMAIN, + &$$.is_a_field_of_this); + } + | UNKNOWN_CPP_NAME ; %% +/* Returns a stoken of the operator name given by OP (which does not + include the string "operator"). */ +static struct stoken +operator_stoken (const char *op) +{ + static const char *operator_string = "operator"; + struct stoken st = { NULL, 0 }; + st.length = strlen (operator_string) + strlen (op); + st.ptr = malloc (st.length + 1); + strcpy (st.ptr, operator_string); + strcat (st.ptr, op); + + /* The toplevel (c_parse) will free the memory allocated here. */ + make_cleanup (free, st.ptr); + return st; +}; + /* Take care of parsing a number (anything that starts with a digit). Set yylval and return the token type; update lexptr. LEN is the number of characters in it. */ @@ -1216,6 +1371,12 @@ parse_number (char *p, int len, int parsed_float, YYSTYPE *putithere) &putithere->typed_val_float.dval, s); p[len] = saved_char; /* restore the input stream */ + if (num == 0) + { + free (s); + return ERROR; + } + if (num == 1) putithere->typed_val_float.type = parse_type->builtin_double; @@ -1255,6 +1416,16 @@ parse_number (char *p, int len, int parsed_float, YYSTYPE *putithere) } break; + case 'b': + case 'B': + if (len >= 3) + { + p += 2; + base = 2; + len -= 2; + } + break; + case 't': case 'T': case 'd': @@ -1569,7 +1740,7 @@ static int parse_string_or_char (char *tokptr, char **outptr, struct typed_stoken *value, int *host_chars) { - int quote, i; + int quote; enum c_string_type type; /* Build the gdb internal form of the input string in tempbuf. Note @@ -1714,6 +1885,9 @@ static const struct token ident_tokens[] = {"long", LONG, OP_NULL, 0}, {"true", TRUEKEYWORD, OP_NULL, 1}, {"int", INT_KEYWORD, OP_NULL, 0}, + {"new", NEW, OP_NULL, 1}, + {"delete", DELETE, OP_NULL, 1}, + {"operator", OPERATOR, OP_NULL, 1}, {"and", ANDAND, BINOP_END, 1}, {"and_eq", ASSIGN_MODIFY, BINOP_BITWISE_AND, 1}, @@ -1725,7 +1899,12 @@ static const struct token ident_tokens[] = {"or", OROR, BINOP_END, 1}, {"or_eq", ASSIGN_MODIFY, BINOP_BITWISE_IOR, 1}, {"xor", '^', OP_NULL, 1}, - {"xor_eq", ASSIGN_MODIFY, BINOP_BITWISE_XOR, 1} + {"xor_eq", ASSIGN_MODIFY, BINOP_BITWISE_XOR, 1}, + + {"const_cast", CONST_CAST, OP_NULL, 1 }, + {"dynamic_cast", DYNAMIC_CAST, OP_NULL, 1 }, + {"static_cast", STATIC_CAST, OP_NULL, 1 }, + {"reinterpret_cast", REINTERPRET_CAST, OP_NULL, 1 } }; /* When we find that lexptr (the global var defined in parse.c) is @@ -1803,6 +1982,16 @@ scan_macro_cleanup (void *dummy) obstack_free (&expansion_obstack, NULL); } +/* Return true iff the token represents a C++ cast operator. */ + +static int +is_cast_operator (const char *token, int len) +{ + return (! strncmp (token, "dynamic_cast", len) + || ! strncmp (token, "static_cast", len) + || ! strncmp (token, "reinterpret_cast", len) + || ! strncmp (token, "const_cast", len)); +} /* The scope used for macro expansion. */ static struct macro_scope *expression_macro_scope; @@ -1820,7 +2009,7 @@ static int last_was_structop; /* Read one token, getting characters through lexptr. */ static int -yylex (void) +lex_one_token (void) { int c; int namelen; @@ -2066,16 +2255,19 @@ yylex (void) FIXME: This mishandles `print $a<4&&$a>3'. */ if (c == '<') - { - /* Scan ahead to get rest of the template specification. Note - that we look ahead only when the '<' adjoins non-whitespace - characters; for comparison expressions, e.g. "a < b > c", - there must be spaces before the '<', etc. */ + { + if (! is_cast_operator (tokstart, namelen)) + { + /* Scan ahead to get rest of the template specification. Note + that we look ahead only when the '<' adjoins non-whitespace + characters; for comparison expressions, e.g. "a < b > c", + there must be spaces before the '<', etc. */ - char * p = find_template_name_end (tokstart + namelen); - if (p) - namelen = p - tokstart; - break; + char * p = find_template_name_end (tokstart + namelen); + if (p) + namelen = p - tokstart; + } + break; } c = tokstart[++namelen]; } @@ -2091,6 +2283,24 @@ yylex (void) return 0; } + /* For the same reason (breakpoint conditions), "thread N" + terminates the expression. "thread" could be an identifier, but + an identifier is never followed by a number without intervening + punctuation. "task" is similar. Handle abbreviations of these, + similarly to breakpoint.c:find_condition_and_thread. */ + if (namelen >= 1 + && (strncmp (tokstart, "thread", namelen) == 0 + || strncmp (tokstart, "task", namelen) == 0) + && (tokstart[namelen] == ' ' || tokstart[namelen] == '\t') + && ! scanning_macro_expansion ()) + { + char *p = tokstart + namelen + 1; + while (*p == ' ' || *p == '\t') + p++; + if (*p >= '0' && *p <= '9') + return 0; + } + lexptr += namelen; tryname: @@ -2114,85 +2324,255 @@ yylex (void) } if (*tokstart == '$') + return VARIABLE; + + if (in_parse_field && *lexptr == '\0') + saw_name_at_eof = 1; + return NAME; +} + +/* An object of this type is pushed on a FIFO by the "outer" lexer. */ +typedef struct +{ + int token; + YYSTYPE value; +} token_and_value; + +DEF_VEC_O (token_and_value); + +/* A FIFO of tokens that have been read but not yet returned to the + parser. */ +static VEC (token_and_value) *token_fifo; + +/* Non-zero if the lexer should return tokens from the FIFO. */ +static int popping; + +/* Temporary storage for c_lex; this holds symbol names as they are + built up. */ +static struct obstack name_obstack; + +/* Classify a NAME token. The contents of the token are in `yylval'. + Updates yylval and returns the new token type. BLOCK is the block + in which lookups start; this can be NULL to mean the global + scope. */ +static int +classify_name (struct block *block) +{ + struct symbol *sym; + char *copy; + int is_a_field_of_this = 0; + + copy = copy_name (yylval.sval); + + sym = lookup_symbol (copy, block, VAR_DOMAIN, + parse_language->la_language == language_cplus + ? &is_a_field_of_this : (int *) NULL); + + if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK) { - write_dollar_variable (yylval.sval); - return VARIABLE; + yylval.ssym.sym = sym; + yylval.ssym.is_a_field_of_this = is_a_field_of_this; + return BLOCKNAME; } - - /* Use token-type BLOCKNAME for symbols that happen to be defined as - functions or symtabs. If this is not so, then ... - Use token-type TYPENAME for symbols that happen to be defined - currently as names of types; NAME for other symbols. - The caller is not constrained to care about the distinction. */ - { - struct symbol *sym; - int is_a_field_of_this = 0; - int hextype; - - sym = lookup_symbol (copy, expression_context_block, - VAR_DOMAIN, - parse_language->la_language == language_cplus - ? &is_a_field_of_this : (int *) NULL); - /* Call lookup_symtab, not lookup_partial_symtab, in case there are - no psymtabs (coff, xcoff, or some future change to blow away the - psymtabs once once symbols are read). */ - if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK) - { - yylval.ssym.sym = sym; - yylval.ssym.is_a_field_of_this = is_a_field_of_this; - return BLOCKNAME; - } - else if (!sym) - { /* See if it's a file name. */ - struct symtab *symtab; - - symtab = lookup_symtab (copy); + else if (!sym) + { + /* See if it's a file name. */ + struct symtab *symtab; - if (symtab) - { - yylval.bval = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK); - return FILENAME; - } - } + symtab = lookup_symtab (copy); + if (symtab) + { + yylval.bval = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK); + return FILENAME; + } + } - if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF) - { - /* NOTE: carlton/2003-09-25: There used to be code here to - handle nested types. It didn't work very well. See the - comment before qualified_type for more info. */ - yylval.tsym.type = SYMBOL_TYPE (sym); - return TYPENAME; - } - yylval.tsym.type - = language_lookup_primitive_type_by_name (parse_language, - parse_gdbarch, copy); - if (yylval.tsym.type != NULL) + if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF) + { + yylval.tsym.type = SYMBOL_TYPE (sym); return TYPENAME; + } - /* Input names that aren't symbols but ARE valid hex numbers, - when the input radix permits them, can be names or numbers - depending on the parse. Note we support radixes > 16 here. */ - if (!sym && - ((tokstart[0] >= 'a' && tokstart[0] < 'a' + input_radix - 10) || - (tokstart[0] >= 'A' && tokstart[0] < 'A' + input_radix - 10))) - { - YYSTYPE newlval; /* Its value is ignored. */ - hextype = parse_number (tokstart, namelen, 0, &newlval); - if (hextype == INT) - { - yylval.ssym.sym = sym; - yylval.ssym.is_a_field_of_this = is_a_field_of_this; - return NAME_OR_INT; - } - } + yylval.tsym.type + = language_lookup_primitive_type_by_name (parse_language, + parse_gdbarch, copy); + if (yylval.tsym.type != NULL) + return TYPENAME; + + /* Input names that aren't symbols but ARE valid hex numbers, when + the input radix permits them, can be names or numbers depending + on the parse. Note we support radixes > 16 here. */ + if (!sym + && ((copy[0] >= 'a' && copy[0] < 'a' + input_radix - 10) + || (copy[0] >= 'A' && copy[0] < 'A' + input_radix - 10))) + { + YYSTYPE newlval; /* Its value is ignored. */ + int hextype = parse_number (copy, yylval.sval.length, 0, &newlval); + if (hextype == INT) + { + yylval.ssym.sym = sym; + yylval.ssym.is_a_field_of_this = is_a_field_of_this; + return NAME_OR_INT; + } + } + + /* Any other kind of symbol */ + yylval.ssym.sym = sym; + yylval.ssym.is_a_field_of_this = is_a_field_of_this; + + if (sym == NULL + && parse_language->la_language == language_cplus + && !lookup_minimal_symbol (copy, NULL, NULL)) + return UNKNOWN_CPP_NAME; - /* Any other kind of symbol */ - yylval.ssym.sym = sym; - yylval.ssym.is_a_field_of_this = is_a_field_of_this; - if (in_parse_field && *lexptr == '\0') - saw_name_at_eof = 1; + return NAME; +} + +/* Like classify_name, but used by the inner loop of the lexer, when a + name might have already been seen. FIRST_NAME is true if the token + in `yylval' is the first component of a name, false otherwise. If + this function returns NAME, it might not have updated `yylval'. + This is ok because the caller only cares about TYPENAME. */ +static int +classify_inner_name (struct block *block, int first_name) +{ + struct type *type, *new_type; + char *copy; + + if (first_name) + return classify_name (block); + + type = check_typedef (yylval.tsym.type); + if (TYPE_CODE (type) != TYPE_CODE_STRUCT + && TYPE_CODE (type) != TYPE_CODE_UNION + && TYPE_CODE (type) != TYPE_CODE_NAMESPACE) + /* We know the caller won't expect us to update yylval. */ return NAME; - } + + copy = copy_name (yylval.tsym.stoken); + new_type = cp_lookup_nested_type (type, copy, block); + + if (new_type == NULL) + /* We know the caller won't expect us to update yylval. */ + return NAME; + + yylval.tsym.type = new_type; + return TYPENAME; +} + +/* The outer level of a two-level lexer. This calls the inner lexer + to return tokens. It then either returns these tokens, or + aggregates them into a larger token. This lets us work around a + problem in our parsing approach, where the parser could not + distinguish between qualified names and qualified types at the + right point. + + This approach is still not ideal, because it mishandles template + types. See the comment in lex_one_token for an example. However, + this is still an improvement over the earlier approach, and will + suffice until we move to better parsing technology. */ +static int +yylex (void) +{ + token_and_value current; + int first_was_coloncolon, last_was_coloncolon, first_iter; + + if (popping && !VEC_empty (token_and_value, token_fifo)) + { + token_and_value tv = *VEC_index (token_and_value, token_fifo, 0); + VEC_ordered_remove (token_and_value, token_fifo, 0); + yylval = tv.value; + return tv.token; + } + popping = 0; + + current.token = lex_one_token (); + if (current.token == NAME) + current.token = classify_name (expression_context_block); + if (parse_language->la_language != language_cplus + || (current.token != TYPENAME && current.token != COLONCOLON)) + return current.token; + + first_was_coloncolon = current.token == COLONCOLON; + last_was_coloncolon = first_was_coloncolon; + obstack_free (&name_obstack, obstack_base (&name_obstack)); + if (!last_was_coloncolon) + obstack_grow (&name_obstack, yylval.sval.ptr, yylval.sval.length); + current.value = yylval; + first_iter = 1; + while (1) + { + token_and_value next; + + next.token = lex_one_token (); + next.value = yylval; + + if (next.token == NAME && last_was_coloncolon) + { + int classification; + + classification = classify_inner_name (first_was_coloncolon + ? NULL + : expression_context_block, + first_iter); + /* We keep going until we either run out of names, or until + we have a qualified name which is not a type. */ + if (classification != TYPENAME) + { + /* Push the final component and leave the loop. */ + VEC_safe_push (token_and_value, token_fifo, &next); + break; + } + + /* Update the partial name we are constructing. */ + if (!first_iter) + { + /* We don't want to put a leading "::" into the name. */ + obstack_grow_str (&name_obstack, "::"); + } + obstack_grow (&name_obstack, next.value.sval.ptr, + next.value.sval.length); + + yylval.sval.ptr = obstack_base (&name_obstack); + yylval.sval.length = obstack_object_size (&name_obstack); + current.value = yylval; + current.token = classification; + + last_was_coloncolon = 0; + } + else if (next.token == COLONCOLON && !last_was_coloncolon) + last_was_coloncolon = 1; + else + { + /* We've reached the end of the name. */ + VEC_safe_push (token_and_value, token_fifo, &next); + break; + } + + first_iter = 0; + } + + popping = 1; + + /* If we ended with a "::", insert it too. */ + if (last_was_coloncolon) + { + token_and_value cc; + memset (&cc, 0, sizeof (token_and_value)); + if (first_was_coloncolon && first_iter) + { + yylval = cc.value; + return COLONCOLON; + } + cc.token = COLONCOLON; + VEC_safe_insert (token_and_value, token_fifo, 0, &cc); + } + + yylval = current.value; + yylval.sval.ptr = obstack_copy0 (&expansion_obstack, + yylval.sval.ptr, + yylval.sval.length); + return current.token; } int @@ -2218,10 +2598,18 @@ c_parse (void) gdb_assert (! macro_original_text); make_cleanup (scan_macro_cleanup, 0); + make_cleanup_restore_integer (&yydebug); + yydebug = parser_debug; + /* Initialize some state used by the lexer. */ last_was_structop = 0; saw_name_at_eof = 0; + VEC_free (token_and_value, token_fifo); + popping = 0; + obstack_init (&name_obstack); + make_cleanup_obstack_free (&name_obstack); + result = yyparse (); do_cleanups (back_to); return result; diff --git a/contrib/gdb-7/gdb/c-lang.c b/contrib/gdb-7/gdb/c-lang.c index d01490cdce..40c417256b 100644 --- a/contrib/gdb-7/gdb/c-lang.c +++ b/contrib/gdb-7/gdb/c-lang.c @@ -1,7 +1,7 @@ /* C language support routines for GDB, the GNU debugger. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, 2003, - 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -43,26 +43,26 @@ extern void _initialize_c_language (void); static const char * charset_for_string_type (enum c_string_type str_type, - enum bfd_endian byte_order) + struct gdbarch *gdbarch) { switch (str_type & ~C_CHAR) { case C_STRING: - return target_charset (); + return target_charset (gdbarch); case C_WIDE_STRING: - return target_wide_charset (byte_order); + return target_wide_charset (gdbarch); case C_STRING_16: - /* FIXME: UCS-2 is not always correct. */ - if (byte_order == BFD_ENDIAN_BIG) - return "UCS-2BE"; + /* FIXME: UTF-16 is not always correct. */ + if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) + return "UTF-16BE"; else - return "UCS-2LE"; + return "UTF-16LE"; case C_STRING_32: - /* FIXME: UCS-4 is not always correct. */ - if (byte_order == BFD_ENDIAN_BIG) - return "UCS-4BE"; + /* FIXME: UTF-32 is not always correct. */ + if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) + return "UTF-32BE"; else - return "UCS-4LE"; + return "UTF-32LE"; } internal_error (__FILE__, __LINE__, "unhandled c_string_type"); } @@ -73,10 +73,9 @@ charset_for_string_type (enum c_string_type str_type, characters of this type in target BYTE_ORDER to the host character set. */ static enum c_string_type -classify_type (struct type *elttype, enum bfd_endian byte_order, +classify_type (struct type *elttype, struct gdbarch *gdbarch, const char **encoding) { - struct type *saved_type; enum c_string_type result; /* We loop because ELTTYPE may be a typedef, and we want to @@ -134,7 +133,7 @@ classify_type (struct type *elttype, enum bfd_endian byte_order, done: if (encoding) - *encoding = charset_for_string_type (result, byte_order); + *encoding = charset_for_string_type (result, gdbarch); return result; } @@ -180,6 +179,7 @@ print_wchar (gdb_wint_t w, const gdb_byte *orig, int orig_len, int quoter, int *need_escapep) { int need_escape = *need_escapep; + *need_escapep = 0; if (gdb_iswprint (w) && (!need_escape || (!gdb_iswdigit (w) && w != LCST ('8') @@ -224,6 +224,7 @@ print_wchar (gdb_wint_t w, const gdb_byte *orig, int orig_len, { char octal[30]; ULONGEST value; + value = extract_unsigned_integer (&orig[i], width, byte_order); /* If the value fits in 3 octal digits, print it that way. Otherwise, print it as a hex escape. */ @@ -237,6 +238,7 @@ print_wchar (gdb_wint_t w, const gdb_byte *orig, int orig_len, while (i < orig_len) { char octal[5]; + sprintf (octal, "\\%.3o", orig[i] & 0xff); append_string_as_wide (octal, output); ++i; @@ -253,8 +255,9 @@ print_wchar (gdb_wint_t w, const gdb_byte *orig, int orig_len, string whose delimiter is QUOTER. Note that that format for printing characters and strings is language specific. */ -static void -c_emit_char (int c, struct type *type, struct ui_file *stream, int quoter) +void +c_emit_char (int c, struct type *type, + struct ui_file *stream, int quoter) { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); struct obstack wchar_buf, output; @@ -264,7 +267,7 @@ c_emit_char (int c, struct type *type, struct ui_file *stream, int quoter) struct wchar_iterator *iter; int need_escape = 0; - classify_type (type, byte_order, &encoding); + classify_type (type, get_type_arch (type), &encoding); buf = alloca (TYPE_LENGTH (type)); pack_long (buf, type, c); @@ -340,7 +343,7 @@ c_printchar (int c, struct type *type, struct ui_file *stream) { enum c_string_type str_type; - str_type = classify_type (type, BFD_ENDIAN_UNKNOWN, NULL); + str_type = classify_type (type, get_type_arch (type), NULL); switch (str_type) { case C_CHAR: @@ -369,7 +372,7 @@ c_printchar (int c, struct type *type, struct ui_file *stream) void c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, - unsigned int length, int force_ellipses, + unsigned int length, const char *user_encoding, int force_ellipses, const struct value_print_options *options) { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); @@ -381,11 +384,25 @@ c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, struct obstack wchar_buf, output; struct cleanup *cleanup; enum c_string_type str_type; + const char *type_encoding; const char *encoding; struct wchar_iterator *iter; int finished = 0; int need_escape = 0; + if (length == -1) + { + unsigned long current_char = 1; + + for (i = 0; current_char; ++i) + { + QUIT; + current_char = extract_unsigned_integer (string + i * width, + width, byte_order); + } + length = i; + } + /* If the string was not truncated due to `set print elements', and the last byte of it is a null, we don't print that, in traditional C style. */ @@ -395,7 +412,8 @@ c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, width, byte_order) == 0)) length--; - str_type = classify_type (type, byte_order, &encoding) & ~C_CHAR; + str_type = (classify_type (type, get_type_arch (type), &type_encoding) + & ~C_CHAR); switch (str_type) { case C_STRING: @@ -411,24 +429,14 @@ c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, break; } + encoding = (user_encoding && *user_encoding) ? user_encoding : type_encoding; + if (length == 0) { fputs_filtered ("\"\"", stream); return; } - if (length == -1) - { - unsigned long current_char = 1; - for (i = 0; current_char; ++i) - { - QUIT; - current_char = extract_unsigned_integer (string + i * width, - width, byte_order); - } - length = i; - } - /* Arrange to iterate over the characters, in wchar_t form. */ iter = make_wchar_iterator (string, length * width, encoding, width); cleanup = make_cleanup_wchar_iterator (iter); @@ -500,6 +508,7 @@ c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, /* Painful gyrations. */ int j; char *s = xstrprintf (_(" "), reps); + for (j = 0; s[j]; ++j) { gdb_wchar_t w = gdb_btowc (s[j]); @@ -618,7 +627,7 @@ c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, void c_get_string (struct value *value, gdb_byte **buffer, int *length, - const char **charset) + struct type **char_type, const char **charset) { int err, width; unsigned int fetchlimit; @@ -626,6 +635,7 @@ c_get_string (struct value *value, gdb_byte **buffer, int *length, struct type *element_type = TYPE_TARGET_TYPE (type); int req_length = *length; enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); + enum c_string_type kind; if (element_type == NULL) goto error; @@ -652,13 +662,11 @@ c_get_string (struct value *value, gdb_byte **buffer, int *length, /* We work only with arrays and pointers. */ goto error; - element_type = check_typedef (element_type); - if (TYPE_CODE (element_type) != TYPE_CODE_INT - && TYPE_CODE (element_type) != TYPE_CODE_CHAR) - /* If the elements are not integers or characters, we don't consider it - a string. */ + if (! c_textual_element_type (element_type, 0)) goto error; - + kind = classify_type (element_type, + get_type_arch (element_type), + charset); width = TYPE_LENGTH (element_type); /* If the string lives in GDB's memory instead of the inferior's, then we @@ -717,7 +725,7 @@ c_get_string (struct value *value, gdb_byte **buffer, int *length, if (*length != 0) *length = *length / width; - *charset = target_charset (); + *char_type = element_type; return; @@ -763,7 +771,7 @@ convert_ucn (char *p, char *limit, const char *dest_charset, result >>= 8; } - convert_between_encodings ("UCS-4BE", dest_charset, data, 4, 4, output, + convert_between_encodings ("UTF-32BE", dest_charset, data, 4, 4, output, translit_none); return p; @@ -878,6 +886,7 @@ convert_escape (struct type *type, const char *dest_charset, case 'U': { int length = *p == 'u' ? 4 : 8; + ADVANCE; if (!isxdigit (*p)) error (_("\\u used with no following hex digits")); @@ -905,6 +914,7 @@ parse_one_string (struct obstack *output, char *data, int len, while (data < limit) { char *p = data; + /* Look for next escape, or the end of the input. */ while (p < limit && *p != '\\') ++p; @@ -940,7 +950,6 @@ evaluate_subexp_c (struct type *expect_type, struct expression *exp, struct value *result; enum c_string_type dest_type; const char *dest_charset; - enum bfd_endian byte_order; obstack_init (&output); cleanup = make_cleanup_obstack_free (&output); @@ -977,8 +986,7 @@ evaluate_subexp_c (struct type *expect_type, struct expression *exp, /* Ensure TYPE_LENGTH is valid for TYPE. */ check_typedef (type); - byte_order = gdbarch_byte_order (exp->gdbarch); - dest_charset = charset_for_string_type (dest_type, byte_order); + dest_charset = charset_for_string_type (dest_type, exp->gdbarch); ++*pos; while (*pos < limit) @@ -1020,6 +1028,7 @@ evaluate_subexp_c (struct type *expect_type, struct expression *exp, else { int i; + /* Write the terminating character. */ for (i = 0; i < TYPE_LENGTH (type); ++i) obstack_1grow (&output, 0); @@ -1106,6 +1115,7 @@ c_language_arch_info (struct gdbarch *gdbarch, struct language_arch_info *lai) { const struct builtin_type *builtin = builtin_type (gdbarch); + lai->string_char_type = builtin->builtin_char; lai->primitive_type_vector = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_c_primitive_types + 1, @@ -1134,10 +1144,11 @@ c_language_arch_info (struct gdbarch *gdbarch, lai->bool_type_default = builtin->builtin_int; } -static const struct exp_descriptor exp_descriptor_c = +const struct exp_descriptor exp_descriptor_c = { print_subexp_standard, operator_length_standard, + operator_check_standard, op_name_standard, dump_subexp_body_standard, evaluate_subexp_c @@ -1211,6 +1222,7 @@ cplus_language_arch_info (struct gdbarch *gdbarch, struct language_arch_info *lai) { const struct builtin_type *builtin = builtin_type (gdbarch); + lai->string_char_type = builtin->builtin_char; lai->primitive_type_vector = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1, diff --git a/contrib/gdb-7/gdb/c-lang.h b/contrib/gdb-7/gdb/c-lang.h index ba9d9961a9..a04fbb2943 100644 --- a/contrib/gdb-7/gdb/c-lang.h +++ b/contrib/gdb-7/gdb/c-lang.h @@ -1,7 +1,7 @@ /* C language support definitions for GDB, the GNU debugger. Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 2000, 2002, 2005, 2006, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -63,13 +63,14 @@ extern void c_error (char *); extern int c_parse_escape (char **, struct obstack *); /* Defined in c-typeprint.c */ -extern void c_print_type (struct type *, char *, struct ui_file *, int, +extern void c_print_type (struct type *, const char *, struct ui_file *, int, int); extern void c_print_typedef (struct type *, struct symbol *, struct ui_file *); extern int c_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); extern int c_value_print (struct value *, struct ui_file *, @@ -81,12 +82,17 @@ extern void c_printchar (int, struct type *, struct ui_file *); extern void c_printstr (struct ui_file * stream, struct type *elttype, const gdb_byte *string, unsigned int length, - int force_ellipses, + const char *user_encoding, int force_ellipses, const struct value_print_options *options); extern void c_language_arch_info (struct gdbarch *gdbarch, struct language_arch_info *lai); +extern const struct exp_descriptor exp_descriptor_c; + +extern void c_emit_char (int c, struct type *type, + struct ui_file *stream, int quoter); + /* These are in c-typeprint.c: */ extern void c_type_print_base (struct type *, struct ui_file *, int, int); @@ -99,12 +105,24 @@ extern void cp_print_class_member (const gdb_byte *, struct type *, extern void cp_print_value_fields (struct type *, struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *, struct type **, int); +extern void cp_print_value_fields_rtti (struct type *, + const gdb_byte *, int, CORE_ADDR, + struct ui_file *, int, + const struct value *, + const struct value_print_options *, + struct type **, int); + extern int cp_is_vtbl_ptr_type (struct type *); extern int cp_is_vtbl_member (struct type *); +/* These are in c-valprint.c. */ + +extern int c_textual_element_type (struct type *, char); + #endif /* !defined (C_LANG_H) */ diff --git a/contrib/gdb-7/gdb/c-typeprint.c b/contrib/gdb-7/gdb/c-typeprint.c index b193080db8..926ae2fc5e 100644 --- a/contrib/gdb-7/gdb/c-typeprint.c +++ b/contrib/gdb-7/gdb/c-typeprint.c @@ -1,6 +1,6 @@ /* Support for printing C and C++ types for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -32,6 +32,7 @@ #include "c-lang.h" #include "typeprint.h" #include "cp-abi.h" +#include "jv-lang.h" #include "gdb_string.h" #include @@ -40,8 +41,6 @@ static void cp_type_print_method_args (struct type *mtype, char *prefix, char *varstring, int staticp, struct ui_file *stream); -static void c_type_print_args (struct type *, struct ui_file *); - static void cp_type_print_derivation_info (struct ui_file *, struct type *); static void c_type_print_varspec_prefix (struct type *, struct ui_file *, int, @@ -57,7 +56,7 @@ static void c_type_print_modifier (struct type *, struct ui_file *, /* LEVEL is the depth to indent lines by. */ void -c_print_type (struct type *type, char *varstring, struct ui_file *stream, +c_print_type (struct type *type, const char *varstring, struct ui_file *stream, int show, int level) { enum type_code code; @@ -70,17 +69,15 @@ c_print_type (struct type *type, char *varstring, struct ui_file *stream, c_type_print_base (type, stream, show, level); code = TYPE_CODE (type); if ((varstring != NULL && *varstring != '\0') - || /* Need a space if going to print stars or brackets; but not if we will print just a type name. */ - ((show > 0 || TYPE_NAME (type) == 0) - && - (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC - || code == TYPE_CODE_METHOD - || code == TYPE_CODE_ARRAY - || code == TYPE_CODE_MEMBERPTR - || code == TYPE_CODE_METHODPTR - || code == TYPE_CODE_REF))) + || ((show > 0 || TYPE_NAME (type) == 0) + && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC + || code == TYPE_CODE_METHOD + || code == TYPE_CODE_ARRAY + || code == TYPE_CODE_MEMBERPTR + || code == TYPE_CODE_METHODPTR + || code == TYPE_CODE_REF))) fputs_filtered (" ", stream); need_post_space = (varstring != NULL && strcmp (varstring, "") != 0); c_type_print_varspec_prefix (type, stream, show, 0, need_post_space); @@ -110,7 +107,8 @@ c_print_typedef (struct type *type, struct symbol *new_symbol, type_print (type, "", stream, 0); if (TYPE_NAME ((SYMBOL_TYPE (new_symbol))) == 0 || strcmp (TYPE_NAME ((SYMBOL_TYPE (new_symbol))), - SYMBOL_LINKAGE_NAME (new_symbol)) != 0) + SYMBOL_LINKAGE_NAME (new_symbol)) != 0 + || TYPE_CODE (SYMBOL_TYPE (new_symbol)) == TYPE_CODE_TYPEDEF) fprintf_filtered (stream, " %s", SYMBOL_PRINT_NAME (new_symbol)); fprintf_filtered (stream, ";\n"); } @@ -199,6 +197,23 @@ cp_type_print_method_args (struct type *mtype, char *prefix, char *varstring, fprintf_filtered (stream, "void"); fprintf_filtered (stream, ")"); + + /* For non-static methods, read qualifiers from the type of + THIS. */ + if (!staticp) + { + struct type *domain; + + gdb_assert (nargs > 0); + gdb_assert (TYPE_CODE (args[0].type) == TYPE_CODE_PTR); + domain = TYPE_TARGET_TYPE (args[0].type); + + if (TYPE_CONST (domain)) + fprintf_filtered (stream, " const"); + + if (TYPE_VOLATILE (domain)) + fprintf_filtered (stream, " volatile"); + } } @@ -219,6 +234,7 @@ c_type_print_varspec_prefix (struct type *type, struct ui_file *stream, int show, int passed_a_ptr, int need_post_space) { char *name; + if (type == 0) return; @@ -294,7 +310,6 @@ c_type_print_varspec_prefix (struct type *type, struct ui_file *stream, case TYPE_CODE_STRING: case TYPE_CODE_BITSTRING: case TYPE_CODE_COMPLEX: - case TYPE_CODE_TEMPLATE: case TYPE_CODE_NAMESPACE: case TYPE_CODE_DECFLOAT: /* These types need no prefix. They are listed here so that @@ -355,10 +370,14 @@ c_type_print_modifier (struct type *type, struct ui_file *stream, /* Print out the arguments of TYPE, which should have TYPE_CODE_METHOD or TYPE_CODE_FUNC, to STREAM. Artificial arguments, such as "this" - in non-static methods, are displayed. */ + in non-static methods, are displayed if SHOW_ARTIFICIAL is + non-zero. LANGUAGE is the language in which TYPE was defined. This is + a necessary evil since this code is used by the C, C++, and Java + backends. */ -static void -c_type_print_args (struct type *type, struct ui_file *stream) +void +c_type_print_args (struct type *type, struct ui_file *stream, + int show_artificial, enum language language) { int i, len; struct field *args; @@ -370,13 +389,19 @@ c_type_print_args (struct type *type, struct ui_file *stream) for (i = 0; i < TYPE_NFIELDS (type); i++) { + if (TYPE_FIELD_ARTIFICIAL (type, i) && !show_artificial) + continue; + if (printed_any) { fprintf_filtered (stream, ", "); wrap_here (" "); } - c_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); + if (language == language_java) + java_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); + else + c_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); printed_any = 1; } @@ -393,8 +418,8 @@ c_type_print_args (struct type *type, struct ui_file *stream) } } else if (!printed_any - && (TYPE_PROTOTYPED (type) - || current_language->la_language == language_cplus)) + && ((TYPE_PROTOTYPED (type) && language != language_java) + || language == language_cplus)) fprintf_filtered (stream, "void"); fprintf_filtered (stream, ")"); @@ -593,7 +618,7 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream, if (passed_a_ptr) fprintf_filtered (stream, ")"); if (!demangled_args) - c_type_print_args (type, stream); + c_type_print_args (type, stream, 1, current_language->la_language); c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, passed_a_ptr, 0); break; @@ -618,7 +643,6 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream, case TYPE_CODE_STRING: case TYPE_CODE_BITSTRING: case TYPE_CODE_COMPLEX: - case TYPE_CODE_TEMPLATE: case TYPE_CODE_NAMESPACE: case TYPE_CODE_DECFLOAT: /* These types do not need a suffix. They are listed so that @@ -704,35 +728,10 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, case TYPE_CODE_STRUCT: c_type_print_modifier (type, stream, 0, 1); - /* Note TYPE_CODE_STRUCT and TYPE_CODE_CLASS have the same value, - * so we use another means for distinguishing them. - */ - if (HAVE_CPLUS_STRUCT (type)) - { - switch (TYPE_DECLARED_TYPE (type)) - { - case DECLARED_TYPE_CLASS: - fprintf_filtered (stream, "class "); - break; - case DECLARED_TYPE_UNION: - fprintf_filtered (stream, "union "); - break; - case DECLARED_TYPE_STRUCT: - fprintf_filtered (stream, "struct "); - break; - default: - /* If there is a CPLUS_STRUCT, assume class if not - * otherwise specified in the declared_type field. - */ - fprintf_filtered (stream, "class "); - break; - } /* switch */ - } + if (TYPE_DECLARED_CLASS (type)) + fprintf_filtered (stream, "class "); else - { - /* If not CPLUS_STRUCT, then assume it's a C struct */ - fprintf_filtered (stream, "struct "); - } + fprintf_filtered (stream, "struct "); goto struct_union; case TYPE_CODE_UNION: @@ -747,8 +746,8 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, * tag for unnamed struct/union/enum's, which we don't * want to print. */ - if (TYPE_TAG_NAME (type) != NULL && - strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) + if (TYPE_TAG_NAME (type) != NULL + && strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) { fputs_filtered (TYPE_TAG_NAME (type), stream); if (show > 0) @@ -763,10 +762,14 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, } else if (show > 0 || TYPE_TAG_NAME (type) == NULL) { + struct type *basetype; + int vptr_fieldno; + cp_type_print_derivation_info (stream, type); fprintf_filtered (stream, "{\n"); - if ((TYPE_NFIELDS (type) == 0) && (TYPE_NFN_FIELDS (type) == 0)) + if (TYPE_NFIELDS (type) == 0 && TYPE_NFN_FIELDS (type) == 0 + && TYPE_TYPEDEF_FIELD_COUNT (type) == 0) { if (TYPE_STUB (type)) fprintfi_filtered (level + 4, stream, _("\n")); @@ -785,8 +788,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, masquerading as a class, if all members are public, there's no need for a "public:" label. */ - if ((TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_CLASS) || - (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_TEMPLATE)) + if (TYPE_DECLARED_CLASS (type)) { QUIT; len = TYPE_NFIELDS (type); @@ -814,8 +816,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, } } } - else if ((TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_STRUCT) || - (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_UNION)) + else { QUIT; len = TYPE_NFIELDS (type); @@ -834,8 +835,8 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, QUIT; len = TYPE_FN_FIELDLIST_LENGTH (type, j); for (i = 0; i < len; i++) - if (TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, j), i) || - TYPE_FN_FIELD_PROTECTED (TYPE_FN_FIELDLIST1 (type, j), i)) + if (TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, j), i) + || TYPE_FN_FIELD_PROTECTED (TYPE_FN_FIELDLIST1 (type, j), i)) { need_access_label = 1; break; @@ -850,18 +851,19 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, do not print the field that it occupies. */ len = TYPE_NFIELDS (type); + vptr_fieldno = get_vptr_fieldno (type, &basetype); for (i = TYPE_N_BASECLASSES (type); i < len; i++) { QUIT; - /* Don't print out virtual function table. */ - if (strncmp (TYPE_FIELD_NAME (type, i), "_vptr", 5) == 0 - && is_cplus_marker ((TYPE_FIELD_NAME (type, i))[5])) - continue; - /* If this is a C++ class we can print the various C++ section - labels. */ + /* If we have a virtual table pointer, omit it. Even if + virtual table pointers are not specifically marked in + the debug info, they should be artificial. */ + if ((i == vptr_fieldno && type == basetype) + || TYPE_FIELD_ARTIFICIAL (type, i)) + continue; - if (HAVE_CPLUS_STRUCT (type) && need_access_label) + if (need_access_label) { if (TYPE_FIELD_PROTECTED (type, i)) { @@ -920,6 +922,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i); int len2 = TYPE_FN_FIELDLIST_LENGTH (type, i); int j; + for (j = 0; j < len2; j++) if (!TYPE_FN_FIELD_ARTIFICIAL (f, j)) real_len++; @@ -935,13 +938,14 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, char *method_name = TYPE_FN_FIELDLIST_NAME (type, i); char *name = type_name_no_tag (type); int is_constructor = name && strcmp (method_name, name) == 0; + for (j = 0; j < len2; j++) { char *physname = TYPE_FN_FIELD_PHYSNAME (f, j); int is_full_physname_constructor = - is_constructor_name (physname) - || is_destructor_name (physname) - || method_name[0] == '~'; + is_constructor_name (physname) + || is_destructor_name (physname) + || method_name[0] == '~'; /* Do not print out artificial methods. */ if (TYPE_FN_FIELD_ARTIFICIAL (f, j)) @@ -986,9 +990,9 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, TYPE_FN_FIELD_PHYSNAME (f, j)); break; } - else if (!is_constructor && /* constructors don't have declared types */ - !is_full_physname_constructor && /* " " */ - !is_type_conversion_operator (type, i, j)) + else if (!is_constructor /* constructors don't have declared types */ + && !is_full_physname_constructor /* " " */ + && !is_type_conversion_operator (type, i, j)) { type_print (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)), "", stream, -1); @@ -1014,6 +1018,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, { int staticp = TYPE_FN_FIELD_STATIC_P (f, j); struct type *mtype = TYPE_FN_FIELD_TYPE (f, j); + cp_type_print_method_args (mtype, "", method_name, @@ -1035,6 +1040,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, if (p != NULL) { int length = p - demangled_no_class; + demangled_no_static = (char *) xmalloc (length + 1); strncpy (demangled_no_static, demangled_no_class, length); *(demangled_no_static + length) = '\0'; @@ -1053,6 +1059,29 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, } } + /* Print typedefs defined in this class. */ + + if (TYPE_TYPEDEF_FIELD_COUNT (type) != 0) + { + if (TYPE_NFIELDS (type) != 0 || TYPE_NFN_FIELDS (type) != 0) + fprintf_filtered (stream, "\n"); + + for (i = 0; i < TYPE_TYPEDEF_FIELD_COUNT (type); i++) + { + struct type *target = TYPE_TYPEDEF_FIELD_TYPE (type, i); + + /* Dereference the typedef declaration itself. */ + gdb_assert (TYPE_CODE (target) == TYPE_CODE_TYPEDEF); + target = TYPE_TARGET_TYPE (target); + + print_spaces_filtered (level + 4, stream); + fprintf_filtered (stream, "typedef "); + c_print_type (target, TYPE_TYPEDEF_FIELD_NAME (type, i), + stream, show - 1, level + 4); + fprintf_filtered (stream, ";\n"); + } + } + fprintfi_filtered (level, stream, "}"); if (TYPE_LOCALTYPE_PTR (type) && show >= 0) @@ -1070,8 +1099,8 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, "{unnamed struct}"/"{unnamed union}"/"{unnamed enum}" tag for unnamed struct/union/enum's, which we don't want to print. */ - if (TYPE_TAG_NAME (type) != NULL && - strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) + if (TYPE_TAG_NAME (type) != NULL + && strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) { fputs_filtered (TYPE_TAG_NAME (type), stream); if (show > 0) @@ -1117,7 +1146,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, break; case TYPE_CODE_ERROR: - fprintf_filtered (stream, _("")); + fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type)); break; case TYPE_CODE_RANGE: @@ -1125,25 +1154,6 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, fprintf_filtered (stream, _("")); break; - case TYPE_CODE_TEMPLATE: - /* Called on "ptype t" where "t" is a template. - Prints the template header (with args), e.g.: - template class " - and then merges with the struct/union/class code to - print the rest of the definition. */ - c_type_print_modifier (type, stream, 0, 1); - fprintf_filtered (stream, "template <"); - for (i = 0; i < TYPE_NTEMPLATE_ARGS (type); i++) - { - struct template_arg templ_arg; - templ_arg = TYPE_TEMPLATE_ARG (type, i); - fprintf_filtered (stream, "class %s", templ_arg.name); - if (i < TYPE_NTEMPLATE_ARGS (type) - 1) - fprintf_filtered (stream, ", "); - } - fprintf_filtered (stream, "> class "); - goto struct_union; - case TYPE_CODE_NAMESPACE: fputs_filtered ("namespace ", stream); fputs_filtered (TYPE_TAG_NAME (type), stream); diff --git a/contrib/gdb-7/gdb/c-valprint.c b/contrib/gdb-7/gdb/c-valprint.c index dc391ee224..f0895a4d9c 100644 --- a/contrib/gdb-7/gdb/c-valprint.c +++ b/contrib/gdb-7/gdb/c-valprint.c @@ -1,7 +1,7 @@ /* Support for printing C values for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -54,7 +54,7 @@ print_function_pointer_address (struct gdbarch *gdbarch, CORE_ADDR address, } -/* A helper for textual_element_type. This checks the name of the +/* A helper for c_textual_element_type. This checks the name of the typedef. This is bogus but it isn't apparent that the compiler provides us the help we may need. */ @@ -77,8 +77,8 @@ textual_name (const char *name) vector types is not. The user can override this by using the /s format letter. */ -static int -textual_element_type (struct type *type, char format) +int +c_textual_element_type (struct type *type, char format) { struct type *true_type, *iter_type; @@ -150,6 +150,7 @@ textual_element_type (struct type *type, char format) int c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *original_value, const struct value_print_options *options) { struct gdbarch *gdbarch = get_type_arch (type); @@ -177,8 +178,13 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, print_spaces_filtered (2 + 2 * recurse, stream); } - /* Print arrays of textual chars with a string syntax. */ - if (textual_element_type (unresolved_elttype, options->format)) + /* Print arrays of textual chars with a string syntax, as + long as the entire array is valid. */ + if (!TYPE_VECTOR (type) + && c_textual_element_type (unresolved_elttype, options->format) + && value_bits_valid (original_value, + TARGET_CHAR_BIT * embedded_offset, + TARGET_CHAR_BIT * TYPE_LENGTH (type))) { /* If requested, look for the first null char and only print elements up to it. */ @@ -191,14 +197,15 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, && temp_len < options->print_max && extract_unsigned_integer (valaddr + embedded_offset + temp_len * eltlen, - eltlen, byte_order) == 0); + eltlen, byte_order) != 0); ++temp_len) ; len = temp_len; } LA_PRINT_STRING (stream, unresolved_elttype, - valaddr + embedded_offset, len, 0, options); + valaddr + embedded_offset, len, + NULL, 0, options); i = len; } else @@ -215,8 +222,9 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, { i = 0; } - val_print_array_elements (type, valaddr + embedded_offset, address, stream, - recurse, options, i); + val_print_array_elements (type, valaddr + embedded_offset, + address + embedded_offset, stream, + recurse, original_value, options, i); fprintf_filtered (stream, "}"); } break; @@ -253,6 +261,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, -fvtable_thunks. (Otherwise, look under TYPE_CODE_STRUCT.) */ CORE_ADDR addr = extract_typed_address (valaddr + embedded_offset, type); + print_function_pointer_address (gdbarch, addr, stream, options->addressprint); break; @@ -278,7 +287,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, /* For a pointer to a textual type, also print the string pointed to, unless pointer is null. */ - if (textual_element_type (unresolved_elttype, options->format) + if (c_textual_element_type (unresolved_elttype, options->format) && addr != 0) { i = val_print_string (unresolved_elttype, addr, -1, stream, @@ -291,8 +300,8 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (vt_address); - if ((msymbol != NULL) && - (vt_address == SYMBOL_VALUE_ADDRESS (msymbol))) + if ((msymbol != NULL) + && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol))) { fputs_filtered (" <", stream); fputs_filtered (SYMBOL_PRINT_NAME (msymbol), stream); @@ -342,6 +351,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, { CORE_ADDR addr = extract_typed_address (valaddr + embedded_offset, type); + fprintf_filtered (stream, "@"); fputs_filtered (paddress (gdbarch, addr), stream); if (options->deref_ref) @@ -353,9 +363,10 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) { struct value *deref_val = - value_at - (TYPE_TARGET_TYPE (type), - unpack_pointer (type, valaddr + embedded_offset)); + value_at + (TYPE_TARGET_TYPE (type), + unpack_pointer (type, valaddr + embedded_offset)); + common_val_print (deref_val, stream, recurse, options, current_language); } @@ -388,8 +399,9 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, options->addressprint); } else - cp_print_value_fields (type, type, valaddr, embedded_offset, address, stream, - recurse, options, NULL, 0); + cp_print_value_fields_rtti (type, valaddr, + embedded_offset, address, stream, + recurse, original_value, options, NULL, 0); break; case TYPE_CODE_ENUM: @@ -479,6 +491,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr + embedded_offset, type, @@ -491,7 +504,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, Since we don't know whether the value is really intended to be used as an integer or a character, print the character equivalent as well. */ - if (textual_element_type (unresolved_type, options->format)) + if (c_textual_element_type (unresolved_type, options->format)) { fputs_filtered (" ", stream); LA_PRINT_CHAR ((unsigned char) unpack_long (type, valaddr + embedded_offset), @@ -546,7 +559,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, break; case TYPE_CODE_ERROR: - fprintf_filtered (stream, _("")); + fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type)); break; case TYPE_CODE_UNDEF: @@ -613,7 +626,7 @@ c_value_print (struct value *val, struct ui_file *stream, { /* Hack: remove (char *) for char strings. Their type is indicated by the quoted string anyway. - (Don't use textual_element_type here; quoted strings + (Don't use c_textual_element_type here; quoted strings are always exactly (char *), (wchar_t *), or the like. */ if (TYPE_CODE (val_type) == TYPE_CODE_PTR && TYPE_NAME (val_type) == NULL @@ -689,9 +702,9 @@ c_value_print (struct value *val, struct ui_file *stream, full ? "" : _(" [incomplete object]")); /* Print out object: enclosing type is same as real_type if full */ return val_print (value_enclosing_type (val), - value_contents_all (val), 0, + value_contents_for_printing (val), 0, value_address (val), stream, 0, - &opts, current_language); + val, &opts, current_language); /* Note: When we look up RTTI entries, we don't get any information on const or volatile attributes */ } @@ -701,15 +714,16 @@ c_value_print (struct value *val, struct ui_file *stream, fprintf_filtered (stream, "(%s ?) ", TYPE_NAME (value_enclosing_type (val))); return val_print (value_enclosing_type (val), - value_contents_all (val), 0, + value_contents_for_printing (val), 0, value_address (val), stream, 0, - &opts, current_language); + val, &opts, current_language); } /* Otherwise, we end up at the return outside this "if" */ } - return val_print (val_type, value_contents_all (val), + return val_print (val_type, value_contents_for_printing (val), value_embedded_offset (val), value_address (val), - stream, 0, &opts, current_language); + stream, 0, + val, &opts, current_language); } diff --git a/contrib/gdb-7/gdb/call-cmds.h b/contrib/gdb-7/gdb/call-cmds.h index df05871cf0..5937e26647 100644 --- a/contrib/gdb-7/gdb/call-cmds.h +++ b/contrib/gdb-7/gdb/call-cmds.h @@ -6,7 +6,7 @@ 2000-12-01 fnasser@redhat.com */ /* Prototypes for GDB commands that are called internally by other functions. - Copyright (C) 1992, 2000, 2001, 2007, 2008, 2009 + Copyright (C) 1992, 2000, 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/contrib/gdb-7/gdb/charset-list.h b/contrib/gdb-7/gdb/charset-list.h index 59c64c591a..cc8a05c3cc 100644 --- a/contrib/gdb-7/gdb/charset-list.h +++ b/contrib/gdb-7/gdb/charset-list.h @@ -1,6 +1,6 @@ /* List of character set names for GDB. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/charset.c b/contrib/gdb-7/gdb/charset.c index a59d9c65d3..43b7fa8f22 100644 --- a/contrib/gdb-7/gdb/charset.c +++ b/contrib/gdb-7/gdb/charset.c @@ -1,6 +1,7 @@ /* Character set conversion support for GDB. - Copyright (C) 2001, 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2001, 2003, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -25,11 +26,16 @@ #include "gdb_wait.h" #include "charset-list.h" #include "vec.h" +#include "environ.h" +#include "arch-utils.h" #include #include "gdb_string.h" #include +#ifdef USE_WIN32API +#include +#endif /* How GDB's character set support works @@ -102,17 +108,17 @@ iconv_t iconv_open (const char *to, const char *from) { - /* We allow conversions from UCS-4BE, wchar_t, and the host charset. + /* We allow conversions from UTF-32BE, wchar_t, and the host charset. We allow conversions to wchar_t and the host charset. */ - if (strcmp (from, "UCS-4BE") && strcmp (from, "wchar_t") + if (strcmp (from, "UTF-32BE") && strcmp (from, "wchar_t") && strcmp (from, GDB_DEFAULT_HOST_CHARSET)) return -1; if (strcmp (to, "wchar_t") && strcmp (to, GDB_DEFAULT_HOST_CHARSET)) return -1; - /* Return 1 if we are converting from UCS-4BE, 0 otherwise. This is + /* Return 1 if we are converting from UTF-32BE, 0 otherwise. This is used as a flag in calls to iconv. */ - return !strcmp (from, "UCS-4BE"); + return !strcmp (from, "UTF-32BE"); } int @@ -122,10 +128,10 @@ iconv_close (iconv_t arg) } size_t -iconv (iconv_t ucs_flag, const char **inbuf, size_t *inbytesleft, +iconv (iconv_t utf_flag, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { - if (ucs_flag) + if (utf_flag) { while (*inbytesleft >= 4) { @@ -161,6 +167,7 @@ iconv (iconv_t ucs_flag, const char **inbuf, size_t *inbytesleft, /* In all other cases we simply copy input bytes to the output. */ size_t amt = *inbytesleft; + if (amt > *outbytesleft) amt = *outbytesleft; memcpy (*outbuf, *inbuf, amt); @@ -193,7 +200,7 @@ iconv (iconv_t ucs_flag, const char **inbuf, size_t *inbytesleft, #endif #ifndef GDB_DEFAULT_TARGET_WIDE_CHARSET -#define GDB_DEFAULT_TARGET_WIDE_CHARSET "UCS-4" +#define GDB_DEFAULT_TARGET_WIDE_CHARSET "UTF-32" #endif static const char *auto_host_charset_name = GDB_DEFAULT_HOST_CHARSET; @@ -211,22 +218,34 @@ show_host_charset_name (struct ui_file *file, int from_tty, fprintf_filtered (file, _("The host character set is \"%s\".\n"), value); } -static const char *target_charset_name = GDB_DEFAULT_TARGET_CHARSET; +static const char *target_charset_name = "auto"; static void show_target_charset_name (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - fprintf_filtered (file, _("The target character set is \"%s\".\n"), - value); + if (!strcmp (value, "auto")) + fprintf_filtered (file, + _("The target character set is \"auto; " + "currently %s\".\n"), + gdbarch_auto_charset (get_current_arch ())); + else + fprintf_filtered (file, _("The target character set is \"%s\".\n"), + value); } -static const char *target_wide_charset_name = GDB_DEFAULT_TARGET_WIDE_CHARSET; +static const char *target_wide_charset_name = "auto"; static void show_target_wide_charset_name (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - fprintf_filtered (file, _("The target wide character set is \"%s\".\n"), - value); + if (!strcmp (value, "auto")) + fprintf_filtered (file, + _("The target wide character set is \"auto; " + "currently %s\".\n"), + gdbarch_auto_wide_charset (get_current_arch ())); + else + fprintf_filtered (file, _("The target wide character set is \"%s\".\n"), + value); } static const char *default_charset_names[] = @@ -243,21 +262,33 @@ static const char **charset_enum; static const char *target_wide_charset_be_name; static const char *target_wide_charset_le_name; -/* A helper function for validate which sets the target wide big- and - little-endian character set names, if possible. */ +/* The architecture for which the BE- and LE-names are valid. */ +static struct gdbarch *be_le_arch; + +/* A helper function which sets the target wide big- and little-endian + character set names, if possible. */ static void -set_be_le_names (void) +set_be_le_names (struct gdbarch *gdbarch) { int i, len; + const char *target_wide; + + if (be_le_arch == gdbarch) + return; + be_le_arch = gdbarch; target_wide_charset_le_name = NULL; target_wide_charset_be_name = NULL; - len = strlen (target_wide_charset_name); + target_wide = target_wide_charset_name; + if (!strcmp (target_wide, "auto")) + target_wide = gdbarch_auto_wide_charset (gdbarch); + + len = strlen (target_wide); for (i = 0; charset_enum[i]; ++i) { - if (strncmp (target_wide_charset_name, charset_enum[i], len)) + if (strncmp (target_wide, charset_enum[i], len)) continue; if ((charset_enum[i][len] == 'B' || charset_enum[i][len] == 'L') @@ -276,24 +307,30 @@ set_be_le_names (void) target-wide-charset', 'set charset' sfunc's. */ static void -validate (void) +validate (struct gdbarch *gdbarch) { iconv_t desc; const char *host_cset = host_charset (); + const char *target_cset = target_charset (gdbarch); + const char *target_wide_cset = target_wide_charset_name; - desc = iconv_open (target_wide_charset_name, host_cset); + if (!strcmp (target_wide_cset, "auto")) + target_wide_cset = gdbarch_auto_wide_charset (gdbarch); + + desc = iconv_open (target_wide_cset, host_cset); if (desc == (iconv_t) -1) error ("Cannot convert between character sets `%s' and `%s'", - target_wide_charset_name, host_cset); + target_wide_cset, host_cset); iconv_close (desc); - desc = iconv_open (target_charset_name, host_cset); + desc = iconv_open (target_cset, host_cset); if (desc == (iconv_t) -1) error ("Cannot convert between character sets `%s' and `%s'", - target_charset_name, host_cset); + target_cset, host_cset); iconv_close (desc); - set_be_le_names (); + /* Clear the cache. */ + be_le_arch = NULL; } /* This is the sfunc for the 'set charset' command. */ @@ -302,7 +339,7 @@ set_charset_sfunc (char *charset, int from_tty, struct cmd_list_element *c) { /* CAREFUL: set the target charset here as well. */ target_charset_name = host_charset_name; - validate (); + validate (get_current_arch ()); } /* 'set host-charset' command sfunc. We need a wrapper here because @@ -311,7 +348,7 @@ static void set_host_charset_sfunc (char *charset, int from_tty, struct cmd_list_element *c) { - validate (); + validate (get_current_arch ()); } /* Wrapper for the 'set target-charset' command. */ @@ -319,7 +356,7 @@ static void set_target_charset_sfunc (char *charset, int from_tty, struct cmd_list_element *c) { - validate (); + validate (get_current_arch ()); } /* Wrapper for the 'set target-wide-charset' command. */ @@ -327,7 +364,7 @@ static void set_target_wide_charset_sfunc (char *charset, int from_tty, struct cmd_list_element *c) { - validate (); + validate (get_current_arch ()); } /* sfunc for the 'show charset' command. */ @@ -352,14 +389,19 @@ host_charset (void) } const char * -target_charset (void) +target_charset (struct gdbarch *gdbarch) { + if (!strcmp (target_charset_name, "auto")) + return gdbarch_auto_charset (gdbarch); return target_charset_name; } const char * -target_wide_charset (enum bfd_endian byte_order) +target_wide_charset (struct gdbarch *gdbarch) { + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + + set_be_le_names (gdbarch); if (byte_order == BFD_ENDIAN_BIG) { if (target_wide_charset_be_name) @@ -371,6 +413,9 @@ target_wide_charset (enum bfd_endian byte_order) return target_wide_charset_le_name; } + if (!strcmp (target_wide_charset_name, "auto")) + return gdbarch_auto_wide_charset (gdbarch); + return target_wide_charset_name; } @@ -591,11 +636,10 @@ wchar_iterate (struct wchar_iterator *iter, size_t orig_in = iter->bytes; size_t out_avail = out_request * sizeof (gdb_wchar_t); size_t num; - gdb_wchar_t result; - size_t r = iconv (iter->desc, (ICONV_CONST char **) &iter->input, &iter->bytes, &outptr, &out_avail); + if (r == (size_t) -1) { switch (errno) @@ -659,7 +703,6 @@ wchar_iterate (struct wchar_iterator *iter, extern initialize_file_ftype _initialize_charset; /* -Wmissing-prototype */ -typedef char *char_ptr; DEF_VEC_P (char_ptr); static VEC (char_ptr) *charsets; @@ -705,6 +748,35 @@ find_charset_names (void) #else +/* Return non-zero if LINE (output from iconv) should be ignored. + Older iconv programs (e.g. 2.2.2) include the human readable + introduction even when stdout is not a tty. Newer versions omit + the intro if stdout is not a tty. */ + +static int +ignore_line_p (const char *line) +{ + /* This table is used to filter the output. If this text appears + anywhere in the line, it is ignored (strstr is used). */ + static const char * const ignore_lines[] = + { + "The following", + "not necessarily", + "the FROM and TO", + "listed with several", + NULL + }; + int i; + + for (i = 0; ignore_lines[i] != NULL; ++i) + { + if (strstr (line, ignore_lines[i]) != NULL) + return 1; + } + + return 0; +} + static void find_charset_names (void) { @@ -712,27 +784,38 @@ find_charset_names (void) char *args[3]; int err, status; int fail = 1; + struct gdb_environ *iconv_env; + + /* Older iconvs, e.g. 2.2.2, don't omit the intro text if stdout is not + a tty. We need to recognize it and ignore it. This text is subject + to translation, so force LANGUAGE=C. */ + iconv_env = make_environ (); + init_environ (iconv_env); + set_in_environ (iconv_env, "LANGUAGE", "C"); + set_in_environ (iconv_env, "LC_ALL", "C"); - child = pex_init (0, "iconv", NULL); + child = pex_init (PEX_USE_PIPES, "iconv", NULL); args[0] = "iconv"; args[1] = "-l"; args[2] = NULL; /* Note that we simply ignore errors here. */ - if (!pex_run (child, PEX_SEARCH | PEX_STDERR_TO_STDOUT, "iconv", - args, NULL, NULL, &err)) + if (!pex_run_in_environment (child, PEX_SEARCH | PEX_STDERR_TO_STDOUT, + "iconv", args, environ_vector (iconv_env), + NULL, NULL, &err)) { FILE *in = pex_read_output (child, 0); /* POSIX says that iconv -l uses an unspecified format. We parse the glibc and libiconv formats; feel free to add others as needed. */ + while (!feof (in)) { /* The size of buf is chosen arbitrarily. */ char buf[1024]; char *start, *r; - int len, keep_going; + int len; r = fgets (buf, sizeof (buf), in); if (!r) @@ -740,6 +823,9 @@ find_charset_names (void) len = strlen (r); if (len <= 3) continue; + if (ignore_line_p (r)) + continue; + /* Strip off the newline. */ --len; /* Strip off one or two '/'s. glibc will print lines like @@ -751,15 +837,21 @@ find_charset_names (void) buf[len] = '\0'; /* libiconv will print multiple entries per line, separated - by spaces. */ + by spaces. Older iconvs will print multiple entries per line, + indented by two spaces, and separated by ", " + (i.e. the human readable form). */ start = buf; while (1) { int keep_going; char *p; - /* Find the next space, or end-of-line. */ - for (p = start; *p && *p != ' '; ++p) + /* Skip leading blanks. */ + for (p = start; *p && *p == ' '; ++p) + ; + start = p; + /* Find the next space, comma, or end-of-line. */ + for ( ; *p && *p != ' ' && *p != ','; ++p) ; /* Ignore an empty result. */ if (p == start) @@ -782,6 +874,7 @@ find_charset_names (void) } pex_free (child); + free_environ (iconv_env); if (fail) { @@ -799,13 +892,25 @@ find_charset_names (void) #endif /* HAVE_ICONVLIST || HAVE_LIBICONVLIST */ #endif /* PHONY_ICONV */ +/* The "auto" target charset used by default_auto_charset. */ +static const char *auto_target_charset_name = GDB_DEFAULT_TARGET_CHARSET; + +const char * +default_auto_charset (void) +{ + return auto_target_charset_name; +} + +const char * +default_auto_wide_charset (void) +{ + return GDB_DEFAULT_TARGET_WIDE_CHARSET; +} + void _initialize_charset (void) { - struct cmd_list_element *new_cmd; - - /* The first element is always "auto"; then we skip it for the - commands where it is not allowed. */ + /* The first element is always "auto". */ VEC_safe_push (char_ptr, charsets, xstrdup ("auto")); find_charset_names (); @@ -816,19 +921,30 @@ _initialize_charset (void) #ifndef PHONY_ICONV #ifdef HAVE_LANGINFO_CODESET - auto_host_charset_name = nl_langinfo (CODESET); + /* The result of nl_langinfo may be overwritten later. This may + leak a little memory, if the user later changes the host charset, + but that doesn't matter much. */ + auto_host_charset_name = xstrdup (nl_langinfo (CODESET)); /* Solaris will return `646' here -- but the Solaris iconv then - does not accept this. */ - if (!strcmp (auto_host_charset_name, "646")) + does not accept this. Darwin (and maybe FreeBSD) may return "" here, + which GNU libiconv doesn't like (infinite loop). */ + if (!strcmp (auto_host_charset_name, "646") || !*auto_host_charset_name) auto_host_charset_name = "ASCII"; - target_charset_name = auto_host_charset_name; - - set_be_le_names (); + auto_target_charset_name = auto_host_charset_name; +#elif defined (USE_WIN32API) + { + static char w32_host_default_charset[16]; /* "CP" + x<=5 digits + paranoia. */ + + snprintf (w32_host_default_charset, sizeof w32_host_default_charset, + "CP%d", GetACP()); + auto_host_charset_name = w32_host_default_charset; + auto_target_charset_name = auto_host_charset_name; + } #endif #endif add_setshow_enum_cmd ("charset", class_support, - &charset_enum[1], &host_charset_name, _("\ + charset_enum, &host_charset_name, _("\ Set the host and target character sets."), _("\ Show the host and target character sets."), _("\ The `host character set' is the one used by the system GDB is running on.\n\ @@ -856,7 +972,7 @@ To see a list of the character sets GDB supports, type `set host-charset '. &setlist, &showlist); add_setshow_enum_cmd ("target-charset", class_support, - &charset_enum[1], &target_charset_name, _("\ + charset_enum, &target_charset_name, _("\ Set the target character set."), _("\ Show the target character set."), _("\ The `target character set' is the one used by the program being debugged.\n\ @@ -868,7 +984,7 @@ To see a list of the character sets GDB supports, type `set target-charset' &setlist, &showlist); add_setshow_enum_cmd ("target-wide-charset", class_support, - &charset_enum[1], &target_wide_charset_name, + charset_enum, &target_wide_charset_name, _("\ Set the target wide character set."), _("\ Show the target wide character set."), _("\ diff --git a/contrib/gdb-7/gdb/charset.h b/contrib/gdb-7/gdb/charset.h index 1b88dae6c9..bd93d01d7d 100644 --- a/contrib/gdb-7/gdb/charset.h +++ b/contrib/gdb-7/gdb/charset.h @@ -1,5 +1,5 @@ /* Character set conversion support for GDB. - Copyright (C) 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -33,8 +33,8 @@ result is owned by the charset module; the caller should not free it. */ const char *host_charset (void); -const char *target_charset (void); -const char *target_wide_charset (enum bfd_endian byte_order); +const char *target_charset (struct gdbarch *gdbarch); +const char *target_wide_charset (struct gdbarch *gdbarch); /* These values are used to specify the type of transliteration done by convert_between_encodings. */ diff --git a/contrib/gdb-7/gdb/cli-out.c b/contrib/gdb-7/gdb/cli-out.c index 7dcb78ee1a..de0559f0e9 100644 --- a/contrib/gdb-7/gdb/cli-out.c +++ b/contrib/gdb-7/gdb/cli-out.c @@ -1,6 +1,6 @@ /* Output generating routines for GDB CLI. - Copyright (C) 1999, 2000, 2002, 2003, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions. @@ -27,94 +27,30 @@ #include "gdb_string.h" #include "gdb_assert.h" -struct ui_out_data - { - struct ui_file *stream; - struct ui_file *original_stream; - int suppress_output; - }; -typedef struct ui_out_data cli_out_data; +typedef struct cli_ui_out_data cli_out_data; -/* These are the CLI output functions */ - -static void cli_table_begin (struct ui_out *uiout, int nbrofcols, - int nr_rows, const char *tblid); -static void cli_table_body (struct ui_out *uiout); -static void cli_table_end (struct ui_out *uiout); -static void cli_table_header (struct ui_out *uiout, int width, - enum ui_align alig, const char *col_name, - const char *colhdr); -static void cli_begin (struct ui_out *uiout, enum ui_out_type type, - int level, const char *lstid); -static void cli_end (struct ui_out *uiout, enum ui_out_type type, int level); -static void cli_field_int (struct ui_out *uiout, int fldno, int width, - enum ui_align alig, const char *fldname, int value); -static void cli_field_skip (struct ui_out *uiout, int fldno, int width, - enum ui_align alig, const char *fldname); -static void cli_field_string (struct ui_out *uiout, int fldno, int width, - enum ui_align alig, const char *fldname, - const char *string); -static void cli_field_fmt (struct ui_out *uiout, int fldno, - int width, enum ui_align align, - const char *fldname, const char *format, - va_list args) ATTR_FORMAT (printf, 6, 0); -static void cli_spaces (struct ui_out *uiout, int numspaces); -static void cli_text (struct ui_out *uiout, const char *string); -static void cli_message (struct ui_out *uiout, int verbosity, - const char *format, va_list args) - ATTR_FORMAT (printf, 3, 0); -static void cli_wrap_hint (struct ui_out *uiout, char *identstring); -static void cli_flush (struct ui_out *uiout); -static int cli_redirect (struct ui_out *uiout, struct ui_file *outstream); - -/* This is the CLI ui-out implementation functions vector */ - -/* FIXME: This can be initialized dynamically after default is set to - handle initial output in main.c */ - -static struct ui_out_impl cli_ui_out_impl = -{ - cli_table_begin, - cli_table_body, - cli_table_end, - cli_table_header, - cli_begin, - cli_end, - cli_field_int, - cli_field_skip, - cli_field_string, - cli_field_fmt, - cli_spaces, - cli_text, - cli_message, - cli_wrap_hint, - cli_flush, - cli_redirect, - 0, /* Does not need MI hacks (i.e. needs CLI hacks). */ -}; /* Prototypes for local functions */ -extern void _initialize_cli_out (void); +static void cli_text (struct ui_out *uiout, const char *string); static void field_separator (void); static void out_field_fmt (struct ui_out *uiout, int fldno, const char *fldname, - const char *format,...) ATTR_FORMAT (printf, 4, 5); - -/* local variables */ + const char *format,...) ATTRIBUTE_PRINTF (4, 5); -/* (none yet) */ +/* These are the CLI output functions */ /* Mark beginning of a table */ -void +static void cli_table_begin (struct ui_out *uiout, int nbrofcols, int nr_rows, const char *tblid) { cli_out_data *data = ui_out_data (uiout); + if (nr_rows == 0) data->suppress_output = 1; else @@ -125,10 +61,11 @@ cli_table_begin (struct ui_out *uiout, int nbrofcols, /* Mark beginning of a table body */ -void +static void cli_table_body (struct ui_out *uiout) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; /* first, close the table header line */ @@ -137,84 +74,98 @@ cli_table_body (struct ui_out *uiout) /* Mark end of a table */ -void +static void cli_table_end (struct ui_out *uiout) { cli_out_data *data = ui_out_data (uiout); + data->suppress_output = 0; } /* Specify table header */ -void +static void cli_table_header (struct ui_out *uiout, int width, enum ui_align alignment, const char *col_name, const char *colhdr) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; - cli_field_string (uiout, 0, width, alignment, 0, colhdr); + + /* Always go through the function pointer (virtual function call). + We may have been extended. */ + uo_field_string (uiout, 0, width, alignment, 0, colhdr); } /* Mark beginning of a list */ -void +static void cli_begin (struct ui_out *uiout, enum ui_out_type type, int level, const char *id) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; } /* Mark end of a list */ -void +static void cli_end (struct ui_out *uiout, enum ui_out_type type, int level) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; } /* output an int field */ -void +static void cli_field_int (struct ui_out *uiout, int fldno, int width, enum ui_align alignment, const char *fldname, int value) { - char buffer[20]; /* FIXME: how many chars long a %d can become? */ - + char buffer[20]; /* FIXME: how many chars long a %d can become? */ cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; sprintf (buffer, "%d", value); - cli_field_string (uiout, fldno, width, alignment, fldname, buffer); + + /* Always go through the function pointer (virtual function call). + We may have been extended. */ + uo_field_string (uiout, fldno, width, alignment, fldname, buffer); } /* used to ommit a field */ -void +static void cli_field_skip (struct ui_out *uiout, int fldno, int width, enum ui_align alignment, const char *fldname) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; - cli_field_string (uiout, fldno, width, alignment, fldname, ""); + + /* Always go through the function pointer (virtual function call). + We may have been extended. */ + uo_field_string (uiout, fldno, width, alignment, fldname, ""); } /* other specific cli_field_* end up here so alignment and field separators are both handled by cli_field_string */ -void +static void cli_field_string (struct ui_out *uiout, int fldno, int width, @@ -224,8 +175,8 @@ cli_field_string (struct ui_out *uiout, { int before = 0; int after = 0; - cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; @@ -265,7 +216,7 @@ cli_field_string (struct ui_out *uiout, /* This is the only field function that does not align. */ -void +static void ATTRIBUTE_PRINTF (6, 0) cli_field_fmt (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, @@ -273,6 +224,7 @@ cli_field_fmt (struct ui_out *uiout, int fldno, va_list args) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; @@ -282,55 +234,61 @@ cli_field_fmt (struct ui_out *uiout, int fldno, field_separator (); } -void +static void cli_spaces (struct ui_out *uiout, int numspaces) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; print_spaces_filtered (numspaces, data->stream); } -void +static void cli_text (struct ui_out *uiout, const char *string) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; fputs_filtered (string, data->stream); } -void +static void ATTRIBUTE_PRINTF (3, 0) cli_message (struct ui_out *uiout, int verbosity, const char *format, va_list args) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; if (ui_out_get_verblvl (uiout) >= verbosity) vfprintf_unfiltered (data->stream, format, args); } -void +static void cli_wrap_hint (struct ui_out *uiout, char *identstring) { cli_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; wrap_here (identstring); } -void +static void cli_flush (struct ui_out *uiout) { cli_out_data *data = ui_out_data (uiout); + gdb_flush (data->stream); } -int +static int cli_redirect (struct ui_out *uiout, struct ui_file *outstream) { - struct ui_out_data *data = ui_out_data (uiout); + cli_out_data *data = ui_out_data (uiout); + if (outstream != NULL) { data->original_stream = data->stream; @@ -371,20 +329,55 @@ static void field_separator (void) { cli_out_data *data = ui_out_data (uiout); + fputc_filtered (' ', data->stream); } -/* Initalize private members at startup. */ +/* This is the CLI ui-out implementation functions vector */ + +/* FIXME: This can be initialized dynamically after default is set to + handle initial output in main.c */ + +struct ui_out_impl cli_ui_out_impl = +{ + cli_table_begin, + cli_table_body, + cli_table_end, + cli_table_header, + cli_begin, + cli_end, + cli_field_int, + cli_field_skip, + cli_field_string, + cli_field_fmt, + cli_spaces, + cli_text, + cli_message, + cli_wrap_hint, + cli_flush, + cli_redirect, + 0, /* Does not need MI hacks (i.e. needs CLI hacks). */ +}; + +/* Constructor for a `cli_out_data' object. */ + +void +cli_out_data_ctor (cli_out_data *self, struct ui_file *stream) +{ + self->stream = stream; + self->original_stream = NULL; + self->suppress_output = 0; +} + +/* Initialize private members at startup. */ struct ui_out * cli_out_new (struct ui_file *stream) { int flags = ui_source_list; - cli_out_data *data = XMALLOC (cli_out_data); - data->stream = stream; - data->original_stream = NULL; - data->suppress_output = 0; + + cli_out_data_ctor (data, stream); return ui_out_new (&cli_ui_out_impl, data, flags); } @@ -393,13 +386,7 @@ cli_out_set_stream (struct ui_out *uiout, struct ui_file *stream) { cli_out_data *data = ui_out_data (uiout); struct ui_file *old = data->stream; + data->stream = stream; return old; } - -/* Standard gdb initialization hook. */ -void -_initialize_cli_out (void) -{ - /* nothing needs to be done */ -} diff --git a/contrib/gdb-7/gdb/cli-out.h b/contrib/gdb-7/gdb/cli-out.h index c03a92b273..b4cdd82350 100644 --- a/contrib/gdb-7/gdb/cli-out.h +++ b/contrib/gdb-7/gdb/cli-out.h @@ -1,5 +1,6 @@ /* Output generating routines for GDB CLI. - Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Cygnus Solutions. This file is part of GDB. @@ -20,10 +21,26 @@ #ifndef CLI_OUT_H #define CLI_OUT_H -struct ui_file; +#include "ui-out.h" + +/* These are exported so that they can be extended by other `ui_out' + implementations, like TUI's. */ + +struct cli_ui_out_data + { + struct ui_file *stream; + struct ui_file *original_stream; + int suppress_output; + }; + +extern struct ui_out_impl cli_ui_out_impl; + extern struct ui_out *cli_out_new (struct ui_file *stream); +extern void cli_out_data_ctor (struct cli_ui_out_data *data, + struct ui_file *stream); + extern struct ui_file *cli_out_set_stream (struct ui_out *uiout, struct ui_file *stream); diff --git a/contrib/gdb-7/gdb/cli/cli-cmds.c b/contrib/gdb-7/gdb/cli/cli-cmds.c index ce7c2a6306..e5df8f5207 100644 --- a/contrib/gdb-7/gdb/cli/cli-cmds.c +++ b/contrib/gdb-7/gdb/cli/cli-cmds.c @@ -1,6 +1,6 @@ /* GDB CLI commands. - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -19,6 +19,7 @@ along with this program. If not, see . */ #include "defs.h" +#include "exceptions.h" #include "arch-utils.h" #include "readline/readline.h" #include "readline/tilde.h" @@ -37,6 +38,7 @@ #include "objfiles.h" #include "source.h" #include "disasm.h" +#include "tracepoint.h" #include "ui-out.h" @@ -46,6 +48,8 @@ #include "cli/cli-setshow.h" #include "cli/cli-cmds.h" +#include "python/python.h" + #ifdef TUI #include "tui/tui.h" /* For tui_active et.al. */ #endif @@ -186,6 +190,21 @@ struct cmd_list_element *showchecklist; int source_verbose = 0; int trace_commands = 0; +/* 'script-extension' option support. */ + +static const char script_ext_off[] = "off"; +static const char script_ext_soft[] = "soft"; +static const char script_ext_strict[] = "strict"; + +static const char *script_ext_enums[] = { + script_ext_off, + script_ext_soft, + script_ext_strict, + NULL +}; + +static const char *script_ext_mode = script_ext_soft; + /* Utility used everywhere when at least one argument is needed and none is supplied. */ @@ -228,6 +247,7 @@ compare_strings (const void *arg1, const void *arg2) { const char **s1 = (const char **) arg1; const char **s2 = (const char **) arg2; + return strcmp (*s1, *s2); } @@ -236,7 +256,6 @@ compare_strings (const void *arg1, const void *arg2) static void complete_command (char *arg, int from_tty) { - int i; int argpoint; char **completions, *point, *arg_prefix; @@ -278,6 +297,7 @@ complete_command (char *arg, int from_tty) while (item < size) { int next_item; + printf_unfiltered ("%s%s\n", arg_prefix, completions[item]); next_item = item + 1; while (next_item < size @@ -317,6 +337,9 @@ quit_command (char *args, int from_tty) { if (!quit_confirm ()) error (_("Not confirmed.")); + + disconnect_tracing (from_tty); + quit_force (args, from_tty); } @@ -406,6 +429,7 @@ cd_command (char *dir, int from_tty) /* Search backwards for the directory just before the "/.." and obliterate it and the "/..". */ char *q = p; + while (q != current_directory && !IS_DIR_SEPARATOR (q[-1])) --q; @@ -437,51 +461,143 @@ cd_command (char *dir, int from_tty) pwd_command ((char *) 0, 1); } -void -source_script (char *file, int from_tty) +/* Show the current value of the 'script-extension' option. */ + +static void +show_script_ext_mode (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) { - FILE *stream; - struct cleanup *old_cleanups; - char *full_pathname = NULL; + fprintf_filtered (file, _("\ +Script filename extension recognition is \"%s\".\n"), + value); +} + +/* Try to open SCRIPT_FILE. + If successful, the full path name is stored in *FULL_PATHP, + the stream is stored in *STREAMP, and return 1. + The caller is responsible for freeing *FULL_PATHP. + If not successful, return 0; errno is set for the last file + we tried to open. + + If SEARCH_PATH is non-zero, and the file isn't found in cwd, + search for it in the source search path. + + NOTE: This calls openp which uses xfullpath to compute the full path + instead of gdb_realpath. Symbolic links are not resolved. */ + +int +find_and_open_script (const char *script_file, int search_path, + FILE **streamp, char **full_pathp) +{ + char *file; int fd; + struct cleanup *old_cleanups; + int search_flags = OPF_TRY_CWD_FIRST; - if (file == NULL || *file == 0) + file = tilde_expand (script_file); + old_cleanups = make_cleanup (xfree, file); + + if (search_path) + search_flags |= OPF_SEARCH_IN_PATH; + + /* Search for and open 'file' on the search path used for source + files. Put the full location in *FULL_PATHP. */ + fd = openp (source_path, search_flags, + file, O_RDONLY, full_pathp); + + if (fd == -1) { - error (_("source command requires file name of file to source.")); + int save_errno = errno; + do_cleanups (old_cleanups); + errno = save_errno; + return 0; } - file = tilde_expand (file); - old_cleanups = make_cleanup (xfree, file); + do_cleanups (old_cleanups); - /* Search for and open 'file' on the search path used for source - files. Put the full location in 'full_pathname'. */ - fd = openp (source_path, OPF_TRY_CWD_FIRST, - file, O_RDONLY, &full_pathname); - make_cleanup (xfree, full_pathname); + *streamp = fdopen (fd, FOPEN_RT); + return 1; +} + +/* Load script FILE, which has already been opened as STREAM. + STREAM is closed before we return. */ - /* Use the full path name, if it is found. */ - if (full_pathname != NULL && fd != -1) +static void +source_script_from_stream (FILE *stream, const char *file) +{ + if (script_ext_mode != script_ext_off + && strlen (file) > 3 && !strcmp (&file[strlen (file) - 3], ".py")) { - file = full_pathname; + volatile struct gdb_exception e; + + TRY_CATCH (e, RETURN_MASK_ERROR) + { + source_python_script (stream, file); + } + if (e.reason < 0) + { + /* Should we fallback to ye olde GDB script mode? */ + if (script_ext_mode == script_ext_soft + && e.reason == RETURN_ERROR && e.error == UNSUPPORTED_ERROR) + { + fseek (stream, 0, SEEK_SET); + script_from_file (stream, (char*) file); + } + else + { + /* Nope, just punt. */ + fclose (stream); + throw_exception (e); + } + } + else + fclose (stream); } + else + script_from_file (stream, file); +} - if (fd == -1) +/* Worker to perform the "source" command. + Load script FILE. + If SEARCH_PATH is non-zero, and the file isn't found in cwd, + search for it in the source search path. */ + +static void +source_script_with_search (const char *file, int from_tty, int search_path) +{ + FILE *stream; + char *full_path; + struct cleanup *old_cleanups; + + if (file == NULL || *file == 0) + error (_("source command requires file name of file to source.")); + + if (!find_and_open_script (file, search_path, &stream, &full_path)) { + /* The script wasn't found, or was otherwise inaccessible. + If the source command was invoked interactively, throw an error. + Otherwise (e.g. if it was invoked by a script), silently ignore + the error. */ if (from_tty) perror_with_name (file); else - { - do_cleanups (old_cleanups); - return; - } + return; } - stream = fdopen (fd, FOPEN_RT); - script_from_file (stream, file); - + old_cleanups = make_cleanup (xfree, full_path); + source_script_from_stream (stream, file); do_cleanups (old_cleanups); } +/* Wrapper around source_script_with_search to export it to main.c + for use in loading .gdbinit scripts. */ + +void +source_script (char *file, int from_tty) +{ + source_script_with_search (file, from_tty, 0); +} + /* Return the source_verbose global variable to its previous state on exit from the source command, by whatever means. */ static void @@ -497,33 +613,54 @@ source_command (char *args, int from_tty) struct cleanup *old_cleanups; char *file = args; int *old_source_verbose = xmalloc (sizeof(int)); + int search_path = 0; *old_source_verbose = source_verbose; old_cleanups = make_cleanup (source_verbose_cleanup, old_source_verbose); /* -v causes the source command to run in verbose mode. + -s causes the file to be searched in the source search path, + even if the file name contains a '/'. We still have to be able to handle filenames with spaces in a backward compatible way, so buildargv is not appropriate. */ if (args) { - /* Make sure leading white space does not break the comparisons. */ - while (isspace(args[0])) - args++; - - /* Is -v the first thing in the string? */ - if (args[0] == '-' && args[1] == 'v' && isspace (args[2])) + while (args[0] != '\0') { - source_verbose = 1; + /* Make sure leading white space does not break the comparisons. */ + while (isspace(args[0])) + args++; + + if (args[0] != '-') + break; + + if (args[1] == 'v' && isspace (args[2])) + { + source_verbose = 1; + + /* Skip passed -v. */ + args = &args[3]; + } + else if (args[1] == 's' && isspace (args[2])) + { + search_path = 1; - /* Trim -v and whitespace from the filename. */ - file = &args[3]; - while (isspace (file[0])) - file++; + /* Skip passed -s. */ + args = &args[3]; + } + else + break; } + + while (isspace (args[0])) + args++; + file = args; } - source_script (file, from_tty); + source_script_with_search (file, from_tty, search_path); + + do_cleanups (old_cleanups); } @@ -543,7 +680,7 @@ echo_command (char *text, int from_tty) if (*p == 0) return; - c = parse_escape (&p); + c = parse_escape (get_current_arch (), &p); if (c >= 0) printf_filtered ("%c", c); } @@ -646,7 +783,6 @@ edit_command (char *arg, int from_tty) } else { - /* Now should only be one argument -- decode it in SAL. */ arg1 = arg; @@ -677,6 +813,7 @@ edit_command (char *arg, int from_tty) if (*arg == '*') { struct gdbarch *gdbarch; + if (sal.symtab == 0) /* FIXME-32x64--assumes sal.pc fits in long. */ error (_("No source file for address %s."), @@ -842,6 +979,7 @@ list_command (char *arg, int from_tty) if (*arg == '*') { struct gdbarch *gdbarch; + if (sal.symtab == 0) /* FIXME-32x64--assumes sal.pc fits in long. */ error (_("No source file for address %s."), @@ -936,8 +1074,7 @@ print_disassembly (struct gdbarch *gdbarch, const char *name, } /* Subroutine of disassemble_command to simplify it. - Print a disassembly of the current function. - MIXED is non-zero to print source with the assembler. */ + Print a disassembly of the current function according to FLAGS. */ static void disassemble_current_function (int flags) @@ -971,8 +1108,9 @@ disassemble_current_function (int flags) - dump the assembly code for the function of the current pc disassemble [/mr] addr - dump the assembly code for the function at ADDR - disassemble [/mr] low high - - dump the assembly code in the range [LOW,HIGH) + disassemble [/mr] low,high + disassemble [/mr] low,+length + - dump the assembly code in the range [LOW,HIGH), or [LOW,LOW+length) A /m modifier will include source code with the assembly. A /r modifier will include raw instructions in hex with the assembly. */ @@ -983,8 +1121,7 @@ disassemble_command (char *arg, int from_tty) struct gdbarch *gdbarch = get_current_arch (); CORE_ADDR low, high; char *name; - CORE_ADDR pc, pc_masked; - char *space_index; + CORE_ADDR pc; int flags; name = NULL; @@ -1018,17 +1155,17 @@ disassemble_command (char *arg, int from_tty) if (! arg || ! *arg) { + flags |= DISASSEMBLY_OMIT_FNAME; disassemble_current_function (flags); return; } - /* FIXME: 'twould be nice to allow spaces in the expression for the first - arg. Allow comma separater too? */ - - if (!(space_index = (char *) strchr (arg, ' '))) + pc = value_as_address (parse_to_comma_and_eval (&arg)); + if (arg[0] == ',') + ++arg; + if (arg[0] == '\0') { /* One argument. */ - pc = parse_and_eval_address (arg); if (find_pc_partial_function (pc, &name, &low, &high) == 0) error (_("No function contains specified address.")); #if defined(TUI) @@ -1039,13 +1176,23 @@ disassemble_command (char *arg, int from_tty) low = tui_get_low_disassembly_address (gdbarch, low, pc); #endif low += gdbarch_deprecated_function_start_offset (gdbarch); + flags |= DISASSEMBLY_OMIT_FNAME; } else { /* Two arguments. */ - *space_index = '\0'; - low = parse_and_eval_address (arg); - high = parse_and_eval_address (space_index + 1); + int incl_flag = 0; + low = pc; + while (isspace (*arg)) + arg++; + if (arg[0] == '+') + { + ++arg; + incl_flag = 1; + } + high = parse_and_eval_address (arg); + if (incl_flag) + high += low; } print_disassembly (gdbarch, name, low, high, flags); @@ -1077,6 +1224,7 @@ show_user (char *args, int from_tty) if (args) { char *comname = args; + c = lookup_cmd (&comname, cmdlist, "", 0, 1); if (c->class != class_user) error (_("Not a user command.")); @@ -1102,6 +1250,7 @@ apropos_command (char *searchstr, int from_tty) regex_t pattern; char *pattern_fastmap; char errorbuffer[512]; + pattern_fastmap = xcalloc (256, sizeof (char)); if (searchstr == NULL) error (_("REGEXP string is empty")); @@ -1304,14 +1453,31 @@ Commands defined in this way may have up to ten arguments.")); source_help_text = xstrprintf (_("\ Read commands from a file named FILE.\n\ -Optional -v switch (before the filename) causes each command in\n\ -FILE to be echoed as it is executed.\n\ +\n\ +Usage: source [-s] [-v] FILE\n\ +-s: search for the script in the source search path,\n\ + even if FILE contains directories.\n\ +-v: each command in FILE is echoed as it is executed.\n\ +\n\ Note that the file \"%s\" is read automatically in this way\n\ when GDB is started."), gdbinit); c = add_cmd ("source", class_support, source_command, source_help_text, &cmdlist); set_cmd_completer (c, filename_completer); + add_setshow_enum_cmd ("script-extension", class_support, + script_ext_enums, &script_ext_mode, _("\ +Set mode for script filename extension recognition."), _("\ +Show mode for script filename extension recognition."), _("\ +off == no filename extension recognition (all sourced files are GDB scripts)\n\ +soft == evaluate script according to filename extension, fallback to GDB script" + "\n\ +strict == evaluate script according to filename extension, error if not supported" + ), + NULL, + show_script_ext_mode, + &setlist, &showlist); + add_com ("quit", class_support, quit_command, _("Exit gdb.")); c = add_com ("help", class_support, help_command, _("Print list of commands.")); @@ -1460,7 +1626,8 @@ Default is the function surrounding the pc of the selected frame.\n\ With a /m modifier, source lines are included (if available).\n\ With a /r modifier, raw instructions in hex are included.\n\ With a single argument, the function surrounding that address is dumped.\n\ -Two arguments are taken as a range of memory to dump.")); +Two arguments (separated by a comma) are taken as a range of memory to dump,\n\ + in the form of \"start,end\", or \"start,+length\".")); set_cmd_completer (c, location_completer); if (xdb_commands) add_com_alias ("va", "disassemble", class_xdb, 0); diff --git a/contrib/gdb-7/gdb/cli/cli-cmds.h b/contrib/gdb-7/gdb/cli/cli-cmds.h index 3260fe8d74..596870e0a3 100644 --- a/contrib/gdb-7/gdb/cli/cli-cmds.h +++ b/contrib/gdb-7/gdb/cli/cli-cmds.h @@ -1,5 +1,5 @@ /* Header file for GDB CLI command implementation library. - Copyright (c) 2000,2006,2007,2008,2009 Free Software Foundation, Inc. + Copyright (c) 2000,2006,2007,2008,2009,2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -123,10 +123,10 @@ extern void quit_command (char *, int); extern void source_script (char *, int); -/* Used everywhere whenever at least one parameter is required and - none is specified. */ +/* Exported to objfiles.c. */ -extern NORETURN void error_no_arg (char *) ATTR_NORETURN; +extern int find_and_open_script (const char *file, int search_path, + FILE **streamp, char **full_path); /* Command tracing state. */ diff --git a/contrib/gdb-7/gdb/cli/cli-decode.c b/contrib/gdb-7/gdb/cli/cli-decode.c index 3e4f6f57f9..374bd19b83 100644 --- a/contrib/gdb-7/gdb/cli/cli-decode.c +++ b/contrib/gdb-7/gdb/cli/cli-decode.c @@ -1,7 +1,7 @@ /* Handle lists of commands, their decoding and documentation, for GDB. Copyright (c) 1986, 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2004, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -149,7 +149,7 @@ add_cmd (char *name, enum command_class class, void (*fun) (char *, int), char *doc, struct cmd_list_element **list) { struct cmd_list_element *c - = (struct cmd_list_element *) xmalloc (sizeof (struct cmd_list_element)); + = (struct cmd_list_element *) xmalloc (sizeof (struct cmd_list_element)); struct cmd_list_element *p, *iter; /* Turn each alias of the old command into an alias of the new @@ -240,6 +240,7 @@ add_alias_cmd (char *name, char *oldname, enum command_class class, char *copied_name; struct cmd_list_element *old; struct cmd_list_element *c; + copied_name = (char *) alloca (strlen (oldname) + 1); strcpy (copied_name, oldname); old = lookup_cmd (&copied_name, *list, "", 1, 1); @@ -250,6 +251,7 @@ add_alias_cmd (char *name, char *oldname, enum command_class class, struct cmd_list_element *aliases = delete_cmd (name, list, &prehook, &prehookee, &posthook, &posthookee); + /* If this happens, it means a programmer error somewhere. */ gdb_assert (!aliases && !prehook && !prehookee && !posthook && ! posthookee); @@ -282,6 +284,7 @@ add_prefix_cmd (char *name, enum command_class class, void (*fun) (char *, int), struct cmd_list_element **list) { struct cmd_list_element *c = add_cmd (name, class, fun, doc, list); + c->prefixlist = prefixlist; c->prefixname = prefixname; c->allow_unknown = allow_unknown; @@ -297,6 +300,7 @@ add_abbrev_prefix_cmd (char *name, enum command_class class, int allow_unknown, struct cmd_list_element **list) { struct cmd_list_element *c = add_cmd (name, class, fun, doc, list); + c->prefixlist = prefixlist; c->prefixname = prefixname; c->allow_unknown = allow_unknown; @@ -336,6 +340,7 @@ add_set_or_show_cmd (char *name, struct cmd_list_element **list) { struct cmd_list_element *c = add_cmd (name, class, NULL, doc, list); + gdb_assert (type == set_cmd || type == show_cmd); c->type = type; c->var_type = var_type; @@ -416,6 +421,7 @@ add_setshow_enum_cmd (char *name, struct cmd_list_element **show_list) { struct cmd_list_element *c; + add_setshow_cmd_full (name, class, var_enum, var, set_doc, show_doc, help_doc, set_func, show_func, @@ -441,6 +447,7 @@ add_setshow_auto_boolean_cmd (char *name, { static const char *auto_boolean_enums[] = { "on", "off", "auto", NULL }; struct cmd_list_element *c; + add_setshow_cmd_full (name, class, var_auto_boolean, var, set_doc, show_doc, help_doc, set_func, show_func, @@ -464,6 +471,7 @@ add_setshow_boolean_cmd (char *name, enum command_class class, int *var, { static const char *boolean_enums[] = { "on", "off", NULL }; struct cmd_list_element *c; + add_setshow_cmd_full (name, class, var_boolean, var, set_doc, show_doc, help_doc, set_func, show_func, @@ -485,6 +493,7 @@ add_setshow_filename_cmd (char *name, enum command_class class, struct cmd_list_element **show_list) { struct cmd_list_element *set_result; + add_setshow_cmd_full (name, class, var_filename, var, set_doc, show_doc, help_doc, set_func, show_func, @@ -752,10 +761,11 @@ add_com_alias (char *name, char *oldname, enum command_class class, */ void apropos_cmd (struct ui_file *stream, struct cmd_list_element *commandlist, - struct re_pattern_buffer *regex, char *prefix) + struct re_pattern_buffer *regex, char *prefix) { struct cmd_list_element *c; int returnvalue; + /* Walk through the commands */ for (c=commandlist;c;c=c->next) { @@ -763,7 +773,8 @@ apropos_cmd (struct ui_file *stream, struct cmd_list_element *commandlist, if (c->name != NULL) { /* Try to match against the name*/ - returnvalue=re_search(regex,c->name,strlen(c->name),0,strlen(c->name),NULL); + returnvalue = re_search (regex, c->name, strlen(c->name), + 0, strlen (c->name), NULL); if (returnvalue >= 0) { print_help_for_command (c, prefix, @@ -1051,10 +1062,10 @@ help_cmd_list (struct cmd_list_element *list, enum command_class class, for (c = list; c; c = c->next) { - if (c->abbrev_flag == 0 && - (class == all_commands - || (class == all_classes && c->func == NULL) - || (class == c->class && c->func != NULL))) + if (c->abbrev_flag == 0 + && (class == all_commands + || (class == all_classes && c->func == NULL) + || (class == c->class && c->func != NULL))) { print_help_for_command (c, prefix, recurse, stream); } @@ -1108,11 +1119,11 @@ find_command_name_length (const char *text) used as a suffix for print, examine and display. Note that this is larger than the character set allowed when creating user-defined commands. */ - while (isalnum (*p) || *p == '-' || *p == '_' || + while (isalnum (*p) || *p == '-' || *p == '_' /* Characters used by TUI specific commands. */ - *p == '+' || *p == '<' || *p == '>' || *p == '$' || + || *p == '+' || *p == '<' || *p == '>' || *p == '$' /* Characters used for XDB compatibility. */ - (xdb_commands && (*p == '!' || *p == '/' || *p == '?'))) + || (xdb_commands && (*p == '!' || *p == '/' || *p == '?'))) p++; return p - text; @@ -1195,6 +1206,7 @@ lookup_cmd_1 (char **text, struct cmd_list_element *clist, for (tmp = 0; tmp < len; tmp++) { char x = command[tmp]; + command[tmp] = isupper (x) ? tolower (x) : x; } found = find_cmd (command, len, clist, ignore_help_classes, &nfound); @@ -1336,7 +1348,7 @@ lookup_cmd (char **line, struct cmd_list_element *list, char *cmdtype, allow_unknown); char *local_cmdtype = last_list ? last_list->prefixname : cmdtype; struct cmd_list_element *local_list = - (last_list ? *(last_list->prefixlist) : list); + (last_list ? *(last_list->prefixlist) : list); if (local_allow_unknown < 0) { @@ -1422,8 +1434,6 @@ deprecated_cmd_warning (char **text) struct cmd_list_element *alias = NULL; struct cmd_list_element *prefix_cmd = NULL; struct cmd_list_element *cmd = NULL; - struct cmd_list_element *c; - char *type; if (!lookup_cmd_composition (*text, &alias, &prefix_cmd, &cmd)) /* return if text doesn't evaluate to a command */ @@ -1452,22 +1462,22 @@ deprecated_cmd_warning (char **text) printf_filtered ("' is deprecated.\n"); - /* if it is only the alias that is deprecated, we want to indicate the - new alias, otherwise we'll indicate the new command */ + /* If it is only the alias that is deprecated, we want to indicate the + new alias, otherwise we'll indicate the new command. */ if (alias && !(cmd->flags & CMD_DEPRECATED)) { if (alias->replacement) - printf_filtered ("Use '%s'.\n\n", alias->replacement); + printf_filtered ("Use '%s'.\n\n", alias->replacement); else - printf_filtered ("No alternative known.\n\n"); + printf_filtered ("No alternative known.\n\n"); } else { if (cmd->replacement) - printf_filtered ("Use '%s'.\n\n", cmd->replacement); + printf_filtered ("Use '%s'.\n\n", cmd->replacement); else - printf_filtered ("No alternative known.\n\n"); + printf_filtered ("No alternative known.\n\n"); } /* We've warned you, now we'll keep quiet */ @@ -1503,6 +1513,7 @@ lookup_cmd_composition (char *text, int len, tmp, nfound; struct cmd_list_element *cur_list; struct cmd_list_element *prev_cmd; + *alias = NULL; *prefix_cmd = NULL; *cmd = NULL; @@ -1512,12 +1523,12 @@ lookup_cmd_composition (char *text, while (1) { /* Go through as many command lists as we need to - to find the command TEXT refers to. */ + to find the command TEXT refers to. */ prev_cmd = *cmd; while (*text == ' ' || *text == '\t') - (text)++; + (text)++; /* Identify the name of the command. */ len = find_command_name_length (text); @@ -1526,8 +1537,8 @@ lookup_cmd_composition (char *text, if (len == 0) return 0; - /* text is the start of the first command word to lookup (and - it's length is len). We copy this into a local temporary */ + /* Text is the start of the first command word to lookup (and + it's length is len). We copy this into a local temporary. */ command = (char *) alloca (len + 1); memcpy (command, text, len); @@ -1539,41 +1550,41 @@ lookup_cmd_composition (char *text, *cmd = find_cmd (command, len, cur_list, 1, &nfound); /* We didn't find the command in the entered case, so lower case it - and search again. + and search again. */ if (!*cmd || nfound == 0) - { - for (tmp = 0; tmp < len; tmp++) - { - char x = command[tmp]; - command[tmp] = isupper (x) ? tolower (x) : x; - } - *cmd = find_cmd (command, len, cur_list, 1, &nfound); - } + { + for (tmp = 0; tmp < len; tmp++) + { + char x = command[tmp]; + + command[tmp] = isupper (x) ? tolower (x) : x; + } + *cmd = find_cmd (command, len, cur_list, 1, &nfound); + } if (*cmd == (struct cmd_list_element *) -1) - { - return 0; /* ambiguous */ - } + { + return 0; /* ambiguous */ + } if (*cmd == NULL) - return 0; /* nothing found */ + return 0; /* nothing found */ else - { - if ((*cmd)->cmd_pointer) - { - /* cmd was actually an alias, we note that an alias was used - (by assigning *alais) and we set *cmd. - */ - *alias = *cmd; - *cmd = (*cmd)->cmd_pointer; - } - *prefix_cmd = prev_cmd; - } + { + if ((*cmd)->cmd_pointer) + { + /* cmd was actually an alias, we note that an alias was used + (by assigning *alais) and we set *cmd. */ + *alias = *cmd; + *cmd = (*cmd)->cmd_pointer; + } + *prefix_cmd = prev_cmd; + } if ((*cmd)->prefixlist) - cur_list = *(*cmd)->prefixlist; + cur_list = *(*cmd)->prefixlist; else - return 1; + return 1; text += len; } @@ -1597,43 +1608,65 @@ complete_on_cmdlist (struct cmd_list_element *list, char *text, char *word) int sizeof_matchlist; int matches; int textlen = strlen (text); + int pass; + int saw_deprecated_match = 0; sizeof_matchlist = 10; matchlist = (char **) xmalloc (sizeof_matchlist * sizeof (char *)); matches = 0; - for (ptr = list; ptr; ptr = ptr->next) - if (!strncmp (ptr->name, text, textlen) - && !ptr->abbrev_flag - && (ptr->func - || ptr->prefixlist)) - { - if (matches == sizeof_matchlist) + /* We do one or two passes. In the first pass, we skip deprecated + commands. If we see no matching commands in the first pass, and + if we did happen to see a matching deprecated command, we do + another loop to collect those. */ + for (pass = 0; matches == 0 && pass < 2; ++pass) + { + for (ptr = list; ptr; ptr = ptr->next) + if (!strncmp (ptr->name, text, textlen) + && !ptr->abbrev_flag + && (ptr->func + || ptr->prefixlist)) { - sizeof_matchlist *= 2; - matchlist = (char **) xrealloc ((char *) matchlist, - (sizeof_matchlist - * sizeof (char *))); - } + if (pass == 0) + { + if ((ptr->flags & CMD_DEPRECATED) != 0) + { + saw_deprecated_match = 1; + continue; + } + } - matchlist[matches] = (char *) - xmalloc (strlen (word) + strlen (ptr->name) + 1); - if (word == text) - strcpy (matchlist[matches], ptr->name); - else if (word > text) - { - /* Return some portion of ptr->name. */ - strcpy (matchlist[matches], ptr->name + (word - text)); - } - else - { - /* Return some of text plus ptr->name. */ - strncpy (matchlist[matches], word, text - word); - matchlist[matches][text - word] = '\0'; - strcat (matchlist[matches], ptr->name); + if (matches == sizeof_matchlist) + { + sizeof_matchlist *= 2; + matchlist = (char **) xrealloc ((char *) matchlist, + (sizeof_matchlist + * sizeof (char *))); + } + + matchlist[matches] = (char *) + xmalloc (strlen (word) + strlen (ptr->name) + 1); + if (word == text) + strcpy (matchlist[matches], ptr->name); + else if (word > text) + { + /* Return some portion of ptr->name. */ + strcpy (matchlist[matches], ptr->name + (word - text)); + } + else + { + /* Return some of text plus ptr->name. */ + strncpy (matchlist[matches], word, text - word); + matchlist[matches][text - word] = '\0'; + strcat (matchlist[matches], ptr->name); + } + ++matches; } - ++matches; - } + /* If we saw no matching deprecated commands in the first pass, + just bail out. */ + if (!saw_deprecated_match) + break; + } if (matches == 0) { diff --git a/contrib/gdb-7/gdb/cli/cli-decode.h b/contrib/gdb-7/gdb/cli/cli-decode.h index b6475e04d8..2764d417eb 100644 --- a/contrib/gdb-7/gdb/cli/cli-decode.h +++ b/contrib/gdb-7/gdb/cli/cli-decode.h @@ -1,6 +1,7 @@ /* Header file for GDB command decoding library. - Copyright (c) 2000, 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (c) 2000, 2003, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/contrib/gdb-7/gdb/cli/cli-dump.c b/contrib/gdb-7/gdb/cli/cli-dump.c index 5072b29503..34d805cca5 100644 --- a/contrib/gdb-7/gdb/cli/cli-dump.c +++ b/contrib/gdb-7/gdb/cli/cli-dump.c @@ -1,6 +1,7 @@ /* Dump-to-file commands, for GDB, the GNU debugger. - Copyright (c) 2002, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (c) 2002, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Red Hat. @@ -51,6 +52,7 @@ scan_expression_with_cleanup (char **cmd, const char *def) if ((*cmd) == NULL || (**cmd) == '\0') { char *exp = xstrdup (def); + make_cleanup (xfree, exp); return exp; } @@ -107,6 +109,7 @@ FILE * fopen_with_cleanup (const char *filename, const char *mode) { FILE *file = fopen (filename, mode); + if (file == NULL) perror_with_name (filename); make_cleanup_fclose (file); @@ -222,7 +225,6 @@ dump_memory_to_file (char *cmd, char *mode, char *file_format) void *buf; char *lo_exp; char *hi_exp; - int len; /* Open the file. */ filename = scan_filename_with_cleanup (&cmd, NULL); @@ -389,6 +391,7 @@ static void call_dump_func (struct cmd_list_element *c, char *args, int from_tty) { struct dump_context *d = get_cmd_context (c); + d->func (args, d->mode); } @@ -512,7 +515,6 @@ static void restore_binary_file (char *filename, struct callback_data *data) { FILE *file = fopen_with_cleanup (filename, FOPEN_RB); - int status; gdb_byte *buf; long len; @@ -665,6 +667,7 @@ void _initialize_cli_dump (void) { struct cmd_list_element *c; + add_prefix_cmd ("dump", class_vars, dump_command, _("\ Dump target code/data to a local file."), &dump_cmdlist, "dump ", diff --git a/contrib/gdb-7/gdb/cli/cli-dump.h b/contrib/gdb-7/gdb/cli/cli-dump.h index 09ca58e012..a11e00ca3b 100644 --- a/contrib/gdb-7/gdb/cli/cli-dump.h +++ b/contrib/gdb-7/gdb/cli/cli-dump.h @@ -1,6 +1,7 @@ /* Dump-to-file commands, for GDB, the GNU debugger. - Copyright (c) 2001, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (c) 2001, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -33,6 +34,4 @@ extern FILE *fopen_with_cleanup (const char *filename, const char *mode); extern char *skip_spaces (char *inp); -extern struct value *parse_and_eval_with_error (char *exp, const char *fmt, ...) ATTR_FORMAT (printf, 2, 3); - #endif diff --git a/contrib/gdb-7/gdb/cli/cli-interp.c b/contrib/gdb-7/gdb/cli/cli-interp.c index 91092ed4e8..fd75c7a181 100644 --- a/contrib/gdb-7/gdb/cli/cli-interp.c +++ b/contrib/gdb-7/gdb/cli/cli-interp.c @@ -1,6 +1,7 @@ /* CLI Definitions for GDB, the GNU debugger. - Copyright (c) 2002, 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (c) 2002, 2003, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -117,6 +118,7 @@ do_captured_execute_command (struct ui_out *uiout, void *data) { struct captured_execute_command_args *args = (struct captured_execute_command_args *) data; + execute_command (args->command, args->from_tty); } @@ -125,6 +127,7 @@ safe_execute_command (struct ui_out *uiout, char *command, int from_tty) { struct gdb_exception e; struct captured_execute_command_args args; + args.command = command; args.from_tty = from_tty; e = catch_exception (uiout, do_captured_execute_command, &args, diff --git a/contrib/gdb-7/gdb/cli/cli-logging.c b/contrib/gdb-7/gdb/cli/cli-logging.c index bafc913e3e..497a7a3f6e 100644 --- a/contrib/gdb-7/gdb/cli/cli-logging.c +++ b/contrib/gdb-7/gdb/cli/cli-logging.c @@ -1,6 +1,7 @@ /* Command-line output logging for GDB, the GNU debugger. - Copyright (c) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (c) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -137,6 +138,7 @@ static void set_logging_on (char *args, int from_tty) { char *rest = args; + if (rest && *rest) { xfree (logging_filename); @@ -199,7 +201,6 @@ _initialize_cli_logging (void) { static struct cmd_list_element *set_logging_cmdlist, *show_logging_cmdlist; - add_prefix_cmd ("logging", class_support, set_logging_command, _("Set logging options"), &set_logging_cmdlist, "set logging ", 0, &setlist); diff --git a/contrib/gdb-7/gdb/cli/cli-script.c b/contrib/gdb-7/gdb/cli/cli-script.c index 6e90bf222b..9056773e28 100644 --- a/contrib/gdb-7/gdb/cli/cli-script.c +++ b/contrib/gdb-7/gdb/cli/cli-script.c @@ -2,7 +2,7 @@ Copyright (c) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -39,14 +39,16 @@ /* Prototypes for local functions */ static enum command_control_type -recurse_read_control_structure (char * (*read_next_line_func) (), - struct command_line *current_cmd); +recurse_read_control_structure (char * (*read_next_line_func) (void), + struct command_line *current_cmd, + void (*validator)(char *, void *), + void *closure); static char *insert_args (char *line); static struct cleanup * setup_user_args (char *p); -static char *read_next_line (); +static char *read_next_line (void); /* Level of control structure when reading. */ static int control_level; @@ -117,7 +119,8 @@ get_command_line (enum command_control_type type, char *arg) old_chain = make_cleanup_free_command_lines (&cmd); /* Read in the body of this command. */ - if (recurse_read_control_structure (read_next_line, cmd) == invalid_control) + if (recurse_read_control_structure (read_next_line, cmd, 0, 0) + == invalid_control) { warning (_("Error reading in canned sequence of commands.")); do_cleanups (old_chain); @@ -139,7 +142,6 @@ print_command_lines (struct ui_out *uiout, struct command_line *cmd, list = cmd; while (list) { - if (depth) ui_out_spaces (uiout, 2 * depth); @@ -172,9 +174,16 @@ print_command_lines (struct ui_out *uiout, struct command_line *cmd, } /* A while command. Recursively print its subcommands and continue. */ - if (list->control_type == while_control) + if (list->control_type == while_control + || list->control_type == while_stepping_control) { - ui_out_field_fmt (uiout, NULL, "while %s", list->line); + /* For while-stepping, the line includes the 'while-stepping' token. + See comment in process_next_line for explanation. Here, + take care not print 'while-stepping' twice. */ + if (list->control_type == while_control) + ui_out_field_fmt (uiout, NULL, "while %s", list->line); + else + ui_out_field_string (uiout, NULL, list->line); ui_out_text (uiout, "\n"); print_command_lines (uiout, *list->body_list, depth + 1); if (depth) @@ -253,6 +262,7 @@ static void clear_hook_in_cleanup (void *data) { struct cmd_list_element *c = data; + c->hook_in = 0; /* Allow hook to work again once it is complete */ } @@ -274,6 +284,7 @@ execute_cmd_post_hook (struct cmd_list_element *c) if ((c->hook_post) && (!c->hook_in)) { struct cleanup *cleanups = make_cleanup (clear_hook_in_cleanup, c); + c->hook_in = 1; /* Prevent recursive hooking */ execute_user_command (c->hook_post, (char *) 0); do_cleanups (cleanups); @@ -284,7 +295,8 @@ execute_cmd_post_hook (struct cmd_list_element *c) static void do_restore_user_call_depth (void * call_depth) { - int * depth = call_depth; + int *depth = call_depth; + (*depth)--; if ((*depth) == 0) in_user_command = 0; @@ -423,6 +435,7 @@ execute_control_command (struct command_line *cmd) case while_control: { char *buffer = alloca (strlen (cmd->line) + 7); + sprintf (buffer, "while %s", cmd->line); print_command_trace (buffer); @@ -490,6 +503,7 @@ execute_control_command (struct command_line *cmd) case if_control: { char *buffer = alloca (strlen (cmd->line) + 4); + sprintf (buffer, "if %s", cmd->line); print_command_trace (buffer); @@ -613,6 +627,7 @@ static void arg_cleanup (void *ignore) { struct user_args *oargs = user_args; + if (!user_args) internal_error (__FILE__, __LINE__, _("arg_cleanup called with no user args.\n")); @@ -798,10 +813,10 @@ insert_args (char *line) i = p[4] - '0'; len = user_args->a[i].len; if (len) - { - memcpy (new_line, user_args->a[i].arg, len); - new_line += len; - } + { + memcpy (new_line, user_args->a[i].arg, len); + new_line += len; + } } line = p + 5; } @@ -845,7 +860,7 @@ realloc_body_list (struct command_line *command, int new_length) from stdout. */ static char * -read_next_line () +read_next_line (void) { char *prompt_ptr, control_prompt[256]; int i = 0; @@ -876,76 +891,101 @@ read_next_line () Otherwise, only "end" is recognized. */ static enum misc_command_type -process_next_line (char *p, struct command_line **command, int parse_commands) +process_next_line (char *p, struct command_line **command, int parse_commands, + void (*validator)(char *, void *), void *closure) { - char *p1; + char *p_end; + char *p_start; int not_handled = 0; /* Not sure what to do here. */ if (p == NULL) return end_command; - if (parse_commands) - { - /* Strip leading whitespace. */ - while (*p == ' ' || *p == '\t') - p++; - } - /* Strip trailing whitespace. */ - p1 = p + strlen (p); - while (p1 != p && (p1[-1] == ' ' || p1[-1] == '\t')) - p1--; - - /* Is this the end of a simple, while, or if control structure? */ - if (p1 - p == 3 && !strncmp (p, "end", 3)) + p_end = p + strlen (p); + while (p_end > p && (p_end[-1] == ' ' || p_end[-1] == '\t')) + p_end--; + + p_start = p; + /* Strip leading whitespace. */ + while (p_start < p_end && (*p_start == ' ' || *p_start == '\t')) + p_start++; + + /* 'end' is always recognized, regardless of parse_commands value. + We also permit whitespace before end and after. */ + if (p_end - p_start == 3 && !strncmp (p_start, "end", 3)) return end_command; - + if (parse_commands) { + /* If commands are parsed, we skip initial spaces. Otherwise, + which is the case for Python commands and documentation + (see the 'document' command), spaces are preserved. */ + p = p_start; + /* Blanks and comments don't really do anything, but we need to distinguish them from else, end and other commands which can be executed. */ - if (p1 == p || p[0] == '#') + if (p_end == p || p[0] == '#') return nop_command; /* Is the else clause of an if control structure? */ - if (p1 - p == 4 && !strncmp (p, "else", 4)) + if (p_end - p == 4 && !strncmp (p, "else", 4)) return else_command; /* Check for while, if, break, continue, etc and build a new command line structure for them. */ - if (p1 - p > 5 && !strncmp (p, "while", 5)) + if ((p_end - p >= 14 && !strncmp (p, "while-stepping", 14)) + || (p_end - p >= 8 && !strncmp (p, "stepping", 8)) + || (p_end - p >= 2 && !strncmp (p, "ws", 2))) + { + /* Because validate_actionline and encode_action lookup + command's line as command, we need the line to + include 'while-stepping'. + + For 'ws' alias, the command will have 'ws', not expanded + to 'while-stepping'. This is intentional -- we don't + really want frontend to send a command list with 'ws', + and next break-info returning command line with 'while-stepping'. + This should work, but might cause the breakpoint to be marked as + changed while it's actually not. */ + *command = build_command_line (while_stepping_control, p); + } + else if (p_end - p > 5 && !strncmp (p, "while", 5)) { char *first_arg; + first_arg = p + 5; - while (first_arg < p1 && isspace (*first_arg)) + while (first_arg < p_end && isspace (*first_arg)) first_arg++; *command = build_command_line (while_control, first_arg); } - else if (p1 - p > 2 && !strncmp (p, "if", 2)) + else if (p_end - p > 2 && !strncmp (p, "if", 2)) { char *first_arg; + first_arg = p + 2; - while (first_arg < p1 && isspace (*first_arg)) + while (first_arg < p_end && isspace (*first_arg)) first_arg++; *command = build_command_line (if_control, first_arg); } - else if (p1 - p >= 8 && !strncmp (p, "commands", 8)) + else if (p_end - p >= 8 && !strncmp (p, "commands", 8)) { char *first_arg; + first_arg = p + 8; - while (first_arg < p1 && isspace (*first_arg)) + while (first_arg < p_end && isspace (*first_arg)) first_arg++; *command = build_command_line (commands_control, first_arg); } - else if (p1 - p == 6 && !strncmp (p, "python", 6)) + else if (p_end - p == 6 && !strncmp (p, "python", 6)) { /* Note that we ignore the inline "python command" form here. */ *command = build_command_line (python_control, ""); } - else if (p1 - p == 10 && !strncmp (p, "loop_break", 10)) + else if (p_end - p == 10 && !strncmp (p, "loop_break", 10)) { *command = (struct command_line *) xmalloc (sizeof (struct command_line)); @@ -955,7 +995,7 @@ process_next_line (char *p, struct command_line **command, int parse_commands) (*command)->body_count = 0; (*command)->body_list = NULL; } - else if (p1 - p == 13 && !strncmp (p, "loop_continue", 13)) + else if (p_end - p == 13 && !strncmp (p, "loop_continue", 13)) { *command = (struct command_line *) xmalloc (sizeof (struct command_line)); @@ -975,12 +1015,27 @@ process_next_line (char *p, struct command_line **command, int parse_commands) *command = (struct command_line *) xmalloc (sizeof (struct command_line)); (*command)->next = NULL; - (*command)->line = savestring (p, p1 - p); + (*command)->line = savestring (p, p_end - p); (*command)->control_type = simple_control; (*command)->body_count = 0; (*command)->body_list = NULL; } + if (validator) + { + volatile struct gdb_exception ex; + + TRY_CATCH (ex, RETURN_MASK_ALL) + { + validator ((*command)->line, closure); + } + if (ex.reason < 0) + { + xfree (*command); + throw_exception (ex); + } + } + /* Nothing special. */ return ok_command; } @@ -992,14 +1047,15 @@ process_next_line (char *p, struct command_line **command, int parse_commands) */ static enum command_control_type -recurse_read_control_structure (char * (*read_next_line_func) (), - struct command_line *current_cmd) +recurse_read_control_structure (char * (*read_next_line_func) (void), + struct command_line *current_cmd, + void (*validator)(char *, void *), + void *closure) { int current_body, i; enum misc_command_type val; enum command_control_type ret; struct command_line **body_ptr, *child_tail, *next; - char *p; child_tail = NULL; current_body = 1; @@ -1018,7 +1074,8 @@ recurse_read_control_structure (char * (*read_next_line_func) (), next = NULL; val = process_next_line (read_next_line_func (), &next, - current_cmd->control_type != python_control); + current_cmd->control_type != python_control, + validator, closure); /* Just skip blanks and comments. */ if (val == nop_command) @@ -1027,6 +1084,7 @@ recurse_read_control_structure (char * (*read_next_line_func) (), if (val == end_command) { if (current_cmd->control_type == while_control + || current_cmd->control_type == while_stepping_control || current_cmd->control_type == if_control || current_cmd->control_type == python_control || current_cmd->control_type == commands_control) @@ -1079,12 +1137,14 @@ recurse_read_control_structure (char * (*read_next_line_func) (), /* If the latest line is another control structure, then recurse on it. */ if (next->control_type == while_control + || next->control_type == while_stepping_control || next->control_type == if_control || next->control_type == python_control || next->control_type == commands_control) { control_level++; - ret = recurse_read_control_structure (read_next_line_func, next); + ret = recurse_read_control_structure (read_next_line_func, next, + validator, closure); control_level--; if (ret != simple_control) @@ -1109,7 +1169,8 @@ recurse_read_control_structure (char * (*read_next_line_func) (), #define END_MESSAGE "End with a line saying just \"end\"." struct command_line * -read_command_lines (char *prompt_arg, int from_tty, int parse_commands) +read_command_lines (char *prompt_arg, int from_tty, int parse_commands, + void (*validator)(char *, void *), void *closure) { struct command_line *head; @@ -1127,7 +1188,8 @@ read_command_lines (char *prompt_arg, int from_tty, int parse_commands) } } - head = read_command_lines_1 (read_next_line, parse_commands); + head = read_command_lines_1 (read_next_line, parse_commands, + validator, closure); if (deprecated_readline_end_hook && from_tty && input_from_terminal_p ()) { @@ -1140,7 +1202,8 @@ read_command_lines (char *prompt_arg, int from_tty, int parse_commands) obtained using READ_NEXT_LINE_FUNC. */ struct command_line * -read_command_lines_1 (char * (*read_next_line_func) (), int parse_commands) +read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands, + void (*validator)(char *, void *), void *closure) { struct command_line *head, *tail, *next; struct cleanup *old_chain; @@ -1154,7 +1217,8 @@ read_command_lines_1 (char * (*read_next_line_func) (), int parse_commands) while (1) { dont_repeat (); - val = process_next_line (read_next_line_func (), &next, parse_commands); + val = process_next_line (read_next_line_func (), &next, parse_commands, + validator, closure); /* Ignore blank lines or comments. */ if (val == nop_command) @@ -1175,10 +1239,12 @@ read_command_lines_1 (char * (*read_next_line_func) (), int parse_commands) if (next->control_type == while_control || next->control_type == if_control || next->control_type == python_control - || next->control_type == commands_control) + || next->control_type == commands_control + || next->control_type == while_stepping_control) { control_level++; - ret = recurse_read_control_structure (read_next_line_func, next); + ret = recurse_read_control_structure (read_next_line_func, next, + validator, closure); control_level--; if (ret == invalid_control) @@ -1350,8 +1416,8 @@ define_command (char *comname, int from_tty) CMD_POST_HOOK }; struct command_line *cmds; - struct cmd_list_element *c, *newc, *oldc, *hookc = 0, **list; - char *tem, *tem2, *comfull; + struct cmd_list_element *c, *newc, *hookc = 0, **list; + char *tem, *comfull; char tmpbuf[MAX_TMPBUF]; int hook_type = CMD_NO_HOOK; int hook_name_size = 0; @@ -1373,6 +1439,7 @@ define_command (char *comname, int from_tty) if (c) { int q; + if (c->class == class_user || c->class == class_alias) q = query (_("Redefine command \"%s\"? "), c->name); else @@ -1421,7 +1488,7 @@ define_command (char *comname, int from_tty) *tem = tolower (*tem); sprintf (tmpbuf, "Type commands for definition of \"%s\".", comfull); - cmds = read_command_lines (tmpbuf, from_tty, 1); + cmds = read_command_lines (tmpbuf, from_tty, 1, 0, 0); if (c && c->class == class_user) free_command_lines (&c->user_commands); @@ -1470,7 +1537,7 @@ document_command (char *comname, int from_tty) error (_("Command \"%s\" is built-in."), comfull); sprintf (tmpbuf, "Type documentation for \"%s\".", comfull); - doclines = read_command_lines (tmpbuf, from_tty, 0); + doclines = read_command_lines (tmpbuf, from_tty, 0, 0, 0); if (c->doc) xfree (c->doc); @@ -1499,14 +1566,15 @@ document_command (char *comname, int from_tty) struct source_cleanup_lines_args { int old_line; - char *old_file; + const char *old_file; }; static void source_cleanup_lines (void *args) { struct source_cleanup_lines_args *p = - (struct source_cleanup_lines_args *) args; + (struct source_cleanup_lines_args *) args; + source_line_number = p->old_line; source_file_name = p->old_file; } @@ -1520,17 +1588,17 @@ static void wrapped_read_command_file (struct ui_out *uiout, void *data) { struct wrapped_read_command_file_args *args = data; + read_command_file (args->stream); } /* Used to implement source_command */ void -script_from_file (FILE *stream, char *file) +script_from_file (FILE *stream, const char *file) { struct cleanup *old_cleanups; struct source_cleanup_lines_args old_lines; - int needed_length; if (stream == NULL) internal_error (__FILE__, __LINE__, _("called with NULL file pointer!")); @@ -1549,6 +1617,7 @@ script_from_file (FILE *stream, char *file) { struct gdb_exception e; struct wrapped_read_command_file_args args; + args.stream = stream; e = catch_exception (uiout, wrapped_read_command_file, &args, RETURN_MASK_ERROR); @@ -1583,6 +1652,7 @@ show_user_1 (struct cmd_list_element *c, char *prefix, char *name, if (c->prefixlist != NULL) { char *prefixname = c->prefixname; + for (c = *c->prefixlist; c != NULL; c = c->next) if (c->class == class_user || c->prefixlist != NULL) show_user_1 (c, prefixname, c->name, gdb_stdout); diff --git a/contrib/gdb-7/gdb/cli/cli-script.h b/contrib/gdb-7/gdb/cli/cli-script.h index c65223fe03..6cdcfd299c 100644 --- a/contrib/gdb-7/gdb/cli/cli-script.h +++ b/contrib/gdb-7/gdb/cli/cli-script.h @@ -1,5 +1,6 @@ /* Header file for GDB CLI command implementation library. - Copyright (c) 2000, 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (c) 2000, 2002, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,7 +24,7 @@ struct cmd_list_element; /* Exported to cli/cli-cmds.c */ -extern void script_from_file (FILE *stream, char *file); +extern void script_from_file (FILE *stream, const char *file); extern void document_command (char *, int); diff --git a/contrib/gdb-7/gdb/cli/cli-setshow.c b/contrib/gdb-7/gdb/cli/cli-setshow.c index ab422a425d..37f7918ef6 100644 --- a/contrib/gdb-7/gdb/cli/cli-setshow.c +++ b/contrib/gdb-7/gdb/cli/cli-setshow.c @@ -1,6 +1,6 @@ /* Handle set and show GDB commands. - Copyright (c) 2000, 2001, 2002, 2003, 2007, 2008, 2009 + Copyright (c) 2000, 2001, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -21,6 +21,7 @@ #include "value.h" #include #include "gdb_string.h" +#include "arch-utils.h" #include "ui-out.h" @@ -39,6 +40,7 @@ parse_auto_binary_operation (const char *arg) if (arg != NULL && *arg != '\0') { int length = strlen (arg); + while (isspace (arg[length - 1]) && length > 0) length--; if (strncmp (arg, "on", length) == 0 @@ -152,7 +154,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c) right before a newline. */ if (*p == 0) break; - ch = parse_escape (&p); + ch = parse_escape (get_current_arch (), &p); if (ch == 0) break; /* C loses */ else if (ch > 0) @@ -194,6 +196,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c) { /* Clear trailing whitespace of filename. */ char *ptr = arg + strlen (arg) - 1; + while (ptr >= arg && (*ptr == ' ' || *ptr == '\t')) ptr--; *(ptr + 1) = '\0'; @@ -216,6 +219,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c) case var_integer: { unsigned int val; + if (arg == NULL) error_no_arg (_("integer to set it to.")); val = parse_and_eval_long (arg); @@ -250,6 +254,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c) { char *msg; int msg_len = 0; + for (i = 0; c->enums[i]; i++) msg_len += strlen (c->enums[i]) + 2; @@ -384,6 +389,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c) else { char *value = ui_file_xstrdup (stb->stream, NULL); + make_cleanup (xfree, value); if (c->show_value_func != NULL) c->show_value_func (gdb_stdout, from_tty, c, value); @@ -416,6 +422,7 @@ cmd_show_list (struct cmd_list_element *list, int from_tty, char *prefix) struct cleanup *optionlist_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "optionlist"); char *new_prefix = strstr (list->prefixname, "show ") + 5; + if (ui_out_is_mi_like_p (uiout)) ui_out_field_string (uiout, "prefix", new_prefix); cmd_show_list (*list->prefixlist, from_tty, new_prefix); @@ -426,6 +433,7 @@ cmd_show_list (struct cmd_list_element *list, int from_tty, char *prefix) { struct cleanup *option_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "option"); + ui_out_text (uiout, prefix); ui_out_field_string (uiout, "name", list->name); ui_out_text (uiout, ": "); diff --git a/contrib/gdb-7/gdb/cli/cli-setshow.h b/contrib/gdb-7/gdb/cli/cli-setshow.h index 0fedde77e3..b168ff8ba1 100644 --- a/contrib/gdb-7/gdb/cli/cli-setshow.h +++ b/contrib/gdb-7/gdb/cli/cli-setshow.h @@ -1,5 +1,6 @@ /* Header file for GDB CLI set and show commands implementation. - Copyright (c) 2000, 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (c) 2000, 2001, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/contrib/gdb-7/gdb/coff-pe-read.c b/contrib/gdb-7/gdb/coff-pe-read.c index d00a3b5c57..3e2b89c328 100644 --- a/contrib/gdb-7/gdb/coff-pe-read.c +++ b/contrib/gdb-7/gdb/coff-pe-read.c @@ -2,7 +2,7 @@ convert to internal format, for GDB. Used as a last resort if no debugging symbols recognized. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -108,7 +108,6 @@ add_pe_exported_sym (char *sym_name, char *qualified_name = 0; int dll_name_len = strlen (dll_name); - int count; /* Generate a (hopefully unique) qualified name using the first part of the dll name, e.g. KERNEL32!AddAtomA. This matches the style @@ -283,7 +282,6 @@ read_pe_exported_syms (struct objfile *objfile) unsigned long secptr1 = secptr + 40 * i; unsigned long vsize = pe_get32 (dll, secptr1 + 8); unsigned long vaddr = pe_get32 (dll, secptr1 + 12); - unsigned long flags = pe_get32 (dll, secptr1 + 36); char sec_name[9]; int sectix; diff --git a/contrib/gdb-7/gdb/coff-pe-read.h b/contrib/gdb-7/gdb/coff-pe-read.h index 60d04fb46d..f34d271919 100644 --- a/contrib/gdb-7/gdb/coff-pe-read.h +++ b/contrib/gdb-7/gdb/coff-pe-read.h @@ -1,6 +1,6 @@ /* Interface to coff-pe-read.c (portable-executable-specific symbol reader). - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/coffread.c b/contrib/gdb-7/gdb/coffread.c index 888f8b4be5..52417b22f4 100644 --- a/contrib/gdb-7/gdb/coffread.c +++ b/contrib/gdb-7/gdb/coffread.c @@ -1,7 +1,7 @@ /* Read coff symbol tables and convert to internal format, for GDB. Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by David D. Johnson, Brown University (ddj@cs.brown.edu). This file is part of GDB. @@ -45,6 +45,8 @@ #include "coff-pe-read.h" +#include "psymtab.h" + extern void _initialize_coffread (void); struct coff_symfile_info @@ -258,6 +260,7 @@ static void find_targ_sec (bfd *abfd, asection *sect, void *obj) { struct find_targ_sec_arg *args = (struct find_targ_sec_arg *) obj; + if (sect->target_index == args->targ_index) *args->resultp = sect; } @@ -280,6 +283,7 @@ static int cs_to_section (struct coff_symbol *cs, struct objfile *objfile) { asection *sect = cs_to_bfd_section (cs, objfile); + if (sect == NULL) return SECT_OFF_TEXT (objfile); return sect->index; @@ -402,9 +406,6 @@ coff_end_symtab (struct objfile *objfile) symtab = end_symtab (current_source_end_addr, objfile, SECT_OFF_TEXT (objfile)); - if (symtab != NULL) - free_named_symtabs (symtab->filename); - /* Reinitialize for beginning of new file. */ last_source_file = NULL; } @@ -415,6 +416,7 @@ record_minimal_symbol (struct coff_symbol *cs, CORE_ADDR address, struct objfile *objfile) { struct bfd_section *bfd_section; + /* We don't want TDESC entry points in the minimal symbol table */ if (cs->c_name[0] == '@') return NULL; @@ -501,7 +503,7 @@ static bfd *symfile_bfd; /* Read a symbol file, after initialization by coff_symfile_init. */ static void -coff_symfile_read (struct objfile *objfile, int mainline) +coff_symfile_read (struct objfile *objfile, int symfile_flags) { struct coff_symfile_info *info; struct dbx_symfile_info *dbxinfo; @@ -514,8 +516,6 @@ coff_symfile_read (struct objfile *objfile, int mainline) int stringtab_offset; struct cleanup *back_to, *cleanup_minimal_symbols; int stabstrsize; - int len; - char * target; info = (struct coff_symfile_info *) objfile->deprecated_sym_private; dbxinfo = objfile->deprecated_sym_stab_info; @@ -607,15 +607,6 @@ coff_symfile_read (struct objfile *objfile, int mainline) /* Free the installed minimal symbol data. */ do_cleanups (cleanup_minimal_symbols); - /* If we are reinitializing, or if we have not loaded syms yet, - empty the psymtab. "mainline" is cleared so the *_read_psymtab - functions do not all re-initialize it. */ - if (mainline) - { - init_psymbol_list (objfile, 0); - mainline = 0; - } - bfd_map_over_sections (abfd, coff_locate_sections, (void *) info); if (info->stabsects) @@ -634,7 +625,6 @@ coff_symfile_read (struct objfile *objfile, int mainline) stabstrsize = bfd_section_size (abfd, info->stabstrsect); coffstab_build_psymtabs (objfile, - mainline, info->textaddr, info->textsize, info->stabsects, info->stabstrsect->filepos, stabstrsize); @@ -642,11 +632,27 @@ coff_symfile_read (struct objfile *objfile, int mainline) if (dwarf2_has_info (objfile)) { /* DWARF2 sections. */ - dwarf2_build_psymtabs (objfile, mainline); + dwarf2_build_psymtabs (objfile); } dwarf2_build_frame_info (objfile); + /* Try to add separate debug file if no symbols table found. */ + if (!objfile_has_partial_symbols (objfile)) + { + char *debugfile; + + debugfile = find_separate_debug_file_by_debuglink (objfile); + + if (debugfile) + { + bfd *abfd = symfile_bfd_open (debugfile); + + symbol_file_add_separate (abfd, symfile_flags, objfile); + xfree (debugfile); + } + } + do_cleanups (back_to); } @@ -777,6 +783,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, { /* Record all functions -- external and static -- in minsyms. */ int section = cs_to_section (cs, objfile); + tmpaddr = cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); record_minimal_symbol (cs, tmpaddr, mst_text, section, objfile); @@ -882,6 +889,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, /* This is a common symbol. See if the target environment knows where it has been relocated to. */ CORE_ADDR reladdr; + if (target_lookup_symbol (cs->c_name, &reladdr)) { /* Error in lookup; ignore symbol. */ @@ -906,6 +914,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, else { asection *bfd_section = cs_to_bfd_section (cs, objfile); + sec = cs_to_section (cs, objfile); tmpaddr = cs->c_value; /* Statics in a PE file also get relocated */ @@ -947,6 +956,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, if (SDB_TYPE (cs->c_type)) { struct symbol *sym; + sym = process_coff_symbol (cs, &main_aux, objfile); SYMBOL_VALUE (sym) = tmpaddr; @@ -1434,10 +1444,10 @@ patch_opaque_types (struct symtab *s) Remove syms from the chain when their types are stored, but search the whole chain, as there may be several syms from different files with the same name. */ - if (SYMBOL_CLASS (real_sym) == LOC_TYPEDEF && - SYMBOL_DOMAIN (real_sym) == VAR_DOMAIN && - TYPE_CODE (SYMBOL_TYPE (real_sym)) == TYPE_CODE_PTR && - TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (real_sym))) != 0) + if (SYMBOL_CLASS (real_sym) == LOC_TYPEDEF + && SYMBOL_DOMAIN (real_sym) == VAR_DOMAIN + && TYPE_CODE (SYMBOL_TYPE (real_sym)) == TYPE_CODE_PTR + && TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (real_sym))) != 0) { char *name = SYMBOL_LINKAGE_NAME (real_sym); int hash = hashname (name); @@ -1446,8 +1456,8 @@ patch_opaque_types (struct symtab *s) prev = 0; for (sym = opaque_type_chain[hash]; sym;) { - if (name[0] == SYMBOL_LINKAGE_NAME (sym)[0] && - strcmp (name + 1, SYMBOL_LINKAGE_NAME (sym) + 1) == 0) + if (name[0] == SYMBOL_LINKAGE_NAME (sym)[0] + && strcmp (name + 1, SYMBOL_LINKAGE_NAME (sym) + 1) == 0) { if (prev) { @@ -1495,15 +1505,15 @@ process_coff_symbol (struct coff_symbol *cs, struct objfile *objfile) { struct symbol *sym - = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, - sizeof (struct symbol)); + = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, + sizeof (struct symbol)); char *name; memset (sym, 0, sizeof (struct symbol)); name = cs->c_name; name = EXTERNAL_NAME (name, objfile->obfd); SYMBOL_LANGUAGE (sym) = current_subfile->language; - SYMBOL_SET_NAMES (sym, name, strlen (name), objfile); + SYMBOL_SET_NAMES (sym, name, strlen (name), 1, objfile); /* default assumptions */ SYMBOL_VALUE (sym) = cs->c_value; @@ -1632,10 +1642,10 @@ process_coff_symbol (struct coff_symbol *cs, simple forward reference (TYPE_CODE_UNDEF) is not an empty structured type, though; the forward references work themselves out via the magic of coff_lookup_type. */ - if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR && - TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym))) == 0 && - TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym))) != - TYPE_CODE_UNDEF) + if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR + && TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym))) == 0 + && TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym))) + != TYPE_CODE_UNDEF) { int i = hashname (SYMBOL_LINKAGE_NAME (sym)); @@ -2096,6 +2106,7 @@ coff_read_enum_type (int index, int length, int lastsym, for (; j < syms->nsyms; j++, n++) { struct symbol *xsym = syms->symbol[j]; + SYMBOL_TYPE (xsym) = type; TYPE_FIELD_NAME (type, n) = SYMBOL_LINKAGE_NAME (xsym); SET_FIELD_BITPOS (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym)); @@ -2126,6 +2137,8 @@ static struct sym_fns coff_sym_fns = default_symfile_segments, /* sym_segments: Get segment information from a file. */ NULL, /* sym_read_linetable */ + default_symfile_relocate, /* sym_relocate: Relocate a debug section. */ + &psym_functions, NULL /* next: pointer to next struct sym_fns */ }; diff --git a/contrib/gdb-7/gdb/command.h b/contrib/gdb-7/gdb/command.h index 1a6bec417f..f53dc3e75c 100644 --- a/contrib/gdb-7/gdb/command.h +++ b/contrib/gdb-7/gdb/command.h @@ -1,7 +1,7 @@ /* Header file for command-reading library command.c. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, - 2002, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,8 +32,8 @@ enum command_class /* Classes of commands */ no_class = -1, class_run = 0, class_vars, class_stack, class_files, class_support, class_info, class_breakpoint, class_trace, - class_alias, class_obscure, class_user, class_maintenance, - class_pseudo, class_tui, class_xdb + class_alias, class_bookmark, class_obscure, class_maintenance, + class_pseudo, class_tui, class_user, class_xdb }; /* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum @@ -341,7 +341,10 @@ extern void add_setshow_zuinteger_cmd (char *name, extern void cmd_show_list (struct cmd_list_element *, int, char *); -extern NORETURN void error_no_arg (char *) ATTR_NORETURN; +/* Used everywhere whenever at least one parameter is required and + none is specified. */ + +extern void error_no_arg (char *) ATTRIBUTE_NORETURN; extern void dont_repeat (void); diff --git a/contrib/gdb-7/gdb/common/gdb_signals.h b/contrib/gdb-7/gdb/common/gdb_signals.h index b517b1be18..476d89b953 100644 --- a/contrib/gdb-7/gdb/common/gdb_signals.h +++ b/contrib/gdb-7/gdb/common/gdb_signals.h @@ -1,6 +1,6 @@ /* Target signal translation functions for GDB. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. diff --git a/contrib/gdb-7/gdb/common/i386-xstate.h b/contrib/gdb-7/gdb/common/i386-xstate.h new file mode 100644 index 0000000000..ec40a0de58 --- /dev/null +++ b/contrib/gdb-7/gdb/common/i386-xstate.h @@ -0,0 +1,42 @@ +/* Common code for i386 XSAVE extended state. + + Copyright (C) 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#ifndef I386_XSTATE_H +#define I386_XSTATE_H 1 + +/* The extended state feature bits. */ +#define I386_XSTATE_X87 (1ULL << 0) +#define I386_XSTATE_SSE (1ULL << 1) +#define I386_XSTATE_AVX (1ULL << 2) + +/* Supported mask and size of the extended state. */ +#define I386_XSTATE_X87_MASK I386_XSTATE_X87 +#define I386_XSTATE_SSE_MASK (I386_XSTATE_X87 | I386_XSTATE_SSE) +#define I386_XSTATE_AVX_MASK (I386_XSTATE_SSE_MASK | I386_XSTATE_AVX) + +#define I386_XSTATE_SSE_SIZE 576 +#define I386_XSTATE_AVX_SIZE 832 +#define I386_XSTATE_MAX_SIZE 832 + +/* Get I386 XSAVE extended state size. */ +#define I386_XSTATE_SIZE(XCR0) \ + (((XCR0) & I386_XSTATE_AVX) != 0 \ + ? I386_XSTATE_AVX_SIZE : I386_XSTATE_SSE_SIZE) + +#endif /* I386_XSTATE_H */ diff --git a/contrib/gdb-7/gdb/common/signals.c b/contrib/gdb-7/gdb/common/signals.c index ae8032f3c0..1dec502738 100644 --- a/contrib/gdb-7/gdb/common/signals.c +++ b/contrib/gdb-7/gdb/common/signals.c @@ -1,6 +1,6 @@ /* Target signal translation functions for GDB. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. diff --git a/contrib/gdb-7/gdb/complaints.c b/contrib/gdb-7/gdb/complaints.c index 413600807f..476f3f4331 100644 --- a/contrib/gdb-7/gdb/complaints.c +++ b/contrib/gdb-7/gdb/complaints.c @@ -1,7 +1,7 @@ /* Support for complaint handling during symbol reading in GDB. Copyright (C) 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2000, 2002, 2004, - 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -120,7 +120,7 @@ get_complaints (struct complaints **c) return (*c); } -static struct complain * +static struct complain * ATTRIBUTE_PRINTF (4, 0) find_complaint (struct complaints *complaints, const char *file, int line, const char *fmt) { @@ -164,13 +164,14 @@ static int stop_whining = 0; /* Print a complaint, and link the complaint block into a chain for later handling. */ -static void ATTR_FORMAT (printf, 4, 0) +static void ATTRIBUTE_PRINTF (4, 0) vcomplaint (struct complaints **c, const char *file, int line, const char *fmt, va_list args) { struct complaints *complaints = get_complaints (c); struct complain *complaint = find_complaint (complaints, file, line, fmt); enum complaint_series series; + gdb_assert (complaints != NULL); complaint->counter++; @@ -243,6 +244,7 @@ void complaint (struct complaints **complaints, const char *fmt, ...) { va_list args; + va_start (args, fmt); vcomplaint (complaints, NULL/*file*/, 0/*line*/, fmt, args); va_end (args); diff --git a/contrib/gdb-7/gdb/complaints.h b/contrib/gdb-7/gdb/complaints.h index 60c070830e..4ff8d9bd87 100644 --- a/contrib/gdb-7/gdb/complaints.h +++ b/contrib/gdb-7/gdb/complaints.h @@ -1,7 +1,7 @@ /* Definitions for complaint handling during symbol reading in GDB. - Copyright (C) 1990, 1991, 1992, 1995, 1998, 2000, 2002, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1990, 1991, 1992, 1995, 1998, 2000, 2002, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -31,10 +31,10 @@ extern struct complaints *symfile_complaints; /* Register a complaint. */ extern void complaint (struct complaints **complaints, const char *fmt, - ...) ATTR_FORMAT (printf, 2, 3); + ...) ATTRIBUTE_PRINTF (2, 3); extern void internal_complaint (struct complaints **complaints, const char *file, int line, const char *fmt, - ...) ATTR_FORMAT (printf, 4, 5); + ...) ATTRIBUTE_PRINTF (4, 5); /* Clear out / initialize all complaint counters that have ever been incremented. If LESS_VERBOSE is 1, be less verbose about diff --git a/contrib/gdb-7/gdb/completer.c b/contrib/gdb-7/gdb/completer.c index 02e9511011..3ba481ee52 100644 --- a/contrib/gdb-7/gdb/completer.c +++ b/contrib/gdb-7/gdb/completer.c @@ -1,5 +1,6 @@ /* Line completion stuff for GDB, the GNU debugger. - Copyright (C) 2000, 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -78,10 +79,6 @@ static char *gdb_completer_file_name_break_characters = " \t\n*|\"';?><@"; static char *gdb_completer_file_name_break_characters = " \t\n*|\"';:?><"; #endif -/* These are used when completing on locations, which can mix file - names and symbol names separated by a colon. */ -static char *gdb_completer_loc_break_characters = " \t\n*|\"';:?><,"; - /* Characters that can be used to quote completion strings. Note that we can't include '"' because the gdb C parser treats such quoted sequences as strings. */ @@ -129,6 +126,7 @@ filename_completer (struct cmd_list_element *ignore, char *text, char *word) while (1) { char *p, *q; + p = rl_filename_completion_function (text, subsequent_name); if (return_val_used >= return_val_alloced) { @@ -392,6 +390,7 @@ add_struct_fields (struct type *type, int *nextp, char **output, for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i) { char *name = TYPE_FN_FIELDLIST_NAME (type, i); + if (name && ! strncmp (name, fieldname, namelen)) { if (!computed_type_name) @@ -400,7 +399,7 @@ add_struct_fields (struct type *type, int *nextp, char **output, computed_type_name = 1; } /* Omit constructors from the completion list. */ - if (type_name && strcmp (type_name, name)) + if (!type_name || strcmp (type_name, name)) { output[*nextp] = xstrdup (name); ++*nextp; @@ -676,7 +675,7 @@ complete_line_internal (const char *text, char *line_buffer, int point, p--) ; } - if (reason != handle_brkchars) + if (reason != handle_brkchars && c->completer != NULL) list = (*c->completer) (c, p, word); } } @@ -747,7 +746,7 @@ complete_line_internal (const char *text, char *line_buffer, int point, p--) ; } - if (reason != handle_brkchars) + if (reason != handle_brkchars && c->completer != NULL) list = (*c->completer) (c, p, word); } } @@ -786,7 +785,8 @@ command_completer (struct cmd_list_element *ignore, char *text, char *word) char * gdb_completion_word_break_characters (void) { - char ** list; + char **list; + list = complete_line_internal (rl_line_buffer, rl_line_buffer, rl_point, handle_brkchars); gdb_assert (list == NULL); diff --git a/contrib/gdb-7/gdb/completer.h b/contrib/gdb-7/gdb/completer.h index d0a5cee03a..817530497d 100644 --- a/contrib/gdb-7/gdb/completer.h +++ b/contrib/gdb-7/gdb/completer.h @@ -1,5 +1,5 @@ /* Header for GDB line completion. - Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/contrib/gdb-7/gdb/config.in b/contrib/gdb-7/gdb/config.in index 4716524e08..1fc457daf4 100644 --- a/contrib/gdb-7/gdb/config.in +++ b/contrib/gdb-7/gdb/config.in @@ -1,5 +1,9 @@ /* config.in. Generated from configure.ac by autoheader. */ +/* Define if the compiler is building for multiple architectures of Apple + platforms at once. */ +#undef AA_APPLE_UNIVERSAL_BUILD + /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD @@ -71,6 +75,12 @@ /* Define to the default OS ABI for this configuration. */ #undef GDB_OSABI_DEFAULT +/* Define to 1 when the gnulib module memchr should be tested. */ +#undef GNULIB_TEST_MEMCHR + +/* Define to 1 when the gnulib module memmem should be tested. */ +#undef GNULIB_TEST_MEMMEM + /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA @@ -165,6 +175,9 @@ /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE +/* Define to 1 if you have the `getrlimit' function. */ +#undef HAVE_GETRLIMIT + /* Define to 1 if you have the `getrusage' function. */ #undef HAVE_GETRUSAGE @@ -186,9 +199,6 @@ /* Define to 1 if you have the `iconvlist' function. */ #undef HAVE_ICONVLIST -/* Define if your compiler supports the #include_next directive. */ -#undef HAVE_INCLUDE_NEXT - /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H @@ -219,6 +229,9 @@ /* Define if Python 2.6 is being used. */ #undef HAVE_LIBPYTHON2_6 +/* Define if Python 2.7 is being used. */ +#undef HAVE_LIBPYTHON2_7 + /* Define if libunwind library is being used. */ #undef HAVE_LIBUNWIND @@ -249,6 +262,10 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_REG_H +/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including + config.h and . */ +#undef HAVE_MAP_ANONYMOUS + /* Define to 1 if you have the `memchr' function. */ #undef HAVE_MEMCHR @@ -264,6 +281,9 @@ /* Define to 1 if you have the `monstartup' function. */ #undef HAVE_MONSTARTUP +/* Define to 1 if you have the `mprotect' function. */ +#undef HAVE_MPROTECT + /* Define to 1 if you have the header file. */ #undef HAVE_NCURSES_H @@ -291,6 +311,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_POLL_H +/* Define to 1 if you have the `posix_madvise' function. */ +#undef HAVE_POSIX_MADVISE + /* Define to 1 if you have the `pread64' function. */ #undef HAVE_PREAD64 @@ -351,6 +374,90 @@ /* Define if Python interpreter is being linked in. */ #undef HAVE_PYTHON +/* Define to 1 if btowc is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_BTOWC + +/* Define to 1 if mbrlen is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MBRLEN + +/* Define to 1 if mbrtowc is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MBRTOWC + +/* Define to 1 if mbsinit is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MBSINIT + +/* Define to 1 if mbsnrtowcs is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MBSNRTOWCS + +/* Define to 1 if mbsrtowcs is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MBSRTOWCS + +/* Define to 1 if memmem is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MEMMEM + +/* Define to 1 if mempcpy is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MEMPCPY + +/* Define to 1 if memrchr is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MEMRCHR + +/* Define to 1 if rawmemchr is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_RAWMEMCHR + +/* Define to 1 if stpcpy is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STPCPY + +/* Define to 1 if stpncpy is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STPNCPY + +/* Define to 1 if strcasestr is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRCASESTR + +/* Define to 1 if strchrnul is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRCHRNUL + +/* Define to 1 if strdup is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRDUP + +/* Define to 1 if strncat is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRNCAT + +/* Define to 1 if strndup is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRNDUP + +/* Define to 1 if strnlen is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRNLEN + +/* Define to 1 if strpbrk is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRPBRK + +/* Define to 1 if strsep is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRSEP + +/* Define to 1 if strsignal is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRSIGNAL + +/* Define to 1 if strtok_r is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRTOK_R + +/* Define to 1 if strverscmp is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_STRVERSCMP + +/* Define to 1 if wcrtomb is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_WCRTOMB + +/* Define to 1 if wcsnrtombs is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_WCSNRTOMBS + +/* Define to 1 if wcsrtombs is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_WCSRTOMBS + +/* Define to 1 if wctob is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_WCTOB + +/* Define to 1 if wcwidth is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_WCWIDTH + /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH @@ -366,6 +473,9 @@ /* Define to 1 if you have the `setpgrp' function. */ #undef HAVE_SETPGRP +/* Define to 1 if you have the `setrlimit' function. */ +#undef HAVE_SETRLIMIT + /* Define to 1 if you have the `setsid' function. */ #undef HAVE_SETSID @@ -481,6 +591,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MMAN_H + /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H @@ -569,6 +682,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK @@ -590,6 +709,9 @@ /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST +/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */ +#undef MAP_ANONYMOUS + /* Define if you want to use new multi-fd /proc interface (replaces HAVE_MULTIPLE_PROC_FDS as well as other macros). */ #undef NEW_PROC_API @@ -647,6 +769,9 @@ 'ptrdiff_t'. */ #undef PTRDIFF_T_SUFFIX +/* Define if the python directory should be relocated when GDB is moved. */ +#undef PYTHON_PATH_RELOCATABLE + /* Relocated directory for source files. */ #undef RELOC_SRCDIR @@ -719,6 +844,10 @@ 'wint_t'. */ #undef WINT_T_SUFFIX +/* Define if --with-python provides a path, either directly or via + python-config.py --exec-prefix. */ +#undef WITH_PYTHON_PATH + /* Define if the simulator is being linked in. */ #undef WITH_SIM @@ -734,10 +863,16 @@ # endif #endif +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + /* Define to 1 so gets a definition of anon_hdl. Works around a problem on IRIX 5. */ #undef _KMEMUSER +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + /* Define to 1 if on MINIX. */ #undef _MINIX @@ -755,6 +890,9 @@ /* Define if has link_map32 (solaris sparc-64 target) */ #undef _SYSCALL32 +/* Define to 500 only on HP-UX. */ +#undef _XOPEN_SOURCE + /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE @@ -786,24 +924,48 @@ #undef inline #endif -/* Define to rpl_memcmp if the replacement function should be used. */ -#undef memcmp +/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for MacOS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif /* Define to `int' if does not define. */ #undef pid_t +/* readline-6.0 started to use different name. */ +#undef readline_echoing_p + /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict -/* Work around a bug in Sun C++: it does not support _Restrict, even - though the corresponding Sun C compiler does, which causes - "#define restrict _Restrict" in the previous line. Perhaps some future - version of Sun C++ will work with _Restrict; if so, it'll probably - define __RESTRICT, just as Sun C does. */ +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict +# define __restrict__ +#endif + +/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_UNUSED #endif +/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name + is a misnomer outside of parameter lists. */ +#define _UNUSED_PARAMETER_ _GL_UNUSED + /* Define as `fork' if `vfork' does not work. */ #undef vfork diff --git a/contrib/gdb-7/gdb/configure.ac b/contrib/gdb-7/gdb/configure.ac index 0e42182fa2..b69c3b6dfa 100644 --- a/contrib/gdb-7/gdb/configure.ac +++ b/contrib/gdb-7/gdb/configure.ac @@ -1,6 +1,6 @@ dnl Autoconf configure script for GDB, the GNU debugger. dnl Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -dnl 2005, 2006, 2007, 2008, 2009 +dnl 2005, 2006, 2007, 2008, 2009, 2010 dnl Free Software Foundation, Inc. dnl dnl This file is part of GDB. @@ -28,6 +28,7 @@ AM_MAINTAINER_MODE AC_PROG_CC AC_USE_SYSTEM_EXTENSIONS gl_EARLY +ACX_LARGEFILE AM_PROG_CC_STDC AC_CONFIG_AUX_DIR(..) @@ -160,6 +161,9 @@ do . ${srcdir}/configure.tgt + AS_IF([test -z "${gdb_target_obs}"], + [AC_MSG_ERROR([configuration ${targ} is unsupported.])]) + # Target-specific object files for i in ${gdb_target_obs}; do case " $TARGET_OBS " in @@ -422,7 +426,7 @@ AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socketpair, socket) # Link in zlib if we can. This allows us to read compressed debug sections. -AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)]) +AM_ZLIB # On HP/UX we may need libxpdl for dlgetmodinfo (used by solib-pa64.c). AC_SEARCH_LIBS(dlgetmodinfo, [dl xpdl]) @@ -446,11 +450,11 @@ AM_ICONV # broken on alpha-osf. case $host_os in - alpha*-*-osf* ) - if "$enable_tui" = "yes"; then + osf* ) + if test x"$enable_tui" = xyes; then AC_MSG_ERROR([Building GDB with TUI mode is not supported on this host]) fi - if "$enable_tui" = "auto"; then + if test x"$enable_tui" = xauto; then enable_tui=no fi ;; @@ -534,6 +538,21 @@ if test "$with_system_readline" = yes; then READLINE=-lreadline READLINE_DEPS= READLINE_CFLAGS= + + # readline-6.0 started to use the name `_rl_echoing_p'. + # `$(READLINE_DIR)/' of bundled readline would not resolve in configure. + + AC_MSG_CHECKING([for readline_echoing_p]) + save_LIBS=$LIBS + LIBS="$LIBS $READLINE" + AC_LINK_IFELSE(AC_LANG_PROGRAM(,[[extern int readline_echoing_p; + return readline_echoing_p;]]), + [READLINE_ECHOING_P=yes], + [READLINE_ECHOING_P=no + AC_DEFINE([readline_echoing_p], [_rl_echoing_p], + [readline-6.0 started to use different name.])]) + LIBS="$save_LIBS" + AC_MSG_RESULT([$READLINE_ECHOING_P]) else READLINE='$(READLINE_DIR)/libreadline.a' READLINE_DEPS='$(READLINE)' @@ -570,26 +589,67 @@ else fi dnl Utility to simplify finding libpython. +dnl $1 = pythonX.Y +dnl $2 = the shell variable to assign the result to +dnl If libpython is found we store $version here. +dnl $3 = additional flags to add to CPPFLAGS +dnl $4 = additional flags to add to LIBS + AC_DEFUN([AC_TRY_LIBPYTHON], [ version=$1 define([have_libpython_var],$2) - define([VERSION],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - [HAVE_LIB]VERSION=no + new_CPPFLAGS=$3 + new_LIBS=$4 AC_MSG_CHECKING([for ${version}]) + save_CPPFLAGS=$CPPFLAGS save_LIBS=$LIBS - LIBS="$LIBS -l${version}" + CPPFLAGS="$CPPFLAGS $new_CPPFLAGS" + LIBS="$LIBS $new_LIBS" + found_usable_python=no AC_LINK_IFELSE(AC_LANG_PROGRAM([[#include "${version}/Python.h"]], [[Py_Initialize ();]]), - [[HAVE_LIB]VERSION=yes - have_libpython_var=yes], - [LIBS=$save_LIBS]) - AC_MSG_RESULT([$[HAVE_LIB]VERSION]) + [have_libpython_var=${version} + found_usable_python=yes], + [CPPFLAGS=$save_CPPFLAGS + LIBS=$save_LIBS]) + AC_MSG_RESULT([${found_usable_python}]) ]) +dnl There are several different values for --with-python: +dnl +dnl no - Don't include python support. +dnl yes - Include python support, error if it's missing. +dnl If we find python in $PATH, use it to fetch configure options, +dnl otherwise assume the compiler can find it with no help from us. +dnl Python 2.7, 2.6, 2.5, and then 2.4 are tried in turn. +dnl auto - Same as "yes", but if python is missing from the system, +dnl fall back to "no". +dnl /path/to/python/exec-prefix - +dnl Use the python located in this directory. +dnl If /path/to/python/exec-prefix/bin/python exists, use it to find +dnl the compilation parameters. Otherwise use +dnl -I/path/to/python/exec-prefix/include, +dnl -L/path/to/python/exec-prefix/lib. +dnl Python 2.7, 2.6, 2.5, and then 2.4 are tried in turn. +dnl NOTE: This case is historical. It is what was done for 7.0/7.1 +dnl but is deprecated. +dnl /path/to/python/executable - +dnl Run python-config.py with this version of python to fetch the +dnl compilation parameters. +dnl NOTE: This needn't be the real python executable. +dnl In a cross-compilation scenario (build != host), this could be +dnl a shell script that provides what python-config.py provides for +dnl --ldflags, --includes, --exec-prefix. +dnl python-executable - +dnl Find python-executable in $PATH, and then handle the same as +dnl /path/to/python/executable. +dnl +dnl If a python program is specified, it is used to run python-config.py and +dnl is passed --ldflags, --includes, --exec-prefix. + AC_ARG_WITH(python, - AS_HELP_STRING([--with-python], [include python support (auto/yes/no/)]), + AS_HELP_STRING([--with-python@<:@=PYTHON@:>@], [include python support (auto/yes/no/)]), [], [with_python=auto]) AC_MSG_CHECKING([whether to use python]) AC_MSG_RESULT([$with_python]) @@ -599,44 +659,154 @@ if test "${with_python}" = no; then have_libpython=no else case "${with_python}" in - yes | auto) - # Leave as empty, use defaults. - python_includes= - python_libs= - ;; /*) - python_includes="-I${with_python}/include" - python_libs="-L${with_python}/lib" + if test -d ${with_python}; then + # Assume the python binary is ${with_python}/bin/python. + python_prog="${with_python}/bin/python" + python_prefix= + if test ! -x "${python_prog}"; then + # Fall back to gdb 7.0/7.1 behaviour. + python_prog=missing + python_prefix=${with_python} + fi + elif test -x "${with_python}"; then + # While we can't run python compiled for $host (unless host == build), + # the user could write a script that provides the needed information, + # so we support that. + python_prog=${with_python} + python_prefix= + else + AC_ERROR(invalid value for --with-python) + fi ;; - *) + */*) + # Disallow --with-python=foo/bar. AC_ERROR(invalid value for --with-python) ;; + *) + # The user has either specified auto, yes, or the name of the python + # program assumed to be in $PATH. + python_prefix= + case "${with_python}" in + yes | auto) + if test ${build} = ${host}; then + AC_PATH_PROG(python_prog_path, python, missing) + if test "${python_prog_path}" = missing; then + python_prog=missing + else + python_prog=${python_prog_path} + fi + else + # Not much we can do except assume the cross-compiler will find the + # right files. + python_prog=missing + fi + ;; + *) + # While we can't run python compiled for $host (unless host == build), + # the user could write a script that provides the needed information, + # so we support that. + python_prog="${with_python}" + AC_PATH_PROG(python_prog_path, ${python_prog}, missing) + if test "${python_prog_path}" = missing; then + AC_ERROR(unable to find python program ${python_prog}) + fi + ;; + esac esac - save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS ${python_includes}" - save_LIBS=$LIBS - LIBS="$LIBS ${python_libs}" - have_libpython=no - if test "${have_libpython}" = no; then - AC_TRY_LIBPYTHON(python2.6, have_libpython) - if test "${HAVE_LIBPYTHON2_6}" = yes; then - AC_DEFINE(HAVE_LIBPYTHON2_6, 1, [Define if Python 2.6 is being used.]) + if test "${python_prog}" != missing; then + # We have a python program to use, but it may be too old. + # Don't flag an error for --with-python=auto (the default). + have_python_config=yes + python_includes=`${python_prog} ${srcdir}/python/python-config.py --includes` + if test $? != 0; then + have_python_config=failed + if test "${with_python}" != auto; then + AC_ERROR(failure running python-config --includes) + fi fi - fi - if test ${have_libpython} = no; then - AC_TRY_LIBPYTHON(python2.5, have_libpython) - if test "${HAVE_LIBPYTHON2_5}" = yes; then - AC_DEFINE(HAVE_LIBPYTHON2_5, 1, [Define if Python 2.5 is being used.]) + python_libs=`${python_prog} ${srcdir}/python/python-config.py --ldflags` + if test $? != 0; then + have_python_config=failed + if test "${with_python}" != auto; then + AC_ERROR(failure running python-config --ldflags) + fi + fi + python_prefix=`${python_prog} ${srcdir}/python/python-config.py --exec-prefix` + if test $? != 0; then + have_python_config=failed + if test "${with_python}" != auto; then + AC_ERROR(failure running python-config --exec-prefix) + fi + fi + else + # Fall back to gdb 7.0/7.1 behaviour. + if test -z ${python_prefix}; then + python_includes= + python_libs= + else + python_includes="-I${python_prefix}/include" + python_libs="-L${python_prefix}/lib" fi + have_python_config=no fi - if test ${have_libpython} = no; then - AC_TRY_LIBPYTHON(python2.4, have_libpython) - if test "${HAVE_LIBPYTHON2_4}" = yes; then - AC_DEFINE(HAVE_LIBPYTHON2_4, 1, [Define if Python 2.4 is being used.]) + + # Having "/pythonX.Y" in the include path is awkward. + # All those python headers get bubbled up to the top inviting lots + # of random collisions. GDB originally didn't use python-config to + # find the compilation parameters and includes "pythonX.Y/" in the + # path of the, umm, include file. So strip away this part of the + # output of python-config --includes. + python_includes=`echo "${python_includes} " \ + | sed -e 's,/python[[0-9]]*[[.]][[0-9]]* , ,g'` + + # If we have python-config, only try the configuration it provides. + # Otherwise fallback on the old way of trying different versions of + # python in turn. + + have_libpython=no + if test "${have_python_config}" = yes; then + python_version=`echo " ${python_libs} " \ + | sed -e 's,^.* -l\(python[[0-9]]*[[.]][[0-9]]*\) .*$,\1,'` + case "${python_version}" in + python*) + AC_TRY_LIBPYTHON(${python_version}, have_libpython, + ${python_includes}, ${python_libs}) + ;; + *) + AC_MSG_ERROR([unable to determine python version from ${python_libs}]) + ;; + esac + elif test "${have_python_config}" != failed; then + if test "${have_libpython}" = no; then + AC_TRY_LIBPYTHON(python2.7, have_libpython, + ${python_includes}, "${python_libs} -lpython2.7") + fi + if test "${have_libpython}" = no; then + AC_TRY_LIBPYTHON(python2.6, have_libpython, + ${python_includes}, "${python_libs} -lpython2.6") + fi + if test ${have_libpython} = no; then + AC_TRY_LIBPYTHON(python2.5, have_libpython, + ${python_includes}, "${python_libs} -lpython2.5") + fi + if test ${have_libpython} = no; then + AC_TRY_LIBPYTHON(python2.4, have_libpython, + ${python_includes}, "${python_libs} -lpython2.4") fi fi - if test ${have_libpython} = no; then + if test "${have_libpython}" = python2.7; then + AC_DEFINE(HAVE_LIBPYTHON2_7, 1, [Define if Python 2.7 is being used.]) + elif test "${have_libpython}" = python2.6; then + AC_DEFINE(HAVE_LIBPYTHON2_6, 1, [Define if Python 2.6 is being used.]) + elif test "${have_libpython}" = python2.5; then + AC_DEFINE(HAVE_LIBPYTHON2_5, 1, [Define if Python 2.5 is being used.]) + elif test "${have_libpython}" = python2.4; then + AC_DEFINE(HAVE_LIBPYTHON2_4, 1, [Define if Python 2.4 is being used.]) + fi + + if test "${have_libpython}" = no; then case "${with_python}" in yes) AC_MSG_ERROR([python is missing or unusable]) @@ -648,16 +818,21 @@ else AC_MSG_ERROR([no usable python found at ${with_python}]) ;; esac - CPPFLAGS=$save_CPPFLAGS - LIBS=$save_LIBS + else + if test -n "${python_prefix}"; then + AC_DEFINE_UNQUOTED(WITH_PYTHON_PATH, "${python_prefix}", + [Define if --with-python provides a path, either directly or via python-config.py --exec-prefix.]) + GDB_AC_DEFINE_RELOCATABLE(PYTHON_PATH, python, ${python_prefix}) + fi fi fi -if test "${have_libpython}" = yes; then +if test "${have_libpython}" != no; then AC_DEFINE(HAVE_PYTHON, 1, [Define if Python interpreter is being linked in.]) CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)" CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)" CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_PYTHON_SRCS)" + CONFIG_INSTALL="$CONFIG_INSTALL install-python" ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)" # Flags needed to compile Python code (taken from python-config --cflags). @@ -682,9 +857,10 @@ if test "${have_libpython}" = yes; then fi else # Even if Python support is not compiled in, we need to have these files - # included in order to recognize the GDB command "python". - CONFIG_OBS="$CONFIG_OBS python.o py-value.o py-prettyprint.o" - CONFIG_SRCS="$CONFIG_SRCS python/python.c python/py-value.c python/py-prettyprint.c" + # included. + CONFIG_OBS="$CONFIG_OBS python.o py-value.o py-prettyprint.o py-auto-load.o" + CONFIG_SRCS="$CONFIG_SRCS python/python.c python/py-value.c \ + python/py-prettyprint.c python/py-auto-load.c" fi AC_SUBST(PYTHON_CFLAGS) @@ -785,7 +961,8 @@ AC_FUNC_VFORK AC_CHECK_FUNCS([canonicalize_file_name realpath getrusage getuid \ getgid pipe poll pread64 sbrk setpgid setpgrp setsid \ sigaction sigprocmask sigsetmask socketpair syscall \ - ttrace wborder setlocale iconvlist libiconvlist btowc]) + ttrace wborder setlocale iconvlist libiconvlist btowc \ + setrlimit getrlimit posix_madvise]) AM_LANGINFO_CODESET # Check the return and argument types of ptrace. No canned test for @@ -1283,6 +1460,47 @@ aix*) ;; esac +AC_MSG_CHECKING(for the dynamic export flag) +dynamic_list=false +if test "${gdb_native}" = yes; then + # The dynamically loaded libthread_db needs access to symbols in the gdb + # executable. Older GNU ld supports --export-dynamic but --dynamic-list + # may not be supported there. + old_LDFLAGS="$LDFLAGS" + # Older GNU ld supports --export-dynamic but --dynamic-list it does not. + RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list" + LDFLAGS="$LDFLAGS $RDYNAMIC" + if test "${have_libpython}" = no; then + AC_TRY_LINK([], [], [dynamic_list=true]) + else + # Workaround http://bugs.python.org/issue4434 where static + # libpythonX.Y.a would get its symbols required for + # pythonX.Y/lib-dynload/*.so modules hidden by -Wl,--dynamic-list. + # Problem does not happen for the recommended libpythonX.Y.so linkage. + old_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PYTHON_CFLAGS" + AC_RUN_IFELSE( + AC_LANG_PROGRAM( + [#include "]${have_libpython}[/Python.h"], + [int err; + Py_Initialize (); + err = PyRun_SimpleString ("import itertools\n"); + Py_Finalize (); + return err == 0 ? 0 : 1;]), + [dynamic_list=true], [], [true]) + CFLAGS="$old_CFLAGS" + fi + LDFLAGS="$old_LDFLAGS" +fi +if $dynamic_list; then + found="-Wl,--dynamic-list" + RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list' +else + found="-rdynamic" + RDYNAMIC="-rdynamic" +fi +AC_SUBST(RDYNAMIC) +AC_MSG_RESULT($found) dnl For certain native configurations, we need to check whether thread dnl support can be built in or not. @@ -1321,19 +1539,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then CONFIG_OBS="${CONFIG_OBS} sol-thread.o" CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c" AC_CHECK_LIB(dl, dlopen) - if test "$GCC" = "yes" ; then - # The GNU linker requires the -export-dynamic option to make - # all symbols visible in the dynamic symbol table. - hold_ldflags=$LDFLAGS - AC_MSG_CHECKING(for the ld -export-dynamic flag) - LDFLAGS="${LDFLAGS} -Wl,-export-dynamic" - AC_TRY_LINK(, [int i;], found=yes, found=no) - LDFLAGS=$hold_ldflags - AC_MSG_RESULT($found) - if test $found = yes; then - CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic" - fi - fi + CONFIG_LDFLAGS="${CONFIG_LDFLAGS} $RDYNAMIC" # Sun randomly tweaked the prototypes in # at one point. AC_MSG_CHECKING(if is old) @@ -1522,7 +1728,8 @@ fi # gdb/doc/gdbint.texinfo. build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \ -Wformat-nonliteral -Wno-pointer-sign \ --Wno-unused -Wno-switch -Wno-char-subscripts" +-Wno-unused -Wunused-value -Wunused-function \ +-Wno-switch -Wno-char-subscripts" # Enable -Wno-format by default when using gcc on mingw since many # GCC versions complain about %I64. diff --git a/contrib/gdb-7/gdb/configure.host b/contrib/gdb-7/gdb/configure.host index 1d6218f442..794eeee573 100644 --- a/contrib/gdb-7/gdb/configure.host +++ b/contrib/gdb-7/gdb/configure.host @@ -100,7 +100,8 @@ i[3456]86-*-nto*) gdb_host=nto ;; i[34567]86-*-openbsd[0-2].* | i[34567]86-*-openbsd3.[0-3]) gdb_host=obsdaout ;; i[34567]86-*-openbsd*) gdb_host=obsd ;; -i[34567]86-*-solaris2.1[0-9]*) gdb_host=sol2-64 ;; +i[34567]86-*-solaris2.1[0-9]* | x86_64-*-solaris2.1[0-9]*) + gdb_host=sol2-64 ;; i[34567]86-*-solaris*) gdb_host=i386sol2 ;; i[34567]86-*-cygwin*) gdb_host=cygwin ;; diff --git a/contrib/gdb-7/gdb/configure.tgt b/contrib/gdb-7/gdb/configure.tgt index 24331c30f7..97a532f9fe 100644 --- a/contrib/gdb-7/gdb/configure.tgt +++ b/contrib/gdb-7/gdb/configure.tgt @@ -15,7 +15,6 @@ case $targ in d10v-*-* | \ hppa*-*-hiux* | \ i[34567]86-ncr-* | \ - i[34567]86-*-lynxos* | \ m68*-cisco*-* | \ m68*-tandem-* | \ m68*-*-os68k* | \ @@ -91,6 +90,10 @@ arm*-*-openbsd*) gdb_target_obs="arm-tdep.o armbsd-tdep.o armobsd-tdep.o obsd-tdep.o \ corelow.o solib.o solib-svr4.o" ;; +arm*-*-symbianelf*) + # Target: SymbianOS/arm + gdb_target_obs="arm-tdep.o solib-target.o arm-symbian-tdep.o" + ;; arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*) # Target: ARM embedded system gdb_target_obs="arm-tdep.o" @@ -187,7 +190,7 @@ i[34567]86-*-nto*) i386-nto-tdep.o nto-tdep.o" build_gdbserver=yes ;; -i[34567]86-*-solaris2.1[0-9]*) +i[34567]86-*-solaris2.1[0-9]* | x86_64-*-solaris2.1[0-9]*) # Target: Solaris x86_64 gdb_target_obs="i386-tdep.o i387-tdep.o amd64-tdep.o amd64-sol2-tdep.o \ i386-sol2-tdep.o sol2-tdep.o \ @@ -313,6 +316,19 @@ mep-*-*) # No sim needed. Target uses SID. ;; +microblaze*-linux-*) + # Target: Xilinx MicroBlaze running Linux + gdb_target_obs="microblaze-tdep.o microblaze-linux-tdep.o microblaze-rom.o \ + monitor.o dsrec.o solib.o solib-svr4.o corelow.o \ + symfile-mem.o" + gdb_sim=../sim/microblaze/libsim.a + ;; +microblaze*-xilinx-*) + # Target: Xilinx MicroBlaze running standalone + gdb_target_obs="microblaze-tdep.o microblaze-rom.o monitor.o dsrec.o" + gdb_sim=../sim/microblaze/libsim.a + ;; + mips*-sgi-irix5*) # Target: MIPS SGI running Irix 5 gdb_target_obs="mips-tdep.o mips-irix-tdep.o solib.o solib-irix.o" @@ -376,7 +392,7 @@ powerpc-*-linux* | powerpc64-*-linux*) # Target: PowerPC running Linux gdb_target_obs="rs6000-tdep.o ppc-linux-tdep.o ppc-sysv-tdep.o \ solib.o solib-svr4.o solib-spu.o spu-multiarch.o \ - corelow.o symfile-mem.o" + corelow.o symfile-mem.o linux-tdep.o" gdb_sim=../sim/ppc/libsim.a build_gdbserver=yes ;; @@ -391,10 +407,16 @@ powerpc*-*-*) s390*-*-*) # Target: S390 running Linux - gdb_target_obs="s390-tdep.o solib.o solib-svr4.o" + gdb_target_obs="s390-tdep.o solib.o solib-svr4.o linux-tdep.o" build_gdbserver=yes ;; +rx-*-elf) + # Target: Renesas RX + gdb_target_obs="rx-tdep.o" + gdb_sim=../sim/rx/libsim.a + ;; + score-*-*) # Target: S+core embedded system gdb_target_obs="score-tdep.o corelow.o" @@ -407,7 +429,8 @@ score-*-*) sh*-*-linux*) # Target: GNU/Linux Super-H gdb_target_obs="sh-tdep.o sh64-tdep.o sh-linux-tdep.o monitor.o \ - dsrec.o solib.o solib-svr4.o symfile-mem.o glibc-tdep.o" + dsrec.o solib.o solib-svr4.o symfile-mem.o \ + glibc-tdep.o corelow.o" gdb_sim=../sim/sh/libsim.a build_gdbserver=yes ;; @@ -566,6 +589,7 @@ x86_64-*-mingw*) gdb_target_obs="amd64-tdep.o amd64-windows-tdep.o \ i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \ solib-target.o windows-tdep.o" + build_gdbserver=yes ;; x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu) # Target: NetBSD/amd64 @@ -606,4 +630,6 @@ m68*-*-openbsd* | m88*-*-openbsd* | vax-*-openbsd*) ;; *-*-mingw* | *-*-cygwin*) gdb_osabi=GDB_OSABI_CYGWIN ;; *-*-dicos*) gdb_osabi=GDB_OSABI_DICOS ;; +*-*-symbianelf*) + gdb_osabi=GDB_OSABI_SYMBIAN ;; esac diff --git a/contrib/gdb-7/gdb/corefile.c b/contrib/gdb-7/gdb/corefile.c index e70688ee31..7c1db864f7 100644 --- a/contrib/gdb-7/gdb/corefile.c +++ b/contrib/gdb-7/gdb/corefile.c @@ -1,7 +1,7 @@ /* Core dump and executable file functions above target vector, for GDB. Copyright (C) 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1996, 1997, 1998, - 1999, 2000, 2001, 2003, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -152,7 +152,6 @@ reopen_exec_file (void) char *filename; int res; struct stat st; - long mtime; struct cleanup *cleanups; /* Don't do anything if there isn't an exec file. */ @@ -233,6 +232,7 @@ void read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len) { int status; + status = target_read_memory (memaddr, myaddr, len); if (status != 0) memory_error (status, memaddr); @@ -244,6 +244,7 @@ void read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len) { int status; + status = target_read_stack (memaddr, myaddr, len); if (status != 0) memory_error (status, memaddr); @@ -287,11 +288,13 @@ do_captured_read_memory_integer (void *data) if successful. */ int -safe_read_memory_integer (CORE_ADDR memaddr, int len, enum bfd_endian byte_order, +safe_read_memory_integer (CORE_ADDR memaddr, int len, + enum bfd_endian byte_order, LONGEST *return_value) { int status; struct captured_read_memory_integer_arguments args; + args.memaddr = memaddr; args.len = len; args.byte_order = byte_order; @@ -353,6 +356,7 @@ CORE_ADDR read_memory_typed_address (CORE_ADDR addr, struct type *type) { gdb_byte *buf = alloca (TYPE_LENGTH (type)); + read_memory (addr, buf, TYPE_LENGTH (type)); return extract_typed_address (buf, type); } @@ -362,6 +366,7 @@ void write_memory (CORE_ADDR memaddr, const bfd_byte *myaddr, int len) { int status; + status = target_write_memory (memaddr, myaddr, len); if (status != 0) memory_error (status, memaddr); @@ -369,20 +374,24 @@ write_memory (CORE_ADDR memaddr, const bfd_byte *myaddr, int len) /* Store VALUE at ADDR in the inferior as a LEN-byte unsigned integer. */ void -write_memory_unsigned_integer (CORE_ADDR addr, int len, enum bfd_endian byte_order, +write_memory_unsigned_integer (CORE_ADDR addr, int len, + enum bfd_endian byte_order, ULONGEST value) { gdb_byte *buf = alloca (len); + store_unsigned_integer (buf, len, byte_order, value); write_memory (addr, buf, len); } /* Store VALUE at ADDR in the inferior as a LEN-byte signed integer. */ void -write_memory_signed_integer (CORE_ADDR addr, int len, enum bfd_endian byte_order, +write_memory_signed_integer (CORE_ADDR addr, int len, + enum bfd_endian byte_order, LONGEST value) { gdb_byte *buf = alloca (len); + store_signed_integer (buf, len, byte_order, value); write_memory (addr, buf, len); } @@ -425,6 +434,7 @@ void _initialize_core (void) { struct cmd_list_element *c; + c = add_cmd ("core-file", class_files, core_file_command, _("\ Use FILE as core dump for examining memory and registers.\n\ No arg means have no core file. This command has been superseded by the\n\ diff --git a/contrib/gdb-7/gdb/corelow.c b/contrib/gdb-7/gdb/corelow.c index 49de82d635..9523f32731 100644 --- a/contrib/gdb-7/gdb/corelow.c +++ b/contrib/gdb-7/gdb/corelow.c @@ -1,7 +1,7 @@ /* Core dump and executable file functions below target vector, for GDB. Copyright (C) 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -45,6 +45,8 @@ #include "exceptions.h" #include "solib.h" #include "filenames.h" +#include "progspace.h" +#include "objfiles.h" #ifndef O_LARGEFILE @@ -75,6 +77,9 @@ struct gdbarch *core_gdbarch = NULL; unix child targets. */ static struct target_section_table *core_data; +/* True if we needed to fake the pid of the loaded core inferior. */ +static int core_has_fake_pid = 0; + static void core_files_info (struct target_ops *); static struct core_fns *sniff_core_bfd (bfd *); @@ -205,7 +210,7 @@ core_close (int quitting) { int pid = ptid_get_pid (inferior_ptid); inferior_ptid = null_ptid; /* Avoid confusion from thread stuff */ - delete_inferior_silent (pid); + exit_inferior_silent (pid); /* Clear out solib state while the bfd is still open. See comments in clear_solib in solib.c. */ @@ -214,11 +219,10 @@ core_close (int quitting) xfree (core_data->sections); xfree (core_data); core_data = NULL; + core_has_fake_pid = 0; name = bfd_get_filename (core_bfd); - if (!bfd_close (core_bfd)) - warning (_("cannot close \"%s\": %s"), - name, bfd_errmsg (bfd_get_error ())); + gdb_bfd_close_or_warn (core_bfd); xfree (name); core_bfd = NULL; } @@ -239,32 +243,44 @@ static void add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg) { ptid_t ptid; - int thread_id; + int core_tid; + int pid, lwpid; asection *reg_sect = (asection *) reg_sect_arg; if (strncmp (bfd_section_name (abfd, asect), ".reg/", 5) != 0) return; - thread_id = atoi (bfd_section_name (abfd, asect) + 5); + core_tid = atoi (bfd_section_name (abfd, asect) + 5); if (core_gdbarch && gdbarch_core_reg_section_encodes_pid (core_gdbarch)) { - uint32_t merged_pid = thread_id; - ptid = ptid_build (merged_pid & 0xffff, - merged_pid >> 16, 0); + uint32_t merged_pid = core_tid; + pid = merged_pid & 0xffff; + lwpid = merged_pid >> 16; + + /* This can happen on solaris core, for example, if we don't + find a NT_PSTATUS note in the core, but do find NT_LWPSTATUS + notes. */ + if (pid == 0) + { + core_has_fake_pid = 1; + pid = CORELOW_PID; + } } else - ptid = ptid_build (ptid_get_pid (inferior_ptid), thread_id, 0); + { + core_has_fake_pid = 1; + pid = CORELOW_PID; + lwpid = core_tid; + } - if (ptid_get_lwp (inferior_ptid) == 0) - /* The main thread has already been added before getting here, and - this is the first time we hear about a thread id. Assume this - is the main thread. */ - thread_change_ptid (inferior_ptid, ptid); - else - /* Nope, really a new thread. */ - add_thread (ptid); + if (current_inferior ()->pid == 0) + inferior_appeared (current_inferior (), pid); + + ptid = ptid_build (pid, lwpid, 0); + + add_thread (ptid); /* Warning, Will Robinson, looking at BFD private data! */ @@ -285,7 +301,6 @@ core_open (char *filename, int from_tty) bfd *temp_bfd; int scratch_chan; int flags; - int corelow_pid = CORELOW_PID; target_preopen (from_tty); if (!filename) @@ -321,8 +336,8 @@ core_open (char *filename, int from_tty) if (temp_bfd == NULL) perror_with_name (filename); - if (!bfd_check_format (temp_bfd, bfd_core) && - !gdb_check_format (temp_bfd)) + if (!bfd_check_format (temp_bfd, bfd_core) + && !gdb_check_format (temp_bfd)) { /* Do it after the err msg */ /* FIXME: should be checking for errors from bfd_close (for one thing, @@ -371,21 +386,14 @@ core_open (char *filename, int from_tty) push_target (&core_ops); discard_cleanups (old_chain); - add_inferior_silent (corelow_pid); - /* Do this before acknowledging the inferior, so if post_create_inferior throws (can happen easilly if you're loading a core file with the wrong exec), we aren't left with threads from the previous inferior. */ init_thread_list (); - /* Set INFERIOR_PTID early, so an upper layer can rely on it being - set while in the target_find_new_threads call below. */ - inferior_ptid = pid_to_ptid (corelow_pid); - - /* Assume ST --- Add a main task. We'll later detect when we go - from ST to MT. */ - add_thread_silent (inferior_ptid); + inferior_ptid = null_ptid; + core_has_fake_pid = 0; /* Need to flush the register cache (and the frame cache) from a previous debug session. If inferior_ptid ends up the same as the @@ -401,6 +409,26 @@ core_open (char *filename, int from_tty) bfd_map_over_sections (core_bfd, add_to_thread_list, bfd_get_section_by_name (core_bfd, ".reg")); + if (ptid_equal (inferior_ptid, null_ptid)) + { + /* Either we found no .reg/NN section, and hence we have a + non-threaded core (single-threaded, from gdb's perspective), + or for some reason add_to_thread_list couldn't determine + which was the "main" thread. The latter case shouldn't + usually happen, but we're dealing with input here, which can + always be broken in different ways. */ + struct thread_info *thread = first_thread_of_process (-1); + + if (thread == NULL) + { + inferior_appeared (current_inferior (), CORELOW_PID); + inferior_ptid = pid_to_ptid (CORELOW_PID); + add_thread_silent (inferior_ptid); + } + else + switch_to_thread (thread->ptid); + } + post_create_inferior (&core_ops, from_tty); /* Now go through the target stack looking for threads since there @@ -480,9 +508,9 @@ deprecated_core_resize_section_table (int num_added) static void get_core_register_section (struct regcache *regcache, - char *name, + const char *name, int which, - char *human_name, + const char *human_name, int required) { static char *section_name = NULL; @@ -496,9 +524,13 @@ get_core_register_section (struct regcache *regcache, && gdbarch_core_reg_section_encodes_pid (core_gdbarch)) { uint32_t merged_pid; + int pid = ptid_get_pid (inferior_ptid); + + if (core_has_fake_pid) + pid = 0; merged_pid = ptid_get_lwp (inferior_ptid); - merged_pid = merged_pid << 16 | ptid_get_pid (inferior_ptid); + merged_pid = merged_pid << 16 | pid; section_name = xstrprintf ("%s/%s", name, plongest (merged_pid)); } @@ -559,6 +591,7 @@ static void get_core_registers (struct target_ops *ops, struct regcache *regcache, int regno) { + struct core_regset_section *sect_list; int i; if (!(core_gdbarch && gdbarch_regset_from_core_section_p (core_gdbarch)) @@ -569,16 +602,30 @@ get_core_registers (struct target_ops *ops, return; } - get_core_register_section (regcache, - ".reg", 0, "general-purpose", 1); - get_core_register_section (regcache, - ".reg2", 2, "floating-point", 0); - get_core_register_section (regcache, - ".reg-xfp", 3, "extended floating-point", 0); - get_core_register_section (regcache, - ".reg-ppc-vmx", 3, "ppc Altivec", 0); - get_core_register_section (regcache, - ".reg-ppc-vsx", 4, "POWER7 VSX", 0); + sect_list = gdbarch_core_regset_sections (get_regcache_arch (regcache)); + if (sect_list) + while (sect_list->sect_name != NULL) + { + if (strcmp (sect_list->sect_name, ".reg") == 0) + get_core_register_section (regcache, sect_list->sect_name, + 0, sect_list->human_name, 1); + else if (strcmp (sect_list->sect_name, ".reg2") == 0) + get_core_register_section (regcache, sect_list->sect_name, + 2, sect_list->human_name, 0); + else + get_core_register_section (regcache, sect_list->sect_name, + 3, sect_list->human_name, 0); + + sect_list++; + } + + else + { + get_core_register_section (regcache, + ".reg", 0, "general-purpose", 1); + get_core_register_section (regcache, + ".reg2", 2, "floating-point", 0); + } /* Supply dummy value for all registers not found in the core. */ for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++) @@ -644,7 +691,6 @@ core_xfer_partial (struct target_ops *ops, enum target_object object, struct bfd_section *section; bfd_size_type size; - char *contents; section = bfd_get_section_by_name (core_bfd, ".auxv"); if (section == NULL) @@ -676,7 +722,6 @@ core_xfer_partial (struct target_ops *ops, enum target_object object, struct bfd_section *section; bfd_size_type size; - char *contents; section = bfd_get_section_by_name (core_bfd, ".wcookie"); if (section == NULL) @@ -720,9 +765,8 @@ core_xfer_partial (struct target_ops *ops, enum target_object object, struct bfd_section *section; bfd_size_type size; - char *contents; - char sectionstr[100]; + xsnprintf (sectionstr, sizeof sectionstr, "SPU/%s", annex); section = bfd_get_section_by_name (core_bfd, sectionstr); @@ -749,6 +793,7 @@ core_xfer_partial (struct target_ops *ops, enum target_object object, { /* NULL annex requests list of all present spuids. */ struct spuid_list list; + list.buf = readbuf; list.offset = offset; list.len = len; @@ -813,6 +858,7 @@ core_pid_to_str (struct target_ops *ops, ptid_t ptid) && gdbarch_core_pid_to_str_p (core_gdbarch)) { char *ret = gdbarch_core_pid_to_str (core_gdbarch, ptid); + if (ret != NULL) return ret; } diff --git a/contrib/gdb-7/gdb/cp-abi.c b/contrib/gdb-7/gdb/cp-abi.c index a499a86de8..14552d1e6d 100644 --- a/contrib/gdb-7/gdb/cp-abi.c +++ b/contrib/gdb-7/gdb/cp-abi.c @@ -1,6 +1,6 @@ /* Generic code for supporting multiple C++ ABI's - Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -92,6 +92,7 @@ value_rtti_type (struct value *v, int *full, int *top, int *using_enc) { struct type *ret = NULL; struct gdb_exception e; + if ((current_cp_abi.rtti_type) == NULL) return NULL; TRY_CATCH (e, RETURN_MASK_ERROR) @@ -238,8 +239,8 @@ list_cp_abis (int from_tty) { struct cleanup *cleanup_chain; int i; - ui_out_text (uiout, "The available C++ ABIs are:\n"); + ui_out_text (uiout, "The available C++ ABIs are:\n"); cleanup_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "cp-abi-list"); for (i = 0; i < num_cp_abis; i++) { diff --git a/contrib/gdb-7/gdb/cp-abi.h b/contrib/gdb-7/gdb/cp-abi.h index 0753259a89..586be91dbd 100644 --- a/contrib/gdb-7/gdb/cp-abi.h +++ b/contrib/gdb-7/gdb/cp-abi.h @@ -3,7 +3,7 @@ Contributed by Daniel Berlin - Copyright (C) 2001, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/cp-name-parser.y b/contrib/gdb-7/gdb/cp-name-parser.y index 62800b8ab1..6d7b600a95 100644 --- a/contrib/gdb-7/gdb/cp-name-parser.y +++ b/contrib/gdb-7/gdb/cp-name-parser.y @@ -1,6 +1,6 @@ /* YACC parser for C++ names, for GDB. - Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Parts of the lexer are based on c-exp.y from GDB. @@ -1541,7 +1541,7 @@ yylex (void) { int c; int namelen; - const char *tokstart, *tokptr; + const char *tokstart; retry: prev_lexptr = lexptr; diff --git a/contrib/gdb-7/gdb/cp-namespace.c b/contrib/gdb-7/gdb/cp-namespace.c index d2d8f2eb88..d0fdcbe440 100644 --- a/contrib/gdb-7/gdb/cp-namespace.c +++ b/contrib/gdb-7/gdb/cp-namespace.c @@ -1,5 +1,6 @@ /* Helper routines for C++ support in GDB. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by David Carlton and by Kealia, Inc. @@ -32,18 +33,13 @@ #include "frame.h" #include "buildsym.h" -static struct using_direct *cp_copy_usings (struct using_direct *using, - struct obstack *obstack); - static struct symbol *lookup_namespace_scope (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain, const char *scope, int scope_len); static struct symbol *lookup_symbol_file (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain, int anonymous_namespace); @@ -85,7 +81,6 @@ cp_scan_for_anonymous_namespaces (const struct symbol *symbol) const char *name = SYMBOL_DEMANGLED_NAME (symbol); unsigned int previous_component; unsigned int next_component; - const char *len; /* Start with a quick-and-dirty check for mention of "(anonymous namespace)". */ @@ -119,7 +114,8 @@ cp_scan_for_anonymous_namespaces (const struct symbol *symbol) anonymous namespace. So add symbols in it to the namespace given by the previous component if there is one, or to the global namespace if there isn't. */ - cp_add_using_directive (dest, src); + cp_add_using_directive (dest, src, NULL, NULL, + &SYMBOL_SYMTAB (symbol)->objfile->objfile_obstack); } /* The "+ 2" is for the "::". */ previous_component = next_component + 2; @@ -130,26 +126,55 @@ cp_scan_for_anonymous_namespaces (const struct symbol *symbol) } } -/* Add a using directive to using_list. If the using directive in question - has already been added, don't add it twice. */ + +/* Add a using directive to using_directives. If the using directive in + question has already been added, don't add it twice. + Create a new struct using_direct which imports the namespace SRC into the + scope DEST. ALIAS is the name of the imported namespace in the current + scope. If ALIAS is NULL then the namespace is known by its original name. + DECLARATION is the name if the imported varable if this is a declaration + import (Eg. using A::x), otherwise it is NULL. The arguments are copied + into newly allocated memory so they can be temporaries. */ void -cp_add_using_directive (const char *dest, const char *src) +cp_add_using_directive (const char *dest, + const char *src, + const char *alias, + const char *declaration, + struct obstack *obstack) { struct using_direct *current; struct using_direct *new; - + /* Has it already been added? */ for (current = using_directives; current != NULL; current = current->next) { if (strcmp (current->import_src, src) == 0 - && strcmp (current->import_dest, dest) == 0) + && strcmp (current->import_dest, dest) == 0 + && ((alias == NULL && current->alias == NULL) + || (alias != NULL && current->alias != NULL + && strcmp (alias, current->alias) == 0)) + && ((declaration == NULL && current->declaration == NULL) + || (declaration != NULL && current->declaration != NULL + && strcmp (declaration, current->declaration) == 0))) return; } - using_directives = cp_add_using (dest, src, using_directives); + new = OBSTACK_ZALLOC (obstack, struct using_direct); + + new->import_src = obsavestring (src, strlen (src), obstack); + new->import_dest = obsavestring (dest, strlen (dest), obstack); + + if (alias != NULL) + new->alias = obsavestring (alias, strlen (alias), obstack); + + if (declaration != NULL) + new->declaration = obsavestring (declaration, strlen (declaration), + obstack); + new->next = using_directives; + using_directives = new; } /* Record the namespace that the function defined by SYMBOL was @@ -200,73 +225,222 @@ cp_is_anonymous (const char *namespace) != NULL); } -/* Create a new struct using direct which imports the namespace SRC - into the scope DEST. - Set its next member in the linked list to NEXT; allocate all memory - using xmalloc. It copies the strings, so NAME can be a temporary - string. */ +/* The C++-specific version of name lookup for static and global + names. This makes sure that names get looked for in all namespaces + that are in scope. NAME is the natural name of the symbol that + we're looking for, BLOCK is the block that we're searching within, + DOMAIN says what kind of symbols we're looking for, and if SYMTAB is + non-NULL, we should store the symtab where we found the symbol in it. */ -struct using_direct * -cp_add_using (const char *dest, - const char *src, - struct using_direct *next) +struct symbol * +cp_lookup_symbol_nonlocal (const char *name, + const struct block *block, + const domain_enum domain) { - struct using_direct *retval; + struct symbol *sym; + const char *scope = block_scope (block); - retval = xmalloc (sizeof (struct using_direct)); - retval->import_src = savestring (src, strlen(src)); - retval->import_dest = savestring (dest, strlen(dest)); - retval->next = next; + sym = lookup_namespace_scope (name, block, domain, scope, 0); + if (sym != NULL) + return sym; - return retval; + return cp_lookup_symbol_namespace (scope, name, block, domain); } -/* Make a copy of the using directives in the list pointed to by - USING, using OBSTACK to allocate memory. Free all memory pointed - to by USING via xfree. */ +/* Look up NAME in the C++ namespace NAMESPACE. Other arguments are as in + cp_lookup_symbol_nonlocal. */ -static struct using_direct * -cp_copy_usings (struct using_direct *using, - struct obstack *obstack) +static struct symbol * +cp_lookup_symbol_in_namespace (const char *namespace, + const char *name, + const struct block *block, + const domain_enum domain) { - if (using == NULL) + if (namespace[0] == '\0') { - return NULL; + return lookup_symbol_file (name, block, domain, 0); } else { - struct using_direct *retval - = obstack_alloc (obstack, sizeof (struct using_direct)); - retval->import_src = obsavestring (using->import_src, strlen (using->import_src), - obstack); - retval->import_dest = obsavestring (using->import_dest, strlen (using->import_dest), - obstack); - retval->next = cp_copy_usings (using->next, obstack); - - xfree (using->import_src); - xfree (using->import_dest); - xfree (using); - - return retval; + char *concatenated_name = alloca (strlen (namespace) + 2 + + strlen (name) + 1); + + strcpy (concatenated_name, namespace); + strcat (concatenated_name, "::"); + strcat (concatenated_name, name); + return lookup_symbol_file (concatenated_name, block, + domain, cp_is_anonymous (namespace)); } } -/* The C++-specific version of name lookup for static and global - names. This makes sure that names get looked for in all namespaces - that are in scope. NAME is the natural name of the symbol that - we're looking for, LINKAGE_NAME (which is optional) is its linkage - name, BLOCK is the block that we're searching within, DOMAIN says - what kind of symbols we're looking for, and if SYMTAB is non-NULL, - we should store the symtab where we found the symbol in it. */ +/* Used for cleanups to reset the "searched" flag incase + of an error. */ + +static void +reset_directive_searched (void *data) +{ + struct using_direct *direct = data; + direct->searched = 0; +} + +/* Search for NAME by applying all import statements belonging + to BLOCK which are applicable in SCOPE. If DECLARATION_ONLY the search + is restricted to using declarations. + Example: + + namespace A{ + int x; + } + using A::x; + + If SEARCH_PARENTS the search will include imports which are applicable in + parents of SCOPE. + Example: + + namespace A{ + using namespace X; + namespace B{ + using namespace Y; + } + } + + If SCOPE is "A::B" and SEARCH_PARENTS is true the imports of namespaces X + and Y will be considered. If SEARCH_PARENTS is false only the import of Y + is considered. */ struct symbol * -cp_lookup_symbol_nonlocal (const char *name, - const char *linkage_name, - const struct block *block, - const domain_enum domain) +cp_lookup_symbol_imports (const char *scope, + const char *name, + const struct block *block, + const domain_enum domain, + const int declaration_only, + const int search_parents) +{ + struct using_direct *current; + struct symbol *sym = NULL; + int len; + int directive_match; + struct cleanup *searched_cleanup; + + /* First, try to find the symbol in the given namespace. */ + if (!declaration_only) + sym = cp_lookup_symbol_in_namespace (scope, name, block, domain); + + if (sym != NULL) + return sym; + + /* Go through the using directives. If any of them add new + names to the namespace we're searching in, see if we can find a + match by applying them. */ + + for (current = block_using (block); + current != NULL; + current = current->next) + { + len = strlen (current->import_dest); + directive_match = (search_parents + ? (strncmp (scope, current->import_dest, + strlen (current->import_dest)) == 0 + && (len == 0 + || scope[len] == ':' || scope[len] == '\0')) + : strcmp (scope, current->import_dest) == 0); + + /* If the import destination is the current scope or one of its ancestors then + it is applicable. */ + if (directive_match && !current->searched) + { + /* Mark this import as searched so that the recursive call does not + search it again. */ + current->searched = 1; + searched_cleanup = make_cleanup (reset_directive_searched, current); + + /* If there is an import of a single declaration, compare the imported + declaration (after optional renaming by its alias) with the sought + out name. If there is a match pass current->import_src as NAMESPACE + to direct the search towards the imported namespace. */ + if (current->declaration + && strcmp (name, current->alias ? current->alias + : current->declaration) == 0) + sym = cp_lookup_symbol_in_namespace (current->import_src, + current->declaration, + block, + domain); + + /* If this is a DECLARATION_ONLY search or a symbol was found or + this import statement was an import declaration, the search + of this import is complete. */ + if (declaration_only || sym != NULL || current->declaration) + { + current->searched = 0; + discard_cleanups (searched_cleanup); + + if (sym != NULL) + return sym; + + continue; + } + + if (current->alias != NULL && strcmp (name, current->alias) == 0) + /* If the import is creating an alias and the alias matches the + sought name. Pass current->import_src as the NAME to direct the + search towards the aliased namespace. */ + { + sym = cp_lookup_symbol_in_namespace (scope, + current->import_src, + block, + domain); + } + else if (current->alias == NULL) + { + /* If this import statement creates no alias, pass current->inner as + NAMESPACE to direct the search towards the imported namespace. */ + sym = cp_lookup_symbol_imports (current->import_src, + name, + block, + domain, + 0, + 0); + } + current->searched = 0; + discard_cleanups (searched_cleanup); + + if (sym != NULL) + return sym; + } + } + + return NULL; +} + + /* Searches for NAME in the current namespace, and by applying relevant import + statements belonging to BLOCK and its parents. SCOPE is the namespace scope + of the context in which the search is being evaluated. */ + +struct symbol* +cp_lookup_symbol_namespace (const char *scope, + const char *name, + const struct block *block, + const domain_enum domain) { - return lookup_namespace_scope (name, linkage_name, block, domain, - block_scope (block), 0); + struct symbol *sym; + + /* First, try to find the symbol in the given namespace. */ + sym = cp_lookup_symbol_in_namespace (scope, name, block, domain); + if (sym != NULL) + return sym; + + /* Search for name in namespaces imported to this and parent blocks. */ + while (block != NULL) + { + sym = cp_lookup_symbol_imports (scope, name, block, domain, 0, 1); + + if (sym) + return sym; + + block = BLOCK_SUPERBLOCK (block); + } + + return NULL; } /* Lookup NAME at namespace scope (or, in C terms, in static and @@ -286,7 +460,6 @@ cp_lookup_symbol_nonlocal (const char *name, static struct symbol * lookup_namespace_scope (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain, const char *scope, @@ -308,8 +481,7 @@ lookup_namespace_scope (const char *name, new_scope_len += 2; } new_scope_len += cp_find_first_component (scope + new_scope_len); - sym = lookup_namespace_scope (name, linkage_name, block, - domain, scope, new_scope_len); + sym = lookup_namespace_scope (name, block, domain, scope, new_scope_len); if (sym != NULL) return sym; } @@ -320,65 +492,7 @@ lookup_namespace_scope (const char *name, namespace = alloca (scope_len + 1); strncpy (namespace, scope, scope_len); namespace[scope_len] = '\0'; - return cp_lookup_symbol_namespace (namespace, name, linkage_name, - block, domain); -} - -/* Look up NAME in the C++ namespace NAMESPACE, applying the using - directives that are active in BLOCK. Other arguments are as in - cp_lookup_symbol_nonlocal. */ - -struct symbol * -cp_lookup_symbol_namespace (const char *namespace, - const char *name, - const char *linkage_name, - const struct block *block, - const domain_enum domain) -{ - const struct using_direct *current; - struct symbol *sym; - - /* First, go through the using directives. If any of them add new - names to the namespace we're searching in, see if we can find a - match by applying them. */ - - for (current = block_using (block); - current != NULL; - current = current->next) - { - if (strcmp (namespace, current->import_dest) == 0) - { - sym = cp_lookup_symbol_namespace (current->import_src, - name, - linkage_name, - block, - domain); - if (sym != NULL) - return sym; - } - } - - /* We didn't find anything by applying any of the using directives - that are still applicable; so let's see if we've got a match - using the current namespace. */ - - if (namespace[0] == '\0') - { - return lookup_symbol_file (name, linkage_name, block, - domain, 0); - } - else - { - char *concatenated_name - = alloca (strlen (namespace) + 2 + strlen (name) + 1); - strcpy (concatenated_name, namespace); - strcat (concatenated_name, "::"); - strcat (concatenated_name, name); - sym = lookup_symbol_file (concatenated_name, linkage_name, - block, domain, - cp_is_anonymous (namespace)); - return sym; - } + return cp_lookup_symbol_in_namespace (namespace, name, block, domain); } /* Look up NAME in BLOCK's static block and in global blocks. If @@ -388,14 +502,13 @@ cp_lookup_symbol_namespace (const char *namespace, static struct symbol * lookup_symbol_file (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain, int anonymous_namespace) { struct symbol *sym = NULL; - sym = lookup_symbol_static (name, linkage_name, block, domain); + sym = lookup_symbol_static (name, block, domain); if (sym != NULL) return sym; @@ -408,12 +521,11 @@ lookup_symbol_file (const char *name, const struct block *global_block = block_global_block (block); if (global_block != NULL) - sym = lookup_symbol_aux_block (name, linkage_name, global_block, - domain); + sym = lookup_symbol_aux_block (name, global_block, domain); } else { - sym = lookup_symbol_global (name, linkage_name, block, domain); + sym = lookup_symbol_global (name, block, domain); } if (sym != NULL) @@ -452,6 +564,7 @@ cp_lookup_nested_type (struct type *parent_type, { case TYPE_CODE_STRUCT: case TYPE_CODE_NAMESPACE: + case TYPE_CODE_UNION: { /* NOTE: carlton/2003-11-10: We don't treat C++ class members of classes like, say, data or function members. Instead, @@ -461,15 +574,28 @@ cp_lookup_nested_type (struct type *parent_type, lookup_symbol_namespace works when looking them up. */ const char *parent_name = TYPE_TAG_NAME (parent_type); - struct symbol *sym = cp_lookup_symbol_namespace (parent_name, - nested_name, - NULL, - block, - VAR_DOMAIN); - if (sym == NULL || SYMBOL_CLASS (sym) != LOC_TYPEDEF) - return NULL; - else + struct symbol *sym = cp_lookup_symbol_in_namespace (parent_name, + nested_name, + block, + VAR_DOMAIN); + char *concatenated_name; + + if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF) return SYMBOL_TYPE (sym); + + /* Now search all static file-level symbols. Not strictly correct, + but more useful than an error. We do not try to guess any imported + namespace as even the fully specified namespace seach is is already + not C++ compliant and more assumptions could make it too magic. */ + + concatenated_name = alloca (strlen (parent_name) + 2 + + strlen (nested_name) + 1); + sprintf (concatenated_name, "%s::%s", parent_name, nested_name); + sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN); + if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF) + return SYMBOL_TYPE (sym); + + return NULL; } default: internal_error (__FILE__, __LINE__, @@ -533,6 +659,7 @@ cp_lookup_transparent_type_loop (const char *name, const char *scope, { struct type *retval = cp_lookup_transparent_type_loop (name, scope, scope_length + 2); + if (retval != NULL) return retval; } @@ -709,12 +836,11 @@ check_one_possible_namespace_symbol (const char *name, int len, memcpy (name_copy, name, len); name_copy[len] = '\0'; - sym = lookup_block_symbol (block, name_copy, NULL, VAR_DOMAIN); + sym = lookup_block_symbol (block, name_copy, VAR_DOMAIN); if (sym == NULL) { struct type *type; - name_copy = obsavestring (name, len, &objfile->objfile_obstack); type = init_type (TYPE_CODE_NAMESPACE, 0, 0, name_copy, objfile); @@ -723,7 +849,9 @@ check_one_possible_namespace_symbol (const char *name, int len, sym = obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); SYMBOL_LANGUAGE (sym) = language_cplus; - SYMBOL_SET_NAMES (sym, name_copy, len, objfile); + /* Note that init_type copied the name to the objfile's + obstack. */ + SYMBOL_SET_NAMES (sym, TYPE_NAME (type), len, 0, objfile); SYMBOL_CLASS (sym) = LOC_TYPEDEF; SYMBOL_TYPE (sym) = type; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; @@ -749,7 +877,7 @@ lookup_possible_namespace_symbol (const char *name) struct symbol *sym; sym = lookup_block_symbol (get_possible_namespace_block (objfile), - name, NULL, VAR_DOMAIN); + name, VAR_DOMAIN); if (sym != NULL) return sym; @@ -764,6 +892,7 @@ static void maintenance_cplus_namespace (char *args, int from_tty) { struct objfile *objfile; + printf_unfiltered (_("Possible namespaces:\n")); ALL_OBJFILES (objfile) { diff --git a/contrib/gdb-7/gdb/cp-support.c b/contrib/gdb-7/gdb/cp-support.c index f12d785f13..ad1fb06bf0 100644 --- a/contrib/gdb-7/gdb/cp-support.c +++ b/contrib/gdb-7/gdb/cp-support.c @@ -1,5 +1,5 @@ /* Helper routines for C++ support in GDB. - Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by MontaVista Software. @@ -32,9 +32,14 @@ #include "block.h" #include "complaints.h" #include "gdbtypes.h" +#include "exceptions.h" +#include "expression.h" +#include "value.h" #include "safe-ctype.h" +#include "psymtab.h" + #define d_left(dc) (dc)->u.s_binary.left #define d_right(dc) (dc)->u.s_binary.right @@ -47,7 +52,7 @@ static void demangled_name_complaint (const char *name); /* Functions/variables related to overload resolution. */ -static int sym_return_val_size; +static int sym_return_val_size = -1; static int sym_return_val_index; static struct symbol **sym_return_val; @@ -59,8 +64,6 @@ static void make_symbol_overload_list_using (const char *func_name, static void make_symbol_overload_list_qualified (const char *func_name); -static void read_in_psymtabs (const char *oload_name); - /* The list of "maint cplus" commands. */ struct cmd_list_element *maint_cplus_cmd_list = NULL; @@ -70,6 +73,18 @@ struct cmd_list_element *maint_cplus_cmd_list = NULL; static void maint_cplus_command (char *arg, int from_tty); static void first_component_command (char *arg, int from_tty); +/* Operator validation. + NOTE: Multi-byte operators (usually the assignment variety operator) + must appear before the single byte version, i.e., "+=" before "+". */ +static const char *operator_tokens[] = + { + "++", "+=", "+", "->*", "->", "--", "-=", "-", "*=", "*", "/=", "/", + "%=", "%", "!=", "==", "!", "&&", "<<=", "<<", ">>=", ">>", + "<=", "<", ">=", ">", "~", "&=", "&", "|=", "||", "|", "^=", "^", + "=", "()", "[]", ",", "new", "delete" + /* new[] and delete[] require special whitespace handling */ + }; + /* Return 1 if STRING is clearly already in canonical form. This function is conservative; things which it does not recognize are assumed to be non-canonical, and the parser will sort them out @@ -143,7 +158,6 @@ mangled_name_to_comp (const char *mangled_name, int options, { struct demangle_component *ret; char *demangled_name; - int len; /* If it looks like a v3 mangled name, then try to go directly to trees. */ @@ -327,7 +341,6 @@ method_name_from_physname (const char *physname) void *storage = NULL; char *demangled_name = NULL, *ret; struct demangle_component *ret_comp; - int done; ret_comp = mangled_name_to_comp (physname, DMGL_ANSI, &storage, &demangled_name); @@ -358,7 +371,6 @@ cp_func_name (const char *full_name) { char *ret; struct demangle_component *ret_comp; - int done; ret_comp = cp_demangled_name_to_comp (full_name, NULL); if (!ret_comp) @@ -681,6 +693,7 @@ make_symbol_overload_list (const char *func_name, const char *namespace) { struct cleanup *old_cleanups; + const char *name; sym_return_val_size = 100; sym_return_val_index = 0; @@ -692,11 +705,148 @@ make_symbol_overload_list (const char *func_name, make_symbol_overload_list_using (func_name, namespace); + if (namespace[0] == '\0') + name = func_name; + else + { + char *concatenated_name + = alloca (strlen (namespace) + 2 + strlen (func_name) + 1); + strcpy (concatenated_name, namespace); + strcat (concatenated_name, "::"); + strcat (concatenated_name, func_name); + name = concatenated_name; + } + + make_symbol_overload_list_qualified (name); + discard_cleanups (old_cleanups); return sym_return_val; } +/* Add all symbols with a name matching NAME in BLOCK to the overload + list. */ + +static void +make_symbol_overload_list_block (const char *name, + const struct block *block) +{ + struct dict_iterator iter; + struct symbol *sym; + + const struct dictionary *dict = BLOCK_DICT (block); + + for (sym = dict_iter_name_first (dict, name, &iter); + sym != NULL; + sym = dict_iter_name_next (name, &iter)) + overload_list_add_symbol (sym, name); +} + +/* Adds the function FUNC_NAME from NAMESPACE to the overload set. */ + +static void +make_symbol_overload_list_namespace (const char *func_name, + const char *namespace) +{ + const char *name; + const struct block *block = NULL; + + if (namespace[0] == '\0') + name = func_name; + else + { + char *concatenated_name + = alloca (strlen (namespace) + 2 + strlen (func_name) + 1); + + strcpy (concatenated_name, namespace); + strcat (concatenated_name, "::"); + strcat (concatenated_name, func_name); + name = concatenated_name; + } + + /* Look in the static block. */ + block = block_static_block (get_selected_block (0)); + make_symbol_overload_list_block (name, block); + + /* Look in the global block. */ + block = block_global_block (block); + make_symbol_overload_list_block (name, block); + +} + +/* Search the namespace of the given type and namespace of and public base + types. */ + +static void +make_symbol_overload_list_adl_namespace (struct type *type, + const char *func_name) +{ + char *namespace; + char *type_name; + int i, prefix_len; + + while (TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_CODE (type) == TYPE_CODE_REF + || TYPE_CODE (type) == TYPE_CODE_ARRAY + || TYPE_CODE (type) == TYPE_CODE_TYPEDEF) + { + if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) + type = check_typedef(type); + else + type = TYPE_TARGET_TYPE (type); + } + + type_name = TYPE_NAME (type); + + if (type_name == NULL) + return; + + prefix_len = cp_entire_prefix_len (type_name); + + if (prefix_len != 0) + { + namespace = alloca (prefix_len + 1); + strncpy (namespace, type_name, prefix_len); + namespace[prefix_len] = '\0'; + + make_symbol_overload_list_namespace (func_name, namespace); + } + + /* Check public base type */ + if (TYPE_CODE (type) == TYPE_CODE_CLASS) + for (i = 0; i < TYPE_N_BASECLASSES (type); i++) + { + if (BASETYPE_VIA_PUBLIC (type, i)) + make_symbol_overload_list_adl_namespace (TYPE_BASECLASS (type, i), + func_name); + } +} + +/* Adds the the overload list overload candidates for FUNC_NAME found through + argument dependent lookup. */ + +struct symbol ** +make_symbol_overload_list_adl (struct type **arg_types, int nargs, + const char *func_name) +{ + int i; + + gdb_assert (sym_return_val_size != -1); + + for (i = 1; i <= nargs; i++) + make_symbol_overload_list_adl_namespace (arg_types[i - 1], func_name); + + return sym_return_val; +} + +/* Used for cleanups to reset the "searched" flag in case of an error. */ + +static void +reset_directive_searched (void *data) +{ + struct using_direct *direct = data; + direct->searched = 0; +} + /* This applies the using directives to add namespaces to search in, and then searches for overloads in all of those namespaces. It adds the symbols found to sym_return_val. Arguments are as in @@ -706,38 +856,45 @@ static void make_symbol_overload_list_using (const char *func_name, const char *namespace) { - const struct using_direct *current; + struct using_direct *current; + const struct block *block; /* First, go through the using directives. If any of them apply, look in the appropriate namespaces for new functions to match on. */ - for (current = block_using (get_selected_block (0)); - current != NULL; - current = current->next) - { - if (strcmp (namespace, current->import_dest) == 0) - { - make_symbol_overload_list_using (func_name, - current->import_src); - } - } + for (block = get_selected_block (0); + block != NULL; + block = BLOCK_SUPERBLOCK (block)) + for (current = block_using (block); + current != NULL; + current = current->next) + { + /* Prevent recursive calls. */ + if (current->searched) + continue; + + /* If this is a namespace alias or imported declaration ignore it. */ + if (current->alias != NULL || current->declaration != NULL) + continue; + + if (strcmp (namespace, current->import_dest) == 0) + { + /* Mark this import as searched so that the recursive call does + not search it again. */ + struct cleanup *old_chain; + current->searched = 1; + old_chain = make_cleanup (reset_directive_searched, current); + + make_symbol_overload_list_using (func_name, current->import_src); + + current->searched = 0; + discard_cleanups (old_chain); + } + } /* Now, add names for this namespace. */ - - if (namespace[0] == '\0') - { - make_symbol_overload_list_qualified (func_name); - } - else - { - char *concatenated_name - = alloca (strlen (namespace) + 2 + strlen (func_name) + 1); - strcpy (concatenated_name, namespace); - strcat (concatenated_name, "::"); - strcat (concatenated_name, func_name); - make_symbol_overload_list_qualified (concatenated_name); - } + make_symbol_overload_list_namespace (func_name, namespace); } /* This does the bulk of the work of finding overloaded symbols. @@ -757,22 +914,17 @@ make_symbol_overload_list_qualified (const char *func_name) /* Look through the partial symtabs for all symbols which begin by matching FUNC_NAME. Make sure we read that symbol table in. */ - read_in_psymtabs (func_name); + ALL_OBJFILES (objfile) + { + if (objfile->sf) + objfile->sf->qf->expand_symtabs_for_function (objfile, func_name); + } /* Search upwards from currently selected frame (so that we can complete on local vars. */ for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b)) - { - dict = BLOCK_DICT (b); - - for (sym = dict_iter_name_first (dict, func_name, &iter); - sym; - sym = dict_iter_name_next (func_name, &iter)) - { - overload_list_add_symbol (sym, func_name); - } - } + make_symbol_overload_list_block (func_name, b); surrounding_static_block = block_static_block (get_selected_block (0)); @@ -783,14 +935,7 @@ make_symbol_overload_list_qualified (const char *func_name) { QUIT; b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK); - dict = BLOCK_DICT (b); - - for (sym = dict_iter_name_first (dict, func_name, &iter); - sym; - sym = dict_iter_name_next (func_name, &iter)) - { - overload_list_add_symbol (sym, func_name); - } + make_symbol_overload_list_block (func_name, b); } ALL_PRIMARY_SYMTABS (objfile, s) @@ -800,36 +945,7 @@ make_symbol_overload_list_qualified (const char *func_name) /* Don't do this block twice. */ if (b == surrounding_static_block) continue; - dict = BLOCK_DICT (b); - - for (sym = dict_iter_name_first (dict, func_name, &iter); - sym; - sym = dict_iter_name_next (func_name, &iter)) - { - overload_list_add_symbol (sym, func_name); - } - } -} - -/* Look through the partial symtabs for all symbols which begin - by matching FUNC_NAME. Make sure we read that symbol table in. */ - -static void -read_in_psymtabs (const char *func_name) -{ - struct partial_symtab *ps; - struct objfile *objfile; - - ALL_PSYMTABS (objfile, ps) - { - if (ps->readin) - continue; - - if ((lookup_partial_symbol (ps, func_name, NULL, 1, VAR_DOMAIN) - != NULL) - || (lookup_partial_symbol (ps, func_name, NULL, 0, VAR_DOMAIN) - != NULL)) - psymtab_to_symtab (ps); + make_symbol_overload_list_block (func_name, b); } } @@ -909,6 +1025,108 @@ first_component_command (char *arg, int from_tty) extern initialize_file_ftype _initialize_cp_support; /* -Wmissing-prototypes */ +#define SKIP_SPACE(P) \ + do \ + { \ + while (*(P) == ' ' || *(P) == '\t') \ + ++(P); \ + } \ + while (0) + +/* Returns the length of the operator name or 0 if INPUT does not + point to a valid C++ operator. INPUT should start with "operator". */ +int +cp_validate_operator (const char *input) +{ + int i; + char *copy; + const char *p; + struct expression *expr; + struct value *val; + struct gdb_exception except; + + p = input; + + if (strncmp (p, "operator", 8) == 0) + { + int valid = 0; + + p += 8; + SKIP_SPACE (p); + for (i = 0; i < sizeof (operator_tokens) / sizeof (operator_tokens[0]); + ++i) + { + int length = strlen (operator_tokens[i]); + + /* By using strncmp here, we MUST have operator_tokens ordered! + See additional notes where operator_tokens is defined above. */ + if (strncmp (p, operator_tokens[i], length) == 0) + { + const char *op = p; + + valid = 1; + p += length; + + if (strncmp (op, "new", 3) == 0 + || strncmp (op, "delete", 6) == 0) + { + + /* Special case: new[] and delete[]. We must be careful + to swallow whitespace before/in "[]". */ + SKIP_SPACE (p); + + if (*p == '[') + { + ++p; + SKIP_SPACE (p); + if (*p == ']') + ++p; + else + valid = 0; + } + } + + if (valid) + return (p - input); + } + } + + /* Check input for a conversion operator. */ + + /* Skip past base typename */ + while (*p != '*' && *p != '&' && *p != 0 && *p != ' ') + ++p; + SKIP_SPACE (p); + + /* Add modifiers '*'/'&' */ + while (*p == '*' || *p == '&') + { + ++p; + SKIP_SPACE (p); + } + + /* Check for valid type. [Remember: input starts with + "operator".] */ + copy = savestring (input + 8, p - input - 8); + expr = NULL; + val = NULL; + TRY_CATCH (except, RETURN_MASK_ALL) + { + expr = parse_expression (copy); + val = evaluate_type (expr); + } + + xfree (copy); + if (expr) + xfree (expr); + + if (val != NULL && value_type (val) != NULL) + return (p - input); + } + + return 0; +} + void _initialize_cp_support (void) { diff --git a/contrib/gdb-7/gdb/cp-support.h b/contrib/gdb-7/gdb/cp-support.h index b5a5c5fca7..ddc4c9377c 100644 --- a/contrib/gdb-7/gdb/cp-support.h +++ b/contrib/gdb-7/gdb/cp-support.h @@ -1,5 +1,5 @@ /* Helper routines for C++ support in GDB. - Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by MontaVista Software. @@ -37,16 +37,57 @@ struct type; struct demangle_component; /* This struct is designed to store data from using directives. It - says that names from namespace IMPORT_SRC should be visible within - namespace IMPORT_DEST. IMPORT_DEST should always be a strict initial - substring of IMPORT_SRC. These form a linked list; NEXT is the next element - of the list. */ + says that names from namespace IMPORT_SRC should be visible within namespace + IMPORT_DEST. These form a linked list; NEXT is the next element of the + list. If the imported namespace or declaration has been aliased within the + IMPORT_DEST namespace, ALIAS is set to a string representing the alias. + Otherwise, ALIAS is NULL. DECLARATION is the name of the imported + declaration, if this import statement represents one. Otherwise DECLARATION + is NULL and this import statement represents a namespace. + + C++: using namespace A; + Fortran: use A + import_src = "A" + import_dest = local scope of the import statement even such as "" + alias = NULL + declaration = NULL + + C++: using A::x; + Fortran: use A, only: x + import_src = "A" + import_dest = local scope of the import statement even such as "" + alias = NULL + declaration = "x" + The declaration will get imported as import_dest::x. + + C++: namespace LOCALNS = A; + Fortran has no way to address non-local namespace/module. + import_src = "A" + import_dest = local scope of the import statement even such as "" + alias = "LOCALNS" + declaration = NULL + The namespace will get imported as the import_dest::LOCALNS namespace. + + C++ cannot express it, it would be something like: using localname = A::x; + Fortran: use A, only localname => x + import_src = "A" + import_dest = local scope of the import statement even such as "" + alias = "localname" + declaration = "x" + The declaration will get imported as localname or `import_dest`localname. */ struct using_direct { char *import_src; char *import_dest; + + char *alias; + char *declaration; + struct using_direct *next; + + /* Used during import search to temporarily mark this node as searched. */ + int searched; }; @@ -69,19 +110,24 @@ extern char *cp_remove_params (const char *demangled_name); extern struct symbol **make_symbol_overload_list (const char *, const char *); +extern struct symbol **make_symbol_overload_list_adl (struct type **arg_types, + int nargs, + const char *func_name); + extern struct type *cp_lookup_rtti_type (const char *name, struct block *block); +extern int cp_validate_operator (const char *input); + /* Functions/variables from cp-namespace.c. */ extern int cp_is_anonymous (const char *namespace); extern void cp_add_using_directive (const char *dest, - const char *src); - -extern struct using_direct *cp_add_using (const char *dest, - const char *src, - struct using_direct *next); + const char *src, + const char *alias, + const char *declaration, + struct obstack *obstack); extern void cp_initialize_namespace (void); @@ -97,16 +143,21 @@ extern void cp_set_block_scope (const struct symbol *symbol, extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol); extern struct symbol *cp_lookup_symbol_nonlocal (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain); extern struct symbol *cp_lookup_symbol_namespace (const char *namespace, const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain); +extern struct symbol *cp_lookup_symbol_imports (const char *scope, + const char *name, + const struct block *block, + const domain_enum domain, + const int declaration_only, + const int search_parents); + extern struct type *cp_lookup_nested_type (struct type *parent_type, const char *nested_name, const struct block *block); diff --git a/contrib/gdb-7/gdb/cp-valprint.c b/contrib/gdb-7/gdb/cp-valprint.c index 49d71a4480..5f47ec4d91 100644 --- a/contrib/gdb-7/gdb/cp-valprint.c +++ b/contrib/gdb-7/gdb/cp-valprint.c @@ -1,7 +1,7 @@ /* Support for printing C++ values for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -71,6 +71,7 @@ show_static_field_print (struct ui_file *file, int from_tty, static struct obstack dont_print_vb_obstack; static struct obstack dont_print_statmem_obstack; +static struct obstack dont_print_stat_array_obstack; extern void _initialize_cp_valprint (void); @@ -80,6 +81,7 @@ static void cp_print_static_field (struct type *, struct value *, static void cp_print_value (struct type *, struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *, struct type **); @@ -150,14 +152,32 @@ void cp_print_value_fields (struct type *type, struct type *real_type, const gdb_byte *valaddr, int offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, struct type **dont_print_vb, int dont_print_statmem) { int i, len, n_baseclasses; - char *last_dont_print = obstack_next_free (&dont_print_statmem_obstack); int fields_seen = 0; + static int last_set_recurse = -1; CHECK_TYPEDEF (type); + + if (recurse == 0) + { + /* Any object can be left on obstacks only during an unexpected error. */ + + if (obstack_object_size (&dont_print_statmem_obstack) > 0) + { + obstack_free (&dont_print_statmem_obstack, NULL); + obstack_begin (&dont_print_statmem_obstack, 32 * sizeof (CORE_ADDR)); + } + if (obstack_object_size (&dont_print_stat_array_obstack) > 0) + { + obstack_free (&dont_print_stat_array_obstack, NULL); + obstack_begin (&dont_print_stat_array_obstack, + 32 * sizeof (struct type *)); + } + } fprintf_filtered (stream, "{"); len = TYPE_NFIELDS (type); @@ -168,7 +188,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, if (n_baseclasses > 0) cp_print_value (type, real_type, valaddr, offset, address, stream, - recurse + 1, options, dont_print_vb); + recurse + 1, val, options, dont_print_vb); /* Second, print out data fields */ @@ -177,14 +197,21 @@ cp_print_value_fields (struct type *type, struct type *real_type, fprintf_filtered (stream, ""); else { - struct obstack tmp_obstack = dont_print_statmem_obstack; - + int statmem_obstack_initial_size = 0; + int stat_array_obstack_initial_size = 0; + if (dont_print_statmem == 0) { - /* If we're at top level, carve out a completely fresh - chunk of the obstack and use that until this particular - invocation returns. */ - obstack_finish (&dont_print_statmem_obstack); + statmem_obstack_initial_size = + obstack_object_size (&dont_print_statmem_obstack); + + if (last_set_recurse != recurse) + { + stat_array_obstack_initial_size = + obstack_object_size (&dont_print_stat_array_obstack); + + last_set_recurse = recurse; + } } for (i = n_baseclasses; i < len; i++) @@ -262,9 +289,15 @@ cp_print_value_fields (struct type *type, struct type *real_type, { fputs_filtered ("", stream); } + else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i), + TYPE_FIELD_BITSIZE (type, i))) + { + fputs_filtered (_(""), stream); + } else { struct value_print_options opts = *options; + opts.deref_ref = 0; v = value_from_longest (TYPE_FIELD_TYPE (type, i), @@ -283,6 +316,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, else if (field_is_static (&TYPE_FIELD (type, i))) { struct value *v = value_static_field (type, i); + if (v == NULL) fputs_filtered ("", stream); else @@ -292,11 +326,12 @@ cp_print_value_fields (struct type *type, struct type *real_type, else { struct value_print_options opts = *options; + opts.deref_ref = 0; val_print (TYPE_FIELD_TYPE (type, i), valaddr, offset + TYPE_FIELD_BITPOS (type, i) / 8, - address + TYPE_FIELD_BITPOS (type, i) / 8, - stream, recurse + 1, &opts, + address, + stream, recurse + 1, val, &opts, current_language); } } @@ -305,10 +340,36 @@ cp_print_value_fields (struct type *type, struct type *real_type, if (dont_print_statmem == 0) { - /* Free the space used to deal with the printing - of the members from top level. */ - obstack_free (&dont_print_statmem_obstack, last_dont_print); - dont_print_statmem_obstack = tmp_obstack; + int obstack_final_size = + obstack_object_size (&dont_print_statmem_obstack); + + if (obstack_final_size > statmem_obstack_initial_size) { + /* In effect, a pop of the printed-statics stack. */ + + void *free_to_ptr = + obstack_next_free (&dont_print_statmem_obstack) - + (obstack_final_size - statmem_obstack_initial_size); + + obstack_free (&dont_print_statmem_obstack, + free_to_ptr); + } + + if (last_set_recurse != recurse) + { + int obstack_final_size = + obstack_object_size (&dont_print_stat_array_obstack); + + if (obstack_final_size > stat_array_obstack_initial_size) + { + void *free_to_ptr = + obstack_next_free (&dont_print_stat_array_obstack) - + (obstack_final_size - stat_array_obstack_initial_size); + + obstack_free (&dont_print_stat_array_obstack, + free_to_ptr); + } + last_set_recurse = -1; + } } if (options->pretty) @@ -321,6 +382,49 @@ cp_print_value_fields (struct type *type, struct type *real_type, fprintf_filtered (stream, "}"); } +/* Like cp_print_value_fields, but find the runtime type of the object + and pass it as the `real_type' argument to cp_print_value_fields. + This function is a hack to work around the fact that + common_val_print passes the embedded offset to val_print, but not + the enclosing type. */ + +void +cp_print_value_fields_rtti (struct type *type, + const gdb_byte *valaddr, int offset, + CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options, + struct type **dont_print_vb, + int dont_print_statmem) +{ + struct type *real_type = NULL; + + /* We require all bits to be valid in order to attempt a + conversion. */ + if (value_bits_valid (val, TARGET_CHAR_BIT * offset, + TARGET_CHAR_BIT * TYPE_LENGTH (type))) + { + struct value *value; + int full, top, using_enc; + + /* Ugh, we have to convert back to a value here. */ + value = value_from_contents_and_address (type, valaddr + offset, + address + offset); + /* We don't actually care about most of the result here -- just the + type. We already have the correct offset, due to how val_print + was initially called. */ + real_type = value_rtti_type (value, &full, &top, &using_enc); + } + + if (!real_type) + real_type = type; + + cp_print_value_fields (type, real_type, valaddr, offset, + address, stream, recurse, val, options, + dont_print_vb, dont_print_statmem); +} + /* Special val_print routine to avoid printing multiple copies of virtual baseclasses. */ @@ -328,6 +432,7 @@ static void cp_print_value (struct type *type, struct type *real_type, const gdb_byte *valaddr, int offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, struct type **dont_print_vb) { @@ -373,7 +478,7 @@ cp_print_value (struct type *type, struct type *real_type, thisoffset = offset; thistype = real_type; - boffset = baseclass_offset (type, i, valaddr + offset, address); + boffset = baseclass_offset (type, i, valaddr + offset, address + offset); skip = ((boffset == -1) || (boffset + offset) < 0) ? 1 : -1; if (BASETYPE_VIA_VIRTUAL (type, i)) @@ -384,10 +489,11 @@ cp_print_value (struct type *type, struct type *real_type, if (boffset != -1 && ((boffset + offset) < 0 - || (boffset + offset) >= TYPE_LENGTH (type))) + || (boffset + offset) >= TYPE_LENGTH (real_type))) { /* FIXME (alloca): unsafe if baseclass is really really large. */ gdb_byte *buf = alloca (TYPE_LENGTH (baseclass)); + base_valaddr = buf; if (target_read_memory (address + boffset, buf, TYPE_LENGTH (baseclass)) != 0) @@ -427,15 +533,15 @@ cp_print_value (struct type *type, struct type *real_type, if (!options->raw) result = apply_val_pretty_printer (baseclass, base_valaddr, thisoffset + boffset, - address + boffset, - stream, recurse, + address, + stream, recurse, val, options, current_language); if (!result) cp_print_value_fields (baseclass, thistype, base_valaddr, - thisoffset + boffset, address + boffset, - stream, recurse, options, + thisoffset + boffset, address, + stream, recurse, val, options, ((struct type **) obstack_base (&dont_print_vb_obstack)), 0); @@ -474,6 +580,7 @@ cp_print_static_field (struct type *type, const struct value_print_options *options) { struct value_print_options opts; + if (TYPE_CODE (type) == TYPE_CODE_STRUCT) { CORE_ADDR *first_dont_print; @@ -482,8 +589,8 @@ cp_print_static_field (struct type *type, first_dont_print = (CORE_ADDR *) obstack_base (&dont_print_statmem_obstack); - i = (CORE_ADDR *) obstack_next_free (&dont_print_statmem_obstack) - - first_dont_print; + i = obstack_object_size (&dont_print_statmem_obstack) + / sizeof (CORE_ADDR); while (--i >= 0) { @@ -499,19 +606,47 @@ cp_print_static_field (struct type *type, addr = value_address (val); obstack_grow (&dont_print_statmem_obstack, (char *) &addr, sizeof (CORE_ADDR)); - CHECK_TYPEDEF (type); - cp_print_value_fields (type, type, value_contents_all (val), + cp_print_value_fields (type, value_enclosing_type (val), + value_contents_for_printing (val), value_embedded_offset (val), addr, - stream, recurse, options, NULL, 1); + stream, recurse, + val, options, NULL, 1); return; } + if (TYPE_CODE (type) == TYPE_CODE_ARRAY) + { + struct type **first_dont_print; + int i; + struct type *target_type = TYPE_TARGET_TYPE (type); + + first_dont_print + = (struct type **) obstack_base (&dont_print_stat_array_obstack); + i = obstack_object_size (&dont_print_stat_array_obstack) + / sizeof (struct type *); + + while (--i >= 0) + { + if (target_type == first_dont_print[i]) + { + fputs_filtered ("", + stream); + return; + } + } + + obstack_grow (&dont_print_stat_array_obstack, (char *) &target_type, + sizeof (struct type *)); + } + opts = *options; opts.deref_ref = 0; - val_print (type, value_contents_all (val), + val_print (type, value_contents_for_printing (val), value_embedded_offset (val), value_address (val), - stream, recurse, &opts, current_language); + stream, recurse, + val, &opts, current_language); } @@ -596,6 +731,7 @@ cp_print_class_member (const gdb_byte *valaddr, struct type *type, if (domain != NULL) { char *name; + fputs_filtered (prefix, stream); name = type_name_no_tag (domain); if (name) @@ -637,8 +773,7 @@ Show printing of object's derived type based on vtable info."), NULL, show_objectprint, &setprintlist, &showprintlist); + obstack_begin (&dont_print_stat_array_obstack, 32 * sizeof (struct type *)); + obstack_begin (&dont_print_statmem_obstack, 32 * sizeof (CORE_ADDR)); obstack_begin (&dont_print_vb_obstack, 32 * sizeof (struct type *)); - obstack_specify_allocation (&dont_print_statmem_obstack, - 32 * sizeof (CORE_ADDR), sizeof (CORE_ADDR), - xmalloc, xfree); } diff --git a/contrib/gdb-7/gdb/d-lang.c b/contrib/gdb-7/gdb/d-lang.c new file mode 100644 index 0000000000..8ef47c7cec --- /dev/null +++ b/contrib/gdb-7/gdb/d-lang.c @@ -0,0 +1,280 @@ +/* D language support routines for GDB, the GNU debugger. + + Copyright (C) 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#include "defs.h" +#include "symtab.h" +#include "language.h" +#include "d-lang.h" +#include "c-lang.h" +#include "gdb_string.h" +#include "parser-defs.h" +#include "gdb_obstack.h" + +#include + +/* Extract identifiers from MANGLED_STR and append it to TEMPBUF. + Return 1 on success or 0 on failure. */ +static int +extract_identifiers (const char *mangled_str, struct obstack *tempbuf) +{ + long i = 0; + + while (isdigit (*mangled_str)) + { + char *end_ptr; + + i = strtol (mangled_str, &end_ptr, 10); + mangled_str = end_ptr; + if (i <= 0 || strlen (mangled_str) < i) + return 0; + obstack_grow (tempbuf, mangled_str, i); + mangled_str += i; + obstack_grow_str (tempbuf, "."); + } + if (*mangled_str == '\0' || i == 0) + return 0; + obstack_blank (tempbuf, -1); + return 1; +} + +/* Extract and demangle type from MANGLED_STR and append it to TEMPBUF. + Return 1 on success or 0 on failure. */ +static int +extract_type_info (const char *mangled_str, struct obstack *tempbuf) +{ + if (*mangled_str == '\0') + return 0; + switch (*mangled_str++) + { + case 'A': /* dynamic array */ + case 'G': /* static array */ + case 'H': /* associative array */ + if (!extract_type_info (mangled_str, tempbuf)) + return 0; + obstack_grow_str (tempbuf, "[]"); + return 1; + case 'P': /* pointer */ + if (!extract_type_info (mangled_str, tempbuf)) + return 0; + obstack_grow_str (tempbuf, "*"); + return 1; + case 'R': /* reference */ + if (!extract_type_info (mangled_str, tempbuf)) + return 0; + obstack_grow_str (tempbuf, "&"); + return 1; + case 'Z': /* return value */ + return extract_type_info (mangled_str, tempbuf); + case 'J': /* out */ + obstack_grow_str (tempbuf, "out "); + return extract_type_info (mangled_str, tempbuf); + case 'K': /* inout */ + obstack_grow_str (tempbuf, "inout "); + return extract_type_info (mangled_str, tempbuf); + case 'E': /* enum */ + case 'T': /* typedef */ + case 'D': /* delegate */ + case 'C': /* class */ + case 'S': /* struct */ + return extract_identifiers (mangled_str, tempbuf); + + /* basic types: */ + case 'n': obstack_grow_str (tempbuf, "none"); return 1; + case 'v': obstack_grow_str (tempbuf, "void"); return 1; + case 'g': obstack_grow_str (tempbuf, "byte"); return 1; + case 'h': obstack_grow_str (tempbuf, "ubyte"); return 1; + case 's': obstack_grow_str (tempbuf, "short"); return 1; + case 't': obstack_grow_str (tempbuf, "ushort"); return 1; + case 'i': obstack_grow_str (tempbuf, "int"); return 1; + case 'k': obstack_grow_str (tempbuf, "uint"); return 1; + case 'l': obstack_grow_str (tempbuf, "long"); return 1; + case 'm': obstack_grow_str (tempbuf, "ulong"); return 1; + case 'f': obstack_grow_str (tempbuf, "float"); return 1; + case 'd': obstack_grow_str (tempbuf, "double"); return 1; + case 'e': obstack_grow_str (tempbuf, "real"); return 1; + + /* imaginary and complex: */ + case 'o': obstack_grow_str (tempbuf, "ifloat"); return 1; + case 'p': obstack_grow_str (tempbuf, "idouble"); return 1; + case 'j': obstack_grow_str (tempbuf, "ireal"); return 1; + case 'q': obstack_grow_str (tempbuf, "cfloat"); return 1; + case 'r': obstack_grow_str (tempbuf, "cdouble"); return 1; + case 'c': obstack_grow_str (tempbuf, "creal"); return 1; + + /* other types: */ + case 'b': obstack_grow_str (tempbuf, "bit"); return 1; + case 'a': obstack_grow_str (tempbuf, "char"); return 1; + case 'u': obstack_grow_str (tempbuf, "wchar"); return 1; + case 'w': obstack_grow_str (tempbuf, "dchar"); return 1; + + default: + obstack_grow_str (tempbuf, "unknown"); + return 1; + } +} + +/* Implements the la_demangle language_defn routine for language D. */ +char * +d_demangle (const char *symbol, int options) +{ + struct obstack tempbuf; + char *out_str; + unsigned char is_func = 0; + + if (symbol == NULL) + return NULL; + else if (strcmp (symbol, "_Dmain") == 0) + return xstrdup ("D main"); + + obstack_init (&tempbuf); + + if (symbol[0] == '_' && symbol[1] == 'D') + { + symbol += 2; + is_func = 1; + } + else if (strncmp (symbol, "__Class_", 8) == 0) + symbol += 8; + else if (strncmp (symbol, "__init_", 7) == 0) + symbol += 7; + else if (strncmp (symbol, "__vtbl_", 7) == 0) + symbol += 7; + else if (strncmp (symbol, "__modctor_", 10) == 0) + symbol += 10; + else if (strncmp (symbol, "__moddtor_", 10) == 0) + symbol += 10; + else if (strncmp (symbol, "__ModuleInfo_", 13) == 0) + symbol += 13; + else + { + obstack_free (&tempbuf, NULL); + return NULL; + } + + if (!extract_identifiers (symbol, &tempbuf)) + { + obstack_free (&tempbuf, NULL); + return NULL; + } + + obstack_grow_str (&tempbuf, "("); + if (is_func == 1 && *symbol == 'F') + { + symbol++; + while (*symbol != '\0' && *symbol != 'Z') + { + if (is_func == 1) + is_func++; + else + obstack_grow_str (&tempbuf, ", "); + if (!extract_type_info (symbol, &tempbuf)) + { + obstack_free (&tempbuf, NULL); + return NULL; + } + } + } + obstack_grow_str0 (&tempbuf, ")"); + + /* Doesn't display the return type, but wouldn't be too hard to do. */ + + out_str = xstrdup (obstack_finish (&tempbuf)); + obstack_free (&tempbuf, NULL); + return out_str; +} + +/* Table mapping opcodes into strings for printing operators + and precedences of the operators. */ +static const struct op_print d_op_print_tab[] = +{ + {",", BINOP_COMMA, PREC_COMMA, 0}, + {"=", BINOP_ASSIGN, PREC_ASSIGN, 1}, + {"||", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0}, + {"&&", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0}, + {"|", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0}, + {"^", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0}, + {"&", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0}, + {"==", BINOP_EQUAL, PREC_EQUAL, 0}, + {"!=", BINOP_NOTEQUAL, PREC_EQUAL, 0}, + {"<=", BINOP_LEQ, PREC_ORDER, 0}, + {">=", BINOP_GEQ, PREC_ORDER, 0}, + {">", BINOP_GTR, PREC_ORDER, 0}, + {"<", BINOP_LESS, PREC_ORDER, 0}, + {">>", BINOP_RSH, PREC_SHIFT, 0}, + {"<<", BINOP_LSH, PREC_SHIFT, 0}, + {"+", BINOP_ADD, PREC_ADD, 0}, + {"-", BINOP_SUB, PREC_ADD, 0}, + {"*", BINOP_MUL, PREC_MUL, 0}, + {"/", BINOP_DIV, PREC_MUL, 0}, + {"%", BINOP_REM, PREC_MUL, 0}, + {"@", BINOP_REPEAT, PREC_REPEAT, 0}, + {"-", UNOP_NEG, PREC_PREFIX, 0}, + {"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0}, + {"~", UNOP_COMPLEMENT, PREC_PREFIX, 0}, + {"*", UNOP_IND, PREC_PREFIX, 0}, + {"&", UNOP_ADDR, PREC_PREFIX, 0}, + {"sizeof ", UNOP_SIZEOF, PREC_PREFIX, 0}, + {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0}, + {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0}, + {NULL, 0, 0, 0} +}; + +static const struct language_defn d_language_defn = +{ + "d", + language_d, + range_check_off, + type_check_off, + case_sensitive_on, + array_row_major, + macro_expansion_c, + &exp_descriptor_c, + c_parse, + c_error, + null_post_parser, + c_printchar, /* Print a character constant. */ + c_printstr, /* Function to print string constant. */ + c_emit_char, /* Print a single char. */ + c_print_type, /* Print a type using appropriate syntax. */ + c_print_typedef, /* Print a typedef using appropriate syntax. */ + d_val_print, /* Print a value using appropriate syntax. */ + c_value_print, /* Print a top-level value. */ + NULL, /* Language specific skip_trampoline. */ + "this", + basic_lookup_symbol_nonlocal, + basic_lookup_transparent_type, + d_demangle, /* Language specific symbol demangler. */ + NULL, /* Language specific class_name_from_physname. */ + d_op_print_tab, /* Expression operators for printing. */ + 1, /* C-style arrays. */ + 0, /* String lower bound. */ + default_word_break_characters, + default_make_symbol_completion_list, + c_language_arch_info, + default_print_array_index, + default_pass_by_reference, + c_get_string, + LANG_MAGIC +}; + +void +_initialize_d_language (void) +{ + add_language (&d_language_defn); +} diff --git a/contrib/gdb-7/gdb/cli-out.h b/contrib/gdb-7/gdb/d-lang.h similarity index 57% copy from contrib/gdb-7/gdb/cli-out.h copy to contrib/gdb-7/gdb/d-lang.h index c03a92b273..c2ec728514 100644 --- a/contrib/gdb-7/gdb/cli-out.h +++ b/contrib/gdb-7/gdb/d-lang.h @@ -1,6 +1,6 @@ -/* Output generating routines for GDB CLI. - Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. - Contributed by Cygnus Solutions. +/* D language support definitions for GDB, the GNU debugger. + + Copyright (C) 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -17,14 +17,17 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef CLI_OUT_H -#define CLI_OUT_H +#if !defined (D_LANG_H) +#define D_LANG_H 1 -struct ui_file; +#include "symtab.h" -extern struct ui_out *cli_out_new (struct ui_file *stream); +extern char *d_demangle (const char *mangled, int options); -extern struct ui_file *cli_out_set_stream (struct ui_out *uiout, - struct ui_file *stream); +extern int d_val_print (struct type *type, const gdb_byte *valaddr, + int embedded_offset, CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options); -#endif +#endif /* !defined (D_LANG_H) */ diff --git a/contrib/gdb-7/gdb/d-valprint.c b/contrib/gdb-7/gdb/d-valprint.c new file mode 100644 index 0000000000..87edddb3cd --- /dev/null +++ b/contrib/gdb-7/gdb/d-valprint.c @@ -0,0 +1,94 @@ +/* Support for printing D values for GDB, the GNU debugger. + + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#include "defs.h" +#include "gdbtypes.h" +#include "gdbcore.h" +#include "d-lang.h" +#include "c-lang.h" + +/* Assuming that TYPE is a TYPE_CODE_STRUCT, verify that TYPE is + a dynamic array, and then print its value to STREAM. Return + the number of string characters printed, or -1 if TYPE is not + a dynamic array. */ +static int +dynamic_array_type (struct type *type, const gdb_byte *valaddr, + int embedded_offset, CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options) +{ + if (TYPE_NFIELDS (type) == 2 + && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_INT + && strcmp (TYPE_FIELD_NAME (type, 0), "length") == 0 + && strcmp (TYPE_FIELD_NAME (type, 1), "ptr") == 0 + && value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset, + TARGET_CHAR_BIT * TYPE_LENGTH (type))) + { + CORE_ADDR addr; + struct type *elttype; + struct type *true_type; + struct type *ptr_type; + const gdb_byte *ptraddr; + struct value *val; + int length; + + length = unpack_field_as_long (type, valaddr + embedded_offset, 0); + + ptr_type = TYPE_FIELD_TYPE (type, 1); + elttype = check_typedef (TYPE_TARGET_TYPE (ptr_type)); + addr = unpack_pointer (ptr_type, + valaddr + TYPE_FIELD_BITPOS (type, 1) / 8 + + embedded_offset); + true_type = check_typedef (elttype); + + true_type = lookup_array_range_type (true_type, 0, length - 1); + val = value_at (true_type, addr); + ptraddr = value_contents (val); + + return d_val_print (true_type, ptraddr, 0, addr, stream, recurse + 1, + NULL, options); + } + return -1; +} + +/* Implements the la_val_print routine for language D. */ +int +d_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, + CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options) +{ + int ret; + + CHECK_TYPEDEF (type); + switch (TYPE_CODE (type)) + { + case TYPE_CODE_STRUCT: + ret = dynamic_array_type (type, valaddr, embedded_offset, address, + stream, recurse, val, options); + if (ret != -1) + break; + default: + ret = c_val_print (type, valaddr, embedded_offset, address, stream, + recurse, val, options); + } + + return ret; +} diff --git a/contrib/gdb-7/gdb/dbxread.c b/contrib/gdb-7/gdb/dbxread.c index 7cb016ddfe..25bf07b5af 100644 --- a/contrib/gdb-7/gdb/dbxread.c +++ b/contrib/gdb-7/gdb/dbxread.c @@ -1,6 +1,6 @@ /* Read dbx symbol tables and convert to internal format, for GDB. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008. + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010. Free Software Foundation, Inc. This file is part of GDB. @@ -55,6 +55,7 @@ #include "complaints.h" #include "cp-abi.h" #include "cp-support.h" +#include "psympriv.h" #include "gdb_assert.h" #include "gdb_string.h" @@ -489,6 +490,7 @@ record_minimal_symbol (char *name, CORE_ADDR address, int type, /* Same with virtual function tables, both global and static. */ { char *tempstring = name; + if (tempstring[0] == bfd_get_symbol_leading_char (objfile->obfd)) ++tempstring; if (is_vtable_name (tempstring)) @@ -520,13 +522,10 @@ record_minimal_symbol (char *name, CORE_ADDR address, int type, /* Scan and build partial symbols for a symbol file. We have been initialized by a call to dbx_symfile_init, which put all the relevant info into a "struct dbx_symfile_info", - hung off the objfile structure. - - MAINLINE is true if we are reading the main symbol - table (as opposed to a shared lib or dynamically loaded file). */ + hung off the objfile structure. */ static void -dbx_symfile_read (struct objfile *objfile, int mainline) +dbx_symfile_read (struct objfile *objfile, int symfile_flags) { bfd *sym_bfd; int val; @@ -556,10 +555,8 @@ dbx_symfile_read (struct objfile *objfile, int mainline) if (val < 0) perror_with_name (objfile->name); - /* If we are reinitializing, or if we have never loaded syms yet, init */ - if (mainline - || (objfile->global_psymbols.size == 0 - && objfile->static_psymbols.size == 0)) + /* Size the symbol table. */ + if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0) init_psymbol_list (objfile, DBX_SYMCOUNT (objfile)); symbol_size = DBX_SYMBOL_SIZE (objfile); @@ -814,6 +811,7 @@ fill_symbuf (bfd *sym_bfd) if (symbuf_left <= 0) { file_ptr filepos = symbuf_sections->section->filepos; + if (bfd_seek (sym_bfd, filepos, SEEK_SET) != 0) perror_with_name (bfd_get_filename (sym_bfd)); symbuf_left = bfd_section_size (sym_bfd, symbuf_sections->section); @@ -906,6 +904,7 @@ add_bincl_to_list (struct partial_symtab *pst, char *name, int instance) if (next_bincl >= bincl_list + bincls_allocated) { int offset = next_bincl - bincl_list; + bincls_allocated *= 2; bincl_list = (struct header_file_location *) xrealloc ((char *) bincl_list, @@ -965,8 +964,9 @@ set_namestring (struct objfile *objfile, const struct internal_nlist *nlist) { char *namestring; - if (((unsigned) nlist->n_strx + file_string_table_offset) - >= DBX_STRINGTAB_SIZE (objfile)) + if (nlist->n_strx + file_string_table_offset + >= DBX_STRINGTAB_SIZE (objfile) + || nlist->n_strx + file_string_table_offset < nlist->n_strx) { complaint (&symfile_complaints, _("bad string table offset in symbol %d"), symnum); @@ -1094,8 +1094,8 @@ read_dbx_dynamic_symtab (struct objfile *objfile) { arelent *rel = *relptr; CORE_ADDR address = - rel->address + ANOFFSET (objfile->section_offsets, - SECT_OFF_DATA (objfile)); + rel->address + ANOFFSET (objfile->section_offsets, + SECT_OFF_DATA (objfile)); switch (bfd_get_arch (abfd)) { @@ -1557,6 +1557,7 @@ read_dbx_symtab (struct objfile *objfile) case N_BINCL: { enum language tmp_language; + /* Add this bincl to the bincl_list for future EXCLs. No need to save the string; it'll be around until read_dbx_symtab function returns */ @@ -1593,8 +1594,8 @@ pos %d"), case N_SOL: { enum language tmp_language; - /* Mark down an include file in the current psymtab */ + /* Mark down an include file in the current psymtab */ namestring = set_namestring (objfile, &nlist); tmp_language = deduce_language_from_filename (namestring); @@ -1621,6 +1622,7 @@ pos %d"), continue; { int i; + for (i = 0; i < includes_used; i++) if (strcmp (namestring, psymtab_include_list[i]) == 0) { @@ -1691,6 +1693,7 @@ pos %d"), { char *new_name, *name = xmalloc (p - namestring + 1); memcpy (name, namestring, p - namestring); + name[p - namestring] = '\0'; new_name = cp_canonicalize_string (name); if (new_name != NULL) @@ -1726,7 +1729,7 @@ pos %d"), namestring = gdbarch_static_transform_name (gdbarch, namestring); - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_STATIC, &objfile->static_psymbols, 0, nlist.n_value, @@ -1738,7 +1741,7 @@ pos %d"), data_sect_index); /* The addresses in these entries are reported to be wrong. See the code that reads 'G's for symtabs. */ - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_STATIC, &objfile->global_psymbols, 0, nlist.n_value, @@ -1756,7 +1759,7 @@ pos %d"), || (p == namestring + 1 && namestring[0] != ' ')) { - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, STRUCT_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, nlist.n_value, 0, @@ -1764,7 +1767,7 @@ pos %d"), if (p[2] == 't') { /* Also a typedef with the same name. */ - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, nlist.n_value, 0, @@ -1777,7 +1780,7 @@ pos %d"), case 't': if (p != namestring) /* a name is there, not just :T... */ { - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, nlist.n_value, 0, @@ -1839,7 +1842,7 @@ pos %d"), ; /* Note that the value doesn't matter for enum constants in psymtabs, just in symtabs. */ - add_psymbol_to_list (p, q - p, + add_psymbol_to_list (p, q - p, 1, VAR_DOMAIN, LOC_CONST, &objfile->static_psymbols, 0, 0, psymtab_language, objfile); @@ -1857,7 +1860,7 @@ pos %d"), case 'c': /* Constant, e.g. from "const" in Pascal. */ - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_CONST, &objfile->static_psymbols, nlist.n_value, 0, psymtab_language, objfile); @@ -1868,6 +1871,7 @@ pos %d"), { int name_len = p - namestring; char *name = xmalloc (name_len + 1); + memcpy (name, namestring, name_len); name[name_len] = '\0'; function_outside_compilation_unit_complaint (name); @@ -1887,6 +1891,7 @@ pos %d"), find_stab_function_addr (namestring, pst ? pst->filename : NULL, objfile); + /* find_stab_function_addr will return 0 if the minimal symbol wasn't found. (Unfortunately, this might also be a valid address.) Anyway, if it *does* return 0, @@ -1921,7 +1926,7 @@ pos %d"), pst->textlow = nlist.n_value; textlow_not_set = 0; } - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_BLOCK, &objfile->static_psymbols, 0, nlist.n_value, @@ -1936,6 +1941,7 @@ pos %d"), { int name_len = p - namestring; char *name = xmalloc (name_len + 1); + memcpy (name, namestring, name_len); name[name_len] = '\0'; function_outside_compilation_unit_complaint (name); @@ -1955,6 +1961,7 @@ pos %d"), find_stab_function_addr (namestring, pst ? pst->filename : NULL, objfile); + /* find_stab_function_addr will return 0 if the minimal symbol wasn't found. (Unfortunately, this might also be a valid address.) Anyway, if it *does* return 0, @@ -1989,7 +1996,7 @@ pos %d"), pst->textlow = nlist.n_value; textlow_not_set = 0; } - add_psymbol_to_list (sym_name, sym_len, + add_psymbol_to_list (sym_name, sym_len, 1, VAR_DOMAIN, LOC_BLOCK, &objfile->global_psymbols, 0, nlist.n_value, @@ -2077,6 +2084,7 @@ pos %d"), if (dependencies_used >= dependencies_allocated) { struct partial_symtab **orig = dependency_list; + dependency_list = (struct partial_symtab **) alloca ((dependencies_allocated *= 2) @@ -2189,11 +2197,11 @@ start_psymtab (struct objfile *objfile, char *filename, CORE_ADDR textlow, struct partial_symbol **static_syms) { struct partial_symtab *result = - start_psymtab_common (objfile, objfile->section_offsets, - filename, textlow, global_syms, static_syms); + start_psymtab_common (objfile, objfile->section_offsets, + filename, textlow, global_syms, static_syms); - result->read_symtab_private = (char *) - obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); + result->read_symtab_private = obstack_alloc (&objfile->objfile_obstack, + sizeof (struct symloc)); LDSYMOFF (result) = ldsymoff; result->read_symtab = dbx_psymtab_to_symtab; SYMBOL_SIZE (result) = symbol_size; @@ -2332,13 +2340,12 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes, for (i = 0; i < num_includes; i++) { struct partial_symtab *subpst = - allocate_psymtab (include_list[i], objfile); + allocate_psymtab (include_list[i], objfile); /* Copy the sesction_offsets array from the main psymtab. */ subpst->section_offsets = pst->section_offsets; subpst->read_symtab_private = - (char *) obstack_alloc (&objfile->objfile_obstack, - sizeof (struct symloc)); + obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); LDSYMOFF (subpst) = LDSYMLEN (subpst) = subpst->textlow = @@ -2364,11 +2371,6 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes, sort_pst_symbols (pst); - /* If there is already a psymtab or symtab for a file of this name, remove it. - (If there is a symtab, more drastic things also happen.) - This happens in VxWorks. */ - free_named_symtabs (pst->filename); - if (num_includes == 0 && number_dependencies == 0 && pst->n_global_syms == 0 @@ -2482,9 +2484,10 @@ Shouldn't happen.\n", if (DBX_STAB_SECTION (pst->objfile)) { stabs_data - = symfile_relocate_debug_section (pst->objfile->obfd, + = symfile_relocate_debug_section (pst->objfile, DBX_STAB_SECTION (pst->objfile), NULL); + if (stabs_data) back_to = make_cleanup (free_current_contents, (void *) &stabs_data); @@ -2667,8 +2670,7 @@ read_ofile_symtab (struct partial_symtab *pst) #endif } else if (type & N_EXT || type == (unsigned char) N_TEXT - || type == (unsigned char) N_NBTEXT - ) + || type == (unsigned char) N_NBTEXT) { /* Global symbol: see if we came across a dbx defintion for a corresponding symbol. If so, store the value. Remove @@ -2796,6 +2798,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name, if (sline_found_in_function) { CORE_ADDR addr = last_function_start + valu; + record_line (current_subfile, 0, gdbarch_addr_bits_remove (gdbarch, addr)); } @@ -3016,6 +3019,7 @@ no enclosing block")); { CORE_ADDR addr = processing_gcc_compilation == 2 ? last_function_start : valu; + record_line (current_subfile, desc, gdbarch_addr_bits_remove (gdbarch, addr)); sline_found_in_function = 1; @@ -3150,6 +3154,7 @@ no enclosing block")); { int deftype; char *colon_pos = strchr (name, ':'); + if (colon_pos == NULL) deftype = '\0'; else @@ -3319,8 +3324,6 @@ no enclosing block")); OBJFILE is the object file we are reading symbols from. ADDR is the address relative to which the symbols are (e.g. the base address of the text segment). - MAINLINE is true if we are reading the main symbol - table (as opposed to a shared lib or dynamically loaded file). TEXTADDR is the address of the text section. TEXTSIZE is the size of the text section. STABSECTS is the list of .stab sections in OBJFILE. @@ -3331,7 +3334,7 @@ no enclosing block")); adjusted for coff details. */ void -coffstab_build_psymtabs (struct objfile *objfile, int mainline, +coffstab_build_psymtabs (struct objfile *objfile, CORE_ADDR textaddr, unsigned int textsize, struct stab_section_list *stabsects, file_ptr stabstroffset, unsigned int stabstrsize) @@ -3414,8 +3417,6 @@ coffstab_build_psymtabs (struct objfile *objfile, int mainline, OBJFILE is the object file we are reading symbols from. ADDR is the address relative to which the symbols are (e.g. the base address of the text segment). - MAINLINE is true if we are reading the main symbol - table (as opposed to a shared lib or dynamically loaded file). STABSECT is the BFD section information for the .stab section. STABSTROFFSET and STABSTRSIZE define the location in OBJFILE where the .stabstr section exists. @@ -3424,8 +3425,7 @@ coffstab_build_psymtabs (struct objfile *objfile, int mainline, adjusted for elf details. */ void -elfstab_build_psymtabs (struct objfile *objfile, int mainline, - asection *stabsect, +elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect, file_ptr stabstroffset, unsigned int stabstrsize) { int val; @@ -3474,7 +3474,7 @@ elfstab_build_psymtabs (struct objfile *objfile, int mainline, symbuf_read = 0; symbuf_left = bfd_section_size (objfile->obfd, stabsect); - stabs_data = symfile_relocate_debug_section (objfile->obfd, stabsect, NULL); + stabs_data = symfile_relocate_debug_section (objfile, stabsect, NULL); if (stabs_data) back_to = make_cleanup (free_current_contents, (void *) &stabs_data); @@ -3500,15 +3500,13 @@ elfstab_build_psymtabs (struct objfile *objfile, int mainline, OBJFILE is the object file we are reading symbols from. ADDR is the address relative to which the symbols are (e.g. the base address of the text segment). - MAINLINE is true if we are reading the main symbol table (as opposed to a - shared lib or dynamically loaded file). STAB_NAME is the name of the section that contains the stabs. STABSTR_NAME is the name of the section that contains the stab strings. This routine is mostly copied from dbx_symfile_init and dbx_symfile_read. */ void -stabsect_build_psymtabs (struct objfile *objfile, int mainline, char *stab_name, +stabsect_build_psymtabs (struct objfile *objfile, char *stab_name, char *stabstr_name, char *text_name) { int val; @@ -3587,6 +3585,8 @@ static struct sym_fns aout_sym_fns = default_symfile_segments, /* sym_segments: Get segment information from a file. */ NULL, /* sym_read_linetable */ + default_symfile_relocate, /* sym_relocate: Relocate a debug section. */ + &psym_functions, NULL /* next: pointer to next struct sym_fns */ }; diff --git a/contrib/gdb-7/gdb/dcache.c b/contrib/gdb-7/gdb/dcache.c index 52375f092a..d684d74563 100644 --- a/contrib/gdb-7/gdb/dcache.c +++ b/contrib/gdb-7/gdb/dcache.c @@ -1,7 +1,7 @@ /* Caching code for GDB, the GNU debugger. Copyright (C) 1992, 1993, 1995, 1996, 1998, 1999, 2000, 2001, 2003, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -41,9 +41,9 @@ of data, such as when performing a backtrace. The cache is a splay tree along with a linked list for replacement. - Each block caches a LINE_SIZE area of memory. Wtihin each line we remember - the address of the line (which must be a multiple of LINE_SIZE) and the - actual data block. + Each block caches a LINE_SIZE area of memory. Within each line we + remember the address of the line (which must be a multiple of + LINE_SIZE) and the actual data block. Lines are only allocated as needed, so DCACHE_SIZE really specifies the *maximum* number of lines in the cache. @@ -88,7 +88,10 @@ struct dcache_block { - struct dcache_block *newer; /* for LRU and free list */ + /* for least-recently-allocated and free lists */ + struct dcache_block *prev; + struct dcache_block *next; + CORE_ADDR addr; /* address of data */ gdb_byte data[LINE_SIZE]; /* bytes at given address */ int refs; /* # hits */ @@ -97,9 +100,10 @@ struct dcache_block struct dcache_struct { splay_tree tree; - struct dcache_block *oldest; - struct dcache_block *newest; + struct dcache_block *oldest; /* least-recently-allocated list */ + /* The free list is maintained identically to OLDEST to simplify + the code: we only need one set of accessors. */ struct dcache_block *freelist; /* The number of in-use lines in the cache. */ @@ -109,9 +113,9 @@ struct dcache_struct ptid_t ptid; }; -static struct dcache_block *dcache_hit (DCACHE *dcache, CORE_ADDR addr); +typedef void (block_func) (struct dcache_block *block, void *param); -static int dcache_write_line (DCACHE *dcache, struct dcache_block *db); +static struct dcache_block *dcache_hit (DCACHE *dcache, CORE_ADDR addr); static int dcache_read_line (DCACHE *dcache, struct dcache_block *db); @@ -132,28 +136,98 @@ show_dcache_enabled_p (struct ui_file *file, int from_tty, static DCACHE *last_cache; /* Used by info dcache */ -/* Free all the data cache blocks, thus discarding all cached data. */ +/* Add BLOCK to circular block list BLIST, behind the block at *BLIST. + *BLIST is not updated (unless it was previously NULL of course). + This is for the least-recently-allocated list's sake: + BLIST points to the oldest block. + ??? This makes for poor cache usage of the free list, + but is it measurable? */ -void -dcache_invalidate (DCACHE *dcache) +static void +append_block (struct dcache_block **blist, struct dcache_block *block) { - struct dcache_block *block, *next; + if (*blist) + { + block->next = *blist; + block->prev = (*blist)->prev; + block->prev->next = block; + (*blist)->prev = block; + /* We don't update *BLIST here to maintain the invariant that for the + least-recently-allocated list *BLIST points to the oldest block. */ + } + else + { + block->next = block; + block->prev = block; + *blist = block; + } +} - block = dcache->oldest; +/* Remove BLOCK from circular block list BLIST. */ - while (block) +static void +remove_block (struct dcache_block **blist, struct dcache_block *block) +{ + if (block->next == block) + { + *blist = NULL; + } + else { - splay_tree_remove (dcache->tree, (splay_tree_key) block->addr); - next = block->newer; + block->next->prev = block->prev; + block->prev->next = block->next; + /* If we removed the block *BLIST points to, shift it to the next block + to maintain the invariant that for the least-recently-allocated list + *BLIST points to the oldest block. */ + if (*blist == block) + *blist = block->next; + } +} + +/* Iterate over all elements in BLIST, calling FUNC. + PARAM is passed to FUNC. + FUNC may remove the block it's passed, but only that block. */ - block->newer = dcache->freelist; - dcache->freelist = block; +static void +for_each_block (struct dcache_block **blist, block_func *func, void *param) +{ + struct dcache_block *db; + + if (*blist == NULL) + return; + + db = *blist; + do + { + struct dcache_block *next = db->next; - block = next; + func (db, param); + db = next; } + while (*blist && db != *blist); +} + +/* BLOCK_FUNC function for dcache_invalidate. + This doesn't remove the block from the oldest list on purpose. + dcache_invalidate will do it later. */ + +static void +invalidate_block (struct dcache_block *block, void *param) +{ + DCACHE *dcache = (DCACHE *) param; + + splay_tree_remove (dcache->tree, (splay_tree_key) block->addr); + append_block (&dcache->freelist, block); +} + +/* Free all the data cache blocks, thus discarding all cached data. */ + +void +dcache_invalidate (DCACHE *dcache) +{ + for_each_block (&dcache->oldest, invalidate_block, dcache); dcache->oldest = NULL; - dcache->newest = NULL; dcache->size = 0; dcache->ptid = null_ptid; } @@ -168,14 +242,14 @@ dcache_invalidate_line (DCACHE *dcache, CORE_ADDR addr) if (db) { splay_tree_remove (dcache->tree, (splay_tree_key) db->addr); - db->newer = dcache->freelist; - dcache->freelist = db; + remove_block (&dcache->oldest, db); + append_block (&dcache->freelist, db); --dcache->size; } } /* If addr is present in the dcache, return the address of the block - containing it. */ + containing it. Otherwise return NULL. */ static struct dcache_block * dcache_hit (DCACHE *dcache, CORE_ADDR addr) @@ -193,7 +267,9 @@ dcache_hit (DCACHE *dcache, CORE_ADDR addr) return db; } -/* Fill a cache line from target memory. */ +/* Fill a cache line from target memory. + The result is 1 for success, 0 if the (entire) cache line + wasn't readable. */ static int dcache_read_line (DCACHE *dcache, struct dcache_block *db) @@ -251,9 +327,9 @@ dcache_alloc (DCACHE *dcache, CORE_ADDR addr) if (dcache->size >= DCACHE_SIZE) { - /* Evict the least recently used line. */ + /* Evict the least recently allocated line. */ db = dcache->oldest; - dcache->oldest = db->newer; + remove_block (&dcache->oldest, db); splay_tree_remove (dcache->tree, (splay_tree_key) db->addr); } @@ -261,7 +337,7 @@ dcache_alloc (DCACHE *dcache, CORE_ADDR addr) { db = dcache->freelist; if (db) - dcache->freelist = db->newer; + remove_block (&dcache->freelist, db); else db = xmalloc (sizeof (struct dcache_block)); @@ -269,16 +345,10 @@ dcache_alloc (DCACHE *dcache, CORE_ADDR addr) } db->addr = MASK (addr); - db->newer = NULL; db->refs = 0; - if (dcache->newest) - dcache->newest->newer = db; - - dcache->newest = db; - - if (!dcache->oldest) - dcache->oldest = db; + /* Put DB at the end of the list, it's the newest. */ + append_block (&dcache->oldest, db); splay_tree_insert (dcache->tree, (splay_tree_key) db->addr, (splay_tree_value) db); @@ -286,7 +356,7 @@ dcache_alloc (DCACHE *dcache, CORE_ADDR addr) return db; } -/* Using the data cache DCACHE return the contents of the byte at +/* Using the data cache DCACHE, store in *PTR the contents of the byte at address ADDR in the remote machine. Returns 1 for success, 0 for error. */ @@ -341,13 +411,12 @@ dcache_splay_tree_compare (splay_tree_key a, splay_tree_key b) return -1; } -/* Initialize the data cache. */ +/* Allocate and initialize a data cache. */ DCACHE * dcache_init (void) { DCACHE *dcache; - int i; dcache = (DCACHE *) xmalloc (sizeof (*dcache)); @@ -356,7 +425,6 @@ dcache_init (void) NULL); dcache->oldest = NULL; - dcache->newest = NULL; dcache->freelist = NULL; dcache->size = 0; dcache->ptid = null_ptid; @@ -365,22 +433,25 @@ dcache_init (void) return dcache; } +/* BLOCK_FUNC routine for dcache_free. */ + +static void +free_block (struct dcache_block *block, void *param) +{ + free (block); +} + /* Free a data cache. */ void dcache_free (DCACHE *dcache) { - struct dcache_block *db, *next; - if (last_cache == dcache) last_cache = NULL; splay_tree_delete (dcache->tree); - for (db = dcache->freelist; db != NULL; db = next) - { - next = db->newer; - xfree (db); - } + for_each_block (&dcache->oldest, free_block, NULL); + for_each_block (&dcache->freelist, free_block, NULL); xfree (dcache); } @@ -388,7 +459,11 @@ dcache_free (DCACHE *dcache) to or from debugger address MYADDR. Write to inferior if SHOULD_WRITE is nonzero. - The meaning of the result is the same as for target_write. */ + Return the number of bytes actually transfered, or -1 if the + transfer is not supported or otherwise fails. Return of a non-negative + value less than LEN indicates that no further transfer is possible. + NOTE: This is different than the to_xfer_partial interface, in which + positive values less than LEN mean further transfers may be possible. */ int dcache_xfer_memory (struct target_ops *ops, DCACHE *dcache, @@ -398,6 +473,7 @@ dcache_xfer_memory (struct target_ops *ops, DCACHE *dcache, int i; int res; int (*xfunc) (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr); + xfunc = should_write ? dcache_poke_byte : dcache_peek_byte; /* If this is a different inferior from what we've recorded, @@ -457,6 +533,7 @@ void dcache_update (DCACHE *dcache, CORE_ADDR memaddr, gdb_byte *myaddr, int len) { int i; + for (i = 0; i < len; i++) dcache_poke_byte (dcache, memaddr + i, myaddr + i); } @@ -509,11 +586,12 @@ static void dcache_info (char *exp, int tty) { splay_tree_node n; - int i, refcount, lineno; + int i, refcount; if (exp) { char *linestart; + i = strtol (exp, &linestart, 10); if (linestart == exp || i < 0) { diff --git a/contrib/gdb-7/gdb/dcache.h b/contrib/gdb-7/gdb/dcache.h index a141b85a57..c8825f16b6 100644 --- a/contrib/gdb-7/gdb/dcache.h +++ b/contrib/gdb-7/gdb/dcache.h @@ -1,7 +1,7 @@ /* Declarations for caching. Typically used by remote back ends for caching remote memory. - Copyright (C) 1992, 1993, 1995, 1999, 2000, 2001, 2007, 2008, 2009 + Copyright (C) 1992, 1993, 1995, 1999, 2000, 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/defs.h b/contrib/gdb-7/gdb/defs.h index 94674dc341..266c009c52 100644 --- a/contrib/gdb-7/gdb/defs.h +++ b/contrib/gdb-7/gdb/defs.h @@ -1,8 +1,9 @@ -/* *INDENT-OFF* */ /* ATTR_FORMAT confuses indent, avoid running it for now */ +/* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it + for now. */ /* Basic, host-specific, and target-specific definitions for GDB. Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -156,6 +157,10 @@ extern char *gdb_sysroot; /* GDB datadir, used to store data files. */ extern char *gdb_datadir; +/* If non-NULL, the possibly relocated path to python's "lib" directory + specified with --with-python. */ +extern char *python_libdir; + /* Search path for separate debug files. */ extern char *debug_file_directory; @@ -188,6 +193,7 @@ enum language language_auto, /* Placeholder for automatic setting */ language_c, /* C */ language_cplus, /* C++ */ + language_d, /* D */ language_objc, /* Objective-C */ language_java, /* Java */ language_fortran, /* Fortran */ @@ -265,44 +271,6 @@ struct cleanup void *arg; }; - -/* The ability to declare that a function never returns is useful, but - not really required to compile GDB successfully, so the NORETURN and - ATTR_NORETURN macros normally expand into nothing. */ - -/* If compiling with older versions of GCC, a function may be declared - "volatile" to indicate that it does not return. */ - -#ifndef NORETURN -#if defined(__GNUC__) \ - && (__GNUC__ == 1 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)) -#define NORETURN volatile -#else -#define NORETURN /* nothing */ -#endif -#endif - -/* GCC 2.5 and later versions define a function attribute "noreturn", - which is the preferred way to declare that a function never returns. - However GCC 2.7 appears to be the first version in which this fully - works everywhere we use it. */ - -#ifndef ATTR_NORETURN -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) -#define ATTR_NORETURN __attribute__ ((noreturn)) -#else -#define ATTR_NORETURN /* nothing */ -#endif -#endif - -#ifndef ATTR_FORMAT -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4)) -#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y))) -#else -#define ATTR_FORMAT(type, x, y) /* nothing */ -#endif -#endif - /* Be conservative and use enum bitfields only with GCC. This is copied from gcc 3.3.1, system.h. */ @@ -312,6 +280,10 @@ struct cleanup #define ENUM_BITFIELD(TYPE) unsigned int #endif +/* vec.h-style vectors of strings want a typedef for char * . */ + +typedef char * char_ptr; + /* Needed for various prototypes */ struct symtab; @@ -335,6 +307,10 @@ extern int subset_compare (char *, char *); extern char *safe_strerror (int); +extern void set_display_time (int); + +extern void set_display_space (int); + #define ALL_CLEANUPS ((struct cleanup *)0) extern void do_cleanups (struct cleanup *); @@ -375,6 +351,10 @@ struct obstack; extern struct cleanup *make_cleanup_obstack_free (struct obstack *obstack); extern struct cleanup *make_cleanup_restore_integer (int *variable); +extern struct cleanup *make_cleanup_restore_uinteger (unsigned int *variable); + +extern struct cleanup * + make_cleanup_restore_ui_file (struct ui_file **variable); extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *); @@ -397,14 +377,20 @@ extern void free_current_contents (void *); extern void null_cleanup (void *); +extern struct cleanup *make_command_stats_cleanup (int); + extern int myread (int, char *, int); -extern int query (const char *, ...) ATTR_FORMAT (printf, 1, 2); -extern int nquery (const char *, ...) ATTR_FORMAT (printf, 1, 2); -extern int yquery (const char *, ...) ATTR_FORMAT (printf, 1, 2); +extern int query (const char *, ...) ATTRIBUTE_PRINTF (1, 2); +extern int nquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2); +extern int yquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2); extern void init_page_info (void); +extern struct cleanup *make_cleanup_restore_page_info (void); +extern struct cleanup * + set_batch_flag_and_make_cleanup_restore_page_info (void); + extern char *gdb_realpath (const char *); extern char *xfullpath (const char *); @@ -417,6 +403,17 @@ char *ldirname (const char *filename); char **gdb_buildargv (const char *); +int compare_positive_ints (const void *ap, const void *bp); + +/* A wrapper for bfd_errmsg to produce a more helpful error message + in the case of bfd_error_file_ambiguously recognized. + MATCHING, if non-NULL, is the corresponding argument to + bfd_check_format_matches, and will be freed. */ + +extern const char *gdb_bfd_errmsg (bfd_error_type error_tag, char **matching); + +extern int parse_pid_to_attach (char *args); + /* From demangle.c */ extern void set_demangling_style (char *); @@ -476,25 +473,25 @@ extern void puts_filtered_tabular (char *string, int width, int right); extern void puts_debug (char *prefix, char *string, char *suffix); -extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0); +extern void vprintf_filtered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0); -extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0); +extern void vfprintf_filtered (struct ui_file *, const char *, va_list) ATTRIBUTE_PRINTF (2, 0); -extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3); +extern void fprintf_filtered (struct ui_file *, const char *, ...) ATTRIBUTE_PRINTF (2, 3); -extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 3, 4); +extern void fprintfi_filtered (int, struct ui_file *, const char *, ...) ATTRIBUTE_PRINTF (3, 4); -extern void printf_filtered (const char *, ...) ATTR_FORMAT (printf, 1, 2); +extern void printf_filtered (const char *, ...) ATTRIBUTE_PRINTF (1, 2); -extern void printfi_filtered (int, const char *, ...) ATTR_FORMAT (printf, 2, 3); +extern void printfi_filtered (int, const char *, ...) ATTRIBUTE_PRINTF (2, 3); -extern void vprintf_unfiltered (const char *, va_list) ATTR_FORMAT (printf, 1, 0); +extern void vprintf_unfiltered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0); -extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTR_FORMAT (printf, 2, 0); +extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list) ATTRIBUTE_PRINTF (2, 0); -extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTR_FORMAT (printf, 2, 3); +extern void fprintf_unfiltered (struct ui_file *, const char *, ...) ATTRIBUTE_PRINTF (2, 3); -extern void printf_unfiltered (const char *, ...) ATTR_FORMAT (printf, 1, 2); +extern void printf_unfiltered (const char *, ...) ATTRIBUTE_PRINTF (1, 2); extern void print_spaces (int, struct ui_file *); @@ -543,7 +540,7 @@ extern char *hex_string_custom (LONGEST, int); extern void fprintf_symbol_filtered (struct ui_file *, char *, enum language, int); -extern NORETURN void perror_with_name (const char *) ATTR_NORETURN; +extern void perror_with_name (const char *) ATTRIBUTE_NORETURN; extern void print_sys_errmsg (const char *, int); @@ -596,10 +593,11 @@ extern int info_verbose; extern void set_next_address (struct gdbarch *, CORE_ADDR); -extern void print_address_symbolic (CORE_ADDR, struct ui_file *, int, - char *); +extern void print_address_symbolic (struct gdbarch *, CORE_ADDR, + struct ui_file *, int, char *); -extern int build_address_symbolic (CORE_ADDR addr, +extern int build_address_symbolic (struct gdbarch *, + CORE_ADDR addr, int do_demangle, char **name, int *offset, @@ -608,6 +606,7 @@ extern int build_address_symbolic (CORE_ADDR addr, int *unmapped); extern void print_address (struct gdbarch *, CORE_ADDR, struct ui_file *); +extern const char *pc_prefix (CORE_ADDR); /* From source.c */ @@ -678,6 +677,7 @@ enum command_control_type if_control, commands_control, python_control, + while_stepping_control, invalid_control }; @@ -689,12 +689,21 @@ struct command_line struct command_line *next; char *line; enum command_control_type control_type; + /* The number of elements in body_list. */ int body_count; + /* For composite commands, the nested lists of + commands. For example, for "if" command this + will contain the then branch and the else + branch, if that is available. */ struct command_line **body_list; }; -extern struct command_line *read_command_lines (char *, int, int); -extern struct command_line *read_command_lines_1 (char * (*) (), int); +extern struct command_line *read_command_lines (char *, int, int, + void (*)(char *, void *), + void *); +extern struct command_line *read_command_lines_1 (char * (*) (void), int, + void (*)(char *, void *), + void *); extern void free_command_lines (struct command_line **); @@ -872,21 +881,21 @@ extern void *xzalloc (size_t); /* Like asprintf/vasprintf but get an internal_error if the call fails. */ -extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3); +extern void xasprintf (char **ret, const char *format, ...) ATTRIBUTE_PRINTF (2, 3); extern void xvasprintf (char **ret, const char *format, va_list ap) - ATTR_FORMAT (printf, 2, 0); + ATTRIBUTE_PRINTF (2, 0); /* Like asprintf and vasprintf, but return the string, throw an error if no memory. */ -extern char *xstrprintf (const char *format, ...) ATTR_FORMAT (printf, 1, 2); +extern char *xstrprintf (const char *format, ...) ATTRIBUTE_PRINTF (1, 2); extern char *xstrvprintf (const char *format, va_list ap) - ATTR_FORMAT (printf, 1, 0); + ATTRIBUTE_PRINTF (1, 0); /* Like snprintf, but throw an error if the output buffer is too small. */ extern int xsnprintf (char *str, size_t size, const char *format, ...) - ATTR_FORMAT (printf, 3, 4); + ATTRIBUTE_PRINTF (3, 4); -extern int parse_escape (char **); +extern int parse_escape (struct gdbarch *, char **); /* Message to be printed before the error message, when an error occurs. */ @@ -900,37 +909,39 @@ extern char *quit_pre_print; extern char *warning_pre_print; -extern NORETURN void verror (const char *fmt, va_list ap) - ATTR_NORETURN ATTR_FORMAT (printf, 1, 0); +extern void verror (const char *fmt, va_list ap) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0); -extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2); +extern void error (const char *fmt, ...) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2); -extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN; +extern void error_stream (struct ui_file *) ATTRIBUTE_NORETURN; -extern NORETURN void vfatal (const char *fmt, va_list ap) - ATTR_NORETURN ATTR_FORMAT (printf, 1, 0); +extern void vfatal (const char *fmt, va_list ap) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0); -extern NORETURN void fatal (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2); +extern void fatal (const char *fmt, ...) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2); -extern NORETURN void internal_verror (const char *file, int line, - const char *, va_list ap) - ATTR_NORETURN ATTR_FORMAT (printf, 3, 0); +extern void internal_verror (const char *file, int line, const char *, + va_list ap) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0); -extern NORETURN void internal_error (const char *file, int line, - const char *, ...) ATTR_NORETURN ATTR_FORMAT (printf, 3, 4); +extern void internal_error (const char *file, int line, const char *, ...) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 4); extern void internal_vwarning (const char *file, int line, const char *, va_list ap) - ATTR_FORMAT (printf, 3, 0); + ATTRIBUTE_PRINTF (3, 0); extern void internal_warning (const char *file, int line, - const char *, ...) ATTR_FORMAT (printf, 3, 4); + const char *, ...) ATTRIBUTE_PRINTF (3, 4); -extern NORETURN void nomem (long) ATTR_NORETURN; +extern void nomem (long) ATTRIBUTE_NORETURN; -extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2); +extern void warning (const char *, ...) ATTRIBUTE_PRINTF (1, 2); -extern void vwarning (const char *, va_list args) ATTR_FORMAT (printf, 1, 0); +extern void vwarning (const char *, va_list args) ATTRIBUTE_PRINTF (1, 0); /* List of known OS ABIs. If you change this, make sure to update the table in osabi.c. */ @@ -956,13 +967,12 @@ enum gdb_osabi GDB_OSABI_INTERIX, GDB_OSABI_HPUX_ELF, GDB_OSABI_HPUX_SOM, - GDB_OSABI_QNXNTO, - GDB_OSABI_CYGWIN, GDB_OSABI_AIX, GDB_OSABI_DICOS, GDB_OSABI_DARWIN, + GDB_OSABI_SYMBIAN, GDB_OSABI_INVALID /* keep this last */ }; @@ -1019,7 +1029,7 @@ extern void *alloca (); /* Maximum size of a register. Something small, but large enough for all known ISAs. If it turns out to be too small, make it bigger. */ -enum { MAX_REGISTER_SIZE = 16 }; +enum { MAX_REGISTER_SIZE = 32 }; /* Static target-system-dependent parameters for GDB. */ @@ -1107,7 +1117,6 @@ extern void (*deprecated_readline_begin_hook) (char *, ...) extern char *(*deprecated_readline_hook) (char *); extern void (*deprecated_readline_end_hook) (void); extern void (*deprecated_register_changed_hook) (int regno); -extern void (*deprecated_memory_changed_hook) (CORE_ADDR addr, int len); extern void (*deprecated_context_hook) (int); extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid, struct target_waitstatus *status, @@ -1130,9 +1139,9 @@ extern int (*deprecated_ui_load_progress_hook) (const char *section, extern int use_windows; -/* Symbolic definitions of filename-related things. */ -/* FIXME, this doesn't work very well if host and executable - filesystems conventions are different. */ +/* Definitions of filename-related things. */ + +/* Host specific things. */ #ifdef __MSDOS__ # define CANT_FORK @@ -1218,4 +1227,9 @@ extern ULONGEST align_down (ULONGEST v, int n); void *hashtab_obstack_allocate (void *data, size_t size, size_t count); void dummy_obstack_deallocate (void *object, void *data); +/* From progspace.c */ + +extern void initialize_progspace (void); +extern void initialize_inferiors (void); + #endif /* #ifndef DEFS_H */ diff --git a/contrib/gdb-7/gdb/demangle.c b/contrib/gdb-7/gdb/demangle.c index b5ccf8719a..af306a5ea9 100644 --- a/contrib/gdb-7/gdb/demangle.c +++ b/contrib/gdb-7/gdb/demangle.c @@ -1,7 +1,7 @@ /* Basic C++ demangling support for GDB. Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, - 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Fred Fish at Cygnus Support. @@ -177,7 +177,6 @@ is_cplus_marker (int c) void _initialize_demangler (void) { - struct cmd_list_element *set, *show; int i, ndems; /* Fill the demangling_style_names[] array. */ diff --git a/contrib/gdb-7/gdb/dfp.c b/contrib/gdb-7/gdb/dfp.c index 4ee32bb3a6..42e21e09ad 100644 --- a/contrib/gdb-7/gdb/dfp.c +++ b/contrib/gdb-7/gdb/dfp.c @@ -1,6 +1,6 @@ /* Decimal floating point support for GDB. - Copyright 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/dfp.h b/contrib/gdb-7/gdb/dfp.h index 4ac7e307a2..c798956987 100644 --- a/contrib/gdb-7/gdb/dfp.h +++ b/contrib/gdb-7/gdb/dfp.h @@ -1,6 +1,6 @@ /* Decimal floating point support for GDB. - Copyright 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/dictionary.c b/contrib/gdb-7/gdb/dictionary.c index 05a2021a44..e1c2010bc1 100644 --- a/contrib/gdb-7/gdb/dictionary.c +++ b/contrib/gdb-7/gdb/dictionary.c @@ -1,6 +1,6 @@ /* Routines for name->symbol lookups in GDB. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by David Carlton and by Kealia, Inc. @@ -578,7 +578,6 @@ iterator_first_hashed (const struct dictionary *dict, static struct symbol * iterator_next_hashed (struct dict_iterator *iterator) { - const struct dictionary *dict = DICT_ITERATOR_DICT (iterator); struct symbol *next; next = DICT_ITERATOR_CURRENT (iterator)->hash_next; @@ -725,21 +724,24 @@ expand_hashtable (struct dictionary *dict) DICT_HASHED_NBUCKETS (dict) = new_nbuckets; DICT_HASHED_BUCKETS (dict) = new_buckets; - for (i = 0; i < old_nbuckets; ++i) { - struct symbol *sym, *next_sym; - - sym = old_buckets[i]; - if (sym != NULL) { - for (next_sym = sym->hash_next; - next_sym != NULL; - next_sym = sym->hash_next) { - insert_symbol_hashed (dict, sym); - sym = next_sym; - } + for (i = 0; i < old_nbuckets; ++i) + { + struct symbol *sym, *next_sym; - insert_symbol_hashed (dict, sym); + sym = old_buckets[i]; + if (sym != NULL) + { + for (next_sym = sym->hash_next; + next_sym != NULL; + next_sym = sym->hash_next) + { + insert_symbol_hashed (dict, sym); + sym = next_sym; + } + + insert_symbol_hashed (dict, sym); + } } - } xfree (old_buckets); } @@ -822,13 +824,14 @@ add_symbol_linear_expandable (struct dictionary *dict, int nsyms = ++DICT_LINEAR_NSYMS (dict); /* Do we have enough room? If not, grow it. */ - if (nsyms > DICT_LINEAR_EXPANDABLE_CAPACITY (dict)) { - DICT_LINEAR_EXPANDABLE_CAPACITY (dict) *= 2; - DICT_LINEAR_SYMS (dict) - = xrealloc (DICT_LINEAR_SYMS (dict), - DICT_LINEAR_EXPANDABLE_CAPACITY (dict) - * sizeof (struct symbol *)); - } + if (nsyms > DICT_LINEAR_EXPANDABLE_CAPACITY (dict)) + { + DICT_LINEAR_EXPANDABLE_CAPACITY (dict) *= 2; + DICT_LINEAR_SYMS (dict) + = xrealloc (DICT_LINEAR_SYMS (dict), + DICT_LINEAR_EXPANDABLE_CAPACITY (dict) + * sizeof (struct symbol *)); + } DICT_LINEAR_SYM (dict, nsyms - 1) = sym; } diff --git a/contrib/gdb-7/gdb/dictionary.h b/contrib/gdb-7/gdb/dictionary.h index fa0c2f2bed..2242a791a1 100644 --- a/contrib/gdb-7/gdb/dictionary.h +++ b/contrib/gdb-7/gdb/dictionary.h @@ -1,6 +1,6 @@ /* Routines for name->symbol lookups in GDB. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by David Carlton and by Kealia, Inc. @@ -116,7 +116,7 @@ extern struct symbol *dict_iterator_first (const struct dictionary *dict, extern struct symbol *dict_iterator_next (struct dict_iterator *iterator); /* Initialize ITERATOR to point at the first symbol in DICT whose - SYMBOL_BEST_NAME is NAME (as tested using strcmp_iw), and return + SYMBOL_SEARCH_NAME is NAME (as tested using strcmp_iw), and return that first symbol, or NULL if there are no such symbols. */ extern struct symbol *dict_iter_name_first (const struct dictionary *dict, @@ -124,7 +124,7 @@ extern struct symbol *dict_iter_name_first (const struct dictionary *dict, struct dict_iterator *iterator); /* Advance ITERATOR to point at the next symbol in DICT whose - SYMBOL_BEST_NAME is NAME (as tested using strcmp_iw), or NULL if + SYMBOL_SEARCH_NAME is NAME (as tested using strcmp_iw), or NULL if there are no more such symbols. Don't call this if you've previously received NULL from dict_iterator_first or dict_iterator_next on this iteration. And don't call it unless diff --git a/contrib/gdb-7/gdb/disasm.c b/contrib/gdb-7/gdb/disasm.c index 6a1a31663c..c51f0bf5cc 100644 --- a/contrib/gdb-7/gdb/disasm.c +++ b/contrib/gdb-7/gdb/disasm.c @@ -1,6 +1,6 @@ /* Disassemble support for GDB. - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -64,6 +64,7 @@ static void dis_asm_print_address (bfd_vma addr, struct disassemble_info *info) { struct gdbarch *gdbarch = info->application_data; + print_address (gdbarch, addr, info->stream); } @@ -113,15 +114,17 @@ dump_insns (struct gdbarch *gdbarch, struct ui_out *uiout, num_displayed++; } ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); + ui_out_text (uiout, pc_prefix (pc)); ui_out_field_core_addr (uiout, "address", gdbarch, pc); - if (!build_address_symbolic (pc, 0, &name, &offset, &filename, + if (!build_address_symbolic (gdbarch, pc, 0, &name, &offset, &filename, &line, &unmapped)) { /* We don't care now about line, filename and unmapped. But we might in the future. */ ui_out_text (uiout, " <"); - ui_out_field_string (uiout, "func-name", name); + if ((flags & DISASSEMBLY_OMIT_FNAME) == 0) + ui_out_field_string (uiout, "func-name", name); ui_out_text (uiout, "+"); ui_out_field_int (uiout, "offset", offset); ui_out_text (uiout, ">:\t"); @@ -140,6 +143,7 @@ dump_insns (struct gdbarch *gdbarch, struct ui_out *uiout, CORE_ADDR old_pc = pc; bfd_byte data; int status; + pc += gdbarch_print_insn (gdbarch, pc, di); for (;old_pc < pc; old_pc++) { @@ -178,7 +182,6 @@ do_mixed_source_and_assembly (struct gdbarch *gdbarch, struct ui_out *uiout, int i; int out_of_order = 0; int next_line = 0; - CORE_ADDR pc; int num_displayed = 0; struct cleanup *ui_out_chain; struct cleanup *ui_out_tuple_chain = make_cleanup (null_cleanup, 0); @@ -333,10 +336,11 @@ do_assembly_only (struct gdbarch *gdbarch, struct ui_out *uiout, /* Initialize the disassemble info struct ready for the specified stream. */ -static int ATTR_FORMAT (printf, 2, 3) +static int ATTRIBUTE_PRINTF (2, 3) fprintf_disasm (void *stream, const char *format, ...) { va_list args; + va_start (args, format); vfprintf_filtered (stream, format, args); va_end (args); @@ -348,6 +352,7 @@ static struct disassemble_info gdb_disassemble_info (struct gdbarch *gdbarch, struct ui_file *file) { struct disassemble_info di; + init_disassemble_info (&di, file, fprintf_disasm); di.flavour = bfd_target_unknown_flavour; di.memory_error_func = dis_asm_memory_error; @@ -372,9 +377,8 @@ gdb_disassemble_info (struct gdbarch *gdbarch, struct ui_file *file) void gdb_disassembly (struct gdbarch *gdbarch, struct ui_out *uiout, - char *file_string, - int flags, - int how_many, CORE_ADDR low, CORE_ADDR high) + char *file_string, int flags, int how_many, + CORE_ADDR low, CORE_ADDR high) { struct ui_stream *stb = ui_out_stream_new (uiout); struct cleanup *cleanups = make_cleanup_ui_out_stream_delete (stb); @@ -428,3 +432,76 @@ gdb_print_insn (struct gdbarch *gdbarch, CORE_ADDR memaddr, } return length; } + +static void +do_ui_file_delete (void *arg) +{ + ui_file_delete (arg); +} + +/* Return the length in bytes of the instruction at address MEMADDR in + debugged memory. */ + +int +gdb_insn_length (struct gdbarch *gdbarch, CORE_ADDR addr) +{ + static struct ui_file *null_stream = NULL; + + /* Dummy file descriptor for the disassembler. */ + if (!null_stream) + { + null_stream = ui_file_new (); + make_final_cleanup (do_ui_file_delete, null_stream); + } + + return gdb_print_insn (gdbarch, addr, null_stream, NULL); +} + +/* fprintf-function for gdb_buffered_insn_length. This function is a + nop, we don't want to print anything, we just want to compute the + length of the insn. */ + +static int ATTRIBUTE_PRINTF (2, 3) +gdb_buffered_insn_length_fprintf (void *stream, const char *format, ...) +{ + return 0; +} + +/* Initialize a struct disassemble_info for gdb_buffered_insn_length. */ + +static void +gdb_buffered_insn_length_init_dis (struct gdbarch *gdbarch, + struct disassemble_info *di, + const gdb_byte *insn, int max_len, + CORE_ADDR addr) +{ + init_disassemble_info (di, NULL, gdb_buffered_insn_length_fprintf); + + /* init_disassemble_info installs buffer_read_memory, etc. + so we don't need to do that here. + The cast is necessary until disassemble_info is const-ified. */ + di->buffer = (gdb_byte *) insn; + di->buffer_length = max_len; + di->buffer_vma = addr; + + di->arch = gdbarch_bfd_arch_info (gdbarch)->arch; + di->mach = gdbarch_bfd_arch_info (gdbarch)->mach; + di->endian = gdbarch_byte_order (gdbarch); + di->endian_code = gdbarch_byte_order_for_code (gdbarch); + + disassemble_init_for_target (di); +} + +/* Return the length in bytes of INSN. MAX_LEN is the size of the + buffer containing INSN. */ + +int +gdb_buffered_insn_length (struct gdbarch *gdbarch, + const gdb_byte *insn, int max_len, CORE_ADDR addr) +{ + struct disassemble_info di; + + gdb_buffered_insn_length_init_dis (gdbarch, &di, insn, max_len, addr); + + return gdbarch_print_insn (gdbarch, addr, &di); +} diff --git a/contrib/gdb-7/gdb/disasm.h b/contrib/gdb-7/gdb/disasm.h index a6f6d396d2..e308985992 100644 --- a/contrib/gdb-7/gdb/disasm.h +++ b/contrib/gdb-7/gdb/disasm.h @@ -1,5 +1,5 @@ /* Disassemble support for GDB. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -21,14 +21,14 @@ #define DISASSEMBLY_SOURCE (0x1 << 0) #define DISASSEMBLY_RAW_INSN (0x1 << 1) +#define DISASSEMBLY_OMIT_FNAME (0x1 << 2) struct ui_out; struct ui_file; extern void gdb_disassembly (struct gdbarch *gdbarch, struct ui_out *uiout, - char *file_string, - int mixed_source_and_assembly, - int how_many, CORE_ADDR low, CORE_ADDR high); + char *file_string, int flags, int how_many, + CORE_ADDR low, CORE_ADDR high); /* Print the instruction at address MEMADDR in debugged memory, on STREAM. Returns the length of the instruction, in bytes, @@ -37,4 +37,16 @@ extern void gdb_disassembly (struct gdbarch *gdbarch, struct ui_out *uiout, extern int gdb_print_insn (struct gdbarch *gdbarch, CORE_ADDR memaddr, struct ui_file *stream, int *branch_delay_insns); +/* Return the length in bytes of the instruction at address MEMADDR in + debugged memory. */ + +extern int gdb_insn_length (struct gdbarch *gdbarch, CORE_ADDR memaddr); + +/* Return the length in bytes of INSN, originally at MEMADDR. MAX_LEN + is the size of the buffer containing INSN. */ + +extern int gdb_buffered_insn_length (struct gdbarch *gdbarch, + const gdb_byte *insn, int max_len, + CORE_ADDR memaddr); + #endif diff --git a/contrib/gdb-7/gdb/doc/GDBvn.texi b/contrib/gdb-7/gdb/doc/GDBvn.texi index cfe18f801b..e67af2ec43 100644 --- a/contrib/gdb-7/gdb/doc/GDBvn.texi +++ b/contrib/gdb-7/gdb/doc/GDBvn.texi @@ -1,4 +1,4 @@ -@set GDBVN 7.0 +@set GDBVN 7.2 @set VERSION_PACKAGE (GDB) @set BUGURL @uref{http://www.gnu.org/software/gdb/bugs/} @set BUGURL_DEFAULT diff --git a/contrib/gdb-7/gdb/doc/Makefile.in b/contrib/gdb-7/gdb/doc/Makefile.in deleted file mode 100644 index b7f9af0ba8..0000000000 --- a/contrib/gdb-7/gdb/doc/Makefile.in +++ /dev/null @@ -1,548 +0,0 @@ -##Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2003, -##2007, 2008, 2009 Free Software Foundation, Inc. - -# Makefile for GDB documentation. -# This file is part of GDB. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 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, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -srcdir = @srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ - -infodir = @infodir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -pdfdir = @pdfdir@ -htmldir = @htmldir@ - -SHELL = @SHELL@ - -LN_S = @LN_S@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -mkinstalldirs = $(SHELL) $(srcdir)/../../mkinstalldirs - -# main GDB source directory -gdbdir = $(srcdir)/.. - -# where to find texinfo; GDB dist should include a recent one -TEXIDIR=${gdbdir}/../texinfo - -# where to find makeinfo, preferably one designed for texinfo-2 -MAKEINFO=makeinfo - -MAKEHTML = $(MAKEINFO) --html -MAKEHTMLFLAGS = - -# where to find texi2roff, ditto -TEXI2ROFF=texi2roff - -# where to find texi2dvi, ditto -TEXI2DVI=texi2dvi - -# Package version and bug-reporting URL. -PKGVERSION = @PKGVERSION@ -BUGURL_TEXI = @REPORT_BUGS_TEXI@ - -# Where is the source dir for the READLINE library doc? -# Traditionally readline is in .. or . -READLINE_DIR = ${gdbdir}/../readline/doc - -# The GDB/MI docs come from a sibling directory ../mi -GDBMI_DIR = ${gdbdir}/mi - -SET_TEXINPUTS = \ - TEXINPUTS=${TEXIDIR}:.:$(srcdir):$(READLINE_DIR):$(GDBMI_DIR):$$TEXINPUTS - -# Files which should be generated via 'info' and installed by 'install-info' -INFO_DEPS = gdb.info gdbint.info stabs.info annotate.info - -# Files which should be generated via 'pdf' and installed by 'install-pdf' -PDFFILES = gdb.pdf gdbint.pdf stabs.pdf refcard.pdf annotate.pdf -# Files which should be generated via 'html' and installed by 'install-html' -HTMLFILES = gdb/index.html gdbint/index.html stabs/index.html annotate/index.html -HTMLFILES_INSTALL = gdb gdbint stabs annotate - -# There may be alternate predefined collections of switches to configure -# the GDB manual. Normally this is not done in synch with the software -# config system, since this choice tends to be independent; most people -# want a doc config of `all' for a generic manual, regardless of sw config. -DOC_CONFIG = all - -# This list of sed edits will edit the GDB reference card -# for what fonts and what papersize to use. -# By default (NO edits applied), the refcard uses: -# - Computer Modern (CM) fonts -# - US letter paper (8.5x11in) -# List some of the following files for alternative fonts and paper: -# a4rc.sed use A4 paper (297 x 210 mm) -# psrc.sed use PostScript fonts (Karl Berry short TeX names) -# lpsrc.sed use PostScript fonts (full PostScript names in TeX) -# e.g. for A4, Postscript: REFEDITS = a4rc.sed psrc.sed -# for A4, CM fonts: REFEDITS = a4rc.sed -# for US, PS fonts: REFEDITS = psrc.sed -# for default: -REFEDITS = - -# Don Knuth's TeX formatter -TEX = tex -PDFTEX = pdftex - -# Program to generate Postscript files from DVI files. -DVIPS = dvips - -# Main GDB manual -GDB_DOC_SOURCE_INCLUDES = \ - $(srcdir)/fdl.texi \ - $(srcdir)/gpl.texi \ - $(srcdir)/agentexpr.texi \ - $(READLINE_DIR)/rluser.texi \ - $(READLINE_DIR)/inc-hist.texinfo -GDB_DOC_BUILD_INCLUDES = \ - gdb-cfg.texi \ - GDBvn.texi -GDB_DOC_FILES = \ - $(srcdir)/gdb.texinfo \ - $(GDB_DOC_SOURCE_INCLUDES) \ - $(GDB_DOC_BUILD_INCLUDES) - -# Internals Manual -GDBINT_DOC_SOURCE_INCLUDES = \ - $(srcdir)/fdl.texi \ - $(srcdir)/observer.texi -GDBINT_DOC_BUILD_INCLUDES = \ - gdb-cfg.texi \ - GDBvn.texi -GDBINT_DOC_FILES = \ - $(srcdir)/gdbint.texinfo \ - $(GDBINT_DOC_SOURCE_INCLUDES) \ - $(GDBINT_DOC_BUILD_INCLUDES) - -# Stabs manual: All files -STABS_DOC_SOURCE_INCLUDES = \ - $(srcdir)/fdl.texi -STABS_DOC_BUILD_INCLUDES = -STABS_DOC_FILES = \ - $(srcdir)/stabs.texinfo \ - $(STABS_DOC_SOURCE_INCLUDES) \ - $(STABS_DOC_BUILD_INCLUDES) - -# Annotate migration document -ANNOTATE_DOC_SOURCE_INCLUDES = \ - $(srcdir)/fdl.texi -ANNOTATE_DOC_BUILD_INCLUDES = \ - gdb-cfg.texi -ANNOTATE_DOC_FILES = \ - $(srcdir)/annotate.texinfo \ - $(ANNOTATE_DOC_SOURCE_INCLUDES) \ - $(ANNOTATE_DOC_BUILD_INCLUDES) - -#### Host, target, and site specific Makefile fragments come in here. -### - -all: - -info: $(INFO_DEPS) -dvi: gdb.dvi gdbint.dvi stabs.dvi refcard.dvi annotate.dvi -ps: gdb.ps gdbint.ps stabs.ps refcard.ps annotate.ps -html: $(HTMLFILES) -pdf: $(PDFFILES) -all-doc: info dvi ps # pdf -diststuff: info - -install-info: $(INFO_DEPS) - $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(infodir) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ - if test -f $$d/$$ifile; then \ - echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \ - $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \ - else : ; fi; \ - done; \ - done - $(POST_INSTALL) - @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ - install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ - done; \ - else : ; fi - -uninstall-info: - $(PRE_UNINSTALL) - @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ - ii=yes; \ - else ii=; fi; \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - test -z "$$ii" \ - || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ - done - $(NORMAL_UNINSTALL) - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ - done - -html__strip_dir = `echo $$p | sed -e 's|^.*/||'`; - -install-html: $(HTMLFILES) - @$(NORMAL_INSTALL) - test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" - @list='$(HTMLFILES_INSTALL)'; for p in $$list; do \ - if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \ - f=$(html__strip_dir) \ - if test -d "$$d$$p"; then \ - echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \ - $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ - echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ - else \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ - fi; \ - done - -pdf__strip_dir = `echo $$p | sed -e 's|^.*/||'`; - -install-pdf: $(PDFFILES) - @$(NORMAL_INSTALL) - test -z "$(pdfdir)" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)" - @list='$(PDFFILES)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(pdf__strip_dir) \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ - done - -STAGESTUFF = *.info* gdb-all.texi GDBvn.texi *.ps *.dvi *.pdf - -# Copy the object files from a particular stage into a subdirectory. -stage1: force - -mkdir stage1 - -mv $(STAGESTUFF) stage1 - -stage2: force - -mkdir stage2 - -mv $(STAGESTUFF) stage2 - -stage3: force - -mkdir stage3 - -mv $(STAGESTUFF) stage3 - -against=stage2 - -comparison: force - for i in $(STAGESTUFF) ; do cmp $$i $(against)/$$i ; done - -de-stage1: force - -(cd stage1 ; mv -f * ..) - -rmdir stage1 - -de-stage2: force - -(cd stage2 ; mv -f * ..) - -rmdir stage2 - -de-stage3: force - -(cd stage3 ; mv -f * ..) - -rmdir stage3 - -# GDB QUICK REFERENCE (dvi output) -refcard.dvi : refcard.tex $(REFEDITS) - echo > tmp.sed - for f in x $(REFEDITS) ; do \ - test x$$f = xx && continue ; \ - cat $(srcdir)/$$f >>tmp.sed ; \ - done - sed -f tmp.sed $(srcdir)/refcard.tex >sedref.tex - $(SET_TEXINPUTS) $(TEX) sedref.tex - mv sedref.dvi refcard.dvi - rm -f sedref.log sedref.tex tmp.sed - -refcard.ps : refcard.dvi - $(DVIPS) -t landscape -o $@ $? - -refcard.pdf : refcard.tex $(REFEDITS) - echo > tmp.sed - for f in x $(REFEDITS) ; do \ - test x$$f = xx && continue ; \ - cat $(srcdir)/$$f >>tmp.sed ; \ - done - sed -f tmp.sed $(srcdir)/refcard.tex >sedref.tex - $(SET_TEXINPUTS) $(PDFTEX) sedref.tex - mv sedref.pdf refcard.pdf - rm -f sedref.log sedref.tex tmp.sed - -# File to record current GDB version number (copied from main dir version.in) -GDBvn.texi : ${gdbdir}/version.in - echo "@set GDBVN `sed q $(srcdir)/../version.in`" > ./GDBvn.new - if [ -n "$(PKGVERSION)" ]; then \ - echo "@set VERSION_PACKAGE $(PKGVERSION)" >> ./GDBvn.new; \ - fi - echo "@set BUGURL $(BUGURL_TEXI)" >> ./GDBvn.new - if [ "$(BUGURL_TEXI)" = "@uref{http://www.gnu.org/software/gdb/bugs/}" ]; then \ - echo "@set BUGURL_DEFAULT" >> ./GDBvn.new; \ - fi - mv GDBvn.new GDBvn.texi - -# Updated atomically -.PRECIOUS: GDBvn.texi - -# Choose configuration for GDB manual (normally `all'; normally not tied into -# `configure' script because most users prefer generic version of manual, -# not one for their binary config---which may not be specifically -# defined anyways). -gdb-cfg.texi: ${srcdir}/${DOC_CONFIG}-cfg.texi - (test "$(LN_S)" = "ln -s" && \ - ln -s ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi) || \ - ln ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi || \ - cp ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi - -# GDB MANUAL: texinfo source, using @set/@clear/@value/@ifset/@ifclear -# If your texinfo or makeinfo don't support these, get a new texinfo release -# -# The nonsense with GDBvn.texi gets this to run with both Sun and GNU make. -# Note that we can *generate* GDBvn.texi, but since we distribute one in the -# source directory for the benefit of people who *don't* use this makefile, -# VPATH will often tell make not to bother building it, because the one -# in the srcdir is up to date. (if not, then make should build one here). - -# Clean these up before each run. Avoids a catch 22 with not being -# able to re-generate these files (to fix a corruption) because these -# files contain a corruption. -GDB_TEX_TMPS = gdb.aux gdb.cp* gdb.fn* gdb.ky* gdb.log gdb.pg* gdb.toc \ - gdb.tp* gdb.vr* - -# GDB MANUAL: TeX dvi file -gdb.dvi: ${GDB_DOC_FILES} - if [ ! -f ./GDBvn.texi ]; then \ - (test "$(LN_S)" = "ln -s" && ln -s $(srcdir)/GDBvn.texi .) || \ - ln $(srcdir)/GDBvn.texi . || \ - cp $(srcdir)/GDBvn.texi . ; else true; fi - rm -f $(GDB_TEX_TMPS) - $(TEXI2DVI) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) \ - $(srcdir)/gdb.texinfo - -gdb.ps: gdb.dvi - $(DVIPS) -o $@ $? - -gdb.pdf: ${GDB_DOC_FILES} - if [ ! -f ./GDBvn.texi ]; then \ - (test "$(LN_S)" = "ln -s" && ln -s $(srcdir)/GDBvn.texi .) || \ - ln $(srcdir)/GDBvn.texi . || \ - cp $(srcdir)/GDBvn.texi . ; else true; fi - rm -f $(GDB_TEX_TMPS) - $(TEXI2DVI) --pdf -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) \ - $(srcdir)/gdb.texinfo - -# GDB MANUAL: info file -gdb.info: ${GDB_DOC_FILES} - $(MAKEINFO) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) \ - -o gdb.info $(srcdir)/gdb.texinfo - -# GDB MANUAL: roff translations -# Try to use a recent texi2roff. v2 was put on prep in jan91. -# If you want an index, see texi2roff doc for postprocessing -# and add -i to texi2roff invocations below. -# Workarounds for texi2roff-2 (probably fixed in later texi2roff's, delete -# corresponding -e lines when later texi2roff's are current) -# + @ifinfo's deleted explicitly due to texi2roff-2 bug w nested constructs. -# + @c's deleted explicitly because texi2roff sees texinfo commands in them -# + @ (that's at-BLANK) not recognized by texi2roff, turned into blank -# + @alphaenumerate is ridiculously new, turned into @enumerate - -# texi2roff doesn't have a notion of include dirs, so we have to fake -# it out for gdb manual's include files---but only if not configured -# in main sourcedir. -links2roff: $(GDB_DOC_SOURCE_INCLUDES) - if [ ! -f gdb.texinfo ]; then \ - (test "$(LN_S)" = "ln -s" && ln -s $(GDB_DOC_SOURCE_INCLUDES) .) || \ - ln $(GDB_DOC_SOURCE_INCLUDES) . || \ - cp $(GDB_DOC_SOURCE_INCLUDES) . ; \ - fi - touch links2roff - -# gdb manual suitable for [gtn]roff -me -gdb.me: $(GDB_DOC_FILES) links2roff - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c /d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/gdb.texinfo | \ - $(TEXI2ROFF) -me | \ - sed -e 's/---/\\(em/g' \ - >gdb.me - -# gdb manual suitable for [gtn]roff -ms -gdb.ms: $(GDB_DOC_FILES) links2roff - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c /d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/gdb.texinfo | \ - $(TEXI2ROFF) -ms | \ - sed -e 's/---/\\(em/g' \ - >gdb.ms - -# gdb manual suitable for [tn]roff -mm -# '@noindent's removed due to texi2roff-2 mm bug; if yours is newer, -# try leaving them in -gdb.mm: $(GDB_DOC_FILES) links2roff - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c /d' \ - -e 's/{.*,,/{/' \ - -e '/@noindent/d' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/gdb.texinfo | \ - $(TEXI2ROFF) -mm | \ - sed -e 's/---/\\(em/g' \ - >gdb.mm - -# GDB MANUAL: HTML file - -gdb/index.html: ${GDB_DOC_FILES} - $(MAKEHTML) $(MAKEHTMLFLAGS) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo - -# Clean these up before each run. Avoids a catch 22 with not being -# able to re-generate these files (to fix a corruption) because these -# files contain a corruption. -GDBINT_TEX_TMPS = gdbint.aux gdbint.cp* gdbint.fn* gdbint.ky* \ - gdbint.log gdbint.pg* gdbint.toc gdbint.tp* gdbint.vr* - -# GDB INTERNALS MANUAL: TeX dvi file -gdbint.dvi: $(GDBINT_DOC_FILES) - rm -f $(GDBINT_TEX_TMPS) - $(TEXI2DVI) -I $(srcdir) $(srcdir)/gdbint.texinfo - -gdbint.ps : gdbint.dvi - $(DVIPS) -o $@ $? - -gdbint.pdf: $(GDBINT_DOC_FILES) - rm -f $(GDBINT_TEX_TMPS) - $(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/gdbint.texinfo - -# GDB INTERNALS MANUAL: info file - -gdbint.info: $(GDBINT_DOC_FILES) - $(MAKEINFO) -I $(srcdir) -o gdbint.info $(srcdir)/gdbint.texinfo - -# GDB INTERNALS MANUAL: HTML file - -gdbint/index.html: $(GDBINT_DOC_FILES) - $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/gdbint.texinfo - -stabs.info: $(STABS_DOC_FILES) - $(MAKEINFO) -I $(srcdir) -o stabs.info $(srcdir)/stabs.texinfo - -# STABS DOCUMENTATION: HTML file - -stabs/index.html: $(STABS_DOC_FILES) - $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/stabs.texinfo - -# Clean these up before each run. Avoids a catch 22 with not being -# able to re-generate these files (to fix a corruption) because these -# files contain a corruption. -STABS_TEX_TMPS = stabs.aux stabs.cp* stabs.fn* stabs.ky* \ - stabs.log stabs.pg* stabs.toc stabs.tp* stabs.vr* - -# STABS DOCUMENTATION: TeX dvi file -stabs.dvi : $(STABS_DOC_FILES) - rm -f $(STABS_TEX_TMPS) - $(TEXI2DVI) -I $(srcdir) $(srcdir)/stabs.texinfo - -stabs.ps: stabs.dvi - $(DVIPS) -o $@ $? - -stabs.pdf: $(STABS_DOC_FILES) - rm -f $(STABS_TEX_TMPS) - $(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/stabs.texinfo - -# Clean these up before each run. Avoids a catch 22 with not being -# able to re-generate these files (to fix a corruption) because these -# files contain a corruption. -ANNOTATE_TEX_TMPS = annotate.aux annotate.cp* annotate.fn* annotate.ky* \ - annotate.log annotate.pg* annotate.toc annotate.tp* annotate.vr* - -# ANNOTATE DOCUMENTATION: TeX dvi file -annotate.dvi : $(ANNOTATE_DOC_FILES) - rm -f $(ANNOTATE_TEX_TMPS) - $(TEXI2DVI) -I $(srcdir) $(srcdir)/annotate.texinfo - -annotate.ps: annotate.dvi - $(DVIPS) -o $@ $? - -annotate.pdf: $(ANNOTATE_DOC_FILES) - rm -f $(ANNOTATE_TEX_TMPS) - $(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/annotate.texinfo - -annotate.info: $(ANNOTATE_DOC_FILES) - $(MAKEINFO) -I $(srcdir) -o annotate.info $(srcdir)/annotate.texinfo - -annotate/index.html: $(ANNOTATE_DOC_FILES) - $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/annotate.texinfo - -force: - -Makefile: Makefile.in $(host_makefile_frag) config.status - $(SHELL) ./config.status - - -# The "least clean" level of cleaning. Get rid of files which are -# automatically generated files that are just intermediate files, - -mostlyclean: - rm -f gdb.mm gdb.ms gdb.me links2roff - rm -f $(GDB_TEX_TMPS) - rm -f $(GDBINT_TEX_TMPS) - rm -f $(STABS_TEX_TMPS) - rm -f $(ANNOTATE_TEX_TMPS) - rm -f sedref.dvi sedref.tex tmp.sed - -clean: mostlyclean - rm -f gdb-cfg.texi - -distclean: clean - rm -f Makefile config.status config.log - -# GDBvn.texi, the dvi files, the info files, and the postscript files, -# are all part of the distribution, so it should not be removed by -# "clean" or "distclean". Use maintainer-clean to remove them. - -maintainer-clean realclean: distclean - rm -f GDBvn.texi *.info* *.dvi *.ps *.html *.pdf - -install: install-info - -uninstall: uninstall-info diff --git a/contrib/gdb-7/gdb/doc/agentexpr.texi b/contrib/gdb-7/gdb/doc/agentexpr.texi index 30663192d7..985954ceab 100644 --- a/contrib/gdb-7/gdb/doc/agentexpr.texi +++ b/contrib/gdb-7/gdb/doc/agentexpr.texi @@ -7,7 +7,7 @@ @c This file is part of the GDB manual. @c -@c Copyright (C) 2003, 2004, 2005, 2006, 2009 +@c Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010 @c Free Software Foundation, Inc. @c @c See the file gdb.texinfo for copying conditions. @@ -58,8 +58,6 @@ debugging agent in real-time applications. * Bytecode Descriptions:: What each one does. * Using Agent Expressions:: How agent expressions fit into the big picture. * Varying Target Capabilities:: How to discover what the target can do. -* Tracing on Symmetrix:: Special info for implementation on EMC's - boxes. * Rationale:: Why we did it this way. @end menu @@ -442,6 +440,24 @@ alignment within the bytecode stream; thus, on machines where fetching a 16-bit on an unaligned address raises an exception, you should fetch the register number one byte at a time. +@item @code{getv} (0x2c) @var{n}: @result{} @var{v} +Push the value of trace state variable number @var{n}, without sign +extension. + +The variable number @var{n} is encoded as a 16-bit unsigned integer +immediately following the @code{getv} bytecode. It is always stored most +significant byte first, regardless of the target's normal endianness. +The variable number is not guaranteed to fall at any particular +alignment within the bytecode stream; thus, on machines where fetching a +16-bit on an unaligned address raises an exception, you should fetch the +register number one byte at a time. + +@item @code{setv} (0x2d) @var{n}: @result{} @var{v} +Set trace state variable number @var{n} to the value found on the top +of the stack. The stack is unchanged, so that the value is readily +available if the assignment is part of a larger expression. The +handling of @var{n} is as described for @code{getv}. + @item @code{trace} (0x0c): @var{addr} @var{size} @result{} Record the contents of the @var{size} bytes at @var{addr} in a trace buffer, for later retrieval by GDB. @@ -459,6 +475,10 @@ Identical to trace_quick, except that @var{size} is a 16-bit big-endian unsigned integer, not a single byte. This should probably have been named @code{trace_quick16}, for consistency. +@item @code{tracev} (0x2e) @var{n}: @result{} @var{a} +Record the value of trace state variable number @var{n} in the trace +buffer. The handling of @var{n} is as described for @code{getv}. + @item @code{end} (0x27): @result{} Stop executing bytecode; the result should be the top element of the stack. If the purpose of the expression was to compute an lvalue or a @@ -503,9 +523,7 @@ GDB transmits the tracepoints and their associated expressions to the GDB agent, running on the debugging target. @item -The agent arranges to be notified when a trace point is hit. Note that, -on some systems, the target operating system is completely responsible -for collecting the data; see @ref{Tracing on Symmetrix}. +The agent arranges to be notified when a trace point is hit. @item When execution on the target reaches a trace point, the agent evaluates @@ -559,142 +577,6 @@ whether the target supports disabled tracepoints @end itemize - - -@node Tracing on Symmetrix -@section Tracing on Symmetrix - -This section documents the API used by the GDB agent to collect data on -Symmetrix systems. - -Cygnus originally implemented these tracing features to help EMC -Corporation debug their Symmetrix high-availability disk drives. The -Symmetrix application code already includes substantial tracing -facilities; the GDB agent for the Symmetrix system uses those facilities -for its own data collection, via the API described here. - -@deftypefn Function DTC_RESPONSE adbg_find_memory_in_frame (FRAME_DEF *@var{frame}, char *@var{address}, char **@var{buffer}, unsigned int *@var{size}) -Search the trace frame @var{frame} for memory saved from @var{address}. -If the memory is available, provide the address of the buffer holding -it; otherwise, provide the address of the next saved area. - -@itemize @bullet - -@item -If the memory at @var{address} was saved in @var{frame}, set -@code{*@var{buffer}} to point to the buffer in which that memory was -saved, set @code{*@var{size}} to the number of bytes from @var{address} -that are saved at @code{*@var{buffer}}, and return -@code{OK_TARGET_RESPONSE}. (Clearly, in this case, the function will -always set @code{*@var{size}} to a value greater than zero.) - -@item -If @var{frame} does not record any memory at @var{address}, set -@code{*@var{size}} to the distance from @var{address} to the start of -the saved region with the lowest address higher than @var{address}. If -there is no memory saved from any higher address, set @code{*@var{size}} -to zero. Return @code{NOT_FOUND_TARGET_RESPONSE}. -@end itemize - -These two possibilities allow the caller to either retrieve the data, or -walk the address space to the next saved area. -@end deftypefn - -This function allows the GDB agent to map the regions of memory saved in -a particular frame, and retrieve their contents efficiently. - -This function also provides a clean interface between the GDB agent and -the Symmetrix tracing structures, making it easier to adapt the GDB -agent to future versions of the Symmetrix system, and vice versa. This -function searches all data saved in @var{frame}, whether the data is -there at the request of a bytecode expression, or because it falls in -one of the format's memory ranges, or because it was saved from the top -of the stack. EMC can arbitrarily change and enhance the tracing -mechanism, but as long as this function works properly, all collected -memory is visible to GDB. - -The function itself is straightforward to implement. A single pass over -the trace frame's stack area, memory ranges, and expression blocks can -yield the address of the buffer (if the requested address was saved), -and also note the address of the next higher range of memory, to be -returned when the search fails. - -As an example, suppose the trace frame @code{f} has saved sixteen bytes -from address @code{0x8000} in a buffer at @code{0x1000}, and thirty-two -bytes from address @code{0xc000} in a buffer at @code{0x1010}. Here are -some sample calls, and the effect each would have: - -@table @code - -@item adbg_find_memory_in_frame (f, (char*) 0x8000, &buffer, &size) -This would set @code{buffer} to @code{0x1000}, set @code{size} to -sixteen, and return @code{OK_TARGET_RESPONSE}, since @code{f} saves -sixteen bytes from @code{0x8000} at @code{0x1000}. - -@item adbg_find_memory_in_frame (f, (char *) 0x8004, &buffer, &size) -This would set @code{buffer} to @code{0x1004}, set @code{size} to -twelve, and return @code{OK_TARGET_RESPONSE}, since @file{f} saves the -twelve bytes from @code{0x8004} starting four bytes into the buffer at -@code{0x1000}. This shows that request addresses may fall in the middle -of saved areas; the function should return the address and size of the -remainder of the buffer. - -@item adbg_find_memory_in_frame (f, (char *) 0x8100, &buffer, &size) -This would set @code{size} to @code{0x3f00} and return -@code{NOT_FOUND_TARGET_RESPONSE}, since there is no memory saved in -@code{f} from the address @code{0x8100}, and the next memory available -is at @code{0x8100 + 0x3f00}, or @code{0xc000}. This shows that request -addresses may fall outside of all saved memory ranges; the function -should indicate the next saved area, if any. - -@item adbg_find_memory_in_frame (f, (char *) 0x7000, &buffer, &size) -This would set @code{size} to @code{0x1000} and return -@code{NOT_FOUND_TARGET_RESPONSE}, since the next saved memory is at -@code{0x7000 + 0x1000}, or @code{0x8000}. - -@item adbg_find_memory_in_frame (f, (char *) 0xf000, &buffer, &size) -This would set @code{size} to zero, and return -@code{NOT_FOUND_TARGET_RESPONSE}. This shows how the function tells the -caller that no further memory ranges have been saved. - -@end table - -As another example, here is a function which will print out the -addresses of all memory saved in the trace frame @code{frame} on the -Symmetrix INLINES console: -@example -void -print_frame_addresses (FRAME_DEF *frame) -@{ - char *addr; - char *buffer; - unsigned long size; - - addr = 0; - for (;;) - @{ - /* Either find out how much memory we have here, or discover - where the next saved region is. */ - if (adbg_find_memory_in_frame (frame, addr, &buffer, &size) - == OK_TARGET_RESPONSE) - printp ("saved %x to %x\n", addr, addr + size); - if (size == 0) - break; - addr += size; - @} -@} -@end example - -Note that there is not necessarily any connection between the order in -which the data is saved in the trace frame, and the order in which -@code{adbg_find_memory_in_frame} will return those memory ranges. The -code above will always print the saved memory regions in order of -increasing address, while the underlying frame structure might store the -data in a random order. - -[[This section should cover the rest of the Symmetrix functions the stub -relies upon, too.]] - @node Rationale @section Rationale diff --git a/contrib/gdb-7/gdb/doc/annotate.texinfo b/contrib/gdb-7/gdb/doc/annotate.texinfo index 686fda0f27..11298d9fc8 100644 --- a/contrib/gdb-7/gdb/doc/annotate.texinfo +++ b/contrib/gdb-7/gdb/doc/annotate.texinfo @@ -28,10 +28,10 @@ @copying Copyright @copyright{} 1994, 1995, 2000, 2001, 2003, 2004, 2005, 2007, -2008, 2009 Free Software Foundation, Inc. +2008, 2009, 2010 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or +under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU @@ -839,9 +839,9 @@ e.g., another thread hits a breakpoint. @end table -@raisesections +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi -@lowersections @ignore @node Index diff --git a/contrib/gdb-7/gdb/doc/fdl.texi b/contrib/gdb-7/gdb/doc/fdl.texi index 5f074df546..7c26c34b07 100644 --- a/contrib/gdb-7/gdb/doc/fdl.texi +++ b/contrib/gdb-7/gdb/doc/fdl.texi @@ -1,13 +1,12 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 -@node GNU Free Documentation License -@appendixsec GNU Free Documentation License - -@cindex FDL, GNU Free Documentation License -@center Version 1.2, November 2002 +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. @display -Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{http://fsf.org/} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -112,6 +111,9 @@ formats which do not have any title page as such, ``Title Page'' means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + A section ``Entitled XYZ'' means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a @@ -380,13 +382,30 @@ title. @item TERMINATION -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. @item FUTURE REVISIONS OF THIS LICENSE @@ -404,11 +423,46 @@ following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + @end enumerate @page -@appendixsubsec ADDENDUM: How to use this License for your documents +@heading ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and @@ -418,7 +472,7 @@ license notices just after the title page: @group Copyright (C) @var{year} @var{your name}. Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 + under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU @@ -427,7 +481,7 @@ license notices just after the title page: @end smallexample If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the ``with...Texts.'' line with this: +replace the ``with@dots{}Texts.'' line with this: @smallexample @group @@ -449,4 +503,3 @@ to permit their use in free software. @c Local Variables: @c ispell-local-pdict: "ispell-dict" @c End: - diff --git a/contrib/gdb-7/gdb/doc/gdb.texinfo b/contrib/gdb-7/gdb/doc/gdb.texinfo index 1f98fa5b5f..65d4899fd5 100644 --- a/contrib/gdb-7/gdb/doc/gdb.texinfo +++ b/contrib/gdb-7/gdb/doc/gdb.texinfo @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, -@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 @c Free Software Foundation, Inc. @c @c %**start of header @@ -46,11 +46,11 @@ @copying Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, -1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or +under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being ``Free Software'' and ``Free Software Needs Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,'' @@ -120,7 +120,7 @@ This is the @value{EDITION} Edition, for @value{GDBN} @end ifset Version @value{GDBVN}. -Copyright (C) 1988-2009 Free Software Foundation, Inc. +Copyright (C) 1988-2010 Free Software Foundation, Inc. This edition of the GDB manual is dedicated to the memory of Fred Fish. Fred was a long-standing contributor to GDB and to Free @@ -174,6 +174,7 @@ software in general. We will miss him. @value{GDBN} * Operating System Information:: Getting additional information from the operating system +* Trace File Format:: GDB trace file format * Copying:: GNU General Public License says how you can copy and share GDB * GNU Free Documentation License:: The license for this documentation @@ -213,6 +214,9 @@ You can use @value{GDBN} to debug programs written in C and C@t{++}. For more information, see @ref{Supported Languages,,Supported Languages}. For more information, see @ref{C,,C and C++}. +Support for D is partial. For information on D, see +@ref{D,,D}. + @cindex Modula-2 Support for Modula-2 is partial. For information on Modula-2, see @ref{Modula-2,,Modula-2}. @@ -517,6 +521,9 @@ Tensilica, Inc.@: contributed support for Xtensa processors. Others who have worked on the Xtensa port of @value{GDBN} in the past include Steve Tjiang, John Newlin, and Scott Foehner. +Michael Eager and staff of Xilinx, Inc., contributed support for the +Xilinx MicroBlaze architecture. + @node Sample Session @chapter A Sample @value{GDBN} Session @@ -959,8 +966,9 @@ Connect to process ID @var{number}, as with the @code{attach} command. @itemx -x @var{file} @cindex @code{--command} @cindex @code{-x} -Execute @value{GDBN} commands from file @var{file}. @xref{Command -Files,, Command files}. +Execute commands from file @var{file}. The contents of this file is +evaluated exactly as the @code{source} command would. +@xref{Command Files,, Command files}. @item -eval-command @var{command} @itemx -ex @var{command} @@ -1023,7 +1031,9 @@ Run in batch mode. Exit with status @code{0} after processing all the command files specified with @samp{-x} (and all commands from initialization files, if not inhibited with @samp{-n}). Exit with nonzero status if an error occurs in executing the @value{GDBN} commands -in the command files. +in the command files. Batch mode also disables pagination, sets unlimited +terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm +off} were in effect (@pxref{Messages/Warnings}). Batch mode may be useful for running @value{GDBN} as a filter, for example to download and run a program on another computer; in order to @@ -1791,9 +1801,9 @@ kill a child process. * Attach:: Debugging an already-running process * Kill Process:: Killing the child process -* Inferiors:: Debugging multiple inferiors +* Inferiors and Programs:: Debugging multiple inferiors and programs * Threads:: Debugging programs with multiple threads -* Processes:: Debugging programs with multiple processes +* Forks:: Debugging forks * Checkpoint/Restart:: Setting a @emph{bookmark} to return to later @end menu @@ -2346,30 +2356,30 @@ next type @code{run}, @value{GDBN} notices that the file has changed, and reads the symbol table again (while trying to preserve your current breakpoint settings). -@node Inferiors -@section Debugging Multiple Inferiors +@node Inferiors and Programs +@section Debugging Multiple Inferiors and Programs -Some @value{GDBN} targets are able to run multiple processes created -from a single executable. This can happen, for instance, with an -embedded system reporting back several processes via the remote -protocol. +@value{GDBN} lets you run and debug multiple programs in a single +session. In addition, @value{GDBN} on some systems may let you run +several programs simultaneously (otherwise you have to exit from one +before starting another). In the most general case, you can have +multiple threads of execution in each of multiple processes, launched +from multiple executables. @cindex inferior @value{GDBN} represents the state of each program execution with an object called an @dfn{inferior}. An inferior typically corresponds to a process, but is more general and applies also to targets that do not have processes. Inferiors may be created before a process runs, and -may (in future) be retained after a process exits. Each run of an -executable creates a new inferior, as does each attachment to an -existing process. Inferiors have unique identifiers that are -different from process ids, and may optionally be named as well. -Usually each inferior will also have its own distinct address space, -although some embedded targets may have several inferiors running in -different parts of a single space. - -Each inferior may in turn have multiple threads running in it. +may be retained after a process exits. Inferiors have unique +identifiers that are different from process ids. Usually each +inferior will also have its own distinct address space, although some +embedded targets may have several inferiors running in different parts +of a single address space. Each inferior may in turn have multiple +threads running in it. -To find out what inferiors exist at any moment, use @code{info inferiors}: +To find out what inferiors exist at any moment, use @w{@code{info +inferiors}}: @table @code @kindex info inferiors @@ -2384,6 +2394,10 @@ the inferior number assigned by @value{GDBN} @item the target system's inferior identifier + +@item +the name of the executable the inferior is running. + @end enumerate @noindent @@ -2396,9 +2410,9 @@ For example, @smallexample (@value{GDBP}) info inferiors - Num Description -* 1 process 2307 - 2 process 3401 + Num Description Executable + 2 process 2307 hello +* 1 process 3401 goodbye @end smallexample To switch focus between inferiors, use the @code{inferior} command: @@ -2411,22 +2425,80 @@ Make inferior number @var{infno} the current inferior. The argument in the first field of the @samp{info inferiors} display. @end table -To quit debugging one of the inferiors, you can either detach from it -by using the @w{@code{detach inferior}} command (allowing it to run -independently), or kill it using the @w{@code{kill inferior}} command: + +You can get multiple executables into a debugging session via the +@code{add-inferior} and @w{@code{clone-inferior}} commands. On some +systems @value{GDBN} can add inferiors to the debug session +automatically by following calls to @code{fork} and @code{exec}. To +remove inferiors from the debugging session use the +@w{@code{remove-inferior}} command. + +@table @code +@kindex add-inferior +@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ] +Adds @var{n} inferiors to be run using @var{executable} as the +executable. @var{n} defaults to 1. If no executable is specified, +the inferiors begins empty, with no program. You can still assign or +change the program assigned to the inferior at any time by using the +@code{file} command with the executable name as its argument. + +@kindex clone-inferior +@item clone-inferior [ -copies @var{n} ] [ @var{infno} ] +Adds @var{n} inferiors ready to execute the same program as inferior +@var{infno}. @var{n} defaults to 1. @var{infno} defaults to the +number of the current inferior. This is a convenient command when you +want to run another instance of the inferior you are debugging. + +@smallexample +(@value{GDBP}) info inferiors + Num Description Executable +* 1 process 29964 helloworld +(@value{GDBP}) clone-inferior +Added inferior 2. +1 inferiors added. +(@value{GDBP}) info inferiors + Num Description Executable + 2 helloworld +* 1 process 29964 helloworld +@end smallexample + +You can now simply switch focus to inferior 2 and run it. + +@kindex remove-inferior +@item remove-inferior @var{infno} +Removes the inferior @var{infno}. It is not possible to remove an +inferior that is running with this command. For those, use the +@code{kill} or @code{detach} command first. + +@end table + +To quit debugging one of the running inferiors that is not the current +inferior, you can either detach from it by using the @w{@code{detach +inferior}} command (allowing it to run independently), or kill it +using the @w{@code{kill inferior}} command: @table @code @kindex detach inferior @var{infno} @item detach inferior @var{infno} Detach from the inferior identified by @value{GDBN} inferior number -@var{infno}, and remove it from the inferior list. +@var{infno}. Note that the inferior's entry still stays on the list +of inferiors shown by @code{info inferiors}, but its Description will +show @samp{}. @kindex kill inferior @var{infno} @item kill inferior @var{infno} Kill the inferior identified by @value{GDBN} inferior number -@var{infno}, and remove it from the inferior list. +@var{infno}. Note that the inferior's entry still stays on the list +of inferiors shown by @code{info inferiors}, but its Description will +show @samp{}. @end table +After the successful completion of a command such as @code{detach}, +@code{detach inferior}, @code{kill} or @code{kill inferior}, or after +a normal process exit, the inferior is still valid and listed with +@code{info inferiors}, ready to be restarted. + + To be notified when inferiors are started or exit under @value{GDBN}'s control use @w{@code{set print inferior-events}}: @@ -2447,6 +2519,67 @@ Show whether messages will be printed when @value{GDBN} detects that inferiors have started, exited or have been detached. @end table +Many commands will work the same with multiple programs as with a +single program: e.g., @code{print myglobal} will simply display the +value of @code{myglobal} in the current inferior. + + +Occasionaly, when debugging @value{GDBN} itself, it may be useful to +get more info about the relationship of inferiors, programs, address +spaces in a debug session. You can do that with the @w{@code{maint +info program-spaces}} command. + +@table @code +@kindex maint info program-spaces +@item maint info program-spaces +Print a list of all program spaces currently being managed by +@value{GDBN}. + +@value{GDBN} displays for each program space (in this order): + +@enumerate +@item +the program space number assigned by @value{GDBN} + +@item +the name of the executable loaded into the program space, with e.g., +the @code{file} command. + +@end enumerate + +@noindent +An asterisk @samp{*} preceding the @value{GDBN} program space number +indicates the current program space. + +In addition, below each program space line, @value{GDBN} prints extra +information that isn't suitable to display in tabular form. For +example, the list of inferiors bound to the program space. + +@smallexample +(@value{GDBP}) maint info program-spaces + Id Executable + 2 goodbye + Bound inferiors: ID 1 (process 21561) +* 1 hello +@end smallexample + +Here we can see that no inferior is running the program @code{hello}, +while @code{process 21561} is running the program @code{goodbye}. On +some targets, it is possible that multiple inferiors are bound to the +same program space. The most common example is that of debugging both +the parent and child processes of a @code{vfork} call. For example, + +@smallexample +(@value{GDBP}) maint info program-spaces + Id Executable +* 1 vfork-test + Bound inferiors: ID 2 (process 18050), ID 1 (process 18045) +@end smallexample + +Here, both inferior 2 and inferior 1 are running in the same program +space as a result of inferior 1 having executed a @code{vfork} call. +@end table + @node Threads @section Debugging Programs with Multiple Threads @@ -2659,6 +2792,13 @@ As with the @samp{[New @dots{}]} message, the form of the text after @samp{Switching to} depends on your system's conventions for identifying threads. +@vindex $_thread@r{, convenience variable} +The debugger convenience variable @samp{$_thread} contains the number +of the current thread. You may find this useful in writing breakpoint +conditional expressions, command scripts, and so forth. See +@xref{Convenience Vars,, Convenience Variables}, for general +information on convenience variables. + @kindex thread apply @cindex apply command to several threads @item thread apply [@var{threadno}] [@var{all}] @var{command} @@ -2726,8 +2866,8 @@ only on some platforms. Display current libthread_db search path. @end table -@node Processes -@section Debugging Programs with Multiple Processes +@node Forks +@section Debugging Forks @cindex fork, debugging programs which call @cindex multiple processes @@ -2818,13 +2958,14 @@ If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN} will retain control of all forked processes (including nested forks). You can list the forked processes under the control of @value{GDBN} by using the @w{@code{info inferiors}} command, and switch from one fork -to another by using the @code{inferior} command (@pxref{Inferiors, -,Debugging Multiple Inferiors}). +to another by using the @code{inferior} command (@pxref{Inferiors and +Programs, ,Debugging Multiple Inferiors and Programs}). To quit debugging one of the forked processes, you can either detach from it by using the @w{@code{detach inferior}} command (allowing it to run independently), or kill it using the @w{@code{kill inferior}} -command. @xref{Inferiors, ,Debugging Multiple Inferiors}. +command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors +and Programs}. If you ask to debug a child process and a @code{vfork} is followed by an @code{exec}, @value{GDBN} executes the new target up to the first @@ -2836,9 +2977,68 @@ On some systems, when a child process is spawned by @code{vfork}, you cannot debug the child or parent until an @code{exec} call completes. If you issue a @code{run} command to @value{GDBN} after an @code{exec} -call executes, the new target restarts. To restart the parent process, -use the @code{file} command with the parent executable name as its -argument. +call executes, the new target restarts. To restart the parent +process, use the @code{file} command with the parent executable name +as its argument. By default, after an @code{exec} call executes, +@value{GDBN} discards the symbols of the previous executable image. +You can change this behaviour with the @w{@code{set follow-exec-mode}} +command. + +@table @code +@kindex set follow-exec-mode +@item set follow-exec-mode @var{mode} + +Set debugger response to a program call of @code{exec}. An +@code{exec} call replaces the program image of a process. + +@code{follow-exec-mode} can be: + +@table @code +@item new +@value{GDBN} creates a new inferior and rebinds the process to this +new inferior. The program the process was running before the +@code{exec} call can be restarted afterwards by restarting the +original inferior. + +For example: + +@smallexample +(@value{GDBP}) info inferiors +(gdb) info inferior + Id Description Executable +* 1 prog1 +(@value{GDBP}) run +process 12020 is executing new program: prog2 +Program exited normally. +(@value{GDBP}) info inferiors + Id Description Executable +* 2 prog2 + 1 prog1 +@end smallexample + +@item same +@value{GDBN} keeps the process bound to the same inferior. The new +executable image replaces the previous executable loaded in the +inferior. Restarting the inferior after the @code{exec} call, with +e.g., the @code{run} command, restarts the executable the process was +running after the @code{exec} call. This is the default mode. + +For example: + +@smallexample +(@value{GDBP}) info inferiors + Id Description Executable +* 1 prog1 +(@value{GDBP}) run +process 12020 is executing new program: prog2 +Program exited normally. +(@value{GDBP}) info inferiors + Id Description Executable +* 1 prog2 +@end smallexample + +@end table +@end table You can use the @code{catch} command to make @value{GDBN} stop whenever a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set @@ -3061,6 +3261,7 @@ all breakpoints in that range are operated on. * Disabling:: Disabling breakpoints * Conditions:: Break conditions * Break Commands:: Breakpoint command lists +* Save Breakpoints:: How to save breakpoints in a file * Error in Breakpoints:: ``Cannot insert breakpoints'' * Breakpoint-related Warnings:: ``Breakpoint address adjusted...'' @end menu @@ -3168,7 +3369,7 @@ See also @ref{Conditions, ,Break Conditions}. @kindex rbreak @cindex regular expression -@cindex breakpoints in functions matching a regexp +@cindex breakpoints at functions matching a regexp @cindex set breakpoints in many functions @item rbreak @var{regex} Set breakpoints on all functions matching the regular expression @@ -3198,11 +3399,23 @@ The @code{rbreak} command can be used to set breakpoints in (@value{GDBP}) rbreak . @end smallexample +@item rbreak @var{file}:@var{regex} +If @code{rbreak} is called with a filename qualification, it limits +the search for functions matching the given regular expression to the +specified @var{file}. This can be used, for example, to set breakpoints on +every function in a given file: + +@smallexample +(@value{GDBP}) rbreak file.c:. +@end smallexample + +The colon separating the filename qualifier from the regex may +optionally be surrounded by spaces. + @kindex info breakpoints @cindex @code{$_} and @code{info breakpoints} @item info breakpoints @r{[}@var{n}@r{]} @itemx info break @r{[}@var{n}@r{]} -@itemx info watchpoints @r{[}@var{n}@r{]} Print a table of all breakpoints, watchpoints, and catchpoints set and not deleted. Optional argument @var{n} means print information only about the specified breakpoint (or watchpoint or catchpoint). For @@ -3519,10 +3732,22 @@ or written into by the program. @kindex info watchpoints @r{[}@var{n}@r{]} @item info watchpoints -This command prints a list of watchpoints, breakpoints, and catchpoints; -it is the same as @code{info break} (@pxref{Set Breaks}). +This command prints a list of watchpoints, using the same format as +@code{info break} (@pxref{Set Breaks}). @end table +If you watch for a change in a numerically entered address you need to +dereference it, as the address itself is just a constant number which will +never change. @value{GDBN} refuses to create a watchpoint that watches +a never-changing value: + +@smallexample +(@value{GDBP}) watch 0x600850 +Cannot watch constant value 0x600850. +(@value{GDBP}) watch *(int *) 0x600850 +Watchpoint 1: *(int *) 6293584 +@end smallexample + @value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware watchpoints execute very quickly, and the debugger reports a change in value at the exact instruction where the change occurs. If @value{GDBN} @@ -3686,7 +3911,7 @@ A call to @code{exec}. This is currently only available for HP-UX and @sc{gnu}/Linux. @item syscall -@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @r{...} +@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{} @cindex break on a system call. A call to or return from a system call, a.k.a.@: @dfn{syscall}. A syscall is a mechanism for application programs to request a service @@ -3949,10 +4174,10 @@ it had been deleted, but remembers the information on the breakpoint so that you can @dfn{enable} it again later. You disable and enable breakpoints, watchpoints, and catchpoints with -the @code{enable} and @code{disable} commands, optionally specifying one -or more breakpoint numbers as arguments. Use @code{info break} or -@code{info watch} to print a list of breakpoints, watchpoints, and -catchpoints if you do not know which numbers to use. +the @code{enable} and @code{disable} commands, optionally specifying +one or more breakpoint numbers as arguments. Use @code{info break} to +print a list of all breakpoints, watchpoints, and catchpoints if you +do not know which numbers to use. Disabling and enabling a breakpoint that has multiple locations affects all of its locations. @@ -4142,19 +4367,24 @@ enable other breakpoints. @table @code @kindex commands @kindex end@r{ (breakpoint commands)} -@item commands @r{[}@var{bnum}@r{]} +@item commands @r{[}@var{range}@dots{}@r{]} @itemx @dots{} @var{command-list} @dots{} @itemx end -Specify a list of commands for breakpoint number @var{bnum}. The commands +Specify a list of commands for the given breakpoints. The commands themselves appear on the following lines. Type a line containing just @code{end} to terminate the commands. To remove all commands from a breakpoint, type @code{commands} and follow it immediately with @code{end}; that is, give no commands. -With no @var{bnum} argument, @code{commands} refers to the last -breakpoint, watchpoint, or catchpoint set (not to the breakpoint most -recently encountered). +With no argument, @code{commands} refers to the last breakpoint, +watchpoint, or catchpoint set (not to the breakpoint most recently +encountered). If the most recent breakpoints were set with a single +command, then the @code{commands} will apply to all the breakpoints +set by that command. This applies to breakpoints set by +@code{rbreak}, and also applies when a single @code{break} command +creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous +Expressions}). @end table Pressing @key{RET} as a means of repeating the last @value{GDBN} command is @@ -4211,6 +4441,31 @@ cont end @end smallexample +@node Save Breakpoints +@subsection How to save breakpoints to a file + +To save breakpoint definitions to a file use the @w{@code{save +breakpoints}} command. + +@table @code +@kindex save breakpoints +@cindex save breakpoints to a file for future sessions +@item save breakpoints [@var{filename}] +This command saves all current breakpoint definitions together with +their commands and ignore counts, into a file @file{@var{filename}} +suitable for use in a later debugging session. This includes all +types of breakpoints (breakpoints, watchpoints, catchpoints, +tracepoints). To read the saved breakpoint definitions, use the +@code{source} command (@pxref{Command Files}). Note that watchpoints +with expressions involving local variables may fail to be recreated +because it may not be possible to access the context where the +watchpoint is valid anymore. Because the saved breakpoint definitions +are simply a sequence of @value{GDBN} commands that recreate the +breakpoints, you can edit the file in your favorite editing program, +and remove the breakpoint definitions you're not interested in, or +that can no longer be recreated. +@end table + @c @ifclear BARETARGET @node Error in Breakpoints @subsection ``Cannot insert breakpoints'' @@ -4726,6 +4981,7 @@ you examine the stopped thread in the debugger. * Background Execution:: Running your program asynchronously * Thread-Specific Breakpoints:: Controlling breakpoints * Interrupted System Calls:: GDB may interfere with system calls +* Observer Mode:: GDB does not alter program behavior @end menu @node All-Stop Mode @@ -5032,8 +5288,8 @@ breakpoint, the breakpoint applies to @emph{all} threads of your program. You can use the @code{thread} qualifier on conditional breakpoints as -well; in this case, place @samp{thread @var{threadno}} before the -breakpoint condition, like this: +well; in this case, place @samp{thread @var{threadno}} before or +after the breakpoint condition, like this: @smallexample (@value{GDBP}) break frik.c:13 thread 28 if bartab > lim @@ -5086,6 +5342,103 @@ monitor certain events such as thread creation and thread destruction. When such an event happens, a system call in another thread may return prematurely, even though your program does not appear to stop. +@node Observer Mode +@subsection Observer Mode + +If you want to build on non-stop mode and observe program behavior +without any chance of disruption by @value{GDBN}, you can set +variables to disable all of the debugger's attempts to modify state, +whether by writing memory, inserting breakpoints, etc. These operate +at a low level, intercepting operations from all commands. + +When all of these are set to @code{off}, then @value{GDBN} is said to +be @dfn{observer mode}. As a convenience, the variable +@code{observer} can be set to disable these, plus enable non-stop +mode. + +Note that @value{GDBN} will not prevent you from making nonsensical +combinations of these settings. For instance, if you have enabled +@code{may-insert-breakpoints} but disabled @code{may-write-memory}, +then breakpoints that work by writing trap instructions into the code +stream will still not be able to be placed. + +@table @code + +@kindex observer +@item set observer on +@itemx set observer off +When set to @code{on}, this disables all the permission variables +below (except for @code{insert-fast-tracepoints}), plus enables +non-stop debugging. Setting this to @code{off} switches back to +normal debugging, though remaining in non-stop mode. + +@item show observer +Show whether observer mode is on or off. + +@kindex may-write-registers +@item set may-write-registers on +@itemx set may-write-registers off +This controls whether @value{GDBN} will attempt to alter the values of +registers, such as with assignment expressions in @code{print}, or the +@code{jump} command. It defaults to @code{on}. + +@item show may-write-registers +Show the current permission to write registers. + +@kindex may-write-memory +@item set may-write-memory on +@itemx set may-write-memory off +This controls whether @value{GDBN} will attempt to alter the contents +of memory, such as with assignment expressions in @code{print}. It +defaults to @code{on}. + +@item show may-write-memory +Show the current permission to write memory. + +@kindex may-insert-breakpoints +@item set may-insert-breakpoints on +@itemx set may-insert-breakpoints off +This controls whether @value{GDBN} will attempt to insert breakpoints. +This affects all breakpoints, including internal breakpoints defined +by @value{GDBN}. It defaults to @code{on}. + +@item show may-insert-breakpoints +Show the current permission to insert breakpoints. + +@kindex may-insert-tracepoints +@item set may-insert-tracepoints on +@itemx set may-insert-tracepoints off +This controls whether @value{GDBN} will attempt to insert (regular) +tracepoints at the beginning of a tracing experiment. It affects only +non-fast tracepoints, fast tracepoints being under the control of +@code{may-insert-fast-tracepoints}. It defaults to @code{on}. + +@item show may-insert-tracepoints +Show the current permission to insert tracepoints. + +@kindex may-insert-fast-tracepoints +@item set may-insert-fast-tracepoints on +@itemx set may-insert-fast-tracepoints off +This controls whether @value{GDBN} will attempt to insert fast +tracepoints at the beginning of a tracing experiment. It affects only +fast tracepoints, regular (non-fast) tracepoints being under the +control of @code{may-insert-tracepoints}. It defaults to @code{on}. + +@item show may-insert-fast-tracepoints +Show the current permission to insert fast tracepoints. + +@kindex may-interrupt +@item set may-interrupt on +@itemx set may-interrupt off +This controls whether @value{GDBN} will attempt to interrupt or stop +program execution. When this variable is @code{off}, the +@code{interrupt} command will have no effect, nor will +@kbd{Ctrl-c}. It defaults to @code{on}. + +@item show may-interrupt +Show the current permission to interrupt or stop the program. + +@end table @node Reverse Execution @chapter Running programs backward @@ -5174,7 +5527,7 @@ the first line of a function, @code{reverse-next} will take you back to the caller of that function, @emph{before} the function was called, just as the normal @code{next} command would take you from the last line of a function back to its return to its caller -@footnote{Unles the code is too heavily optimized.}. +@footnote{Unless the code is too heavily optimized.}. @kindex reverse-nexti @kindex rni @r{(@code{reverse-nexti})} @@ -5182,7 +5535,7 @@ line of a function back to its return to its caller Like @code{nexti}, @code{reverse-nexti} executes a single instruction in reverse, except that called functions are ``un-executed'' atomically. That is, if the previously executed instruction was a return from -another instruction, @code{reverse-nexti} will continue to execute +another function, @code{reverse-nexti} will continue to execute in reverse until the call to that function (from the current stack frame) is reached. @@ -5297,6 +5650,17 @@ usual ``live'' debugging of the process from that state. When the inferior process exits, or @value{GDBN} detaches from it, process record and replay target will automatically stop itself. +@kindex record save +@item record save @var{filename} +Save the execution log to a file @file{@var{filename}}. +Default filename is @file{gdb_record.@var{process_id}}, where +@var{process_id} is the process ID of the inferior. + +@kindex record restore +@item record restore @var{filename} +Restore the execution log from a file @file{@var{filename}}. +File must have been created with @code{record save}. + @kindex set record insn-number-max @item set record insn-number-max @var{limit} Set the limit of instructions to be recorded. Default value is 200000. @@ -5334,9 +5698,41 @@ oldest record to make room for each new one, without asking. @item show record stop-at-limit Show the current setting of @code{stop-at-limit}. -@kindex info record insn-number -@item info record insn-number -Show the current number of recorded instructions. +@kindex set record memory-query +@item set record memory-query +Control the behavior when @value{GDBN} is unable to record memory +changes caused by an instruction. If ON, @value{GDBN} will query +whether to stop the inferior in that case. + +If this option is OFF (the default), @value{GDBN} will automatically +ignore the effect of such instructions on memory. Later, when +@value{GDBN} replays this execution log, it will mark the log of this +instruction as not accessible, and it will not affect the replay +results. + +@kindex show record memory-query +@item show record memory-query +Show the current setting of @code{memory-query}. + +@kindex info record +@item info record +Show various statistics about the state of process record and its +in-memory execution log buffer, including: + +@itemize @bullet +@item +Whether in record mode or replay mode. +@item +Lowest recorded instruction number (counting from when the current execution log started recording instructions). +@item +Highest recorded instruction number. +@item +Current instruction about to be replayed (if in replay mode). +@item +Number of instructions contained in the execution log. +@item +Maximum number of instructions that may be contained in the execution log. +@end itemize @kindex record delete @kindex rec del @@ -6341,49 +6737,81 @@ in symbolic form by specifying the @code{/r}. The default memory range is the function surrounding the program counter of the selected frame. A single argument to this command is a program counter value; @value{GDBN} dumps the function -surrounding this value. Two arguments specify a range of addresses -(first inclusive, second exclusive) to dump. +surrounding this value. When two arguments are given, they should +be separated by a comma, possibly surrounded by whitespace. The +arguments specify a range of addresses to dump, in one of two forms: + +@table @code +@item @var{start},@var{end} +the addresses from @var{start} (inclusive) to @var{end} (exclusive) +@item @var{start},+@var{length} +the addresses from @var{start} (inclusive) to +@code{@var{start}+@var{length}} (exclusive). +@end table + +@noindent +When 2 arguments are specified, the name of the function is also +printed (since there could be several functions in the given range). + +The argument(s) can be any expression yielding a numeric value, such as +@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}. + +If the range of memory being disassembled contains current program counter, +the instruction at that location is shown with a @code{=>} marker. @end table The following example shows the disassembly of a range of addresses of HP PA-RISC 2.0 code: @smallexample -(@value{GDBP}) disas 0x32c4 0x32e4 +(@value{GDBP}) disas 0x32c4, 0x32e4 Dump of assembler code from 0x32c4 to 0x32e4: -0x32c4 : addil 0,dp -0x32c8 : ldw 0x22c(sr0,r1),r26 -0x32cc : ldil 0x3000,r31 -0x32d0 : ble 0x3f8(sr4,r31) -0x32d4 : ldo 0(r31),rp -0x32d8 : addil -0x800,dp -0x32dc : ldo 0x588(r1),r26 -0x32e0 : ldil 0x3000,r31 + 0x32c4 : addil 0,dp + 0x32c8 : ldw 0x22c(sr0,r1),r26 + 0x32cc : ldil 0x3000,r31 + 0x32d0 : ble 0x3f8(sr4,r31) + 0x32d4 : ldo 0(r31),rp + 0x32d8 : addil -0x800,dp + 0x32dc : ldo 0x588(r1),r26 + 0x32e0 : ldil 0x3000,r31 End of assembler dump. @end smallexample -Here is an example showing mixed source+assembly for Intel x86: +Here is an example showing mixed source+assembly for Intel x86, when the +program is stopped just after function prologue: @smallexample (@value{GDBP}) disas /m main Dump of assembler code for function main: 5 @{ -0x08048330 : push %ebp -0x08048331 : mov %esp,%ebp -0x08048333 : sub $0x8,%esp -0x08048336 : and $0xfffffff0,%esp -0x08048339 : sub $0x10,%esp + 0x08048330 <+0>: push %ebp + 0x08048331 <+1>: mov %esp,%ebp + 0x08048333 <+3>: sub $0x8,%esp + 0x08048336 <+6>: and $0xfffffff0,%esp + 0x08048339 <+9>: sub $0x10,%esp 6 printf ("Hello.\n"); -0x0804833c : movl $0x8048440,(%esp) -0x08048343 : call 0x8048284 +=> 0x0804833c <+12>: movl $0x8048440,(%esp) + 0x08048343 <+19>: call 0x8048284 7 return 0; 8 @} -0x08048348 : mov $0x0,%eax -0x0804834d : leave -0x0804834e : ret + 0x08048348 <+24>: mov $0x0,%eax + 0x0804834d <+29>: leave + 0x0804834e <+30>: ret + +End of assembler dump. +@end smallexample +Here is another example showing raw instructions in hex for AMD x86-64, + +@smallexample +(gdb) disas /r 0x400281,+10 +Dump of assembler code from 0x400281 to 0x40028b: + 0x0000000000400281: 38 36 cmp %dh,(%rsi) + 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax + 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx) + 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al End of assembler dump. @end smallexample @@ -6451,7 +6879,8 @@ The usual way to examine data in your program is with the @code{print} command (abbreviated @code{p}), or its synonym @code{inspect}. It evaluates and prints the value of an expression of the language your program is written in (@pxref{Languages, ,Using @value{GDBN} with -Different Languages}). +Different Languages}). It may also print the expression using a +Python-based pretty-printer (@pxref{Pretty Printing}). @table @code @item print @var{expr} @@ -6488,6 +6917,7 @@ Table}. * Memory:: Examining memory * Auto Display:: Automatic display * Print Settings:: Print settings +* Pretty Printing:: Python pretty printing * Value History:: Value history * Convenience Vars:: Convenience variables * Registers:: Registers @@ -6949,8 +7379,10 @@ array. @item r @cindex raw printing Print using the @samp{raw} formatting. By default, @value{GDBN} will -use a type-specific pretty-printer. The @samp{r} format bypasses any -pretty-printer which might exist for the value's type. +use a Python-based pretty-printer, if one is available (@pxref{Pretty +Printing}). This typically results in a higher-level display of the +value's contents. The @samp{r} format bypasses any Python +pretty-printer which might exist. @end table For example, to print the program counter in hex (@pxref{Registers}), type @@ -7017,8 +7449,16 @@ Giant words (eight bytes). @end table Each time you specify a unit size with @code{x}, that size becomes the -default unit the next time you use @code{x}. (For the @samp{s} and -@samp{i} formats, the unit size is ignored and is normally not written.) +default unit the next time you use @code{x}. For the @samp{i} format, +the unit size is ignored and is normally not written. For the @samp{s} format, +the unit size defaults to @samp{b}, unless it is explicitly given. +Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display +32-bit strings. The next use of @kbd{x /s} will again display 8-bit strings. +Note that the results depend on the programming language of the +current compilation unit. If the language is C, the @samp{s} +modifier will use the UTF-16 encoding while @samp{w} will use +UTF-32. The encoding is set by the programming language and cannot +be altered. @item @var{addr}, starting display address @var{addr} is the address where you want @value{GDBN} to begin displaying @@ -7062,6 +7502,18 @@ with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command, the repeat count @var{n} is used again; the other arguments default as for successive uses of @code{x}. +When examining machine instructions, the instruction at current program +counter is shown with a @code{=>} marker. For example: + +@smallexample +(@value{GDBP}) x/5i $pc-6 + 0x804837f : mov %esp,%ebp + 0x8048381 : push %ecx + 0x8048382 : sub $0x4,%esp +=> 0x8048385 : movl $0x8048460,(%esp) + 0x804838c : call 0x80482d4 +@end smallexample + @cindex @code{$_}, @code{$__}, and value history The addresses and contents printed by the @code{x} command are not saved in the value history because there is often too much of them and they @@ -7644,6 +8096,42 @@ Do not pretty print C@t{++} virtual function tables. Show whether C@t{++} virtual function tables are pretty printed, or not. @end table +@node Pretty Printing +@section Pretty Printing + +@value{GDBN} provides a mechanism to allow pretty-printing of values using +Python code. It greatly simplifies the display of complex objects. This +mechanism works for both MI and the CLI. + +For example, here is how a C@t{++} @code{std::string} looks without a +pretty-printer: + +@smallexample +(@value{GDBP}) print s +$1 = @{ + static npos = 4294967295, + _M_dataplus = @{ + > = @{ + <__gnu_cxx::new_allocator> = @{ + @}, + @}, + members of std::basic_string, + std::allocator >::_Alloc_hider: + _M_p = 0x804a014 "abcd" + @} +@} +@end smallexample + +With a pretty-printer for @code{std::string} only the contents are printed: + +@smallexample +(@value{GDBP}) print s +$2 = "abcd" +@end smallexample + +For implementing pretty printers for new types you should read the Python API +details (@pxref{Pretty Printing API}). + @node Value History @section Value History @@ -7817,10 +8305,28 @@ to match the format in which the data was printed. The variable @code{$_exitcode} is automatically set to the exit code when the program being debugged terminates. +@item $_sdata +@vindex $_sdata@r{, inspect, convenience variable} +The variable @code{$_sdata} contains extra collected static tracepoint +data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that +@code{$_sdata} could be empty, if not inspecting a trace buffer, or +if extra static tracepoint data has not been collected. + @item $_siginfo @vindex $_siginfo@r{, convenience variable} -The variable @code{$_siginfo} is bound to extra signal information -inspection (@pxref{extra signal information}). +The variable @code{$_siginfo} contains extra signal information +(@pxref{extra signal information}). Note that @code{$_siginfo} +could be empty, if the application has not yet received any signals. +For example, it will be empty before you execute the @code{run} command. + +@item $_tlb +@vindex $_tlb@r{, convenience variable} +The variable @code{$_tlb} is automatically set when debugging +applications running on MS-Windows in native mode or connected to +gdbserver that supports the @code{qGetTIBAddr} request. +@xref{General Query Packets}. +This variable contains the address of the thread information block. + @end table On HP-UX systems, if you refer to a function or variable name that @@ -8062,6 +8568,12 @@ this functionality depends on the remote stub's support of the @samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}. @table @code +@kindex info os +@item info os +List the types of OS information available for the target. If the +target does not return a list of possible types, this command will +report an error. + @kindex info os processes @item info os processes Display the list of processes on the target. For each process, @@ -9070,12 +9582,17 @@ support tracepoints as of this writing. The format of the remote packets used to implement tracepoints are described in @ref{Tracepoint Packets}. +It is also possible to get trace data from a file, in a manner reminiscent +of corefiles; you specify the filename, and use @code{tfind} to search +through the file. @xref{Trace Files}, for more details. + This chapter describes the tracepoint commands and features. @menu * Set Tracepoints:: * Analyze Collected Data:: * Tracepoint Variables:: +* Trace Files:: @end menu @node Set Tracepoints @@ -9096,10 +9613,39 @@ local variables, or global data. Later, you can use @value{GDBN} commands to examine the values these data had at the time the tracepoint was hit. -Tracepoints do not support every breakpoint feature. Conditional -expressions and ignore counts on tracepoints have no effect, and -tracepoints cannot run @value{GDBN} commands when they are -hit. Tracepoints may not be thread-specific either. +Tracepoints do not support every breakpoint feature. Ignore counts on +tracepoints have no effect, and tracepoints cannot run @value{GDBN} +commands when they are hit. Tracepoints may not be thread-specific +either. + +@cindex fast tracepoints +Some targets may support @dfn{fast tracepoints}, which are inserted in +a different way (such as with a jump instead of a trap), that is +faster but possibly restricted in where they may be installed. + +@cindex static tracepoints +@cindex markers, static tracepoints +@cindex probing markers, static tracepoints +Regular and fast tracepoints are dynamic tracing facilities, meaning +that they can be used to insert tracepoints at (almost) any location +in the target. Some targets may also support controlling @dfn{static +tracepoints} from @value{GDBN}. With static tracing, a set of +instrumentation points, also known as @dfn{markers}, are embedded in +the target program, and can be activated or deactivated by name or +address. These are usually placed at locations which facilitate +investigating what the target is actually doing. @value{GDBN}'s +support for static tracing includes being able to list instrumentation +points, and attach them with @value{GDBN} defined high level +tracepoints that expose the whole range of convenience of +@value{GDBN}'s tracepoints support. Namelly, support for collecting +registers values and values of global or local (to the instrumentation +point) variables; tracepoint conditions and trace state variables. +The act of installing a @value{GDBN} static tracepoint on an +instrumentation point, or marker, is referred to as @dfn{probing} a +static tracepoint marker. + +@code{gdbserver} supports tracepoints on some target systems. +@xref{Server,,Tracepoints support in @code{gdbserver}}. This section describes commands to set tracepoints and associated conditions and actions. @@ -9109,9 +9655,12 @@ conditions and actions. * Enable and Disable Tracepoints:: * Tracepoint Passcounts:: * Tracepoint Conditions:: +* Trace State Variables:: * Tracepoint Actions:: * Listing Tracepoints:: +* Listing Static Tracepoint Markers:: * Starting and Stopping Trace Experiments:: +* Tracepoint Restrictions:: @end menu @node Create and Delete Tracepoints @@ -9155,6 +9704,82 @@ if the value is nonzero---that is, if @var{cond} evaluates as true. @xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more information on tracepoint conditions. +@item ftrace @var{location} [ if @var{cond} ] +@cindex set fast tracepoint +@cindex fast tracepoints, setting +@kindex ftrace +The @code{ftrace} command sets a fast tracepoint. For targets that +support them, fast tracepoints will use a more efficient but possibly +less general technique to trigger data collection, such as a jump +instruction instead of a trap, or some sort of hardware support. It +may not be possible to create a fast tracepoint at the desired +location, in which case the command will exit with an explanatory +message. + +@value{GDBN} handles arguments to @code{ftrace} exactly as for +@code{trace}. + +@item strace @var{location} [ if @var{cond} ] +@cindex set static tracepoint +@cindex static tracepoints, setting +@cindex probe static tracepoint marker +@kindex strace +The @code{strace} command sets a static tracepoint. For targets that +support it, setting a static tracepoint probes a static +instrumentation point, or marker, found at @var{location}. It may not +be possible to set a static tracepoint at the desired location, in +which case the command will exit with an explanatory message. + +@value{GDBN} handles arguments to @code{strace} exactly as for +@code{trace}, with the addition that the user can also specify +@code{-m @var{marker}} as @var{location}. This probes the marker +identified by the @var{marker} string identifier. This identifier +depends on the static tracepoint backend library your program is +using. You can find all the marker identifiers in the @samp{ID} field +of the @code{info static-tracepoint-markers} command output. +@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint +Markers}. For example, in the following small program using the UST +tracing engine: + +@smallexample +main () +@{ + trace_mark(ust, bar33, "str %s", "FOOBAZ"); +@} +@end smallexample + +@noindent +the marker id is composed of joining the first two arguments to the +@code{trace_mark} call with a slash, which translates to: + +@smallexample +(@value{GDBP}) info static-tracepoint-markers +Cnt Enb ID Address What +1 n ust/bar33 0x0000000000400ddc in main at stexample.c:22 + Data: "str %s" +[etc...] +@end smallexample + +@noindent +so you may probe the marker above with: + +@smallexample +(@value{GDBP}) strace -m ust/bar33 +@end smallexample + +Static tracepoints accept an extra collect action --- @code{collect +$_sdata}. This collects arbitrary user data passed in the probe point +call to the tracing library. In the UST example above, you'll see +that the third argument to @code{trace_mark} is a printf-like format +string. The user data is then the result of running that formating +string against the following arguments. Note that @code{info +static-tracepoint-markers} command output lists that format string in +the @samp{Data:} field. + +You can inspect this data when analyzing the trace buffer, by printing +the $_sdata variable like any other variable available to +@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}. + @vindex $tpnum @cindex last tracepoint number @cindex recent tracepoint number @@ -9275,6 +9900,59 @@ search through. (@value{GDBP}) @kbd{trace normal_operation if errcode > 0} @end smallexample +@node Trace State Variables +@subsection Trace State Variables +@cindex trace state variables + +A @dfn{trace state variable} is a special type of variable that is +created and managed by target-side code. The syntax is the same as +that for GDB's convenience variables (a string prefixed with ``$''), +but they are stored on the target. They must be created explicitly, +using a @code{tvariable} command. They are always 64-bit signed +integers. + +Trace state variables are remembered by @value{GDBN}, and downloaded +to the target along with tracepoint information when the trace +experiment starts. There are no intrinsic limits on the number of +trace state variables, beyond memory limitations of the target. + +@cindex convenience variables, and trace state variables +Although trace state variables are managed by the target, you can use +them in print commands and expressions as if they were convenience +variables; @value{GDBN} will get the current value from the target +while the trace experiment is running. Trace state variables share +the same namespace as other ``$'' variables, which means that you +cannot have trace state variables with names like @code{$23} or +@code{$pc}, nor can you have a trace state variable and a convenience +variable with the same name. + +@table @code + +@item tvariable $@var{name} [ = @var{expression} ] +@kindex tvariable +The @code{tvariable} command creates a new trace state variable named +@code{$@var{name}}, and optionally gives it an initial value of +@var{expression}. @var{expression} is evaluated when this command is +entered; the result will be converted to an integer if possible, +otherwise @value{GDBN} will report an error. A subsequent +@code{tvariable} command specifying the same name does not create a +variable, but instead assigns the supplied initial value to the +existing variable of that name, overwriting any previous initial +value. The default initial value is 0. + +@item info tvariables +@kindex info tvariables +List all the trace state variables along with their initial values. +Their current values may also be displayed, if the trace experiment is +currently running. + +@item delete tvariable @r{[} $@var{name} @dots{} @r{]} +@kindex delete tvariable +Delete the given trace state variables, or all of them if no arguments +are specified. + +@end table + @node Tracepoint Actions @subsection Tracepoint Action Lists @@ -9289,9 +9967,13 @@ recently defined (so that you can define a tracepoint and then say @code{actions} without bothering about its number). You specify the actions themselves on the following lines, one action at a time, and terminate the actions list with a line containing just @code{end}. So -far, the only defined actions are @code{collect} and +far, the only defined actions are @code{collect}, @code{teval}, and @code{while-stepping}. +@code{actions} is actually equivalent to @code{commands} (@pxref{Break +Commands, ,Breakpoint Command Lists}), except that only the defined +actions are allowed; any other @value{GDBN} command is rejected. + @cindex remove actions from a tracepoint To remove all actions from a tracepoint, type @samp{actions @var{num}} and follow it immediately with @samp{end}. @@ -9308,10 +9990,10 @@ In the following example, the action list begins with @code{collect} commands indicating the things to be collected when the tracepoint is hit. Then, in order to single-step and collect additional data following the tracepoint, a @code{while-stepping} command is used, -followed by the list of things to be collected while stepping. The -@code{while-stepping} command is terminated by its own separate -@code{end} command. Lastly, the action list is terminated by an -@code{end} command. +followed by the list of things to be collected after each step in a +sequence of single steps. The @code{while-stepping} command is +terminated by its own separate @code{end} command. Lastly, the action +list is terminated by an @code{end} command. @smallexample (@value{GDBP}) @b{trace foo} @@ -9320,7 +10002,7 @@ Enter actions for tracepoint 1, one per line: > collect bar,baz > collect $regs > while-stepping 12 - > collect $fp, $sp + > collect $pc, arr[i] > end end @end smallexample @@ -9334,28 +10016,58 @@ special arguments are supported: @table @code @item $regs -collect all registers +Collect all registers. @item $args -collect all function arguments +Collect all function arguments. @item $locals -collect all local variables. +Collect all local variables. + +@item $_sdata +@vindex $_sdata@r{, collect} +Collect static tracepoint marker specific data. Only available for +static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action +Lists}. On the UST static tracepoints library backend, an +instrumentation point resembles a @code{printf} function call. The +tracing library is able to collect user specified data formatted to a +character string using the format provided by the programmer that +instrumented the program. Other backends have similar mechanisms. +Here's an example of a UST marker call: + +@smallexample + const char master_name[] = "$your_name"; + trace_mark(channel1, marker1, "hello %s", master_name) +@end smallexample + +In this case, collecting @code{$_sdata} collects the string +@samp{hello $yourname}. When analyzing the trace buffer, you can +inspect @samp{$_sdata} like any other variable available to +@value{GDBN}. @end table You can give several consecutive @code{collect} commands, each one with a single argument, or one @code{collect} command with several -arguments separated by commas: the effect is the same. +arguments separated by commas; the effect is the same. The command @code{info scope} (@pxref{Symbols, info scope}) is particularly useful for figuring out what data to collect. +@kindex teval @r{(tracepoints)} +@item teval @var{expr1}, @var{expr2}, @dots{} +Evaluate the given expressions when the tracepoint is hit. This +command accepts a comma-separated list of expressions. The results +are discarded, so this is mainly useful for assigning values to trace +state variables (@pxref{Trace State Variables}) without adding those +values to the trace buffer, as would be the case if the @code{collect} +action were used. + @kindex while-stepping @r{(tracepoints)} @item while-stepping @var{n} -Perform @var{n} single-step traces after the tracepoint, collecting -new data at each step. The @code{while-stepping} command is -followed by the list of what to collect while stepping (followed by -its own @code{end} command): +Perform @var{n} single-step instruction traces after the tracepoint, +collecting new data after each step. The @code{while-stepping} +command is followed by the list of what to collect while stepping +(followed by its own @code{end} command): @smallexample > while-stepping 12 @@ -9365,8 +10077,26 @@ its own @code{end} command): @end smallexample @noindent -You may abbreviate @code{while-stepping} as @code{ws} or +Note that @code{$pc} is not automatically collected by +@code{while-stepping}; you need to explicitly collect that register if +you need it. You may abbreviate @code{while-stepping} as @code{ws} or @code{stepping}. + +@item set default-collect @var{expr1}, @var{expr2}, @dots{} +@kindex set default-collect +@cindex default collection action +This variable is a list of expressions to collect at each tracepoint +hit. It is effectively an additional @code{collect} action prepended +to every tracepoint action list. The expressions are parsed +individually for each tracepoint, so for instance a variable named +@code{xyz} may be interpreted as a global for one tracepoint, and a +local for another, as appropriate to the tracepoint's location. + +@item show default-collect +@kindex show default-collect +Show the list of expressions that are collected by default at each +tracepoint hit. + @end table @node Listing Tracepoints @@ -9389,24 +10119,18 @@ tracing: @itemize @bullet @item its passcount as given by the @code{passcount @var{n}} command -@item -its step count as given by the @code{while-stepping @var{n}} command -@item -its action list as given by the @code{actions} command. The actions -are prefixed with an @samp{A} so as to distinguish them from commands. @end itemize @smallexample (@value{GDBP}) @b{info trace} Num Type Disp Enb Address What 1 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7 + while-stepping 20 + collect globfoo, $regs + end + collect globfoo2 + end pass count 1200 - step count 20 - A while-stepping 20 - A collect globfoo, $regs - A end - A collect globfoo2 - A end (@value{GDBP}) @end smallexample @@ -9414,6 +10138,60 @@ Num Type Disp Enb Address What This command can be abbreviated @code{info tp}. @end table +@node Listing Static Tracepoint Markers +@subsection Listing Static Tracepoint Markers + +@table @code +@kindex info static-tracepoint-markers +@cindex information about static tracepoint markers +@item info static-tracepoint-markers +Display information about all static tracepoint markers defined in the +program. + +For each marker, the following columns are printed: + +@table @emph +@item Count +An incrementing counter, output to help readability. This is not a +stable identifier. +@item ID +The marker ID, as reported by the target. +@item Enabled or Disabled +Probed markers are tagged with @samp{y}. @samp{n} identifies marks +that are not enabled. +@item Address +Where the marker is in your program, as a memory address. +@item What +Where the marker is in the source for your program, as a file and line +number. If the debug information included in the program does not +allow @value{GDBN} to locate the source of the marker, this column +will be left blank. +@end table + +@noindent +In addition, the following information may be printed for each marker: + +@table @emph +@item Data +User data passed to the tracing library by the marker call. In the +UST backend, this is the format string passed as argument to the +marker call. +@item Static tracepoints probing the marker +The list of static tracepoints attached to the marker. +@end table + +@smallexample +(@value{GDBP}) info static-tracepoint-markers +Cnt ID Enb Address What +1 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25 + Data: number1 %d number2 %d + Probed by static tracepoints: #2 +2 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24 + Data: str %s +(@value{GDBP}) +@end smallexample +@end table + @node Starting and Stopping Trace Experiments @subsection Starting and Stopping Trace Experiments @@ -9461,6 +10239,154 @@ Enter actions for tracepoint #1, one per line. (@value{GDBP}) @b{tstop} @end smallexample +@cindex disconnected tracing +You can choose to continue running the trace experiment even if +@value{GDBN} disconnects from the target, voluntarily or +involuntarily. For commands such as @code{detach}, the debugger will +ask what you want to do with the trace. But for unexpected +terminations (@value{GDBN} crash, network outage), it would be +unfortunate to lose hard-won trace data, so the variable +@code{disconnected-tracing} lets you decide whether the trace should +continue running without @value{GDBN}. + +@table @code +@item set disconnected-tracing on +@itemx set disconnected-tracing off +@kindex set disconnected-tracing +Choose whether a tracing run should continue to run if @value{GDBN} +has disconnected from the target. Note that @code{detach} or +@code{quit} will ask you directly what to do about a running trace no +matter what this variable's setting, so the variable is mainly useful +for handling unexpected situations, such as loss of the network. + +@item show disconnected-tracing +@kindex show disconnected-tracing +Show the current choice for disconnected tracing. + +@end table + +When you reconnect to the target, the trace experiment may or may not +still be running; it might have filled the trace buffer in the +meantime, or stopped for one of the other reasons. If it is running, +it will continue after reconnection. + +Upon reconnection, the target will upload information about the +tracepoints in effect. @value{GDBN} will then compare that +information to the set of tracepoints currently defined, and attempt +to match them up, allowing for the possibility that the numbers may +have changed due to creation and deletion in the meantime. If one of +the target's tracepoints does not match any in @value{GDBN}, the +debugger will create a new tracepoint, so that you have a number with +which to specify that tracepoint. This matching-up process is +necessarily heuristic, and it may result in useless tracepoints being +created; you may simply delete them if they are of no use. + +@cindex circular trace buffer +If your target agent supports a @dfn{circular trace buffer}, then you +can run a trace experiment indefinitely without filling the trace +buffer; when space runs out, the agent deletes already-collected trace +frames, oldest first, until there is enough room to continue +collecting. This is especially useful if your tracepoints are being +hit too often, and your trace gets terminated prematurely because the +buffer is full. To ask for a circular trace buffer, simply set +@samp{circular_trace_buffer} to on. You can set this at any time, +including during tracing; if the agent can do it, it will change +buffer handling on the fly, otherwise it will not take effect until +the next run. + +@table @code +@item set circular-trace-buffer on +@itemx set circular-trace-buffer off +@kindex set circular-trace-buffer +Choose whether a tracing run should use a linear or circular buffer +for trace data. A linear buffer will not lose any trace data, but may +fill up prematurely, while a circular buffer will discard old trace +data, but it will have always room for the latest tracepoint hits. + +@item show circular-trace-buffer +@kindex show circular-trace-buffer +Show the current choice for the trace buffer. Note that this may not +match the agent's current buffer handling, nor is it guaranteed to +match the setting that might have been in effect during a past run, +for instance if you are looking at frames from a trace file. + +@end table + +@node Tracepoint Restrictions +@subsection Tracepoint Restrictions + +@cindex tracepoint restrictions +There are a number of restrictions on the use of tracepoints. As +described above, tracepoint data gathering occurs on the target +without interaction from @value{GDBN}. Thus the full capabilities of +the debugger are not available during data gathering, and then at data +examination time, you will be limited by only having what was +collected. The following items describe some common problems, but it +is not exhaustive, and you may run into additional difficulties not +mentioned here. + +@itemize @bullet + +@item +Tracepoint expressions are intended to gather objects (lvalues). Thus +the full flexibility of GDB's expression evaluator is not available. +You cannot call functions, cast objects to aggregate types, access +convenience variables or modify values (except by assignment to trace +state variables). Some language features may implicitly call +functions (for instance Objective-C fields with accessors), and therefore +cannot be collected either. + +@item +Collection of local variables, either individually or in bulk with +@code{$locals} or @code{$args}, during @code{while-stepping} may +behave erratically. The stepping action may enter a new scope (for +instance by stepping into a function), or the location of the variable +may change (for instance it is loaded into a register). The +tracepoint data recorded uses the location information for the +variables that is correct for the tracepoint location. When the +tracepoint is created, it is not possible, in general, to determine +where the steps of a @code{while-stepping} sequence will advance the +program---particularly if a conditional branch is stepped. + +@item +Collection of an incompletely-initialized or partially-destroyed object +may result in something that @value{GDBN} cannot display, or displays +in a misleading way. + +@item +When @value{GDBN} displays a pointer to character it automatically +dereferences the pointer to also display characters of the string +being pointed to. However, collecting the pointer during tracing does +not automatically collect the string. You need to explicitly +dereference the pointer and provide size information if you want to +collect not only the pointer, but the memory pointed to. For example, +@code{*ptr@@50} can be used to collect the 50 element array pointed to +by @code{ptr}. + +@item +It is not possible to collect a complete stack backtrace at a +tracepoint. Instead, you may collect the registers and a few hundred +bytes from the stack pointer with something like @code{*$esp@@300} +(adjust to use the name of the actual stack pointer register on your +target architecture, and the amount of stack you wish to capture). +Then the @code{backtrace} command will show a partial backtrace when +using a trace frame. The number of stack frames that can be examined +depends on the sizes of the frames in the collected stack. Note that +if you ask for a block so large that it goes past the bottom of the +stack, the target agent may report an error trying to read from an +invalid address. + +@item +If you do not collect registers at a tracepoint, @value{GDBN} can +infer that the value of @code{$pc} must be the same as the address of +the tracepoint and use that when you are looking at a trace frame +for that tracepoint. However, this cannot work if the tracepoint has +multiple locations (for instance if it was set in a function that was +inlined), or if it has a @code{while-stepping} loop. In those cases +@value{GDBN} will warn you that it can't infer @code{$pc}, and default +it to zero. + +@end itemize @node Analyze Collected Data @section Using the Collected Data @@ -9484,7 +10410,7 @@ the buffer will fail. @menu * tfind:: How to select a trace snapshot * tdump:: How to display all data for a snapshot -* save-tracepoints:: How to save tracepoints for a future run +* save tracepoints:: How to save tracepoints for a future run @end menu @node tfind @@ -9532,11 +10458,11 @@ snapshot with the same value of PC as the current snapshot. @item tfind outside @var{addr1}, @var{addr2} Find the next snapshot whose PC is outside the given range of -addresses. +addresses (exclusive). @item tfind range @var{addr1}, @var{addr2} Find the next snapshot whose PC is between @var{addr1} and -@var{addr2}. @c FIXME: Is the range inclusive or exclusive? +@var{addr2} (inclusive). @item tfind line @r{[}@var{file}:@r{]}@var{n} Find the next snapshot associated with the source line @var{n}. If @@ -9663,8 +10589,25 @@ gdb_long_test = 17 '\021' (@value{GDBP}) @end smallexample -@node save-tracepoints -@subsection @code{save-tracepoints @var{filename}} +@code{tdump} works by scanning the tracepoint's current collection +actions and printing the value of each expression listed. So +@code{tdump} can fail, if after a run, you change the tracepoint's +actions to mention variables that were not collected during the run. + +Also, for tracepoints with @code{while-stepping} loops, @code{tdump} +uses the collected value of @code{$pc} to distinguish between trace +frames that were collected at the tracepoint hit, and frames that were +collected while stepping. This allows it to correctly choose whether +to display the basic list of collections, or the collections from the +body of the while-stepping loop. However, if @code{$pc} was not collected, +then @code{tdump} will always attempt to dump using the basic collection +list, and may fail if a while-stepping frame does not include all the +same data that is collected at the tracepoint hit. +@c This is getting pretty arcane, example would be good. + +@node save tracepoints +@subsection @code{save tracepoints @var{filename}} +@kindex save tracepoints @kindex save-tracepoints @cindex save tracepoints for future sessions @@ -9672,7 +10615,8 @@ This command saves all current tracepoint definitions together with their actions and passcounts, into a file @file{@var{filename}} suitable for use in a later debugging session. To read the saved tracepoint definitions, use the @code{source} command (@pxref{Command -Files}). +Files}). The @w{@code{save-tracepoints}} command is a deprecated +alias for @w{@code{save tracepoints}} @node Tracepoint Variables @section Convenience Variables for Tracepoints @@ -9707,7 +10651,8 @@ use @code{output} instead. Here's a simple example of using these convenience variables for stepping through all the trace snapshots and printing some of their -data. +data. Note that these are not the same as trace state variables, +which are managed by the target. @smallexample (@value{GDBP}) @b{tfind start} @@ -9719,6 +10664,41 @@ data. > end @end smallexample +@node Trace Files +@section Using Trace Files +@cindex trace files + +In some situations, the target running a trace experiment may no +longer be available; perhaps it crashed, or the hardware was needed +for a different activity. To handle these cases, you can arrange to +dump the trace data into a file, and later use that file as a source +of trace data, via the @code{target tfile} command. + +@table @code + +@kindex tsave +@item tsave [ -r ] @var{filename} +Save the trace data to @var{filename}. By default, this command +assumes that @var{filename} refers to the host filesystem, so if +necessary @value{GDBN} will copy raw trace data up from the target and +then save it. If the target supports it, you can also supply the +optional argument @code{-r} (``remote'') to direct the target to save +the data directly into @var{filename} in its own filesystem, which may be +more efficient if the trace buffer is very large. (Note, however, that +@code{target tfile} can only read from files accessible to the host.) + +@kindex target tfile +@kindex tfile +@item target tfile @var{filename} +Use the file named @var{filename} as a source of trace data. Commands +that examine data work as they do with a live target, but it is not +possible to run any new trace experiments. @code{tstatus} will report +the state of the trace run at the moment the data was saved, as well +as the current trace frame you are examining. @var{filename} must be +on a filesystem accessible to the host. + +@end table + @node Overlays @chapter Debugging Programs That Use Overlays @cindex overlays @@ -10192,6 +11172,9 @@ C source file @itemx .c++ C@t{++} source file +@item .d +D source file + @item .m Objective-C source file @@ -10469,7 +11452,7 @@ being set automatically by @value{GDBN}. @node Supported Languages @section Supported Languages -@value{GDBN} supports C, C@t{++}, Objective-C, Fortran, Java, Pascal, +@value{GDBN} supports C, C@t{++}, D, Objective-C, Fortran, Java, Pascal, assembly, Modula-2, and Ada. @c This is false ... Some @value{GDBN} features may be used in expressions regardless of the @@ -10488,6 +11471,7 @@ language reference or tutorial. @menu * C:: C and C@t{++} +* D:: D * Objective-C:: Objective-C * Fortran:: Fortran * Pascal:: Pascal @@ -11025,6 +12009,14 @@ In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers to inspect @code{_Decimal128} values stored in floating point registers. See @ref{PowerPC,,PowerPC} for more details. +@node D +@subsection D + +@cindex D +@value{GDBN} can be used to debug programs written in D and compiled with +GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D +specific feature --- dynamic arrays. + @node Objective-C @subsection Objective-C @@ -12443,6 +13435,34 @@ by qualifying the problematic names with package @code{Standard} explicitly. @end itemize +Older versions of the compiler sometimes generate erroneous debugging +information, resulting in the debugger incorrectly printing the value +of affected entities. In some cases, the debugger is able to work +around an issue automatically. In other cases, the debugger is able +to work around the issue, but the work-around has to be specifically +enabled. + +@kindex set ada trust-PAD-over-XVS +@kindex show ada trust-PAD-over-XVS +@table @code + +@item set ada trust-PAD-over-XVS on +Configure GDB to strictly follow the GNAT encoding when computing the +value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS} +types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for +a complete description of the encoding used by the GNAT compiler). +This is the default. + +@item set ada trust-PAD-over-XVS off +This is related to the encoding using by the GNAT compiler. If @value{GDBN} +sometimes prints the wrong value for certain entities, changing @code{ada +trust-PAD-over-XVS} to @code{off} activates a work-around which may fix +the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to +@code{off}, but this incurs a slight performance penalty, so it is +recommended to leave this setting to @code{on} unless necessary. + +@end table + @node Unsupported Languages @section Unsupported Languages @@ -12702,7 +13722,7 @@ that conflict with the regular expression language (e.g.@: @kindex info variables @item info variables -Print the names and data types of all variables that are declared +Print the names and data types of all variables that are defined outside of functions (i.e.@: excluding local variables). @item info variables @var{regexp} @@ -13393,8 +14413,8 @@ in stabs format. @kindex readnow @cindex reading symbols immediately @cindex symbols, reading immediately -@item symbol-file @var{filename} @r{[} -readnow @r{]} -@itemx file @var{filename} @r{[} -readnow @r{]} +@item symbol-file @r{[} -readnow @r{]} @var{filename} +@itemx file @r{[} -readnow @r{]} @var{filename} You can override the @value{GDBN} two-stage strategy for reading symbol tables by using the @samp{-readnow} option with any of the commands that load symbol table information, if you want to be sure @value{GDBN} has the @@ -13744,11 +14764,64 @@ The part of @var{path} following the initial @file{remote:} that happens to be named @file{remote:}, you need to use some equivalent variant of the name like @file{./remote:}.} -The @code{set solib-absolute-prefix} command is an alias for @code{set -sysroot}. +For targets with an MS-DOS based filesystem, such as MS-Windows and +SymbianOS, @value{GDBN} tries prefixing a few variants of the target +absolute file name with @var{path}. But first, on Unix hosts, +@value{GDBN} converts all backslash directory separators into forward +slashes, because the backslash is not a directory separator on Unix: -@cindex default system root -@cindex @samp{--with-sysroot} +@smallexample + c:\foo\bar.dll @result{} c:/foo/bar.dll +@end smallexample + +Then, @value{GDBN} attempts prefixing the target file name with +@var{path}, and looks for the resulting file name in the host file +system: + +@smallexample + c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll +@end smallexample + +If that does not find the shared library, @value{GDBN} tries removing +the @samp{:} character from the drive spec, both for convenience, and, +for the case of the host file system not supporting file names with +colons: + +@smallexample + c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll +@end smallexample + +This makes it possible to have a system root that mirrors a target +with more than one drive. E.g., you may want to setup your local +copies of the target system shared libraries like so (note @samp{c} vs +@samp{z}): + +@smallexample + @file{/path/to/sysroot/c/sys/bin/foo.dll} + @file{/path/to/sysroot/c/sys/bin/bar.dll} + @file{/path/to/sysroot/z/sys/bin/bar.dll} +@end smallexample + +@noindent +and point the system root at @file{/path/to/sysroot}, so that +@value{GDBN} can find the correct copies of both +@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}. + +If that still does not find the shared library, @value{GDBN} tries +removing the whole drive spec from the target file name: + +@smallexample + c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll +@end smallexample + +This last lookup makes it possible to not care about the drive name, +if you don't want or need to. + +The @code{set solib-absolute-prefix} command is an alias for @code{set +sysroot}. + +@cindex default system root +@cindex @samp{--with-sysroot} You can set the default system root by using the configure-time @samp{--with-sysroot} option. If the system root is inside @value{GDBN}'s configured binary prefix (set with @samp{--prefix} or @@ -13775,6 +14848,55 @@ of shared library symbols. @kindex show solib-search-path @item show solib-search-path Display the current shared library search path. + +@cindex DOS file-name semantics of file names. +@kindex set target-file-system-kind (unix|dos-based|auto) +@kindex show target-file-system-kind +@item set target-file-system-kind @var{kind} +Set assumed file system kind for target reported file names. + +Shared library file names as reported by the target system may not +make sense as is on the system @value{GDBN} is running on. For +example, when remote debugging a target that has MS-DOS based file +system semantics, from a Unix host, the target may be reporting to +@value{GDBN} a list of loaded shared libraries with file names such as +@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of +drive letters, so the @samp{c:\} prefix is not normally understood as +indicating an absolute file name, and neither is the backslash +normally considered a directory separator character. In that case, +the native file system would interpret this whole absolute file name +as a relative file name with no directory components. This would make +it impossible to point @value{GDBN} at a copy of the remote target's +shared libraries on the host using @code{set sysroot}, and impractical +with @code{set solib-search-path}. Setting +@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN} +to interpret such file names similarly to how the target would, and to +map them to file names valid on @value{GDBN}'s native file system +semantics. The value of @var{kind} can be @code{"auto"}, in addition +to one of the supported file system kinds. In that case, @value{GDBN} +tries to determine the appropriate file system variant based on the +current target's operating system (@pxref{ABI, ,Configuring the +Current ABI}). The supported file system settings are: + +@table @code +@item unix +Instruct @value{GDBN} to assume the target file system is of Unix +kind. Only file names starting the forward slash (@samp{/}) character +are considered absolute, and the directory separator character is also +the forward slash. + +@item dos-based +Instruct @value{GDBN} to assume the target file system is DOS based. +File names starting with either a forward slash, or a drive letter +followed by a colon (e.g., @samp{c:}), are considered absolute, and +both the slash (@samp{/}) and the backslash (@samp{\\}) characters are +considered directory separators. + +@item auto +Instruct @value{GDBN} to use the file system kind associated with the +target operating system (@pxref{ABI, ,Configuring the Current ABI}). +This is the default. +@end table @end table @@ -13866,13 +14988,14 @@ name @value{GDBN} is currently using. @table @code @kindex set debug-file-directory -@item set debug-file-directory @var{directory} -Set the directory which @value{GDBN} searches for separate debugging -information files to @var{directory}. +@item set debug-file-directory @var{directories} +Set the directories which @value{GDBN} searches for separate debugging +information files to @var{directory}. Multiple directory components can be set +concatenating them by a directory separator. @kindex show debug-file-directory @item show debug-file-directory -Show the directory @value{GDBN} searches for separate debugging +Show the directories @value{GDBN} searches for separate debugging information files. @end table @@ -14359,7 +15482,7 @@ useful if you have some other way of getting the stub to the target system, and you can put it somewhere in memory where it won't get clobbered by the download. -@item target sim +@item target sim @r{[}@var{simargs}@r{]} @dots{} @cindex built-in simulator target Builtin CPU simulator. @value{GDBN} includes simulators for most architectures. In general, @@ -14898,6 +16021,13 @@ Disable or enable general debugging messages. Disable or enable specific debugging messages associated with the remote protocol (@pxref{Remote Protocol}). +@item monitor set libthread-db-search-path [PATH] +@cindex gdbserver, search path for @code{libthread_db} +When this command is issued, @var{path} is a colon-separated list of +directories to search for @code{libthread_db} (@pxref{Threads,,set +libthread-db-search-path}). If you omit @var{path}, +@samp{libthread-db-search-path} will be reset to an empty list. + @item monitor exit Tell gdbserver to exit immediately. This command should be followed by @code{disconnect} to close the debugging session. @code{gdbserver} will @@ -14907,6 +16037,91 @@ of a multi-process mode debug session. @end table +@subsection Tracepoints support in @code{gdbserver} +@cindex tracepoints support in @code{gdbserver} + +On some targets, @code{gdbserver} supports tracepoints, fast +tracepoints and static tracepoints. + +For fast or static tracepoints to work, a special library called the +@dfn{in-process agent} (IPA), must be loaded in the inferior process. +This library is built and distributed as an integral part of +@code{gdbserver}. In addition, support for static tracepoints +requires building the in-process agent library with static tracepoints +support. At present, the UST (LTTng Userspace Tracer, +@url{http://lttng.org/ust}) tracing engine is supported. This support +is automatically available if UST development headers are found in the +standard include path when @code{gdbserver} is built, or if +@code{gdbserver} was explicitly configured using @option{--with-ust} +to point at such headers. You can explicitly disable the support +using @option{--with-ust=no}. + +There are several ways to load the in-process agent in your program: + +@table @code +@item Specifying it as dependency at link time + +You can link your program dynamically with the in-process agent +library. On most systems, this is accomplished by adding +@code{-linproctrace} to the link command. + +@item Using the system's preloading mechanisms + +You can force loading the in-process agent at startup time by using +your system's support for preloading shared libraries. Many Unixes +support the concept of preloading user defined libraries. In most +cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so} +in the environment. See also the description of @code{gdbserver}'s +@option{--wrapper} command line option. + +@item Using @value{GDBN} to force loading the agent at run time + +On some systems, you can force the inferior to load a shared library, +by calling a dynamic loader function in the inferior that takes care +of dynamically looking up and loading a shared library. On most Unix +systems, the function is @code{dlopen}. You'll use the @code{call} +command for that. For example: + +@smallexample +(@value{GDBP}) call dlopen ("libinproctrace.so", ...) +@end smallexample + +Note that on most Unix systems, for the @code{dlopen} function to be +available, the program needs to be linked with @code{-ldl}. +@end table + +On systems that have a userspace dynamic loader, like most Unix +systems, when you connect to @code{gdbserver} using @code{target +remote}, you'll find that the program is stopped at the dynamic +loader's entry point, and no shared library has been loaded in the +program's address space yet, including the in-process agent. In that +case, before being able to use any of the fast or static tracepoints +features, you need to let the loader run and load the shared +libraries. The simplest way to do that is to run the program to the +main procedure. E.g., if debugging a C or C@t{++} program, start +@code{gdbserver} like so: + +@smallexample +$ gdbserver :9999 myprogram +@end smallexample + +Start GDB and connect to @code{gdbserver} like so, and run to main: + +@smallexample +$ gdb myprogram +(@value{GDBP}) target remote myhost:9999 +0x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2 +(@value{GDBP}) b main +(@value{GDBP}) continue +@end smallexample + +The in-process tracing agent library should now be loaded into the +process; you can confirm it with the @code{info sharedlibrary} +command, which will list @file{libinproctrace.so} as loaded in the +process. You are now ready to install fast tracepoints, list static +tracepoint markers, probe static tracepoints markers, and start +tracing. + @node Remote Configuration @section Remote Configuration @@ -15009,6 +16224,34 @@ extended-remote}. This should be set to a filename valid on the target system. If it is not set, the target will use a default filename (e.g.@: the last program run). +@item set remote interrupt-sequence +@cindex interrupt remote programs +@cindex select Ctrl-C, BREAK or BREAK-g +Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or +@samp{BREAK-g} as the +sequence to the remote target in order to interrupt the execution. +@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which +is high level of serial line for some certain time. +Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g. +It is @code{BREAK} signal followed by character @code{g}. + +@item show interrupt-sequence +Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g} +is sent by @value{GDBN} to interrupt the remote program. +@code{BREAK-g} is BREAK signal followed by @code{g} and +also known as Magic SysRq g. + +@item set remote interrupt-on-connect +@cindex send interrupt-sequence on start +Specify whether interrupt-sequence is sent to remote target when +@value{GDBN} connects to it. This is mostly needed when you debug +Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g} +which is known as Magic SysRq g in order to connect @value{GDBN}. + +@item show interrupt-on-connect +Show whether interrupt-sequence is sent +to remote target when @value{GDBN} connects to it. + @kindex set tcp @kindex show tcp @item set tcp auto-retry on @@ -15128,6 +16371,10 @@ are: @tab @code{qXfer:memory-map:read} @tab @code{info mem} +@item @code{read-sdata-object} +@tab @code{qXfer:sdata:read} +@tab @code{print $_sdata} + @item @code{read-spu-object} @tab @code{qXfer:spu:read} @tab @code{info spu} @@ -15144,10 +16391,18 @@ are: @tab @code{qXfer:siginfo:write} @tab @code{set $_siginfo} +@item @code{threads} +@tab @code{qXfer:threads:read} +@tab @code{info threads} + @item @code{get-thread-local-@*storage-address} @tab @code{qGetTLSAddr} @tab Displaying @code{__thread} variables +@item @code{get-thread-information-block-address} +@tab @code{qGetTIBAddr} +@tab Display MS-Windows Thread Information Block. + @item @code{search-memory} @tab @code{qSearch:memory} @tab @code{find} @@ -15927,6 +17182,11 @@ a long value to give the information about this given selector. Without argument, this command displays information about the six segment registers. +@item info w32 thread-information-block +This command displays thread specific information stored in the +Thread Information Block (readable on the X86 CPU family using @code{$fs} +selector for 32-bit programs and @code{$gs} for 64-bit programs). + @kindex info dll @item info dll This is a Cygwin-specific alias of @code{info shared}. @@ -15957,7 +17217,7 @@ inside the Cygwin DLL itself. @item set new-console @var{mode} If @var{mode} is @code{on} the debuggee will be started in a new console on next start. -If @var{mode} is @code{off}i, the debuggee will +If @var{mode} is @code{off}, the debuggee will be started in the same console as the debugger. @kindex show new-console @@ -16568,6 +17828,7 @@ acceptable commands. * ARM:: ARM RDI * M32R/D:: Renesas M32R/D * M68K:: Motorola M68K +* MicroBlaze:: Xilinx MicroBlaze * MIPS Embedded:: MIPS Embedded * OpenRISC 1000:: OpenRisc 1000 * PA:: HP PA Embedded @@ -16715,6 +17976,25 @@ well as the Angel monitor. Show the setting of RDI heartbeat packets. @end table +@table @code +@item target sim @r{[}@var{simargs}@r{]} @dots{} +The @value{GDBN} ARM simulator accepts the following optional arguments. + +@table @code +@item --swi-support=@var{type} +Tell the simulator which SWI interfaces to support. +@var{type} may be a comma separated list of the following values. +The default value is @code{all}. + +@table @code +@item none +@item demon +@item angel +@item redboot +@item all +@end table +@end table +@end table @node M32R/D @subsection Renesas M32R/D and M32R/SDI @@ -16819,6 +18099,44 @@ dBUG ROM monitor for Motorola ColdFire. @end table +@node MicroBlaze +@subsection MicroBlaze +@cindex Xilinx MicroBlaze +@cindex XMD, Xilinx Microprocessor Debugger + +The MicroBlaze is a soft-core processor supported on various Xilinx +FPGAs, such as Spartan or Virtex series. Boards with these processors +usually have JTAG ports which connect to a host system running the Xilinx +Embedded Development Kit (EDK) or Software Development Kit (SDK). +This host system is used to download the configuration bitstream to +the target FPGA. The Xilinx Microprocessor Debugger (XMD) program +communicates with the target board using the JTAG interface and +presents a @code{gdbserver} interface to the board. By default +@code{xmd} uses port @code{1234}. (While it is possible to change +this default port, it requires the use of undocumented @code{xmd} +commands. Contact Xilinx support if you need to do this.) + +Use these GDB commands to connect to the MicroBlaze target processor. + +@table @code +@item target remote :1234 +Use this command to connect to the target if you are running @value{GDBN} +on the same system as @code{xmd}. + +@item target remote @var{xmd-host}:1234 +Use this command to connect to the target if it is connected to @code{xmd} +running on a different system named @var{xmd-host}. + +@item load +Use this command to download a program to the MicroBlaze target. + +@item set debug microblaze @var{n} +Enable MicroBlaze-specific debugging messages if non-zero. + +@item show debug microblaze @var{n} +Show MicroBlaze-specific debugging level. +@end table + @node MIPS Embedded @subsection MIPS Embedded @@ -17103,6 +18421,19 @@ Set suspend trace mode. @node PowerPC Embedded @subsection PowerPC Embedded +@cindex DVC register +@value{GDBN} supports using the DVC (Data Value Compare) register to +implement in hardware simple hardware watchpoint conditions of the form: + +@smallexample +(@value{GDBP}) watch @var{ADDRESS|VARIABLE} \ + if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION} +@end smallexample + +The DVC register will be automatically used whenever @value{GDBN} detects +such pattern in a condition expression. This feature is available in native +@value{GDBN} running on a Linux kernel version 2.6.34 or newer. + @value{GDBN} provides the following PowerPC-specific commands: @table @code @@ -17980,7 +19311,9 @@ from wrapping its output. @itemx set pagination off @kindex set pagination Turn the output pagination on or off; the default is on. Turning -pagination off is the alternative to @code{set height 0}. +pagination off is the alternative to @code{set height 0}. Note that +running @value{GDBN} with the @option{--batch} option (@pxref{Mode +Options, -batch}) also automatically disables pagination. @item show pagination @kindex show pagination @@ -18203,7 +19536,9 @@ commands, you can disable this ``feature'': @cindex confirmation @cindex stupid questions @item set confirm off -Disables confirmation requests. +Disables confirmation requests. Note that running @value{GDBN} with +the @option{--batch} option (@pxref{Mode Options, -batch}) also +automatically disables confirmation requests. @item set confirm on Enables confirmation requests (the default). @@ -18337,6 +19672,15 @@ is off. @item show debug overload Displays the current state of displaying @value{GDBN} C@t{++} overload debugging info. +@cindex expression parser, debugging info +@cindex debug expression parser +@item set debug parser +Turns on or off the display of expression parser debugging output. +Internally, this sets the @code{yydebug} variable in the expression +parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for +details. The default is off. +@item show debug parser +Show the current state of expression parser debugging. @cindex packets, reporting on stdout @cindex serial connections, debugging @cindex debug remote protocol @@ -18422,6 +19766,38 @@ Displays whether the debugger is operating in interactive mode or not. on composition of @value{GDBN} commands, and the second is based on the Python scripting language. +To facilitate the use of these extensions, @value{GDBN} is capable +of evaluating the contents of a file. When doing so, @value{GDBN} +can recognize which scripting language is being used by looking at +the filename extension. Files with an unrecognized filename extension +are always treated as a @value{GDBN} Command Files. +@xref{Command Files,, Command files}. + +You can control how @value{GDBN} evaluates these files with the following +setting: + +@table @code +@kindex set script-extension +@kindex show script-extension +@item set script-extension off +All scripts are always evaluated as @value{GDBN} Command Files. + +@item set script-extension soft +The debugger determines the scripting language based on filename +extension. If this scripting language is supported, @value{GDBN} +evaluates the script using that language. Otherwise, it evaluates +the file as a @value{GDBN} Command File. + +@item set script-extension strict +The debugger determines the scripting language based on filename +extension, and evaluates the script using that language. If the +language is not supported, then the evaluation fails. + +@item show script-extension +Display the current value of the @code{script-extension} option. + +@end table + @menu * Sequences:: Canned Sequences of Commands * Python:: Scripting @value{GDBN} using Python @@ -18655,12 +20031,15 @@ does not mean to repeat the last command, as it would from the terminal. You can request the execution of a command file with the @code{source} -command: +command. Note that the @code{source} command is also used to evaluate +scripts that are not Command Files. The exact behavior can be configured +using the @code{script-extension} setting. +@xref{Extending GDB,, Extending GDB}. @table @code @kindex source @cindex execute commands from a file -@item source [@code{-v}] @var{filename} +@item source [-s] [-v] @var{filename} Execute the command file @var{filename}. @end table @@ -18670,8 +20049,27 @@ unless the order of execution is changed by one of the printed as they are executed. An error in any command terminates execution of the command file and control is returned to the console. -@value{GDBN} searches for @var{filename} in the current directory and then -on the search path (specified with the @samp{directory} command). +@value{GDBN} first searches for @var{filename} in the current directory. +If the file is not found there, and @var{filename} does not specify a +directory, then @value{GDBN} also looks for the file on the source search path +(specified with the @samp{directory} command); +except that @file{$cdir} is not searched because the compilation directory +is not relevant to scripts. + +If @code{-s} is specified, then @value{GDBN} searches for @var{filename} +on the search path even if @var{filename} specifies a directory. +The search is done by appending @var{filename} to each element of the +search path. So, for example, if @var{filename} is @file{mylib/myscript} +and the search path contains @file{/home/user} then @value{GDBN} will +look for the script @file{/home/user/mylib/myscript}. +The search is also done if @var{filename} is an absolute path. +For example, if @var{filename} is @file{/tmp/myscript} and +the search path contains @file{/home/user} then @value{GDBN} will +look for the script @file{/home/user/tmp/myscript}. +For DOS-like systems, if @var{filename} contains a drive specification, +it is stripped before concatenation. For example, if @var{filename} is +@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN} +will look for the script @file{c:/tmp/myscript}. If @code{-v}, for verbose mode, is given then @value{GDBN} displays each command as it is executed. The option must be given before @@ -18893,6 +20291,11 @@ Here's an example of printing DFP types using the above conversion letters: printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl @end smallexample +@kindex eval +@item eval @var{template}, @var{expressions}@dots{} +Convert the values of one or more @var{expressions} under the control of +the string @var{template} to a command line, and call it. + @end table @node Python @@ -18904,9 +20307,17 @@ You can script @value{GDBN} using the @uref{http://www.python.org/, Python programming language}. This feature is available only if @value{GDBN} was configured using @option{--with-python}. +@cindex python directory +Python scripts used by @value{GDBN} should be installed in +@file{@var{data-directory}/python}, where @var{data-directory} is +the data directory as determined at @value{GDBN} startup (@pxref{Data Files}). This directory, known as the @dfn{python directory}, +is automatically added to the Python Search Path in order to allow +the Python interpreter to locate all scripts installed at this location. + @menu * Python Commands:: Accessing Python from @value{GDBN}. * Python API:: Accessing @value{GDBN} from Python. +* Auto-loading:: Automatically loading Python code. @end menu @node Python Commands @@ -18954,6 +20365,20 @@ printing is enabled; if @code{off}, then Python stack printing is disabled. @end table +It is also possible to execute a Python script from the @value{GDBN} +interpreter: + +@table @code +@item source @file{script-name} +The script name must end with @samp{.py} and @value{GDBN} must be configured +to recognize the script language based on filename extension using +the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}. + +@item python execfile ("script-name") +This method is based on the @code{execfile} Python built-in function, +and thus is always available. +@end table + @node Python API @subsection Python API @cindex python api @@ -18970,15 +20395,24 @@ situation, a Python @code{KeyboardInterrupt} exception is thrown. @menu * Basic Python:: Basic Python Functions. * Exception Handling:: -* Auto-loading:: Automatically loading Python code. * Values From Inferior:: -* Types In Python:: Python representation of types. -* Pretty Printing:: Pretty-printing values. +* Types In Python:: Python representation of types. +* Pretty Printing API:: Pretty-printing values. * Selecting Pretty-Printers:: How GDB chooses a pretty-printer. +* Disabling Pretty-Printers:: Disabling broken printers. +* Inferiors In Python:: Python representation of inferiors (processes) +* Threads In Python:: Accessing inferior threads from Python. * Commands In Python:: Implementing new commands in Python. +* Parameters In Python:: Adding new @value{GDBN} parameters. * Functions In Python:: Writing new convenience functions. +* Progspaces In Python:: Program spaces. * Objfiles In Python:: Object files. -* Frames In Python:: Acessing inferior stack frames from Python. +* Frames In Python:: Accessing inferior stack frames from Python. +* Blocks In Python:: Accessing frame blocks from Python. +* Symbols In Python:: Python representation of symbols. +* Symbol Tables In Python:: Python representation of symbol tables. +* Lazy Strings In Python:: Python representation of lazy strings. +* Breakpoints In Python:: Manipulating breakpoints using Python. @end menu @node Basic Python @@ -18992,16 +20426,34 @@ methods and classes added by @value{GDBN} are placed in this module. @value{GDBN} automatically @code{import}s the @code{gdb} module for use in all scripts evaluated by the @code{python} command. +@findex gdb.PYTHONDIR +@defvar PYTHONDIR +A string containing the python directory (@pxref{Python}). +@end defvar + @findex gdb.execute -@defun execute command [from_tty] +@defun execute command [from_tty] [to_string] Evaluate @var{command}, a string, as a @value{GDBN} CLI command. If a GDB exception happens while @var{command} runs, it is translated as described in @ref{Exception Handling,,Exception Handling}. -If no exceptions occur, this function returns @code{None}. @var{from_tty} specifies whether @value{GDBN} ought to consider this command as having originated from the user invoking it interactively. It must be a boolean value. If omitted, it defaults to @code{False}. + +By default, any output produced by @var{command} is sent to +@value{GDBN}'s standard output. If the @var{to_string} parameter is +@code{True}, then output will be collected by @code{gdb.execute} and +returned as a string. The default is @code{False}, in which case the +return value is @code{None}. If @var{to_string} is @code{True}, the +@value{GDBN} virtual terminal will be temporarily set to unlimited width +and height, and its pagination will be disabled; @pxref{Screen Size}. +@end defun + +@findex gdb.breakpoints +@defun breakpoints +Return a sequence holding all of @value{GDBN}'s breakpoints. +@xref{Breakpoints In Python}, for more information. @end defun @findex gdb.parameter @@ -19031,6 +20483,19 @@ If no exception is raised, the return value is always an instance of @code{gdb.Value} (@pxref{Values From Inferior}). @end defun +@findex gdb.parse_and_eval +@defun parse_and_eval expression +Parse @var{expression} as an expression in the current language, +evaluate it, and return the result as a @code{gdb.Value}. +@var{expression} must be a string. + +This function can be useful when implementing a new command +(@pxref{Commands In Python}), as it provides a way to parse the +command's argument as an expression. It is also useful simply to +compute values, for example, it is the only way to get the value of a +convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}. +@end defun + @findex gdb.write @defun write string Print a string to @value{GDBN}'s paginated standard output stream. @@ -19045,6 +20510,21 @@ Flush @value{GDBN}'s paginated standard output stream. Flushing function. @end defun +@findex gdb.target_charset +@defun target_charset +Return the name of the current target character set (@pxref{Character +Sets}). This differs from @code{gdb.parameter('target-charset')} in +that @samp{auto} is never returned. +@end defun + +@findex gdb.target_wide_charset +@defun target_wide_charset +Return the name of the current target wide character set +(@pxref{Character Sets}). This differs from +@code{gdb.parameter('target-wide-charset')} in that @samp{auto} is +never returned. +@end defun + @node Exception Handling @subsubsection Exception Handling @cindex python exceptions @@ -19076,52 +20556,29 @@ message as its value, and the Python call stack backtrace at the Python statement closest to where the @value{GDBN} error occured as the traceback. -@node Auto-loading -@subsubsection Auto-loading -@cindex auto-loading, Python - -When a new object file is read (for example, due to the @code{file} -command, or because the inferior has loaded a shared library), -@value{GDBN} will look for a file named @file{@var{objfile}-gdb.py}, -where @var{objfile} is the object file's real name, formed by ensuring -that the file name is absolute, following all symlinks, and resolving -@code{.} and @code{..} components. If this file exists and is -readable, @value{GDBN} will evaluate it as a Python script. - -If this file does not exist, and if the parameter -@code{debug-file-directory} is set (@pxref{Separate Debug Files}), -then @value{GDBN} will use the file named -@file{@var{debug-file-directory}/@var{real-name}}, where -@var{real-name} is the object file's real name, as described above. - -Finally, if this file does not exist, then @value{GDBN} will look for -a file named @file{@var{data-directory}/python/auto-load/@var{real-name}}, where -@var{data-directory} is @value{GDBN}'s data directory (available via -@code{show data-directory}, @pxref{Data Files}), and @var{real-name} -is the object file's real name, as described above. - -When reading an auto-loaded file, @value{GDBN} sets the ``current -objfile''. This is available via the @code{gdb.current_objfile} -function (@pxref{Objfiles In Python}). This can be useful for -registering objfile-specific pretty-printers. - -The auto-loading feature is useful for supplying application-specific -debugging commands and scripts. You can enable or disable this -feature, and view its current state. - -@table @code -@kindex maint set python auto-load -@item maint set python auto-load [yes|no] -Enable or disable the Python auto-loading feature. - -@kindex show python auto-load -@item show python auto-load -Show whether Python auto-loading is enabled or disabled. -@end table - -@value{GDBN} does not track which files it has already auto-loaded. -So, your @samp{-gdb.py} file should take care to ensure that it may be -evaluated multiple times without error. +@findex gdb.GdbError +When implementing @value{GDBN} commands in Python via @code{gdb.Command}, +it is useful to be able to throw an exception that doesn't cause a +traceback to be printed. For example, the user may have invoked the +command incorrectly. Use the @code{gdb.GdbError} exception +to handle this case. Example: + +@smallexample +(gdb) python +>class HelloWorld (gdb.Command): +> """Greet the whole world.""" +> def __init__ (self): +> super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_OBSCURE) +> def invoke (self, args, from_tty): +> argv = gdb.string_to_argv (args) +> if len (argv) != 0: +> raise gdb.GdbError ("hello-world takes no arguments") +> print "Hello, World!" +>HelloWorld () +>end +(gdb) hello-world 42 +hello-world takes no arguments +@end smallexample @node Values From Inferior @subsubsection Values From Inferior @@ -19181,6 +20638,13 @@ The type of this @code{gdb.Value}. The value of this attribute is a The following methods are provided: @table @code +@defmethod Value cast type +Return a new instance of @code{gdb.Value} that is the result of +casting this instance to the type described by @var{type}, which must +be a @code{gdb.Type} object. If the cast cannot be performed for some +reason, this method throws an exception. +@end defmethod + @defmethod Value dereference For pointer data types, this method returns a new @code{gdb.Value} object whose contents is the object pointed to by the pointer. For example, if @@ -19233,6 +20697,30 @@ argument to Python's @code{string.decode} method. If the optional @var{length} argument is given, the string will be fetched and converted to the given length. @end defmethod + +@defmethod Value lazy_string @r{[}encoding@r{]} @r{[}length@r{]} +If this @code{gdb.Value} represents a string, then this method +converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings +In Python}). Otherwise, this method will throw an exception. + +If the optional @var{encoding} argument is given, it must be a string +naming the encoding of the @code{gdb.LazyString}. Some examples are: +@samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the +@var{encoding} argument is an encoding that @value{GDBN} does +recognize, @value{GDBN} will raise an error. + +When a lazy string is printed, the @value{GDBN} encoding machinery is +used to convert the string during printing. If the optional +@var{encoding} argument is not provided, or is an empty string, +@value{GDBN} will automatically select the encoding most suitable for +the string type. For further information on encoding in @value{GDBN} +please see @ref{Character Sets}. + +If the optional @var{length} argument is given, the string will be +fetched and encoded to the length of characters specified. If +the @var{length} argument is not provided, the string will be fetched +and encoded until a null of appropriate width is found. +@end defmethod @end table @node Types In Python @@ -19252,6 +20740,9 @@ module: This function looks up a type by name. @var{name} is the name of the type to look up. It must be a string. +If @var{block} is given, then @var{name} is looked up in that scope. +Otherwise, it is searched for globally. + Ordinarily, this function will return an instance of @code{gdb.Type}. If the named type cannot be found, it will throw an exception. @end defun @@ -19304,6 +20795,12 @@ This is @code{True} if the field is artificial, usually meaning that it was provided by the compiler and not the user. This attribute is always provided, and is @code{False} if the field is not artificial. +@item is_base_class +This is @code{True} if the field represents a base class of a C@t{++} +structure. This attribute is always provided, and is @code{False} +if the field is not a base class of the type that is the argument of +@code{fields}, or if that type was not a C@t{++} class. + @item bitsize If the field is packed, or is a bitfield, then this will have a non-zero value, which is the size of the field in bits. Otherwise, @@ -19331,11 +20828,23 @@ variant of this type. That is, the result is neither @code{const} nor @code{volatile}. @end defmethod +@defmethod Type range +Return a Python @code{Tuple} object that contains two elements: the +low bound of the argument type and the high bound of that type. If +the type does not have a range, @value{GDBN} will raise a +@code{RuntimeError} exception. +@end defmethod + @defmethod Type reference Return a new @code{gdb.Type} object which represents a reference to this type. @end defmethod +@defmethod Type pointer +Return a new @code{gdb.Type} object which represents a pointer to this +type. +@end defmethod + @defmethod Type strip_typedefs Return a new @code{gdb.Type} that represents the real type, after removing all layers of typedefs. @@ -19356,7 +20865,7 @@ If the type does not have a target, this method will throw an exception. @end defmethod -@defmethod Type template_argument n +@defmethod Type template_argument n [block] If this @code{gdb.Type} is an instantiation of a template, this will return a new @code{gdb.Type} which represents the type of the @var{n}th template argument. @@ -19364,7 +20873,8 @@ return a new @code{gdb.Type} which represents the type of the If this @code{gdb.Type} is not a template type, this will throw an exception. Ordinarily, only C@t{++} code will have template types. -@var{name} is searched for globally. +If @var{block} is given, then @var{name} is looked up in that scope. +Otherwise, it is searched for globally. @end defmethod @end table @@ -19507,37 +21017,10 @@ A function internal to @value{GDBN}. This is the type used to represent convenience functions. @end table -@node Pretty Printing -@subsubsection Pretty Printing - -@value{GDBN} provides a mechanism to allow pretty-printing of values -using Python code. The pretty-printer API allows application-specific -code to greatly simplify the display of complex objects. This -mechanism works for both MI and the CLI. - -For example, here is how a C@t{++} @code{std::string} looks without a -pretty-printer: - -@smallexample -(@value{GDBP}) print s -$1 = @{ - static npos = 4294967295, - _M_dataplus = @{ - > = @{ - <__gnu_cxx::new_allocator> = @{@}, @}, - members of std::basic_string, std::allocator >::_Alloc_hider: - _M_p = 0x804a014 "abcd" - @} -@} -@end smallexample - -After a pretty-printer for @code{std::string} has been installed, only -the contents are printed: +@node Pretty Printing API +@subsubsection Pretty Printing API -@smallexample -(@value{GDBP}) print s -$2 = "abcd" -@end smallexample +An example output is provided (@pxref{Pretty Printing}). A pretty-printer is just an object that holds a value and implements a specific interface, defined here. @@ -19612,28 +21095,48 @@ the resulting value. Again, this may result in a call to another pretty-printer. Python scalars (integers, floats, and booleans) and strings are convertible to @code{gdb.Value}; other types are not. +Finally, if this method returns @code{None} then no further operations +are peformed in this method and nothing is printed. + If the result is not one of these types, an exception is raised. @end defop +@value{GDBN} provides a function which can be used to look up the +default pretty-printer for a @code{gdb.Value}: + +@findex gdb.default_visualizer +@defun default_visualizer value +This function takes a @code{gdb.Value} object as an argument. If a +pretty-printer for this value exists, then it is returned. If no such +printer exists, then this returns @code{None}. +@end defun + @node Selecting Pretty-Printers @subsubsection Selecting Pretty-Printers The Python list @code{gdb.pretty_printers} contains an array of -functions that have been registered via addition as a pretty-printer. +functions or callable objects that have been registered via addition +as a pretty-printer. +Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute. Each @code{gdb.Objfile} also contains a @code{pretty_printers} attribute. A function on one of these lists is passed a single @code{gdb.Value} argument and should return a pretty-printer object conforming to the -interface definition above (@pxref{Pretty Printing}). If a function +interface definition above (@pxref{Pretty Printing API}). If a function cannot create a pretty-printer for the value, it should return @code{None}. @value{GDBN} first checks the @code{pretty_printers} attribute of each -@code{gdb.Objfile} and iteratively calls each function in the list for -that @code{gdb.Objfile} until it receives a pretty-printer object. +@code{gdb.Objfile} in the current program space and iteratively calls +each enabled function (@pxref{Disabling Pretty-Printers}) +in the list for that @code{gdb.Objfile} until it receives +a pretty-printer object. +If no pretty-printer is found in the objfile lists, @value{GDBN} then +searches the pretty-printer list of the current program space, +calling each enabled function until an object is returned. After these lists have been exhausted, it tries the global -@code{gdb.pretty-printers} list, again calling each function until an +@code{gdb.pretty_printers} list, again calling each enabled function until an object is returned. The order in which the objfiles are searched is not specified. For a @@ -19702,7 +21205,7 @@ printers with a specific objfile, @value{GDBN} will find the correct printers for the specific version of the library used by each inferior. -To continue the @code{std::string} example (@pxref{Pretty Printing}), +To continue the @code{std::string} example (@pxref{Pretty Printing API}), this code might appear in @code{gdb.libstdcxx.v6}: @smallexample @@ -19718,6 +21221,152 @@ import gdb.libstdcxx.v6 gdb.libstdcxx.v6.register_printers (gdb.current_objfile ()) @end smallexample +@node Disabling Pretty-Printers +@subsubsection Disabling Pretty-Printers +@cindex disabling pretty-printers + +For various reasons a pretty-printer may not work. +For example, the underlying data structure may have changed and +the pretty-printer is out of date. + +The consequences of a broken pretty-printer are severe enough that +@value{GDBN} provides support for enabling and disabling individual +printers. For example, if @code{print frame-arguments} is on, +a backtrace can become highly illegible if any argument is printed +with a broken printer. + +Pretty-printers are enabled and disabled by attaching an @code{enabled} +attribute to the registered function or callable object. If this attribute +is present and its value is @code{False}, the printer is disabled, otherwise +the printer is enabled. + +@node Inferiors In Python +@subsubsection Inferiors In Python +@cindex inferiors in python + +@findex gdb.Inferior +Programs which are being run under @value{GDBN} are called inferiors +(@pxref{Inferiors and Programs}). Python scripts can access +information about and manipulate inferiors controlled by @value{GDBN} +via objects of the @code{gdb.Inferior} class. + +The following inferior-related functions are available in the @code{gdb} +module: + +@defun inferiors +Return a tuple containing all inferior objects. +@end defun + +A @code{gdb.Inferior} object has the following attributes: + +@table @code +@defivar Inferior num +ID of inferior, as assigned by GDB. +@end defivar + +@defivar Inferior pid +Process ID of the inferior, as assigned by the underlying operating +system. +@end defivar + +@defivar Inferior was_attached +Boolean signaling whether the inferior was created using `attach', or +started by @value{GDBN} itself. +@end defivar +@end table + +A @code{gdb.Inferior} object has the following methods: + +@table @code +@defmethod Inferior threads +This method returns a tuple holding all the threads which are valid +when it is called. If there are no valid threads, the method will +return an empty tuple. +@end defmethod + +@findex gdb.read_memory +@defmethod Inferior read_memory address length +Read @var{length} bytes of memory from the inferior, starting at +@var{address}. Returns a buffer object, which behaves much like an array +or a string. It can be modified and given to the @code{gdb.write_memory} +function. +@end defmethod + +@findex gdb.write_memory +@defmethod Inferior write_memory address buffer @r{[}length@r{]} +Write the contents of @var{buffer} to the inferior, starting at +@var{address}. The @var{buffer} parameter must be a Python object +which supports the buffer protocol, i.e., a string, an array or the +object returned from @code{gdb.read_memory}. If given, @var{length} +determines the number of bytes from @var{buffer} to be written. +@end defmethod + +@findex gdb.search_memory +@defmethod Inferior search_memory address length pattern +Search a region of the inferior memory starting at @var{address} with +the given @var{length} using the search pattern supplied in +@var{pattern}. The @var{pattern} parameter must be a Python object +which supports the buffer protocol, i.e., a string, an array or the +object returned from @code{gdb.read_memory}. Returns a Python @code{Long} +containing the address where the pattern was found, or @code{None} if +the pattern could not be found. +@end defmethod +@end table + +@node Threads In Python +@subsubsection Threads In Python +@cindex threads in python + +@findex gdb.InferiorThread +Python scripts can access information about, and manipulate inferior threads +controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class. + +The following thread-related functions are available in the @code{gdb} +module: + +@findex gdb.selected_thread +@defun selected_thread +This function returns the thread object for the selected thread. If there +is no selected thread, this will return @code{None}. +@end defun + +A @code{gdb.InferiorThread} object has the following attributes: + +@table @code +@defivar InferiorThread num +ID of the thread, as assigned by GDB. +@end defivar + +@defivar InferiorThread ptid +ID of the thread, as assigned by the operating system. This attribute is a +tuple containing three integers. The first is the Process ID (PID); the second +is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID). +Either the LWPID or TID may be 0, which indicates that the operating system +does not use that identifier. +@end defivar +@end table + +A @code{gdb.InferiorThread} object has the following methods: + +@table @code +@defmethod InferiorThread switch +This changes @value{GDBN}'s currently selected thread to the one represented +by this object. +@end defmethod + +@defmethod InferiorThread is_stopped +Return a Boolean indicating whether the thread is stopped. +@end defmethod + +@defmethod InferiorThread is_running +Return a Boolean indicating whether the thread is running. +@end defmethod + +@defmethod InferiorThread is_exited +Return a Boolean indicating whether the thread is exited. +@end defmethod +@end table + @node Commands In Python @subsubsection Commands In Python @@ -19780,6 +21429,20 @@ that the command came from elsewhere. If this method throws an exception, it is turned into a @value{GDBN} @code{error} call. Otherwise, the return value is ignored. + +@findex gdb.string_to_argv +To break @var{argument} up into an argv-like string use +@code{gdb.string_to_argv}. This function behaves identically to +@value{GDBN}'s internal argument lexer @code{buildargv}. +It is recommended to use this for consistency. +Arguments are separated by spaces and may be quoted. +Example: + +@smallexample +print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"") +['1', '2 "3', '4 "5', "6 '7"] +@end smallexample + @end defmethod @cindex completion of Python commands @@ -19970,8 +21633,154 @@ registration of the command with @value{GDBN}. Depending on how the Python code is read into @value{GDBN}, you may need to import the @code{gdb} module explicitly. -@node Functions In Python -@subsubsection Writing new convenience functions +@node Parameters In Python +@subsubsection Parameters In Python + +@cindex parameters in python +@cindex python parameters +@tindex gdb.Parameter +@tindex Parameter +You can implement new @value{GDBN} parameters using Python. A new +parameter is implemented as an instance of the @code{gdb.Parameter} +class. + +Parameters are exposed to the user via the @code{set} and +@code{show} commands. @xref{Help}. + +There are many parameters that already exist and can be set in +@value{GDBN}. Two examples are: @code{set follow fork} and +@code{set charset}. Setting these parameters influences certain +behavior in @value{GDBN}. Similarly, you can define parameters that +can be used to influence behavior in custom Python scripts and commands. + +@defmethod Parameter __init__ name @var{command-class} @var{parameter-class} @r{[}@var{enum-sequence}@r{]} +The object initializer for @code{Parameter} registers the new +parameter with @value{GDBN}. This initializer is normally invoked +from the subclass' own @code{__init__} method. + +@var{name} is the name of the new parameter. If @var{name} consists +of multiple words, then the initial words are looked for as prefix +parameters. An example of this can be illustrated with the +@code{set print} set of parameters. If @var{name} is +@code{print foo}, then @code{print} will be searched as the prefix +parameter. In this case the parameter can subsequently be accessed in +@value{GDBN} as @code{set print foo}. + +If @var{name} consists of multiple words, and no prefix parameter group +can be found, an exception is raised. + +@var{command-class} should be one of the @samp{COMMAND_} constants +(@pxref{Commands In Python}). This argument tells @value{GDBN} how to +categorize the new parameter in the help system. + +@var{parameter-class} should be one of the @samp{PARAM_} constants +defined below. This argument tells @value{GDBN} the type of the new +parameter; this information is used for input validation and +completion. + +If @var{parameter-class} is @code{PARAM_ENUM}, then +@var{enum-sequence} must be a sequence of strings. These strings +represent the possible values for the parameter. + +If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence +of a fourth argument will cause an exception to be thrown. + +The help text for the new parameter is taken from the Python +documentation string for the parameter's class, if there is one. If +there is no documentation string, a default value is used. +@end defmethod + +@defivar Parameter set_doc +If this attribute exists, and is a string, then its value is used as +the help text for this parameter's @code{set} command. The value is +examined when @code{Parameter.__init__} is invoked; subsequent changes +have no effect. +@end defivar + +@defivar Parameter show_doc +If this attribute exists, and is a string, then its value is used as +the help text for this parameter's @code{show} command. The value is +examined when @code{Parameter.__init__} is invoked; subsequent changes +have no effect. +@end defivar + +@defivar Parameter value +The @code{value} attribute holds the underlying value of the +parameter. It can be read and assigned to just as any other +attribute. @value{GDBN} does validation when assignments are made. +@end defivar + + +When a new parameter is defined, its type must be specified. The +available types are represented by constants defined in the @code{gdb} +module: + +@table @code +@findex PARAM_BOOLEAN +@findex gdb.PARAM_BOOLEAN +@item PARAM_BOOLEAN +The value is a plain boolean. The Python boolean values, @code{True} +and @code{False} are the only valid values. + +@findex PARAM_AUTO_BOOLEAN +@findex gdb.PARAM_AUTO_BOOLEAN +@item PARAM_AUTO_BOOLEAN +The value has three possible states: true, false, and @samp{auto}. In +Python, true and false are represented using boolean constants, and +@samp{auto} is represented using @code{None}. + +@findex PARAM_UINTEGER +@findex gdb.PARAM_UINTEGER +@item PARAM_UINTEGER +The value is an unsigned integer. The value of 0 should be +interpreted to mean ``unlimited''. + +@findex PARAM_INTEGER +@findex gdb.PARAM_INTEGER +@item PARAM_INTEGER +The value is a signed integer. The value of 0 should be interpreted +to mean ``unlimited''. + +@findex PARAM_STRING +@findex gdb.PARAM_STRING +@item PARAM_STRING +The value is a string. When the user modifies the string, any escape +sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are +translated into corresponding characters and encoded into the current +host charset. + +@findex PARAM_STRING_NOESCAPE +@findex gdb.PARAM_STRING_NOESCAPE +@item PARAM_STRING_NOESCAPE +The value is a string. When the user modifies the string, escapes are +passed through untranslated. + +@findex PARAM_OPTIONAL_FILENAME +@findex gdb.PARAM_OPTIONAL_FILENAME +@item PARAM_OPTIONAL_FILENAME +The value is a either a filename (a string), or @code{None}. + +@findex PARAM_FILENAME +@findex gdb.PARAM_FILENAME +@item PARAM_FILENAME +The value is a filename. This is just like +@code{PARAM_STRING_NOESCAPE}, but uses file names for completion. + +@findex PARAM_ZINTEGER +@findex gdb.PARAM_ZINTEGER +@item PARAM_ZINTEGER +The value is an integer. This is like @code{PARAM_INTEGER}, except 0 +is interpreted as itself. + +@findex PARAM_ENUM +@findex gdb.PARAM_ENUM +@item PARAM_ENUM +The value is a string, which must be one of a collection string +constants provided when the parameter is created. +@end table + +@node Functions In Python +@subsubsection Writing new convenience functions @cindex writing convenience functions @cindex convenience functions in python @@ -20029,6 +21838,49 @@ registration of the function with @value{GDBN}. Depending on how the Python code is read into @value{GDBN}, you may need to import the @code{gdb} module explicitly. +@node Progspaces In Python +@subsubsection Program Spaces In Python + +@cindex progspaces in python +@tindex gdb.Progspace +@tindex Progspace +A program space, or @dfn{progspace}, represents a symbolic view +of an address space. +It consists of all of the objfiles of the program. +@xref{Objfiles In Python}. +@xref{Inferiors and Programs, program spaces}, for more details +about program spaces. + +The following progspace-related functions are available in the +@code{gdb} module: + +@findex gdb.current_progspace +@defun current_progspace +This function returns the program space of the currently selected inferior. +@xref{Inferiors and Programs}. +@end defun + +@findex gdb.progspaces +@defun progspaces +Return a sequence of all the progspaces currently known to @value{GDBN}. +@end defun + +Each progspace is represented by an instance of the @code{gdb.Progspace} +class. + +@defivar Progspace filename +The file name of the progspace as a string. +@end defivar + +@defivar Progspace pretty_printers +The @code{pretty_printers} attribute is a list of functions. It is +used to look up pretty-printers. A @code{Value} is passed to each +function in order; if the function returns @code{None}, then the +search continues. Otherwise, the return value should be an object +which is used to format the value. @xref{Pretty Printing API}, for more +information. +@end defivar + @node Objfiles In Python @subsubsection Objfiles In Python @@ -20070,12 +21922,12 @@ The @code{pretty_printers} attribute is a list of functions. It is used to look up pretty-printers. A @code{Value} is passed to each function in order; if the function returns @code{None}, then the search continues. Otherwise, the return value should be an object -which is used to format the value. @xref{Pretty Printing}, for more +which is used to format the value. @xref{Pretty Printing API}, for more information. @end defivar @node Frames In Python -@subsubsection Acessing inferior stack frames from Python. +@subsubsection Accessing inferior stack frames from Python. @cindex frames in python When the debugged program stops, @value{GDBN} is able to analyze its call @@ -20138,6 +21990,15 @@ function to a string. Returns the frame's resume address. @end defmethod +@defmethod Frame block +Return the frame's code block. @xref{Blocks In Python}. +@end defmethod + +@defmethod Frame function +Return the symbol for the function corresponding to this frame. +@xref{Symbols In Python}. +@end defmethod + @defmethod Frame older Return the frame that called this frame. @end defmethod @@ -20146,12 +22007,682 @@ Return the frame that called this frame. Return the frame called by this frame. @end defmethod -@defmethod Frame read_var variable -Return the value of the given variable in this frame. @var{variable} must -be a string. +@defmethod Frame find_sal +Return the frame's symtab and line object. +@xref{Symbol Tables In Python}. +@end defmethod + +@defmethod Frame read_var variable @r{[}block@r{]} +Return the value of @var{variable} in this frame. If the optional +argument @var{block} is provided, search for the variable from that +block; otherwise start at the frame's current block (which is +determined by the frame's current program counter). @var{variable} +must be a string or a @code{gdb.Symbol} object. @var{block} must be a +@code{gdb.Block} object. +@end defmethod + +@defmethod Frame select +Set this frame to be the selected frame. @xref{Stack, ,Examining the +Stack}. @end defmethod @end table +@node Blocks In Python +@subsubsection Accessing frame blocks from Python. + +@cindex blocks in python +@tindex gdb.Block + +Within each frame, @value{GDBN} maintains information on each block +stored in that frame. These blocks are organized hierarchically, and +are represented individually in Python as a @code{gdb.Block}. +Please see @ref{Frames In Python}, for a more in-depth discussion on +frames. Furthermore, see @ref{Stack, ,Examining the Stack}, for more +detailed technical information on @value{GDBN}'s book-keeping of the +stack. + +The following block-related functions are available in the @code{gdb} +module: + +@findex gdb.block_for_pc +@defun block_for_pc pc +Return the @code{gdb.Block} containing the given @var{pc} value. If the +block cannot be found for the @var{pc} value specified, the function +will return @code{None}. +@end defun + +A @code{gdb.Block} object has the following attributes: + +@table @code +@defivar Block start +The start address of the block. This attribute is not writable. +@end defivar + +@defivar Block end +The end address of the block. This attribute is not writable. +@end defivar + +@defivar Block function +The name of the block represented as a @code{gdb.Symbol}. If the +block is not named, then this attribute holds @code{None}. This +attribute is not writable. +@end defivar + +@defivar Block superblock +The block containing this block. If this parent block does not exist, +this attribute holds @code{None}. This attribute is not writable. +@end defivar +@end table + +@node Symbols In Python +@subsubsection Python representation of Symbols. + +@cindex symbols in python +@tindex gdb.Symbol + +@value{GDBN} represents every variable, function and type as an +entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}. +Similarly, Python represents these symbols in @value{GDBN} with the +@code{gdb.Symbol} object. + +The following symbol-related functions are available in the @code{gdb} +module: + +@findex gdb.lookup_symbol +@defun lookup_symbol name [block] [domain] +This function searches for a symbol by name. The search scope can be +restricted to the parameters defined in the optional domain and block +arguments. + +@var{name} is the name of the symbol. It must be a string. The +optional @var{block} argument restricts the search to symbols visible +in that @var{block}. The @var{block} argument must be a +@code{gdb.Block} object. The optional @var{domain} argument restricts +the search to the domain type. The @var{domain} argument must be a +domain constant defined in the @code{gdb} module and described later +in this chapter. +@end defun + +A @code{gdb.Symbol} object has the following attributes: + +@table @code +@defivar Symbol symtab +The symbol table in which the symbol appears. This attribute is +represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In +Python}. This attribute is not writable. +@end defivar + +@defivar Symbol name +The name of the symbol as a string. This attribute is not writable. +@end defivar + +@defivar Symbol linkage_name +The name of the symbol, as used by the linker (i.e., may be mangled). +This attribute is not writable. +@end defivar + +@defivar Symbol print_name +The name of the symbol in a form suitable for output. This is either +@code{name} or @code{linkage_name}, depending on whether the user +asked @value{GDBN} to display demangled or mangled names. +@end defivar + +@defivar Symbol addr_class +The address class of the symbol. This classifies how to find the value +of a symbol. Each address class is a constant defined in the +@code{gdb} module and described later in this chapter. +@end defivar + +@defivar Symbol is_argument +@code{True} if the symbol is an argument of a function. +@end defivar + +@defivar Symbol is_constant +@code{True} if the symbol is a constant. +@end defivar + +@defivar Symbol is_function +@code{True} if the symbol is a function or a method. +@end defivar + +@defivar Symbol is_variable +@code{True} if the symbol is a variable. +@end defivar +@end table + +The available domain categories in @code{gdb.Symbol} are represented +as constants in the @code{gdb} module: + +@table @code +@findex SYMBOL_UNDEF_DOMAIN +@findex gdb.SYMBOL_UNDEF_DOMAIN +@item SYMBOL_UNDEF_DOMAIN +This is used when a domain has not been discovered or none of the +following domains apply. This usually indicates an error either +in the symbol information or in @value{GDBN}'s handling of symbols. +@findex SYMBOL_VAR_DOMAIN +@findex gdb.SYMBOL_VAR_DOMAIN +@item SYMBOL_VAR_DOMAIN +This domain contains variables, function names, typedef names and enum +type values. +@findex SYMBOL_STRUCT_DOMAIN +@findex gdb.SYMBOL_STRUCT_DOMAIN +@item SYMBOL_STRUCT_DOMAIN +This domain holds struct, union and enum type names. +@findex SYMBOL_LABEL_DOMAIN +@findex gdb.SYMBOL_LABEL_DOMAIN +@item SYMBOL_LABEL_DOMAIN +This domain contains names of labels (for gotos). +@findex SYMBOL_VARIABLES_DOMAIN +@findex gdb.SYMBOL_VARIABLES_DOMAIN +@item SYMBOL_VARIABLES_DOMAIN +This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it +contains everything minus functions and types. +@findex SYMBOL_FUNCTIONS_DOMAIN +@findex gdb.SYMBOL_FUNCTIONS_DOMAIN +@item SYMBOL_FUNCTION_DOMAIN +This domain contains all functions. +@findex SYMBOL_TYPES_DOMAIN +@findex gdb.SYMBOL_TYPES_DOMAIN +@item SYMBOL_TYPES_DOMAIN +This domain contains all types. +@end table + +The available address class categories in @code{gdb.Symbol} are represented +as constants in the @code{gdb} module: + +@table @code +@findex SYMBOL_LOC_UNDEF +@findex gdb.SYMBOL_LOC_UNDEF +@item SYMBOL_LOC_UNDEF +If this is returned by address class, it indicates an error either in +the symbol information or in @value{GDBN}'s handling of symbols. +@findex SYMBOL_LOC_CONST +@findex gdb.SYMBOL_LOC_CONST +@item SYMBOL_LOC_CONST +Value is constant int. +@findex SYMBOL_LOC_STATIC +@findex gdb.SYMBOL_LOC_STATIC +@item SYMBOL_LOC_STATIC +Value is at a fixed address. +@findex SYMBOL_LOC_REGISTER +@findex gdb.SYMBOL_LOC_REGISTER +@item SYMBOL_LOC_REGISTER +Value is in a register. +@findex SYMBOL_LOC_ARG +@findex gdb.SYMBOL_LOC_ARG +@item SYMBOL_LOC_ARG +Value is an argument. This value is at the offset stored within the +symbol inside the frame's argument list. +@findex SYMBOL_LOC_REF_ARG +@findex gdb.SYMBOL_LOC_REF_ARG +@item SYMBOL_LOC_REF_ARG +Value address is stored in the frame's argument list. Just like +@code{LOC_ARG} except that the value's address is stored at the +offset, not the value itself. +@findex SYMBOL_LOC_REGPARM_ADDR +@findex gdb.SYMBOL_LOC_REGPARM_ADDR +@item SYMBOL_LOC_REGPARM_ADDR +Value is a specified register. Just like @code{LOC_REGISTER} except +the register holds the address of the argument instead of the argument +itself. +@findex SYMBOL_LOC_LOCAL +@findex gdb.SYMBOL_LOC_LOCAL +@item SYMBOL_LOC_LOCAL +Value is a local variable. +@findex SYMBOL_LOC_TYPEDEF +@findex gdb.SYMBOL_LOC_TYPEDEF +@item SYMBOL_LOC_TYPEDEF +Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all +have this class. +@findex SYMBOL_LOC_BLOCK +@findex gdb.SYMBOL_LOC_BLOCK +@item SYMBOL_LOC_BLOCK +Value is a block. +@findex SYMBOL_LOC_CONST_BYTES +@findex gdb.SYMBOL_LOC_CONST_BYTES +@item SYMBOL_LOC_CONST_BYTES +Value is a byte-sequence. +@findex SYMBOL_LOC_UNRESOLVED +@findex gdb.SYMBOL_LOC_UNRESOLVED +@item SYMBOL_LOC_UNRESOLVED +Value is at a fixed address, but the address of the variable has to be +determined from the minimal symbol table whenever the variable is +referenced. +@findex SYMBOL_LOC_OPTIMIZED_OUT +@findex gdb.SYMBOL_LOC_OPTIMIZED_OUT +@item SYMBOL_LOC_OPTIMIZED_OUT +The value does not actually exist in the program. +@findex SYMBOL_LOC_COMPUTED +@findex gdb.SYMBOL_LOC_COMPUTED +@item SYMBOL_LOC_COMPUTED +The value's address is a computed location. +@end table + +@node Symbol Tables In Python +@subsubsection Symbol table representation in Python. + +@cindex symbol tables in python +@tindex gdb.Symtab +@tindex gdb.Symtab_and_line + +Access to symbol table data maintained by @value{GDBN} on the inferior +is exposed to Python via two objects: @code{gdb.Symtab_and_line} and +@code{gdb.Symtab}. Symbol table and line data for a frame is returned +from the @code{find_sal} method in @code{gdb.Frame} object. +@xref{Frames In Python}. + +For more information on @value{GDBN}'s symbol table management, see +@ref{Symbols, ,Examining the Symbol Table}, for more information. + +A @code{gdb.Symtab_and_line} object has the following attributes: + +@table @code +@defivar Symtab_and_line symtab +The symbol table object (@code{gdb.Symtab}) for this frame. +This attribute is not writable. +@end defivar + +@defivar Symtab_and_line pc +Indicates the current program counter address. This attribute is not +writable. +@end defivar + +@defivar Symtab_and_line line +Indicates the current line number for this object. This +attribute is not writable. +@end defivar +@end table + +A @code{gdb.Symtab} object has the following attributes: + +@table @code +@defivar Symtab filename +The symbol table's source filename. This attribute is not writable. +@end defivar + +@defivar Symtab objfile +The symbol table's backing object file. @xref{Objfiles In Python}. +This attribute is not writable. +@end defivar +@end table + +The following methods are provided: + +@table @code +@defmethod Symtab fullname +Return the symbol table's source absolute file name. +@end defmethod +@end table + +@node Breakpoints In Python +@subsubsection Manipulating breakpoints using Python + +@cindex breakpoints in python +@tindex gdb.Breakpoint + +Python code can manipulate breakpoints via the @code{gdb.Breakpoint} +class. + +@defmethod Breakpoint __init__ spec @r{[}type@r{]} @r{[}wp_class@r{]} +Create a new breakpoint. @var{spec} is a string naming the +location of the breakpoint, or an expression that defines a +watchpoint. The contents can be any location recognized by the +@code{break} command, or in the case of a watchpoint, by the @code{watch} +command. The optional @var{type} denotes the breakpoint to create +from the types defined later in this chapter. This argument can be +either: @code{BP_BREAKPOINT} or @code{BP_WATCHPOINT}. @var{type} +defaults to @code{BP_BREAKPOINT}. The optional @var{wp_class} +argument defines the class of watchpoint to create, if @var{type} is +defined as @code{BP_WATCHPOINT}. If a watchpoint class is not +provided, it is assumed to be a @var{WP_WRITE} class. +@end defmethod + +The available watchpoint types represented by constants are defined in the +@code{gdb} module: + +@table @code +@findex WP_READ +@findex gdb.WP_READ +@item WP_READ +Read only watchpoint. + +@findex WP_WRITE +@findex gdb.WP_WRITE +@item WP_WRITE +Write only watchpoint. + +@findex WP_ACCESS +@findex gdb.WP_ACCESS +@item WP_ACCESS +Read/Write watchpoint. +@end table + +@defmethod Breakpoint is_valid +Return @code{True} if this @code{Breakpoint} object is valid, +@code{False} otherwise. A @code{Breakpoint} object can become invalid +if the user deletes the breakpoint. In this case, the object still +exists, but the underlying breakpoint does not. In the cases of +watchpoint scope, the watchpoint remains valid even if execution of the +inferior leaves the scope of that watchpoint. +@end defmethod + +@defivar Breakpoint enabled +This attribute is @code{True} if the breakpoint is enabled, and +@code{False} otherwise. This attribute is writable. +@end defivar + +@defivar Breakpoint silent +This attribute is @code{True} if the breakpoint is silent, and +@code{False} otherwise. This attribute is writable. + +Note that a breakpoint can also be silent if it has commands and the +first command is @code{silent}. This is not reported by the +@code{silent} attribute. +@end defivar + +@defivar Breakpoint thread +If the breakpoint is thread-specific, this attribute holds the thread +id. If the breakpoint is not thread-specific, this attribute is +@code{None}. This attribute is writable. +@end defivar + +@defivar Breakpoint task +If the breakpoint is Ada task-specific, this attribute holds the Ada task +id. If the breakpoint is not task-specific (or the underlying +language is not Ada), this attribute is @code{None}. This attribute +is writable. +@end defivar + +@defivar Breakpoint ignore_count +This attribute holds the ignore count for the breakpoint, an integer. +This attribute is writable. +@end defivar + +@defivar Breakpoint number +This attribute holds the breakpoint's number --- the identifier used by +the user to manipulate the breakpoint. This attribute is not writable. +@end defivar + +@defivar Breakpoint type +This attribute holds the breakpoint's type --- the identifier used to +determine the actual breakpoint type or use-case. This attribute is not +writable. +@end defivar + +The available types are represented by constants defined in the @code{gdb} +module: + +@table @code +@findex BP_BREAKPOINT +@findex gdb.BP_BREAKPOINT +@item BP_BREAKPOINT +Normal code breakpoint. + +@findex BP_WATCHPOINT +@findex gdb.BP_WATCHPOINT +@item BP_WATCHPOINT +Watchpoint breakpoint. + +@findex BP_HARDWARE_WATCHPOINT +@findex gdb.BP_HARDWARE_WATCHPOINT +@item BP_HARDWARE_WATCHPOINT +Hardware assisted watchpoint. + +@findex BP_READ_WATCHPOINT +@findex gdb.BP_READ_WATCHPOINT +@item BP_READ_WATCHPOINT +Hardware assisted read watchpoint. + +@findex BP_ACCESS_WATCHPOINT +@findex gdb.BP_ACCESS_WATCHPOINT +@item BP_ACCESS_WATCHPOINT +Hardware assisted access watchpoint. +@end table + +@defivar Breakpoint hit_count +This attribute holds the hit count for the breakpoint, an integer. +This attribute is writable, but currently it can only be set to zero. +@end defivar + +@defivar Breakpoint location +This attribute holds the location of the breakpoint, as specified by +the user. It is a string. If the breakpoint does not have a location +(that is, it is a watchpoint) the attribute's value is @code{None}. This +attribute is not writable. +@end defivar + +@defivar Breakpoint expression +This attribute holds a breakpoint expression, as specified by +the user. It is a string. If the breakpoint does not have an +expression (the breakpoint is not a watchpoint) the attribute's value +is @code{None}. This attribute is not writable. +@end defivar + +@defivar Breakpoint condition +This attribute holds the condition of the breakpoint, as specified by +the user. It is a string. If there is no condition, this attribute's +value is @code{None}. This attribute is writable. +@end defivar + +@defivar Breakpoint commands +This attribute holds the commands attached to the breakpoint. If +there are commands, this attribute's value is a string holding all the +commands, separated by newlines. If there are no commands, this +attribute is @code{None}. This attribute is not writable. +@end defivar + +@node Lazy Strings In Python +@subsubsection Python representation of lazy strings. + +@cindex lazy strings in python +@tindex gdb.LazyString + +A @dfn{lazy string} is a string whose contents is not retrieved or +encoded until it is needed. + +A @code{gdb.LazyString} is represented in @value{GDBN} as an +@code{address} that points to a region of memory, an @code{encoding} +that will be used to encode that region of memory, and a @code{length} +to delimit the region of memory that represents the string. The +difference between a @code{gdb.LazyString} and a string wrapped within +a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated +differently by @value{GDBN} when printing. A @code{gdb.LazyString} is +retrieved and encoded during printing, while a @code{gdb.Value} +wrapping a string is immediately retrieved and encoded on creation. + +A @code{gdb.LazyString} object has the following functions: + +@defmethod LazyString value +Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value +will point to the string in memory, but will lose all the delayed +retrieval, encoding and handling that @value{GDBN} applies to a +@code{gdb.LazyString}. +@end defmethod + +@defivar LazyString address +This attribute holds the address of the string. This attribute is not +writable. +@end defivar + +@defivar LazyString length +This attribute holds the length of the string in characters. If the +length is -1, then the string will be fetched and encoded up to the +first null of appropriate width. This attribute is not writable. +@end defivar + +@defivar LazyString encoding +This attribute holds the encoding that will be applied to the string +when the string is printed by @value{GDBN}. If the encoding is not +set, or contains an empty string, then @value{GDBN} will select the +most appropriate encoding when the string is printed. This attribute +is not writable. +@end defivar + +@defivar LazyString type +This attribute holds the type that is represented by the lazy string's +type. For a lazy string this will always be a pointer type. To +resolve this to the lazy string's character type, use the type's +@code{target} method. @xref{Types In Python}. This attribute is not +writable. +@end defivar + +@node Auto-loading +@subsection Auto-loading +@cindex auto-loading, Python + +When a new object file is read (for example, due to the @code{file} +command, or because the inferior has loaded a shared library), +@value{GDBN} will look for Python support scripts in several ways: +@file{@var{objfile}-gdb.py} and @code{.debug_gdb_scripts} section. + +@menu +* objfile-gdb.py file:: The @file{@var{objfile}-gdb.py} file +* .debug_gdb_scripts section:: The @code{.debug_gdb_scripts} section +* Which flavor to choose?:: +@end menu + +The auto-loading feature is useful for supplying application-specific +debugging commands and scripts. + +Auto-loading can be enabled or disabled. + +@table @code +@kindex maint set python auto-load +@item maint set python auto-load [yes|no] +Enable or disable the Python auto-loading feature. + +@kindex maint show python auto-load +@item maint show python auto-load +Show whether Python auto-loading is enabled or disabled. +@end table + +When reading an auto-loaded file, @value{GDBN} sets the +@dfn{current objfile}. This is available via the @code{gdb.current_objfile} +function (@pxref{Objfiles In Python}). This can be useful for +registering objfile-specific pretty-printers. + +@node objfile-gdb.py file +@subsubsection The @file{@var{objfile}-gdb.py} file +@cindex @file{@var{objfile}-gdb.py} + +When a new object file is read, @value{GDBN} looks for +a file named @file{@var{objfile}-gdb.py}, +where @var{objfile} is the object file's real name, formed by ensuring +that the file name is absolute, following all symlinks, and resolving +@code{.} and @code{..} components. If this file exists and is +readable, @value{GDBN} will evaluate it as a Python script. + +If this file does not exist, and if the parameter +@code{debug-file-directory} is set (@pxref{Separate Debug Files}), +then @value{GDBN} will look for @var{real-name} in all of the +directories mentioned in the value of @code{debug-file-directory}. + +Finally, if this file does not exist, then @value{GDBN} will look for +a file named @file{@var{data-directory}/python/auto-load/@var{real-name}}, where +@var{data-directory} is @value{GDBN}'s data directory (available via +@code{show data-directory}, @pxref{Data Files}), and @var{real-name} +is the object file's real name, as described above. + +@value{GDBN} does not track which files it has already auto-loaded this way. +@value{GDBN} will load the associated script every time the corresponding +@var{objfile} is opened. +So your @file{-gdb.py} file should be careful to avoid errors if it +is evaluated more than once. + +@node .debug_gdb_scripts section +@subsubsection The @code{.debug_gdb_scripts} section +@cindex @code{.debug_gdb_scripts} section + +For systems using file formats like ELF and COFF, +when @value{GDBN} loads a new object file +it will look for a special section named @samp{.debug_gdb_scripts}. +If this section exists, its contents is a list of names of scripts to load. + +@value{GDBN} will look for each specified script file first in the +current directory and then along the source search path +(@pxref{Source Path, ,Specifying Source Directories}), +except that @file{$cdir} is not searched, since the compilation +directory is not relevant to scripts. + +Entries can be placed in section @code{.debug_gdb_scripts} with, +for example, this GCC macro: + +@example +/* Note: The "MS" section flags are to remove duplicates. */ +#define DEFINE_GDB_SCRIPT(script_name) \ + asm("\ +.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\ +.byte 1\n\ +.asciz \"" script_name "\"\n\ +.popsection \n\ +"); +@end example + +@noindent +Then one can reference the macro in a header or source file like this: + +@example +DEFINE_GDB_SCRIPT ("my-app-scripts.py") +@end example + +The script name may include directories if desired. + +If the macro is put in a header, any application or library +using this header will get a reference to the specified script. + +@node Which flavor to choose? +@subsubsection Which flavor to choose? + +Given the multiple ways of auto-loading Python scripts, it might not always +be clear which one to choose. This section provides some guidance. + +Benefits of the @file{-gdb.py} way: + +@itemize @bullet +@item +Can be used with file formats that don't support multiple sections. + +@item +Ease of finding scripts for public libraries. + +Scripts specified in the @code{.debug_gdb_scripts} section are searched for +in the source search path. +For publicly installed libraries, e.g., @file{libstdc++}, there typically +isn't a source directory in which to find the script. + +@item +Doesn't require source code additions. +@end itemize + +Benefits of the @code{.debug_gdb_scripts} way: + +@itemize @bullet +@item +Works with static linking. + +Scripts for libraries done the @file{-gdb.py} way require an objfile to +trigger their loading. When an application is statically linked the only +objfile available is the executable, and it is cumbersome to attach all the +scripts from all the input libraries to the executable's @file{-gdb.py} script. + +@item +Works with classes that are entirely inlined. + +Some classes can be entirely inlined, and thus there may not be an associated +shared library to attach a @file{-gdb.py} script to. + +@item +Scripts needn't be copied out of the source tree. + +In some circumstances, apps can be built out of large collections of internal +libraries, and the build infrastructure necessary to install the +@file{-gdb.py} scripts in a place where @value{GDBN} can find them is +cumbersome. It may be easier to specify the scripts in the +@code{.debug_gdb_scripts} section as relative paths, and add a path to the +top of the source tree to the source search path. +@end itemize + @node Interpreters @chapter Command Interpreters @cindex command interpreters @@ -20501,6 +23032,12 @@ These commands are always available, even when @value{GDBN} is not in the TUI mode. When @value{GDBN} is in the standard mode, most of these commands will automatically switch to the TUI mode. +Note that if @value{GDBN}'s @code{stdout} is not connected to a +terminal, or @value{GDBN} has been started with the machine interface +interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of +these commands will fail with an error, because it would not be +possible or desirable to enable curses window management. + @table @code @item info win @kindex info win @@ -21049,6 +23586,11 @@ groups can be obtained using @samp{-list-thread-groups --available}. In general, the content of a thread group may be only retrieved only after attaching to that thread group. +Thread groups are related to inferiors (@pxref{Inferiors and +Programs}). Each inferior corresponds to a thread group of a special +type @samp{process}, and some additional operations are permitted on +such thread groups. + @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @node GDB/MI Command Syntax @section @sc{gdb/mi} Command Syntax @@ -21353,6 +23895,7 @@ follow development on @email{gdb@@sourceware.org} and * GDB/MI Stream Records:: * GDB/MI Async Records:: * GDB/MI Frame Information:: +* GDB/MI Thread Information:: @end menu @node GDB/MI Result Records @@ -21371,9 +23914,12 @@ values. @item "^running" @findex ^running -@c Is this one correct? Should it be an out-of-band notification? -The asynchronous operation was successfully started. The target is -running. +This result record is equivalent to @samp{^done}. Historically, it +was output instead of @samp{^done} if the command has resumed the +target. This behaviour is maintained for backward compatibility, but +all frontends should treat @samp{^done} and @samp{^running} +identically and rely on the @samp{*running} output record to determine +which threads are resumed. @item "^connected" @findex ^connected @@ -21445,7 +23991,7 @@ several times, either for different threads, because it cannot resume all threads together, or even for a single thread, if the thread must be stepped though some code before letting it run freely. -@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}" +@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}" The target has stopped. The @var{reason} field can have one of the following values: @@ -21485,11 +24031,28 @@ If all threads are stopped, the @var{stopped} field will have the value of @code{"all"}. Otherwise, the value of the @var{stopped} field will be a list of thread identifiers. Presently, this list will always include a single thread, but frontend should be prepared to see -several threads in the list. +several threads in the list. The @var{core} field reports the +processor core on which the stop event has happened. This field may be absent +if such information is not available. + +@item =thread-group-added,id="@var{id}" +@itemx =thread-group-removed,id="@var{id}" +A thread group was either added or removed. The @var{id} field +contains the @value{GDBN} identifier of the thread group. When a thread +group is added, it generally might not be associated with a running +process. When a thread group is removed, its id becomes invalid and +cannot be used in any way. + +@item =thread-group-started,id="@var{id}",pid="@var{pid}" +A thread group became associated with a running program, +either because the program was just started or the thread group +was attached to a program. The @var{id} field contains the +@value{GDBN} identifier of the thread group. The @var{pid} field +contains process identifier, specific to the operating system. -@item =thread-group-created,id="@var{id}" @itemx =thread-group-exited,id="@var{id}" -A thread thread group either was attached to, or has exited/detached +A thread group is no longer associated with a running program, +either because the program has exited, or because it was detached from. The @var{id} field contains the @value{GDBN} identifier of the thread group. @@ -21520,12 +24083,19 @@ opaque identifier of the library. For remote debugging case, library file on the target, and on the host respectively. For native debugging, both those fields have the same value. The @var{symbols-loaded} field reports if the debug symbols for this -library are loaded. +library are loaded. The @var{thread-group} field, if present, +specifies the id of the thread group in whose context the library was loaded. +If the field is absent, it means the library was loaded in the context +of all present thread groups. @item =library-unloaded,... Reports that a library was unloaded by the program. This notification has 3 fields---@var{id}, @var{target-name} and @var{host-name} with -the same meaning as for the @code{=library-loaded} notification +the same meaning as for the @code{=library-loaded} notification. +The @var{thread-group} field, if present, specifies the id of the +thread group in whose context the library was unloaded. If the field is +absent, it means the library was unloaded in the context of all present +thread groups. @end table @@ -21562,6 +24132,34 @@ corresponds to the frame's code address. This field may be absent. @end table +@node GDB/MI Thread Information +@subsection @sc{gdb/mi} Thread Information + +Whenever @value{GDBN} has to report an information about a thread, it +uses a tuple with the following fields: + +@table @code +@item id +The numeric id assigned to the thread by @value{GDBN}. This field is +always present. + +@item target-id +Target-specific string identifying the thread. This field is always present. + +@item details +Additional information about the thread provided by the target. +It is supposed to be human-readable and not interpreted by the +frontend. This field is optional. + +@item state +Either @samp{stopped} or @samp{running}, depending on whether the +thread is presently running. This field is always present. + +@item core +The value of this field is an integer number of the processor core the +thread was last seen on. This field is optional. +@end table + @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @node GDB/MI Simple Examples @@ -21620,6 +24218,13 @@ Quitting @value{GDBN} just prints the result class @samp{^exit}. <- ^exit @end smallexample +Please note that @samp{^exit} is printed immediately, but it might +take some time for @value{GDBN} to actually exit. During that time, @value{GDBN} +performs necessary cleanups, including killing programs being debugged +or disconnecting from debug hardware, so the frontend should wait till +@value{GDBN} exits and should only forcibly kill @value{GDBN} if it +fails to exit in reasonable time. + @subheading A Bad Command Here's what happens if you pass a non-existent command: @@ -21933,7 +24538,7 @@ N.A. @subsubheading Synopsis @smallexample - -break-insert [ -t ] [ -h ] [ -f ] [ -d ] + -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ] [ -c @var{condition} ] [ -i @var{ignore-count} ] [ -p @var{thread} ] [ @var{location} ] @end smallexample @@ -21970,6 +24575,9 @@ an error, and won't create a breakpoint, if @var{location} cannot be parsed. @item -d Create a disabled breakpoint. +@item -a +Create a tracepoint. @xref{Tracepoints}. When this parameter +is used together with @samp{-h}, a fast tracepoint is created. @end table @subsubheading Result @@ -22107,6 +24715,20 @@ body=[]@} (gdb) @end smallexample +@subheading The @code{-break-passcount} Command +@findex -break-passcount + +@subsubheading Synopsis + +@smallexample + -break-passcount @var{tracepoint-number} @var{passcount} +@end smallexample + +Set the passcount for tracepoint @var{tracepoint-number} to +@var{passcount}. If the breakpoint referred to by @var{tracepoint-number} +is not a tracepoint, error is emitted. This corresponds to CLI +command @samp{passcount}. + @subheading The @code{-break-watch} Command @findex -break-watch @@ -22589,20 +25211,29 @@ other cases. @subsubheading Synopsis @smallexample - -exec-continue [--all|--thread-group N] + -exec-continue [--reverse] [--all|--thread-group N] @end smallexample -Resumes the execution of the inferior program until a breakpoint is -encountered, or until the inferior exits. In all-stop mode -(@pxref{All-Stop Mode}), may resume only one thread, or all threads, -depending on the value of the @samp{scheduler-locking} variable. In -non-stop mode (@pxref{Non-Stop Mode}), if the @samp{--all} is not -specified, only the thread specified with the @samp{--thread} option -(or current thread, if no @samp{--thread} is provided) is resumed. If -@samp{--all} is specified, all threads will be resumed. The -@samp{--all} option is ignored in all-stop mode. If the -@samp{--thread-group} options is specified, then all threads in that -thread group are resumed. +Resumes the execution of the inferior program, which will continue +to execute until it reaches a debugger stop event. If the +@samp{--reverse} option is specified, execution resumes in reverse until +it reaches a stop event. Stop events may include +@itemize @bullet +@item +breakpoints or watchpoints +@item +signals or exceptions +@item +the end of the process (or its beginning under @samp{--reverse}) +@item +the end or beginning of a replay log if one is being used. +@end itemize +In all-stop mode (@pxref{All-Stop +Mode}), may resume only one thread, or all threads, depending on the +value of the @samp{scheduler-locking} variable. If @samp{--all} is +specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is +ignored in all-stop mode. If the @samp{--thread-group} options is +specified, then all threads in that thread group are resumed. @subsubheading @value{GDBN} Command @@ -22628,11 +25259,14 @@ line="13"@} @subsubheading Synopsis @smallexample - -exec-finish + -exec-finish [--reverse] @end smallexample Resumes the execution of the inferior program until the current function is exited. Displays the results returned by the function. +If the @samp{--reverse} option is specified, resumes the reverse +execution of the inferior program until the point where current +function was called. @subsubheading @value{GDBN} Command @@ -22689,9 +25323,9 @@ asynchronous just like other execution commands. That is, first the reported after that using the @samp{*stopped} notification. In non-stop mode, only the context thread is interrupted by default. -All threads will be interrupted if the @samp{--all} option is -specified. If the @samp{--thread-group} option is specified, all -threads in that group will be interrupted. +All threads (in all inferiors) will be interrupted if the +@samp{--all} option is specified. If the @samp{--thread-group} +option is specified, all threads in that group will be interrupted. @subsubheading @value{GDBN} Command @@ -22751,12 +25385,19 @@ The corresponding @value{GDBN} command is @samp{jump}. @subsubheading Synopsis @smallexample - -exec-next + -exec-next [--reverse] @end smallexample Resumes execution of the inferior program, stopping when the beginning of the next source line is reached. +If the @samp{--reverse} option is specified, resumes reverse execution +of the inferior program, stopping at the beginning of the previous +source line. If you issue this command on the first line of a +function, it will take you back to the caller of that function, to the +source line where the function was called. + + @subsubheading @value{GDBN} Command The corresponding @value{GDBN} command is @samp{next}. @@ -22778,7 +25419,7 @@ The corresponding @value{GDBN} command is @samp{next}. @subsubheading Synopsis @smallexample - -exec-next-instruction + -exec-next-instruction [--reverse] @end smallexample Executes one machine instruction. If the instruction is a function @@ -22786,6 +25427,12 @@ call, continues until the function returns. If the program stops at an instruction in the middle of a source line, the address will be printed as well. +If the @samp{--reverse} option is specified, resumes reverse execution +of the inferior program, stopping at the previous instruction. If the +previously executed instruction was a return from another function, +it will continue to execute in reverse until the call to that function +(from the current stack frame) is reached. + @subsubheading @value{GDBN} Command The corresponding @value{GDBN} command is @samp{nexti}. @@ -22855,7 +25502,7 @@ fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@} @subsubheading Synopsis @smallexample - -exec-run + -exec-run [--all | --thread-group N] @end smallexample Starts execution of the inferior from the beginning. The inferior @@ -22863,6 +25510,11 @@ executes until either a breakpoint is encountered or the program exits. In the latter case the output will include an exit code, if the program has exited exceptionally. +When no option is specified, the current inferior is started. If the +@samp{--thread-group} option is specified, it should refer to a thread +group of type @samp{process}, and that thread group will be started. +If the @samp{--all} option is specified, then all inferiors will be started. + @subsubheading @value{GDBN} Command The corresponding @value{GDBN} command is @samp{run}. @@ -22928,13 +25580,15 @@ signal-meaning="Interrupt" @subsubheading Synopsis @smallexample - -exec-step + -exec-step [--reverse] @end smallexample Resumes execution of the inferior program, stopping when the beginning of the next source line is reached, if the next source line is not a function call. If it is, stop at the first instruction of the called -function. +function. If the @samp{--reverse} option is specified, resumes reverse +execution of the inferior program, stopping at the beginning of the +previously executed source line. @subsubheading @value{GDBN} Command @@ -22972,14 +25626,16 @@ Regular stepping: @subsubheading Synopsis @smallexample - -exec-step-instruction + -exec-step-instruction [--reverse] @end smallexample -Resumes the inferior which executes one machine instruction. The -output, once @value{GDBN} has stopped, will vary depending on whether -we have stopped in the middle of a source line or not. In the former -case, the address at which the program stopped will be printed as -well. +Resumes the inferior which executes one machine instruction. If the +@samp{--reverse} option is specified, resumes reverse execution of the +inferior program, stopping at the previously executed instruction. +The output, once @value{GDBN} has stopped, will vary depending on +whether we have stopped in the middle of a source line or not. In the +former case, the address at which the program stopped will be printed +as well. @subsubheading @value{GDBN} Command @@ -23121,7 +25777,7 @@ For a stack with frame levels 0 through 11: @subsubheading Synopsis @smallexample - -stack-list-arguments @var{show-values} + -stack-list-arguments @var{print-values} [ @var{low-frame} @var{high-frame} ] @end smallexample @@ -23134,9 +25790,14 @@ larger than the actual number of frames. On the other hand, @var{high-frame} may be larger than the actual number of frames, in which case only existing frames will be returned. -The @var{show-values} argument must have a value of 0 or 1. A value of -0 means that only the names of the arguments are listed, a value of 1 -means that both names and values of the arguments are printed. +If @var{print-values} is 0 or @code{--no-values}, print only the names of +the variables; if it is 1 or @code{--all-values}, print also their +values; and if it is 2 or @code{--simple-values}, print the name, +type and value for simple data types, and the name and type for arrays, +structures and unions. + +Use of this command to obtain arguments in a single frame is +deprecated in favor of the @samp{-stack-list-variables} command. @subsubheading @value{GDBN} Command @@ -23316,12 +25977,15 @@ Display the local variable names for the selected frame. If @var{print-values} is 0 or @code{--no-values}, print only the names of the variables; if it is 1 or @code{--all-values}, print also their values; and if it is 2 or @code{--simple-values}, print the name, -type and value for simple data types and the name and type for arrays, +type and value for simple data types, and the name and type for arrays, structures and unions. In this last case, a frontend can immediately display the value of simple data types and create variable objects for other data types when the user wishes to explore their values in more detail. +This command is deprecated in favor of the +@samp{-stack-list-variables} command. + @subsubheading @value{GDBN} Command @samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}. @@ -23342,6 +26006,31 @@ more detail. (gdb) @end smallexample +@subheading The @code{-stack-list-variables} Command +@findex -stack-list-variables + +@subsubheading Synopsis + +@smallexample + -stack-list-variables @var{print-values} +@end smallexample + +Display the names of local variables and function arguments for the selected frame. If +@var{print-values} is 0 or @code{--no-values}, print only the names of +the variables; if it is 1 or @code{--all-values}, print also their +values; and if it is 2 or @code{--simple-values}, print the name, +type and value for simple data types, and the name and type for arrays, +structures and unions. + +@subsubheading Example + +@smallexample +(gdb) +-stack-list-variables --thread 1 --frame 0 --all-values +^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}] +(gdb) +@end smallexample + @subheading The @code{-stack-select-frame} Command @findex -stack-select-frame @@ -23646,7 +26335,7 @@ then this attribute will not be present. @item displayhint A dynamic varobj can supply a display hint to the front end. The value comes directly from the Python pretty-printer object's -@code{display_hint} method. @xref{Pretty Printing}. +@code{display_hint} method. @xref{Pretty Printing API}. @end table Typical output will look like this: @@ -23748,7 +26437,7 @@ be available. Return a list of the children of the specified variable object and create variable objects for them, if they do not already exist. With -a single argument or if @var{print-values} has a value for of 0 or +a single argument or if @var{print-values} has a value of 0 or @code{--no-values}, print only the names of the variables; if @var{print-values} is 1 or @code{--all-values}, also print their values; and if it is 2 or @code{--simple-values} print the name and @@ -23818,7 +26507,7 @@ The result may have its own attributes: @item displayhint A dynamic varobj can supply a display hint to the front end. The value comes directly from the Python pretty-printer object's -@code{display_hint} method. @xref{Pretty Printing}. +@code{display_hint} method. @xref{Pretty Printing API}. @item has_more This is an integer attribute which is nonzero if there are children @@ -24182,7 +26871,7 @@ single argument. @value{GDBN} will call this object with the value of the varobj @var{name} as an argument (this is done so that the same Python pretty-printing code can be used for both the CLI and MI). When called, this object must return an object which conforms to the -pretty-printing interface (@pxref{Pretty Printing}). +pretty-printing interface (@pxref{Pretty Printing API}). The pre-defined function @code{gdb.default_visualizer} may be used to select a visualizer by following the built-in process @@ -24693,41 +27382,274 @@ next-page="0x000013c0",prev-page="0x00001380",memory=[ (gdb) @end smallexample -@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -@node GDB/MI Tracepoint Commands -@section @sc{gdb/mi} Tracepoint Commands +@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +@node GDB/MI Tracepoint Commands +@section @sc{gdb/mi} Tracepoint Commands + +The commands defined in this section implement MI support for +tracepoints. For detailed introduction, see @ref{Tracepoints}. + +@subheading The @code{-trace-find} Command +@findex -trace-find + +@subsubheading Synopsis + +@smallexample + -trace-find @var{mode} [@var{parameters}@dots{}] +@end smallexample + +Find a trace frame using criteria defined by @var{mode} and +@var{parameters}. The following table lists permissible +modes and their parameters. For details of operation, see @ref{tfind}. + +@table @samp + +@item none +No parameters are required. Stops examining trace frames. + +@item frame-number +An integer is required as parameter. Selects tracepoint frame with +that index. + +@item tracepoint-number +An integer is required as parameter. Finds next +trace frame that corresponds to tracepoint with the specified number. + +@item pc +An address is required as parameter. Finds +next trace frame that corresponds to any tracepoint at the specified +address. + +@item pc-inside-range +Two addresses are required as parameters. Finds next trace +frame that corresponds to a tracepoint at an address inside the +specified range. Both bounds are considered to be inside the range. + +@item pc-outside-range +Two addresses are required as parameters. Finds +next trace frame that corresponds to a tracepoint at an address outside +the specified range. Both bounds are considered to be inside the range. + +@item line +Line specification is required as parameter. @xref{Specify Location}. +Finds next trace frame that corresponds to a tracepoint at +the specified location. + +@end table + +If @samp{none} was passed as @var{mode}, the response does not +have fields. Otherwise, the response may have the following fields: + +@table @samp +@item found +This field has either @samp{0} or @samp{1} as the value, depending +on whether a matching tracepoint was found. + +@item traceframe +The index of the found traceframe. This field is present iff +the @samp{found} field has value of @samp{1}. + +@item tracepoint +The index of the found tracepoint. This field is present iff +the @samp{found} field has value of @samp{1}. + +@item frame +The information about the frame corresponding to the found trace +frame. This field is present only if a trace frame was found. +@xref{GDB/MI Frame Information}, for description of this field. + +@end table + +@subsubheading @value{GDBN} Command + +The corresponding @value{GDBN} command is @samp{tfind}. + +@subheading -trace-define-variable +@findex -trace-define-variable + +@subsubheading Synopsis + +@smallexample + -trace-define-variable @var{name} [ @var{value} ] +@end smallexample + +Create trace variable @var{name} if it does not exist. If +@var{value} is specified, sets the initial value of the specified +trace variable to that value. Note that the @var{name} should start +with the @samp{$} character. + +@subsubheading @value{GDBN} Command + +The corresponding @value{GDBN} command is @samp{tvariable}. + +@subheading -trace-list-variables +@findex -trace-list-variables + +@subsubheading Synopsis + +@smallexample + -trace-list-variables +@end smallexample + +Return a table of all defined trace variables. Each element of the +table has the following fields: + +@table @samp +@item name +The name of the trace variable. This field is always present. + +@item initial +The initial value. This is a 64-bit signed integer. This +field is always present. + +@item current +The value the trace variable has at the moment. This is a 64-bit +signed integer. This field is absent iff current value is +not defined, for example if the trace was never run, or is +presently running. + +@end table + +@subsubheading @value{GDBN} Command + +The corresponding @value{GDBN} command is @samp{tvariables}. + +@subsubheading Example + +@smallexample +(gdb) +-trace-list-variables +^done,trace-variables=@{nr_rows="1",nr_cols="3", +hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@}, + @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@}, + @{width="11",alignment="-1",col_name="current",colhdr="Current"@}], +body=[variable=@{name="$trace_timestamp",initial="0"@} + variable=@{name="$foo",initial="10",current="15"@}]@} +(gdb) +@end smallexample + +@subheading -trace-save +@findex -trace-save + +@subsubheading Synopsis + +@smallexample + -trace-save [-r ] @var{filename} +@end smallexample + +Saves the collected trace data to @var{filename}. Without the +@samp{-r} option, the data is downloaded from the target and saved +in a local file. With the @samp{-r} option the target is asked +to perform the save. + +@subsubheading @value{GDBN} Command + +The corresponding @value{GDBN} command is @samp{tsave}. + + +@subheading -trace-start +@findex -trace-start + +@subsubheading Synopsis + +@smallexample + -trace-start +@end smallexample + +Starts a tracing experiments. The result of this command does not +have any fields. + +@subsubheading @value{GDBN} Command + +The corresponding @value{GDBN} command is @samp{tstart}. -The tracepoint commands are not yet implemented. +@subheading -trace-status +@findex -trace-status -@c @subheading -trace-actions +@subsubheading Synopsis -@c @subheading -trace-delete +@smallexample + -trace-status +@end smallexample -@c @subheading -trace-disable +Obtains the status of a tracing experiment. The result may include +the following fields: -@c @subheading -trace-dump +@table @samp -@c @subheading -trace-enable +@item supported +May have a value of either @samp{0}, when no tracing operations are +supported, @samp{1}, when all tracing operations are supported, or +@samp{file} when examining trace file. In the latter case, examining +of trace frame is possible but new tracing experiement cannot be +started. This field is always present. -@c @subheading -trace-exists +@item running +May have a value of either @samp{0} or @samp{1} depending on whether +tracing experiement is in progress on target. This field is present +if @samp{supported} field is not @samp{0}. + +@item stop-reason +Report the reason why the tracing was stopped last time. This field +may be absent iff tracing was never stopped on target yet. The +value of @samp{request} means the tracing was stopped as result of +the @code{-trace-stop} command. The value of @samp{overflow} means +the tracing buffer is full. The value of @samp{disconnection} means +tracing was automatically stopped when @value{GDBN} has disconnected. +The value of @samp{passcount} means tracing was stopped when a +tracepoint was passed a maximal number of times for that tracepoint. +This field is present if @samp{supported} field is not @samp{0}. + +@item stopping-tracepoint +The number of tracepoint whose passcount as exceeded. This field is +present iff the @samp{stop-reason} field has the value of +@samp{passcount}. + +@item frames +@itemx frames-created +The @samp{frames} field is a count of the total number of trace frames +in the trace buffer, while @samp{frames-created} is the total created +during the run, including ones that were discarded, such as when a +circular trace buffer filled up. Both fields are optional. + +@item buffer-size +@itemx buffer-free +These fields tell the current size of the tracing buffer and the +remaining space. These fields are optional. + +@item circular +The value of the circular trace buffer flag. @code{1} means that the +trace buffer is circular and old trace frames will be discarded if +necessary to make room, @code{0} means that the trace buffer is linear +and may fill up. + +@item disconnected +The value of the disconnected tracing flag. @code{1} means that +tracing will continue after @value{GDBN} disconnects, @code{0} means +that the trace run will stop. -@c @subheading -trace-find +@end table -@c @subheading -trace-frame-number +@subsubheading @value{GDBN} Command -@c @subheading -trace-info +The corresponding @value{GDBN} command is @samp{tstatus}. -@c @subheading -trace-insert +@subheading -trace-stop +@findex -trace-stop -@c @subheading -trace-list +@subsubheading Synopsis -@c @subheading -trace-pass-count +@smallexample + -trace-stop +@end smallexample -@c @subheading -trace-save +Stops a tracing experiment. The result of this command has the same +fields as @code{-trace-status}, except that the @samp{supported} and +@samp{running} fields are not output. -@c @subheading -trace-start +@subsubheading @value{GDBN} Command -@c @subheading -trace-stop +The corresponding @value{GDBN} command is @samp{tstop}. @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -25826,6 +28748,10 @@ Indicates that the target is capable of asynchronous command execution, which means that @value{GDBN} will accept further commands while the target is running. +@item reverse +Indicates that the target is capable of reverse execution. +@xref{Reverse Execution}, for more information. + @end table @subheading The @code{-list-thread-groups} Command @@ -25834,20 +28760,91 @@ while the target is running. @subheading Synopsis @smallexample --list-thread-groups [ --available ] [ @var{group} ] +-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ] @end smallexample -When used without the @var{group} parameter, lists top-level thread -groups that are being debugged. When used with the @var{group} -parameter, the children of the specified group are listed. The -children can be either threads, or other groups. At present, -@value{GDBN} will not report both threads and groups as children at -the same time, but it may change in future. +Lists thread groups (@pxref{Thread groups}). When a single thread +group is passed as the argument, lists the children of that group. +When several thread group are passed, lists information about those +thread groups. Without any parameters, lists information about all +top-level thread groups. + +Normally, thread groups that are being debugged are reported. +With the @samp{--available} option, @value{GDBN} reports thread groups +available on the target. + +The output of this command may have either a @samp{threads} result or +a @samp{groups} result. The @samp{thread} result has a list of tuples +as value, with each tuple describing a thread (@pxref{GDB/MI Thread +Information}). The @samp{groups} result has a list of tuples as value, +each tuple describing a thread group. If top-level groups are +requested (that is, no parameter is passed), or when several groups +are passed, the output always has a @samp{groups} result. The format +of the @samp{group} result is described below. + +To reduce the number of roundtrips it's possible to list thread groups +together with their children, by passing the @samp{--recurse} option +and the recursion depth. Presently, only recursion depth of 1 is +permitted. If this option is present, then every reported thread group +will also include its children, either as @samp{group} or +@samp{threads} field. + +In general, any combination of option and parameters is permitted, with +the following caveats: + +@itemize @bullet +@item +When a single thread group is passed, the output will typically +be the @samp{threads} result. Because threads may not contain +anything, the @samp{recurse} option will be ignored. + +@item +When the @samp{--available} option is passed, limited information may +be available. In particular, the list of threads of a process might +be inaccessible. Further, specifying specific thread groups might +not give any performance advantage over listing all thread groups. +The frontend should assume that @samp{-list-thread-groups --available} +is always an expensive operation and cache the results. + +@end itemize + +The @samp{groups} result is a list of tuples, where each tuple may +have the following fields: + +@table @code +@item id +Identifier of the thread group. This field is always present. +The identifier is an opaque string; frontends should not try to +convert it to an integer, even though it might look like one. + +@item type +The type of the thread group. At present, only @samp{process} is a +valid type. + +@item pid +The target-specific process identifier. This field is only present +for thread groups of type @samp{process} and only if the process exists. + +@item num_children +The number of children this thread group has. This field may be +absent for an available thread group. -With the @samp{--available} option, instead of reporting groups that -are been debugged, GDB will report all thread groups available on the -target. Using the @samp{--available} option together with @var{group} -is not allowed. +@item threads +This field has a list of tuples as value, each tuple describing a +thread. It may be present if the @samp{--recurse} option is +specified, and it's actually possible to obtain the threads. + +@item cores +This field is a list of integers, each identifying a core that one +thread of the group is running on. This field may be absent if +such information is not available. + +@item executable +The name of the executable file that corresponds to this thread group. +The field is only present for thread groups of type @samp{process}, +and only if there is a corresponding executable file. + +@end table @subheading Example @@ -25861,6 +28858,41 @@ is not allowed. @{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}], file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]] +-list-thread-groups --available +^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}] +-list-thread-groups --available --recurse 1 + ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], + threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, + @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..] +-list-thread-groups --available --recurse 1 17 18 +^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], + threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, + @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...] +@end smallexample + + +@subheading The @code{-add-inferior} Command +@findex -add-inferior + +@subheading Synopsis + +@smallexample +-add-inferior +@end smallexample + +Creates a new inferior (@pxref{Inferiors and Programs}). The created +inferior is not associated with any executable. Such association may +be established with the @samp{-file-exec-and-symbols} command +(@pxref{GDB/MI File Commands}). The command response has a single +field, @samp{thread-group}, whose value is the identifier of the +thread group corresponding to the new inferior. + +@subheading Example + +@smallexample +@value{GDBP} +-add-inferior +^done,thread-group="i3" @end smallexample @subheading The @code{-interpreter-exec} Command @@ -27417,8 +30449,9 @@ Print @value{GDBN}'s internal register data structures. The command @code{maint print raw-registers} includes the contents of the raw register cache; the command @code{maint print cooked-registers} -includes the (cooked) value of all registers; and the command -@code{maint print register-groups} includes the groups that each +includes the (cooked) value of all registers, including registers which +aren't available on the target nor visible to user; and the +command @code{maint print register-groups} includes the groups that each register is a member of. @xref{Registers,, Registers, gdbint, @value{GDBN} Internals}. @@ -27456,6 +30489,16 @@ Print a dump of all known object files. For each object file, this command prints its name, address in memory, and all of its psymtabs and symtabs. +@kindex maint print section-scripts +@cindex info for known .debug_gdb_scripts-loaded scripts +@item maint print section-scripts [@var{regexp}] +Print a dump of scripts specified in the @code{.debug_gdb_section} section. +If @var{regexp} is specified, only print scripts loaded by object files +matching @var{regexp}. +For each script, this command prints its name as specified in the objfile, +and the full path if known. +@xref{.debug_gdb_scripts section}. + @kindex maint print statistics @cindex bcache statistics @item maint print statistics @@ -27493,6 +30536,31 @@ that symbol is described. The type chain produced by this command is a recursive definition of the data type as stored in @value{GDBN}'s data structures, including its flags and contained types. +@kindex maint set dwarf2 always-disassemble +@kindex maint show dwarf2 always-disassemble +@item maint set dwarf2 always-disassemble +@item maint show dwarf2 always-disassemble +Control the behavior of @code{info address} when using DWARF debugging +information. + +The default is @code{off}, which means that @value{GDBN} should try to +describe a variable's location in an easily readable format. When +@code{on}, @value{GDBN} will instead display the DWARF location +expression in an assembly-like format. Note that some locations are +too complex for @value{GDBN} to describe simply; in this case you will +always see the disassembly form. + +Here is an example of the resulting disassembly: + +@smallexample +(gdb) info addr argc +Symbol "argc" is a complex DWARF expression: + 1: DW_OP_fbreg 0 +@end smallexample + +For more information on these expressions, see +@uref{http://www.dwarfstd.org/, the DWARF standard}. + @kindex maint set dwarf2 max-cache-age @kindex maint show dwarf2 max-cache-age @item maint set dwarf2 max-cache-age @@ -27538,6 +30606,14 @@ enabled, the debug registers values are shown when @value{GDBN} inserts or removes a hardware breakpoint or watchpoint, and when the inferior triggers a hardware-assisted breakpoint or watchpoint. +@kindex maint set show-all-tib +@kindex maint show show-all-tib +@item maint set show-all-tib +@itemx maint show show-all-tib +Control whether to show all non zero areas within a 1k block starting +at thread local base, when using the @samp{info w32 thread-information-block} +command. + @kindex maint space @cindex memory used by commands @item maint space @@ -27599,7 +30675,7 @@ Show the current setting of the target wait timeout. * Packets:: * Stop Reply Packets:: * General Query Packets:: -* Register Packet Format:: +* Architecture-Specific Protocol Details:: * Tracepoint Packets:: * Host I/O Packets:: * Interrupts:: @@ -27610,6 +30686,7 @@ Show the current setting of the target wait timeout. * File-I/O Remote Protocol Extension:: * Library List Format:: * Memory Map Format:: +* Thread List Format:: @end menu @node Overview @@ -28345,14 +31422,13 @@ for success for an error @end table -@item z @var{type},@var{addr},@var{length} -@itemx Z @var{type},@var{addr},@var{length} +@item z @var{type},@var{addr},@var{kind} +@itemx Z @var{type},@var{addr},@var{kind} @anchor{insert breakpoint or watchpoint packet} @cindex @samp{z} packet @cindex @samp{Z} packets Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or -watchpoint starting at address @var{address} and covering the next -@var{length} bytes. +watchpoint starting at address @var{address} of kind @var{kind}. Each breakpoint and watchpoint packet @var{type} is documented separately. @@ -28364,18 +31440,20 @@ remote target shall support either both or neither of a given avoid potential problems with duplicate packets, the operations should be implemented in an idempotent way.} -@item z0,@var{addr},@var{length} -@itemx Z0,@var{addr},@var{length} +@item z0,@var{addr},@var{kind} +@itemx Z0,@var{addr},@var{kind} @cindex @samp{z0} packet @cindex @samp{Z0} packet Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address -@var{addr} of size @var{length}. +@var{addr} of type @var{kind}. A memory breakpoint is implemented by replacing the instruction at @var{addr} with a software breakpoint or trap instruction. The -@var{length} is used by targets that indicates the size of the -breakpoint (in bytes) that should be inserted (e.g., the @sc{arm} and -@sc{mips} can insert either a 2 or 4 byte breakpoint). +@var{kind} is target-specific and typically indicates the size of +the breakpoint in bytes that should be inserted. E.g., the @sc{arm} +and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some +architectures have additional meanings for @var{kind}; +see @ref{Architecture-Specific Protocol Details}. @emph{Implementation note: It is possible for a target to copy or move code that contains memory breakpoints (e.g., when implementing @@ -28392,15 +31470,16 @@ not supported for an error @end table -@item z1,@var{addr},@var{length} -@itemx Z1,@var{addr},@var{length} +@item z1,@var{addr},@var{kind} +@itemx Z1,@var{addr},@var{kind} @cindex @samp{z1} packet @cindex @samp{Z1} packet Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at -address @var{addr} of size @var{length}. +address @var{addr}. A hardware breakpoint is implemented using a mechanism that is not -dependant on being able to modify the target's memory. +dependant on being able to modify the target's memory. @var{kind} +has the same meaning as in @samp{Z0} packets. @emph{Implementation note: A hardware breakpoint is not affected by code movement.} @@ -28415,11 +31494,12 @@ not supported for an error @end table -@item z2,@var{addr},@var{length} -@itemx Z2,@var{addr},@var{length} +@item z2,@var{addr},@var{kind} +@itemx Z2,@var{addr},@var{kind} @cindex @samp{z2} packet @cindex @samp{Z2} packet -Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint. +Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}. +@var{kind} is interpreted as the number of bytes to watch. Reply: @table @samp @@ -28431,11 +31511,12 @@ not supported for an error @end table -@item z3,@var{addr},@var{length} -@itemx Z3,@var{addr},@var{length} +@item z3,@var{addr},@var{kind} +@itemx Z3,@var{addr},@var{kind} @cindex @samp{z3} packet @cindex @samp{Z3} packet -Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint. +Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}. +@var{kind} is interpreted as the number of bytes to watch. Reply: @table @samp @@ -28447,11 +31528,12 @@ not supported for an error @end table -@item z4,@var{addr},@var{length} -@itemx Z4,@var{addr},@var{length} +@item z4,@var{addr},@var{kind} +@itemx Z4,@var{addr},@var{kind} @cindex @samp{z4} packet @cindex @samp{Z4} packet -Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint. +Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}. +@var{kind} is interpreted as the number of bytes to watch. Reply: @table @samp @@ -28509,6 +31591,10 @@ two-digit hex number. If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of the stopped thread, as specified in @ref{thread-id syntax}. +@item +If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of +the core on which the stop event was detected. + @item If @var{n} is a recognized @dfn{stop reason}, it describes a more specific event that stopped the target. The currently defined stop @@ -28543,8 +31629,6 @@ logged execution events, because it has reached the end (or the beginning when executing backward) of the log. The value of @var{r} will be either @samp{begin} or @samp{end}. @xref{Reverse Execution}, for more information. - - @end table @item W @var{AA} @@ -28641,6 +31725,18 @@ Here are the currently defined query and set packets: @table @samp +@item QAllow:@var{op}:@var{val}@dots{} +@cindex @samp{QAllow} packet +Specify which operations @value{GDBN} expects to request of the +target, as a semicolon-separated list of operation name and value +pairs. Possible values for @var{op} include @samp{WriteReg}, +@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace}, +@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0, +indicating that @value{GDBN} will not request the operation, or 1, +indicating that it may. (The target can then use this to set up its +own internals optimally, for instance if the debugger never expects to +insert breakpoints, it may not need to install its own trap handler.) + @item qC @cindex current thread, remote request @cindex @samp{qC} packet @@ -28706,7 +31802,7 @@ In response to each query, the target will reply with a list of one or more thread IDs, separated by commas. @value{GDBN} will respond to each reply with a request for more thread ids (using the @samp{qs} form of the query), until the target responds -with @samp{l} (lower-case el, for @dfn{last}). +with @samp{l} (lower-case ell, for @dfn{last}). Refer to @ref{thread-id syntax}, for the format of the @var{thread-id} fields. @@ -28743,6 +31839,27 @@ An error occurred. @var{nn} are hex digits. An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub. @end table +@item qGetTIBAddr:@var{thread-id} +@cindex get thread information block address +@cindex @samp{qGetTIBAddr} packet +Fetch address of the Windows OS specific Thread Information Block. + +@var{thread-id} is the thread ID associated with the thread. + +Reply: +@table @samp +@item @var{XX}@dots{} +Hex encoded (big endian) bytes representing the linear address of the +thread information block. + +@item E @var{nn} +An error occured. This means that either the thread was not found, or the +address could not be retrieved. + +@item +An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub. +@end table + @item qL @var{startflag} @var{threadcount} @var{nextthread} Obtain thread information from RTOS. Where: @var{startflag} (one hex digit) is one to indicate the first query and zero to indicate a @@ -28996,6 +32113,17 @@ extensions to the remote protocol. @value{GDBN} does not use such extensions unless the stub also reports that it supports them by including @samp{multiprocess+} in its @samp{qSupported} reply. @xref{multiprocess extensions}, for details. + +@item xmlRegisters +This feature indicates that @value{GDBN} supports the XML target +description. If the stub sees @samp{xmlRegisters=} with target +specific strings separated by a comma, it will report register +description. + +@item qRelocInsn +This feature indicates whether @value{GDBN} supports the +@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate +instruction reply packet}). @end table Stubs should ignore any unknown values for @@ -29064,6 +32192,11 @@ These are the currently defined stub features and their properties: @tab @samp{-} @tab Yes +@item @samp{qXfer:sdata:read} +@tab No +@tab @samp{-} +@tab Yes + @item @samp{qXfer:spu:read} @tab No @tab @samp{-} @@ -29084,6 +32217,12 @@ These are the currently defined stub features and their properties: @tab @samp{-} @tab Yes +@item @samp{qXfer:threads:read} +@tab No +@tab @samp{-} +@tab Yes + + @item @samp{QNonStop} @tab No @tab @samp{-} @@ -29111,12 +32250,22 @@ These are the currently defined stub features and their properties: @item @samp{ReverseContinue} @tab No -@tab @samp{+} +@tab @samp{-} @tab No @item @samp{ReverseStep} @tab No -@tab @samp{+} +@tab @samp{-} +@tab No + +@item @samp{TracepointSource} +@tab No +@tab @samp{-} +@tab No + +@item @samp{QAllow} +@tab No +@tab @samp{-} @tab No @end multitable @@ -29151,6 +32300,10 @@ The remote stub understands the @samp{qXfer:libraries:read} packet The remote stub understands the @samp{qXfer:memory-map:read} packet (@pxref{qXfer memory map read}). +@item qXfer:sdata:read +The remote stub understands the @samp{qXfer:sdata:read} packet +(@pxref{qXfer sdata read}). + @item qXfer:spu:read The remote stub understands the @samp{qXfer:spu:read} packet (@pxref{qXfer spu read}). @@ -29167,6 +32320,10 @@ The remote stub understands the @samp{qXfer:siginfo:read} packet The remote stub understands the @samp{qXfer:siginfo:write} packet (@pxref{qXfer siginfo write}). +@item qXfer:threads:read +The remote stub understands the @samp{qXfer:threads:read} packet +(@pxref{qXfer threads read}). + @item QNonStop The remote stub understands the @samp{QNonStop} packet (@pxref{QNonStop}). @@ -29208,6 +32365,17 @@ The remote stub accepts and implements the reverse continue packet The remote stub accepts and implements the reverse step packet (@pxref{bs}). +@item TracepointSource +The remote stub understands the @samp{QTDPsrc} packet that supplies +the source form of tracepoint definitions. + +@item QAllow +The remote stub understands the @samp{QAllow} packet. + +@item StaticTracepoint +@cindex static tracepoints, in remote protocol +The remote stub supports static tracepoints. + @end table @item qSymbol:: @@ -29247,7 +32415,14 @@ encoded). @value{GDBN} will continue to supply the values of symbols (if available), until the target ceases to request them. @end table -@item QTDP +@item qTBuffer +@item QTBuffer +@item QTDisconnected +@itemx QTDP +@itemx QTDPsrc +@itemx QTDV +@itemx qTfP +@itemx qTfV @itemx QTFrame @xref{Tracepoint Packets}. @@ -29276,11 +32451,18 @@ the command by a @samp{,}, not a @samp{:}, contrary to the naming conventions above. Please don't use this packet as a model for new packets.) -@item QTStart +@item QTSave +@item qTsP +@item qTsV +@itemx QTStart @itemx QTStop @itemx QTinit @itemx QTro @itemx qTStatus +@itemx qTV +@itemx qTfSTM +@itemx qTsSTM +@itemx qTSTMat @xref{Tracepoint Packets}. @item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length} @@ -29337,6 +32519,18 @@ annex part of the generic @samp{qXfer} packet must be empty This packet is not probed by default; the remote stub must request it, by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). +@item qXfer:sdata:read::@var{offset},@var{length} +@anchor{qXfer sdata read} + +Read contents of the extra collected static tracepoint marker +information. The annex part of the generic @samp{qXfer} packet must +be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint +Action Lists}. + +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate @samp{qSupported} response +(@pxref{qSupported}). + @item qXfer:siginfo:read::@var{offset},@var{length} @anchor{qXfer siginfo read} Read contents of the extra signal information on the target @@ -29359,6 +32553,15 @@ This packet is not probed by default; the remote stub must request it, by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). +@item qXfer:threads:read::@var{offset},@var{length} +@anchor{qXfer threads read} +Access the list of threads on target. @xref{Thread List Format}. The +annex part of the generic @samp{qXfer} packet must be empty +(@pxref{qXfer read}). + +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). + @item qXfer:osdata:read::@var{offset},@var{length} @anchor{qXfer osdata read} Access the target's @dfn{operating system information}. @@ -29484,8 +32687,35 @@ A badly formed request or an error was encountered. @end table -@node Register Packet Format -@section Register Packet Format +@node Architecture-Specific Protocol Details +@section Architecture-Specific Protocol Details + +This section describes how the remote protocol is applied to specific +target architectures. Also see @ref{Standard Target Features}, for +details of XML target descriptions for each architecture. + +@subsection ARM + +@subsubsection Breakpoint Kinds + +These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. + +@table @r + +@item 2 +16-bit Thumb mode breakpoint. + +@item 3 +32-bit Thumb mode (Thumb-2) breakpoint. + +@item 4 +32-bit ARM mode breakpoint. + +@end table + +@subsection MIPS + +@subsubsection Register Packet Format The following @code{g}/@code{G} packets have previously been defined. In the below, some thirty-two bit registers are transferred as @@ -29520,21 +32750,26 @@ tracepoints (@pxref{Tracepoints}). @table @samp -@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:X@var{len},@var{bytes}]@r{[}-@r{]} +@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]} Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena} is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then the tracepoint is disabled. @var{step} is the tracepoint's step -count, and @var{pass} is its pass count. If an @samp{X} is present, -it introduces a tracepoint condition, which consists of a hexadecimal -length, followed by a comma and hex-encoded bytes, in a manner similar -to action encodings as described below. If the trailing @samp{-} is -present, further @samp{QTDP} packets will follow to specify this -tracepoint's actions. +count, and @var{pass} is its pass count. If an @samp{F} is present, +then the tracepoint is to be a fast tracepoint, and the @var{flen} is +the number of bytes that the target should copy elsewhere to make room +for the tracepoint. If an @samp{X} is present, it introduces a +tracepoint condition, which consists of a hexadecimal length, followed +by a comma and hex-encoded bytes, in a manner similar to action +encodings as described below. If the trailing @samp{-} is present, +further @samp{QTDP} packets will follow to specify this tracepoint's +actions. Replies: @table @samp @item OK The packet was understood and carried out. +@item qRelocInsn +@xref{Tracepoint Packets,,Relocate instruction reply packet}. @item The packet was not recognized. @end table @@ -29599,10 +32834,56 @@ Replies: @table @samp @item OK The packet was understood and carried out. +@item qRelocInsn +@xref{Tracepoint Packets,,Relocate instruction reply packet}. @item The packet was not recognized. @end table +@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes} +@cindex @samp{QTDPsrc} packet +Specify a source string of tracepoint @var{n} at address @var{addr}. +This is useful to get accurate reproduction of the tracepoints +originally downloaded at the beginning of the trace run. @var{type} +is the name of the tracepoint part, such as @samp{cond} for the +tracepoint's conditional expression (see below for a list of types), while +@var{bytes} is the string, encoded in hexadecimal. + +@var{start} is the offset of the @var{bytes} within the overall source +string, while @var{slen} is the total length of the source string. +This is intended for handling source strings that are longer than will +fit in a single packet. +@c Add detailed example when this info is moved into a dedicated +@c tracepoint descriptions section. + +The available string types are @samp{at} for the location, +@samp{cond} for the conditional, and @samp{cmd} for an action command. +@value{GDBN} sends a separate packet for each command in the action +list, in the same order in which the commands are stored in the list. + +The target does not need to do anything with source strings except +report them back as part of the replies to the @samp{qTfP}/@samp{qTsP} +query packets. + +Although this packet is optional, and @value{GDBN} will only send it +if the target replies with @samp{TracepointSource} @xref{General +Query Packets}, it makes both disconnected tracing and trace files +much easier to use. Otherwise the user must be careful that the +tracepoints in effect while looking at trace frames are identical to +the ones in effect during the trace run; even a small discrepancy +could cause @samp{tdump} not to work, or a particular trace frame not +be found. + +@item QTDV:@var{n}:@var{value} +@cindex define trace state variable, remote request +@cindex @samp{QTDV} packet +Create a new trace state variable, number @var{n}, with an initial +value of @var{value}, which is a 64-bit signed integer. Both @var{n} +and @var{value} are encoded as hexadecimal values. @value{GDBN} has +the option of not using this packet for initial values of zero; the +target should simply create the trace state variables as they are +mentioned in expressions. + @item QTFrame:@var{n} Select the @var{n}'th tracepoint frame from the buffer, and use the register and memory contents recorded there to answer subsequent @@ -29638,16 +32919,18 @@ is a hexadecimal number. @item QTFrame:range:@var{start}:@var{end} Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the currently selected frame whose PC is between @var{start} (inclusive) -and @var{end} (exclusive); @var{start} and @var{end} are hexadecimal +and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal numbers. @item QTFrame:outside:@var{start}:@var{end} Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first -frame @emph{outside} the given range of addresses. +frame @emph{outside} the given range of addresses (exclusive). @item QTStart -Begin the tracepoint experiment. Begin collecting data from tracepoint -hits in the trace frame buffer. +Begin the tracepoint experiment. Begin collecting data from +tracepoint hits in the trace frame buffer. This packet supports the +@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate +instruction reply packet}). @item QTStop End the tracepoint experiment. Stop collecting trace frames. @@ -29665,19 +32948,223 @@ containing program code. Since these areas never change, they should still have the same contents they did when the tracepoint was hit, so there's no reason for the stub to refuse to provide their contents. +@item QTDisconnected:@var{value} +Set the choice to what to do with the tracing run when @value{GDBN} +disconnects from the target. A @var{value} of 1 directs the target to +continue the tracing run, while 0 tells the target to stop tracing if +@value{GDBN} is no longer in the picture. + @item qTStatus Ask the stub if there is a trace experiment running right now. +The reply has the form: + +@table @samp + +@item T@var{running}@r{[};@var{field}@r{]}@dots{} +@var{running} is a single digit @code{1} if the trace is presently +running, or @code{0} if not. It is followed by semicolon-separated +optional fields that an agent may use to report additional status. + +@end table + +If the trace is not running, the agent may report any of several +explanations as one of the optional fields: + +@table @samp + +@item tnotrun:0 +No trace has been run yet. + +@item tstop:0 +The trace was stopped by a user-originated stop command. + +@item tfull:0 +The trace stopped because the trace buffer filled up. + +@item tdisconnected:0 +The trace stopped because @value{GDBN} disconnected from the target. + +@item tpasscount:@var{tpnum} +The trace stopped because tracepoint @var{tpnum} exceeded its pass count. + +@item terror:@var{text}:@var{tpnum} +The trace stopped because tracepoint @var{tpnum} had an error. The +string @var{text} is available to describe the nature of the error +(for instance, a divide by zero in the condition expression). +@var{text} is hex encoded. + +@item tunknown:0 +The trace stopped for some other reason. + +@end table + +Additional optional fields supply statistical and other information. +Although not required, they are extremely useful for users monitoring +the progress of a trace run. If a trace has stopped, and these +numbers are reported, they must reflect the state of the just-stopped +trace. + +@table @samp + +@item tframes:@var{n} +The number of trace frames in the buffer. + +@item tcreated:@var{n} +The total number of trace frames created during the run. This may +be larger than the trace frame count, if the buffer is circular. + +@item tsize:@var{n} +The total size of the trace buffer, in bytes. + +@item tfree:@var{n} +The number of bytes still unused in the buffer. + +@item circular:@var{n} +The value of the circular trace buffer flag. @code{1} means that the +trace buffer is circular and old trace frames will be discarded if +necessary to make room, @code{0} means that the trace buffer is linear +and may fill up. + +@item disconn:@var{n} +The value of the disconnected tracing flag. @code{1} means that +tracing will continue after @value{GDBN} disconnects, @code{0} means +that the trace run will stop. + +@end table + +@item qTV:@var{var} +@cindex trace state variable value, remote request +@cindex @samp{qTV} packet +Ask the stub for the value of the trace state variable number @var{var}. + Replies: @table @samp -@item T0 -There is no trace experiment running. -@item T1 -There is a trace experiment running. +@item V@var{value} +The value of the variable is @var{value}. This will be the current +value of the variable if the user is examining a running target, or a +saved value if the variable was collected in the trace frame that the +user is looking at. Note that multiple requests may result in +different reply values, such as when requesting values while the +program is running. + +@item U +The value of the variable is unknown. This would occur, for example, +if the user is examining a trace frame in which the requested variable +was not collected. +@end table + +@item qTfP +@itemx qTsP +These packets request data about tracepoints that are being used by +the target. @value{GDBN} sends @code{qTfP} to get the first piece +of data, and multiple @code{qTsP} to get additional pieces. Replies +to these packets generally take the form of the @code{QTDP} packets +that define tracepoints. (FIXME add detailed syntax) + +@item qTfV +@itemx qTsV +These packets request data about trace state variables that are on the +target. @value{GDBN} sends @code{qTfV} to get the first vari of data, +and multiple @code{qTsV} to get additional variables. Replies to +these packets follow the syntax of the @code{QTDV} packets that define +trace state variables. + +@item qTfSTM +@itemx qTsSTM +These packets request data about static tracepoint markers that exist +in the target program. @value{GDBN} sends @code{qTfSTM} to get the +first piece of data, and multiple @code{qTsSTM} to get additional +pieces. Replies to these packets take the following form: + +Reply: +@table @samp +@item m @var{address}:@var{id}:@var{extra} +A single marker +@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{} +a comma-separated list of markers +@item l +(lower case letter @samp{L}) denotes end of list. +@item E @var{nn} +An error occurred. @var{nn} are hex digits. +@item +An empty reply indicates that the request is not supported by the +stub. @end table +@var{address} is encoded in hex. +@var{id} and @var{extra} are strings encoded in hex. + +In response to each query, the target will reply with a list of one or +more markers, separated by commas. @value{GDBN} will respond to each +reply with a request for more markers (using the @samp{qs} form of the +query), until the target responds with @samp{l} (lower-case ell, for +@dfn{last}). + +@item qTSTMat:@var{address} +This packets requests data about static tracepoint markers in the +target program at @var{address}. Replies to this packet follow the +syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static +tracepoint markers. + +@item QTSave:@var{filename} +This packet directs the target to save trace data to the file name +@var{filename} in the target's filesystem. @var{filename} is encoded +as a hex string; the interpretation of the file name (relative vs +absolute, wild cards, etc) is up to the target. + +@item qTBuffer:@var{offset},@var{len} +Return up to @var{len} bytes of the current contents of trace buffer, +starting at @var{offset}. The trace buffer is treated as if it were +a contiguous collection of traceframes, as per the trace file format. +The reply consists as many hex-encoded bytes as the target can deliver +in a packet; it is not an error to return fewer than were asked for. +A reply consisting of just @code{l} indicates that no bytes are +available. + +@item QTBuffer:circular:@var{value} +This packet directs the target to use a circular trace buffer if +@var{value} is 1, or a linear buffer if the value is 0. + +@end table + +@subsection Relocate instruction reply packet +When installing fast tracepoints in memory, the target may need to +relocate the instruction currently at the tracepoint address to a +different address in memory. For most instructions, a simple copy is +enough, but, for example, call instructions that implicitly push the +return address on the stack, and relative branches or other +PC-relative instructions require offset adjustment, so that the effect +of executing the instruction at a different address is the same as if +it had executed in the original location. + +In response to several of the tracepoint packets, the target may also +respond with a number of intermediate @samp{qRelocInsn} request +packets before the final result packet, to have @value{GDBN} handle +this relocation operation. If a packet supports this mechanism, its +documentation will explicitly say so. See for example the above +descriptions for the @samp{QTStart} and @samp{QTDP} packets. The +format of the request is: + +@table @samp +@item qRelocInsn:@var{from};@var{to} + +This requests @value{GDBN} to copy instruction at address @var{from} +to address @var{to}, possibly adjusted so that executing the +instruction at @var{to} has the same effect as executing it at +@var{from}. @value{GDBN} writes the adjusted instruction to target +memory starting at @var{to}. @end table +Replies: +@table @samp +@item qRelocInsn:@var{adjusted_size} +Informs the stub the relocation is complete. @var{adjusted_size} is +the length in bytes of resulting relocated instruction sequence. +@item E @var{NN} +A badly formed request was detected, or an error was encountered while +relocating the instruction. +@end table @node Host I/O Packets @section Host I/O Packets @@ -29782,9 +33269,9 @@ or -1 if an error occurs. @var{pathname} is a string. @cindex interrupts (remote protocol) When a program on the remote target is running, @value{GDBN} may -attempt to interrupt it by sending a @samp{Ctrl-C} or a @code{BREAK}, -control of which is specified via @value{GDBN}'s @samp{remotebreak} -setting (@pxref{set remotebreak}). +attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or +a @code{BREAK} followed by @code{g}, +control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}. The precise meaning of @code{BREAK} is defined by the transport mechanism and may, in fact, be undefined. @value{GDBN} does not @@ -29801,6 +33288,10 @@ and does @emph{not} represent an interrupt. E.g., an @samp{X} packet (@pxref{X packet}), used for binary downloads, may include an unescaped @code{0x03} as part of its packet. +@code{BREAK} followed by @code{g} is also known as Magic SysRq g. +When Linux kernel receives this sequence from serial port, +it stops execution and connects to gdb. + Stubs are not required to recognize these interrupt mechanisms and the precise meaning associated with receipt of the interrupt is implementation defined. If the target supports debugging of multiple @@ -31338,8 +34829,85 @@ The formal DTD for memory map format is given below: @end smallexample +@node Thread List Format +@section Thread List Format +@cindex thread list format + +To efficiently update the list of threads and their attributes, +@value{GDBN} issues the @samp{qXfer:threads:read} packet +(@pxref{qXfer threads read}) and obtains the XML document with +the following structure: + +@smallexample + + + + ... description ... + + +@end smallexample + +Each @samp{thread} element must have the @samp{id} attribute that +identifies the thread (@pxref{thread-id syntax}). The +@samp{core} attribute, if present, specifies which processor core +the thread was last executing on. The content of the of @samp{thread} +element is interpreted as human-readable auxilliary information. + @include agentexpr.texi +@node Trace File Format +@appendix Trace File Format +@cindex trace file format + +The trace file comes in three parts: a header, a textual description +section, and a trace frame section with binary data. + +The header has the form @code{\x7fTRACE0\n}. The first byte is +@code{0x7f} so as to indicate that the file contains binary data, +while the @code{0} is a version number that may have different values +in the future. + +The description section consists of multiple lines of @sc{ascii} text +separated by newline characters (@code{0xa}). The lines may include a +variety of optional descriptive or context-setting information, such +as tracepoint definitions or register set size. @value{GDBN} will +ignore any line that it does not recognize. An empty line marks the end +of this section. + +@c FIXME add some specific types of data + +The trace frame section consists of a number of consecutive frames. +Each frame begins with a two-byte tracepoint number, followed by a +four-byte size giving the amount of data in the frame. The data in +the frame consists of a number of blocks, each introduced by a +character indicating its type (at least register, memory, and trace +state variable). The data in this section is raw binary, not a +hexadecimal or other encoding; its endianness matches the target's +endianness. + +@c FIXME bi-arch may require endianness/arch info in description section + +@table @code +@item R @var{bytes} +Register block. The number and ordering of bytes matches that of a +@code{g} packet in the remote protocol. Note that these are the +actual bytes, in target order and @value{GDBN} register order, not a +hexadecimal encoding. + +@item M @var{address} @var{length} @var{bytes}... +Memory block. This is a contiguous block of memory, at the 8-byte +address @var{address}, with a 2-byte length @var{length}, followed by +@var{length} bytes. + +@item V @var{number} @var{value} +Trace state variable block. This records the 8-byte signed value +@var{value} of trace state variable numbered @var{number}. + +@end table + +Future enhancements of the trace file format may include additional types +of blocks. + @node Target Descriptions @appendix Target Descriptions @cindex target descriptions @@ -31613,6 +35181,47 @@ each of which has a @var{name} and a @var{type}: @end smallexample +@cindex +If a register's value is composed from several separate values, define +it with a structure type. There are two forms of the @samp{} +element; a @samp{} element must either contain only bitfields +or contain no bitfields. If the structure contains only bitfields, +its total size in bytes must be specified, each bitfield must have an +explicit start and end, and bitfields are automatically assigned an +integer type. The field's @var{start} should be less than or +equal to its @var{end}, and zero represents the least significant bit. + +@smallexample + + + @dots{} + +@end smallexample + +If the structure contains no bitfields, then each field has an +explicit type, and no implicit padding is added. + +@smallexample + + + @dots{} + +@end smallexample + +@cindex +If a register's value is a series of single-bit flags, define it with +a flags type. The @samp{} element has an explicit @var{size} +and contains one or more @samp{} elements. Each field has a +@var{name}, a @var{start}, and an @var{end}. Only single-bit flags +are supported. + +@smallexample + + + @dots{} + +@end smallexample + @subsection Registers @cindex @@ -31712,6 +35321,15 @@ Double precision IEEE floating point. @item arm_fpa_ext The 12-byte extended precision format used by ARM FPA registers. +@item i387_ext +The 10-byte extended precision format used by x87 registers. + +@item i386_eflags +32bit @sc{eflags} register used by x86. + +@item i386_mxcsr +32bit @sc{mxcsr} register used by x86. + @end table @node Standard Target Features @@ -31750,6 +35368,7 @@ registers using the capitalization used in the description. @menu * ARM Features:: +* i386 Features:: * MIPS Features:: * M68K Features:: * PowerPC Features:: @@ -31785,6 +35404,57 @@ quad-precision registers from pairs of double-precision registers. If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also be present and include 32 double-precision registers. +@node i386 Features +@subsection i386 Features +@cindex target descriptions, i386 features + +The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64 +targets. It should describe the following registers: + +@itemize @minus +@item +@samp{eax} through @samp{edi} plus @samp{eip} for i386 +@item +@samp{rax} through @samp{r15} plus @samp{rip} for amd64 +@item +@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es}, +@samp{fs}, @samp{gs} +@item +@samp{st0} through @samp{st7} +@item +@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff}, +@samp{foseg}, @samp{fooff} and @samp{fop} +@end itemize + +The register sets may be different, depending on the target. + +The @samp{org.gnu.gdb.i386.sse} feature is optional. It should +describe registers: + +@itemize @minus +@item +@samp{xmm0} through @samp{xmm7} for i386 +@item +@samp{xmm0} through @samp{xmm15} for amd64 +@item +@samp{mxcsr} +@end itemize + +The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the +@samp{org.gnu.gdb.i386.sse} feature. It should +describe the upper 128 bits of @sc{ymm} registers: + +@itemize @minus +@item +@samp{ymm0h} through @samp{ymm7h} for i386 +@item +@samp{ymm0h} through @samp{ymm15h} for amd64 +@item +@end itemize + +The @samp{org.gnu.gdb.i386.linux} feature is optional. It should +describe a single register, @samp{orig_eax}. + @node MIPS Features @subsection MIPS Features @cindex target descriptions, MIPS features @@ -31897,6 +35567,7 @@ An example document is: 1 root /sbin/init + 1,2,3 @end smallexample @@ -31904,14 +35575,16 @@ An example document is: Each item should include a column whose name is @samp{pid}. The value of that column should identify the process on the target. The @samp{user} and @samp{command} columns are optional, and will be -displayed by @value{GDBN}. Target may provide additional columns, +displayed by @value{GDBN}. The @samp{cores} column, if present, +should contain a comma-separated list of cores that this process +is running on. Target may provide additional columns, which @value{GDBN} currently ignores. @include gpl.texi -@raisesections +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi -@lowersections @node Index @unnumbered Index diff --git a/contrib/gdb-7/gdb/doc/gdbint.texinfo b/contrib/gdb-7/gdb/doc/gdbint.texinfo index c2be3f7bf5..54187dd54d 100644 --- a/contrib/gdb-7/gdb/doc/gdbint.texinfo +++ b/contrib/gdb-7/gdb/doc/gdbint.texinfo @@ -1,6 +1,8 @@ \input texinfo @c -*- texinfo -*- @setfilename gdbint.info @include gdb-cfg.texi +@settitle @value{GDBN} Internals +@setchapternewpage off @dircategory Software development @direntry * Gdb-Internals: (gdbint). The GNU debugger's internals. @@ -8,13 +10,13 @@ @copying Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1996, 1998, 1999, -2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 +2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions. Written by John Gilmore. Second Edition by Stan Shebs. Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or +under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU @@ -27,8 +29,6 @@ This file documents the internals of the GNU debugger @value{GDBN}. @insertcopying @end ifnottex -@setchapternewpage off -@settitle @value{GDBN} Internals @syncodeindex fn cp @syncodeindex vr cp @@ -781,11 +781,6 @@ inferior after a watchpoint has been hit. This is usually set when watchpoints trigger at the instruction following an interesting read or write. -@findex CANNOT_STEP_HW_WATCHPOINTS -@item CANNOT_STEP_HW_WATCHPOINTS -If this is defined to a non-zero value, @value{GDBN} will remove all -watchpoints before stepping the inferior. - @findex STOPPED_BY_WATCHPOINT @item STOPPED_BY_WATCHPOINT (@var{wait_status}) Return non-zero if stopped by a watchpoint. @var{wait_status} is of @@ -986,13 +981,6 @@ the debug registers to watch instruction execution, and each hardware-assisted breakpoint always requires exactly one debug register. -@findex i386_stopped_by_hwbp -@item i386_stopped_by_hwbp (void) -This function returns non-zero if the inferior has some watchpoint or -hardware breakpoint that triggered. It works like -@code{i386_stopped_data_address}, except that it doesn't record the -address whose watchpoint triggered. - @findex i386_cleanup_dregs @item i386_cleanup_dregs (void) This function clears all the reference counts, addresses, and control @@ -2301,6 +2289,12 @@ and all the psymbols themselves are allocated in a pair of large arrays on an obstack, so there is little to be gained by trying to free them unless you want to do a lot more work. +Whether or not psymtabs are created depends on the objfile's symbol +reader. The core of @value{GDBN} hides the details of partial symbols +and partial symbol tables behind a set of function pointers known as +the @dfn{quick symbol functions}. These are documented in +@file{symfile.h}. + @section Types @unnumberedsubsec Fundamental Types (e.g., @code{FT_VOID}, @code{FT_BOOLEAN}). @@ -2790,19 +2784,6 @@ Define this if @code{lseek (n)} does not necessarily move to byte number @code{n} in the file. This is only used when reading source files. It is normally faster to define @code{CRLF_SOURCE_FILES} when possible. -@item NORETURN -If defined, this should be one or more tokens, such as @code{volatile}, -that can be used in both the declaration and definition of functions to -indicate that they never return. The default is already set correctly -if compiling with GCC. This will almost never need to be defined. - -@item ATTR_NORETURN -If defined, this should be one or more tokens, such as -@code{__attribute__ ((noreturn))}, that can be used in the declarations -of functions to indicate that they never return. The default is already -set correctly if compiling with GCC. This will almost never need to be -defined. - @item lint Define this to help placate @code{lint} in some situations. @@ -6264,6 +6245,10 @@ the code detected a user error, recovered from it and issued a @code{warning} or the code failed to correctly recover from the user error and issued an @code{internal_error}.} +@subsection Command Names + +GDB U/I commands are written @samp{foo-bar}, not @samp{foo_bar}. + @subsection File Names Any file used when building the core of @value{GDBN} must be in lower @@ -6759,15 +6744,44 @@ Update the copyright year in the startup message Update the copyright year in: @itemize @bullet -@item file @file{top.c}, function @code{print_gdb_version} -@item file @file{gdbserver/server.c}, function @code{gdbserver_version} -@item file @file{gdbserver/gdbreplay.c}, function @code{gdbreplay_version} + @item + file @file{top.c}, function @code{print_gdb_version} + @item + file @file{gdbserver/server.c}, function @code{gdbserver_version} + @item + file @file{gdbserver/gdbreplay.c}, function @code{gdbreplay_version} @end itemize @item -Add the new year in the copyright notices of all source and documentation -files. This can be done semi-automatically by running the @code{copyright.sh} -script. This script requires Emacs 22 or later to be installed. +Run the @file{copyright.sh} script to add the new year in the copyright +notices of most source files. This script requires Emacs 22 or later to +be installed. + +@item +The new year also needs to be added manually in all other files that +are not already taken care of by the @file{copyright.sh} script: +@itemize @bullet + @item + @file{*.s} + @item + @file{*.f} + @item + @file{*.f90} + @item + @file{*.igen} + @item + @file{*.ac} + @item + @file{*.texi} + @item + @file{*.texinfo} + @item + @file{*.tex} + @item + @file{*.defs} + @item + @file{*.1} +@end itemize @end itemize @@ -7577,6 +7591,14 @@ will give a result of ``UNRESOLVED'', like this: UNRESOLVED: gdb.base/example.exp: This test script does not work on a remote host. @end smallexample +@section Testsuite Parameters + +Several variables exist to modify the behavior of the testsuite. + +@itemize @bullet + +@item @code{TRANSCRIPT} + Sometimes it is convenient to get a transcript of the commands which the testsuite sends to @value{GDBN}. For example, if @value{GDBN} crashes during testing, a transcript can be used to more easily @@ -7598,6 +7620,103 @@ make check RUNTESTFLAGS=TRANSCRIPT=y Note that the transcript is not always complete. In particular, tests of completion can yield partial command lines. +@item @code{GDB} + +Sometimes one wishes to test a different @value{GDBN} than the one in the build +directory. For example, one may wish to run the testsuite on +@file{/usr/bin/gdb}. + +@smallexample +make check RUNTESTFLAGS=GDB=/usr/bin/gdb +@end smallexample + +@item @code{GDBSERVER} + +When testing a different @value{GDBN}, it is often useful to also test a +different gdbserver. + +@smallexample +make check RUNTESTFLAGS="GDB=/usr/bin/gdb GDBSERVER=/usr/bin/gdbserver" +@end smallexample + +@item @code{INTERNAL_GDBFLAGS} + +When running the testsuite normally one doesn't want whatever is in +@file{~/.gdbinit} to interfere with the tests, therefore the test harness +passes @option{-nx} to @value{GDBN}. One also doesn't want any windowed +version of @value{GDBN}, e.g., @command{gdbtui}, to run. +This is achieved via @code{INTERNAL_GDBFLAGS}. + +@smallexample +set INTERNAL_GDBFLAGS "-nw -nx" +@end smallexample + +This is all well and good, except when testing an installed @value{GDBN} +that has been configured with @option{--with-system-gdbinit}. Here one +does not want @file{~/.gdbinit} loaded but one may want the system +@file{.gdbinit} file loaded. This can be achieved by pointing @code{$HOME} +at a directory without a @file{.gdbinit} and by overriding +@code{INTERNAL_GDBFLAGS} and removing @option{-nx}. + +@smallexample +cd testsuite +HOME=`pwd` runtest \ + GDB=/usr/bin/gdb \ + GDBSERVER=/usr/bin/gdbserver \ + INTERNAL_GDBFLAGS=-nw +@end smallexample + +@end itemize + +There are two ways to run the testsuite and pass additional parameters +to DejaGnu. The first is with @kbd{make check} and specifying the +makefile variable @samp{RUNTESTFLAGS}. + +@smallexample +make check RUNTESTFLAGS=TRANSCRIPT=y +@end smallexample + +The second is to cd to the @file{testsuite} directory and invoke the DejaGnu +@command{runtest} command directly. + +@smallexample +cd testsuite +make site.exp +runtest TRANSCRIPT=y +@end smallexample + +@section Testsuite Configuration +@cindex Testsuite Configuration + +It is possible to adjust the behavior of the testsuite by defining +the global variables listed below, either in a @file{site.exp} file, +or in a board file. + +@itemize @bullet + +@item @code{gdb_test_timeout} + +Defining this variable changes the default timeout duration used during +communication with @value{GDBN}. More specifically, the global variable +used during testing is @code{timeout}, but this variable gets reset to +@code{gdb_test_timeout} at the beginning of each testcase, making sure +that any local change to @code{timeout} in a testcase does not affect +subsequent testcases. + +This global variable comes in handy when the debugger is slower than +normal due to the testing environment, triggering unexpected @code{TIMEOUT} +test failures. Examples include when testing on a remote machine, or +against a system where communications are slow. + +If not specifically defined, this variable gets automatically defined +to the same value as @code{timeout} during the testsuite initialization. +The default value of the timeout is defined in the file +@file{gdb/testsuite/config/unix.exp} that is part of the @value{GDBN} +test suite@footnote{If you are using a board file, it could override +the test-suite default; search the board file for "timeout".}. + +@end itemize + @section Testsuite Organization @cindex test suite organization @@ -7693,7 +7812,7 @@ appear anywhere else in the directory. * Debugging GDB:: Debugging @value{GDBN} with itself @end menu -@node Getting Started,,, Hints +@node Getting Started @section Getting Started @@ -7776,7 +7895,7 @@ wondering if anyone could give me some tips about understanding @value{GDBN}''---if we had some magic secret we would put it in this manual. Suggestions for improving the manual are always welcome, of course. -@node Debugging GDB,,,Hints +@node Debugging GDB @section Debugging @value{GDBN} with itself @cindex debugging @value{GDBN} @@ -7884,9 +8003,10 @@ information about the architecture. The test results are stored in log files in the directory the script was called from. @include observer.texi -@raisesections + +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi -@lowersections @node Index @unnumbered Index diff --git a/contrib/gdb-7/gdb/doc/gpl.texi b/contrib/gdb-7/gdb/doc/gpl.texi index c4fa81d72d..ca6d72d99c 100644 --- a/contrib/gdb-7/gdb/doc/gpl.texi +++ b/contrib/gdb-7/gdb/doc/gpl.texi @@ -6,404 +6,730 @@ gfdl(7), fsf-funding(7). @c man end @c man begin COPYRIGHT -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. @c man end @end ignore @node Copying @c man begin DESCRIPTION @appendix GNU GENERAL PUBLIC LICENSE -@center Version 2, June 1991 +@c The GNU General Public License. +@center Version 3, 29 June 2007 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. @display -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. @end display -@unnumberedsec Preamble +@heading Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom +to share and change all versions of a program---to make sure it remains +free software for all its users. We, the Free Software Foundation, +use the GNU General Public License for most of our software; it +applies also to any other work released this way by its authors. You +can apply it to your programs, too. - When we speak of free software, we are referring to freedom, not +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you +have certain responsibilities if you distribute copies of the +software, or if you modify it: responsibilities to respect the freedom +of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, +receive or can get the source code. And you must show them these +terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the +manufacturer can do so. This is fundamentally incompatible with the +aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for +individuals to use, which is precisely where it is most unacceptable. +Therefore, we have designed this version of the GPL to prohibit the +practice for those products. If such problems arise substantially in +other domains, we stand ready to extend this provision to those +domains in future versions of the GPL, as needed to protect the +freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish +to avoid the special danger that patents applied to a free program +could make it effectively proprietary. To prevent this, the GPL +assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. -@iftex -@unnumberedsec TERMS AND CONDITIONS FOR COPYING,@*DISTRIBUTION AND MODIFICATION -@end iftex -@ifnottex -@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifnottex +@heading TERMS AND CONDITIONS @enumerate 0 +@item Definitions. + +``This License'' refers to version 3 of the GNU General Public License. + +``Copyright'' also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +``The Program'' refers to any copyrightable work licensed under this +License. Each licensee is addressed as ``you''. ``Licensees'' and +``recipients'' may be individuals or organizations. + +To ``modify'' a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a ``modified version'' of +the earlier work or a work ``based on'' the earlier work. + +A ``covered work'' means either the unmodified Program or a work based +on the Program. + +To ``propagate'' a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To ``convey'' a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays ``Appropriate Legal Notices'' to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +@item Source Code. + +The ``source code'' for a work means the preferred form of the work for +making modifications to it. ``Object code'' means any non-source form +of a work. + +A ``Standard Interface'' means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The ``System Libraries'' of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +``Major Component'', in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The ``Corresponding Source'' for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +@item Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +@item Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +@item Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +@item Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +@enumerate a @item -This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The ``Program'', below, -refers to any such program or work, and a ``work based on the Program'' -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term ``modification''.) Each licensee is addressed as ``you''. - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. +The work must carry prominent notices stating that you modified it, +and giving a relevant date. @item -You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. +The work must carry prominent notices stating that it is released +under this License and any conditions added under section 7. This +requirement modifies the requirement in section 4 to ``keep intact all +notices''. -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. +@item +You must license the entire work, as a whole, under this License to +anyone who comes into possession of a copy. This License will +therefore apply, along with any applicable section 7 additional terms, +to the whole of the work, and all its parts, regardless of how they +are packaged. This License gives no permission to license the work in +any other way, but it does not invalidate such permission if you have +separately received it. @item -You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: +If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your work +need not make them do so. +@end enumerate + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +``aggregate'' if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +@item Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: @enumerate a @item -You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. +Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium customarily +used for software interchange. @item -You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. +Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a written +offer, valid for at least three years and valid for as long as you +offer spare parts or customer support for that product model, to give +anyone who possesses the object code either (1) a copy of the +Corresponding Source for all the software in the product that is +covered by this License, on a durable physical medium customarily used +for software interchange, for a price no more than your reasonable +cost of physically performing this conveying of source, or (2) access +to copy the Corresponding Source from a network server at no charge. @item -If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) -@end enumerate +Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is +allowed only occasionally and noncommercially, and only if you +received the object code with such an offer, in accord with subsection +6b. -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. +@item +Convey the object code by offering access from a designated place +(gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to copy +the object code is a network server, the Corresponding Source may be +on a different server (operated by you or a third party) that supports +equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. +Regardless of what server hosts the Corresponding Source, you remain +obligated to ensure that it is available for as long as needed to +satisfy these requirements. @item -You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: +Convey the object code using peer-to-peer transmission, provided you +inform other peers where the object code and Corresponding Source of +the work are being offered to the general public at no charge under +subsection 6d. + +@end enumerate + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A ``User Product'' is either (1) a ``consumer product'', which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +``normally used'' refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +``Installation Information'' for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +@item Additional Terms. + +``Additional permissions'' are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: @enumerate a @item -Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, +Disclaiming warranty or limiting liability differently from the terms +of sections 15 and 16 of this License; or @item -Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, +Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices +displayed by works containing it; or @item -Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) -@end enumerate - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. +Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or @item -You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. +Limiting the use for publicity purposes of names of licensors or +authors of the material; or @item -You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. +Declining to grant rights under trademark law for use of some trade +names, trademarks, or service marks; or @item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to +Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with +contractual assumptions of liability to the recipient, for any +liability that these contractual assumptions directly impose on those +licensors and authors. +@end enumerate + +All other non-permissive additional terms are considered ``further +restrictions'' within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +@item Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +@item Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +@item Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An ``entity transaction'' is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +@item Patents. + +A ``contributor'' is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's ``contributor version''. + +A contributor's ``essential patent claims'' are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, ``control'' includes the right to grant +patent sublicenses in a manner consistent with the requirements of this License. -@item -If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a ``patent license'' is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To ``grant'' such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. ``Knowingly relying'' means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is ``discriminatory'' if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +@item No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. +excuse you from the conditions of this License. If you cannot convey +a covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree +to terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +@item Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +@item Revised Versions of this License. -@item -If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -@item The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. +of the GNU General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifnottex -@center NO WARRANTY -@end ifnottex - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. +specifies that a certain numbered version of the GNU General Public +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that numbered version or +of any later version published by the Free Software Foundation. If +the Program does not specify a version number of the GNU General +Public License, you may choose any version ever published by the Free +Software Foundation. + +If the Program specifies that a proxy can decide which future versions +of the GNU General Public License can be used, that proxy's public +statement of acceptance of a version permanently authorizes you to +choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +@item Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +@item Limitation of Liability. -@item IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +@item Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + @end enumerate -@iftex @heading END OF TERMS AND CONDITIONS -@end iftex -@ifnottex -@center END OF TERMS AND CONDITIONS -@end ifnottex -@page -@unnumberedsec How to Apply These Terms to Your New Programs +@heading How to Apply These Terms to Your New Programs - If you develop a new program, and you want it to be of the greatest +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. +free software which everyone can redistribute and change under these +terms. - To do so, attach the following notices to the program. It is safest +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least +state the exclusion of warranty; and each file should have at least the ``copyright'' line and a pointer to where the full notice is found. @smallexample @var{one line to give the program's name and a brief idea of what it does.} -Copyright (C) @var{year} @var{name of author} +Copyright (C) @var{year} @var{name of author} -This program is free software; you can redistribute it and/or modify +This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. +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. +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, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. +along with this program. If not, see @url{http://www.gnu.org/licenses/}. @end smallexample Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: +If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: @smallexample -Gnomovision version 69, Copyright (C) @var{year} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. +@var{program} Copyright (C) @var{year} @var{name of author} +This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}. This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. +under certain conditions; type @samp{show c} for details. @end smallexample The hypothetical commands @samp{show w} and @samp{show c} should show -the appropriate parts of the General Public License. Of course, the -commands you use may be called something other than @samp{show w} and -@samp{show c}; they could even be mouse-clicks or menu items---whatever -suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here is a sample; alter the names: - -@smallexample -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end smallexample - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. +the appropriate parts of the General Public License. Of course, your +program's commands might be different; for a GUI interface, you would +use an ``about box''. + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a ``copyright disclaimer'' for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +@url{http://www.gnu.org/licenses/}. + +The GNU General Public License does not permit incorporating your +program into proprietary programs. If your program is a subroutine +library, you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use +the GNU Lesser General Public License instead of this License. But +first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. @c man end diff --git a/contrib/gdb-7/gdb/doc/observer.texi b/contrib/gdb-7/gdb/doc/observer.texi index 4984f31813..e19b8ed2a9 100644 --- a/contrib/gdb-7/gdb/doc/observer.texi +++ b/contrib/gdb-7/gdb/doc/observer.texi @@ -2,7 +2,7 @@ @c This file is part of the GDB manual. @c -@c Copyright (C) 2003, 2004, 2005, 2006, 2008 +@c Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010 @c Free Software Foundation, Inc. @c @c See the file gdbint.texinfo for copying conditions. @@ -11,7 +11,7 @@ @c header file during the GDB build process. Permission is granted @c to redistribute and/or modify those lines under the terms of the @c GNU General Public License as published by the Free Software -@c Foundation; either version 2 of the License, or (at your option) +@c Foundation; either version 3 of the License, or (at your option) @c any later version. @node GDB Observers @@ -122,6 +122,8 @@ haven't been loaded yet. @deftypefun void solib_unloaded (struct so_list *@var{solib}) The shared library specified by @var{solib} has been unloaded. +Note that when @value{GDBN} calls this observer, the library's +symbols have not been unloaded yet, and thus are still available. @end deftypefun @deftypefun void new_objfile (struct objfile *@var{objfile}) @@ -197,17 +199,32 @@ The thread's ptid has changed. The @var{old_ptid} parameter specifies the old value, and @var{new_ptid} specifies the new value. @end deftypefun -@deftypefun void new_inferior (int @var{pid}) -@value{GDBN} has attached to a new inferior identified by @var{pid}. +@deftypefun void inferior_added (struct inferior *@var{inf}) +The inferior @var{inf} has been added to the list of inferiors. At +this point, it might not be associated with any process. @end deftypefun -@deftypefun void inferior_exit (int @var{pid}) -Either @value{GDBN} detached from the inferior, or the inferior -exited. The argument @var{pid} identifies the inferior. +@deftypefun void inferior_appeared (struct inferior *@var{inf}) +The inferior identified by @var{inf} has been attached to a process. @end deftypefun - @deftypefun void test_notification (int @var{somearg}) +@deftypefun void inferior_exit (struct inferior *@var{inf}) +Either the inferior associated with @var{inf} has been detached from the +process, or the process has exited. +@end deftypefun + +@deftypefun void inferior_removed (struct inferior *@var{inf}) +The inferior @var{inf} has been removed from the list of inferiors. +This method is called immediately before freeing @var{inf}. +@end deftypefun + +@deftypefun void memory_changed (CORE_ADDR @var{addr}, int @var{len}, const bfd_byte *@var{data}) +Bytes from @var{data} to @var{data} + @var{len} have been written +to the current inferior at @var{addr}. +@end deftypefun + +@deftypefun void test_notification (int @var{somearg}) This observer is used for internal testing. Do not use. See testsuite/gdb.gdb/observer.exp. - @end deftypefun +@end deftypefun diff --git a/contrib/gdb-7/gdb/doc/stabs.texinfo b/contrib/gdb-7/gdb/doc/stabs.texinfo index d28c93d749..eea20bad14 100644 --- a/contrib/gdb-7/gdb/doc/stabs.texinfo +++ b/contrib/gdb-7/gdb/doc/stabs.texinfo @@ -1,5 +1,7 @@ \input texinfo @setfilename stabs.info +@setchapternewpage odd +@settitle STABS @c @finalout @@ -12,12 +14,13 @@ @copying Copyright @copyright{} 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. +2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 +Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon, and David MacKenzie. Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or +under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU @@ -30,8 +33,6 @@ This document describes the stabs debugging symbol tables. @insertcopying @end ifnottex -@setchapternewpage odd -@settitle STABS @titlepage @title The ``stabs'' debug format @author Julia Menapace, Jim Kingdon, David MacKenzie @@ -4114,9 +4115,9 @@ is no more work than having the linker relocate ELF symbols, and it solves the problem of having to associate the ELF and stab symbols. However, no one has yet designed or implemented such a scheme. -@raisesections +@node GNU Free Documentation License +@appendix GNU Free Documentation License @include fdl.texi -@lowersections @node Symbol Types Index @unnumbered Symbol Types Index diff --git a/contrib/gdb-7/gdb/doublest.c b/contrib/gdb-7/gdb/doublest.c index 2e0bdda884..7e8b34345f 100644 --- a/contrib/gdb-7/gdb/doublest.c +++ b/contrib/gdb-7/gdb/doublest.c @@ -1,7 +1,7 @@ /* Floating point routines for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009 + 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -66,6 +66,7 @@ get_field (const bfd_byte *data, enum floatformat_byteorders order, represents the number of bits from the end of our starting byte needed to get to bit 0. */ int excess = FLOATFORMAT_CHAR_BIT - (total_len % FLOATFORMAT_CHAR_BIT); + cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - ((start + len + excess) / FLOATFORMAT_CHAR_BIT); cur_bitshift = ((start + len + excess) % FLOATFORMAT_CHAR_BIT) @@ -190,6 +191,7 @@ convert_floatformat_to_doublest (const struct floatformat *fmt, if (kind == float_infinite || kind == float_nan) { double dto; + floatformat_to_double (fmt, from, &dto); *to = (DOUBLEST) dto; return; @@ -203,6 +205,7 @@ convert_floatformat_to_doublest (const struct floatformat *fmt, if (fmt->split_half) { DOUBLEST dtop, dbot; + floatformat_to_doublest (fmt->split_half, ufrom, &dtop); /* Preserve the sign of 0, which is the sign of the top half. */ @@ -292,6 +295,7 @@ put_field (unsigned char *data, enum floatformat_byteorders order, if (order == floatformat_little) { int excess = FLOATFORMAT_CHAR_BIT - (total_len % FLOATFORMAT_CHAR_BIT); + cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - ((start + len + excess) / FLOATFORMAT_CHAR_BIT); cur_bitshift = ((start + len + excess) % FLOATFORMAT_CHAR_BIT) @@ -418,6 +422,7 @@ convert_doublest_to_floatformat (CONST struct floatformat *fmt, the result of converting to double. */ static volatile double dtop, dbot; DOUBLEST dtopnv, dbotnv; + dtop = (double) dfrom; /* If the rounded top half is Inf, the bottom must be 0 not NaN or Inf. */ @@ -479,6 +484,7 @@ convert_doublest_to_floatformat (CONST struct floatformat *fmt, while (mant_bits_left > 0) { unsigned long mant_long; + mant_bits = mant_bits_left < 32 ? mant_bits_left : 32; mant *= 4294967296.0; @@ -703,18 +709,21 @@ floatformat_to_doublest (const struct floatformat *fmt, if (fmt == host_float_format) { float val; + memcpy (&val, in, sizeof (val)); *out = val; } else if (fmt == host_double_format) { double val; + memcpy (&val, in, sizeof (val)); *out = val; } else if (fmt == host_long_double_format) { long double val; + memcpy (&val, in, sizeof (val)); *out = val; } @@ -730,16 +739,19 @@ floatformat_from_doublest (const struct floatformat *fmt, if (fmt == host_float_format) { float val = *in; + memcpy (out, &val, sizeof (val)); } else if (fmt == host_double_format) { double val = *in; + memcpy (out, &val, sizeof (val)); } else if (fmt == host_long_double_format) { long double val = *in; + memcpy (out, &val, sizeof (val)); } else @@ -764,7 +776,11 @@ static const struct floatformat * floatformat_from_length (struct gdbarch *gdbarch, int len) { const struct floatformat *format; - if (len * TARGET_CHAR_BIT == gdbarch_float_bit (gdbarch)) + + if (len * TARGET_CHAR_BIT == gdbarch_half_bit (gdbarch)) + format = gdbarch_half_format (gdbarch) + [gdbarch_byte_order (gdbarch)]; + else if (len * TARGET_CHAR_BIT == gdbarch_float_bit (gdbarch)) format = gdbarch_float_format (gdbarch) [gdbarch_byte_order (gdbarch)]; else if (len * TARGET_CHAR_BIT == gdbarch_double_bit (gdbarch)) @@ -778,8 +794,8 @@ floatformat_from_length (struct gdbarch *gdbarch, int len) both in processor and in memory. The code below accepts the real bit size. */ else if ((gdbarch_long_double_format (gdbarch) != NULL) - && (len * TARGET_CHAR_BIT == - gdbarch_long_double_format (gdbarch)[0]->totalsize)) + && (len * TARGET_CHAR_BIT + == gdbarch_long_double_format (gdbarch)[0]->totalsize)) format = gdbarch_long_double_format (gdbarch) [gdbarch_byte_order (gdbarch)]; else @@ -794,6 +810,7 @@ const struct floatformat * floatformat_from_type (const struct type *type) { struct gdbarch *gdbarch = get_type_arch (type); + gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT); if (TYPE_FLOATFORMAT (type) != NULL) return TYPE_FLOATFORMAT (type)[gdbarch_byte_order (gdbarch)]; diff --git a/contrib/gdb-7/gdb/doublest.h b/contrib/gdb-7/gdb/doublest.h index 1fe15d43fd..0c17b5cb77 100644 --- a/contrib/gdb-7/gdb/doublest.h +++ b/contrib/gdb-7/gdb/doublest.h @@ -1,7 +1,7 @@ /* Floating point definitions for GDB. Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009 + 1997, 1998, 1999, 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/dummy-frame.c b/contrib/gdb-7/gdb/dummy-frame.c index 90eb43100a..d6a7241369 100644 --- a/contrib/gdb-7/gdb/dummy-frame.c +++ b/contrib/gdb-7/gdb/dummy-frame.c @@ -1,8 +1,8 @@ /* Code dealing with dummy stack frames, for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -69,6 +69,7 @@ int deprecated_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc) { struct dummy_frame *dummyframe; + for (dummyframe = dummy_frame_stack; dummyframe != NULL; dummyframe = dummyframe->next) @@ -217,6 +218,7 @@ dummy_frame_sniffer (const struct frame_unwind *self, if (frame_id_eq (dummyframe->id, this_id)) { struct dummy_frame_cache *cache; + cache = FRAME_OBSTACK_ZALLOC (struct dummy_frame_cache); cache->prev_regcache = get_inferior_thread_state_regcache (dummyframe->caller_state); cache->this_id = this_id; @@ -267,6 +269,7 @@ dummy_frame_this_id (struct frame_info *this_frame, { /* The dummy-frame sniffer always fills in the cache. */ struct dummy_frame_cache *cache = (*this_prologue_cache); + gdb_assert (cache != NULL); (*this_id) = cache->this_id; } @@ -288,6 +291,7 @@ static void fprint_dummy_frames (struct ui_file *file) { struct dummy_frame *s; + for (s = dummy_frame_stack; s != NULL; s = s->next) { gdb_print_host_address (s, file); @@ -307,6 +311,7 @@ maintenance_print_dummy_frames (char *args, int from_tty) { struct cleanup *cleanups; struct ui_file *file = gdb_fopen (args, "w"); + if (file == NULL) perror_with_name (_("maintenance print dummy-frames")); cleanups = make_cleanup_ui_file_delete (file); diff --git a/contrib/gdb-7/gdb/dummy-frame.h b/contrib/gdb-7/gdb/dummy-frame.h index 5262ddf9b0..80f36f8021 100644 --- a/contrib/gdb-7/gdb/dummy-frame.h +++ b/contrib/gdb-7/gdb/dummy-frame.h @@ -1,6 +1,7 @@ /* Code dealing with dummy stack frames, for GDB, the GNU debugger. - Copyright (C) 2002, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/dwarf2-frame.c b/contrib/gdb-7/gdb/dwarf2-frame.c index 668c4344bd..a027b0206c 100644 --- a/contrib/gdb-7/gdb/dwarf2-frame.c +++ b/contrib/gdb-7/gdb/dwarf2-frame.c @@ -1,6 +1,6 @@ /* Frame unwinder for frames with DWARF Call Frame Information. - Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Mark Kettenis. @@ -85,6 +85,9 @@ struct dwarf2_cie /* The version recorded in the CIE. */ unsigned char version; + + /* The segment size. */ + unsigned char segment_size; }; struct dwarf2_cie_table @@ -147,13 +150,14 @@ struct comp_unit bfd_vma tbase; }; -static struct dwarf2_fde *dwarf2_frame_find_fde (CORE_ADDR *pc); +static struct dwarf2_fde *dwarf2_frame_find_fde (CORE_ADDR *pc, + CORE_ADDR *out_offset); static int dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch, int regnum, int eh_frame_p); static CORE_ADDR read_encoded_value (struct comp_unit *unit, gdb_byte encoding, - int ptr_len, gdb_byte *buf, + int ptr_len, const gdb_byte *buf, unsigned int *bytes_read_ptr, CORE_ADDR func_base); @@ -176,7 +180,7 @@ struct dwarf2_frame_state CFA_REG_OFFSET, CFA_EXP } cfa_how; - gdb_byte *cfa_exp; + const gdb_byte *cfa_exp; /* Used to implement DW_CFA_remember_state. */ struct dwarf2_frame_state_reg_info *prev; @@ -303,7 +307,7 @@ read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len) } static void -no_get_frame_base (void *baton, gdb_byte **start, size_t *length) +no_get_frame_base (void *baton, const gdb_byte **start, size_t *length) { internal_error (__FILE__, __LINE__, _("Support for DW_OP_fbreg is unimplemented")); @@ -325,6 +329,15 @@ no_get_tls_address (void *baton, CORE_ADDR offset) _("Support for DW_OP_GNU_push_tls_address is unimplemented")); } +/* Helper function for execute_stack_op. */ + +static void +no_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset) +{ + internal_error (__FILE__, __LINE__, + _("Support for DW_OP_call* is invalid in CFI")); +} + /* Execute the required actions for both the DW_CFA_restore and DW_CFA_restore_extended instructions. */ static void @@ -356,9 +369,9 @@ register %s (#%d) at %s"), } static CORE_ADDR -execute_stack_op (gdb_byte *exp, ULONGEST len, int addr_size, - struct frame_info *this_frame, CORE_ADDR initial, - int initial_in_stack_memory) +execute_stack_op (const gdb_byte *exp, ULONGEST len, int addr_size, + CORE_ADDR offset, struct frame_info *this_frame, + CORE_ADDR initial, int initial_in_stack_memory) { struct dwarf_expr_context *ctx; CORE_ADDR result; @@ -369,20 +382,23 @@ execute_stack_op (gdb_byte *exp, ULONGEST len, int addr_size, ctx->gdbarch = get_frame_arch (this_frame); ctx->addr_size = addr_size; + ctx->offset = offset; ctx->baton = this_frame; ctx->read_reg = read_reg; ctx->read_mem = read_mem; ctx->get_frame_base = no_get_frame_base; ctx->get_frame_cfa = no_get_frame_cfa; ctx->get_tls_address = no_get_tls_address; + ctx->dwarf_call = no_dwarf_call; dwarf_expr_push (ctx, initial, initial_in_stack_memory); dwarf_expr_eval (ctx, exp, len); - result = dwarf_expr_fetch (ctx, 0); - if (ctx->location == DWARF_VALUE_REGISTER) - result = read_reg (this_frame, result); - else if (ctx->location != DWARF_VALUE_MEMORY) + if (ctx->location == DWARF_VALUE_MEMORY) + result = dwarf_expr_fetch_address (ctx, 0); + else if (ctx->location == DWARF_VALUE_REGISTER) + result = read_reg (this_frame, dwarf_expr_fetch (ctx, 0)); + else { /* This is actually invalid DWARF, but if we ever do run across it somehow, we might as well support it. So, instead, report @@ -397,8 +413,8 @@ execute_stack_op (gdb_byte *exp, ULONGEST len, int addr_size, static void -execute_cfa_program (struct dwarf2_fde *fde, gdb_byte *insn_ptr, - gdb_byte *insn_end, struct frame_info *this_frame, +execute_cfa_program (struct dwarf2_fde *fde, const gdb_byte *insn_ptr, + const gdb_byte *insn_end, struct frame_info *this_frame, struct dwarf2_frame_state *fs) { int eh_frame_p = fde->eh_frame_p; @@ -644,6 +660,7 @@ bad CFI data; mismatched DW_CFA_restore_state at %s"), unwinder. */ { int size = register_size (gdbarch, 0); + dwarf2_frame_state_alloc_regs (&fs->regs, 32); for (reg = 8; reg < 16; reg++) { @@ -839,43 +856,33 @@ static void dwarf2_frame_find_quirks (struct dwarf2_frame_state *fs, struct dwarf2_fde *fde) { - static const char *arm_idents[] = { - "ARM C Compiler, ADS", - "Thumb C Compiler, ADS", - "ARM C++ Compiler, ADS", - "Thumb C++ Compiler, ADS", - "ARM/Thumb C/C++ Compiler, RVCT" - }; - int i; - struct symtab *s; s = find_pc_symtab (fs->pc); - if (s == NULL || s->producer == NULL) + if (s == NULL) return; - for (i = 0; i < ARRAY_SIZE (arm_idents); i++) - if (strncmp (s->producer, arm_idents[i], strlen (arm_idents[i])) == 0) - { - if (fde->cie->version == 1) - fs->armcc_cfa_offsets_sf = 1; - - if (fde->cie->version == 1) - fs->armcc_cfa_offsets_reversed = 1; - - /* The reversed offset problem is present in some compilers - using DWARF3, but it was eventually fixed. Check the ARM - defined augmentations, which are in the format "armcc" followed - by a list of one-character options. The "+" option means - this problem is fixed (no quirk needed). If the armcc - augmentation is missing, the quirk is needed. */ - if (fde->cie->version == 3 - && (strncmp (fde->cie->augmentation, "armcc", 5) != 0 - || strchr (fde->cie->augmentation + 5, '+') == NULL)) - fs->armcc_cfa_offsets_reversed = 1; - - return; - } + if (producer_is_realview (s->producer)) + { + if (fde->cie->version == 1) + fs->armcc_cfa_offsets_sf = 1; + + if (fde->cie->version == 1) + fs->armcc_cfa_offsets_reversed = 1; + + /* The reversed offset problem is present in some compilers + using DWARF3, but it was eventually fixed. Check the ARM + defined augmentations, which are in the format "armcc" followed + by a list of one-character options. The "+" option means + this problem is fixed (no quirk needed). If the armcc + augmentation is missing, the quirk is needed. */ + if (fde->cie->version == 3 + && (strncmp (fde->cie->augmentation, "armcc", 5) != 0 + || strchr (fde->cie->augmentation + 5, '+') == NULL)) + fs->armcc_cfa_offsets_reversed = 1; + + return; + } } @@ -896,6 +903,9 @@ struct dwarf2_frame_cache /* Target address size in bytes. */ int addr_size; + + /* The .text offset. */ + CORE_ADDR text_offset; }; static struct dwarf2_frame_cache * @@ -939,7 +949,7 @@ dwarf2_frame_cache (struct frame_info *this_frame, void **this_cache) fs->pc = get_frame_address_in_block (this_frame); /* Find the correct FDE. */ - fde = dwarf2_frame_find_fde (&fs->pc); + fde = dwarf2_frame_find_fde (&fs->pc, &cache->text_offset); gdb_assert (fde != NULL); /* Extract any interesting information from the CIE. */ @@ -976,7 +986,8 @@ dwarf2_frame_cache (struct frame_info *this_frame, void **this_cache) case CFA_EXP: cache->cfa = execute_stack_op (fs->regs.cfa_exp, fs->regs.cfa_exp_len, - cache->addr_size, this_frame, 0, 0); + cache->addr_size, cache->text_offset, + this_frame, 0, 0); break; default: @@ -1132,7 +1143,8 @@ dwarf2_frame_prev_register (struct frame_info *this_frame, void **this_cache, case DWARF2_FRAME_REG_SAVED_EXP: addr = execute_stack_op (cache->reg[regnum].loc.exp, cache->reg[regnum].exp_len, - cache->addr_size, this_frame, cache->cfa, 1); + cache->addr_size, cache->text_offset, + this_frame, cache->cfa, 1); return frame_unwind_got_memory (this_frame, regnum, addr); case DWARF2_FRAME_REG_SAVED_VAL_OFFSET: @@ -1142,7 +1154,8 @@ dwarf2_frame_prev_register (struct frame_info *this_frame, void **this_cache, case DWARF2_FRAME_REG_SAVED_VAL_EXP: addr = execute_stack_op (cache->reg[regnum].loc.exp, cache->reg[regnum].exp_len, - cache->addr_size, this_frame, cache->cfa, 1); + cache->addr_size, cache->text_offset, + this_frame, cache->cfa, 1); return frame_unwind_got_constant (this_frame, regnum, addr); case DWARF2_FRAME_REG_UNSPECIFIED: @@ -1192,7 +1205,8 @@ dwarf2_frame_sniffer (const struct frame_unwind *self, extend one byte before its start address or we could potentially select the FDE of the previous function. */ CORE_ADDR block_addr = get_frame_address_in_block (this_frame); - struct dwarf2_fde *fde = dwarf2_frame_find_fde (&block_addr); + struct dwarf2_fde *fde = dwarf2_frame_find_fde (&block_addr, NULL); + if (!fde) return 0; @@ -1263,7 +1277,8 @@ const struct frame_base * dwarf2_frame_base_sniffer (struct frame_info *this_frame) { CORE_ADDR block_addr = get_frame_address_in_block (this_frame); - if (dwarf2_frame_find_fde (&block_addr)) + + if (dwarf2_frame_find_fde (&block_addr, NULL)) return &dwarf2_frame_base; return NULL; @@ -1415,7 +1430,8 @@ encoding_for_size (unsigned int size) static CORE_ADDR read_encoded_value (struct comp_unit *unit, gdb_byte encoding, - int ptr_len, gdb_byte *buf, unsigned int *bytes_read_ptr, + int ptr_len, const gdb_byte *buf, + unsigned int *bytes_read_ptr, CORE_ADDR func_base) { ptrdiff_t offset; @@ -1472,7 +1488,8 @@ read_encoded_value (struct comp_unit *unit, gdb_byte encoding, case DW_EH_PE_uleb128: { ULONGEST value; - gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7; + const gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7; + *bytes_read_ptr += read_uleb128 (buf, end_buf, &value) - buf; return base + value; } @@ -1488,7 +1505,8 @@ read_encoded_value (struct comp_unit *unit, gdb_byte encoding, case DW_EH_PE_sleb128: { LONGEST value; - gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7; + const gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7; + *bytes_read_ptr += read_sleb128 (buf, end_buf, &value) - buf; return base + value; } @@ -1525,6 +1543,14 @@ find_cie (struct dwarf2_cie_table *cie_table, ULONGEST cie_pointer) { struct dwarf2_cie **p_cie; + /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to + bsearch be non-NULL. */ + if (cie_table->entries == NULL) + { + gdb_assert (cie_table->num_entries == 0); + return NULL; + } + p_cie = bsearch (&cie_pointer, cie_table->entries, cie_table->num_entries, sizeof (cie_table->entries[0]), bsearch_cie_cmp); if (p_cie != NULL) @@ -1552,6 +1578,7 @@ bsearch_fde_cmp (const void *key, const void *element) { CORE_ADDR seek_pc = *(CORE_ADDR *) key; struct dwarf2_fde *fde = *(struct dwarf2_fde **) element; + if (seek_pc < fde->initial_location) return -1; if (seek_pc < fde->initial_location + fde->address_range) @@ -1563,7 +1590,7 @@ bsearch_fde_cmp (const void *key, const void *element) inital location associated with it into *PC. */ static struct dwarf2_fde * -dwarf2_frame_find_fde (CORE_ADDR *pc) +dwarf2_frame_find_fde (CORE_ADDR *pc, CORE_ADDR *out_offset) { struct objfile *objfile; @@ -1576,6 +1603,13 @@ dwarf2_frame_find_fde (CORE_ADDR *pc) fde_table = objfile_data (objfile, dwarf2_frame_objfile_data); if (fde_table == NULL) + { + dwarf2_build_frame_info (objfile); + fde_table = objfile_data (objfile, dwarf2_frame_objfile_data); + } + gdb_assert (fde_table != NULL); + + if (fde_table->num_entries == 0) continue; gdb_assert (objfile->section_offsets); @@ -1591,6 +1625,8 @@ dwarf2_frame_find_fde (CORE_ADDR *pc) if (p_fde != NULL) { *pc = (*p_fde)->initial_location + offset; + if (out_offset) + *out_offset = offset; return *p_fde; } } @@ -1709,7 +1745,7 @@ decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p, /* Check version number. */ cie_version = read_1_byte (unit->abfd, buf); - if (cie_version != 1 && cie_version != 3) + if (cie_version != 1 && cie_version != 3 && cie_version != 4) return NULL; cie->version = cie_version; buf += 1; @@ -1733,6 +1769,20 @@ decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p, augmentation += 2; } + if (cie->version >= 4) + { + /* FIXME: check that this is the same as from the CU header. */ + cie->addr_size = read_1_byte (unit->abfd, buf); + ++buf; + cie->segment_size = read_1_byte (unit->abfd, buf); + ++buf; + } + else + { + cie->addr_size = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT; + cie->segment_size = 0; + } + cie->code_alignment_factor = read_unsigned_leb128 (unit->abfd, buf, &bytes_read); buf += bytes_read; @@ -1899,7 +1949,6 @@ decode_frame_entry (struct comp_unit *unit, gdb_byte *start, int eh_frame_p, { enum { NONE, ALIGN4, ALIGN8, FAIL } workaround = NONE; gdb_byte *ret; - const char *msg; ptrdiff_t start_offset; while (1) @@ -2019,6 +2068,7 @@ dwarf2_build_frame_info (struct objfile *objfile) gdb_byte *frame_ptr; struct dwarf2_cie_table cie_table; struct dwarf2_fde_table fde_table; + struct dwarf2_fde_table *fde_table2; cie_table.num_entries = 0; cie_table.entries = NULL; @@ -2090,39 +2140,78 @@ dwarf2_build_frame_info (struct objfile *objfile) cie_table.num_entries = 0; /* Paranoia. */ } - if (fde_table.num_entries != 0) + /* Copy fde_table to obstack: it is needed at runtime. */ + fde_table2 = (struct dwarf2_fde_table *) + obstack_alloc (&objfile->objfile_obstack, sizeof (*fde_table2)); + + if (fde_table.num_entries == 0) + { + fde_table2->entries = NULL; + fde_table2->num_entries = 0; + } + else { - struct dwarf2_fde_table *fde_table2; - int i, j; + struct dwarf2_fde *fde_prev = NULL; + struct dwarf2_fde *first_non_zero_fde = NULL; + int i; /* Prepare FDE table for lookups. */ qsort (fde_table.entries, fde_table.num_entries, sizeof (fde_table.entries[0]), qsort_fde_cmp); - /* Copy fde_table to obstack: it is needed at runtime. */ - fde_table2 = (struct dwarf2_fde_table *) - obstack_alloc (&objfile->objfile_obstack, sizeof (*fde_table2)); + /* Check for leftovers from --gc-sections. The GNU linker sets + the relevant symbols to zero, but doesn't zero the FDE *end* + ranges because there's no relocation there. It's (offset, + length), not (start, end). On targets where address zero is + just another valid address this can be a problem, since the + FDEs appear to be non-empty in the output --- we could pick + out the wrong FDE. To work around this, when overlaps are + detected, we prefer FDEs that do not start at zero. + + Start by finding the first FDE with non-zero start. Below + we'll discard all FDEs that start at zero and overlap this + one. */ + for (i = 0; i < fde_table.num_entries; i++) + { + struct dwarf2_fde *fde = fde_table.entries[i]; - /* Since we'll be doing bsearch, squeeze out identical (except for - eh_frame_p) fde entries so bsearch result is predictable. */ - for (i = 0, j = 0; j < fde_table.num_entries; ++i) - { - const int k = j; - - obstack_grow (&objfile->objfile_obstack, &fde_table.entries[j], - sizeof (fde_table.entries[0])); - while (++j < fde_table.num_entries - && (fde_table.entries[k]->initial_location == - fde_table.entries[j]->initial_location)) - /* Skip. */; - } + if (fde->initial_location != 0) + { + first_non_zero_fde = fde; + break; + } + } + + /* Since we'll be doing bsearch, squeeze out identical (except + for eh_frame_p) fde entries so bsearch result is predictable. + Also discard leftovers from --gc-sections. */ + fde_table2->num_entries = 0; + for (i = 0; i < fde_table.num_entries; i++) + { + struct dwarf2_fde *fde = fde_table.entries[i]; + + if (fde->initial_location == 0 + && first_non_zero_fde != NULL + && (first_non_zero_fde->initial_location + < fde->initial_location + fde->address_range)) + continue; + + if (fde_prev != NULL + && fde_prev->initial_location == fde->initial_location) + continue; + + obstack_grow (&objfile->objfile_obstack, &fde_table.entries[i], + sizeof (fde_table.entries[0])); + ++fde_table2->num_entries; + fde_prev = fde; + } fde_table2->entries = obstack_finish (&objfile->objfile_obstack); - fde_table2->num_entries = i; - set_objfile_data (objfile, dwarf2_frame_objfile_data, fde_table2); /* Discard the original fde_table. */ xfree (fde_table.entries); } + + set_objfile_data (objfile, dwarf2_frame_objfile_data, fde_table2); } /* Provide a prototype to silence -Wmissing-prototypes. */ diff --git a/contrib/gdb-7/gdb/dwarf2-frame.h b/contrib/gdb-7/gdb/dwarf2-frame.h index dd03d590cc..2496f05c42 100644 --- a/contrib/gdb-7/gdb/dwarf2-frame.h +++ b/contrib/gdb-7/gdb/dwarf2-frame.h @@ -1,6 +1,6 @@ /* Frame unwinder for frames with DWARF Call Frame Information. - Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Mark Kettenis. @@ -72,7 +72,7 @@ struct dwarf2_frame_state_reg union { LONGEST offset; ULONGEST reg; - unsigned char *exp; + const gdb_byte *exp; struct value *(*fn) (struct frame_info *this_frame, void **this_cache, int regnum); } loc; diff --git a/contrib/gdb-7/gdb/dwarf2expr.c b/contrib/gdb-7/gdb/dwarf2expr.c index 46bc9d758b..b9ae108c5f 100644 --- a/contrib/gdb-7/gdb/dwarf2expr.c +++ b/contrib/gdb-7/gdb/dwarf2expr.c @@ -1,6 +1,6 @@ /* DWARF 2 Expression Evaluator. - Copyright (C) 2001, 2002, 2003, 2005, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Daniel Berlin (dan@dberlin.org) @@ -32,8 +32,7 @@ /* Local prototypes. */ static void execute_stack_op (struct dwarf_expr_context *, - gdb_byte *, gdb_byte *); -static struct type *unsigned_address_type (struct gdbarch *, int); + const gdb_byte *, const gdb_byte *); /* Create a new context for the expression evaluator. */ @@ -41,10 +40,12 @@ struct dwarf_expr_context * new_dwarf_expr_context (void) { struct dwarf_expr_context *retval; + retval = xcalloc (1, sizeof (struct dwarf_expr_context)); retval->stack_len = 0; retval->stack_allocated = 10; - retval->stack = xmalloc (retval->stack_allocated * sizeof (CORE_ADDR)); + retval->stack = xmalloc (retval->stack_allocated + * sizeof (struct dwarf_stack_value)); retval->num_pieces = 0; retval->pieces = 0; retval->max_recursion_depth = 0x100; @@ -86,6 +87,7 @@ dwarf_expr_grow_stack (struct dwarf_expr_context *ctx, size_t need) if (ctx->stack_len + need > ctx->stack_allocated) { size_t newlen = ctx->stack_len + need + 10; + ctx->stack = xrealloc (ctx->stack, newlen * sizeof (struct dwarf_stack_value)); ctx->stack_allocated = newlen; @@ -95,11 +97,16 @@ dwarf_expr_grow_stack (struct dwarf_expr_context *ctx, size_t need) /* Push VALUE onto CTX's stack. */ void -dwarf_expr_push (struct dwarf_expr_context *ctx, CORE_ADDR value, +dwarf_expr_push (struct dwarf_expr_context *ctx, ULONGEST value, int in_stack_memory) { struct dwarf_stack_value *v; + /* We keep all stack elements within the range defined by the + DWARF address size. */ + if (ctx->addr_size < sizeof (ULONGEST)) + value &= ((ULONGEST) 1 << (ctx->addr_size * HOST_CHAR_BIT)) - 1; + dwarf_expr_grow_stack (ctx, 1); v = &ctx->stack[ctx->stack_len++]; v->value = value; @@ -118,7 +125,7 @@ dwarf_expr_pop (struct dwarf_expr_context *ctx) /* Retrieve the N'th item on CTX's stack. */ -CORE_ADDR +ULONGEST dwarf_expr_fetch (struct dwarf_expr_context *ctx, int n) { if (ctx->stack_len <= n) @@ -128,6 +135,48 @@ dwarf_expr_fetch (struct dwarf_expr_context *ctx, int n) } +/* Retrieve the N'th item on CTX's stack, converted to an address. */ + +CORE_ADDR +dwarf_expr_fetch_address (struct dwarf_expr_context *ctx, int n) +{ + ULONGEST result = dwarf_expr_fetch (ctx, n); + + /* For most architectures, calling extract_unsigned_integer() alone + is sufficient for extracting an address. However, some + architectures (e.g. MIPS) use signed addresses and using + extract_unsigned_integer() will not produce a correct + result. Make sure we invoke gdbarch_integer_to_address() + for those architectures which require it. */ + if (gdbarch_integer_to_address_p (ctx->gdbarch)) + { + enum bfd_endian byte_order = gdbarch_byte_order (ctx->gdbarch); + gdb_byte *buf = alloca (ctx->addr_size); + struct type *int_type; + + switch (ctx->addr_size) + { + case 2: + int_type = builtin_type (ctx->gdbarch)->builtin_uint16; + break; + case 4: + int_type = builtin_type (ctx->gdbarch)->builtin_uint32; + break; + case 8: + int_type = builtin_type (ctx->gdbarch)->builtin_uint64; + break; + default: + internal_error (__FILE__, __LINE__, + _("Unsupported address size.\n")); + } + + store_unsigned_integer (buf, ctx->addr_size, byte_order, result); + return gdbarch_integer_to_address (ctx->gdbarch, int_type, buf); + } + + return (CORE_ADDR) result; +} + /* Retrieve the in_stack_memory flag of the N'th item on CTX's stack. */ int @@ -140,34 +189,53 @@ dwarf_expr_fetch_in_stack_memory (struct dwarf_expr_context *ctx, int n) } +/* Return true if the expression stack is empty. */ + +static int +dwarf_expr_stack_empty_p (struct dwarf_expr_context *ctx) +{ + return ctx->stack_len == 0; +} + /* Add a new piece to CTX's piece list. */ static void -add_piece (struct dwarf_expr_context *ctx, ULONGEST size) +add_piece (struct dwarf_expr_context *ctx, ULONGEST size, ULONGEST offset) { struct dwarf_expr_piece *p; ctx->num_pieces++; - if (ctx->pieces) - ctx->pieces = xrealloc (ctx->pieces, - (ctx->num_pieces - * sizeof (struct dwarf_expr_piece))); - else - ctx->pieces = xmalloc (ctx->num_pieces - * sizeof (struct dwarf_expr_piece)); + ctx->pieces = xrealloc (ctx->pieces, + (ctx->num_pieces + * sizeof (struct dwarf_expr_piece))); p = &ctx->pieces[ctx->num_pieces - 1]; p->location = ctx->location; p->size = size; + p->offset = offset; + if (p->location == DWARF_VALUE_LITERAL) { p->v.literal.data = ctx->data; p->v.literal.length = ctx->len; } + else if (dwarf_expr_stack_empty_p (ctx)) + { + p->location = DWARF_VALUE_OPTIMIZED_OUT; + /* Also reset the context's location, for our callers. This is + a somewhat strange approach, but this lets us avoid setting + the location to DWARF_VALUE_MEMORY in all the individual + cases in the evaluator. */ + ctx->location = DWARF_VALUE_OPTIMIZED_OUT; + } + else if (p->location == DWARF_VALUE_MEMORY) + { + p->v.mem.addr = dwarf_expr_fetch_address (ctx, 0); + p->v.mem.in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0); + } else { - p->v.expr.value = dwarf_expr_fetch (ctx, 0); - p->v.expr.in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0); + p->v.value = dwarf_expr_fetch (ctx, 0); } } @@ -175,7 +243,8 @@ add_piece (struct dwarf_expr_context *ctx, ULONGEST size) CTX. */ void -dwarf_expr_eval (struct dwarf_expr_context *ctx, gdb_byte *addr, size_t len) +dwarf_expr_eval (struct dwarf_expr_context *ctx, const gdb_byte *addr, + size_t len) { int old_recursion_depth = ctx->recursion_depth; @@ -190,8 +259,8 @@ dwarf_expr_eval (struct dwarf_expr_context *ctx, gdb_byte *addr, size_t len) by R, and return the new value of BUF. Verify that it doesn't extend past BUF_END. */ -gdb_byte * -read_uleb128 (gdb_byte *buf, gdb_byte *buf_end, ULONGEST * r) +const gdb_byte * +read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end, ULONGEST * r) { unsigned shift = 0; ULONGEST result = 0; @@ -216,8 +285,8 @@ read_uleb128 (gdb_byte *buf, gdb_byte *buf_end, ULONGEST * r) by R, and return the new value of BUF. Verify that it doesn't extend past BUF_END. */ -gdb_byte * -read_sleb128 (gdb_byte *buf, gdb_byte *buf_end, LONGEST * r) +const gdb_byte * +read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end, LONGEST * r) { unsigned shift = 0; LONGEST result = 0; @@ -240,84 +309,14 @@ read_sleb128 (gdb_byte *buf, gdb_byte *buf_end, LONGEST * r) *r = result; return buf; } - -/* Read an address of size ADDR_SIZE from BUF, and verify that it - doesn't extend past BUF_END. */ - -CORE_ADDR -dwarf2_read_address (struct gdbarch *gdbarch, gdb_byte *buf, - gdb_byte *buf_end, int addr_size) -{ - enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); - CORE_ADDR result; - - if (buf_end - buf < addr_size) - error (_("dwarf2_read_address: Corrupted DWARF expression.")); - - /* For most architectures, calling extract_unsigned_integer() alone - is sufficient for extracting an address. However, some - architectures (e.g. MIPS) use signed addresses and using - extract_unsigned_integer() will not produce a correct - result. Make sure we invoke gdbarch_integer_to_address() - for those architectures which require it. - - The use of `unsigned_address_type' in the code below refers to - the type of buf and has no bearing on the signedness of the - address being returned. */ - - if (gdbarch_integer_to_address_p (gdbarch)) - return gdbarch_integer_to_address - (gdbarch, unsigned_address_type (gdbarch, addr_size), buf); - - return extract_unsigned_integer (buf, addr_size, byte_order); -} - -/* Return the type of an address of size ADDR_SIZE, - for unsigned arithmetic. */ - -static struct type * -unsigned_address_type (struct gdbarch *gdbarch, int addr_size) -{ - switch (addr_size) - { - case 2: - return builtin_type (gdbarch)->builtin_uint16; - case 4: - return builtin_type (gdbarch)->builtin_uint32; - case 8: - return builtin_type (gdbarch)->builtin_uint64; - default: - internal_error (__FILE__, __LINE__, - _("Unsupported address size.\n")); - } -} - -/* Return the type of an address of size ADDR_SIZE, - for signed arithmetic. */ - -static struct type * -signed_address_type (struct gdbarch *gdbarch, int addr_size) -{ - switch (addr_size) - { - case 2: - return builtin_type (gdbarch)->builtin_int16; - case 4: - return builtin_type (gdbarch)->builtin_int32; - case 8: - return builtin_type (gdbarch)->builtin_int64; - default: - internal_error (__FILE__, __LINE__, - _("Unsupported address size.\n")); - } -} /* Check that the current operator is either at the end of an expression, or that it is followed by a composition operator. */ -static void -require_composition (gdb_byte *op_ptr, gdb_byte *op_end, const char *op_name) +void +dwarf_expr_require_composition (const gdb_byte *op_ptr, const gdb_byte *op_end, + const char *op_name) { /* It seems like DW_OP_GNU_uninit should be handled here. However, it doesn't seem to make sense for DW_OP_*_value, and it was not @@ -334,9 +333,13 @@ require_composition (gdb_byte *op_ptr, gdb_byte *op_end, const char *op_name) static void execute_stack_op (struct dwarf_expr_context *ctx, - gdb_byte *op_ptr, gdb_byte *op_end) + const gdb_byte *op_ptr, const gdb_byte *op_end) { +#define sign_ext(x) ((LONGEST) (((x) ^ sign_bit) - sign_bit)) + ULONGEST sign_bit = (ctx->addr_size >= sizeof (ULONGEST) ? 0 + : ((ULONGEST) 1) << (ctx->addr_size * 8 - 1)); enum bfd_endian byte_order = gdbarch_byte_order (ctx->gdbarch); + ctx->location = DWARF_VALUE_MEMORY; ctx->initialized = 1; /* Default is initialized. */ @@ -348,7 +351,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, while (op_ptr < op_end) { enum dwarf_location_atom op = *op_ptr++; - CORE_ADDR result; + ULONGEST result; /* Assume the value is not in stack memory. Code that knows otherwise sets this to 1. Some arithmetic on stack addresses can probably be assumed to still @@ -397,9 +400,15 @@ execute_stack_op (struct dwarf_expr_context *ctx, break; case DW_OP_addr: - result = dwarf2_read_address (ctx->gdbarch, - op_ptr, op_end, ctx->addr_size); + result = extract_unsigned_integer (op_ptr, + ctx->addr_size, byte_order); op_ptr += ctx->addr_size; + /* Some versions of GCC emit DW_OP_addr before + DW_OP_GNU_push_tls_address. In this case the value is an + index, not an address. We don't support things like + branching between the address and the TLS op. */ + if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address) + result += ctx->offset; break; case DW_OP_const1u: @@ -479,9 +488,11 @@ execute_stack_op (struct dwarf_expr_context *ctx, case DW_OP_reg31: if (op_ptr != op_end && *op_ptr != DW_OP_piece + && *op_ptr != DW_OP_bit_piece && *op_ptr != DW_OP_GNU_uninit) error (_("DWARF-2 expression error: DW_OP_reg operations must be " - "used either alone or in conjuction with DW_OP_piece.")); + "used either alone or in conjuction with DW_OP_piece " + "or DW_OP_bit_piece.")); result = op - DW_OP_reg0; ctx->location = DWARF_VALUE_REGISTER; @@ -489,7 +500,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, case DW_OP_regx: op_ptr = read_uleb128 (op_ptr, op_end, ®); - require_composition (op_ptr, op_end, "DW_OP_regx"); + dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx"); result = reg; ctx->location = DWARF_VALUE_REGISTER; @@ -498,6 +509,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, case DW_OP_implicit_value: { ULONGEST len; + op_ptr = read_uleb128 (op_ptr, op_end, &len); if (op_ptr + len > op_end) error (_("DW_OP_implicit_value: too few bytes available.")); @@ -505,13 +517,14 @@ execute_stack_op (struct dwarf_expr_context *ctx, ctx->data = op_ptr; ctx->location = DWARF_VALUE_LITERAL; op_ptr += len; - require_composition (op_ptr, op_end, "DW_OP_implicit_value"); + dwarf_expr_require_composition (op_ptr, op_end, + "DW_OP_implicit_value"); } goto no_push; case DW_OP_stack_value: ctx->location = DWARF_VALUE_STACK; - require_composition (op_ptr, op_end, "DW_OP_stack_value"); + dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value"); goto no_push; case DW_OP_breg0: @@ -562,7 +575,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, break; case DW_OP_fbreg: { - gdb_byte *datastart; + const gdb_byte *datastart; size_t datalen; unsigned int before_stack_len; @@ -577,12 +590,12 @@ execute_stack_op (struct dwarf_expr_context *ctx, specific this_base method. */ (ctx->get_frame_base) (ctx->baton, &datastart, &datalen); dwarf_expr_eval (ctx, datastart, datalen); - if (ctx->location == DWARF_VALUE_LITERAL - || ctx->location == DWARF_VALUE_STACK) + if (ctx->location == DWARF_VALUE_MEMORY) + result = dwarf_expr_fetch_address (ctx, 0); + else if (ctx->location == DWARF_VALUE_REGISTER) + result = (ctx->read_reg) (ctx->baton, dwarf_expr_fetch (ctx, 0)); + else error (_("Not implemented: computing frame base using explicit value operator")); - result = dwarf_expr_fetch (ctx, 0); - if (ctx->location == DWARF_VALUE_REGISTER) - result = (ctx->read_reg) (ctx->baton, result); result = result + offset; in_stack_memory = 1; ctx->stack_len = before_stack_len; @@ -642,6 +655,17 @@ execute_stack_op (struct dwarf_expr_context *ctx, case DW_OP_deref: case DW_OP_deref_size: + { + int addr_size = (op == DW_OP_deref ? ctx->addr_size : *op_ptr++); + gdb_byte *buf = alloca (addr_size); + CORE_ADDR addr = dwarf_expr_fetch_address (ctx, 0); + dwarf_expr_pop (ctx); + + (ctx->read_mem) (ctx->baton, buf, addr, addr_size); + result = extract_unsigned_integer (buf, addr_size, byte_order); + break; + } + case DW_OP_abs: case DW_OP_neg: case DW_OP_not: @@ -652,29 +676,8 @@ execute_stack_op (struct dwarf_expr_context *ctx, switch (op) { - case DW_OP_deref: - { - gdb_byte *buf = alloca (ctx->addr_size); - (ctx->read_mem) (ctx->baton, buf, result, ctx->addr_size); - result = dwarf2_read_address (ctx->gdbarch, - buf, buf + ctx->addr_size, - ctx->addr_size); - } - break; - - case DW_OP_deref_size: - { - int addr_size = *op_ptr++; - gdb_byte *buf = alloca (addr_size); - (ctx->read_mem) (ctx->baton, buf, result, addr_size); - result = dwarf2_read_address (ctx->gdbarch, - buf, buf + addr_size, - addr_size); - } - break; - case DW_OP_abs: - if ((signed int) result < 0) + if (sign_ext (result) < 0) result = -result; break; case DW_OP_neg: @@ -708,12 +711,8 @@ execute_stack_op (struct dwarf_expr_context *ctx, case DW_OP_gt: case DW_OP_ne: { - /* Binary operations. Use the value engine to do computations in - the right width. */ - CORE_ADDR first, second; - enum exp_opcode binop; - struct value *val1, *val2; - struct type *stype, *utype; + /* Binary operations. */ + ULONGEST first, second; second = dwarf_expr_fetch (ctx, 0); dwarf_expr_pop (ctx); @@ -721,70 +720,67 @@ execute_stack_op (struct dwarf_expr_context *ctx, first = dwarf_expr_fetch (ctx, 0); dwarf_expr_pop (ctx); - utype = unsigned_address_type (ctx->gdbarch, ctx->addr_size); - stype = signed_address_type (ctx->gdbarch, ctx->addr_size); - val1 = value_from_longest (utype, first); - val2 = value_from_longest (utype, second); - switch (op) { case DW_OP_and: - binop = BINOP_BITWISE_AND; + result = first & second; break; case DW_OP_div: - binop = BINOP_DIV; + if (!second) + error (_("Division by zero")); + result = sign_ext (first) / sign_ext (second); break; case DW_OP_minus: - binop = BINOP_SUB; + result = first - second; break; case DW_OP_mod: - binop = BINOP_MOD; + if (!second) + error (_("Division by zero")); + result = first % second; break; case DW_OP_mul: - binop = BINOP_MUL; + result = first * second; break; case DW_OP_or: - binop = BINOP_BITWISE_IOR; + result = first | second; break; case DW_OP_plus: - binop = BINOP_ADD; + result = first + second; break; case DW_OP_shl: - binop = BINOP_LSH; + result = first << second; break; case DW_OP_shr: - binop = BINOP_RSH; + result = first >> second; break; case DW_OP_shra: - binop = BINOP_RSH; - val1 = value_from_longest (stype, first); + result = sign_ext (first) >> second; break; case DW_OP_xor: - binop = BINOP_BITWISE_XOR; + result = first ^ second; break; case DW_OP_le: - binop = BINOP_LEQ; + result = sign_ext (first) <= sign_ext (second); break; case DW_OP_ge: - binop = BINOP_GEQ; + result = sign_ext (first) >= sign_ext (second); break; case DW_OP_eq: - binop = BINOP_EQUAL; + result = sign_ext (first) == sign_ext (second); break; case DW_OP_lt: - binop = BINOP_LESS; + result = sign_ext (first) < sign_ext (second); break; case DW_OP_gt: - binop = BINOP_GTR; + result = sign_ext (first) > sign_ext (second); break; case DW_OP_ne: - binop = BINOP_NOTEQUAL; + result = sign_ext (first) != sign_ext (second); break; default: internal_error (__FILE__, __LINE__, _("Can't be reached.")); } - result = value_as_long (value_binop (val1, val2, binop)); } break; @@ -830,16 +826,35 @@ execute_stack_op (struct dwarf_expr_context *ctx, /* Record the piece. */ op_ptr = read_uleb128 (op_ptr, op_end, &size); - add_piece (ctx, size); + add_piece (ctx, 8 * size, 0); /* Pop off the address/regnum, and reset the location type. */ - if (ctx->location != DWARF_VALUE_LITERAL) + if (ctx->location != DWARF_VALUE_LITERAL + && ctx->location != DWARF_VALUE_OPTIMIZED_OUT) dwarf_expr_pop (ctx); ctx->location = DWARF_VALUE_MEMORY; } goto no_push; + case DW_OP_bit_piece: + { + ULONGEST size, offset; + + /* Record the piece. */ + op_ptr = read_uleb128 (op_ptr, op_end, &size); + op_ptr = read_uleb128 (op_ptr, op_end, &offset); + add_piece (ctx, size, offset); + + /* Pop off the address/regnum, and reset the location + type. */ + if (ctx->location != DWARF_VALUE_LITERAL + && ctx->location != DWARF_VALUE_OPTIMIZED_OUT) + dwarf_expr_pop (ctx); + ctx->location = DWARF_VALUE_MEMORY; + } + goto no_push; + case DW_OP_GNU_uninit: if (op_ptr != op_end) error (_("DWARF-2 expression error: DW_OP_GNU_uninit must always " @@ -848,6 +863,18 @@ execute_stack_op (struct dwarf_expr_context *ctx, ctx->initialized = 0; goto no_push; + case DW_OP_call2: + result = extract_unsigned_integer (op_ptr, 2, byte_order); + op_ptr += 2; + ctx->dwarf_call (ctx, result); + goto no_push; + + case DW_OP_call4: + result = extract_unsigned_integer (op_ptr, 4, byte_order); + op_ptr += 4; + ctx->dwarf_call (ctx, result); + goto no_push; + default: error (_("Unhandled dwarf expression opcode 0x%x"), op); } @@ -859,4 +886,5 @@ execute_stack_op (struct dwarf_expr_context *ctx, ctx->recursion_depth--; gdb_assert (ctx->recursion_depth >= 0); +#undef sign_ext } diff --git a/contrib/gdb-7/gdb/dwarf2expr.h b/contrib/gdb-7/gdb/dwarf2expr.h index a9a8a057a8..61b8f00330 100644 --- a/contrib/gdb-7/gdb/dwarf2expr.h +++ b/contrib/gdb-7/gdb/dwarf2expr.h @@ -1,6 +1,6 @@ /* DWARF 2 Expression Evaluator. - Copyright (C) 2001, 2002, 2003, 2005, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Daniel Berlin . @@ -38,14 +38,17 @@ enum dwarf_value_location DWARF_VALUE_STACK, /* The piece is a literal. */ - DWARF_VALUE_LITERAL + DWARF_VALUE_LITERAL, + + /* The piece was optimized out. */ + DWARF_VALUE_OPTIMIZED_OUT }; /* The dwarf expression stack. */ struct dwarf_stack_value { - CORE_ADDR value; + ULONGEST value; /* Non-zero if the piece is in memory and is known to be on the program's stack. It is always ok to set this to zero. @@ -72,6 +75,9 @@ struct dwarf_expr_context /* Target address size in bytes. */ int addr_size; + /* Offset used to relocate DW_OP_addr argument. */ + CORE_ADDR offset; + /* An opaque argument provided by the caller, which will be passed to all of the callback functions. */ void *baton; @@ -85,7 +91,7 @@ struct dwarf_expr_context /* Return the location expression for the frame base attribute, in START and LENGTH. The result must be live until the current expression evaluation is complete. */ - void (*get_frame_base) (void *baton, gdb_byte **start, size_t *length); + void (*get_frame_base) (void *baton, const gdb_byte **start, size_t *length); /* Return the CFA for the frame. */ CORE_ADDR (*get_frame_cfa) (void *baton); @@ -94,15 +100,14 @@ struct dwarf_expr_context DW_OP_GNU_push_tls_address. */ CORE_ADDR (*get_tls_address) (void *baton, CORE_ADDR offset); + /* Execute DW_AT_location expression for the DWARF expression subroutine in + the DIE at DIE_OFFSET in the CU from CTX. Do not touch STACK while it + being passed to and returned from the called DWARF subroutine. */ + void (*dwarf_call) (struct dwarf_expr_context *ctx, size_t die_offset); + #if 0 /* Not yet implemented. */ - /* Return the location expression for the dwarf expression - subroutine in the die at OFFSET in the current compilation unit. - The result must be live until the current expression evaluation - is complete. */ - unsigned char *(*get_subr) (void *baton, off_t offset, size_t *length); - /* Return the `object address' for DW_OP_push_object_address. */ CORE_ADDR (*get_object_address) (void *baton); #endif @@ -118,7 +123,7 @@ struct dwarf_expr_context /* For VALUE_LITERAL, a the current literal value's length and data. */ ULONGEST len; - gdb_byte *data; + const gdb_byte *data; /* Initialization status of variable: Non-zero if variable has been initialized; zero otherwise. */ @@ -152,7 +157,7 @@ struct dwarf_expr_context }; -/* A piece of an object, as recorded by DW_OP_piece. */ +/* A piece of an object, as recorded by DW_OP_piece or DW_OP_bit_piece. */ struct dwarf_expr_piece { enum dwarf_value_location location; @@ -161,25 +166,31 @@ struct dwarf_expr_piece { struct { - /* This piece's address or register number. */ - CORE_ADDR value; + /* This piece's address, for DWARF_VALUE_MEMORY pieces. */ + CORE_ADDR addr; /* Non-zero if the piece is known to be in memory and on the program's stack. */ int in_stack_memory; - } expr; + } mem; + + /* The piece's register number or literal value, for + DWARF_VALUE_REGISTER or DWARF_VALUE_STACK pieces. */ + ULONGEST value; struct { - /* A pointer to the data making up this piece, for literal - pieces. */ - gdb_byte *data; + /* A pointer to the data making up this piece, + for DWARF_VALUE_LITERAL pieces. */ + const gdb_byte *data; /* The length of the available data. */ ULONGEST length; } literal; } v; - /* The length of the piece, in bytes. */ + /* The length of the piece, in bits. */ ULONGEST size; + /* The piece offset, in bits. */ + ULONGEST offset; }; struct dwarf_expr_context *new_dwarf_expr_context (void); @@ -187,18 +198,24 @@ void free_dwarf_expr_context (struct dwarf_expr_context *ctx); struct cleanup * make_cleanup_free_dwarf_expr_context (struct dwarf_expr_context *ctx); -void dwarf_expr_push (struct dwarf_expr_context *ctx, CORE_ADDR value, +void dwarf_expr_push (struct dwarf_expr_context *ctx, ULONGEST value, int in_stack_memory); void dwarf_expr_pop (struct dwarf_expr_context *ctx); -void dwarf_expr_eval (struct dwarf_expr_context *ctx, unsigned char *addr, +void dwarf_expr_eval (struct dwarf_expr_context *ctx, const gdb_byte *addr, size_t len); -CORE_ADDR dwarf_expr_fetch (struct dwarf_expr_context *ctx, int n); +ULONGEST dwarf_expr_fetch (struct dwarf_expr_context *ctx, int n); +CORE_ADDR dwarf_expr_fetch_address (struct dwarf_expr_context *ctx, int n); int dwarf_expr_fetch_in_stack_memory (struct dwarf_expr_context *ctx, int n); -gdb_byte *read_uleb128 (gdb_byte *buf, gdb_byte *buf_end, ULONGEST * r); -gdb_byte *read_sleb128 (gdb_byte *buf, gdb_byte *buf_end, LONGEST * r); -CORE_ADDR dwarf2_read_address (struct gdbarch *gdbarch, gdb_byte *buf, - gdb_byte *buf_end, int addr_size); +const gdb_byte *read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end, + ULONGEST * r); +const gdb_byte *read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end, + LONGEST * r); + +const char *dwarf_stack_op_name (unsigned int, int); + +void dwarf_expr_require_composition (const gdb_byte *, const gdb_byte *, + const char *); #endif /* dwarf2expr.h */ diff --git a/contrib/gdb-7/gdb/dwarf2loc.c b/contrib/gdb-7/gdb/dwarf2loc.c index 3a81202448..f59bc4052f 100644 --- a/contrib/gdb-7/gdb/dwarf2loc.c +++ b/contrib/gdb-7/gdb/dwarf2loc.c @@ -1,6 +1,7 @@ /* DWARF 2 location expression support for GDB. - Copyright (C) 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Daniel Jacobowitz, MontaVista Software, Inc. @@ -41,6 +42,12 @@ #include "gdb_string.h" #include "gdb_assert.h" +extern int dwarf2_always_disassemble; + +static void +dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc, + const gdb_byte **start, size_t *length); + /* A helper function for dealing with location lists. Given a symbol baton (BATON) and a pc value (PC), find the appropriate location expression, set *LOCEXPR_LENGTH, and return a pointer @@ -49,21 +56,21 @@ For now, only return the first matching location expression; there can be more than one in the list. */ -static gdb_byte * +static const gdb_byte * find_location_expression (struct dwarf2_loclist_baton *baton, size_t *locexpr_length, CORE_ADDR pc) { CORE_ADDR low, high; - gdb_byte *loc_ptr, *buf_end; + const gdb_byte *loc_ptr, *buf_end; int length; struct objfile *objfile = dwarf2_per_cu_objfile (baton->per_cu); struct gdbarch *gdbarch = get_objfile_arch (objfile); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); unsigned int addr_size = dwarf2_per_cu_addr_size (baton->per_cu); + int signed_addr_p = bfd_get_sign_extend_vma (objfile->obfd); CORE_ADDR base_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1)); /* Adjust base_address for relocatable objects. */ - CORE_ADDR base_offset = ANOFFSET (objfile->section_offsets, - SECT_OFF_TEXT (objfile)); + CORE_ADDR base_offset = dwarf2_per_cu_text_offset (baton->per_cu); CORE_ADDR base_address = baton->base_address + base_offset; loc_ptr = baton->data; @@ -74,21 +81,25 @@ find_location_expression (struct dwarf2_loclist_baton *baton, if (buf_end - loc_ptr < 2 * addr_size) error (_("find_location_expression: Corrupted DWARF expression.")); - low = extract_unsigned_integer (loc_ptr, addr_size, byte_order); + if (signed_addr_p) + low = extract_signed_integer (loc_ptr, addr_size, byte_order); + else + low = extract_unsigned_integer (loc_ptr, addr_size, byte_order); + loc_ptr += addr_size; + + if (signed_addr_p) + high = extract_signed_integer (loc_ptr, addr_size, byte_order); + else + high = extract_unsigned_integer (loc_ptr, addr_size, byte_order); loc_ptr += addr_size; /* A base-address-selection entry. */ - if (low == base_mask) + if ((low & base_mask) == base_mask) { - base_address = dwarf2_read_address (gdbarch, - loc_ptr, buf_end, addr_size); - loc_ptr += addr_size; + base_address = high + base_offset; continue; } - high = extract_unsigned_integer (loc_ptr, addr_size, byte_order); - loc_ptr += addr_size; - /* An end-of-list entry. */ if (low == 0 && high == 0) return NULL; @@ -115,7 +126,7 @@ find_location_expression (struct dwarf2_loclist_baton *baton, struct dwarf_expr_baton { struct frame_info *frame; - struct objfile *objfile; + struct dwarf2_per_cu_data *per_cu; }; /* Helper functions for dwarf2_evaluate_loc_desc. */ @@ -148,7 +159,7 @@ dwarf_expr_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len) describing the frame base. Return a pointer to it in START and its length in LENGTH. */ static void -dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length) +dwarf_expr_frame_base (void *baton, const gdb_byte **start, size_t * length) { /* FIXME: cagney/2003-03-26: This code should be using get_frame_base_address(), and then implement a dwarf2 specific @@ -166,20 +177,28 @@ dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length) something has gone wrong. */ gdb_assert (framefunc != NULL); + dwarf_expr_frame_base_1 (framefunc, + get_frame_address_in_block (debaton->frame), + start, length); +} + +static void +dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc, + const gdb_byte **start, size_t *length) +{ if (SYMBOL_LOCATION_BATON (framefunc) == NULL) *start = NULL; else if (SYMBOL_COMPUTED_OPS (framefunc) == &dwarf2_loclist_funcs) { struct dwarf2_loclist_baton *symbaton; - struct frame_info *frame = debaton->frame; symbaton = SYMBOL_LOCATION_BATON (framefunc); - *start = find_location_expression (symbaton, length, - get_frame_address_in_block (frame)); + *start = find_location_expression (symbaton, length, pc); } else { struct dwarf2_locexpr_baton *symbaton; + symbaton = SYMBOL_LOCATION_BATON (framefunc); if (symbaton != NULL) { @@ -202,6 +221,7 @@ static CORE_ADDR dwarf_expr_frame_cfa (void *baton) { struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton; + return dwarf2_frame_cfa (debaton->frame); } @@ -211,17 +231,48 @@ static CORE_ADDR dwarf_expr_tls_address (void *baton, CORE_ADDR offset) { struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton; + struct objfile *objfile = dwarf2_per_cu_objfile (debaton->per_cu); + + return target_translate_tls_address (objfile, offset); +} + +/* Call DWARF subroutine from DW_AT_location of DIE at DIE_OFFSET in current CU + (as is PER_CU). State of the CTX is not affected by the call and return. */ + +static void +per_cu_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset, + struct dwarf2_per_cu_data *per_cu) +{ + struct dwarf2_locexpr_baton block; + + block = dwarf2_fetch_die_location_block (die_offset, per_cu); + + /* DW_OP_call_ref is currently not supported. */ + gdb_assert (block.per_cu == per_cu); + + dwarf_expr_eval (ctx, block.data, block.size); +} + +/* Helper interface of per_cu_dwarf_call for dwarf2_evaluate_loc_desc. */ + +static void +dwarf_expr_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset) +{ + struct dwarf_expr_baton *debaton = ctx->baton; - return target_translate_tls_address (debaton->objfile, offset); + return per_cu_dwarf_call (ctx, die_offset, debaton->per_cu); } struct piece_closure { + /* Reference count. */ + int refc; + /* The number of pieces used to describe this variable. */ int n_pieces; - /* The architecture, used only for DWARF_VALUE_STACK. */ - struct gdbarch *arch; + /* The target address size, used only for DWARF_VALUE_STACK. */ + int addr_size; /* The pieces themselves. */ struct dwarf_expr_piece *pieces; @@ -232,12 +283,13 @@ struct piece_closure static struct piece_closure * allocate_piece_closure (int n_pieces, struct dwarf_expr_piece *pieces, - struct gdbarch *arch) + int addr_size) { struct piece_closure *c = XZALLOC (struct piece_closure); + c->refc = 1; c->n_pieces = n_pieces; - c->arch = arch; + c->addr_size = addr_size; c->pieces = XCALLOC (n_pieces, struct dwarf_expr_piece); memcpy (c->pieces, pieces, n_pieces * sizeof (struct dwarf_expr_piece)); @@ -245,68 +297,348 @@ allocate_piece_closure (int n_pieces, struct dwarf_expr_piece *pieces, return c; } +/* The lowest-level function to extract bits from a byte buffer. + SOURCE is the buffer. It is updated if we read to the end of a + byte. + SOURCE_OFFSET_BITS is the offset of the first bit to read. It is + updated to reflect the number of bits actually read. + NBITS is the number of bits we want to read. It is updated to + reflect the number of bits actually read. This function may read + fewer bits. + BITS_BIG_ENDIAN is taken directly from gdbarch. + This function returns the extracted bits. */ + +static unsigned int +extract_bits_primitive (const gdb_byte **source, + unsigned int *source_offset_bits, + int *nbits, int bits_big_endian) +{ + unsigned int avail, mask, datum; + + gdb_assert (*source_offset_bits < 8); + + avail = 8 - *source_offset_bits; + if (avail > *nbits) + avail = *nbits; + + mask = (1 << avail) - 1; + datum = **source; + if (bits_big_endian) + datum >>= 8 - (*source_offset_bits + *nbits); + else + datum >>= *source_offset_bits; + datum &= mask; + + *nbits -= avail; + *source_offset_bits += avail; + if (*source_offset_bits >= 8) + { + *source_offset_bits -= 8; + ++*source; + } + + return datum; +} + +/* Extract some bits from a source buffer and move forward in the + buffer. + + SOURCE is the source buffer. It is updated as bytes are read. + SOURCE_OFFSET_BITS is the offset into SOURCE. It is updated as + bits are read. + NBITS is the number of bits to read. + BITS_BIG_ENDIAN is taken directly from gdbarch. + + This function returns the bits that were read. */ + +static unsigned int +extract_bits (const gdb_byte **source, unsigned int *source_offset_bits, + int nbits, int bits_big_endian) +{ + unsigned int datum; + + gdb_assert (nbits > 0 && nbits <= 8); + + datum = extract_bits_primitive (source, source_offset_bits, &nbits, + bits_big_endian); + if (nbits > 0) + { + unsigned int more; + + more = extract_bits_primitive (source, source_offset_bits, &nbits, + bits_big_endian); + if (bits_big_endian) + datum <<= nbits; + else + more <<= nbits; + datum |= more; + } + + return datum; +} + +/* Write some bits into a buffer and move forward in the buffer. + + DATUM is the bits to write. The low-order bits of DATUM are used. + DEST is the destination buffer. It is updated as bytes are + written. + DEST_OFFSET_BITS is the bit offset in DEST at which writing is + done. + NBITS is the number of valid bits in DATUM. + BITS_BIG_ENDIAN is taken directly from gdbarch. */ + +static void +insert_bits (unsigned int datum, + gdb_byte *dest, unsigned int dest_offset_bits, + int nbits, int bits_big_endian) +{ + unsigned int mask; + + gdb_assert (dest_offset_bits >= 0 && dest_offset_bits + nbits <= 8); + + mask = (1 << nbits) - 1; + if (bits_big_endian) + { + datum <<= 8 - (dest_offset_bits + nbits); + mask <<= 8 - (dest_offset_bits + nbits); + } + else + { + datum <<= dest_offset_bits; + mask <<= dest_offset_bits; + } + + gdb_assert ((datum & ~mask) == 0); + + *dest = (*dest & ~mask) | datum; +} + +/* Copy bits from a source to a destination. + + DEST is where the bits should be written. + DEST_OFFSET_BITS is the bit offset into DEST. + SOURCE is the source of bits. + SOURCE_OFFSET_BITS is the bit offset into SOURCE. + BIT_COUNT is the number of bits to copy. + BITS_BIG_ENDIAN is taken directly from gdbarch. */ + +static void +copy_bitwise (gdb_byte *dest, unsigned int dest_offset_bits, + const gdb_byte *source, unsigned int source_offset_bits, + unsigned int bit_count, + int bits_big_endian) +{ + unsigned int dest_avail; + int datum; + + /* Reduce everything to byte-size pieces. */ + dest += dest_offset_bits / 8; + dest_offset_bits %= 8; + source += source_offset_bits / 8; + source_offset_bits %= 8; + + dest_avail = 8 - dest_offset_bits % 8; + + /* See if we can fill the first destination byte. */ + if (dest_avail < bit_count) + { + datum = extract_bits (&source, &source_offset_bits, dest_avail, + bits_big_endian); + insert_bits (datum, dest, dest_offset_bits, dest_avail, bits_big_endian); + ++dest; + dest_offset_bits = 0; + bit_count -= dest_avail; + } + + /* Now, either DEST_OFFSET_BITS is byte-aligned, or we have fewer + than 8 bits remaining. */ + gdb_assert (dest_offset_bits % 8 == 0 || bit_count < 8); + for (; bit_count >= 8; bit_count -= 8) + { + datum = extract_bits (&source, &source_offset_bits, 8, bits_big_endian); + *dest++ = (gdb_byte) datum; + } + + /* Finally, we may have a few leftover bits. */ + gdb_assert (bit_count <= 8 - dest_offset_bits % 8); + if (bit_count > 0) + { + datum = extract_bits (&source, &source_offset_bits, bit_count, + bits_big_endian); + insert_bits (datum, dest, dest_offset_bits, bit_count, bits_big_endian); + } +} + static void read_pieced_value (struct value *v) { int i; long offset = 0; + ULONGEST bits_to_skip; gdb_byte *contents; struct piece_closure *c = (struct piece_closure *) value_computed_closure (v); struct frame_info *frame = frame_find_by_id (VALUE_FRAME_ID (v)); + size_t type_len; + size_t buffer_size = 0; + char *buffer = NULL; + struct cleanup *cleanup; + int bits_big_endian + = gdbarch_bits_big_endian (get_type_arch (value_type (v))); + + if (value_type (v) != value_enclosing_type (v)) + internal_error (__FILE__, __LINE__, + _("Should not be able to create a lazy value with " + "an enclosing type")); + + cleanup = make_cleanup (free_current_contents, &buffer); contents = value_contents_raw (v); - for (i = 0; i < c->n_pieces; i++) + bits_to_skip = 8 * value_offset (v); + if (value_bitsize (v)) + { + bits_to_skip += value_bitpos (v); + type_len = value_bitsize (v); + } + else + type_len = 8 * TYPE_LENGTH (value_type (v)); + + for (i = 0; i < c->n_pieces && offset < type_len; i++) { struct dwarf_expr_piece *p = &c->pieces[i]; + size_t this_size, this_size_bits; + long dest_offset_bits, source_offset_bits, source_offset; + const gdb_byte *intermediate_buffer; + + /* Compute size, source, and destination offsets for copying, in + bits. */ + this_size_bits = p->size; + if (bits_to_skip > 0 && bits_to_skip >= this_size_bits) + { + bits_to_skip -= this_size_bits; + continue; + } + if (this_size_bits > type_len - offset) + this_size_bits = type_len - offset; + if (bits_to_skip > 0) + { + dest_offset_bits = 0; + source_offset_bits = bits_to_skip; + this_size_bits -= bits_to_skip; + bits_to_skip = 0; + } + else + { + dest_offset_bits = offset; + source_offset_bits = 0; + } + + this_size = (this_size_bits + source_offset_bits % 8 + 7) / 8; + source_offset = source_offset_bits / 8; + if (buffer_size < this_size) + { + buffer_size = this_size; + buffer = xrealloc (buffer, buffer_size); + } + intermediate_buffer = buffer; + + /* Copy from the source to DEST_BUFFER. */ switch (p->location) { case DWARF_VALUE_REGISTER: { struct gdbarch *arch = get_frame_arch (frame); - bfd_byte regval[MAX_REGISTER_SIZE]; - int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (arch, - p->v.expr.value); - get_frame_register (frame, gdb_regnum, regval); - memcpy (contents + offset, regval, p->size); + int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (arch, p->v.value); + int reg_offset = source_offset; + + if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG + && this_size < register_size (arch, gdb_regnum)) + { + /* Big-endian, and we want less than full size. */ + reg_offset = register_size (arch, gdb_regnum) - this_size; + /* We want the lower-order THIS_SIZE_BITS of the bytes + we extract from the register. */ + source_offset_bits += 8 * this_size - this_size_bits; + } + + if (gdb_regnum != -1) + { + get_frame_register_bytes (frame, gdb_regnum, reg_offset, + this_size, buffer); + } + else + { + error (_("Unable to access DWARF register number %s"), + paddress (arch, p->v.value)); + } } break; case DWARF_VALUE_MEMORY: - if (p->v.expr.in_stack_memory) - read_stack (p->v.expr.value, contents + offset, p->size); + if (p->v.mem.in_stack_memory) + read_stack (p->v.mem.addr + source_offset, buffer, this_size); else - read_memory (p->v.expr.value, contents + offset, p->size); + read_memory (p->v.mem.addr + source_offset, buffer, this_size); break; case DWARF_VALUE_STACK: { - gdb_byte bytes[sizeof (ULONGEST)]; - size_t n; - int addr_size = gdbarch_addr_bit (c->arch) / 8; - store_unsigned_integer (bytes, addr_size, - gdbarch_byte_order (c->arch), - p->v.expr.value); - n = p->size; - if (n > addr_size) - n = addr_size; - memcpy (contents + offset, bytes, n); + struct gdbarch *gdbarch = get_type_arch (value_type (v)); + size_t n = this_size; + + if (n > c->addr_size - source_offset) + n = (c->addr_size >= source_offset + ? c->addr_size - source_offset + : 0); + if (n == 0) + { + /* Nothing. */ + } + else if (source_offset == 0) + store_unsigned_integer (buffer, n, + gdbarch_byte_order (gdbarch), + p->v.value); + else + { + gdb_byte bytes[sizeof (ULONGEST)]; + + store_unsigned_integer (bytes, n + source_offset, + gdbarch_byte_order (gdbarch), + p->v.value); + memcpy (buffer, bytes + source_offset, n); + } } break; case DWARF_VALUE_LITERAL: { - size_t n = p->size; - if (n > p->v.literal.length) - n = p->v.literal.length; - memcpy (contents + offset, p->v.literal.data, n); + size_t n = this_size; + + if (n > p->v.literal.length - source_offset) + n = (p->v.literal.length >= source_offset + ? p->v.literal.length - source_offset + : 0); + if (n != 0) + intermediate_buffer = p->v.literal.data + source_offset; } break; + case DWARF_VALUE_OPTIMIZED_OUT: + set_value_optimized_out (v, 1); + break; + default: internal_error (__FILE__, __LINE__, _("invalid location type")); } - offset += p->size; + + if (p->location != DWARF_VALUE_OPTIMIZED_OUT) + copy_bitwise (contents, dest_offset_bits, + intermediate_buffer, source_offset_bits % 8, + this_size_bits, bits_big_endian); + + offset += this_size_bits; } + + do_cleanups (cleanup); } static void @@ -314,9 +646,16 @@ write_pieced_value (struct value *to, struct value *from) { int i; long offset = 0; - gdb_byte *contents; + ULONGEST bits_to_skip; + const gdb_byte *contents; struct piece_closure *c = (struct piece_closure *) value_computed_closure (to); struct frame_info *frame = frame_find_by_id (VALUE_FRAME_ID (to)); + size_t type_len; + size_t buffer_size = 0; + char *buffer = NULL; + struct cleanup *cleanup; + int bits_big_endian + = gdbarch_bits_big_endian (get_type_arch (value_type (to))); if (frame == NULL) { @@ -324,36 +663,195 @@ write_pieced_value (struct value *to, struct value *from) return; } - contents = value_contents_raw (from); - for (i = 0; i < c->n_pieces; i++) + cleanup = make_cleanup (free_current_contents, &buffer); + + contents = value_contents (from); + bits_to_skip = 8 * value_offset (to); + if (value_bitsize (to)) + { + bits_to_skip += value_bitpos (to); + type_len = value_bitsize (to); + } + else + type_len = 8 * TYPE_LENGTH (value_type (to)); + + for (i = 0; i < c->n_pieces && offset < type_len; i++) { struct dwarf_expr_piece *p = &c->pieces[i]; + size_t this_size_bits, this_size; + long dest_offset_bits, source_offset_bits, dest_offset, source_offset; + int need_bitwise; + const gdb_byte *source_buffer; + + this_size_bits = p->size; + if (bits_to_skip > 0 && bits_to_skip >= this_size_bits) + { + bits_to_skip -= this_size_bits; + continue; + } + if (this_size_bits > type_len - offset) + this_size_bits = type_len - offset; + if (bits_to_skip > 0) + { + dest_offset_bits = bits_to_skip; + source_offset_bits = 0; + this_size_bits -= bits_to_skip; + bits_to_skip = 0; + } + else + { + dest_offset_bits = 0; + source_offset_bits = offset; + } + + this_size = (this_size_bits + source_offset_bits % 8 + 7) / 8; + source_offset = source_offset_bits / 8; + dest_offset = dest_offset_bits / 8; + if (dest_offset_bits % 8 == 0 && source_offset_bits % 8 == 0) + { + source_buffer = contents + source_offset; + need_bitwise = 0; + } + else + { + if (buffer_size < this_size) + { + buffer_size = this_size; + buffer = xrealloc (buffer, buffer_size); + } + source_buffer = buffer; + need_bitwise = 1; + } + switch (p->location) { case DWARF_VALUE_REGISTER: { struct gdbarch *arch = get_frame_arch (frame); - int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (arch, p->v.expr.value); - put_frame_register (frame, gdb_regnum, contents + offset); + int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (arch, p->v.value); + int reg_offset = dest_offset; + + if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG + && this_size <= register_size (arch, gdb_regnum)) + /* Big-endian, and we want less than full size. */ + reg_offset = register_size (arch, gdb_regnum) - this_size; + + if (gdb_regnum != -1) + { + if (need_bitwise) + { + get_frame_register_bytes (frame, gdb_regnum, reg_offset, + this_size, buffer); + copy_bitwise (buffer, dest_offset_bits, + contents, source_offset_bits, + this_size_bits, + bits_big_endian); + } + + put_frame_register_bytes (frame, gdb_regnum, reg_offset, + this_size, source_buffer); + } + else + { + error (_("Unable to write to DWARF register number %s"), + paddress (arch, p->v.value)); + } } break; case DWARF_VALUE_MEMORY: - write_memory (p->v.expr.value, contents + offset, p->size); + if (need_bitwise) + { + /* Only the first and last bytes can possibly have any + bits reused. */ + read_memory (p->v.mem.addr + dest_offset, buffer, 1); + read_memory (p->v.mem.addr + dest_offset + this_size - 1, + buffer + this_size - 1, 1); + copy_bitwise (buffer, dest_offset_bits, + contents, source_offset_bits, + this_size_bits, + bits_big_endian); + } + + write_memory (p->v.mem.addr + dest_offset, + source_buffer, this_size); break; default: set_value_optimized_out (to, 1); - return; + break; + } + offset += this_size_bits; + } + + do_cleanups (cleanup); +} + +static int +check_pieced_value_bits (const struct value *value, int bit_offset, + int bit_length, int validity) +{ + struct piece_closure *c + = (struct piece_closure *) value_computed_closure (value); + int i; + + bit_offset += 8 * value_offset (value); + if (value_bitsize (value)) + bit_offset += value_bitpos (value); + + for (i = 0; i < c->n_pieces && bit_length > 0; i++) + { + struct dwarf_expr_piece *p = &c->pieces[i]; + size_t this_size_bits = p->size; + + if (bit_offset > 0) + { + if (bit_offset >= this_size_bits) + { + bit_offset -= this_size_bits; + continue; + } + + bit_length -= this_size_bits - bit_offset; + bit_offset = 0; + } + else + bit_length -= this_size_bits; + + if (p->location == DWARF_VALUE_OPTIMIZED_OUT) + { + if (validity) + return 0; + } + else + { + if (!validity) + return 1; } - offset += p->size; } + + return validity; +} + +static int +check_pieced_value_validity (const struct value *value, int bit_offset, + int bit_length) +{ + return check_pieced_value_bits (value, bit_offset, bit_length, 1); +} + +static int +check_pieced_value_invalid (const struct value *value) +{ + return check_pieced_value_bits (value, 0, + 8 * TYPE_LENGTH (value_type (value)), 0); } static void * -copy_pieced_value_closure (struct value *v) +copy_pieced_value_closure (const struct value *v) { struct piece_closure *c = (struct piece_closure *) value_computed_closure (v); - return allocate_piece_closure (c->n_pieces, c->pieces, c->arch); + ++c->refc; + return c; } static void @@ -361,53 +859,63 @@ free_pieced_value_closure (struct value *v) { struct piece_closure *c = (struct piece_closure *) value_computed_closure (v); - xfree (c->pieces); - xfree (c); + --c->refc; + if (c->refc == 0) + { + xfree (c->pieces); + xfree (c); + } } /* Functions for accessing a variable described by DW_OP_piece. */ static struct lval_funcs pieced_value_funcs = { read_pieced_value, write_pieced_value, + check_pieced_value_validity, + check_pieced_value_invalid, copy_pieced_value_closure, free_pieced_value_closure }; /* Evaluate a location description, starting at DATA and with length - SIZE, to find the current location of variable VAR in the context + SIZE, to find the current location of variable of TYPE in the context of FRAME. */ + static struct value * -dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, - gdb_byte *data, unsigned short size, +dwarf2_evaluate_loc_desc (struct type *type, struct frame_info *frame, + const gdb_byte *data, unsigned short size, struct dwarf2_per_cu_data *per_cu) { struct value *retval; struct dwarf_expr_baton baton; struct dwarf_expr_context *ctx; struct cleanup *old_chain; + struct objfile *objfile = dwarf2_per_cu_objfile (per_cu); if (size == 0) { - retval = allocate_value (SYMBOL_TYPE (var)); + retval = allocate_value (type); VALUE_LVAL (retval) = not_lval; set_value_optimized_out (retval, 1); return retval; } baton.frame = frame; - baton.objfile = dwarf2_per_cu_objfile (per_cu); + baton.per_cu = per_cu; ctx = new_dwarf_expr_context (); old_chain = make_cleanup_free_dwarf_expr_context (ctx); - ctx->gdbarch = get_objfile_arch (baton.objfile); + ctx->gdbarch = get_objfile_arch (objfile); ctx->addr_size = dwarf2_per_cu_addr_size (per_cu); + ctx->offset = dwarf2_per_cu_text_offset (per_cu); ctx->baton = &baton; ctx->read_reg = dwarf_expr_read_reg; ctx->read_mem = dwarf_expr_read_mem; ctx->get_frame_base = dwarf_expr_frame_base; ctx->get_frame_cfa = dwarf_expr_frame_cfa; ctx->get_tls_address = dwarf_expr_tls_address; + ctx->dwarf_call = dwarf_expr_dwarf_call; dwarf_expr_eval (ctx, data, size); if (ctx->num_pieces > 0) @@ -415,10 +923,9 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, struct piece_closure *c; struct frame_id frame_id = get_frame_id (frame); - c = allocate_piece_closure (ctx->num_pieces, ctx->pieces, ctx->gdbarch); - retval = allocate_computed_value (SYMBOL_TYPE (var), - &pieced_value_funcs, - c); + c = allocate_piece_closure (ctx->num_pieces, ctx->pieces, + ctx->addr_size); + retval = allocate_computed_value (type, &pieced_value_funcs, c); VALUE_FRAME_ID (retval) = frame_id; } else @@ -428,18 +935,23 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, case DWARF_VALUE_REGISTER: { struct gdbarch *arch = get_frame_arch (frame); - CORE_ADDR dwarf_regnum = dwarf_expr_fetch (ctx, 0); + ULONGEST dwarf_regnum = dwarf_expr_fetch (ctx, 0); int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_regnum); - retval = value_from_register (SYMBOL_TYPE (var), gdb_regnum, frame); + + if (gdb_regnum != -1) + retval = value_from_register (type, gdb_regnum, frame); + else + error (_("Unable to access DWARF register number %s"), + paddress (arch, dwarf_regnum)); } break; case DWARF_VALUE_MEMORY: { - CORE_ADDR address = dwarf_expr_fetch (ctx, 0); + CORE_ADDR address = dwarf_expr_fetch_address (ctx, 0); int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0); - retval = allocate_value (SYMBOL_TYPE (var)); + retval = allocate_value (type); VALUE_LVAL (retval) = lval_memory; set_value_lazy (retval, 1); if (in_stack_memory) @@ -450,19 +962,17 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, case DWARF_VALUE_STACK: { - gdb_byte bytes[sizeof (ULONGEST)]; - ULONGEST value = (ULONGEST) dwarf_expr_fetch (ctx, 0); + ULONGEST value = dwarf_expr_fetch (ctx, 0); bfd_byte *contents; size_t n = ctx->addr_size; - store_unsigned_integer (bytes, ctx->addr_size, + retval = allocate_value (type); + contents = value_contents_raw (retval); + if (n > TYPE_LENGTH (type)) + n = TYPE_LENGTH (type); + store_unsigned_integer (contents, n, gdbarch_byte_order (ctx->gdbarch), value); - retval = allocate_value (SYMBOL_TYPE (var)); - contents = value_contents_raw (retval); - if (n > TYPE_LENGTH (SYMBOL_TYPE (var))) - n = TYPE_LENGTH (SYMBOL_TYPE (var)); - memcpy (contents, bytes, n); } break; @@ -471,14 +981,17 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, bfd_byte *contents; size_t n = ctx->len; - retval = allocate_value (SYMBOL_TYPE (var)); + retval = allocate_value (type); contents = value_contents_raw (retval); - if (n > TYPE_LENGTH (SYMBOL_TYPE (var))) - n = TYPE_LENGTH (SYMBOL_TYPE (var)); + if (n > TYPE_LENGTH (type)) + n = TYPE_LENGTH (type); memcpy (contents, ctx->data, n); } break; + /* DWARF_VALUE_OPTIMIZED_OUT can't occur in this context -- + it can only be encountered when making a piece. */ + case DWARF_VALUE_OPTIMIZED_OUT: default: internal_error (__FILE__, __LINE__, _("invalid location type")); } @@ -496,6 +1009,7 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, struct needs_frame_baton { int needs_frame; + struct dwarf2_per_cu_data *per_cu; }; /* Reads from registers do require a frame. */ @@ -503,6 +1017,7 @@ static CORE_ADDR needs_frame_read_reg (void *baton, int regnum) { struct needs_frame_baton *nf_baton = baton; + nf_baton->needs_frame = 1; return 1; } @@ -516,7 +1031,7 @@ needs_frame_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len) /* Frame-relative accesses do require a frame. */ static void -needs_frame_frame_base (void *baton, gdb_byte **start, size_t * length) +needs_frame_frame_base (void *baton, const gdb_byte **start, size_t * length) { static gdb_byte lit0 = DW_OP_lit0; struct needs_frame_baton *nf_baton = baton; @@ -533,6 +1048,7 @@ static CORE_ADDR needs_frame_frame_cfa (void *baton) { struct needs_frame_baton *nf_baton = baton; + nf_baton->needs_frame = 1; return 1; } @@ -542,35 +1058,50 @@ static CORE_ADDR needs_frame_tls_address (void *baton, CORE_ADDR offset) { struct needs_frame_baton *nf_baton = baton; + nf_baton->needs_frame = 1; return 1; } +/* Helper interface of per_cu_dwarf_call for dwarf2_loc_desc_needs_frame. */ + +static void +needs_frame_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset) +{ + struct needs_frame_baton *nf_baton = ctx->baton; + + return per_cu_dwarf_call (ctx, die_offset, nf_baton->per_cu); +} + /* Return non-zero iff the location expression at DATA (length SIZE) requires a frame to evaluate. */ static int -dwarf2_loc_desc_needs_frame (gdb_byte *data, unsigned short size, +dwarf2_loc_desc_needs_frame (const gdb_byte *data, unsigned short size, struct dwarf2_per_cu_data *per_cu) { struct needs_frame_baton baton; struct dwarf_expr_context *ctx; int in_reg; struct cleanup *old_chain; + struct objfile *objfile = dwarf2_per_cu_objfile (per_cu); baton.needs_frame = 0; + baton.per_cu = per_cu; ctx = new_dwarf_expr_context (); old_chain = make_cleanup_free_dwarf_expr_context (ctx); - ctx->gdbarch = get_objfile_arch (dwarf2_per_cu_objfile (per_cu)); + ctx->gdbarch = get_objfile_arch (objfile); ctx->addr_size = dwarf2_per_cu_addr_size (per_cu); + ctx->offset = dwarf2_per_cu_text_offset (per_cu); ctx->baton = &baton; ctx->read_reg = needs_frame_read_reg; ctx->read_mem = needs_frame_read_mem; ctx->get_frame_base = needs_frame_frame_base; ctx->get_frame_cfa = needs_frame_frame_cfa; ctx->get_tls_address = needs_frame_tls_address; + ctx->dwarf_call = needs_frame_dwarf_call; dwarf_expr_eval (ctx, data, size); @@ -592,193 +1123,1341 @@ dwarf2_loc_desc_needs_frame (gdb_byte *data, unsigned short size, return baton.needs_frame || in_reg; } +/* A helper function that throws an unimplemented error mentioning a + given DWARF operator. */ + static void -dwarf2_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch, - struct agent_expr *ax, struct axs_value *value, - gdb_byte *data, int size) +unimplemented (unsigned int op) { - if (size == 0) - error (_("Symbol \"%s\" has been optimized out."), - SYMBOL_PRINT_NAME (symbol)); - - if (size == 1 - && data[0] >= DW_OP_reg0 - && data[0] <= DW_OP_reg31) - { - value->kind = axs_lvalue_register; - value->u.reg = data[0] - DW_OP_reg0; - } - else if (data[0] == DW_OP_regx) - { - ULONGEST reg; - read_uleb128 (data + 1, data + size, ®); - value->kind = axs_lvalue_register; - value->u.reg = reg; - } - else if (data[0] == DW_OP_fbreg) - { - /* And this is worse than just minimal; we should honor the frame base - as above. */ - int frame_reg; - LONGEST frame_offset; - gdb_byte *buf_end; - - buf_end = read_sleb128 (data + 1, data + size, &frame_offset); - if (buf_end != data + size) - error (_("Unexpected opcode after DW_OP_fbreg for symbol \"%s\"."), - SYMBOL_PRINT_NAME (symbol)); - - gdbarch_virtual_frame_pointer (gdbarch, - ax->scope, &frame_reg, &frame_offset); - ax_reg (ax, frame_reg); - ax_const_l (ax, frame_offset); - ax_simple (ax, aop_add); - - value->kind = axs_lvalue_memory; - } - else if (data[0] >= DW_OP_breg0 - && data[0] <= DW_OP_breg31) - { - unsigned int reg; - LONGEST offset; - gdb_byte *buf_end; - - reg = data[0] - DW_OP_breg0; - buf_end = read_sleb128 (data + 1, data + size, &offset); - if (buf_end != data + size) - error (_("Unexpected opcode after DW_OP_breg%u for symbol \"%s\"."), - reg, SYMBOL_PRINT_NAME (symbol)); - - ax_reg (ax, reg); - ax_const_l (ax, offset); - ax_simple (ax, aop_add); - - value->kind = axs_lvalue_memory; - } - else - error (_("Unsupported DWARF opcode 0x%x in the location of \"%s\"."), - data[0], SYMBOL_PRINT_NAME (symbol)); + error (_("DWARF operator %s cannot be translated to an agent expression"), + dwarf_stack_op_name (op, 1)); } - -/* Return the value of SYMBOL in FRAME using the DWARF-2 expression - evaluator to calculate the location. */ -static struct value * -locexpr_read_variable (struct symbol *symbol, struct frame_info *frame) -{ - struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); - struct value *val; - val = dwarf2_evaluate_loc_desc (symbol, frame, dlbaton->data, dlbaton->size, - dlbaton->per_cu); - return val; -} +/* A helper function to convert a DWARF register to an arch register. + ARCH is the architecture. + DWARF_REG is the register. + This will throw an exception if the DWARF register cannot be + translated to an architecture register. */ -/* Return non-zero iff we need a frame to evaluate SYMBOL. */ static int -locexpr_read_needs_frame (struct symbol *symbol) +translate_register (struct gdbarch *arch, int dwarf_reg) { - struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); - return dwarf2_loc_desc_needs_frame (dlbaton->data, dlbaton->size, - dlbaton->per_cu); + int reg = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_reg); + if (reg == -1) + error (_("Unable to access DWARF register number %d"), dwarf_reg); + return reg; } -/* Print a natural-language description of SYMBOL to STREAM. */ -static int -locexpr_describe_location (struct symbol *symbol, struct ui_file *stream) -{ - /* FIXME: be more extensive. */ - struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); - int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu); +/* A helper function that emits an access to memory. ARCH is the + target architecture. EXPR is the expression which we are building. + NBITS is the number of bits we want to read. This emits the + opcodes needed to read the memory and then extract the desired + bits. */ - if (dlbaton->size == 1 - && dlbaton->data[0] >= DW_OP_reg0 - && dlbaton->data[0] <= DW_OP_reg31) - { - struct objfile *objfile = dwarf2_per_cu_objfile (dlbaton->per_cu); - struct gdbarch *gdbarch = get_objfile_arch (objfile); - int regno = gdbarch_dwarf2_reg_to_regnum (gdbarch, - dlbaton->data[0] - DW_OP_reg0); - fprintf_filtered (stream, - "a variable in register %s", - gdbarch_register_name (gdbarch, regno)); - return 1; - } +static void +access_memory (struct gdbarch *arch, struct agent_expr *expr, ULONGEST nbits) +{ + ULONGEST nbytes = (nbits + 7) / 8; - /* The location expression for a TLS variable looks like this (on a - 64-bit LE machine): + gdb_assert (nbits > 0 && nbits <= sizeof (LONGEST)); - DW_AT_location : 10 byte block: 3 4 0 0 0 0 0 0 0 e0 - (DW_OP_addr: 4; DW_OP_GNU_push_tls_address) - - 0x3 is the encoding for DW_OP_addr, which has an operand as long - as the size of an address on the target machine (here is 8 - bytes). 0xe0 is the encoding for DW_OP_GNU_push_tls_address. - The operand represents the offset at which the variable is within - the thread local storage. */ - - if (dlbaton->size > 1 - && dlbaton->data[dlbaton->size - 1] == DW_OP_GNU_push_tls_address) - if (dlbaton->data[0] == DW_OP_addr) - { - struct objfile *objfile = dwarf2_per_cu_objfile (dlbaton->per_cu); - struct gdbarch *gdbarch = get_objfile_arch (objfile); - CORE_ADDR offset = dwarf2_read_address (gdbarch, - &dlbaton->data[1], - &dlbaton->data[dlbaton->size - 1], - addr_size); - fprintf_filtered (stream, - "a thread-local variable at offset %s in the " - "thread-local storage for `%s'", - paddress (gdbarch, offset), objfile->name); - return 1; - } - + if (trace_kludge) + ax_trace_quick (expr, nbytes); - fprintf_filtered (stream, - "a variable with complex or multiple locations (DWARF2)"); - return 1; -} + if (nbits <= 8) + ax_simple (expr, aop_ref8); + else if (nbits <= 16) + ax_simple (expr, aop_ref16); + else if (nbits <= 32) + ax_simple (expr, aop_ref32); + else + ax_simple (expr, aop_ref64); + /* If we read exactly the number of bytes we wanted, we're done. */ + if (8 * nbytes == nbits) + return; -/* Describe the location of SYMBOL as an agent value in VALUE, generating - any necessary bytecode in AX. + if (gdbarch_bits_big_endian (arch)) + { + /* On a bits-big-endian machine, we want the high-order + NBITS. */ + ax_const_l (expr, 8 * nbytes - nbits); + ax_simple (expr, aop_rsh_unsigned); + } + else + { + /* On a bits-little-endian box, we want the low-order NBITS. */ + ax_zero_ext (expr, nbits); + } +} - NOTE drow/2003-02-26: This function is extremely minimal, because - doing it correctly is extremely complicated and there is no - publicly available stub with tracepoint support for me to test - against. When there is one this function should be revisited. */ +/* Compile a DWARF location expression to an agent expression. + + EXPR is the agent expression we are building. + LOC is the agent value we modify. + ARCH is the architecture. + ADDR_SIZE is the size of addresses, in bytes. + OP_PTR is the start of the location expression. + OP_END is one past the last byte of the location expression. + + This will throw an exception for various kinds of errors -- for + example, if the expression cannot be compiled, or if the expression + is invalid. */ static void -locexpr_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch, - struct agent_expr *ax, struct axs_value *value) +compile_dwarf_to_ax (struct agent_expr *expr, struct axs_value *loc, + struct gdbarch *arch, unsigned int addr_size, + const gdb_byte *op_ptr, const gdb_byte *op_end, + struct dwarf2_per_cu_data *per_cu) { - struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); + struct cleanup *cleanups; + int i, *offsets; + VEC(int) *dw_labels = NULL, *patches = NULL; + const gdb_byte * const base = op_ptr; + const gdb_byte *previous_piece = op_ptr; + enum bfd_endian byte_order = gdbarch_byte_order (arch); + ULONGEST bits_collected = 0; + unsigned int addr_size_bits = 8 * addr_size; + int bits_big_endian = gdbarch_bits_big_endian (arch); - dwarf2_tracepoint_var_ref (symbol, gdbarch, ax, value, - dlbaton->data, dlbaton->size); -} + offsets = xmalloc ((op_end - op_ptr) * sizeof (int)); + cleanups = make_cleanup (xfree, offsets); -/* The set of location functions used with the DWARF-2 expression - evaluator. */ -const struct symbol_computed_ops dwarf2_locexpr_funcs = { - locexpr_read_variable, - locexpr_read_needs_frame, - locexpr_describe_location, - locexpr_tracepoint_var_ref -}; + for (i = 0; i < op_end - op_ptr; ++i) + offsets[i] = -1; + make_cleanup (VEC_cleanup (int), &dw_labels); + make_cleanup (VEC_cleanup (int), &patches); -/* Wrapper functions for location lists. These generally find - the appropriate location expression and call something above. */ + /* By default we are making an address. */ + loc->kind = axs_lvalue_memory; -/* Return the value of SYMBOL in FRAME using the DWARF-2 expression - evaluator to calculate the location. */ -static struct value * + while (op_ptr < op_end) + { + enum dwarf_location_atom op = *op_ptr; + ULONGEST uoffset, reg; + LONGEST offset; + int i; + + offsets[op_ptr - base] = expr->len; + ++op_ptr; + + /* Our basic approach to code generation is to map DWARF + operations directly to AX operations. However, there are + some differences. + + First, DWARF works on address-sized units, but AX always uses + LONGEST. For most operations we simply ignore this + difference; instead we generate sign extensions as needed + before division and comparison operations. It would be nice + to omit the sign extensions, but there is no way to determine + the size of the target's LONGEST. (This code uses the size + of the host LONGEST in some cases -- that is a bug but it is + difficult to fix.) + + Second, some DWARF operations cannot be translated to AX. + For these we simply fail. See + http://sourceware.org/bugzilla/show_bug.cgi?id=11662. */ + switch (op) + { + case DW_OP_lit0: + case DW_OP_lit1: + case DW_OP_lit2: + case DW_OP_lit3: + case DW_OP_lit4: + case DW_OP_lit5: + case DW_OP_lit6: + case DW_OP_lit7: + case DW_OP_lit8: + case DW_OP_lit9: + case DW_OP_lit10: + case DW_OP_lit11: + case DW_OP_lit12: + case DW_OP_lit13: + case DW_OP_lit14: + case DW_OP_lit15: + case DW_OP_lit16: + case DW_OP_lit17: + case DW_OP_lit18: + case DW_OP_lit19: + case DW_OP_lit20: + case DW_OP_lit21: + case DW_OP_lit22: + case DW_OP_lit23: + case DW_OP_lit24: + case DW_OP_lit25: + case DW_OP_lit26: + case DW_OP_lit27: + case DW_OP_lit28: + case DW_OP_lit29: + case DW_OP_lit30: + case DW_OP_lit31: + ax_const_l (expr, op - DW_OP_lit0); + break; + + case DW_OP_addr: + uoffset = extract_unsigned_integer (op_ptr, addr_size, byte_order); + op_ptr += addr_size; + /* Some versions of GCC emit DW_OP_addr before + DW_OP_GNU_push_tls_address. In this case the value is an + index, not an address. We don't support things like + branching between the address and the TLS op. */ + if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address) + uoffset += dwarf2_per_cu_text_offset (per_cu); + ax_const_l (expr, uoffset); + break; + + case DW_OP_const1u: + ax_const_l (expr, extract_unsigned_integer (op_ptr, 1, byte_order)); + op_ptr += 1; + break; + case DW_OP_const1s: + ax_const_l (expr, extract_signed_integer (op_ptr, 1, byte_order)); + op_ptr += 1; + break; + case DW_OP_const2u: + ax_const_l (expr, extract_unsigned_integer (op_ptr, 2, byte_order)); + op_ptr += 2; + break; + case DW_OP_const2s: + ax_const_l (expr, extract_signed_integer (op_ptr, 2, byte_order)); + op_ptr += 2; + break; + case DW_OP_const4u: + ax_const_l (expr, extract_unsigned_integer (op_ptr, 4, byte_order)); + op_ptr += 4; + break; + case DW_OP_const4s: + ax_const_l (expr, extract_signed_integer (op_ptr, 4, byte_order)); + op_ptr += 4; + break; + case DW_OP_const8u: + ax_const_l (expr, extract_unsigned_integer (op_ptr, 8, byte_order)); + op_ptr += 8; + break; + case DW_OP_const8s: + ax_const_l (expr, extract_signed_integer (op_ptr, 8, byte_order)); + op_ptr += 8; + break; + case DW_OP_constu: + op_ptr = read_uleb128 (op_ptr, op_end, &uoffset); + ax_const_l (expr, uoffset); + break; + case DW_OP_consts: + op_ptr = read_sleb128 (op_ptr, op_end, &offset); + ax_const_l (expr, offset); + break; + + case DW_OP_reg0: + case DW_OP_reg1: + case DW_OP_reg2: + case DW_OP_reg3: + case DW_OP_reg4: + case DW_OP_reg5: + case DW_OP_reg6: + case DW_OP_reg7: + case DW_OP_reg8: + case DW_OP_reg9: + case DW_OP_reg10: + case DW_OP_reg11: + case DW_OP_reg12: + case DW_OP_reg13: + case DW_OP_reg14: + case DW_OP_reg15: + case DW_OP_reg16: + case DW_OP_reg17: + case DW_OP_reg18: + case DW_OP_reg19: + case DW_OP_reg20: + case DW_OP_reg21: + case DW_OP_reg22: + case DW_OP_reg23: + case DW_OP_reg24: + case DW_OP_reg25: + case DW_OP_reg26: + case DW_OP_reg27: + case DW_OP_reg28: + case DW_OP_reg29: + case DW_OP_reg30: + case DW_OP_reg31: + dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx"); + loc->u.reg = translate_register (arch, op - DW_OP_reg0); + loc->kind = axs_lvalue_register; + break; + + case DW_OP_regx: + op_ptr = read_uleb128 (op_ptr, op_end, ®); + dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx"); + loc->u.reg = translate_register (arch, reg); + loc->kind = axs_lvalue_register; + break; + + case DW_OP_implicit_value: + { + ULONGEST len; + + op_ptr = read_uleb128 (op_ptr, op_end, &len); + if (op_ptr + len > op_end) + error (_("DW_OP_implicit_value: too few bytes available.")); + if (len > sizeof (ULONGEST)) + error (_("Cannot translate DW_OP_implicit_value of %d bytes"), + (int) len); + + ax_const_l (expr, extract_unsigned_integer (op_ptr, len, + byte_order)); + op_ptr += len; + dwarf_expr_require_composition (op_ptr, op_end, + "DW_OP_implicit_value"); + + loc->kind = axs_rvalue; + } + break; + + case DW_OP_stack_value: + dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value"); + loc->kind = axs_rvalue; + break; + + case DW_OP_breg0: + case DW_OP_breg1: + case DW_OP_breg2: + case DW_OP_breg3: + case DW_OP_breg4: + case DW_OP_breg5: + case DW_OP_breg6: + case DW_OP_breg7: + case DW_OP_breg8: + case DW_OP_breg9: + case DW_OP_breg10: + case DW_OP_breg11: + case DW_OP_breg12: + case DW_OP_breg13: + case DW_OP_breg14: + case DW_OP_breg15: + case DW_OP_breg16: + case DW_OP_breg17: + case DW_OP_breg18: + case DW_OP_breg19: + case DW_OP_breg20: + case DW_OP_breg21: + case DW_OP_breg22: + case DW_OP_breg23: + case DW_OP_breg24: + case DW_OP_breg25: + case DW_OP_breg26: + case DW_OP_breg27: + case DW_OP_breg28: + case DW_OP_breg29: + case DW_OP_breg30: + case DW_OP_breg31: + op_ptr = read_sleb128 (op_ptr, op_end, &offset); + i = translate_register (arch, op - DW_OP_breg0); + ax_reg (expr, i); + if (offset != 0) + { + ax_const_l (expr, offset); + ax_simple (expr, aop_add); + } + break; + case DW_OP_bregx: + { + op_ptr = read_uleb128 (op_ptr, op_end, ®); + op_ptr = read_sleb128 (op_ptr, op_end, &offset); + i = translate_register (arch, reg); + ax_reg (expr, i); + if (offset != 0) + { + ax_const_l (expr, offset); + ax_simple (expr, aop_add); + } + } + break; + case DW_OP_fbreg: + { + const gdb_byte *datastart; + size_t datalen; + unsigned int before_stack_len; + struct block *b; + struct symbol *framefunc; + LONGEST base_offset = 0; + + b = block_for_pc (expr->scope); + + if (!b) + error (_("No block found for address")); + + framefunc = block_linkage_function (b); + + if (!framefunc) + error (_("No function found for block")); + + dwarf_expr_frame_base_1 (framefunc, expr->scope, + &datastart, &datalen); + + op_ptr = read_sleb128 (op_ptr, op_end, &offset); + compile_dwarf_to_ax (expr, loc, arch, addr_size, datastart, + datastart + datalen, per_cu); + + if (offset != 0) + { + ax_const_l (expr, offset); + ax_simple (expr, aop_add); + } + + loc->kind = axs_lvalue_memory; + } + break; + + case DW_OP_dup: + ax_simple (expr, aop_dup); + break; + + case DW_OP_drop: + ax_simple (expr, aop_pop); + break; + + case DW_OP_pick: + offset = *op_ptr++; + unimplemented (op); + break; + + case DW_OP_swap: + ax_simple (expr, aop_swap); + break; + + case DW_OP_over: + /* We can't directly support DW_OP_over, but GCC emits it as + part of a sequence to implement signed modulus. As a + hack, we recognize this sequence. Note that if GCC ever + generates a branch to the middle of this sequence, then + we will die somehow. */ + if (op_end - op_ptr >= 4 + && op_ptr[0] == DW_OP_over + && op_ptr[1] == DW_OP_div + && op_ptr[2] == DW_OP_mul + && op_ptr[3] == DW_OP_minus) + { + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_simple (expr, aop_rem_signed); + op_ptr += 4; + } + else + unimplemented (op); + break; + + case DW_OP_rot: + unimplemented (op); + break; + + case DW_OP_deref: + case DW_OP_deref_size: + { + int size; + + if (op == DW_OP_deref_size) + size = *op_ptr++; + else + size = addr_size; + + switch (size) + { + case 8: + ax_simple (expr, aop_ref8); + break; + case 16: + ax_simple (expr, aop_ref16); + break; + case 32: + ax_simple (expr, aop_ref32); + break; + case 64: + ax_simple (expr, aop_ref64); + break; + default: + error (_("Unsupported size %d in %s"), + size, dwarf_stack_op_name (op, 1)); + } + } + break; + + case DW_OP_abs: + /* Sign extend the operand. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_dup); + ax_const_l (expr, 0); + ax_simple (expr, aop_less_signed); + ax_simple (expr, aop_log_not); + i = ax_goto (expr, aop_if_goto); + /* We have to emit 0 - X. */ + ax_const_l (expr, 0); + ax_simple (expr, aop_swap); + ax_simple (expr, aop_sub); + ax_label (expr, i, expr->len); + break; + + case DW_OP_neg: + /* No need to sign extend here. */ + ax_const_l (expr, 0); + ax_simple (expr, aop_swap); + ax_simple (expr, aop_sub); + break; + + case DW_OP_not: + /* Sign extend the operand. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_bit_not); + break; + + case DW_OP_plus_uconst: + op_ptr = read_uleb128 (op_ptr, op_end, ®); + /* It would be really weird to emit `DW_OP_plus_uconst 0', + but we micro-optimize anyhow. */ + if (reg != 0) + { + ax_const_l (expr, reg); + ax_simple (expr, aop_add); + } + break; + + case DW_OP_and: + ax_simple (expr, aop_bit_and); + break; + + case DW_OP_div: + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_simple (expr, aop_div_signed); + break; + + case DW_OP_minus: + ax_simple (expr, aop_sub); + break; + + case DW_OP_mod: + ax_simple (expr, aop_rem_unsigned); + break; + + case DW_OP_mul: + ax_simple (expr, aop_mul); + break; + + case DW_OP_or: + ax_simple (expr, aop_bit_or); + break; + + case DW_OP_plus: + ax_simple (expr, aop_add); + break; + + case DW_OP_shl: + ax_simple (expr, aop_lsh); + break; + + case DW_OP_shr: + ax_simple (expr, aop_rsh_unsigned); + break; + + case DW_OP_shra: + ax_simple (expr, aop_rsh_signed); + break; + + case DW_OP_xor: + ax_simple (expr, aop_bit_xor); + break; + + case DW_OP_le: + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + /* Note no swap here: A <= B is !(B < A). */ + ax_simple (expr, aop_less_signed); + ax_simple (expr, aop_log_not); + break; + + case DW_OP_ge: + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + /* A >= B is !(A < B). */ + ax_simple (expr, aop_less_signed); + ax_simple (expr, aop_log_not); + break; + + case DW_OP_eq: + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + /* No need for a second swap here. */ + ax_simple (expr, aop_equal); + break; + + case DW_OP_lt: + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_simple (expr, aop_less_signed); + break; + + case DW_OP_gt: + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + /* Note no swap here: A > B is B < A. */ + ax_simple (expr, aop_less_signed); + break; + + case DW_OP_ne: + /* Sign extend the operands. */ + ax_ext (expr, addr_size_bits); + ax_simple (expr, aop_swap); + ax_ext (expr, addr_size_bits); + /* No need for a swap here. */ + ax_simple (expr, aop_equal); + ax_simple (expr, aop_log_not); + break; + + case DW_OP_call_frame_cfa: + unimplemented (op); + break; + + case DW_OP_GNU_push_tls_address: + unimplemented (op); + break; + + case DW_OP_skip: + offset = extract_signed_integer (op_ptr, 2, byte_order); + op_ptr += 2; + i = ax_goto (expr, aop_goto); + VEC_safe_push (int, dw_labels, op_ptr + offset - base); + VEC_safe_push (int, patches, i); + break; + + case DW_OP_bra: + offset = extract_signed_integer (op_ptr, 2, byte_order); + op_ptr += 2; + /* Zero extend the operand. */ + ax_zero_ext (expr, addr_size_bits); + i = ax_goto (expr, aop_if_goto); + VEC_safe_push (int, dw_labels, op_ptr + offset - base); + VEC_safe_push (int, patches, i); + break; + + case DW_OP_nop: + break; + + case DW_OP_piece: + case DW_OP_bit_piece: + { + ULONGEST size, offset; + + if (op_ptr - 1 == previous_piece) + error (_("Cannot translate empty pieces to agent expressions")); + previous_piece = op_ptr - 1; + + op_ptr = read_uleb128 (op_ptr, op_end, &size); + if (op == DW_OP_piece) + { + size *= 8; + offset = 0; + } + else + op_ptr = read_uleb128 (op_ptr, op_end, &offset); + + if (bits_collected + size > 8 * sizeof (LONGEST)) + error (_("Expression pieces exceed word size")); + + /* Access the bits. */ + switch (loc->kind) + { + case axs_lvalue_register: + ax_reg (expr, loc->u.reg); + break; + + case axs_lvalue_memory: + /* Offset the pointer, if needed. */ + if (offset > 8) + { + ax_const_l (expr, offset / 8); + ax_simple (expr, aop_add); + offset %= 8; + } + access_memory (arch, expr, size); + break; + } + + /* For a bits-big-endian target, shift up what we already + have. For a bits-little-endian target, shift up the + new data. Note that there is a potential bug here if + the DWARF expression leaves multiple values on the + stack. */ + if (bits_collected > 0) + { + if (bits_big_endian) + { + ax_simple (expr, aop_swap); + ax_const_l (expr, size); + ax_simple (expr, aop_lsh); + /* We don't need a second swap here, because + aop_bit_or is symmetric. */ + } + else + { + ax_const_l (expr, size); + ax_simple (expr, aop_lsh); + } + ax_simple (expr, aop_bit_or); + } + + bits_collected += size; + loc->kind = axs_rvalue; + } + break; + + case DW_OP_GNU_uninit: + unimplemented (op); + + case DW_OP_call2: + case DW_OP_call4: + { + struct dwarf2_locexpr_baton block; + int size = (op == DW_OP_call2 ? 2 : 4); + + uoffset = extract_unsigned_integer (op_ptr, size, byte_order); + op_ptr += size; + + block = dwarf2_fetch_die_location_block (uoffset, per_cu); + + /* DW_OP_call_ref is currently not supported. */ + gdb_assert (block.per_cu == per_cu); + + compile_dwarf_to_ax (expr, loc, arch, addr_size, + block.data, block.data + block.size, + per_cu); + } + break; + + case DW_OP_call_ref: + unimplemented (op); + + default: + error (_("Unhandled dwarf expression opcode 0x%x"), op); + } + } + + /* Patch all the branches we emitted. */ + for (i = 0; i < VEC_length (int, patches); ++i) + { + int targ = offsets[VEC_index (int, dw_labels, i)]; + if (targ == -1) + internal_error (__FILE__, __LINE__, _("invalid label")); + ax_label (expr, VEC_index (int, patches, i), targ); + } + + do_cleanups (cleanups); +} + + +/* Return the value of SYMBOL in FRAME using the DWARF-2 expression + evaluator to calculate the location. */ +static struct value * +locexpr_read_variable (struct symbol *symbol, struct frame_info *frame) +{ + struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); + struct value *val; + + val = dwarf2_evaluate_loc_desc (SYMBOL_TYPE (symbol), frame, dlbaton->data, + dlbaton->size, dlbaton->per_cu); + + return val; +} + +/* Return non-zero iff we need a frame to evaluate SYMBOL. */ +static int +locexpr_read_needs_frame (struct symbol *symbol) +{ + struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); + + return dwarf2_loc_desc_needs_frame (dlbaton->data, dlbaton->size, + dlbaton->per_cu); +} + +/* Return true if DATA points to the end of a piece. END is one past + the last byte in the expression. */ + +static int +piece_end_p (const gdb_byte *data, const gdb_byte *end) +{ + return data == end || data[0] == DW_OP_piece || data[0] == DW_OP_bit_piece; +} + +/* Nicely describe a single piece of a location, returning an updated + position in the bytecode sequence. This function cannot recognize + all locations; if a location is not recognized, it simply returns + DATA. */ + +static const gdb_byte * +locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream, + CORE_ADDR addr, struct objfile *objfile, + const gdb_byte *data, const gdb_byte *end, + unsigned int addr_size) +{ + struct gdbarch *gdbarch = get_objfile_arch (objfile); + int regno; + + if (data[0] >= DW_OP_reg0 && data[0] <= DW_OP_reg31) + { + regno = gdbarch_dwarf2_reg_to_regnum (gdbarch, data[0] - DW_OP_reg0); + fprintf_filtered (stream, _("a variable in $%s"), + gdbarch_register_name (gdbarch, regno)); + data += 1; + } + else if (data[0] == DW_OP_regx) + { + ULONGEST reg; + + data = read_uleb128 (data + 1, end, ®); + regno = gdbarch_dwarf2_reg_to_regnum (gdbarch, reg); + fprintf_filtered (stream, _("a variable in $%s"), + gdbarch_register_name (gdbarch, regno)); + } + else if (data[0] == DW_OP_fbreg) + { + struct block *b; + struct symbol *framefunc; + int frame_reg = 0; + LONGEST frame_offset; + const gdb_byte *base_data, *new_data; + size_t base_size; + LONGEST base_offset = 0; + + new_data = read_sleb128 (data + 1, end, &frame_offset); + if (!piece_end_p (new_data, end)) + return data; + data = new_data; + + b = block_for_pc (addr); + + if (!b) + error (_("No block found for address for symbol \"%s\"."), + SYMBOL_PRINT_NAME (symbol)); + + framefunc = block_linkage_function (b); + + if (!framefunc) + error (_("No function found for block for symbol \"%s\"."), + SYMBOL_PRINT_NAME (symbol)); + + dwarf_expr_frame_base_1 (framefunc, addr, &base_data, &base_size); + + if (base_data[0] >= DW_OP_breg0 && base_data[0] <= DW_OP_breg31) + { + const gdb_byte *buf_end; + + frame_reg = base_data[0] - DW_OP_breg0; + buf_end = read_sleb128 (base_data + 1, + base_data + base_size, &base_offset); + if (buf_end != base_data + base_size) + error (_("Unexpected opcode after DW_OP_breg%u for symbol \"%s\"."), + frame_reg, SYMBOL_PRINT_NAME (symbol)); + } + else if (base_data[0] >= DW_OP_reg0 && base_data[0] <= DW_OP_reg31) + { + /* The frame base is just the register, with no offset. */ + frame_reg = base_data[0] - DW_OP_reg0; + base_offset = 0; + } + else + { + /* We don't know what to do with the frame base expression, + so we can't trace this variable; give up. */ + error (_("Cannot describe location of symbol \"%s\"; " + "DWARF 2 encoding not handled, " + "first opcode in base data is 0x%x."), + SYMBOL_PRINT_NAME (symbol), base_data[0]); + } + + regno = gdbarch_dwarf2_reg_to_regnum (gdbarch, frame_reg); + + fprintf_filtered (stream, _("a variable at frame base reg $%s offset %s+%s"), + gdbarch_register_name (gdbarch, regno), + plongest (base_offset), plongest (frame_offset)); + } + else if (data[0] >= DW_OP_breg0 && data[0] <= DW_OP_breg31 + && piece_end_p (data, end)) + { + LONGEST offset; + + regno = gdbarch_dwarf2_reg_to_regnum (gdbarch, data[0] - DW_OP_breg0); + + data = read_sleb128 (data + 1, end, &offset); + + fprintf_filtered (stream, + _("a variable at offset %s from base reg $%s"), + plongest (offset), + gdbarch_register_name (gdbarch, regno)); + } + + /* The location expression for a TLS variable looks like this (on a + 64-bit LE machine): + + DW_AT_location : 10 byte block: 3 4 0 0 0 0 0 0 0 e0 + (DW_OP_addr: 4; DW_OP_GNU_push_tls_address) + + 0x3 is the encoding for DW_OP_addr, which has an operand as long + as the size of an address on the target machine (here is 8 + bytes). Note that more recent version of GCC emit DW_OP_const4u + or DW_OP_const8u, depending on address size, rather than + DW_OP_addr. 0xe0 is the encoding for + DW_OP_GNU_push_tls_address. The operand represents the offset at + which the variable is within the thread local storage. */ + + else if (data + 1 + addr_size < end + && (data[0] == DW_OP_addr + || (addr_size == 4 && data[0] == DW_OP_const4u) + || (addr_size == 8 && data[0] == DW_OP_const8u)) + && data[1 + addr_size] == DW_OP_GNU_push_tls_address + && piece_end_p (data + 2 + addr_size, end)) + { + ULONGEST offset; + offset = extract_unsigned_integer (data + 1, addr_size, + gdbarch_byte_order (gdbarch)); + + fprintf_filtered (stream, + _("a thread-local variable at offset 0x%s " + "in the thread-local storage for `%s'"), + phex_nz (offset, addr_size), objfile->name); + + data += 1 + addr_size + 1; + } + else if (data[0] >= DW_OP_lit0 + && data[0] <= DW_OP_lit31 + && data + 1 < end + && data[1] == DW_OP_stack_value) + { + fprintf_filtered (stream, _("the constant %d"), data[0] - DW_OP_lit0); + data += 2; + } + + return data; +} + +/* Disassemble an expression, stopping at the end of a piece or at the + end of the expression. Returns a pointer to the next unread byte + in the input expression. If ALL is nonzero, then this function + will keep going until it reaches the end of the expression. */ + +static const gdb_byte * +disassemble_dwarf_expression (struct ui_file *stream, + struct gdbarch *arch, unsigned int addr_size, + int offset_size, + const gdb_byte *data, const gdb_byte *end, + int all) +{ + const gdb_byte *start = data; + + fprintf_filtered (stream, _("a complex DWARF expression:\n")); + + while (data < end + && (all + || (data[0] != DW_OP_piece && data[0] != DW_OP_bit_piece))) + { + enum dwarf_location_atom op = *data++; + ULONGEST ul; + LONGEST l; + const char *name; + + name = dwarf_stack_op_name (op, 0); + + if (!name) + error (_("Unrecognized DWARF opcode 0x%02x at %ld"), + op, (long) (data - start)); + fprintf_filtered (stream, " % 4ld: %s", (long) (data - start), name); + + switch (op) + { + case DW_OP_addr: + ul = extract_unsigned_integer (data, addr_size, + gdbarch_byte_order (arch)); + data += addr_size; + fprintf_filtered (stream, " 0x%s", phex_nz (ul, addr_size)); + break; + + case DW_OP_const1u: + ul = extract_unsigned_integer (data, 1, gdbarch_byte_order (arch)); + data += 1; + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + case DW_OP_const1s: + l = extract_signed_integer (data, 1, gdbarch_byte_order (arch)); + data += 1; + fprintf_filtered (stream, " %s", plongest (l)); + break; + case DW_OP_const2u: + ul = extract_unsigned_integer (data, 2, gdbarch_byte_order (arch)); + data += 2; + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + case DW_OP_const2s: + l = extract_signed_integer (data, 2, gdbarch_byte_order (arch)); + data += 2; + fprintf_filtered (stream, " %s", plongest (l)); + break; + case DW_OP_const4u: + ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch)); + data += 4; + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + case DW_OP_const4s: + l = extract_signed_integer (data, 4, gdbarch_byte_order (arch)); + data += 4; + fprintf_filtered (stream, " %s", plongest (l)); + break; + case DW_OP_const8u: + ul = extract_unsigned_integer (data, 8, gdbarch_byte_order (arch)); + data += 8; + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + case DW_OP_const8s: + l = extract_signed_integer (data, 8, gdbarch_byte_order (arch)); + data += 8; + fprintf_filtered (stream, " %s", plongest (l)); + break; + case DW_OP_constu: + data = read_uleb128 (data, end, &ul); + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + case DW_OP_consts: + data = read_sleb128 (data, end, &l); + fprintf_filtered (stream, " %s", plongest (l)); + break; + + case DW_OP_reg0: + case DW_OP_reg1: + case DW_OP_reg2: + case DW_OP_reg3: + case DW_OP_reg4: + case DW_OP_reg5: + case DW_OP_reg6: + case DW_OP_reg7: + case DW_OP_reg8: + case DW_OP_reg9: + case DW_OP_reg10: + case DW_OP_reg11: + case DW_OP_reg12: + case DW_OP_reg13: + case DW_OP_reg14: + case DW_OP_reg15: + case DW_OP_reg16: + case DW_OP_reg17: + case DW_OP_reg18: + case DW_OP_reg19: + case DW_OP_reg20: + case DW_OP_reg21: + case DW_OP_reg22: + case DW_OP_reg23: + case DW_OP_reg24: + case DW_OP_reg25: + case DW_OP_reg26: + case DW_OP_reg27: + case DW_OP_reg28: + case DW_OP_reg29: + case DW_OP_reg30: + case DW_OP_reg31: + fprintf_filtered (stream, " [$%s]", + gdbarch_register_name (arch, op - DW_OP_reg0)); + break; + + case DW_OP_regx: + data = read_uleb128 (data, end, &ul); + fprintf_filtered (stream, " %s [$%s]", pulongest (ul), + gdbarch_register_name (arch, (int) ul)); + break; + + case DW_OP_implicit_value: + data = read_uleb128 (data, end, &ul); + data += ul; + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + + case DW_OP_breg0: + case DW_OP_breg1: + case DW_OP_breg2: + case DW_OP_breg3: + case DW_OP_breg4: + case DW_OP_breg5: + case DW_OP_breg6: + case DW_OP_breg7: + case DW_OP_breg8: + case DW_OP_breg9: + case DW_OP_breg10: + case DW_OP_breg11: + case DW_OP_breg12: + case DW_OP_breg13: + case DW_OP_breg14: + case DW_OP_breg15: + case DW_OP_breg16: + case DW_OP_breg17: + case DW_OP_breg18: + case DW_OP_breg19: + case DW_OP_breg20: + case DW_OP_breg21: + case DW_OP_breg22: + case DW_OP_breg23: + case DW_OP_breg24: + case DW_OP_breg25: + case DW_OP_breg26: + case DW_OP_breg27: + case DW_OP_breg28: + case DW_OP_breg29: + case DW_OP_breg30: + case DW_OP_breg31: + data = read_sleb128 (data, end, &ul); + fprintf_filtered (stream, " %s [$%s]", pulongest (ul), + gdbarch_register_name (arch, op - DW_OP_breg0)); + break; + + case DW_OP_bregx: + { + ULONGEST offset; + + data = read_uleb128 (data, end, &ul); + data = read_sleb128 (data, end, &offset); + fprintf_filtered (stream, " register %s [$%s] offset %s", + pulongest (ul), + gdbarch_register_name (arch, (int) ul), + pulongest (offset)); + } + break; + + case DW_OP_fbreg: + data = read_sleb128 (data, end, &ul); + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + + case DW_OP_xderef_size: + case DW_OP_deref_size: + case DW_OP_pick: + fprintf_filtered (stream, " %d", *data); + ++data; + break; + + case DW_OP_plus_uconst: + data = read_uleb128 (data, end, &ul); + fprintf_filtered (stream, " %s", pulongest (ul)); + break; + + case DW_OP_skip: + l = extract_signed_integer (data, 2, gdbarch_byte_order (arch)); + data += 2; + fprintf_filtered (stream, " to %ld", + (long) (data + l - start)); + break; + + case DW_OP_bra: + l = extract_signed_integer (data, 2, gdbarch_byte_order (arch)); + data += 2; + fprintf_filtered (stream, " %ld", + (long) (data + l - start)); + break; + + case DW_OP_call2: + ul = extract_unsigned_integer (data, 2, gdbarch_byte_order (arch)); + data += 2; + fprintf_filtered (stream, " offset %s", phex_nz (ul, 2)); + break; + + case DW_OP_call4: + ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch)); + data += 4; + fprintf_filtered (stream, " offset %s", phex_nz (ul, 4)); + break; + + case DW_OP_call_ref: + ul = extract_unsigned_integer (data, offset_size, + gdbarch_byte_order (arch)); + data += offset_size; + fprintf_filtered (stream, " offset %s", phex_nz (ul, offset_size)); + break; + + case DW_OP_piece: + data = read_uleb128 (data, end, &ul); + fprintf_filtered (stream, " %s (bytes)", pulongest (ul)); + break; + + case DW_OP_bit_piece: + { + ULONGEST offset; + + data = read_uleb128 (data, end, &ul); + data = read_uleb128 (data, end, &offset); + fprintf_filtered (stream, " size %s offset %s (bits)", + pulongest (ul), pulongest (offset)); + } + break; + } + + fprintf_filtered (stream, "\n"); + } + + return data; +} + +/* Describe a single location, which may in turn consist of multiple + pieces. */ + +static void +locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr, + struct ui_file *stream, + const gdb_byte *data, int size, + struct objfile *objfile, unsigned int addr_size, + int offset_size) +{ + const gdb_byte *end = data + size; + int first_piece = 1, bad = 0; + + while (data < end) + { + const gdb_byte *here = data; + int disassemble = 1; + + if (first_piece) + first_piece = 0; + else + fprintf_filtered (stream, _(", and ")); + + if (!dwarf2_always_disassemble) + { + data = locexpr_describe_location_piece (symbol, stream, addr, objfile, + data, end, addr_size); + /* If we printed anything, or if we have an empty piece, + then don't disassemble. */ + if (data != here + || data[0] == DW_OP_piece + || data[0] == DW_OP_bit_piece) + disassemble = 0; + } + if (disassemble) + data = disassemble_dwarf_expression (stream, get_objfile_arch (objfile), + addr_size, offset_size, data, end, + dwarf2_always_disassemble); + + if (data < end) + { + int empty = data == here; + + if (disassemble) + fprintf_filtered (stream, " "); + if (data[0] == DW_OP_piece) + { + ULONGEST bytes; + + data = read_uleb128 (data + 1, end, &bytes); + + if (empty) + fprintf_filtered (stream, _("an empty %s-byte piece"), + pulongest (bytes)); + else + fprintf_filtered (stream, _(" [%s-byte piece]"), + pulongest (bytes)); + } + else if (data[0] == DW_OP_bit_piece) + { + ULONGEST bits, offset; + + data = read_uleb128 (data + 1, end, &bits); + data = read_uleb128 (data, end, &offset); + + if (empty) + fprintf_filtered (stream, + _("an empty %s-bit piece"), + pulongest (bits)); + else + fprintf_filtered (stream, + _(" [%s-bit piece, offset %s bits]"), + pulongest (bits), pulongest (offset)); + } + else + { + bad = 1; + break; + } + } + } + + if (bad || data > end) + error (_("Corrupted DWARF2 expression for \"%s\"."), + SYMBOL_PRINT_NAME (symbol)); +} + +/* Print a natural-language description of SYMBOL to STREAM. This + version is for a symbol with a single location. */ + +static void +locexpr_describe_location (struct symbol *symbol, CORE_ADDR addr, + struct ui_file *stream) +{ + struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); + struct objfile *objfile = dwarf2_per_cu_objfile (dlbaton->per_cu); + unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu); + int offset_size = dwarf2_per_cu_offset_size (dlbaton->per_cu); + + locexpr_describe_location_1 (symbol, addr, stream, dlbaton->data, dlbaton->size, + objfile, addr_size, offset_size); +} + +/* Describe the location of SYMBOL as an agent value in VALUE, generating + any necessary bytecode in AX. */ + +static void +locexpr_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch, + struct agent_expr *ax, struct axs_value *value) +{ + struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); + unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu); + + if (dlbaton->data == NULL || dlbaton->size == 0) + value->optimized_out = 1; + else + compile_dwarf_to_ax (ax, value, gdbarch, addr_size, + dlbaton->data, dlbaton->data + dlbaton->size, + dlbaton->per_cu); +} + +/* The set of location functions used with the DWARF-2 expression + evaluator. */ +const struct symbol_computed_ops dwarf2_locexpr_funcs = { + locexpr_read_variable, + locexpr_read_needs_frame, + locexpr_describe_location, + locexpr_tracepoint_var_ref +}; + + +/* Wrapper functions for location lists. These generally find + the appropriate location expression and call something above. */ + +/* Return the value of SYMBOL in FRAME using the DWARF-2 expression + evaluator to calculate the location. */ +static struct value * loclist_read_variable (struct symbol *symbol, struct frame_info *frame) { struct dwarf2_loclist_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); struct value *val; - gdb_byte *data; + const gdb_byte *data; size_t size; data = find_location_expression (dlbaton, &size, @@ -791,7 +2470,7 @@ loclist_read_variable (struct symbol *symbol, struct frame_info *frame) set_value_optimized_out (val, 1); } else - val = dwarf2_evaluate_loc_desc (symbol, frame, data, size, + val = dwarf2_evaluate_loc_desc (SYMBOL_TYPE (symbol), frame, data, size, dlbaton->per_cu); return val; @@ -810,13 +2489,86 @@ loclist_read_needs_frame (struct symbol *symbol) return 1; } -/* Print a natural-language description of SYMBOL to STREAM. */ -static int -loclist_describe_location (struct symbol *symbol, struct ui_file *stream) +/* Print a natural-language description of SYMBOL to STREAM. This + version applies when there is a list of different locations, each + with a specified address range. */ + +static void +loclist_describe_location (struct symbol *symbol, CORE_ADDR addr, + struct ui_file *stream) { - /* FIXME: Could print the entire list of locations. */ - fprintf_filtered (stream, "a variable with multiple locations"); - return 1; + struct dwarf2_loclist_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); + CORE_ADDR low, high; + const gdb_byte *loc_ptr, *buf_end; + int length, first = 1; + struct objfile *objfile = dwarf2_per_cu_objfile (dlbaton->per_cu); + struct gdbarch *gdbarch = get_objfile_arch (objfile); + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu); + int offset_size = dwarf2_per_cu_offset_size (dlbaton->per_cu); + int signed_addr_p = bfd_get_sign_extend_vma (objfile->obfd); + CORE_ADDR base_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1)); + /* Adjust base_address for relocatable objects. */ + CORE_ADDR base_offset = dwarf2_per_cu_text_offset (dlbaton->per_cu); + CORE_ADDR base_address = dlbaton->base_address + base_offset; + + loc_ptr = dlbaton->data; + buf_end = dlbaton->data + dlbaton->size; + + fprintf_filtered (stream, _("multi-location:\n")); + + /* Iterate through locations until we run out. */ + while (1) + { + if (buf_end - loc_ptr < 2 * addr_size) + error (_("Corrupted DWARF expression for symbol \"%s\"."), + SYMBOL_PRINT_NAME (symbol)); + + if (signed_addr_p) + low = extract_signed_integer (loc_ptr, addr_size, byte_order); + else + low = extract_unsigned_integer (loc_ptr, addr_size, byte_order); + loc_ptr += addr_size; + + if (signed_addr_p) + high = extract_signed_integer (loc_ptr, addr_size, byte_order); + else + high = extract_unsigned_integer (loc_ptr, addr_size, byte_order); + loc_ptr += addr_size; + + /* A base-address-selection entry. */ + if ((low & base_mask) == base_mask) + { + base_address = high + base_offset; + fprintf_filtered (stream, _(" Base address %s"), + paddress (gdbarch, base_address)); + continue; + } + + /* An end-of-list entry. */ + if (low == 0 && high == 0) + break; + + /* Otherwise, a location expression entry. */ + low += base_address; + high += base_address; + + length = extract_unsigned_integer (loc_ptr, 2, byte_order); + loc_ptr += 2; + + /* (It would improve readability to print only the minimum + necessary digits of the second number of the range.) */ + fprintf_filtered (stream, _(" Range %s-%s: "), + paddress (gdbarch, low), paddress (gdbarch, high)); + + /* Now describe this particular location. */ + locexpr_describe_location_1 (symbol, low, stream, loc_ptr, length, + objfile, addr_size, offset_size); + + fprintf_filtered (stream, "\n"); + + loc_ptr += length; + } } /* Describe the location of SYMBOL as an agent value in VALUE, generating @@ -826,14 +2578,16 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value) { struct dwarf2_loclist_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); - gdb_byte *data; + const gdb_byte *data; size_t size; + unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu); data = find_location_expression (dlbaton, &size, ax->scope); - if (data == NULL) - error (_("Variable \"%s\" is not available."), SYMBOL_NATURAL_NAME (symbol)); - - dwarf2_tracepoint_var_ref (symbol, gdbarch, ax, value, data, size); + if (data == NULL || size == 0) + value->optimized_out = 1; + else + compile_dwarf_to_ax (ax, value, gdbarch, addr_size, data, data + size, + dlbaton->per_cu); } /* The set of location functions used with the DWARF-2 expression diff --git a/contrib/gdb-7/gdb/dwarf2loc.h b/contrib/gdb-7/gdb/dwarf2loc.h index 0bfcfcaaea..826bc454c6 100644 --- a/contrib/gdb-7/gdb/dwarf2loc.h +++ b/contrib/gdb-7/gdb/dwarf2loc.h @@ -1,6 +1,7 @@ /* DWARF 2 location expression support for GDB. - Copyright (C) 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -27,12 +28,26 @@ struct dwarf2_per_cu_data; /* This header is private to the DWARF-2 reader. It is shared between dwarf2read.c and dwarf2loc.c. */ -/* Return the OBJFILE associated with the compilation unit CU. */ +/* Return the OBJFILE associated with the compilation unit CU. If CU + came from a separate debuginfo file, then the master objfile is + returned. */ struct objfile *dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *cu); /* Return the address size given in the compilation unit header for CU. */ CORE_ADDR dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *cu); +/* Return the offset size given in the compilation unit header for CU. */ +int dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *cu); + +/* Return the text offset of the CU. The returned offset comes from + this CU's objfile. If this objfile came from a separate debuginfo + file, then the offset may be different from the corresponding + offset in the parent objfile. */ +CORE_ADDR dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *cu); + +struct dwarf2_locexpr_baton dwarf2_fetch_die_location_block + (unsigned int offset, struct dwarf2_per_cu_data *per_cu); + /* The symbol location baton types used by the DWARF-2 reader (i.e. SYMBOL_LOCATION_BATON for a LOC_COMPUTED symbol). "struct dwarf2_locexpr_baton" is for a symbol with a single location @@ -42,7 +57,7 @@ CORE_ADDR dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *cu); struct dwarf2_locexpr_baton { /* Pointer to the start of the location expression. */ - gdb_byte *data; + const gdb_byte *data; /* Length of the location expression. */ unsigned long size; @@ -59,7 +74,7 @@ struct dwarf2_loclist_baton CORE_ADDR base_address; /* Pointer to the start of the location list. */ - gdb_byte *data; + const gdb_byte *data; /* Length of the location list. */ unsigned long size; diff --git a/contrib/gdb-7/gdb/dwarf2read.c b/contrib/gdb-7/gdb/dwarf2read.c index 4cce36b6f1..1e752357e0 100644 --- a/contrib/gdb-7/gdb/dwarf2read.c +++ b/contrib/gdb-7/gdb/dwarf2read.c @@ -1,7 +1,7 @@ /* DWARF 2 debugging format support for GDB. Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology, @@ -48,6 +48,9 @@ #include "gdbcmd.h" #include "block.h" #include "addrmap.h" +#include "typeprint.h" +#include "jv-lang.h" +#include "psympriv.h" #include #include "gdb_string.h" @@ -58,6 +61,9 @@ #endif #ifdef HAVE_MMAP #include +#ifndef MAP_FAILED +#define MAP_FAILED ((void *) -1) +#endif #endif #if 0 @@ -77,38 +83,6 @@ _COMP_UNIT_HEADER; #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11 #endif -/* .debug_pubnames header - Because of alignment constraints, this structure has padding and cannot - be mapped directly onto the beginning of the .debug_info section. */ -typedef struct pubnames_header - { - unsigned int length; /* length of the .debug_pubnames - contribution */ - unsigned char version; /* version number -- 2 for DWARF - version 2 */ - unsigned int info_offset; /* offset into .debug_info section */ - unsigned int info_size; /* byte size of .debug_info section - portion */ - } -_PUBNAMES_HEADER; -#define _ACTUAL_PUBNAMES_HEADER_SIZE 13 - -/* .debug_pubnames header - Because of alignment constraints, this structure has padding and cannot - be mapped directly onto the beginning of the .debug_info section. */ -typedef struct aranges_header - { - unsigned int length; /* byte len of the .debug_aranges - contribution */ - unsigned short version; /* version number -- 2 for DWARF - version 2 */ - unsigned int info_offset; /* offset into .debug_info section */ - unsigned char addr_size; /* byte size of an address */ - unsigned char seg_size; /* byte size of segment descriptor */ - } -_ARANGES_HEADER; -#define _ACTUAL_ARANGES_HEADER_SIZE 12 - /* .debug_line statement program prologue Because of alignment constraints, this structure has padding and cannot be mapped directly onto the beginning of the .debug_info section. */ @@ -151,6 +125,8 @@ struct dwarf2_section_info gdb_byte *buffer; bfd_size_type size; int was_mmapped; + /* True if we have tried to read this section. */ + int readin; }; struct dwarf2_per_objfile @@ -158,8 +134,6 @@ struct dwarf2_per_objfile struct dwarf2_section_info info; struct dwarf2_section_info abbrev; struct dwarf2_section_info line; - struct dwarf2_section_info pubnames; - struct dwarf2_section_info aranges; struct dwarf2_section_info loc; struct dwarf2_section_info macinfo; struct dwarf2_section_info str; @@ -168,6 +142,9 @@ struct dwarf2_per_objfile struct dwarf2_section_info frame; struct dwarf2_section_info eh_frame; + /* Back link. */ + struct objfile *objfile; + /* A list of all the compilation units. This is used to locate the target compilation unit of a particular reference. */ struct dwarf2_per_cu_data **all_comp_units; @@ -198,8 +175,6 @@ static struct dwarf2_per_objfile *dwarf2_per_objfile; #define INFO_SECTION "debug_info" #define ABBREV_SECTION "debug_abbrev" #define LINE_SECTION "debug_line" -#define PUBNAMES_SECTION "debug_pubnames" -#define ARANGES_SECTION "debug_aranges" #define LOC_SECTION "debug_loc" #define MACINFO_SECTION "debug_macinfo" #define STR_SECTION "debug_str" @@ -283,9 +258,6 @@ struct dwarf2_cu /* Hash table holding all the loaded partial DIEs. */ htab_t partial_dies; - /* `.debug_ranges' offset for this `DW_TAG_compile_unit' DIE. */ - unsigned int ranges_offset; - /* Storage for things with the same lifetime as this read-in compilation unit, including partial DIEs. */ struct obstack comp_unit_obstack; @@ -333,9 +305,6 @@ struct dwarf2_cu DIEs for namespaces, we don't need to try to infer them from mangled names. */ unsigned int has_namespace_info : 1; - - /* Field `ranges_offset' is filled in; flag as the value may be zero. */ - unsigned int has_ranges_offset : 1; }; /* Persistent data held for a compilation unit, even when not @@ -368,7 +337,8 @@ struct dwarf2_per_cu_data Otherwise it's from .debug_info. */ unsigned int from_debug_types : 1; - /* Set iff currently read in. */ + /* Set to non-NULL iff this CU is currently loaded. When it gets freed out + of the CU cache it gets reset to NULL again. */ struct dwarf2_cu *cu; /* If full symbols for this CU have been read in, then this field @@ -427,6 +397,7 @@ struct line_header unsigned short version; unsigned int header_length; unsigned char minimum_instruction_length; + unsigned char maximum_ops_per_instruction; unsigned char default_is_stmt; int line_base; unsigned char line_range; @@ -474,17 +445,12 @@ struct partial_die_info /* DWARF-2 tag for this DIE. */ ENUM_BITFIELD(dwarf_tag) tag : 16; - /* Language code associated with this DIE. This is only used - for the compilation unit DIE. */ - unsigned int language : 8; - /* Assorted flags describing the data found in this DIE. */ unsigned int has_children : 1; unsigned int is_external : 1; unsigned int is_declaration : 1; unsigned int has_type : 1; unsigned int has_specification : 1; - unsigned int has_stmt_list : 1; unsigned int has_pc_info : 1; /* Flag set if the SCOPE field of this structure has been @@ -495,10 +461,8 @@ struct partial_die_info unsigned int has_byte_size : 1; /* The name of this DIE. Normally the value of DW_AT_name, but - sometimes DW_TAG_MIPS_linkage_name or a string computed in some - other fashion. */ + sometimes a default name for unnamed DIEs. */ char *name; - char *dirname; /* The scope to prepend to our children. This is generally allocated on the comp_unit_obstack, so will disappear @@ -521,9 +485,6 @@ struct partial_die_info DW_AT_extension). */ unsigned int spec_offset; - /* If HAS_STMT_LIST, the offset of the Line Number Information data. */ - unsigned int line_offset; - /* Pointers to this DIE's parent, first child, and next sibling, if any. */ struct partial_die_info *die_parent, *die_child, *die_sibling; @@ -561,8 +522,8 @@ struct attribute { char *str; struct dwarf_block *blk; - unsigned long unsnd; - long int snd; + ULONGEST unsnd; + LONGEST snd; CORE_ADDR addr; struct signatured_type *signatured_type; } @@ -633,9 +594,6 @@ struct dwarf_block #define DW_FIELD_ALLOC_CHUNK 4 #endif -/* A zeroed version of a partial die for initialization purposes. */ -static struct partial_die_info zeroed_partial_die; - /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte, but this would require a corresponding change in unpack_field_as_long and friends. */ @@ -654,9 +612,9 @@ struct field_info int virtuality; struct field field; } - *fields; + *fields, *baseclasses; - /* Number of fields. */ + /* Number of fields (including baseclasses). */ int nfields; /* Number of baseclasses. */ @@ -687,6 +645,16 @@ struct field_info /* Number of entries in the fnfieldlists array. */ int nfnfields; + + /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of + a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */ + struct typedef_field_list + { + struct typedef_field field; + struct typedef_field_list *next; + } + *typedef_field_list; + unsigned typedef_field_list_count; }; /* One item on the queue of compilation units to read in full symbols @@ -780,18 +748,14 @@ dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2) static void dwarf2_locate_sections (bfd *, asection *, void *); -#if 0 -static void dwarf2_build_psymtabs_easy (struct objfile *, int); -#endif - static void dwarf2_create_include_psymtab (char *, struct partial_symtab *, struct objfile *); static void dwarf2_build_include_psymtabs (struct dwarf2_cu *, - struct partial_die_info *, + struct die_info *, struct partial_symtab *); -static void dwarf2_build_psymtabs_hard (struct objfile *, int); +static void dwarf2_build_psymtabs_hard (struct objfile *); static void scan_partial_symbols (struct partial_die_info *, CORE_ADDR *, CORE_ADDR *, @@ -800,8 +764,6 @@ static void scan_partial_symbols (struct partial_die_info *, static void add_partial_symbol (struct partial_die_info *, struct dwarf2_cu *); -static int pdi_needs_namespace (enum dwarf_tag tag); - static void add_partial_namespace (struct partial_die_info *pdi, CORE_ADDR *lowpc, CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu); @@ -938,6 +900,13 @@ static void dwarf2_const_value_data (struct attribute *attr, static struct type *die_type (struct die_info *, struct dwarf2_cu *); +static int need_gnat_info (struct dwarf2_cu *); + +static struct type *die_descriptive_type (struct die_info *, struct dwarf2_cu *); + +static void set_descriptive_type (struct type *, struct die_info *, + struct dwarf2_cu *); + static struct type *die_containing_type (struct die_info *, struct dwarf2_cu *); @@ -947,10 +916,9 @@ static struct type *read_type_die (struct die_info *, struct dwarf2_cu *); static char *determine_prefix (struct die_info *die, struct dwarf2_cu *); -static char *typename_concat (struct obstack *, - const char *prefix, - const char *suffix, - struct dwarf2_cu *); +static char *typename_concat (struct obstack *obs, const char *prefix, + const char *suffix, int physname, + struct dwarf2_cu *cu); static void read_file_scope (struct die_info *, struct dwarf2_cu *); @@ -964,7 +932,8 @@ static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *, struct partial_symtab *); static int dwarf2_get_pc_bounds (struct die_info *, - CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *); + CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *, + struct partial_symtab *); static void get_scope_pc_bounds (struct die_info *, CORE_ADDR *, CORE_ADDR *, @@ -988,9 +957,6 @@ static void dwarf2_attach_fn_fields_to_type (struct field_info *, static void process_structure_scope (struct die_info *, struct dwarf2_cu *); -static const char *determine_class_name (struct die_info *die, - struct dwarf2_cu *cu); - static void read_common_block (struct die_info *, struct dwarf2_cu *); static void read_namespace (struct die_info *die, struct dwarf2_cu *); @@ -999,6 +965,9 @@ static void read_module (struct die_info *die, struct dwarf2_cu *cu); static void read_import_statement (struct die_info *die, struct dwarf2_cu *); +static struct type *read_module_type (struct die_info *die, + struct dwarf2_cu *cu); + static const char *namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *); @@ -1006,7 +975,7 @@ static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *); static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *); -static enum dwarf_array_dim_ordering read_array_order (struct die_info *, +static enum dwarf_array_dim_ordering read_array_order (struct die_info *, struct dwarf2_cu *); static struct die_info *read_comp_unit (gdb_byte *, struct dwarf2_cu *); @@ -1032,8 +1001,6 @@ static gdb_byte *read_full_die (const struct die_reader_specs *reader, static void process_die (struct die_info *, struct dwarf2_cu *); -static char *dwarf2_linkage_name (struct die_info *, struct dwarf2_cu *); - static char *dwarf2_canonicalize_name (char *, struct dwarf2_cu *, struct obstack *); @@ -1048,8 +1015,6 @@ static char *dwarf_attr_name (unsigned int); static char *dwarf_form_name (unsigned int); -static char *dwarf_stack_op_name (unsigned int); - static char *dwarf_bool_name (unsigned int); static char *dwarf_type_encoding_name (unsigned int); @@ -1076,7 +1041,7 @@ static int is_ref_attr (struct attribute *); static unsigned int dwarf2_get_ref_die_offset (struct attribute *); -static int dwarf2_get_attr_constant_value (struct attribute *, int); +static LONGEST dwarf2_get_attr_constant_value (struct attribute *, int); static struct die_info *follow_die_ref_or_sig (struct die_info *, struct attribute *, @@ -1173,16 +1138,22 @@ static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu); int dwarf2_has_info (struct objfile *objfile) { - struct dwarf2_per_objfile *data; + dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key); + if (!dwarf2_per_objfile) + { + /* Initialize per-objfile state. */ + struct dwarf2_per_objfile *data + = obstack_alloc (&objfile->objfile_obstack, sizeof (*data)); - /* Initialize per-objfile state. */ - data = obstack_alloc (&objfile->objfile_obstack, sizeof (*data)); - memset (data, 0, sizeof (*data)); - set_objfile_data (objfile, dwarf2_objfile_data_key, data); - dwarf2_per_objfile = data; + memset (data, 0, sizeof (*data)); + set_objfile_data (objfile, dwarf2_objfile_data_key, data); + dwarf2_per_objfile = data; - bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections, NULL); - return (data->info.asection != NULL && data->abbrev.asection != NULL); + bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections, NULL); + dwarf2_per_objfile->objfile = objfile; + } + return (dwarf2_per_objfile->info.asection != NULL + && dwarf2_per_objfile->abbrev.asection != NULL); } /* When loading sections, we can either look for ".", or for @@ -1219,16 +1190,6 @@ dwarf2_locate_sections (bfd *abfd, asection *sectp, void *ignore_ptr) dwarf2_per_objfile->line.asection = sectp; dwarf2_per_objfile->line.size = bfd_get_section_size (sectp); } - else if (section_is_p (sectp->name, PUBNAMES_SECTION)) - { - dwarf2_per_objfile->pubnames.asection = sectp; - dwarf2_per_objfile->pubnames.size = bfd_get_section_size (sectp); - } - else if (section_is_p (sectp->name, ARANGES_SECTION)) - { - dwarf2_per_objfile->aranges.asection = sectp; - dwarf2_per_objfile->aranges.size = bfd_get_section_size (sectp); - } else if (section_is_p (sectp->name, LOC_SECTION)) { dwarf2_per_objfile->loc.asection = sectp; @@ -1252,6 +1213,7 @@ dwarf2_locate_sections (bfd *abfd, asection *sectp, void *ignore_ptr) else if (section_is_p (sectp->name, EH_FRAME_SECTION)) { flagword aflag = bfd_get_section_flags (ignore_abfd, sectp); + if (aflag & SEC_HAS_CONTENTS) { dwarf2_per_objfile->eh_frame.asection = sectp; @@ -1364,8 +1326,11 @@ dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info) gdb_byte *buf, *retbuf; unsigned char header[4]; + if (info->readin) + return; info->buffer = NULL; info->was_mmapped = 0; + info->readin = 1; if (info->asection == NULL || info->size == 0) return; @@ -1403,6 +1368,9 @@ dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info) { info->was_mmapped = 1; info->buffer = retbuf + (sectp->filepos & (pagesize - 1)) ; +#if HAVE_POSIX_MADVISE + posix_madvise (retbuf, map_length, POSIX_MADV_WILLNEED); +#endif return; } } @@ -1416,7 +1384,7 @@ dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info) http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html . We never compress sections in .o files, so we only need to try this when the section is not compressed. */ - retbuf = symfile_relocate_debug_section (abfd, sectp, buf); + retbuf = symfile_relocate_debug_section (objfile, sectp, buf); if (retbuf != NULL) { info->buffer = retbuf; @@ -1440,6 +1408,16 @@ dwarf2_get_section_info (struct objfile *objfile, const char *section_name, struct dwarf2_per_objfile *data = objfile_data (objfile, dwarf2_objfile_data_key); struct dwarf2_section_info *info; + + /* We may see an objfile without any DWARF, in which case we just + return nothing. */ + if (data == NULL) + { + *sectp = NULL; + *bufp = NULL; + *sizep = 0; + return; + } if (section_is_p (section_name, EH_FRAME_SECTION)) info = &data->eh_frame; else if (section_is_p (section_name, FRAME_SECTION)) @@ -1459,77 +1437,15 @@ dwarf2_get_section_info (struct objfile *objfile, const char *section_name, /* Build a partial symbol table. */ void -dwarf2_build_psymtabs (struct objfile *objfile, int mainline) +dwarf2_build_psymtabs (struct objfile *objfile) { - dwarf2_read_section (objfile, &dwarf2_per_objfile->info); - dwarf2_read_section (objfile, &dwarf2_per_objfile->abbrev); - dwarf2_read_section (objfile, &dwarf2_per_objfile->line); - dwarf2_read_section (objfile, &dwarf2_per_objfile->str); - dwarf2_read_section (objfile, &dwarf2_per_objfile->macinfo); - dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges); - dwarf2_read_section (objfile, &dwarf2_per_objfile->types); - dwarf2_read_section (objfile, &dwarf2_per_objfile->loc); - dwarf2_read_section (objfile, &dwarf2_per_objfile->eh_frame); - dwarf2_read_section (objfile, &dwarf2_per_objfile->frame); - - if (mainline - || (objfile->global_psymbols.size == 0 - && objfile->static_psymbols.size == 0)) + if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0) { init_psymbol_list (objfile, 1024); } -#if 0 - if (dwarf_aranges_offset && dwarf_pubnames_offset) - { - /* Things are significantly easier if we have .debug_aranges and - .debug_pubnames sections */ - - dwarf2_build_psymtabs_easy (objfile, mainline); - } - else -#endif - /* only test this case for now */ - { - /* In this case we have to work a bit harder */ - dwarf2_build_psymtabs_hard (objfile, mainline); - } -} - -#if 0 -/* Build the partial symbol table from the information in the - .debug_pubnames and .debug_aranges sections. */ - -static void -dwarf2_build_psymtabs_easy (struct objfile *objfile, int mainline) -{ - bfd *abfd = objfile->obfd; - char *aranges_buffer, *pubnames_buffer; - char *aranges_ptr, *pubnames_ptr; - unsigned int entry_length, version, info_offset, info_size; - - pubnames_buffer = dwarf2_read_section (objfile, - dwarf_pubnames_section); - pubnames_ptr = pubnames_buffer; - while ((pubnames_ptr - pubnames_buffer) < dwarf2_per_objfile->pubnames.size) - { - unsigned int bytes_read; - - entry_length = read_initial_length (abfd, pubnames_ptr, &bytes_read); - pubnames_ptr += bytes_read; - version = read_1_byte (abfd, pubnames_ptr); - pubnames_ptr += 1; - info_offset = read_4_bytes (abfd, pubnames_ptr); - pubnames_ptr += 4; - info_size = read_4_bytes (abfd, pubnames_ptr); - pubnames_ptr += 4; - } - - aranges_buffer = dwarf2_read_section (objfile, - dwarf_aranges_section); - + dwarf2_build_psymtabs_hard (objfile); } -#endif /* Return TRUE if OFFSET is within CU_HEADER. */ @@ -1540,6 +1456,7 @@ offset_in_cu_p (const struct comp_unit_head *cu_header, unsigned int offset) unsigned int top = (cu_header->offset + cu_header->length + cu_header->initial_length_size); + return (offset >= bottom && offset < top); } @@ -1583,10 +1500,10 @@ partial_read_comp_unit_head (struct comp_unit_head *header, gdb_byte *info_ptr, info_ptr = read_comp_unit_head (header, info_ptr, abfd); - if (header->version != 2 && header->version != 3) + if (header->version != 2 && header->version != 3 && header->version != 4) error (_("Dwarf Error: wrong version in compilation unit header " - "(is %d, should be %d) [in module %s]"), header->version, - 2, bfd_get_filename (abfd)); + "(is %d, should be 2, 3, or 4) [in module %s]"), header->version, + bfd_get_filename (abfd)); if (header->abbrev_offset >= dwarf2_per_objfile->abbrev.size) error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header " @@ -1614,9 +1531,10 @@ read_type_comp_unit_head (struct comp_unit_head *cu_header, ULONGEST *signature, gdb_byte *types_ptr, bfd *abfd) { - unsigned int bytes_read; gdb_byte *initial_types_ptr = types_ptr; + dwarf2_read_section (dwarf2_per_objfile->objfile, + &dwarf2_per_objfile->types); cu_header->offset = types_ptr - dwarf2_per_objfile->types.buffer; types_ptr = read_comp_unit_head (cu_header, types_ptr, abfd); @@ -1664,22 +1582,25 @@ dwarf2_create_include_psymtab (char *name, struct partial_symtab *pst, /* Read the Line Number Program data and extract the list of files included by the source file represented by PST. Build an include - partial symtab for each of these included files. - - This procedure assumes that there *is* a Line Number Program in - the given CU. Callers should check that PDI->HAS_STMT_LIST is set - before calling this procedure. */ + partial symtab for each of these included files. */ static void dwarf2_build_include_psymtabs (struct dwarf2_cu *cu, - struct partial_die_info *pdi, + struct die_info *die, struct partial_symtab *pst) { struct objfile *objfile = cu->objfile; bfd *abfd = objfile->obfd; - struct line_header *lh; + struct line_header *lh = NULL; + struct attribute *attr; + + attr = dwarf2_attr (die, DW_AT_stmt_list, cu); + if (attr) + { + unsigned int line_offset = DW_UNSND (attr); - lh = dwarf_decode_line_header (pdi->line_offset, abfd, cu); + lh = dwarf_decode_line_header (line_offset, abfd, cu); + } if (lh == NULL) return; /* No linetable, so no includes. */ @@ -1692,6 +1613,7 @@ static hashval_t hash_type_signature (const void *item) { const struct signatured_type *type_sig = item; + /* This drops the top 32 bits of the signature, but is ok for a hash. */ return type_sig->signature; } @@ -1701,6 +1623,7 @@ eq_type_signature (const void *item_lhs, const void *item_rhs) { const struct signatured_type *lhs = item_lhs; const struct signatured_type *rhs = item_rhs; + return lhs->signature == rhs->signature; } @@ -1711,9 +1634,12 @@ eq_type_signature (const void *item_lhs, const void *item_rhs) static int create_debug_types_hash_table (struct objfile *objfile) { - gdb_byte *info_ptr = dwarf2_per_objfile->types.buffer; + gdb_byte *info_ptr; htab_t types_htab; + dwarf2_read_section (objfile, &dwarf2_per_objfile->types); + info_ptr = dwarf2_per_objfile->types.buffer; + if (info_ptr == NULL) { dwarf2_per_objfile->signatured_types = NULL; @@ -1810,6 +1736,57 @@ lookup_signatured_type (struct objfile *objfile, ULONGEST sig) return entry; } +/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */ + +static void +init_cu_die_reader (struct die_reader_specs *reader, + struct dwarf2_cu *cu) +{ + reader->abfd = cu->objfile->obfd; + reader->cu = cu; + if (cu->per_cu->from_debug_types) + { + gdb_assert (dwarf2_per_objfile->types.readin); + reader->buffer = dwarf2_per_objfile->types.buffer; + } + else + { + gdb_assert (dwarf2_per_objfile->info.readin); + reader->buffer = dwarf2_per_objfile->info.buffer; + } +} + +/* Find the base address of the compilation unit for range lists and + location lists. It will normally be specified by DW_AT_low_pc. + In DWARF-3 draft 4, the base address could be overridden by + DW_AT_entry_pc. It's been removed, but GCC still uses this for + compilation units with discontinuous ranges. */ + +static void +dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu) +{ + struct attribute *attr; + + cu->base_known = 0; + cu->base_address = 0; + + attr = dwarf2_attr (die, DW_AT_entry_pc, cu); + if (attr) + { + cu->base_address = DW_ADDR (attr); + cu->base_known = 1; + } + else + { + attr = dwarf2_attr (die, DW_AT_low_pc, cu); + if (attr) + { + cu->base_address = DW_ADDR (attr); + cu->base_known = 1; + } + } +} + /* Subroutine of process_type_comp_unit and dwarf2_build_psymtabs_hard to combine the common parts. Process a compilation unit for a psymtab. @@ -1826,13 +1803,15 @@ process_psymtab_comp_unit (struct objfile *objfile, { bfd *abfd = objfile->obfd; gdb_byte *beg_of_comp_unit = info_ptr; - struct partial_die_info comp_unit_die; + struct die_info *comp_unit_die; struct partial_symtab *pst; CORE_ADDR baseaddr; struct cleanup *back_to_inner; struct dwarf2_cu cu; - struct abbrev_info *abbrev; - unsigned int bytes_read; + int has_children, has_pc_info; + struct attribute *attr; + CORE_ADDR best_lowpc = 0, best_highpc = 0; + struct die_reader_specs reader_specs; memset (&cu, 0, sizeof (cu)); cu.objfile = objfile; @@ -1850,6 +1829,22 @@ process_psymtab_comp_unit (struct objfile *objfile, cu.list_in_scope = &file_symbols; + /* If this compilation unit was already read in, free the + cached copy in order to read it in again. This is + necessary because we skipped some symbols when we first + read in the compilation unit (see load_partial_dies). + This problem could be avoided, but the benefit is + unclear. */ + if (this_cu->cu != NULL) + free_one_cached_comp_unit (this_cu->cu); + + /* Note that this is a pointer to our stack frame, being + added to a global data structure. It will be cleaned up + in free_stack_comp_unit when we finish with this + compilation unit. */ + this_cu->cu = &cu; + cu.per_cu = this_cu; + /* Read the abbrevs for this compilation unit into a table. */ dwarf2_read_abbrevs (abfd, &cu); make_cleanup (dwarf2_free_abbrev_table, &cu); @@ -1857,9 +1852,9 @@ process_psymtab_comp_unit (struct objfile *objfile, /* Read the compilation unit die. */ if (this_cu->from_debug_types) info_ptr += 8 /*signature*/ + cu.header.offset_size; - abbrev = peek_die_abbrev (info_ptr, &bytes_read, &cu); - info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read, abfd, - buffer, info_ptr, &cu); + init_cu_die_reader (&reader_specs, &cu); + info_ptr = read_full_die (&reader_specs, &comp_unit_die, info_ptr, + &has_children); if (this_cu->from_debug_types) { @@ -1867,7 +1862,7 @@ process_psymtab_comp_unit (struct objfile *objfile, this_cu->offset = cu.header.offset; this_cu->length = cu.header.length + cu.header.initial_length_size; } - else if (comp_unit_die.tag == DW_TAG_partial_unit) + else if (comp_unit_die->tag == DW_TAG_partial_unit) { info_ptr = (beg_of_comp_unit + cu.header.length + cu.header.initial_length_size); @@ -1876,67 +1871,51 @@ process_psymtab_comp_unit (struct objfile *objfile, } /* Set the language we're debugging. */ - set_cu_language (comp_unit_die.language, &cu); + attr = dwarf2_attr (comp_unit_die, DW_AT_language, &cu); + if (attr) + set_cu_language (DW_UNSND (attr), &cu); + else + set_cu_language (language_minimal, &cu); /* Allocate a new partial symbol table structure. */ + attr = dwarf2_attr (comp_unit_die, DW_AT_name, &cu); pst = start_psymtab_common (objfile, objfile->section_offsets, - comp_unit_die.name ? comp_unit_die.name : "", + (attr != NULL) ? DW_STRING (attr) : "", /* TEXTLOW and TEXTHIGH are set below. */ 0, objfile->global_psymbols.next, objfile->static_psymbols.next); - if (comp_unit_die.dirname) - pst->dirname = obsavestring (comp_unit_die.dirname, - strlen (comp_unit_die.dirname), - &objfile->objfile_obstack); + attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, &cu); + if (attr != NULL) + pst->dirname = DW_STRING (attr); - pst->read_symtab_private = (char *) this_cu; + pst->read_symtab_private = this_cu; baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); /* Store the function that reads in the rest of the symbol table */ pst->read_symtab = dwarf2_psymtab_to_symtab; - /* If this compilation unit was already read in, free the - cached copy in order to read it in again. This is - necessary because we skipped some symbols when we first - read in the compilation unit (see load_partial_dies). - This problem could be avoided, but the benefit is - unclear. */ - if (this_cu->cu != NULL) - free_one_cached_comp_unit (this_cu->cu); - - cu.per_cu = this_cu; - - /* Note that this is a pointer to our stack frame, being - added to a global data structure. It will be cleaned up - in free_stack_comp_unit when we finish with this - compilation unit. */ - this_cu->cu = &cu; - this_cu->psymtab = pst; + dwarf2_find_base_address (comp_unit_die, &cu); + /* Possibly set the default values of LOWPC and HIGHPC from `DW_AT_ranges'. */ - if (cu.has_ranges_offset) - { - if (dwarf2_ranges_read (cu.ranges_offset, &comp_unit_die.lowpc, - &comp_unit_die.highpc, &cu, pst)) - comp_unit_die.has_pc_info = 1; - } - else if (comp_unit_die.has_pc_info - && comp_unit_die.lowpc < comp_unit_die.highpc) + has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc, + &best_highpc, &cu, pst); + if (has_pc_info == 1 && best_lowpc < best_highpc) /* Store the contiguous range if it is not empty; it can be empty for CUs with no code. */ addrmap_set_empty (objfile->psymtabs_addrmap, - comp_unit_die.lowpc + baseaddr, - comp_unit_die.highpc + baseaddr - 1, pst); + best_lowpc + baseaddr, + best_highpc + baseaddr - 1, pst); /* Check if comp unit has_children. If so, read the rest of the partial symbols from this comp unit. If not, there's no more debug_info for this comp unit. */ - if (comp_unit_die.has_children) + if (has_children) { struct partial_die_info *first_die; CORE_ADDR lowpc, highpc; @@ -1947,7 +1926,7 @@ process_psymtab_comp_unit (struct objfile *objfile, first_die = load_partial_dies (abfd, buffer, info_ptr, 1, &cu); scan_partial_symbols (first_die, &lowpc, &highpc, - ! comp_unit_die.has_pc_info, &cu); + ! has_pc_info, &cu); /* If we didn't find a lowpc, set it to highpc to avoid complaints from `maint check'. */ @@ -1956,14 +1935,14 @@ process_psymtab_comp_unit (struct objfile *objfile, /* If the compilation unit didn't have an explicit address range, then use the information extracted from its child dies. */ - if (! comp_unit_die.has_pc_info) + if (! has_pc_info) { - comp_unit_die.lowpc = lowpc; - comp_unit_die.highpc = highpc; + best_lowpc = lowpc; + best_highpc = highpc; } } - pst->textlow = comp_unit_die.lowpc + baseaddr; - pst->texthigh = comp_unit_die.highpc + baseaddr; + pst->textlow = best_lowpc + baseaddr; + pst->texthigh = best_highpc + baseaddr; pst->n_global_syms = objfile->global_psymbols.next - (objfile->global_psymbols.list + pst->globals_offset); @@ -1971,12 +1950,6 @@ process_psymtab_comp_unit (struct objfile *objfile, (objfile->static_psymbols.list + pst->statics_offset); sort_pst_symbols (pst); - /* If there is already a psymtab or symtab for a file of this - name, remove it. (If there is a symtab, more drastic things - also happen.) This happens in VxWorks. */ - if (! this_cu->from_debug_types) - free_named_symtabs (pst->filename); - info_ptr = (beg_of_comp_unit + cu.header.length + cu.header.initial_length_size); @@ -1985,11 +1958,11 @@ process_psymtab_comp_unit (struct objfile *objfile, /* It's not clear we want to do anything with stmt lists here. Waiting to see what gcc ultimately does. */ } - else if (comp_unit_die.has_stmt_list) + else { /* Get the list of files included in the current compilation unit, and build a psymtab for each of them. */ - dwarf2_build_include_psymtabs (&cu, &comp_unit_die, pst); + dwarf2_build_include_psymtabs (&cu, comp_unit_die, pst); } do_cleanups (back_to_inner); @@ -2010,6 +1983,7 @@ process_type_comp_unit (void **slot, void *info) this_cu = &entry->per_cu; this_cu->from_debug_types = 1; + gdb_assert (dwarf2_per_objfile->types.readin); process_psymtab_comp_unit (objfile, this_cu, dwarf2_per_objfile->types.buffer, dwarf2_per_objfile->types.buffer + entry->offset, @@ -2031,18 +2005,27 @@ build_type_psymtabs (struct objfile *objfile) process_type_comp_unit, objfile); } +/* A cleanup function that clears objfile's psymtabs_addrmap field. */ + +static void +psymtabs_addrmap_cleanup (void *o) +{ + struct objfile *objfile = o; + + objfile->psymtabs_addrmap = NULL; +} + /* Build the partial symbol table by doing a quick pass through the .debug_info and .debug_abbrev sections. */ static void -dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline) +dwarf2_build_psymtabs_hard (struct objfile *objfile) { - /* Instead of reading this into a big buffer, we should probably use - mmap() on architectures that support it. (FIXME) */ - bfd *abfd = objfile->obfd; gdb_byte *info_ptr; - struct cleanup *back_to; + struct cleanup *back_to, *addrmap_cleanup; + struct obstack temp_obstack; + dwarf2_read_section (objfile, &dwarf2_per_objfile->info); info_ptr = dwarf2_per_objfile->info.buffer; /* Any cached compilation units will be linked by the per-objfile @@ -2053,8 +2036,12 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline) create_all_comp_units (objfile); - objfile->psymtabs_addrmap = - addrmap_create_mutable (&objfile->objfile_obstack); + /* Create a temporary address map on a temporary obstack. We later + copy this to the final obstack. */ + obstack_init (&temp_obstack); + make_cleanup_obstack_free (&temp_obstack); + objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack); + addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile); /* Since the objects we're extracting from .debug_info vary in length, only the individual functions to extract them (like @@ -2086,6 +2073,7 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline) objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap, &objfile->objfile_obstack); + discard_cleanups (addrmap_cleanup); do_cleanups (back_to); } @@ -2098,14 +2086,16 @@ load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu, { bfd *abfd = objfile->obfd; gdb_byte *info_ptr, *beg_of_comp_unit; - struct partial_die_info comp_unit_die; + struct die_info *comp_unit_die; struct dwarf2_cu *cu; - struct abbrev_info *abbrev; - unsigned int bytes_read; struct cleanup *back_to; + struct attribute *attr; + int has_children; + struct die_reader_specs reader_specs; gdb_assert (! this_cu->from_debug_types); + gdb_assert (dwarf2_per_objfile->info.readin); info_ptr = dwarf2_per_objfile->info.buffer + this_cu->offset; beg_of_comp_unit = info_ptr; @@ -2113,6 +2103,11 @@ load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu, /* ??? Missing cleanup for CU? */ + /* Link this compilation unit into the compilation unit tree. */ + this_cu->cu = cu; + cu->per_cu = this_cu; + cu->type_hash = this_cu->type_hash; + info_ptr = partial_read_comp_unit_head (&cu->header, info_ptr, dwarf2_per_objfile->info.buffer, dwarf2_per_objfile->info.size, @@ -2127,22 +2122,21 @@ load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu, back_to = make_cleanup (dwarf2_free_abbrev_table, cu); /* Read the compilation unit die. */ - abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu); - info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read, abfd, - dwarf2_per_objfile->info.buffer, info_ptr, cu); + init_cu_die_reader (&reader_specs, cu); + info_ptr = read_full_die (&reader_specs, &comp_unit_die, info_ptr, + &has_children); /* Set the language we're debugging. */ - set_cu_language (comp_unit_die.language, cu); - - /* Link this compilation unit into the compilation unit tree. */ - this_cu->cu = cu; - cu->per_cu = this_cu; - cu->type_hash = this_cu->type_hash; + attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu); + if (attr) + set_cu_language (DW_UNSND (attr), cu); + else + set_cu_language (language_minimal, cu); /* Check if comp unit has_children. If so, read the rest of the partial symbols from this comp unit. If not, there's no more debug_info for this comp unit. */ - if (comp_unit_die.has_children) + if (has_children) load_partial_dies (abfd, dwarf2_per_objfile->info.buffer, info_ptr, 0, cu); do_cleanups (back_to); @@ -2159,17 +2153,19 @@ create_all_comp_units (struct objfile *objfile) int n_allocated; int n_comp_units; struct dwarf2_per_cu_data **all_comp_units; - gdb_byte *info_ptr = dwarf2_per_objfile->info.buffer; + gdb_byte *info_ptr; + + dwarf2_read_section (objfile, &dwarf2_per_objfile->info); + info_ptr = dwarf2_per_objfile->info.buffer; n_comp_units = 0; n_allocated = 10; all_comp_units = xmalloc (n_allocated * sizeof (struct dwarf2_per_cu_data *)); - + while (info_ptr < dwarf2_per_objfile->info.buffer + dwarf2_per_objfile->info.size) { unsigned int length, initial_length_size; - gdb_byte *beg_of_comp_unit; struct dwarf2_per_cu_data *this_cu; unsigned int offset; @@ -2219,8 +2215,6 @@ static void scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc, CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu) { - struct objfile *objfile = cu->objfile; - bfd *abfd = objfile->obfd; struct partial_die_info *pdi; /* Now, march along the PDI's, descending into ones which have @@ -2233,12 +2227,12 @@ scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc, { fixup_partial_die (pdi, cu); - /* Anonymous namespaces have no name but have interesting + /* Anonymous namespaces or modules have no name but have interesting children, so we need to look at them. Ditto for anonymous enums. */ if (pdi->name != NULL || pdi->tag == DW_TAG_namespace - || pdi->tag == DW_TAG_enumeration_type) + || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type) { switch (pdi->tag) { @@ -2337,19 +2331,34 @@ partial_die_parent_scope (struct partial_die_info *pdi, grandparent_scope = partial_die_parent_scope (parent, cu); + /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus + DW_TAG_namespace DIEs with a name of "::" for the global namespace. + Work around this problem here. */ + if (cu->language == language_cplus + && parent->tag == DW_TAG_namespace + && strcmp (parent->name, "::") == 0 + && grandparent_scope == NULL) + { + parent->scope = NULL; + parent->scope_set = 1; + return NULL; + } + if (parent->tag == DW_TAG_namespace + || parent->tag == DW_TAG_module || parent->tag == DW_TAG_structure_type || parent->tag == DW_TAG_class_type || parent->tag == DW_TAG_interface_type - || parent->tag == DW_TAG_union_type) + || parent->tag == DW_TAG_union_type + || parent->tag == DW_TAG_enumeration_type) { if (grandparent_scope == NULL) parent->scope = parent->name; else parent->scope = typename_concat (&cu->comp_unit_obstack, grandparent_scope, - parent->name, cu); + parent->name, 0, cu); } - else if (parent->tag == DW_TAG_enumeration_type) + else if (parent->tag == DW_TAG_enumerator) /* Enumerators should not get the name of the enumeration as a prefix. */ parent->scope = grandparent_scope; else @@ -2379,7 +2388,7 @@ partial_die_full_name (struct partial_die_info *pdi, if (parent_scope == NULL) return NULL; else - return typename_concat (NULL, parent_scope, pdi->name, cu); + return typename_concat (NULL, parent_scope, pdi->name, 0, cu); } static void @@ -2388,19 +2397,15 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) struct objfile *objfile = cu->objfile; CORE_ADDR addr = 0; char *actual_name = NULL; - const char *my_prefix; const struct partial_symbol *psym = NULL; CORE_ADDR baseaddr; int built_actual_name = 0; baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); - if (pdi_needs_namespace (pdi->tag)) - { - actual_name = partial_die_full_name (pdi, cu); - if (actual_name) - built_actual_name = 1; - } + actual_name = partial_die_full_name (pdi, cu); + if (actual_name) + built_actual_name = 1; if (actual_name == NULL) actual_name = pdi->name; @@ -2417,6 +2422,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr, mst_text, objfile); */ psym = add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, VAR_DOMAIN, LOC_BLOCK, &objfile->global_psymbols, 0, pdi->lowpc + baseaddr, @@ -2427,6 +2433,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr, mst_file_text, objfile); */ psym = add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, VAR_DOMAIN, LOC_BLOCK, &objfile->static_psymbols, 0, pdi->lowpc + baseaddr, @@ -2453,6 +2460,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) addr = decode_locdesc (pdi->locdesc, cu); if (pdi->locdesc || pdi->has_type) psym = add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, VAR_DOMAIN, LOC_STATIC, &objfile->global_psymbols, 0, addr + baseaddr, @@ -2471,6 +2479,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) /*prim_record_minimal_symbol (actual_name, addr + baseaddr, mst_file_data, objfile); */ psym = add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, VAR_DOMAIN, LOC_STATIC, &objfile->static_psymbols, 0, addr + baseaddr, @@ -2481,12 +2490,14 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) case DW_TAG_base_type: case DW_TAG_subrange_type: add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, VAR_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, 0, (CORE_ADDR) 0, cu->language, objfile); break; case DW_TAG_namespace: add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, VAR_DOMAIN, LOC_TYPEDEF, &objfile->global_psymbols, 0, (CORE_ADDR) 0, cu->language, objfile); @@ -2511,6 +2522,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) /* NOTE: carlton/2003-10-07: See comment in new_symbol about static vs. global. */ add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, STRUCT_DOMAIN, LOC_TYPEDEF, (cu->language == language_cplus || cu->language == language_java) @@ -2521,6 +2533,7 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) break; case DW_TAG_enumerator: add_psymbol_to_list (actual_name, strlen (actual_name), + built_actual_name, VAR_DOMAIN, LOC_CONST, (cu->language == language_cplus || cu->language == language_java) @@ -2532,49 +2545,10 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu) break; } - /* Check to see if we should scan the name for possible namespace - info. Only do this if this is C++, if we don't have namespace - debugging info in the file, if the psym is of an appropriate type - (otherwise we'll have psym == NULL), and if we actually had a - mangled name to begin with. */ - - /* FIXME drow/2004-02-22: Why don't we do this for classes, i.e. the - cases which do not set PSYM above? */ - - if (cu->language == language_cplus - && cu->has_namespace_info == 0 - && psym != NULL - && SYMBOL_CPLUS_DEMANGLED_NAME (psym) != NULL) - cp_check_possible_namespace_symbols (SYMBOL_CPLUS_DEMANGLED_NAME (psym), - objfile); - if (built_actual_name) xfree (actual_name); } -/* Determine whether a die of type TAG living in a C++ class or - namespace needs to have the name of the scope prepended to the - name listed in the die. */ - -static int -pdi_needs_namespace (enum dwarf_tag tag) -{ - switch (tag) - { - case DW_TAG_namespace: - case DW_TAG_typedef: - case DW_TAG_class_type: - case DW_TAG_interface_type: - case DW_TAG_structure_type: - case DW_TAG_union_type: - case DW_TAG_enumeration_type: - case DW_TAG_enumerator: - return 1; - default: - return 0; - } -} - /* Read a partial die corresponding to a namespace; also, add a symbol corresponding to that namespace to the symbol table. NAMESPACE is the name of the enclosing namespace. */ @@ -2584,8 +2558,6 @@ add_partial_namespace (struct partial_die_info *pdi, CORE_ADDR *lowpc, CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu) { - struct objfile *objfile = cu->objfile; - /* Add a symbol for the namespace. */ add_partial_symbol (pdi, cu); @@ -2602,9 +2574,7 @@ static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc, CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu) { - /* Now scan partial symbols in that module. - - FIXME: Support the separate Fortran module namespaces. */ + /* Now scan partial symbols in that module. */ if (pdi->has_children) scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu); @@ -2614,7 +2584,7 @@ add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc, symbol for that subprogram. When the CU language allows it, this routine also defines a partial symbol for each nested subprogram that this subprogram contains. - + DIE my also be a lexical block, in which case we simply search recursively for suprograms defined inside that lexical block. Again, this is only performed when the CU language allows this @@ -2641,14 +2611,19 @@ add_partial_subprogram (struct partial_die_info *pdi, baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); addrmap_set_empty (objfile->psymtabs_addrmap, - pdi->lowpc, pdi->highpc - 1, + pdi->lowpc + baseaddr, + pdi->highpc - 1 + baseaddr, cu->per_cu->psymtab); } if (!pdi->is_declaration) - add_partial_symbol (pdi, cu); + /* Ignore subprogram DIEs that do not have a name, they are + illegal. Do not emit a complaint at this point, we will + do so when we convert this psymtab into a symtab. */ + if (pdi->name) + add_partial_symbol (pdi, cu); } } - + if (! pdi->has_children) return; @@ -2685,7 +2660,6 @@ guess_structure_name (struct partial_die_info *struct_pdi, could fix this by only using the demangled name to get the prefix (but see comment in read_structure_type). */ - struct partial_die_info *child_pdi = struct_pdi->die_child; struct partial_die_info *real_pdi; /* If this DIE (this DIE's specification, if any) has a parent, then @@ -2698,27 +2672,6 @@ guess_structure_name (struct partial_die_info *struct_pdi, if (real_pdi->die_parent != NULL) return; - - while (child_pdi != NULL) - { - if (child_pdi->tag == DW_TAG_subprogram) - { - char *actual_class_name - = language_class_name_from_physname (cu->language_defn, - child_pdi->name); - if (actual_class_name != NULL) - { - struct_pdi->name - = obsavestring (actual_class_name, - strlen (actual_class_name), - &cu->comp_unit_obstack); - xfree (actual_class_name); - } - break; - } - - child_pdi = child_pdi->die_sibling; - } } } @@ -2728,8 +2681,6 @@ static void add_partial_enumeration (struct partial_die_info *enum_pdi, struct dwarf2_cu *cu) { - struct objfile *objfile = cu->objfile; - bfd *abfd = objfile->obfd; struct partial_die_info *pdi; if (enum_pdi->name != NULL) @@ -2827,8 +2778,15 @@ skip_one_die (gdb_byte *buffer, gdb_byte *info_ptr, skip_attribute: switch (form) { - case DW_FORM_addr: case DW_FORM_ref_addr: + /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3 + and later it is offset sized. */ + if (cu->header.version == 2) + info_ptr += cu->header.addr_size; + else + info_ptr += cu->header.offset_size; + break; + case DW_FORM_addr: info_ptr += cu->header.addr_size; break; case DW_FORM_data1: @@ -2836,6 +2794,8 @@ skip_one_die (gdb_byte *buffer, gdb_byte *info_ptr, case DW_FORM_flag: info_ptr += 1; break; + case DW_FORM_flag_present: + break; case DW_FORM_data2: case DW_FORM_ref2: info_ptr += 2; @@ -2853,9 +2813,11 @@ skip_one_die (gdb_byte *buffer, gdb_byte *info_ptr, read_string (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; break; + case DW_FORM_sec_offset: case DW_FORM_strp: info_ptr += cu->header.offset_size; break; + case DW_FORM_exprloc: case DW_FORM_block: info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; @@ -2951,6 +2913,7 @@ dwarf2_psymtab_to_symtab (struct partial_symtab *pst) struct dwarf2_per_objfile *dpo_backlink = objfile_data (pst->objfile->separate_debug_objfile_backlink, dwarf2_objfile_data_key); + dwarf2_per_objfile->has_section_at_zero = dpo_backlink->has_section_at_zero; } @@ -3062,7 +3025,7 @@ psymtab_to_symtab_1 (struct partial_symtab *pst) psymtab_to_symtab_1 (pst->dependencies[i]); } - per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private; + per_cu = pst->read_symtab_private; if (per_cu == NULL) { @@ -3101,13 +3064,13 @@ load_full_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile) gdb_byte *info_ptr, *beg_of_comp_unit; struct cleanup *back_to, *free_cu_cleanup; struct attribute *attr; - CORE_ADDR baseaddr; gdb_assert (! per_cu->from_debug_types); /* Set local variables from the partial symbol table info. */ offset = per_cu->offset; + dwarf2_read_section (objfile, &dwarf2_per_objfile->info); info_ptr = dwarf2_per_objfile->info.buffer + offset; beg_of_comp_unit = info_ptr; @@ -3144,6 +3107,12 @@ load_full_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile) else set_cu_language (language_minimal, cu); + /* Similarly, if we do not read the producer, we can not apply + producer-specific interpretation. */ + attr = dwarf2_attr (cu->dies, DW_AT_producer, cu); + if (attr) + cu->producer = DW_STRING (attr); + /* Link this CU into read_in_chain. */ per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain; dwarf2_per_objfile->read_in_chain = per_cu; @@ -3164,11 +3133,9 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu) struct partial_symtab *pst = per_cu->psymtab; struct dwarf2_cu *cu = per_cu->cu; struct objfile *objfile = pst->objfile; - bfd *abfd = objfile->obfd; CORE_ADDR lowpc, highpc; struct symtab *symtab; struct cleanup *back_to; - struct attribute *attr; CORE_ADDR baseaddr; baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); @@ -3178,30 +3145,7 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu) cu->list_in_scope = &file_symbols; - /* Find the base address of the compilation unit for range lists and - location lists. It will normally be specified by DW_AT_low_pc. - In DWARF-3 draft 4, the base address could be overridden by - DW_AT_entry_pc. It's been removed, but GCC still uses this for - compilation units with discontinuous ranges. */ - - cu->base_known = 0; - cu->base_address = 0; - - attr = dwarf2_attr (cu->dies, DW_AT_entry_pc, cu); - if (attr) - { - cu->base_address = DW_ADDR (attr); - cu->base_known = 1; - } - else - { - attr = dwarf2_attr (cu->dies, DW_AT_low_pc, cu); - if (attr) - { - cu->base_address = DW_ADDR (attr); - cu->base_known = 1; - } - } + dwarf2_find_base_address (cu->dies, cu); /* Do line number decoding in read_file_scope () */ process_die (cu->dies, cu); @@ -3290,6 +3234,7 @@ process_die (struct die_info *die, struct dwarf2_cu *cu) read_namespace (die, cu); break; case DW_TAG_module: + processing_has_namespace_info = 1; read_module (die, cu); break; case DW_TAG_imported_declaration: @@ -3307,42 +3252,193 @@ process_die (struct die_info *die, struct dwarf2_cu *cu) } } +/* A helper function for dwarf2_compute_name which determines whether DIE + needs to have the name of the scope prepended to the name listed in the + die. */ + +static int +die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu) +{ + struct attribute *attr; + + switch (die->tag) + { + case DW_TAG_namespace: + case DW_TAG_typedef: + case DW_TAG_class_type: + case DW_TAG_interface_type: + case DW_TAG_structure_type: + case DW_TAG_union_type: + case DW_TAG_enumeration_type: + case DW_TAG_enumerator: + case DW_TAG_subprogram: + case DW_TAG_member: + return 1; + + case DW_TAG_variable: + /* We only need to prefix "globally" visible variables. These include + any variable marked with DW_AT_external or any variable that + lives in a namespace. [Variables in anonymous namespaces + require prefixing, but they are not DW_AT_external.] */ + + if (dwarf2_attr (die, DW_AT_specification, cu)) + { + struct dwarf2_cu *spec_cu = cu; + + return die_needs_namespace (die_specification (die, &spec_cu), + spec_cu); + } + + attr = dwarf2_attr (die, DW_AT_external, cu); + if (attr == NULL && die->parent->tag != DW_TAG_namespace + && die->parent->tag != DW_TAG_module) + return 0; + /* A variable in a lexical block of some kind does not need a + namespace, even though in C++ such variables may be external + and have a mangled name. */ + if (die->parent->tag == DW_TAG_lexical_block + || die->parent->tag == DW_TAG_try_block + || die->parent->tag == DW_TAG_catch_block + || die->parent->tag == DW_TAG_subprogram) + return 0; + return 1; + + default: + return 0; + } +} + +/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero, + compute the physname for the object, which include a method's + formal parameters (C++/Java) and return type (Java). + + For Ada, return the DIE's linkage name rather than the fully qualified + name. PHYSNAME is ignored.. + + The result is allocated on the objfile_obstack and canonicalized. */ + +static const char * +dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu, + int physname) +{ + if (name == NULL) + name = dwarf2_name (die, cu); + + /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise + compute it by typename_concat inside GDB. */ + if (cu->language == language_ada + || (cu->language == language_fortran && physname)) + { + /* For Ada unit, we prefer the linkage name over the name, as + the former contains the exported name, which the user expects + to be able to reference. Ideally, we want the user to be able + to reference this entity using either natural or linkage name, + but we haven't started looking at this enhancement yet. */ + struct attribute *attr; + + attr = dwarf2_attr (die, DW_AT_linkage_name, cu); + if (attr == NULL) + attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu); + if (attr && DW_STRING (attr)) + return DW_STRING (attr); + } + + /* These are the only languages we know how to qualify names in. */ + if (name != NULL + && (cu->language == language_cplus || cu->language == language_java + || cu->language == language_fortran)) + { + if (die_needs_namespace (die, cu)) + { + long length; + char *prefix; + struct ui_file *buf; + + prefix = determine_prefix (die, cu); + buf = mem_fileopen (); + if (*prefix != '\0') + { + char *prefixed_name = typename_concat (NULL, prefix, name, + physname, cu); + + fputs_unfiltered (prefixed_name, buf); + xfree (prefixed_name); + } + else + fputs_unfiltered (name ? name : "", buf); + + /* For Java and C++ methods, append formal parameter type + information, if PHYSNAME. */ + + if (physname && die->tag == DW_TAG_subprogram + && (cu->language == language_cplus + || cu->language == language_java)) + { + struct type *type = read_type_die (die, cu); + + c_type_print_args (type, buf, 0, cu->language); + + if (cu->language == language_java) + { + /* For java, we must append the return type to method + names. */ + if (die->tag == DW_TAG_subprogram) + java_print_type (TYPE_TARGET_TYPE (type), "", buf, + 0, 0); + } + else if (cu->language == language_cplus) + { + if (TYPE_NFIELDS (type) > 0 + && TYPE_FIELD_ARTIFICIAL (type, 0) + && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 0)))) + fputs_unfiltered (" const", buf); + } + } + + name = ui_file_obsavestring (buf, &cu->objfile->objfile_obstack, + &length); + ui_file_delete (buf); + + if (cu->language == language_cplus) + { + char *cname + = dwarf2_canonicalize_name (name, cu, + &cu->objfile->objfile_obstack); + + if (cname != NULL) + name = cname; + } + } + } + + return name; +} + /* Return the fully qualified name of DIE, based on its DW_AT_name. If scope qualifiers are appropriate they will be added. The result will be allocated on the objfile_obstack, or NULL if the DIE does - not have a name. */ + not have a name. NAME may either be from a previous call to + dwarf2_name or NULL. + + The output string will be canonicalized (if C++/Java). */ static const char * -dwarf2_full_name (struct die_info *die, struct dwarf2_cu *cu) +dwarf2_full_name (char *name, struct die_info *die, struct dwarf2_cu *cu) { - struct attribute *attr; - char *prefix, *name; - struct ui_file *buf = NULL; + return dwarf2_compute_name (name, die, cu, 0); +} - name = dwarf2_name (die, cu); - if (!name) - return NULL; +/* Construct a physname for the given DIE in CU. NAME may either be + from a previous call to dwarf2_name or NULL. The result will be + allocated on the objfile_objstack or NULL if the DIE does not have a + name. - /* These are the only languages we know how to qualify names in. */ - if (cu->language != language_cplus - && cu->language != language_java) - return name; - - /* If no prefix is necessary for this type of DIE, return the - unqualified name. The other three tags listed could be handled - in pdi_needs_namespace, but that requires broader changes. */ - if (!pdi_needs_namespace (die->tag) - && die->tag != DW_TAG_subprogram - && die->tag != DW_TAG_variable - && die->tag != DW_TAG_member) - return name; - - prefix = determine_prefix (die, cu); - if (*prefix != '\0') - name = typename_concat (&cu->objfile->objfile_obstack, prefix, - name, cu); + The output string will be canonicalized (if C++/Java). */ - return name; +static const char * +dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu) +{ + return dwarf2_compute_name (name, die, cu, 1); } /* Read the import statement specified by the given die and record it. */ @@ -3352,10 +3448,15 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu) { struct attribute *import_attr; struct die_info *imported_die; + struct dwarf2_cu *imported_cu; const char *imported_name; const char *imported_name_prefix; + const char *canonical_name; + const char *import_alias; + const char *imported_declaration = NULL; const char *import_prefix; - char *canonical_name; + + char *temp; import_attr = dwarf2_attr (die, DW_AT_import, cu); if (import_attr == NULL) @@ -3365,8 +3466,9 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu) return; } - imported_die = follow_die_ref (die, import_attr, &cu); - imported_name = dwarf2_name (imported_die, cu); + imported_cu = cu; + imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu); + imported_name = dwarf2_name (imported_die, imported_cu); if (imported_name == NULL) { /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524 @@ -3404,29 +3506,39 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu) return; } - /* FIXME: dwarf2_name (die); for the local name after import. */ + /* Figure out the local name after import. */ + import_alias = dwarf2_name (die, cu); /* Figure out where the statement is being imported to. */ import_prefix = determine_prefix (die, cu); /* Figure out what the scope of the imported die is and prepend it to the name of the imported die. */ - imported_name_prefix = determine_prefix (imported_die, cu); + imported_name_prefix = determine_prefix (imported_die, imported_cu); - if (strlen (imported_name_prefix) > 0) + if (imported_die->tag != DW_TAG_namespace + && imported_die->tag != DW_TAG_module) { - canonical_name = alloca (strlen (imported_name_prefix) + 2 + strlen (imported_name) + 1); - strcpy (canonical_name, imported_name_prefix); - strcat (canonical_name, "::"); - strcat (canonical_name, imported_name); + imported_declaration = imported_name; + canonical_name = imported_name_prefix; } - else + else if (strlen (imported_name_prefix) > 0) { - canonical_name = alloca (strlen (imported_name) + 1); - strcpy (canonical_name, imported_name); + temp = alloca (strlen (imported_name_prefix) + + 2 + strlen (imported_name) + 1); + strcpy (temp, imported_name_prefix); + strcat (temp, "::"); + strcat (temp, imported_name); + canonical_name = temp; } + else + canonical_name = imported_name; - using_directives = cp_add_using (import_prefix,canonical_name, using_directives); + cp_add_using_directive (import_prefix, + canonical_name, + import_alias, + imported_declaration, + &cu->objfile->objfile_obstack); } static void @@ -3448,7 +3560,6 @@ static void read_file_scope (struct die_info *die, struct dwarf2_cu *cu) { struct objfile *objfile = cu->objfile; - struct comp_unit_head *cu_header = &cu->header; struct cleanup *back_to = make_cleanup (null_cleanup, 0); CORE_ADDR lowpc = ((CORE_ADDR) -1); CORE_ADDR highpc = ((CORE_ADDR) 0); @@ -3459,7 +3570,7 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu) bfd *abfd = objfile->obfd; struct line_header *line_header = 0; CORE_ADDR baseaddr; - + baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); get_scope_pc_bounds (die, &lowpc, &highpc, cu); @@ -3508,7 +3619,7 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu) } attr = dwarf2_attr (die, DW_AT_producer, cu); - if (attr) + if (attr) cu->producer = DW_STRING (attr); /* We assume that we're processing GCC output. */ @@ -3557,6 +3668,7 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu) if (attr && line_header) { unsigned int macro_offset = DW_UNSND (attr); + dwarf_decode_macros (line_header, macro_offset, comp_dir, abfd, cu); } @@ -3578,7 +3690,6 @@ read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu) char *comp_dir = NULL; struct die_info *child_die; bfd *abfd = objfile->obfd; - struct line_header *line_header = 0; /* start_symtab needs a low pc, but we don't really have one. Do what read_file_scope would do in the absence of such info. */ @@ -3610,7 +3721,7 @@ read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu) /* This isn't technically needed today. It is done for symmetry with read_file_scope. */ attr = dwarf2_attr (die, DW_AT_producer, cu); - if (attr) + if (attr) cu->producer = DW_STRING (attr); /* We assume that we're processing GCC output. */ @@ -3726,6 +3837,7 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) but GCC versions at least through 4.4 generate this (GCC PR 40573). */ struct die_info *child_origin_die = child_die; + while (1) { attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin, cu); @@ -3811,12 +3923,27 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); - name = dwarf2_linkage_name (die, cu); + name = dwarf2_name (die, cu); - /* Ignore functions with missing or empty names and functions with - missing or invalid low and high pc attributes. */ - if (name == NULL || !dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu)) - return; + /* Ignore functions with missing or empty names. These are actually + illegal according to the DWARF standard. */ + if (name == NULL) + { + complaint (&symfile_complaints, + _("missing name for subprogram DIE at %d"), die->offset); + return; + } + + /* Ignore functions with missing or invalid low and high pc attributes. */ + if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)) + { + attr = dwarf2_attr (die, DW_AT_external, cu); + if (!attr || !DW_UNSND (attr)) + complaint (&symfile_complaints, + _("cannot get low and high bounds for subprogram DIE at %d"), + die->offset); + return; + } lowpc += baseaddr; highpc += baseaddr; @@ -3856,20 +3983,45 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) inherit_abstract_dies (die, cu); + /* If we have a DW_AT_specification, we might need to import using + directives from the context of the specification DIE. See the + comment in determine_prefix. */ + if (cu->language == language_cplus + && dwarf2_attr (die, DW_AT_specification, cu)) + { + struct dwarf2_cu *spec_cu = cu; + struct die_info *spec_die = die_specification (die, &spec_cu); + + while (spec_die) + { + child_die = spec_die->child; + while (child_die && child_die->tag) + { + if (child_die->tag == DW_TAG_imported_module) + process_die (child_die, spec_cu); + child_die = sibling_die (child_die); + } + + /* In some cases, GCC generates specification DIEs that + themselves contain DW_AT_specification attributes. */ + spec_die = die_specification (spec_die, &spec_cu); + } + } + new = pop_context (); /* Make a block for the local symbols within. */ block = finish_block (new->name, &local_symbols, new->old_blocks, lowpc, highpc, objfile); /* For C++, set the block's scope. */ - if (cu->language == language_cplus) + if (cu->language == language_cplus || cu->language == language_fortran) cp_set_block_scope (new->name, block, &objfile->objfile_obstack, determine_prefix (die, cu), processing_has_namespace_info); /* If we have address ranges, record them. */ dwarf2_record_block_ranges (die, block, baseaddr, cu); - + /* In C++, we can have functions nested inside functions (e.g., when a function declares a class that has methods). This means that when we finish processing a function scope, we may need to go @@ -3901,9 +4053,9 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu) /* Ignore blocks with missing or invalid low and high pc attributes. */ /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges as multiple lexical blocks? Handling children in a sane way would - be nasty. Might be easier to properly extend generic blocks to + be nasty. Might be easier to properly extend generic blocks to describe ranges. */ - if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu)) + if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)) return; lowpc += baseaddr; highpc += baseaddr; @@ -3920,7 +4072,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu) } new = pop_context (); - if (local_symbols != NULL) + if (local_symbols != NULL || using_directives != NULL) { struct block *block = finish_block (0, &local_symbols, new->old_blocks, new->start_addr, @@ -3970,6 +4122,7 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return, found_base = cu->base_known; base = cu->base_address; + dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges); if (offset >= dwarf2_per_objfile->ranges.size) { complaint (&symfile_complaints, @@ -4075,7 +4228,8 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return, discontinuous, i.e. derived from DW_AT_ranges information. */ static int dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, - CORE_ADDR *highpc, struct dwarf2_cu *cu) + CORE_ADDR *highpc, struct dwarf2_cu *cu, + struct partial_symtab *pst) { struct attribute *attr; CORE_ADDR low = 0; @@ -4103,7 +4257,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc, { /* Value of the DW_AT_ranges attribute is the offset in the .debug_ranges section. */ - if (!dwarf2_ranges_read (DW_UNSND (attr), &low, &high, cu, NULL)) + if (!dwarf2_ranges_read (DW_UNSND (attr), &low, &high, cu, pst)) return 0; /* Found discontinuous range of addresses. */ ret = -1; @@ -4142,7 +4296,7 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die, CORE_ADDR low, high; struct die_info *child = die->child; - if (dwarf2_get_pc_bounds (die, &low, &high, cu)) + if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL)) { *lowpc = min (*lowpc, low); *highpc = max (*highpc, high); @@ -4152,7 +4306,7 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die, subprograms or lexical blocks), we're done. */ if (cu->language != language_ada) return; - + /* Check all the children of the given DIE. If it contains nested subprograms, then check their pc bounds. Likewise, we need to check lexical blocks as well, as they may also contain subprogram @@ -4179,7 +4333,7 @@ get_scope_pc_bounds (struct die_info *die, CORE_ADDR best_high = (CORE_ADDR) 0; CORE_ADDR current_low, current_high; - if (dwarf2_get_pc_bounds (die, ¤t_low, ¤t_high, cu)) + if (dwarf2_get_pc_bounds (die, ¤t_low, ¤t_high, cu, NULL)) { best_low = current_low; best_high = current_high; @@ -4195,6 +4349,7 @@ get_scope_pc_bounds (struct die_info *die, dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu); break; case DW_TAG_namespace: + case DW_TAG_module: /* FIXME: carlton/2004-01-16: Should we do this for DW_TAG_class_type/DW_TAG_structure_type, too? I think that current GCC's always emit the DIEs corresponding @@ -4236,10 +4391,12 @@ dwarf2_record_block_ranges (struct die_info *die, struct block *block, if (attr) { CORE_ADDR high = DW_ADDR (attr); + attr = dwarf2_attr (die, DW_AT_low_pc, cu); if (attr) { CORE_ADDR low = DW_ADDR (attr); + record_block_range (block, baseaddr + low, baseaddr + high - 1); } } @@ -4271,6 +4428,7 @@ dwarf2_record_block_ranges (struct die_info *die, struct block *block, CORE_ADDR base = cu->base_address; int base_known = cu->base_known; + gdb_assert (dwarf2_per_objfile->ranges.readin); if (offset >= dwarf2_per_objfile->ranges.size) { complaint (&symfile_complaints, @@ -4310,8 +4468,8 @@ dwarf2_record_block_ranges (struct die_info *die, struct block *block, return; } - record_block_range (block, - baseaddr + base + start, + record_block_range (block, + baseaddr + base + start, baseaddr + base + end - 1); } } @@ -4323,7 +4481,7 @@ dwarf2_record_block_ranges (struct die_info *die, struct block *block, static void dwarf2_add_field (struct field_info *fip, struct die_info *die, struct dwarf2_cu *cu) -{ +{ struct objfile *objfile = cu->objfile; struct gdbarch *gdbarch = get_objfile_arch (objfile); struct nextfield *new_field; @@ -4335,8 +4493,17 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die, new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield)); make_cleanup (xfree, new_field); memset (new_field, 0, sizeof (struct nextfield)); - new_field->next = fip->fields; - fip->fields = new_field; + + if (die->tag == DW_TAG_inheritance) + { + new_field->next = fip->baseclasses; + fip->baseclasses = new_field; + } + else + { + new_field->next = fip->fields; + fip->fields = new_field; + } fip->nfields++; /* Handle accessibility and virtuality of field. @@ -4362,7 +4529,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die, if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu)) { /* Data member other than a C++ static data member. */ - + /* Get type of field. */ fp->type = die_type (die, cu); @@ -4453,6 +4620,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die, pointer or virtual base class pointer) to private. */ if (dwarf2_attr (die, DW_AT_artificial, cu)) { + FIELD_ARTIFICIAL (*fp) = 1; new_field->accessibility = DW_ACCESS_private; fip->non_public_fields = 1; } @@ -4465,7 +4633,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die, is a declaration, but all versions of G++ as of this writing (so through at least 3.2.1) incorrectly generate DW_TAG_variable tags. */ - + char *physname; /* Get name of field. */ @@ -4473,8 +4641,21 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die, if (fieldname == NULL) return; + attr = dwarf2_attr (die, DW_AT_const_value, cu); + if (attr + /* Only create a symbol if this is an external value. + new_symbol checks this and puts the value in the global symbol + table, which we want. If it is not external, new_symbol + will try to put the value in cu->list_in_scope which is wrong. */ + && dwarf2_flag_true_p (die, DW_AT_external, cu)) + { + /* A static const member, not much different than an enum as far as + we're concerned, except that we can support more types. */ + new_symbol (die, NULL, cu); + } + /* Get physical name. */ - physname = dwarf2_linkage_name (die, cu); + physname = (char *) dwarf2_physname (fieldname, die, cu); /* The name is already allocated along with this objfile, so we don't need to duplicate it for the type. */ @@ -4508,6 +4689,39 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die, } } +/* Add a typedef defined in the scope of the FIP's class. */ + +static void +dwarf2_add_typedef (struct field_info *fip, struct die_info *die, + struct dwarf2_cu *cu) +{ + struct objfile *objfile = cu->objfile; + struct gdbarch *gdbarch = get_objfile_arch (objfile); + struct typedef_field_list *new_field; + struct attribute *attr; + struct typedef_field *fp; + char *fieldname = ""; + + /* Allocate a new field list entry and link it in. */ + new_field = xzalloc (sizeof (*new_field)); + make_cleanup (xfree, new_field); + + gdb_assert (die->tag == DW_TAG_typedef); + + fp = &new_field->field; + + /* Get name of field. */ + fp->name = dwarf2_name (die, cu); + if (fp->name == NULL) + return; + + fp->type = read_type_die (die, cu); + + new_field->next = fip->typedef_field_list; + fip->typedef_field_list = new_field; + fip->typedef_field_list_count++; +} + /* Create the vector of fields, and attach it to the type. */ static void @@ -4523,7 +4737,7 @@ dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type, TYPE_ALLOC (type, sizeof (struct field) * nfields); memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields); - if (fip->non_public_fields) + if (fip->non_public_fields && cu->language != language_ada) { ALLOCATE_CPLUS_STRUCT_TYPE (type); @@ -4542,7 +4756,7 @@ dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type, /* If the type has baseclasses, allocate and clear a bit vector for TYPE_FIELD_VIRTUAL_BITS. */ - if (fip->nbaseclasses) + if (fip->nbaseclasses && cu->language != language_ada) { int num_bytes = B_BYTES (fip->nbaseclasses); unsigned char *pointer; @@ -4559,15 +4773,30 @@ dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type, up in the same order in the array in which they were added to the list. */ while (nfields-- > 0) { - TYPE_FIELD (type, nfields) = fip->fields->field; - switch (fip->fields->accessibility) + struct nextfield *fieldp; + + if (fip->fields) + { + fieldp = fip->fields; + fip->fields = fieldp->next; + } + else + { + fieldp = fip->baseclasses; + fip->baseclasses = fieldp->next; + } + + TYPE_FIELD (type, nfields) = fieldp->field; + switch (fieldp->accessibility) { case DW_ACCESS_private: - SET_TYPE_FIELD_PRIVATE (type, nfields); + if (cu->language != language_ada) + SET_TYPE_FIELD_PRIVATE (type, nfields); break; case DW_ACCESS_protected: - SET_TYPE_FIELD_PROTECTED (type, nfields); + if (cu->language != language_ada) + SET_TYPE_FIELD_PROTECTED (type, nfields); break; case DW_ACCESS_public: @@ -4577,21 +4806,22 @@ dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type, /* Unknown accessibility. Complain and treat it as public. */ { complaint (&symfile_complaints, _("unsupported accessibility %d"), - fip->fields->accessibility); + fieldp->accessibility); } break; } if (nfields < fip->nbaseclasses) { - switch (fip->fields->virtuality) + switch (fieldp->virtuality) { case DW_VIRTUALITY_virtual: case DW_VIRTUALITY_pure_virtual: + if (cu->language == language_ada) + error ("unexpected virtuality in component of Ada type"); SET_TYPE_FIELD_VIRTUAL (type, nfields); break; } } - fip->fields = fip->fields->next; } } @@ -4611,13 +4841,16 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, struct nextfnfield *new_fnfield; struct type *this_type; + if (cu->language == language_ada) + error ("unexpected member function in Ada type"); + /* Get name of member function. */ fieldname = dwarf2_name (die, cu); if (fieldname == NULL) return; /* Get the mangled name. */ - physname = dwarf2_linkage_name (die, cu); + physname = (char *) dwarf2_physname (fieldname, die, cu); /* Look up member function name in fieldlist. */ for (i = 0; i < fip->nfnfields; i++) @@ -4715,15 +4948,47 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, if (attr && DW_UNSND (attr) != 0) fnp->is_artificial = 1; - /* Get index in virtual function table if it is a virtual member function. */ + /* Get index in virtual function table if it is a virtual member + function. For older versions of GCC, this is an offset in the + appropriate virtual table, as specified by DW_AT_containing_type. + For everyone else, it is an expression to be evaluated relative + to the object address. */ + attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu); if (attr) { - /* Support the .debug_loc offsets */ - if (attr_form_is_block (attr)) + if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0) { - fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2; - } + if (DW_BLOCK (attr)->data[0] == DW_OP_constu) + { + /* Old-style GCC. */ + fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2; + } + else if (DW_BLOCK (attr)->data[0] == DW_OP_deref + || (DW_BLOCK (attr)->size > 1 + && DW_BLOCK (attr)->data[0] == DW_OP_deref_size + && DW_BLOCK (attr)->data[1] == cu->header.addr_size)) + { + struct dwarf_block blk; + int offset; + + offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref + ? 1 : 2); + blk.size = DW_BLOCK (attr)->size - offset; + blk.data = DW_BLOCK (attr)->data + offset; + fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu); + if ((fnp->voffset % cu->header.addr_size) != 0) + dwarf2_complex_location_expr_complaint (); + else + fnp->voffset /= cu->header.addr_size; + fnp->voffset += 2; + } + else + dwarf2_complex_location_expr_complaint (); + + if (!fnp->fcontext) + fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0)); + } else if (attr_form_is_section_offset (attr)) { dwarf2_complex_location_expr_complaint (); @@ -4733,7 +4998,20 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die, dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location", fieldname); } - } + } + else + { + attr = dwarf2_attr (die, DW_AT_virtuality, cu); + if (attr && DW_UNSND (attr)) + { + /* GCC does this, as of 2008-08-25; PR debug/37237. */ + complaint (&symfile_complaints, + _("Member function \"%s\" (offset %d) is virtual but the vtable offset is not specified"), + fieldname, die->offset); + ALLOCATE_CPLUS_STRUCT_TYPE (type); + TYPE_CPLUS_DYNAMIC (type) = 1; + } + } } /* Create the vector of member function fields, and attach it to the type. */ @@ -4746,6 +5024,9 @@ dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type, int total_length = 0; int i; + if (cu->language == language_ada) + error ("unexpected member functions in Ada type"); + ALLOCATE_CPLUS_STRUCT_TYPE (type); TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *) TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields); @@ -4789,68 +5070,48 @@ is_vtable_name (const char *name, struct dwarf2_cu *cu) } /* GCC outputs unnamed structures that are really pointers to member - functions, with the ABI-specified layout. If DIE (from CU) describes - such a structure, set its type, and return nonzero. Otherwise return - zero. + functions, with the ABI-specified layout. If TYPE describes + such a structure, smash it into a member function type. GCC shouldn't do this; it should just output pointer to member DIEs. This is GCC PR debug/28767. */ -static struct type * -quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu) +static void +quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile) { - struct objfile *objfile = cu->objfile; - struct type *type; - struct die_info *pfn_die, *delta_die; - struct attribute *pfn_name, *delta_name; - struct type *pfn_type, *domain_type; + struct type *pfn_type, *domain_type, *new_type; /* Check for a structure with no name and two children. */ - if (die->tag != DW_TAG_structure_type - || dwarf2_attr (die, DW_AT_name, cu) != NULL - || die->child == NULL - || die->child->sibling == NULL - || (die->child->sibling->sibling != NULL - && die->child->sibling->sibling->tag != DW_TAG_padding)) - return NULL; + if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2) + return; /* Check for __pfn and __delta members. */ - pfn_die = die->child; - pfn_name = dwarf2_attr (pfn_die, DW_AT_name, cu); - if (pfn_die->tag != DW_TAG_member - || pfn_name == NULL - || DW_STRING (pfn_name) == NULL - || strcmp ("__pfn", DW_STRING (pfn_name)) != 0) - return NULL; - - delta_die = pfn_die->sibling; - delta_name = dwarf2_attr (delta_die, DW_AT_name, cu); - if (delta_die->tag != DW_TAG_member - || delta_name == NULL - || DW_STRING (delta_name) == NULL - || strcmp ("__delta", DW_STRING (delta_name)) != 0) - return NULL; + if (TYPE_FIELD_NAME (type, 0) == NULL + || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0 + || TYPE_FIELD_NAME (type, 1) == NULL + || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0) + return; /* Find the type of the method. */ - pfn_type = die_type (pfn_die, cu); + pfn_type = TYPE_FIELD_TYPE (type, 0); if (pfn_type == NULL || TYPE_CODE (pfn_type) != TYPE_CODE_PTR || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC) - return NULL; + return; /* Look for the "this" argument. */ pfn_type = TYPE_TARGET_TYPE (pfn_type); if (TYPE_NFIELDS (pfn_type) == 0 + /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */ || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR) - return NULL; + return; domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0)); - type = alloc_type (objfile); - smash_to_method_type (type, domain_type, TYPE_TARGET_TYPE (pfn_type), + new_type = alloc_type (objfile); + smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type), TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type), TYPE_VARARGS (pfn_type)); - type = lookup_methodptr_type (type); - return set_die_type (die, type, cu); + smash_to_methodptr_type (type, new_type); } /* Called when we find the DIE that starts a structure or union scope @@ -4876,11 +5137,7 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) struct type *type; struct attribute *attr; char *name; - struct cleanup *back_to = make_cleanup (null_cleanup, 0); - - type = quirk_gcc_member_function_pointer (die, cu); - if (type) - return type; + struct cleanup *back_to; /* If the definition of this type lives in .debug_types, read that type. Don't follow DW_AT_specification though, that will take us back up @@ -4890,6 +5147,7 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) { struct dwarf2_cu *type_cu = cu; struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu); + /* We could just recurse on read_structure_type, but we need to call get_die_type to ensure only one type for this DIE is created. This is important, for example, because for c++ classes we need @@ -4898,6 +5156,8 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) return set_die_type (die, type, cu); } + back_to = make_cleanup (null_cleanup, 0); + type = alloc_type (objfile); INIT_CPLUS_SPECIFIC (type); @@ -4907,14 +5167,18 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) if (cu->language == language_cplus || cu->language == language_java) { - const char *new_prefix = determine_class_name (die, cu); - TYPE_TAG_NAME (type) = (char *) new_prefix; + TYPE_TAG_NAME (type) = (char *) dwarf2_full_name (name, die, cu); + if (die->tag == DW_TAG_structure_type + || die->tag == DW_TAG_class_type) + TYPE_NAME (type) = TYPE_TAG_NAME (type); } else { /* The name is already allocated along with this objfile, so we don't need to duplicate it for the type. */ - TYPE_TAG_NAME (type) = name; + TYPE_TAG_NAME (type) = (char *) name; + if (die->tag == DW_TAG_class_type) + TYPE_NAME (type) = TYPE_TAG_NAME (type); } } @@ -4928,11 +5192,12 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) } else { - /* FIXME: TYPE_CODE_CLASS is currently defined to TYPE_CODE_STRUCT - in gdbtypes.h. */ TYPE_CODE (type) = TYPE_CODE_CLASS; } + if (cu->language == language_cplus && die->tag == DW_TAG_class_type) + TYPE_DECLARED_CLASS (type) = 1; + attr = dwarf2_attr (die, DW_AT_byte_size, cu); if (attr) { @@ -4946,12 +5211,20 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) TYPE_STUB_SUPPORTED (type) = 1; if (die_is_declaration (die, cu)) TYPE_STUB (type) = 1; + else if (attr == NULL && die->child == NULL + && producer_is_realview (cu->producer)) + /* RealView does not output the required DW_AT_declaration + on incomplete types. */ + TYPE_STUB (type) = 1; /* We need to add the type field to the die immediately so we don't infinitely recurse when dealing with pointers to the structure type within the structure itself. */ set_die_type (die, type, cu); + /* set_die_type should be already done. */ + set_descriptive_type (type, die, cu); + if (die->child != NULL && ! die_is_declaration (die, cu)) { struct field_info fi; @@ -4983,6 +5256,8 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) /* C++ base class field. */ dwarf2_add_field (&fi, child_die, cu); } + else if (child_die->tag == DW_TAG_typedef) + dwarf2_add_typedef (&fi, child_die, cu); child_die = sibling_die (child_die); } @@ -4995,7 +5270,8 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) /* Get the type which refers to the base class (possibly this class itself) which contains the vtable pointer for the current - class from the DW_AT_containing_type attribute. */ + class from the DW_AT_containing_type attribute. This use of + DW_AT_containing_type is a GNU extension. */ if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL) { @@ -5055,8 +5331,33 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) } } } + + /* Copy fi.typedef_field_list linked list elements content into the + allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */ + if (fi.typedef_field_list) + { + int i = fi.typedef_field_list_count; + + ALLOCATE_CPLUS_STRUCT_TYPE (type); + TYPE_TYPEDEF_FIELD_ARRAY (type) + = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i); + TYPE_TYPEDEF_FIELD_COUNT (type) = i; + + /* Reverse the list order to keep the debug info elements order. */ + while (--i >= 0) + { + struct typedef_field *dest, *src; + + dest = &TYPE_TYPEDEF_FIELD (type, i); + src = &fi.typedef_field_list->field; + fi.typedef_field_list = fi.typedef_field_list->next; + *dest = *src; + } + } } + quirk_gcc_member_function_pointer (type, cu->objfile); + do_cleanups (back_to); return type; } @@ -5064,7 +5365,6 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu) static void process_structure_scope (struct die_info *die, struct dwarf2_cu *cu) { - struct objfile *objfile = cu->objfile; struct die_info *child_die = die->child; struct type *this_type; @@ -5120,6 +5420,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu) { struct dwarf2_cu *type_cu = cu; struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu); + type = read_type_die (type_die, type_cu); return set_die_type (die, type, cu); } @@ -5127,7 +5428,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu) type = alloc_type (objfile); TYPE_CODE (type) = TYPE_CODE_ENUM; - name = dwarf2_full_name (die, cu); + name = dwarf2_full_name (NULL, die, cu); if (name != NULL) TYPE_TAG_NAME (type) = (char *) name; @@ -5152,51 +5453,6 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu) return set_die_type (die, type, cu); } -/* Determine the name of the type represented by DIE, which should be - a named C++ or Java compound type. Return the name in question, - allocated on the objfile obstack. */ - -static const char * -determine_class_name (struct die_info *die, struct dwarf2_cu *cu) -{ - const char *new_prefix = NULL; - - /* If we don't have namespace debug info, guess the name by trying - to demangle the names of members, just like we did in - guess_structure_name. */ - if (!processing_has_namespace_info) - { - struct die_info *child; - - for (child = die->child; - child != NULL && child->tag != 0; - child = sibling_die (child)) - { - if (child->tag == DW_TAG_subprogram) - { - char *phys_prefix - = language_class_name_from_physname (cu->language_defn, - dwarf2_linkage_name - (child, cu)); - - if (phys_prefix != NULL) - { - new_prefix - = obsavestring (phys_prefix, strlen (phys_prefix), - &cu->objfile->objfile_obstack); - xfree (phys_prefix); - break; - } - } - } - } - - if (new_prefix == NULL) - new_prefix = dwarf2_full_name (die, cu); - - return new_prefix; -} - /* Given a pointer to a die which begins an enumeration, process all the dies that define the members of the enumeration, and create the symbol for the enumeration type. @@ -5206,7 +5462,6 @@ determine_class_name (struct die_info *die, struct dwarf2_cu *cu) static void process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu) { - struct objfile *objfile = cu->objfile; struct die_info *child_die; struct field *fields; struct symbol *sym; @@ -5283,7 +5538,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) { struct objfile *objfile = cu->objfile; struct die_info *child_die; - struct type *type = NULL; + struct type *type; struct type *element_type, *range_type, *index_type; struct type **range_types = NULL; struct attribute *attr; @@ -5293,6 +5548,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) element_type = die_type (die, cu); + /* The die_type call above may have already set the type for this DIE. */ + type = get_die_type (die, cu); + if (type) + return type; + /* Irix 6.2 native cc creates array types without children for arrays with unspecified length. */ if (die->child == NULL) @@ -5310,6 +5570,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) if (child_die->tag == DW_TAG_subrange_type) { struct type *child_type = read_type_die (child_die, cu); + if (child_type != NULL) { /* The range type was succesfully read. Save it for @@ -5336,6 +5597,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) if (read_array_order (die, cu) == DW_ORD_col_major) { int i = 0; + while (i < ndim) type = create_array_type (NULL, type, range_types[i++]); } @@ -5358,15 +5620,20 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu) name = dwarf2_name (die, cu); if (name) TYPE_NAME (type) = name; - - do_cleanups (back_to); /* Install the type in the die. */ - return set_die_type (die, type, cu); + set_die_type (die, type, cu); + + /* set_die_type should be already done. */ + set_descriptive_type (type, die, cu); + + do_cleanups (back_to); + + return type; } static enum dwarf_array_dim_ordering -read_array_order (struct die_info *die, struct dwarf2_cu *cu) +read_array_order (struct die_info *die, struct dwarf2_cu *cu) { struct attribute *attr; @@ -5376,20 +5643,20 @@ read_array_order (struct die_info *die, struct dwarf2_cu *cu) /* GNU F77 is a special case, as at 08/2004 array type info is the - opposite order to the dwarf2 specification, but data is still + opposite order to the dwarf2 specification, but data is still laid out as per normal fortran. - FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need + FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need version checking. */ - if (cu->language == language_fortran && - cu->producer && strstr (cu->producer, "GNU F77")) + if (cu->language == language_fortran + && cu->producer && strstr (cu->producer, "GNU F77")) { return DW_ORD_row_major; } - switch (cu->language_defn->la_array_ordering) + switch (cu->language_defn->la_array_ordering) { case array_column_major: return DW_ORD_col_major; @@ -5405,7 +5672,21 @@ read_array_order (struct die_info *die, struct dwarf2_cu *cu) static struct type * read_set_type (struct die_info *die, struct dwarf2_cu *cu) { - struct type *set_type = create_set_type (NULL, die_type (die, cu)); + struct type *domain_type, *set_type; + struct attribute *attr; + + domain_type = die_type (die, cu); + + /* The die_type call above may have already set the type for this DIE. */ + set_type = get_die_type (die, cu); + if (set_type) + return set_type; + + set_type = create_set_type (NULL, domain_type); + + attr = dwarf2_attr (die, DW_AT_byte_size, cu); + if (attr) + TYPE_LENGTH (set_type) = DW_UNSND (attr); return set_die_type (die, set_type, cu); } @@ -5481,6 +5762,7 @@ read_namespace_type (struct die_info *die, struct dwarf2_cu *cu) { struct die_info *ext_die; struct dwarf2_cu *ext_cu = cu; + ext_die = dwarf2_extension (die, &ext_cu); type = read_type_die (ext_die, ext_cu); return set_die_type (die, type, cu); @@ -5493,7 +5775,7 @@ read_namespace_type (struct die_info *die, struct dwarf2_cu *cu) previous_prefix = determine_prefix (die, cu); if (previous_prefix[0] != '\0') name = typename_concat (&objfile->objfile_obstack, - previous_prefix, name, cu); + previous_prefix, name, 0, cu); /* Create the type. */ type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL, @@ -5501,9 +5783,7 @@ read_namespace_type (struct die_info *die, struct dwarf2_cu *cu) TYPE_NAME (type) = (char *) name; TYPE_TAG_NAME (type) = TYPE_NAME (type); - set_die_type (die, type, cu); - - return type; + return set_die_type (die, type, cu); } /* Read a C++ namespace. */ @@ -5530,14 +5810,16 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu) if (is_anonymous) { const char *previous_prefix = determine_prefix (die, cu); - cp_add_using_directive (previous_prefix, TYPE_NAME (type)); + + cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL, + NULL, &objfile->objfile_obstack); } } if (die->child != NULL) { struct die_info *child_die = die->child; - + while (child_die && child_die->tag) { process_die (child_die, cu); @@ -5546,6 +5828,29 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu) } } +/* Read a Fortran module as type. This DIE can be only a declaration used for + imported module. Still we need that type as local Fortran "use ... only" + declaration imports depend on the created type in determine_prefix. */ + +static struct type * +read_module_type (struct die_info *die, struct dwarf2_cu *cu) +{ + struct objfile *objfile = cu->objfile; + char *module_name; + struct type *type; + + module_name = dwarf2_name (die, cu); + if (!module_name) + complaint (&symfile_complaints, _("DW_TAG_module has no name, offset 0x%x"), + die->offset); + type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile); + + /* determine_prefix uses TYPE_TAG_NAME. */ + TYPE_TAG_NAME (type) = TYPE_NAME (type); + + return set_die_type (die, type, cu); +} + /* Read a Fortran module. */ static void @@ -5553,8 +5858,6 @@ read_module (struct die_info *die, struct dwarf2_cu *cu) { struct die_info *child_die = die->child; - /* FIXME: Support the separate Fortran module namespaces. */ - while (child_die && child_die->tag) { process_die (child_die, cu); @@ -5604,8 +5907,16 @@ read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu) struct attribute *attr_byte_size; struct attribute *attr_address_class; int byte_size, addr_class; + struct type *target_type; - type = lookup_pointer_type (die_type (die, cu)); + target_type = die_type (die, cu); + + /* The die_type call above may have already set the type for this DIE. */ + type = get_die_type (die, cu); + if (type) + return type; + + type = lookup_pointer_type (target_type); attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu); if (attr_byte_size) @@ -5638,9 +5949,10 @@ read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu) { complaint (&symfile_complaints, _("invalid pointer size %d"), byte_size); } - else { - /* Should we also complain about unhandled address classes? */ - } + else + { + /* Should we also complain about unhandled address classes? */ + } } TYPE_LENGTH (type) = byte_size; @@ -5653,7 +5965,6 @@ read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu) static struct type * read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu) { - struct objfile *objfile = cu->objfile; struct type *type; struct type *to_type; struct type *domain; @@ -5661,6 +5972,11 @@ read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu) to_type = die_type (die, cu); domain = die_containing_type (die, cu); + /* The calls above may have already set the type for this DIE. */ + type = get_die_type (die, cu); + if (type) + return type; + if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD) type = lookup_methodptr_type (to_type); else @@ -5676,10 +5992,17 @@ static struct type * read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu) { struct comp_unit_head *cu_header = &cu->header; - struct type *type; + struct type *type, *target_type; struct attribute *attr; - type = lookup_reference_type (die_type (die, cu)); + target_type = die_type (die, cu); + + /* The die_type call above may have already set the type for this DIE. */ + type = get_die_type (die, cu); + if (type) + return type; + + type = lookup_reference_type (target_type); attr = dwarf2_attr (die, DW_AT_byte_size, cu); if (attr) { @@ -5698,6 +6021,12 @@ read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu) struct type *base_type, *cv_type; base_type = die_type (die, cu); + + /* The die_type call above may have already set the type for this DIE. */ + cv_type = get_die_type (die, cu); + if (cv_type) + return cv_type; + cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0); return set_die_type (die, cv_type, cu); } @@ -5708,6 +6037,12 @@ read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu) struct type *base_type, *cv_type; base_type = die_type (die, cu); + + /* The die_type call above may have already set the type for this DIE. */ + cv_type = get_die_type (die, cu); + if (cv_type) + return cv_type; + cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0); return set_die_type (die, cv_type, cu); } @@ -5772,6 +6107,12 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu) struct attribute *attr; type = die_type (die, cu); + + /* The die_type call above may have already set the type for this DIE. */ + ftype = get_die_type (die, cu); + if (ftype) + return ftype; + ftype = lookup_function_type (type); /* All functions in C++, Pascal and Java have prototypes. */ @@ -5781,22 +6122,34 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu) || cu->language == language_java || cu->language == language_pascal) TYPE_PROTOTYPED (ftype) = 1; + else if (producer_is_realview (cu->producer)) + /* RealView does not emit DW_AT_prototyped. We can not + distinguish prototyped and unprototyped functions; default to + prototyped, since that is more common in modern code (and + RealView warns about unprototyped functions). */ + TYPE_PROTOTYPED (ftype) = 1; /* Store the calling convention in the type if it's available in the subroutine die. Otherwise set the calling convention to the default value DW_CC_normal. */ attr = dwarf2_attr (die, DW_AT_calling_convention, cu); TYPE_CALLING_CONVENTION (ftype) = attr ? DW_UNSND (attr) : DW_CC_normal; - + + /* We need to add the subroutine type to the die immediately so + we don't infinitely recurse when dealing with parameters + declared as the same subroutine type. */ + set_die_type (die, ftype, cu); + if (die->child != NULL) { + struct type *void_type = objfile_type (cu->objfile)->builtin_void; struct die_info *child_die; - int nparams = 0; - int iparams = 0; + int nparams, iparams; /* Count the number of parameters. FIXME: GDB currently ignores vararg functions, but knows about vararg member functions. */ + nparams = 0; child_die = die->child; while (child_die && child_die->tag) { @@ -5812,6 +6165,12 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu) TYPE_FIELDS (ftype) = (struct field *) TYPE_ZALLOC (ftype, nparams * sizeof (struct field)); + /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it + even if we error out during the parameters reading below. */ + for (iparams = 0; iparams < nparams; iparams++) + TYPE_FIELD_TYPE (ftype, iparams) = void_type; + + iparams = 0; child_die = die->child; while (child_die && child_die->tag) { @@ -5826,7 +6185,19 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu) if (attr) TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr); else - TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0; + { + TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0; + + /* GCC/43521: In java, the formal parameter + "this" is sometimes not marked with DW_AT_artificial. */ + if (cu->language == language_java) + { + const char *name = dwarf2_name (child_die, cu); + + if (name && !strcmp (name, "this")) + TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1; + } + } TYPE_FIELD_TYPE (ftype, iparams) = die_type (child_die, cu); iparams++; } @@ -5834,18 +6205,17 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu) } } - return set_die_type (die, ftype, cu); + return ftype; } static struct type * read_typedef (struct die_info *die, struct dwarf2_cu *cu) { struct objfile *objfile = cu->objfile; - struct attribute *attr; const char *name = NULL; struct type *this_type; - name = dwarf2_full_name (die, cu); + name = dwarf2_full_name (NULL, die, cu); this_type = init_type (TYPE_CODE_TYPEDEF, 0, TYPE_FLAG_TARGET_STUB, NULL, objfile); TYPE_NAME (this_type) = (char *) name; @@ -5914,7 +6284,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu) type_flags |= TYPE_FLAG_UNSIGNED; break; case DW_ATE_signed_char: - if (cu->language == language_ada || cu->language == language_m2 + if (cu->language == language_ada || cu->language == language_m2 || cu->language == language_pascal) code = TYPE_CODE_CHAR; break; @@ -5924,6 +6294,11 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu) code = TYPE_CODE_CHAR; type_flags |= TYPE_FLAG_UNSIGNED; break; + case DW_ATE_UTF: + /* We just treat this as an integer and then recognize the + type by name elsewhere. */ + break; + default: complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"), dwarf_type_encoding_name (encoding)); @@ -5949,22 +6324,20 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) struct type *base_type; struct type *range_type; struct attribute *attr; - int low = 0; - int high = -1; + LONGEST low = 0; + LONGEST high = -1; char *name; - + LONGEST negative_mask; + base_type = die_type (die, cu); - if (TYPE_CODE (base_type) == TYPE_CODE_VOID) - { - complaint (&symfile_complaints, - _("DW_AT_type missing from DW_TAG_subrange_type")); - base_type - = init_type (TYPE_CODE_INT, gdbarch_addr_bit (gdbarch) / 8, - 0, NULL, cu->objfile); - } + + /* The die_type call above may have already set the type for this DIE. */ + range_type = get_die_type (die, cu); + if (range_type) + return range_type; if (cu->language == language_fortran) - { + { /* FORTRAN implies a lower bound of 1, if not given. */ low = 1; } @@ -5978,11 +6351,11 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) attr = dwarf2_attr (die, DW_AT_upper_bound, cu); if (attr) - { - if (attr->form == DW_FORM_block1) + { + if (attr->form == DW_FORM_block1 || is_ref_attr (attr)) { /* GCC encodes arrays with unspecified or dynamic length - with a DW_FORM_block1 attribute. + with a DW_FORM_block1 attribute or a reference attribute. FIXME: GDB does not yet know how to handle dynamic arrays properly, treat them as arrays with unspecified length for now. @@ -5997,20 +6370,86 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) else high = dwarf2_get_attr_constant_value (attr, 1); } + else + { + attr = dwarf2_attr (die, DW_AT_count, cu); + if (attr) + { + int count = dwarf2_get_attr_constant_value (attr, 1); + high = low + count - 1; + } + } + + /* Dwarf-2 specifications explicitly allows to create subrange types + without specifying a base type. + In that case, the base type must be set to the type of + the lower bound, upper bound or count, in that order, if any of these + three attributes references an object that has a type. + If no base type is found, the Dwarf-2 specifications say that + a signed integer type of size equal to the size of an address should + be used. + For the following C code: `extern char gdb_int [];' + GCC produces an empty range DIE. + FIXME: muller/2010-05-28: Possible references to object for low bound, + high bound or count are not yet handled by this code. + */ + if (TYPE_CODE (base_type) == TYPE_CODE_VOID) + { + struct objfile *objfile = cu->objfile; + struct gdbarch *gdbarch = get_objfile_arch (objfile); + int addr_size = gdbarch_addr_bit (gdbarch) /8; + struct type *int_type = objfile_type (objfile)->builtin_int; + + /* Test "int", "long int", and "long long int" objfile types, + and select the first one having a size above or equal to the + architecture address size. */ + if (int_type && TYPE_LENGTH (int_type) >= addr_size) + base_type = int_type; + else + { + int_type = objfile_type (objfile)->builtin_long; + if (int_type && TYPE_LENGTH (int_type) >= addr_size) + base_type = int_type; + else + { + int_type = objfile_type (objfile)->builtin_long_long; + if (int_type && TYPE_LENGTH (int_type) >= addr_size) + base_type = int_type; + } + } + } + + negative_mask = + (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1); + if (!TYPE_UNSIGNED (base_type) && (low & negative_mask)) + low |= negative_mask; + if (!TYPE_UNSIGNED (base_type) && (high & negative_mask)) + high |= negative_mask; range_type = create_range_type (NULL, base_type, low, high); + /* Mark arrays with dynamic length at least as an array of unspecified + length. GDB could check the boundary but before it gets implemented at + least allow accessing the array elements. */ + if (attr && attr->form == DW_FORM_block1) + TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1; + name = dwarf2_name (die, cu); if (name) TYPE_NAME (range_type) = name; - + attr = dwarf2_attr (die, DW_AT_byte_size, cu); if (attr) TYPE_LENGTH (range_type) = DW_UNSND (attr); - return set_die_type (die, range_type, cu); + set_die_type (die, range_type, cu); + + /* set_die_type should be already done. */ + set_descriptive_type (range_type, die, cu); + + return range_type; } - + static struct type * read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu) { @@ -6031,6 +6470,7 @@ static hashval_t die_hash (const void *item) { const struct die_info *die = item; + return die->offset; } @@ -6042,21 +6482,8 @@ die_eq (const void *item_lhs, const void *item_rhs) { const struct die_info *die_lhs = item_lhs; const struct die_info *die_rhs = item_rhs; - return die_lhs->offset == die_rhs->offset; -} -/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */ - -static void -init_cu_die_reader (struct die_reader_specs *reader, - struct dwarf2_cu *cu) -{ - reader->abfd = cu->objfile->obfd; - reader->cu = cu; - if (cu->per_cu->from_debug_types) - reader->buffer = dwarf2_per_objfile->types.buffer; - else - reader->buffer = dwarf2_per_objfile->info.buffer; + return die_lhs->offset == die_rhs->offset; } /* Read a whole compilation unit into a linked list of dies. */ @@ -6255,13 +6682,15 @@ dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu) memset (cu->dwarf2_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *)); + dwarf2_read_section (dwarf2_per_objfile->objfile, + &dwarf2_per_objfile->abbrev); abbrev_ptr = dwarf2_per_objfile->abbrev.buffer + cu_header->abbrev_offset; abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); abbrev_ptr += bytes_read; allocated_attrs = ATTR_ALLOC_CHUNK; cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev)); - + /* loop until we reach an abbrev number of 0 */ while (abbrev_number) { @@ -6469,6 +6898,7 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr, && abbrev->tag != DW_TAG_lexical_block && abbrev->tag != DW_TAG_variable && abbrev->tag != DW_TAG_namespace + && abbrev->tag != DW_TAG_module && abbrev->tag != DW_TAG_member) { /* Otherwise we skip to the next sibling, if any. */ @@ -6503,7 +6933,7 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr, || part_die->tag == DW_TAG_subrange_type)) { if (building_psymtab && part_die->name != NULL) - add_psymbol_to_list (part_die->name, strlen (part_die->name), + add_psymbol_to_list (part_die->name, strlen (part_die->name), 0, VAR_DOMAIN, LOC_TYPEDEF, &cu->objfile->static_psymbols, 0, (CORE_ADDR) 0, cu->language, cu->objfile); @@ -6524,7 +6954,7 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr, if (part_die->name == NULL) complaint (&symfile_complaints, _("malformed enumerator DIE ignored")); else if (building_psymtab) - add_psymbol_to_list (part_die->name, strlen (part_die->name), + add_psymbol_to_list (part_die->name, strlen (part_die->name), 0, VAR_DOMAIN, LOC_CONST, (cu->language == language_cplus || cu->language == language_java) @@ -6600,6 +7030,7 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr, if (last_die->has_children && (load_all || last_die->tag == DW_TAG_namespace + || last_die->tag == DW_TAG_module || last_die->tag == DW_TAG_enumeration_type || (cu->language != language_c && (last_die->tag == DW_TAG_class_type @@ -6631,19 +7062,10 @@ read_partial_die (struct partial_die_info *part_die, gdb_byte *buffer, gdb_byte *info_ptr, struct dwarf2_cu *cu) { - unsigned int bytes_read, i; + unsigned int i; struct attribute attr; int has_low_pc_attr = 0; int has_high_pc_attr = 0; - CORE_ADDR base_address = 0; - enum - { - base_address_none, - base_address_low_pc, - /* Overrides BASE_ADDRESS_LOW_PC. */ - base_address_entry_pc - } - base_address_type = base_address_none; memset (part_die, 0, sizeof (struct partial_die_info)); @@ -6681,46 +7103,26 @@ read_partial_die (struct partial_die_info *part_die, default: part_die->name = dwarf2_canonicalize_name (DW_STRING (&attr), cu, - &cu->comp_unit_obstack); + &cu->objfile->objfile_obstack); break; } break; - case DW_AT_comp_dir: - if (part_die->dirname == NULL) - part_die->dirname = DW_STRING (&attr); - break; + case DW_AT_linkage_name: case DW_AT_MIPS_linkage_name: - part_die->name = DW_STRING (&attr); + /* Note that both forms of linkage name might appear. We + assume they will be the same, and we only store the last + one we see. */ + if (cu->language == language_ada) + part_die->name = DW_STRING (&attr); break; case DW_AT_low_pc: has_low_pc_attr = 1; part_die->lowpc = DW_ADDR (&attr); - if (part_die->tag == DW_TAG_compile_unit - && base_address_type < base_address_low_pc) - { - base_address = DW_ADDR (&attr); - base_address_type = base_address_low_pc; - } break; case DW_AT_high_pc: has_high_pc_attr = 1; part_die->highpc = DW_ADDR (&attr); break; - case DW_AT_entry_pc: - if (part_die->tag == DW_TAG_compile_unit - && base_address_type < base_address_entry_pc) - { - base_address = DW_ADDR (&attr); - base_address_type = base_address_entry_pc; - } - break; - case DW_AT_ranges: - if (part_die->tag == DW_TAG_compile_unit) - { - cu->ranges_offset = DW_UNSND (&attr); - cu->has_ranges_offset = 1; - } - break; case DW_AT_location: /* Support the .debug_loc offsets */ if (attr_form_is_block (&attr)) @@ -6737,9 +7139,6 @@ read_partial_die (struct partial_die_info *part_die, "partial symbol information"); } break; - case DW_AT_language: - part_die->language = DW_UNSND (&attr); - break; case DW_AT_external: part_die->is_external = DW_UNSND (&attr); break; @@ -6763,10 +7162,6 @@ read_partial_die (struct partial_die_info *part_die, else part_die->sibling = buffer + dwarf2_get_ref_die_offset (&attr); break; - case DW_AT_stmt_list: - part_die->has_stmt_list = 1; - part_die->line_offset = DW_UNSND (&attr); - break; case DW_AT_byte_size: part_die->has_byte_size = 1; break; @@ -6808,13 +7203,6 @@ read_partial_die (struct partial_die_info *part_die, || dwarf2_per_objfile->has_section_at_zero)) part_die->has_pc_info = 1; - if (base_address_type != base_address_none && !cu->base_known) - { - gdb_assert (part_die->tag == DW_TAG_compile_unit); - cu->base_known = 1; - cu->base_address = base_address; - } - return info_ptr; } @@ -6885,7 +7273,7 @@ find_partial_die (unsigned int offset, struct dwarf2_cu *cu) if (per_cu->cu->dwarf2_abbrevs == NULL) { dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu); - back_to = make_cleanup (dwarf2_free_abbrev_table, per_cu->cu); + make_cleanup (dwarf2_free_abbrev_table, per_cu->cu); } info_ptr = (dwarf2_per_objfile->info.buffer + per_cu->cu->header.offset @@ -6969,8 +7357,14 @@ read_attribute_value (struct attribute *attr, unsigned form, attr->form = form; switch (form) { + case DW_FORM_ref_addr: + if (cu->header.version == 2) + DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read); + else + DW_ADDR (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read); + info_ptr += bytes_read; + break; case DW_FORM_addr: - case DW_FORM_ref_addr: DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read); info_ptr += bytes_read; break; @@ -7002,6 +7396,10 @@ read_attribute_value (struct attribute *attr, unsigned form, DW_UNSND (attr) = read_8_bytes (abfd, info_ptr); info_ptr += 8; break; + case DW_FORM_sec_offset: + DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read); + info_ptr += bytes_read; + break; case DW_FORM_string: DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read); DW_STRING_IS_CANONICAL (attr) = 0; @@ -7013,6 +7411,7 @@ read_attribute_value (struct attribute *attr, unsigned form, DW_STRING_IS_CANONICAL (attr) = 0; info_ptr += bytes_read; break; + case DW_FORM_exprloc: case DW_FORM_block: blk = dwarf_alloc_block (cu); blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); @@ -7037,6 +7436,9 @@ read_attribute_value (struct attribute *attr, unsigned form, DW_UNSND (attr) = read_1_byte (abfd, info_ptr); info_ptr += 1; break; + case DW_FORM_flag_present: + DW_UNSND (attr) = 1; + break; case DW_FORM_sdata: DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; @@ -7097,8 +7499,8 @@ read_attribute_value (struct attribute *attr, unsigned form, { complaint (&symfile_complaints, - _("Suspicious DW_AT_byte_size value treated as zero instead of 0x%lx"), - DW_UNSND (attr)); + _("Suspicious DW_AT_byte_size value treated as zero instead of %s"), + hex_string (DW_UNSND (attr))); DW_UNSND (attr) = 0; } @@ -7237,7 +7639,7 @@ read_address (bfd *abfd, gdb_byte *buf, struct dwarf2_cu *cu, from: http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf - + This document is only a draft and is subject to change. (So beware.) Details regarding the older, non-standard 64-bit format were @@ -7307,6 +7709,7 @@ read_offset (bfd *abfd, gdb_byte *buf, const struct comp_unit_head *cu_header, unsigned int *bytes_read) { LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size); + *bytes_read = cu_header->offset_size; return offset; } @@ -7368,6 +7771,7 @@ read_indirect_string (bfd *abfd, gdb_byte *buf, { LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr); + dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str); if (dwarf2_per_objfile->str.buffer == NULL) { error (_("DW_FORM_strp used without .debug_str section [in module %s]"), @@ -7472,6 +7876,9 @@ set_cu_language (unsigned int lang, struct dwarf2_cu *cu) case DW_LANG_C_plus_plus: cu->language = language_cplus; break; + case DW_LANG_D: + cu->language = language_d; + break; case DW_LANG_Fortran77: case DW_LANG_Fortran90: case DW_LANG_Fortran95: @@ -7552,7 +7959,7 @@ dwarf2_attr_no_follow (struct die_info *die, unsigned int name, /* Return non-zero iff the attribute NAME is defined for the given DIE, and holds a non-zero value. This function should only be used for - DW_FORM_flag attributes. */ + DW_FORM_flag or DW_FORM_flag_present attributes. */ static int dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu) @@ -7639,7 +8046,7 @@ add_include_dir (struct line_header *lh, char *include_dir) lh->include_dirs[lh->num_include_dirs++] = include_dir; } - + /* Add an entry to LH's file name table. */ static void @@ -7674,7 +8081,7 @@ add_file_name (struct line_header *lh, fe->included_p = 0; fe->symtab = NULL; } - + /* Read the statement program header starting at OFFSET in .debug_line, according to the endianness of ABFD. Return a pointer @@ -7694,6 +8101,7 @@ dwarf_decode_line_header (unsigned int offset, bfd *abfd, int i; char *cur_dir, *cur_file; + dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->line); if (dwarf2_per_objfile->line.buffer == NULL) { complaint (&symfile_complaints, _("missing .debug_line section")); @@ -7716,7 +8124,7 @@ dwarf_decode_line_header (unsigned int offset, bfd *abfd, line_ptr = dwarf2_per_objfile->line.buffer + offset; /* Read in the header. */ - lh->total_length = + lh->total_length = read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header, &bytes_read, &offset_size); line_ptr += bytes_read; @@ -7733,6 +8141,21 @@ dwarf_decode_line_header (unsigned int offset, bfd *abfd, line_ptr += offset_size; lh->minimum_instruction_length = read_1_byte (abfd, line_ptr); line_ptr += 1; + if (lh->version >= 4) + { + lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr); + line_ptr += 1; + } + else + lh->maximum_ops_per_instruction = 1; + + if (lh->maximum_ops_per_instruction == 0) + { + lh->maximum_ops_per_instruction = 1; + complaint (&symfile_complaints, + _("invalid maximum_ops_per_instruction in `.debug_line' section")); + } + lh->default_is_stmt = read_1_byte (abfd, line_ptr); line_ptr += 1; lh->line_base = read_1_signed_byte (abfd, line_ptr); @@ -7775,7 +8198,7 @@ dwarf_decode_line_header (unsigned int offset, bfd *abfd, add_file_name (lh, cur_file, dir_index, mod_time, length); } line_ptr += bytes_read; - lh->statement_program_start = line_ptr; + lh->statement_program_start = line_ptr; if (line_ptr > (dwarf2_per_objfile->line.buffer + dwarf2_per_objfile->line.size)) @@ -7840,7 +8263,7 @@ check_cu_functions (CORE_ADDR address, struct dwarf2_cu *cu) to create all necessary symbol tables, and their linetables. The compilation directory of the file is passed in COMP_DIR, and must not be NULL. - + 2. If PST is not NULL, this procedure reads the program to determine the list of files included by the unit represented by PST, and builds all the associated partial symbol tables. In this case, @@ -7881,6 +8304,7 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd, int basic_block = 0; int end_sequence = 0; CORE_ADDR addr; + unsigned char op_index = 0; if (!decode_for_pst_p && lh->num_file_names >= file) { @@ -7909,15 +8333,20 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd, } if (op_code >= lh->opcode_base) - { + { /* Special operand. */ adj_opcode = op_code - lh->opcode_base; - address += (adj_opcode / lh->line_range) - * lh->minimum_instruction_length; + address += (((op_index + (adj_opcode / lh->line_range)) + / lh->maximum_ops_per_instruction) + * lh->minimum_instruction_length); + op_index = ((op_index + (adj_opcode / lh->line_range)) + % lh->maximum_ops_per_instruction); line += lh->line_base + (adj_opcode % lh->line_range); if (lh->num_file_names < file || file == 0) dwarf2_debug_line_missing_file_complaint (); - else + /* For now we ignore lines not starting on an + instruction boundary. */ + else if (op_index == 0) { lh->file_names[file - 1].included_p = 1; if (!decode_for_pst_p && is_stmt) @@ -7952,6 +8381,7 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd, break; case DW_LNE_set_address: address = read_address (abfd, line_ptr, cu, &bytes_read); + op_index = 0; line_ptr += bytes_read; address += baseaddr; break; @@ -7959,7 +8389,7 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd, { char *cur_file; unsigned int dir_index, mod_time, length; - + cur_file = read_string (abfd, line_ptr, &bytes_read); line_ptr += bytes_read; dir_index = @@ -8017,9 +8447,17 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd, basic_block = 0; break; case DW_LNS_advance_pc: - address += lh->minimum_instruction_length - * read_unsigned_leb128 (abfd, line_ptr, &bytes_read); - line_ptr += bytes_read; + { + CORE_ADDR adjust + = read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + + address += (((op_index + adjust) + / lh->maximum_ops_per_instruction) + * lh->minimum_instruction_length); + op_index = ((op_index + adjust) + % lh->maximum_ops_per_instruction); + line_ptr += bytes_read; + } break; case DW_LNS_advance_line: line += read_signed_leb128 (abfd, line_ptr, &bytes_read); @@ -8066,11 +8504,19 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd, instruction length since special opcode 255 would have scaled the the increment. */ case DW_LNS_const_add_pc: - address += (lh->minimum_instruction_length - * ((255 - lh->opcode_base) / lh->line_range)); + { + CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range; + + address += (((op_index + adjust) + / lh->maximum_ops_per_instruction) + * lh->minimum_instruction_length); + op_index = ((op_index + adjust) + % lh->maximum_ops_per_instruction); + } break; case DW_LNS_fixed_advance_pc: address += read_2_bytes (abfd, line_ptr); + op_index = 0; line_ptr += 2; break; default: @@ -8146,6 +8592,7 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd, for (i = 0; i < lh->num_file_names; i++) { char *dir = NULL; + fe = &lh->file_names[i]; if (fe->dir_index) dir = lh->include_dirs[fe->dir_index - 1]; @@ -8290,13 +8737,11 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); - if (die->tag != DW_TAG_namespace) - name = dwarf2_linkage_name (die, cu); - else - name = TYPE_NAME (type); - + name = dwarf2_name (die, cu); if (name) { + const char *linkagename; + sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); OBJSTAT (objfile, n_syms++); @@ -8304,7 +8749,15 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) /* Cache this symbol's name and the name's demangled form (if any). */ SYMBOL_LANGUAGE (sym) = cu->language; - SYMBOL_SET_NAMES (sym, name, strlen (name), objfile); + linkagename = dwarf2_physname (name, die, cu); + SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile); + + /* Fortran does not have mangling standard and the mangling does differ + between gfortran, iFort etc. */ + if (cu->language == language_fortran + && sym->ginfo.language_specific.cplus_specific.demangled_name == NULL) + sym->ginfo.language_specific.cplus_specific.demangled_name + = (char *) dwarf2_full_name (name, die, cu); /* Default assumptions. Use the passed type or decode it from the die. */ @@ -8328,6 +8781,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) if (attr) { int file_index = DW_UNSND (attr); + if (cu->line_header == NULL || file_index > cu->line_header->num_file_names) complaint (&symfile_complaints, @@ -8335,6 +8789,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) else if (file_index > 0) { struct file_entry *fe; + fe = &cu->line_header->file_names[file_index - 1]; SYMBOL_SYMTAB (sym) = fe->symtab; } @@ -8380,6 +8835,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) BLOCK_FUNCTION from the blockvector. */ break; case DW_TAG_variable: + case DW_TAG_member: /* Compilation with minimal debug info may result in variables with missing type entries. Change the misleading `void' type to something sensible. */ @@ -8388,6 +8844,15 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) = objfile_type (objfile)->nodebug_data_symbol; attr = dwarf2_attr (die, DW_AT_const_value, cu); + /* In the case of DW_TAG_member, we should only be called for + static const members. */ + if (die->tag == DW_TAG_member) + { + /* dwarf2_add_field uses die_is_declaration, + so we do the same. */ + gdb_assert (die_is_declaration (die, cu)); + gdb_assert (attr); + } if (attr) { dwarf2_const_value (attr, sym, cu); @@ -8404,7 +8869,29 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) var_decode_location (attr, sym, cu); attr2 = dwarf2_attr (die, DW_AT_external, cu); if (attr2 && (DW_UNSND (attr2) != 0)) - add_symbol_to_list (sym, &global_symbols); + { + struct pending **list_to_add; + + /* Workaround gfortran PR debug/40040 - it uses + DW_AT_location for variables in -fPIC libraries which may + get overriden by other libraries/executable and get + a different address. Resolve it by the minimal symbol + which may come from inferior's executable using copy + relocation. Make this workaround only for gfortran as for + other compilers GDB cannot guess the minimal symbol + Fortran mangling kind. */ + if (cu->language == language_fortran && die->parent + && die->parent->tag == DW_TAG_module + && cu->producer + && strncmp (cu->producer, "GNU Fortran ", 12) == 0) + SYMBOL_CLASS (sym) = LOC_UNRESOLVED; + + /* A variable with DW_AT_external is never static, + but it may be block-scoped. */ + list_to_add = (cu->list_in_scope == &file_symbols + ? &global_symbols : cu->list_in_scope); + add_symbol_to_list (sym, list_to_add); + } else add_symbol_to_list (sym, cu->list_in_scope); } @@ -8420,8 +8907,15 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) if (attr2 && (DW_UNSND (attr2) != 0) && dwarf2_attr (die, DW_AT_type, cu) != NULL) { + struct pending **list_to_add; + + /* A variable with DW_AT_external is never static, but it + may be block-scoped. */ + list_to_add = (cu->list_in_scope == &file_symbols + ? &global_symbols : cu->list_in_scope); + SYMBOL_CLASS (sym) = LOC_UNRESOLVED; - add_symbol_to_list (sym, cu->list_in_scope); + add_symbol_to_list (sym, list_to_add); } else if (!die_is_declaration (die, cu)) { @@ -8450,6 +8944,15 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) { dwarf2_const_value (attr, sym, cu); } + attr = dwarf2_attr (die, DW_AT_variable_parameter, cu); + if (attr && DW_UNSND (attr)) + { + struct type *ref_type; + + ref_type = lookup_reference_type (SYMBOL_TYPE (sym)); + SYMBOL_TYPE (sym) = ref_type; + } + add_symbol_to_list (sym, cu->list_in_scope); break; case DW_TAG_unspecified_parameters: @@ -8466,28 +8969,6 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) SYMBOL_CLASS (sym) = LOC_TYPEDEF; SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN; - /* Make sure that the symbol includes appropriate enclosing - classes/namespaces in its name. These are calculated in - read_structure_type, and the correct name is saved in - the type. */ - - if (cu->language == language_cplus - || cu->language == language_java) - { - struct type *type = SYMBOL_TYPE (sym); - - if (TYPE_TAG_NAME (type) != NULL) - { - /* FIXME: carlton/2003-11-10: Should this use - SYMBOL_SET_NAMES instead? (The same problem also - arises further down in this function.) */ - /* The type's name is already allocated along with - this objfile, so we don't need to duplicate it - for the symbol. */ - SYMBOL_LINKAGE_NAME (sym) = TYPE_TAG_NAME (type); - } - } - { /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't really ever be static objects: otherwise, if you try @@ -8503,7 +8984,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) && (cu->language == language_cplus || cu->language == language_java) ? &global_symbols : cu->list_in_scope); - + add_symbol_to_list (sym, list_to_add); /* The semantics of C++ state that "struct foo { ... }" also @@ -8522,7 +9003,6 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) } break; case DW_TAG_typedef: - SYMBOL_LINKAGE_NAME (sym) = (char *) dwarf2_full_name (die, cu); SYMBOL_CLASS (sym) = LOC_TYPEDEF; SYMBOL_DOMAIN (sym) = VAR_DOMAIN; add_symbol_to_list (sym, cu->list_in_scope); @@ -8534,7 +9014,6 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) add_symbol_to_list (sym, cu->list_in_scope); break; case DW_TAG_enumerator: - SYMBOL_LINKAGE_NAME (sym) = (char *) dwarf2_full_name (die, cu); attr = dwarf2_attr (die, DW_AT_const_value, cu); if (attr) { @@ -8550,7 +9029,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) && (cu->language == language_cplus || cu->language == language_java) ? &global_symbols : cu->list_in_scope); - + add_symbol_to_list (sym, list_to_add); } break; @@ -8571,8 +9050,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) /* For the benefit of old versions of GCC, check for anonymous namespaces based on the demangled name. */ if (!processing_has_namespace_info - && cu->language == language_cplus - && dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu) != NULL) + && cu->language == language_cplus) cp_scan_for_anonymous_namespaces (sym); } return (sym); @@ -8593,18 +9071,36 @@ dwarf2_const_value (struct attribute *attr, struct symbol *sym, switch (attr->form) { case DW_FORM_addr: - if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != cu_header->addr_size) - dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym), - cu_header->addr_size, - TYPE_LENGTH (SYMBOL_TYPE - (sym))); - SYMBOL_VALUE_BYTES (sym) = - obstack_alloc (&objfile->objfile_obstack, cu_header->addr_size); - /* NOTE: cagney/2003-05-09: In-lined store_address call with - it's body - store_unsigned_integer. */ - store_unsigned_integer (SYMBOL_VALUE_BYTES (sym), cu_header->addr_size, - DW_ADDR (attr), byte_order); - SYMBOL_CLASS (sym) = LOC_CONST_BYTES; + { + struct dwarf2_locexpr_baton *baton; + gdb_byte *data; + + if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != cu_header->addr_size) + dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym), + cu_header->addr_size, + TYPE_LENGTH (SYMBOL_TYPE + (sym))); + /* Symbols of this form are reasonably rare, so we just + piggyback on the existing location code rather than writing + a new implementation of symbol_computed_ops. */ + baton = obstack_alloc (&objfile->objfile_obstack, + sizeof (struct dwarf2_locexpr_baton)); + baton->per_cu = cu->per_cu; + gdb_assert (baton->per_cu); + + baton->size = 2 + cu_header->addr_size; + data = obstack_alloc (&objfile->objfile_obstack, baton->size); + baton->data = data; + + data[0] = DW_OP_addr; + store_unsigned_integer (&data[1], cu_header->addr_size, + byte_order, DW_ADDR (attr)); + data[cu_header->addr_size + 1] = DW_OP_stack_value; + + SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs; + SYMBOL_LOCATION_BATON (sym) = baton; + SYMBOL_CLASS (sym) = LOC_COMPUTED; + } break; case DW_FORM_string: case DW_FORM_strp: @@ -8617,6 +9113,7 @@ dwarf2_const_value (struct attribute *attr, struct symbol *sym, case DW_FORM_block2: case DW_FORM_block4: case DW_FORM_block: + case DW_FORM_exprloc: blk = DW_BLOCK (attr); if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != blk->size) dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym), @@ -8695,7 +9192,6 @@ dwarf2_const_value_data (struct attribute *attr, static struct type * die_type (struct die_info *die, struct dwarf2_cu *cu) { - struct type *type; struct attribute *type_attr; struct die_info *type_die; @@ -8708,14 +9204,60 @@ die_type (struct die_info *die, struct dwarf2_cu *cu) type_die = follow_die_ref_or_sig (die, type_attr, &cu); - type = tag_type_to_type (type_die, cu); - if (!type) + return tag_type_to_type (type_die, cu); +} + +/* True iff CU's producer generates GNAT Ada auxiliary information + that allows to find parallel types through that information instead + of having to do expensive parallel lookups by type name. */ + +static int +need_gnat_info (struct dwarf2_cu *cu) +{ + /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version + of GNAT produces this auxiliary information, without any indication + that it is produced. Part of enhancing the FSF version of GNAT + to produce that information will be to put in place an indicator + that we can use in order to determine whether the descriptive type + info is available or not. One suggestion that has been made is + to use a new attribute, attached to the CU die. For now, assume + that the descriptive type info is not available. */ + return 0; +} + + +/* Return the auxiliary type of the die in question using its + DW_AT_GNAT_descriptive_type attribute. Returns NULL if the + attribute is not present. */ + +static struct type * +die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu) +{ + struct attribute *type_attr; + struct die_info *type_die; + + type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu); + if (!type_attr) + return NULL; + + type_die = follow_die_ref (die, type_attr, &cu); + return tag_type_to_type (type_die, cu); +} + +/* If DIE has a descriptive_type attribute, then set the TYPE's + descriptive type accordingly. */ + +static void +set_descriptive_type (struct type *type, struct die_info *die, + struct dwarf2_cu *cu) +{ + struct type *descriptive_type = die_descriptive_type (die, cu); + + if (descriptive_type) { - dump_die_for_error (type_die); - error (_("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]"), - cu->objfile->name); + ALLOCATE_GNAT_AUX_TYPE (type); + TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type; } - return type; } /* Return the containing type of the die in question using its @@ -8724,24 +9266,16 @@ die_type (struct die_info *die, struct dwarf2_cu *cu) static struct type * die_containing_type (struct die_info *die, struct dwarf2_cu *cu) { - struct type *type = NULL; struct attribute *type_attr; - struct die_info *type_die = NULL; + struct die_info *type_die; type_attr = dwarf2_attr (die, DW_AT_containing_type, cu); - if (type_attr) - { - type_die = follow_die_ref_or_sig (die, type_attr, &cu); - type = tag_type_to_type (type_die, cu); - } - if (!type) - { - if (type_die) - dump_die_for_error (type_die); - error (_("Dwarf Error: Problem turning containing type into gdb type [in module %s]"), - cu->objfile->name); - } - return type; + if (!type_attr) + error (_("Dwarf Error: Problem turning containing type into gdb type " + "[in module %s]"), cu->objfile->name); + + type_die = follow_die_ref_or_sig (die, type_attr, &cu); + return tag_type_to_type (type_die, cu); } static struct type * @@ -8752,9 +9286,18 @@ tag_type_to_type (struct die_info *die, struct dwarf2_cu *cu) this_type = read_type_die (die, cu); if (!this_type) { - dump_die_for_error (die); - error (_("Dwarf Error: Cannot find type of die [in module %s]"), - cu->objfile->name); + char *message, *saved; + + /* read_type_die already issued a complaint. */ + message = xstrprintf (_(""), + cu->objfile->name, + cu->header.offset, + die->offset); + saved = obstack_copy0 (&cu->objfile->objfile_obstack, + message, strlen (message)); + xfree (message); + + this_type = init_type (TYPE_CODE_ERROR, 0, 0, saved, cu->objfile); } return this_type; } @@ -8823,6 +9366,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu) case DW_TAG_namespace: this_type = read_namespace_type (die, cu); break; + case DW_TAG_module: + this_type = read_module_type (die, cu); + break; default: complaint (&symfile_complaints, _("unexpected tag in read_type_die: '%s'"), dwarf_tag_name (die->tag)); @@ -8854,8 +9400,8 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu) struct dwarf2_cu *spec_cu; struct type *parent_type; - if (cu->language != language_cplus - && cu->language != language_java) + if (cu->language != language_cplus && cu->language != language_java + && cu->language != language_fortran) return ""; /* We have to be careful in the presence of DW_AT_specification. @@ -8895,12 +9441,19 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu) { case DW_TAG_namespace: parent_type = read_type_die (parent, cu); + /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus + DW_TAG_namespace DIEs with a name of "::" for the global namespace. + Work around this problem here. */ + if (cu->language == language_cplus + && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0) + return ""; /* We give a name to even anonymous namespaces. */ return TYPE_TAG_NAME (parent_type); case DW_TAG_class_type: case DW_TAG_interface_type: case DW_TAG_structure_type: case DW_TAG_union_type: + case DW_TAG_module: parent_type = read_type_die (parent, cu); if (TYPE_TAG_NAME (parent_type) != NULL) return TYPE_TAG_NAME (parent_type); @@ -8920,18 +9473,27 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu) perform an obconcat, otherwise allocate storage for the result. The CU argument is used to determine the language and hence, the appropriate separator. */ -#define MAX_SEP_LEN 2 /* sizeof ("::") */ +#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */ static char * -typename_concat (struct obstack *obs, const char *prefix, const char *suffix, - struct dwarf2_cu *cu) +typename_concat (struct obstack *obs, const char *prefix, const char *suffix, + int physname, struct dwarf2_cu *cu) { - char *sep; + const char *lead = ""; + const char *sep; if (suffix == NULL || suffix[0] == '\0' || prefix == NULL || prefix[0] == '\0') sep = ""; else if (cu->language == language_java) sep = "."; + else if (cu->language == language_fortran && physname) + { + /* This is gfortran specific mangling. Normally DW_AT_linkage_name or + DW_AT_MIPS_linkage_name is preferred and used instead. */ + + lead = "__"; + sep = "_MOD_"; + } else sep = "::"; @@ -8943,7 +9505,9 @@ typename_concat (struct obstack *obs, const char *prefix, const char *suffix, if (obs == NULL) { char *retval = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1); - strcpy (retval, prefix); + + strcpy (retval, lead); + strcat (retval, prefix); strcat (retval, sep); strcat (retval, suffix); return retval; @@ -8951,7 +9515,7 @@ typename_concat (struct obstack *obs, const char *prefix, const char *suffix, else { /* We have an obstack. */ - return obconcat (obs, prefix, sep, suffix); + return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL); } } @@ -8963,19 +9527,6 @@ sibling_die (struct die_info *die) return die->sibling; } -/* Get linkage name of a die, return NULL if not found. */ - -static char * -dwarf2_linkage_name (struct die_info *die, struct dwarf2_cu *cu) -{ - struct attribute *attr; - - attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu); - if (attr && DW_STRING (attr)) - return DW_STRING (attr); - return dwarf2_name (die, cu); -} - /* Get name of a die, return NULL if not found. */ static char * @@ -9019,16 +9570,61 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) /* These tags always have simple identifiers already; no need to canonicalize them. */ return DW_STRING (attr); - default: - if (!DW_STRING_IS_CANONICAL (attr)) + + case DW_TAG_subprogram: + /* Java constructors will all be named "", so return + the class name when we see this special case. */ + if (cu->language == language_java + && DW_STRING (attr) != NULL + && strcmp (DW_STRING (attr), "") == 0) { - DW_STRING (attr) - = dwarf2_canonicalize_name (DW_STRING (attr), cu, - &cu->objfile->objfile_obstack); - DW_STRING_IS_CANONICAL (attr) = 1; + struct dwarf2_cu *spec_cu = cu; + struct die_info *spec_die; + + /* GCJ will output '' for Java constructor names. + For this special case, return the name of the parent class. */ + + /* GCJ may output suprogram DIEs with AT_specification set. + If so, use the name of the specified DIE. */ + spec_die = die_specification (die, &spec_cu); + if (spec_die != NULL) + return dwarf2_name (spec_die, spec_cu); + + do + { + die = die->parent; + if (die->tag == DW_TAG_class_type) + return dwarf2_name (die, cu); + } + while (die->tag != DW_TAG_compile_unit); } - return DW_STRING (attr); + break; + + case DW_TAG_class_type: + case DW_TAG_interface_type: + case DW_TAG_structure_type: + case DW_TAG_union_type: + /* Some GCC versions emit spurious DW_AT_name attributes for unnamed + structures or unions. These were of the form "._%d" in GCC 4.1, + or simply "" or "" in GCC 4.3 + and GCC 4.4. We work around this problem by ignoring these. */ + if (strncmp (DW_STRING (attr), "._", 2) == 0 + || strncmp (DW_STRING (attr), "objfile->objfile_obstack); + DW_STRING_IS_CANONICAL (attr) = 1; } + return DW_STRING (attr); } /* Return the die that this die in an extension of, or NULL if there @@ -9390,6 +9986,8 @@ dwarf_attr_name (unsigned attr) /* DWARF 4 values. */ case DW_AT_signature: return "DW_AT_signature"; + case DW_AT_linkage_name: + return "DW_AT_linkage_name"; /* SGI/MIPS extensions. */ #ifdef MIPS /* collides with DW_AT_HP_block_index */ case DW_AT_MIPS_fde: @@ -9543,8 +10141,8 @@ dwarf_form_name (unsigned form) /* Convert a DWARF stack opcode into its string name. */ -static char * -dwarf_stack_op_name (unsigned op) +const char * +dwarf_stack_op_name (unsigned op, int def) { switch (op) { @@ -9847,32 +10445,24 @@ dwarf_stack_op_name (unsigned op) return "DW_OP_call4"; case DW_OP_call_ref: return "DW_OP_call_ref"; - /* GNU extensions. */ case DW_OP_form_tls_address: return "DW_OP_form_tls_address"; case DW_OP_call_frame_cfa: return "DW_OP_call_frame_cfa"; case DW_OP_bit_piece: return "DW_OP_bit_piece"; + /* DWARF 4 extensions. */ + case DW_OP_implicit_value: + return "DW_OP_implicit_value"; + case DW_OP_stack_value: + return "DW_OP_stack_value"; + /* GNU extensions. */ case DW_OP_GNU_push_tls_address: return "DW_OP_GNU_push_tls_address"; case DW_OP_GNU_uninit: return "DW_OP_GNU_uninit"; - /* HP extensions. */ - case DW_OP_HP_is_value: - return "DW_OP_HP_is_value"; - case DW_OP_HP_fltconst4: - return "DW_OP_HP_fltconst4"; - case DW_OP_HP_fltconst8: - return "DW_OP_HP_fltconst8"; - case DW_OP_HP_mod_range: - return "DW_OP_HP_mod_range"; - case DW_OP_HP_unmod_range: - return "DW_OP_HP_unmod_range"; - case DW_OP_HP_tls: - return "DW_OP_HP_tls"; default: - return "OP_"; + return def ? "OP_" : NULL; } } @@ -9925,6 +10515,9 @@ dwarf_type_encoding_name (unsigned enc) return "DW_ATE_unsigned_fixed"; case DW_ATE_decimal_float: return "DW_ATE_decimal_float"; + /* DWARF 4. */ + case DW_ATE_UTF: + return "DW_ATE_UTF"; /* HP extensions. */ case DW_ATE_HP_float80: return "DW_ATE_HP_float80"; @@ -10065,6 +10658,10 @@ dump_die_shallow (struct ui_file *f, int indent, struct die_info *die) case DW_FORM_block1: fprintf_unfiltered (f, "block: size %d", DW_BLOCK (&die->attrs[i])->size); break; + case DW_FORM_exprloc: + fprintf_unfiltered (f, "expression: size %u", + DW_BLOCK (&die->attrs[i])->size); + break; case DW_FORM_ref1: case DW_FORM_ref2: case DW_FORM_ref4: @@ -10077,7 +10674,12 @@ dump_die_shallow (struct ui_file *f, int indent, struct die_info *die) case DW_FORM_data8: case DW_FORM_udata: case DW_FORM_sdata: - fprintf_unfiltered (f, "constant: %ld", DW_UNSND (&die->attrs[i])); + fprintf_unfiltered (f, "constant: %s", + pulongest (DW_UNSND (&die->attrs[i]))); + break; + case DW_FORM_sec_offset: + fprintf_unfiltered (f, "section offset: %s", + pulongest (DW_UNSND (&die->attrs[i]))); break; case DW_FORM_sig8: if (DW_SIGNATURED_TYPE (&die->attrs[i]) != NULL) @@ -10099,6 +10701,9 @@ dump_die_shallow (struct ui_file *f, int indent, struct die_info *die) else fprintf_unfiltered (f, "flag: FALSE"); break; + case DW_FORM_flag_present: + fprintf_unfiltered (f, "flag: TRUE"); + break; case DW_FORM_indirect: /* the reader will have reduced the indirect form to the "base form" so this form should not occur */ @@ -10200,10 +10805,10 @@ dwarf2_get_ref_die_offset (struct attribute *attr) return 0; } -/* Return the constant value held by the given attribute. Return -1 - if the value held by the attribute is not constant. */ +/* Return the constant value held by ATTR. Return DEFAULT_VALUE if + * the value held by the attribute is not constant. */ -static int +static LONGEST dwarf2_get_attr_constant_value (struct attribute *attr, int default_value) { if (attr->form == DW_FORM_sdata) @@ -10277,35 +10882,31 @@ follow_die_ref_or_sig (struct die_info *src_die, struct attribute *attr, return die; } -/* Follow reference attribute ATTR of SRC_DIE. - On entry *REF_CU is the CU of SRC_DIE. +/* Follow reference OFFSET. + On entry *REF_CU is the CU of source DIE referencing OFFSET. On exit *REF_CU is the CU of the result. */ static struct die_info * -follow_die_ref (struct die_info *src_die, struct attribute *attr, - struct dwarf2_cu **ref_cu) +follow_die_offset (unsigned int offset, struct dwarf2_cu **ref_cu) { - struct die_info *die; - unsigned int offset; struct die_info temp_die; struct dwarf2_cu *target_cu, *cu = *ref_cu; gdb_assert (cu->per_cu != NULL); - offset = dwarf2_get_ref_die_offset (attr); - if (cu->per_cu->from_debug_types) { /* .debug_types CUs cannot reference anything outside their CU. If they need to, they have to reference a signatured type via DW_FORM_sig8. */ if (! offset_in_cu_p (&cu->header, offset)) - goto not_found; + return NULL; target_cu = cu; } else if (! offset_in_cu_p (&cu->header, offset)) { struct dwarf2_per_cu_data *per_cu; + per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile); /* If necessary, add it to the queue and load its DIEs. */ @@ -10319,15 +10920,67 @@ follow_die_ref (struct die_info *src_die, struct attribute *attr, *ref_cu = target_cu; temp_die.offset = offset; - die = htab_find_with_hash (target_cu->die_hash, &temp_die, offset); - if (die) - return die; + return htab_find_with_hash (target_cu->die_hash, &temp_die, offset); +} - not_found: +/* Follow reference attribute ATTR of SRC_DIE. + On entry *REF_CU is the CU of SRC_DIE. + On exit *REF_CU is the CU of the result. */ - error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE " - "at 0x%x [in module %s]"), - offset, src_die->offset, cu->objfile->name); +static struct die_info * +follow_die_ref (struct die_info *src_die, struct attribute *attr, + struct dwarf2_cu **ref_cu) +{ + unsigned int offset = dwarf2_get_ref_die_offset (attr); + struct dwarf2_cu *cu = *ref_cu; + struct die_info *die; + + die = follow_die_offset (offset, ref_cu); + if (!die) + error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE " + "at 0x%x [in module %s]"), + offset, src_die->offset, cu->objfile->name); + + return die; +} + +/* Return DWARF block and its CU referenced by OFFSET at PER_CU. Returned + value is intended for DW_OP_call*. */ + +struct dwarf2_locexpr_baton +dwarf2_fetch_die_location_block (unsigned int offset, + struct dwarf2_per_cu_data *per_cu) +{ + struct dwarf2_cu *cu = per_cu->cu; + struct die_info *die; + struct attribute *attr; + struct dwarf2_locexpr_baton retval; + + die = follow_die_offset (offset, &cu); + if (!die) + error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"), + offset, per_cu->cu->objfile->name); + + attr = dwarf2_attr (die, DW_AT_location, cu); + if (!attr) + { + /* DWARF: "If there is no such attribute, then there is no effect.". */ + + retval.data = NULL; + retval.size = 0; + } + else + { + if (!attr_form_is_block (attr)) + error (_("Dwarf Error: DIE at 0x%x referenced in module %s " + "is neither DW_FORM_block* nor DW_FORM_exprloc"), + offset, per_cu->cu->objfile->name); + + retval.data = DW_BLOCK (attr)->data; + retval.size = DW_BLOCK (attr)->size; + } + retval.per_cu = cu->per_cu; + return retval; } /* Follow the signature attribute ATTR in SRC_DIE. @@ -10406,6 +11059,8 @@ read_signatured_type_at_offset (struct objfile *objfile, { struct signatured_type *type_sig; + dwarf2_read_section (objfile, &dwarf2_per_objfile->types); + /* We have the section offset, but we need the signature to do the hash table lookup. */ type_sig = lookup_signatured_type_at_offset (objfile, offset); @@ -10509,7 +11164,6 @@ static CORE_ADDR decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu) { struct objfile *objfile = cu->objfile; - struct comp_unit_head *cu_header = &cu->header; int i; int size = blk->size; gdb_byte *data = blk->data; @@ -10699,7 +11353,7 @@ decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu) default: complaint (&symfile_complaints, _("unsupported stack op: '%s'"), - dwarf_stack_op_name (op)); + dwarf_stack_op_name (op, 1)); return (stack[stacki]); } } @@ -10759,7 +11413,7 @@ file_full_name (int file, struct line_header *lh, const char *comp_dir) if (1 <= file && file <= lh->num_file_names) { struct file_entry *fe = &lh->file_names[file - 1]; - + if (IS_ABSOLUTE_PATH (fe->name)) return xstrdup (fe->name); else @@ -10792,9 +11446,10 @@ file_full_name (int file, struct line_header *lh, const char *comp_dir) record the macro definitions made in the file, even if we won't be able to find the file by name. */ char fake_name[80]; + sprintf (fake_name, "", file); - complaint (&symfile_complaints, + complaint (&symfile_complaints, _("bad file number in macro information (%d)"), file); @@ -10826,7 +11481,7 @@ macro_start_file (int file, int line, current_file = macro_include (current_file, line, full_name); xfree (full_name); - + return current_file; } @@ -10837,9 +11492,9 @@ static char * copy_string (const char *buf, int len) { char *s = xmalloc (len + 1); + memcpy (s, buf, len); s[len] = '\0'; - return s; } @@ -10883,7 +11538,7 @@ parse_macro_definition (struct macro_source_file *file, int line, The Dwarf 2 spec says that an object-like macro's name is always followed by a space, but versions of GCC around March 2002 omit - the space when the macro's definition is the empty string. + the space when the macro's definition is the empty string. The Dwarf 2 spec says that there should be no spaces between the formal arguments in a function-like macro's formal argument list, @@ -10912,7 +11567,7 @@ parse_macro_definition (struct macro_source_file *file, int line, dwarf2_macro_malformed_definition_complaint (body); replacement = body + name_len; } - + macro_define_object (file, line, name, replacement); xfree (name); @@ -10970,14 +11625,14 @@ parse_macro_definition (struct macro_source_file *file, int line, if (*p == ' ') /* Perfectly formed definition, no complaints. */ macro_define_function (file, line, name, - argc, (const char **) argv, + argc, (const char **) argv, p + 1); else if (*p == '\0') { /* Complain, but do define it. */ dwarf2_macro_malformed_definition_complaint (body); macro_define_function (file, line, name, - argc, (const char **) argv, + argc, (const char **) argv, p); } else @@ -11012,6 +11667,8 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, enum dwarf_macinfo_record_type macinfo_type; int at_commandline; + dwarf2_read_section (dwarf2_per_objfile->objfile, + &dwarf2_per_objfile->macinfo); if (dwarf2_per_objfile->macinfo.buffer == NULL) { complaint (&symfile_complaints, _("missing .debug_macinfo section")); @@ -11156,20 +11813,22 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset, complaint (&symfile_complaints, _("debug info with no main source gives macro %s " "on line %d: %s"), - macinfo_type == - DW_MACINFO_define ? _("definition") : macinfo_type == - DW_MACINFO_undef ? _("undefinition") : - "something-or-other", line, body); + macinfo_type == DW_MACINFO_define ? + _("definition") : + macinfo_type == DW_MACINFO_undef ? + _("undefinition") : + _("something-or-other"), line, body); break; } if ((line == 0 && !at_commandline) || (line != 0 && at_commandline)) complaint (&symfile_complaints, _("debug info gives %s macro %s with %s line %d: %s"), at_commandline ? _("command-line") : _("in-file"), - macinfo_type == - DW_MACINFO_define ? _("definition") : macinfo_type == - DW_MACINFO_undef ? _("undefinition") : - "something-or-other", + macinfo_type == DW_MACINFO_define ? + _("definition") : + macinfo_type == DW_MACINFO_undef ? + _("undefinition") : + _("something-or-other"), line == 0 ? _("zero") : _("non-zero"), line, body); if (macinfo_type == DW_MACINFO_define) @@ -11270,7 +11929,8 @@ attr_form_is_block (struct attribute *attr) attr->form == DW_FORM_block1 || attr->form == DW_FORM_block2 || attr->form == DW_FORM_block4 - || attr->form == DW_FORM_block); + || attr->form == DW_FORM_block + || attr->form == DW_FORM_exprloc); } /* Return non-zero if ATTR's value is a section offset --- classes @@ -11285,7 +11945,8 @@ static int attr_form_is_section_offset (struct attribute *attr) { return (attr->form == DW_FORM_data4 - || attr->form == DW_FORM_data8); + || attr->form == DW_FORM_data8 + || attr->form == DW_FORM_sec_offset); } @@ -11335,6 +11996,9 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym, baton->per_cu = cu->per_cu; gdb_assert (baton->per_cu); + dwarf2_read_section (dwarf2_per_objfile->objfile, + &dwarf2_per_objfile->loc); + /* We don't know how long the location list is, but make sure we don't run off the edge of the section. */ baton->size = dwarf2_per_objfile->loc.size - DW_UNSND (attr); @@ -11373,13 +12037,15 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym, baton->size = 0; baton->data = NULL; } - + SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs; SYMBOL_LOCATION_BATON (sym) = baton; } } -/* Return the OBJFILE associated with the compilation unit CU. */ +/* Return the OBJFILE associated with the compilation unit CU. If CU + came from a separate debuginfo file, then the master objfile is + returned. */ struct objfile * dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu) @@ -11408,14 +12074,49 @@ dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu) struct dwarf2_per_objfile *per_objfile = objfile_data (objfile, dwarf2_objfile_data_key); gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset; - struct comp_unit_head cu_header; + memset (&cu_header, 0, sizeof cu_header); read_comp_unit_head (&cu_header, info_ptr, objfile->obfd); return cu_header.addr_size; } } +/* Return the offset size given in the compilation unit header for CU. */ + +int +dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu) +{ + if (per_cu->cu) + return per_cu->cu->header.offset_size; + else + { + /* If the CU is not currently read in, we re-read its header. */ + struct objfile *objfile = per_cu->psymtab->objfile; + struct dwarf2_per_objfile *per_objfile + = objfile_data (objfile, dwarf2_objfile_data_key); + gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset; + struct comp_unit_head cu_header; + + memset (&cu_header, 0, sizeof cu_header); + read_comp_unit_head (&cu_header, info_ptr, objfile->obfd); + return cu_header.offset_size; + } +} + +/* Return the text offset of the CU. The returned offset comes from + this CU's objfile. If this objfile came from a separate debuginfo + file, then the offset may be different from the corresponding + offset in the parent objfile. */ + +CORE_ADDR +dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu) +{ + struct objfile *objfile = per_cu->psymtab->objfile; + + return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); +} + /* Locate the .debug_info compilation unit from CU's objfile which contains the DIE at OFFSET. Raises an error on failure. */ @@ -11431,6 +12132,7 @@ dwarf2_find_containing_comp_unit (unsigned int offset, while (high > low) { int mid = low + (high - low) / 2; + if (dwarf2_per_objfile->all_comp_units[mid]->offset >= offset) high = mid; else @@ -11465,6 +12167,7 @@ static struct dwarf2_per_cu_data * dwarf2_find_comp_unit (unsigned int offset, struct objfile *objfile) { struct dwarf2_per_cu_data *this_cu; + this_cu = dwarf2_find_containing_comp_unit (offset, objfile); if (this_cu->offset != offset) error (_("no compilation unit with offset %u."), offset); @@ -11650,6 +12353,7 @@ static hashval_t offset_and_type_hash (const void *item) { const struct dwarf2_offset_and_type *ofs = item; + return ofs->offset; } @@ -11660,17 +12364,46 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs) { const struct dwarf2_offset_and_type *ofs_lhs = item_lhs; const struct dwarf2_offset_and_type *ofs_rhs = item_rhs; + return ofs_lhs->offset == ofs_rhs->offset; } /* Set the type associated with DIE to TYPE. Save it in CU's hash - table if necessary. For convenience, return TYPE. */ + table if necessary. For convenience, return TYPE. + + The DIEs reading must have careful ordering to: + * Not cause infite loops trying to read in DIEs as a prerequisite for + reading current DIE. + * Not trying to dereference contents of still incompletely read in types + while reading in other DIEs. + * Enable referencing still incompletely read in types just by a pointer to + the type without accessing its fields. + + Therefore caller should follow these rules: + * Try to fetch any prerequisite types we may need to build this DIE type + before building the type and calling set_die_type. + * After building typer call set_die_type for current DIE as soon as + possible before fetching more types to complete the current type. + * Make the type as complete as possible before fetching more types. */ static struct type * set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu) { struct dwarf2_offset_and_type **slot, ofs; + /* For Ada types, make sure that the gnat-specific data is always + initialized (if not already set). There are a few types where + we should not be doing so, because the type-specific area is + already used to hold some other piece of info (eg: TYPE_CODE_FLT + where the type-specific area is used to store the floatformat). + But this is not a problem, because the gnat-specific information + is actually not needed for these types. */ + if (need_gnat_info (cu) + && TYPE_CODE (type) != TYPE_CODE_FUNC + && TYPE_CODE (type) != TYPE_CODE_FLT + && !HAVE_GNAT_AUX_INFO (type)) + INIT_GNAT_SPECIFIC (type); + if (cu->type_hash == NULL) { gdb_assert (cu->per_cu != NULL); @@ -11689,6 +12422,10 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu) ofs.type = type; slot = (struct dwarf2_offset_and_type **) htab_find_slot_with_hash (cu->type_hash, &ofs, ofs.offset, INSERT); + if (*slot) + complaint (&symfile_complaints, + _("A problem internal to GDB: DIE 0x%x has type already set"), + die->offset); *slot = obstack_alloc (&cu->objfile->objfile_obstack, sizeof (**slot)); **slot = ofs; return type; @@ -11784,6 +12521,7 @@ static hashval_t partial_die_hash (const void *item) { const struct partial_die_info *part_die = item; + return part_die->offset; } @@ -11795,6 +12533,7 @@ partial_die_eq (const void *item_lhs, const void *item_rhs) { const struct partial_die_info *part_die_lhs = item_lhs; const struct partial_die_info *part_die_rhs = item_rhs; + return part_die_lhs->offset == part_die_rhs->offset; } @@ -11809,7 +12548,7 @@ set_dwarf2_cmd (char *args, int from_tty) static void show_dwarf2_cmd (char *args, int from_tty) -{ +{ cmd_show_list (show_dwarf2_cmdlist, from_tty, ""); } @@ -11824,6 +12563,7 @@ munmap_section_buffer (struct dwarf2_section_info *info) intptr_t begin = (intptr_t) info->buffer; intptr_t map_begin = begin & ~(pagesize - 1); size_t map_length = info->size + begin - map_begin; + gdb_assert (munmap ((void *) map_begin, map_length) == 0); #else /* Without HAVE_MMAP, we should never be here to begin with. */ @@ -11838,17 +12578,32 @@ static void dwarf2_per_objfile_free (struct objfile *objfile, void *d) { struct dwarf2_per_objfile *data = d; + + /* This is sorted according to the order they're defined in to make it easier + to keep in sync. */ munmap_section_buffer (&data->info); munmap_section_buffer (&data->abbrev); munmap_section_buffer (&data->line); - munmap_section_buffer (&data->str); + munmap_section_buffer (&data->loc); munmap_section_buffer (&data->macinfo); + munmap_section_buffer (&data->str); munmap_section_buffer (&data->ranges); - munmap_section_buffer (&data->loc); + munmap_section_buffer (&data->types); munmap_section_buffer (&data->frame); munmap_section_buffer (&data->eh_frame); } +int dwarf2_always_disassemble; + +static void +show_dwarf2_always_disassemble (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("\ +Whether to always disassemble DWARF expressions is %s.\n"), + value); +} + void _initialize_dwarf2_read (void); void @@ -11881,6 +12636,18 @@ caching, which can slow down startup."), &set_dwarf2_cmdlist, &show_dwarf2_cmdlist); + add_setshow_boolean_cmd ("always-disassemble", class_obscure, + &dwarf2_always_disassemble, _("\ +Set whether `info address' always disassembles DWARF expressions."), _("\ +Show whether `info address' always disassembles DWARF expressions."), _("\ +When enabled, DWARF expressions are always printed in an assembly-like\n\ +syntax. When disabled, expressions will be printed in a more\n\ +conversational style, when possible."), + NULL, + show_dwarf2_always_disassemble, + &set_dwarf2_cmdlist, + &show_dwarf2_cmdlist); + add_setshow_zinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\ Set debugging of the dwarf2 DIE reader."), _("\ Show debugging of the dwarf2 DIE reader."), _("\ diff --git a/contrib/gdb-7/gdb/elfread.c b/contrib/gdb-7/gdb/elfread.c index 6e79d4abbd..8c00938777 100644 --- a/contrib/gdb-7/gdb/elfread.c +++ b/contrib/gdb-7/gdb/elfread.c @@ -1,7 +1,7 @@ /* Read ELF (Executable and Linking Format) object files for GDB. Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Fred Fish at Cygnus Support. @@ -36,6 +36,7 @@ #include "gdb-stabs.h" #include "complaints.h" #include "demangle.h" +#include "psympriv.h" extern void _initialize_elfread (void); @@ -114,7 +115,17 @@ elf_symfile_segments (bfd *abfd) break; } - if (bfd_get_section_size (sect) > 0 && j == num_segments) + /* We should have found a segment for every non-empty section. + If we haven't, we will not relocate this section by any + offsets we apply to the segments. As an exception, do not + warn about SHT_NOBITS sections; in normal ELF execution + environments, SHT_NOBITS means zero-initialized and belongs + in a segment, but in no-OS environments some tools (e.g. ARM + RealView) use SHT_NOBITS for uninitialized data. Since it is + uninitialized, it doesn't need a program header. Such + binaries are not relocatable. */ + if (bfd_get_section_size (sect) > 0 && j == num_segments + && (bfd_get_section_flags (abfd, sect) & SEC_LOAD) != 0) warning (_("Loadable segment \"%s\" outside of ELF segments"), bfd_section_name (abfd, sect)); } @@ -162,7 +173,8 @@ elf_locate_sections (bfd *ignore_abfd, asection *sectp, void *eip) } static struct minimal_symbol * -record_minimal_symbol (char *name, CORE_ADDR address, +record_minimal_symbol (const char *name, int name_len, int copy_name, + CORE_ADDR address, enum minimal_symbol_type ms_type, asection *bfd_section, struct objfile *objfile) { @@ -171,8 +183,9 @@ record_minimal_symbol (char *name, CORE_ADDR address, if (ms_type == mst_text || ms_type == mst_file_text) address = gdbarch_smash_text_address (gdbarch, address); - return prim_record_minimal_symbol_and_info - (name, address, ms_type, bfd_section->index, bfd_section, objfile); + return prim_record_minimal_symbol_full (name, name_len, copy_name, address, + ms_type, bfd_section->index, + bfd_section, objfile); } /* @@ -206,10 +219,10 @@ record_minimal_symbol (char *name, CORE_ADDR address, static void elf_symtab_read (struct objfile *objfile, int type, - long number_of_symbols, asymbol **symbol_table) + long number_of_symbols, asymbol **symbol_table, + int copy_names) { struct gdbarch *gdbarch = get_objfile_arch (objfile); - long storage_needed; asymbol *sym; long i; CORE_ADDR symaddr; @@ -221,8 +234,9 @@ elf_symtab_read (struct objfile *objfile, int type, /* If filesym is nonzero, it points to a file symbol, but we haven't seen any section info for it yet. */ asymbol *filesym = 0; - /* Name of filesym, as saved on the objfile_obstack. */ - char *filesymname = obsavestring ("", 0, &objfile->objfile_obstack); + /* Name of filesym. This is either a constant string or is saved on + the objfile's obstack. */ + char *filesymname = ""; struct dbx_symfile_info *dbx = objfile->deprecated_sym_stab_info; int stripped = (bfd_get_symcount (objfile->obfd) == 0); @@ -287,7 +301,8 @@ elf_symtab_read (struct objfile *objfile, int type, symaddr += ANOFFSET (objfile->section_offsets, sect->index); msym = record_minimal_symbol - ((char *) sym->name, symaddr, mst_solib_trampoline, sect, objfile); + (sym->name, strlen (sym->name), copy_names, + symaddr, mst_solib_trampoline, sect, objfile); if (msym != NULL) msym->filename = filesymname; continue; @@ -410,6 +425,7 @@ elf_symtab_read (struct objfile *objfile, int type, /* Named Local variable in a Data section. Check its name for stabs-in-elf. */ int special_local_sect; + if (strcmp ("Bbss.bss", sym->name) == 0) special_local_sect = SECT_OFF_BSS (objfile); else if (strcmp ("Ddata.data", sym->name) == 0) @@ -500,7 +516,7 @@ elf_symtab_read (struct objfile *objfile, int type, continue; /* Skip this symbol. */ } msym = record_minimal_symbol - ((char *) sym->name, symaddr, + (sym->name, strlen (sym->name), copy_names, symaddr, ms_type, sym->section, objfile); if (msym) @@ -520,10 +536,10 @@ elf_symtab_read (struct objfile *objfile, int type, if (elf_sym) MSYMBOL_SIZE(msym) = elf_sym->internal_elf_sym.st_size; + + msym->filename = filesymname; + gdbarch_elf_make_msymbol_special (gdbarch, sym, msym); } - if (msym != NULL) - msym->filename = filesymname; - gdbarch_elf_make_msymbol_special (gdbarch, sym, msym); /* For @plt symbols, also record a trampoline to the destination symbol. The @plt symbol will be used in @@ -535,12 +551,10 @@ elf_symtab_read (struct objfile *objfile, int type, if (len > 4 && strcmp (sym->name + len - 4, "@plt") == 0) { - char *base_name = alloca (len - 4 + 1); struct minimal_symbol *mtramp; - memcpy (base_name, sym->name, len - 4); - base_name[len - 4] = '\0'; - mtramp = record_minimal_symbol (base_name, symaddr, + mtramp = record_minimal_symbol (sym->name, len - 4, 1, + symaddr, mst_solib_trampoline, sym->section, objfile); if (mtramp) @@ -555,6 +569,147 @@ elf_symtab_read (struct objfile *objfile, int type, } } +struct build_id + { + size_t size; + gdb_byte data[1]; + }; + +/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */ + +static struct build_id * +build_id_bfd_get (bfd *abfd) +{ + struct build_id *retval; + + if (!bfd_check_format (abfd, bfd_object) + || bfd_get_flavour (abfd) != bfd_target_elf_flavour + || elf_tdata (abfd)->build_id == NULL) + return NULL; + + retval = xmalloc (sizeof *retval - 1 + elf_tdata (abfd)->build_id_size); + retval->size = elf_tdata (abfd)->build_id_size; + memcpy (retval->data, elf_tdata (abfd)->build_id, retval->size); + + return retval; +} + +/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */ + +static int +build_id_verify (const char *filename, struct build_id *check) +{ + bfd *abfd; + struct build_id *found = NULL; + int retval = 0; + + /* We expect to be silent on the non-existing files. */ + abfd = bfd_open_maybe_remote (filename); + if (abfd == NULL) + return 0; + + found = build_id_bfd_get (abfd); + + if (found == NULL) + warning (_("File \"%s\" has no build-id, file skipped"), filename); + else if (found->size != check->size + || memcmp (found->data, check->data, found->size) != 0) + warning (_("File \"%s\" has a different build-id, file skipped"), filename); + else + retval = 1; + + gdb_bfd_close_or_warn (abfd); + + xfree (found); + + return retval; +} + +static char * +build_id_to_debug_filename (struct build_id *build_id) +{ + char *link, *debugdir, *retval = NULL; + + /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */ + link = alloca (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 + + 2 * build_id->size + (sizeof ".debug" - 1) + 1); + + /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will + cause "/.build-id/..." lookups. */ + + debugdir = debug_file_directory; + do + { + char *s, *debugdir_end; + gdb_byte *data = build_id->data; + size_t size = build_id->size; + + while (*debugdir == DIRNAME_SEPARATOR) + debugdir++; + + debugdir_end = strchr (debugdir, DIRNAME_SEPARATOR); + if (debugdir_end == NULL) + debugdir_end = &debugdir[strlen (debugdir)]; + + memcpy (link, debugdir, debugdir_end - debugdir); + s = &link[debugdir_end - debugdir]; + s += sprintf (s, "/.build-id/"); + if (size > 0) + { + size--; + s += sprintf (s, "%02x", (unsigned) *data++); + } + if (size > 0) + *s++ = '/'; + while (size-- > 0) + s += sprintf (s, "%02x", (unsigned) *data++); + strcpy (s, ".debug"); + + /* lrealpath() is expensive even for the usually non-existent files. */ + if (access (link, F_OK) == 0) + retval = lrealpath (link); + + if (retval != NULL && !build_id_verify (retval, build_id)) + { + xfree (retval); + retval = NULL; + } + + if (retval != NULL) + break; + + debugdir = debugdir_end; + } + while (*debugdir != 0); + + return retval; +} + +static char * +find_separate_debug_file_by_buildid (struct objfile *objfile) +{ + struct build_id *build_id; + + build_id = build_id_bfd_get (objfile->obfd); + if (build_id != NULL) + { + char *build_id_name; + + build_id_name = build_id_to_debug_filename (build_id); + xfree (build_id); + /* Prevent looping on a stripped .debug file. */ + if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0) + { + warning (_("\"%s\": separate debug info file has no debug info"), + build_id_name); + xfree (build_id_name); + } + else if (build_id_name != NULL) + return build_id_name; + } + return NULL; +} + /* Scan and build partial symbols for a symbol file. We have been initialized by a call to elf_symfile_init, which currently does nothing. @@ -563,9 +718,6 @@ elf_symtab_read (struct objfile *objfile, int type, in each section. We simplify it down to a single offset for all symbols. FIXME. - MAINLINE is true if we are reading the main symbol - table (as opposed to a shared lib or dynamically loaded file). - This function only does the minimum work necessary for letting the user "name" things symbolically; it does not read the entire symtab. Instead, it reads the external and static symbols and puts them in partial @@ -587,12 +739,11 @@ elf_symtab_read (struct objfile *objfile, int type, capability even for files compiled without -g. */ static void -elf_symfile_read (struct objfile *objfile, int mainline) +elf_symfile_read (struct objfile *objfile, int symfile_flags) { bfd *abfd = objfile->obfd; struct elfinfo ei; struct cleanup *back_to; - CORE_ADDR offset; long symcount = 0, dynsymcount = 0, synthcount, storage_needed; asymbol **symbol_table = NULL, **dyn_symbol_table = NULL; asymbol *synthsyms; @@ -627,7 +778,7 @@ elf_symfile_read (struct objfile *objfile, int mainline) error (_("Can't read symbols from %s: %s"), bfd_get_filename (objfile->obfd), bfd_errmsg (bfd_get_error ())); - elf_symtab_read (objfile, ST_REGULAR, symcount, symbol_table); + elf_symtab_read (objfile, ST_REGULAR, symcount, symbol_table, 0); } /* Add the dynamic symbols. */ @@ -645,7 +796,7 @@ elf_symfile_read (struct objfile *objfile, int mainline) error (_("Can't read symbols from %s: %s"), bfd_get_filename (objfile->obfd), bfd_errmsg (bfd_get_error ())); - elf_symtab_read (objfile, ST_DYNAMIC, dynsymcount, dyn_symbol_table); + elf_symtab_read (objfile, ST_DYNAMIC, dynsymcount, dyn_symbol_table, 0); } /* Add synthetic symbols - for instance, names for any PLT entries. */ @@ -663,7 +814,7 @@ elf_symfile_read (struct objfile *objfile, int mainline) for (i = 0; i < synthcount; i++) synth_symbol_table[i] = synthsyms + i; make_cleanup (xfree, synth_symbol_table); - elf_symtab_read (objfile, ST_SYNTHETIC, synthcount, synth_symbol_table); + elf_symtab_read (objfile, ST_SYNTHETIC, synthcount, synth_symbol_table, 1); } /* Install any minimal symbols that have been collected as the current @@ -678,15 +829,6 @@ elf_symfile_read (struct objfile *objfile, int mainline) /* Now process debugging information, which is contained in special ELF sections. */ - /* If we are reinitializing, or if we have never loaded syms yet, - set table to empty. MAINLINE is cleared so that *_read_psymtab - functions do not all also re-initialize the psymbol table. */ - if (mainline) - { - init_psymbol_list (objfile, 0); - mainline = 0; - } - /* We first have to find them... */ bfd_map_over_sections (abfd, elf_locate_sections, (void *) & ei); @@ -723,7 +865,6 @@ elf_symfile_read (struct objfile *objfile, int mainline) /* FIXME should probably warn about a stab section without a stabstr. */ if (str_sect) elfstab_build_psymtabs (objfile, - mainline, ei.stabsect, str_sect->filepos, bfd_section_size (abfd, str_sect)); @@ -731,12 +872,29 @@ elf_symfile_read (struct objfile *objfile, int mainline) if (dwarf2_has_info (objfile)) { /* DWARF 2 sections */ - dwarf2_build_psymtabs (objfile, mainline); + dwarf2_build_psymtabs (objfile); } - /* FIXME: kettenis/20030504: This still needs to be integrated with - dwarf2read.c in a better way. */ - dwarf2_build_frame_info (objfile); + /* If the file has its own symbol tables it has no separate debug info. + `.dynsym'/`.symtab' go to MSYMBOLS, `.debug_info' goes to SYMTABS/PSYMTABS. + `.gnu_debuglink' may no longer be present with `.note.gnu.build-id'. */ + if (!objfile_has_partial_symbols (objfile)) + { + char *debugfile; + + debugfile = find_separate_debug_file_by_buildid (objfile); + + if (debugfile == NULL) + debugfile = find_separate_debug_file_by_debuglink (objfile); + + if (debugfile) + { + bfd *abfd = symfile_bfd_open (debugfile); + + symbol_file_add_separate (abfd, symfile_flags, objfile); + xfree (debugfile); + } + } } /* This cleans up the objfile's deprecated_sym_stab_info pointer, and @@ -886,6 +1044,8 @@ static struct sym_fns elf_sym_fns = elf_symfile_segments, /* sym_segments: Get segment information from a file. */ NULL, /* sym_read_linetable */ + default_symfile_relocate, /* sym_relocate: Relocate a debug section. */ + &psym_functions, NULL /* next: pointer to next struct sym_fns */ }; diff --git a/contrib/gdb-7/gdb/environ.c b/contrib/gdb-7/gdb/environ.c index 657961ffb8..ebd6431801 100644 --- a/contrib/gdb-7/gdb/environ.c +++ b/contrib/gdb-7/gdb/environ.c @@ -1,7 +1,7 @@ /* environ.c -- library for manipulating environments for GNU. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2005 - 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -81,6 +81,7 @@ init_environ (struct gdb_environ *e) { int len = strlen (e->vector[i]); char *new = (char *) xmalloc (len + 1); + memcpy (new, e->vector[i], len + 1); e->vector[i] = new; } diff --git a/contrib/gdb-7/gdb/environ.h b/contrib/gdb-7/gdb/environ.h index 7c2ccff2fe..cf8b26bcbb 100644 --- a/contrib/gdb-7/gdb/environ.h +++ b/contrib/gdb-7/gdb/environ.h @@ -1,5 +1,5 @@ /* Header for environment manipulation library. - Copyright (C) 1989, 1992, 2000, 2005, 2007, 2008, 2009 + Copyright (C) 1989, 1992, 2000, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/contrib/gdb-7/gdb/eval.c b/contrib/gdb-7/gdb/eval.c index 2926465c41..ff17c34018 100644 --- a/contrib/gdb-7/gdb/eval.c +++ b/contrib/gdb-7/gdb/eval.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -40,7 +40,10 @@ #include "regcache.h" #include "user-regs.h" #include "valprint.h" +#include "gdb_obstack.h" +#include "objfiles.h" #include "python/python.h" +#include "wrapper.h" #include "gdb_assert.h" @@ -160,6 +163,7 @@ struct value * evaluate_expression (struct expression *exp) { int pc = 0; + return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_NORMAL); } @@ -170,6 +174,7 @@ struct value * evaluate_type (struct expression *exp) { int pc = 0; + return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS); } @@ -182,6 +187,84 @@ evaluate_subexpression_type (struct expression *exp, int subexp) return evaluate_subexp (NULL_TYPE, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS); } +/* Find the current value of a watchpoint on EXP. Return the value in + *VALP and *RESULTP and the chain of intermediate and final values + in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does + not need them. + + If a memory error occurs while evaluating the expression, *RESULTP will + be set to NULL. *RESULTP may be a lazy value, if the result could + not be read from memory. It is used to determine whether a value + is user-specified (we should watch the whole value) or intermediate + (we should watch only the bit used to locate the final value). + + If the final value, or any intermediate value, could not be read + from memory, *VALP will be set to NULL. *VAL_CHAIN will still be + set to any referenced values. *VALP will never be a lazy value. + This is the value which we store in struct breakpoint. + + If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the + value chain. The caller must free the values individually. If + VAL_CHAIN is NULL, all generated values will be left on the value + chain. */ + +void +fetch_subexp_value (struct expression *exp, int *pc, struct value **valp, + struct value **resultp, struct value **val_chain) +{ + struct value *mark, *new_mark, *result; + volatile struct gdb_exception ex; + + *valp = NULL; + if (resultp) + *resultp = NULL; + if (val_chain) + *val_chain = NULL; + + /* Evaluate the expression. */ + mark = value_mark (); + result = NULL; + + TRY_CATCH (ex, RETURN_MASK_ALL) + { + result = evaluate_subexp (NULL_TYPE, exp, pc, EVAL_NORMAL); + } + if (ex.reason < 0) + { + /* Ignore memory errors, we want watchpoints pointing at + inaccessible memory to still be created; otherwise, throw the + error to some higher catcher. */ + switch (ex.error) + { + case MEMORY_ERROR: + break; + default: + throw_exception (ex); + break; + } + } + + new_mark = value_mark (); + if (mark == new_mark) + return; + if (resultp) + *resultp = result; + + /* Make sure it's not lazy, so that after the target stops again we + have a non-lazy previous value to compare with. */ + if (result != NULL + && (!value_lazy (result) || gdb_value_fetch_lazy (result))) + *valp = result; + + if (val_chain) + { + /* Return the chain of intermediate values. We use this to + decide which addresses to watch. */ + *val_chain = new_mark; + value_release_to_mark (mark); + } +} + /* Extract a field operation from an expression. If the subexpression of EXP starting at *SUBEXP is not a structure dereference operation, return NULL. Otherwise, return the name of the @@ -194,6 +277,7 @@ extract_field_op (struct expression *exp, int *subexp) { int tem; char *result; + if (exp->elts[*subexp].opcode != STRUCTOP_STRUCT && exp->elts[*subexp].opcode != STRUCTOP_PTR) return NULL; @@ -214,6 +298,7 @@ get_label (struct expression *exp, int *pos) int pc = (*pos)++; char *name = &exp->elts[pc + 2].string; int tem = longest_to_int (exp->elts[pc + 1].longconst); + (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1); return name; } @@ -235,6 +320,7 @@ evaluate_struct_tuple (struct value *struct_val, int fieldno = -1; int variantno = -1; int subfieldno = -1; + while (--nargs >= 0) { int pc = *pos; @@ -250,12 +336,14 @@ evaluate_struct_tuple (struct value *struct_val, do { char *label = get_label (exp, &pc); + if (label) { for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++) { char *field_name = TYPE_FIELD_NAME (struct_type, fieldno); + if (field_name != NULL && strcmp (field_name, label) == 0) { variantno = -1; @@ -268,6 +356,7 @@ evaluate_struct_tuple (struct value *struct_val, fieldno++) { char *field_name = TYPE_FIELD_NAME (struct_type, fieldno); + field_type = TYPE_FIELD_TYPE (struct_type, fieldno); if ((field_name == 0 || *field_name == '\0') && TYPE_CODE (field_type) == TYPE_CODE_UNION) @@ -379,6 +468,7 @@ init_array_element (struct value *array, struct value *element, { LONGEST index; int element_size = TYPE_LENGTH (value_type (element)); + if (exp->elts[*pos].opcode == BINOP_COMMA) { (*pos)++; @@ -390,6 +480,7 @@ init_array_element (struct value *array, struct value *element, else if (exp->elts[*pos].opcode == BINOP_RANGE) { LONGEST low, high; + (*pos)++; low = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); high = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); @@ -462,6 +553,7 @@ unop_promote (const struct language_defn *language, struct gdbarch *gdbarch, it needs to modify this function. */ { struct type *builtin_int = builtin_type (gdbarch)->builtin_int; + if (TYPE_LENGTH (type1) < TYPE_LENGTH (builtin_int)) *arg1 = value_cast (builtin_int, *arg1); } @@ -631,7 +723,7 @@ binop_promote (const struct language_defn *language, struct gdbarch *gdbarch, } static int -ptrmath_type_p (struct type *type) +ptrmath_type_p (const struct language_defn *lang, struct type *type) { type = check_typedef (type); if (TYPE_CODE (type) == TYPE_CODE_REF) @@ -644,13 +736,36 @@ ptrmath_type_p (struct type *type) return 1; case TYPE_CODE_ARRAY: - return current_language->c_style_arrays; + return lang->c_style_arrays; default: return 0; } } +/* Constructs a fake method with the given parameter types. + This function is used by the parser to construct an "expected" + type for method overload resolution. */ + +static struct type * +make_params (int num_types, struct type **param_types) +{ + struct type *type = XZALLOC (struct type); + TYPE_MAIN_TYPE (type) = XZALLOC (struct main_type); + TYPE_LENGTH (type) = 1; + TYPE_CODE (type) = TYPE_CODE_METHOD; + TYPE_VPTR_FIELDNO (type) = -1; + TYPE_CHAIN (type) = type; + TYPE_NFIELDS (type) = num_types; + TYPE_FIELDS (type) = (struct field *) + TYPE_ZALLOC (type, sizeof (struct field) * num_types); + + while (num_types-- > 0) + TYPE_FIELD_TYPE (type, num_types) = param_types[num_types]; + + return type; +} + struct value * evaluate_subexp_standard (struct type *expect_type, struct expression *exp, int *pos, @@ -665,12 +780,14 @@ evaluate_subexp_standard (struct type *expect_type, struct type *type; int nargs; struct value **argvec; - int upper, lower, retcode; + int upper, lower; int code; int ix; long mem_offset; struct type **arg_types; int save_pos1; + struct symbol *function = NULL; + char *function_name = NULL; pc = (*pos)++; op = exp->elts[pc].opcode; @@ -684,7 +801,7 @@ evaluate_subexp_standard (struct type *expect_type, goto nosideret; arg1 = value_aggregate_elt (exp->elts[pc + 1].type, &exp->elts[pc + 3].string, - 0, noside); + expect_type, 0, noside); if (arg1 == NULL) error (_("There is no field named %s"), &exp->elts[pc + 3].string); return arg1; @@ -704,6 +821,7 @@ evaluate_subexp_standard (struct type *expect_type, return value_from_decfloat (exp->elts[pc + 1].type, exp->elts[pc + 2].decfloatconst); + case OP_ADL_FUNC: case OP_VAR_VALUE: (*pos) += 3; if (noside == EVAL_SKIP) @@ -820,6 +938,7 @@ evaluate_subexp_standard (struct type *expect_type, && TYPE_CODE (type) == TYPE_CODE_STRUCT) { struct value *rec = allocate_value (expect_type); + memset (value_contents_raw (rec), '\0', TYPE_LENGTH (type)); return evaluate_struct_tuple (rec, exp, pos, noside, nargs); } @@ -832,6 +951,7 @@ evaluate_subexp_standard (struct type *expect_type, struct value *array = allocate_value (expect_type); int element_size = TYPE_LENGTH (check_typedef (element_type)); LONGEST low_bound, high_bound, index; + if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0) { low_bound = 0; @@ -843,6 +963,7 @@ evaluate_subexp_standard (struct type *expect_type, { struct value *element; int index_pc = 0; + if (exp->elts[*pos].opcode == BINOP_RANGE) { index_pc = ++(*pos); @@ -854,6 +975,7 @@ evaluate_subexp_standard (struct type *expect_type, if (index_pc) { int continue_pc = *pos; + *pos = index_pc; index = init_array_element (array, element, exp, pos, noside, low_bound, high_bound); @@ -884,8 +1006,8 @@ evaluate_subexp_standard (struct type *expect_type, LONGEST low_bound, high_bound; /* get targettype of elementtype */ - while (TYPE_CODE (check_type) == TYPE_CODE_RANGE || - TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF) + while (TYPE_CODE (check_type) == TYPE_CODE_RANGE + || TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF) check_type = TYPE_TARGET_TYPE (check_type); if (get_discrete_bounds (element_type, &low_bound, &high_bound) < 0) @@ -896,6 +1018,7 @@ evaluate_subexp_standard (struct type *expect_type, LONGEST range_low, range_high; struct type *range_low_type, *range_high_type; struct value *elem_val; + if (exp->elts[*pos].opcode == BINOP_RANGE) { (*pos)++; @@ -919,14 +1042,14 @@ evaluate_subexp_standard (struct type *expect_type, range_low_type = TYPE_TARGET_TYPE (range_low_type); if (TYPE_CODE (range_high_type) == TYPE_CODE_RANGE) range_high_type = TYPE_TARGET_TYPE (range_high_type); - if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type)) || - (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM && - (range_low_type != range_high_type))) + if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type)) + || (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM + && (range_low_type != range_high_type))) /* different element modes */ error (_("POWERSET tuple elements of different mode")); - if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type)) || - (TYPE_CODE (check_type) == TYPE_CODE_ENUM && - range_low_type != check_type)) + if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type)) + || (TYPE_CODE (check_type) == TYPE_CODE_ENUM + && range_low_type != check_type)) error (_("incompatible POWERSET tuple elements")); if (range_low > range_high) { @@ -940,6 +1063,7 @@ evaluate_subexp_standard (struct type *expect_type, for (; range_low <= range_high; range_low++) { int bit_index = (unsigned) range_low % TARGET_CHAR_BIT; + if (gdbarch_bits_big_endian (exp->gdbarch)) bit_index = TARGET_CHAR_BIT - 1 - bit_index; valaddr[(unsigned) range_low / TARGET_CHAR_BIT] @@ -963,9 +1087,10 @@ evaluate_subexp_standard (struct type *expect_type, { struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside); int lowbound - = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); int upper - = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + if (noside == EVAL_SKIP) goto nosideret; return value_slice (array, lowbound, upper - lowbound + 1); @@ -975,9 +1100,10 @@ evaluate_subexp_standard (struct type *expect_type, { struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside); int lowbound - = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); int length - = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside)); + return value_slice (array, lowbound, length); } @@ -1073,6 +1199,7 @@ evaluate_subexp_standard (struct type *expect_type, if (gnu_runtime) { struct type *type = selector_type; + type = lookup_function_type (type); type = lookup_pointer_type (type); type = lookup_function_type (type); @@ -1161,8 +1288,13 @@ evaluate_subexp_standard (struct type *expect_type, if (addr) { struct symbol *sym = NULL; - /* Is it a high_level symbol? */ + /* The address might point to a function descriptor; + resolve it to the actual code address instead. */ + addr = gdbarch_convert_from_func_ptr_addr (exp->gdbarch, addr, + ¤t_target); + + /* Is it a high_level symbol? */ sym = find_pc_function (addr); if (sym != NULL) method = value_of_variable (sym, 0); @@ -1216,11 +1348,20 @@ evaluate_subexp_standard (struct type *expect_type, { if (TYPE_CODE (value_type (method)) != TYPE_CODE_FUNC) error (_("method address has symbol information with non-function type; skipping")); + + /* Create a function pointer of the appropriate type, and replace + its value with the value of msg_send or msg_send_stret. We must + use a pointer here, as msg_send and msg_send_stret are of pointer + type, and the representation may be different on systems that use + function descriptors. */ if (struct_return) - set_value_address (method, value_as_address (msg_send_stret)); + called_method + = value_from_pointer (lookup_pointer_type (value_type (method)), + value_as_address (msg_send_stret)); else - set_value_address (method, value_as_address (msg_send)); - called_method = method; + called_method + = value_from_pointer (lookup_pointer_type (value_type (method)), + value_as_address (msg_send)); } else { @@ -1244,6 +1385,7 @@ evaluate_subexp_standard (struct type *expect_type, it. */ struct type *type = value_type (called_method); + if (type && TYPE_CODE (type) == TYPE_CODE_PTR) type = TYPE_TARGET_TYPE (type); type = TYPE_TARGET_TYPE (type); @@ -1275,7 +1417,7 @@ evaluate_subexp_standard (struct type *expect_type, { /* Function objc_msg_lookup returns a pointer. */ deprecated_set_value_type (argvec[0], - lookup_function_type (lookup_pointer_type (value_type (argvec[0])))); + lookup_pointer_type (lookup_function_type (value_type (argvec[0])))); argvec[0] = call_function_by_hand (argvec[0], nargs + 2, argvec + 1); } @@ -1325,6 +1467,7 @@ evaluate_subexp_standard (struct type *expect_type, if (noside == EVAL_AVOID_SIDE_EFFECTS) { struct type *method_type = check_typedef (value_type (arg1)); + arg1 = value_zero (method_type, not_lval); } else @@ -1371,6 +1514,58 @@ evaluate_subexp_standard (struct type *expect_type, /* Now, say which argument to start evaluating from */ tem = 2; } + else if (op == OP_SCOPE + && overload_resolution + && (exp->language_defn->la_language == language_cplus)) + { + /* Unpack it locally so we can properly handle overload + resolution. */ + char *name; + int local_tem; + + pc2 = (*pos)++; + local_tem = longest_to_int (exp->elts[pc2 + 2].longconst); + (*pos) += 4 + BYTES_TO_EXP_ELEM (local_tem + 1); + type = exp->elts[pc2 + 1].type; + name = &exp->elts[pc2 + 3].string; + + function = NULL; + function_name = NULL; + if (TYPE_CODE (type) == TYPE_CODE_NAMESPACE) + { + function = cp_lookup_symbol_namespace (TYPE_TAG_NAME (type), + name, + get_selected_block (0), + VAR_DOMAIN); + if (function == NULL) + error (_("No symbol \"%s\" in namespace \"%s\"."), + name, TYPE_TAG_NAME (type)); + + tem = 1; + } + else + { + gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT + || TYPE_CODE (type) == TYPE_CODE_UNION); + function_name = name; + + arg2 = value_zero (type, lval_memory); + ++nargs; + tem = 2; + } + } + else if (op == OP_ADL_FUNC) + { + /* Save the function position and move pos so that the arguments + can be evaluated. */ + int func_name_len; + + save_pos1 = *pos; + tem = 1; + + func_name_len = longest_to_int (exp->elts[save_pos1 + 3].longconst); + (*pos) += 6 + BYTES_TO_EXP_ELEM (func_name_len + 1); + } else { /* Non-method function call */ @@ -1401,16 +1596,49 @@ evaluate_subexp_standard (struct type *expect_type, /* signal end of arglist */ argvec[tem] = 0; - - if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR) + if (op == OP_ADL_FUNC) + { + struct symbol *symp; + char *func_name; + int name_len; + int string_pc = save_pos1 + 3; + + /* Extract the function name. */ + name_len = longest_to_int (exp->elts[string_pc].longconst); + func_name = (char *) alloca (name_len + 1); + strcpy (func_name, &exp->elts[string_pc + 1].string); + + /* Prepare list of argument types for overload resolution */ + arg_types = (struct type **) alloca (nargs * (sizeof (struct type *))); + for (ix = 1; ix <= nargs; ix++) + arg_types[ix - 1] = value_type (argvec[ix]); + + find_overload_match (arg_types, nargs, func_name, + NON_METHOD /* not method */ , 0 /* strict match */ , + NULL, NULL /* pass NULL symbol since symbol is unknown */ , + NULL, &symp, NULL, 0); + + /* Now fix the expression being evaluated. */ + exp->elts[save_pos1 + 2].symbol = symp; + argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, noside); + } + + if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR + || (op == OP_SCOPE && function_name != NULL)) { int static_memfuncp; - char tstr[256]; + char *tstr; /* Method invocation : stuff "this" as first parameter */ argvec[1] = arg2; - /* Name of method from expression */ - strcpy (tstr, &exp->elts[pc2 + 2].string); + + if (op != OP_SCOPE) + { + /* Name of method from expression */ + tstr = &exp->elts[pc2 + 2].string; + } + else + tstr = function_name; if (overload_resolution && (exp->language_defn->la_language == language_cplus)) { @@ -1423,11 +1651,17 @@ evaluate_subexp_standard (struct type *expect_type, arg_types[ix - 1] = value_type (argvec[ix]); (void) find_overload_match (arg_types, nargs, tstr, - 1 /* method */ , 0 /* strict match */ , + METHOD /* method */ , 0 /* strict match */ , &arg2 /* the object */ , NULL, - &valp, NULL, &static_memfuncp); - + &valp, NULL, &static_memfuncp, 0); + if (op == OP_SCOPE && !static_memfuncp) + { + /* For the time being, we don't handle this. */ + error (_("Call to overloaded function %s requires " + "`this' pointer"), + function_name); + } argvec[1] = arg2; /* the ``this'' pointer */ argvec[0] = valp; /* use the method found after overload resolution */ } @@ -1435,6 +1669,7 @@ evaluate_subexp_standard (struct type *expect_type, /* Non-C++ case -- or no overload resolution */ { struct value *temp = arg2; + argvec[0] = value_struct_elt (&temp, argvec + 1, tstr, &static_memfuncp, op == STRUCTOP_STRUCT @@ -1460,7 +1695,7 @@ evaluate_subexp_standard (struct type *expect_type, argvec[1] = arg2; argvec[0] = arg1; } - else if (op == OP_VAR_VALUE) + else if (op == OP_VAR_VALUE || (op == OP_SCOPE && function != NULL)) { /* Non-member function being called */ /* fn: This can only be done for C++ functions. A C-style function @@ -1471,6 +1706,14 @@ evaluate_subexp_standard (struct type *expect_type, { /* Language is C++, do some overload resolution before evaluation */ struct symbol *symp; + int no_adl = 0; + + /* If a scope has been specified disable ADL. */ + if (op == OP_SCOPE) + no_adl = 1; + + if (op == OP_VAR_VALUE) + function = exp->elts[save_pos1+2].symbol; /* Prepare list of argument types for overload resolution */ arg_types = (struct type **) alloca (nargs * (sizeof (struct type *))); @@ -1478,13 +1721,19 @@ evaluate_subexp_standard (struct type *expect_type, arg_types[ix - 1] = value_type (argvec[ix]); (void) find_overload_match (arg_types, nargs, NULL /* no need for name */ , - 0 /* not method */ , 0 /* strict match */ , - NULL, exp->elts[save_pos1+2].symbol /* the function */ , - NULL, &symp, NULL); + NON_METHOD /* not method */ , 0 /* strict match */ , + NULL, function /* the function */ , + NULL, &symp, NULL, no_adl); - /* Now fix the expression being evaluated */ - exp->elts[save_pos1+2].symbol = symp; - argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, noside); + if (op == OP_VAR_VALUE) + { + /* Now fix the expression being evaluated */ + exp->elts[save_pos1+2].symbol = symp; + argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, + noside); + } + else + argvec[0] = value_of_variable (symp, get_selected_block (0)); } else { @@ -1627,6 +1876,7 @@ evaluate_subexp_standard (struct type *expect_type, else { struct value *temp = arg1; + return value_struct_elt (&temp, NULL, &exp->elts[pc + 2].string, NULL, "structure"); } @@ -1648,8 +1898,8 @@ evaluate_subexp_standard (struct type *expect_type, struct value_print_options opts; get_user_print_options (&opts); - if (opts.objectprint && TYPE_TARGET_TYPE(type) && - (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CLASS)) + if (opts.objectprint && TYPE_TARGET_TYPE(type) + && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CLASS)) { real_type = value_rtti_target_type (arg1, &full, &top, &using_enc); if (real_type) @@ -1672,6 +1922,7 @@ evaluate_subexp_standard (struct type *expect_type, else { struct value *temp = arg1; + return value_struct_elt (&temp, NULL, &exp->elts[pc + 2].string, NULL, "structure pointer"); } @@ -1716,6 +1967,20 @@ evaluate_subexp_standard (struct type *expect_type, error (_("non-pointer-to-member value used in pointer-to-member construct")); } + case TYPE_INSTANCE: + nargs = longest_to_int (exp->elts[pc + 1].longconst); + arg_types = (struct type **) alloca (nargs * sizeof (struct type *)); + for (ix = 0; ix < nargs; ++ix) + arg_types[ix] = exp->elts[pc + 1 + ix + 1].type; + + expect_type = make_params (nargs, arg_types); + *(pos) += 3 + nargs; + arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside); + xfree (TYPE_FIELDS (expect_type)); + xfree (TYPE_MAIN_TYPE (expect_type)); + xfree (expect_type); + return arg1; + case BINOP_CONCAT: arg1 = evaluate_subexp_with_coercion (exp, pos, noside); arg2 = evaluate_subexp_with_coercion (exp, pos, noside); @@ -1746,10 +2011,12 @@ evaluate_subexp_standard (struct type *expect_type, op = exp->elts[pc + 1].opcode; if (binop_user_defined_p (op, arg1, arg2)) return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op, noside); - else if (op == BINOP_ADD && ptrmath_type_p (value_type (arg1)) + else if (op == BINOP_ADD && ptrmath_type_p (exp->language_defn, + value_type (arg1)) && is_integral_type (value_type (arg2))) arg2 = value_ptradd (arg1, value_as_long (arg2)); - else if (op == BINOP_SUB && ptrmath_type_p (value_type (arg1)) + else if (op == BINOP_SUB && ptrmath_type_p (exp->language_defn, + value_type (arg1)) && is_integral_type (value_type (arg2))) arg2 = value_ptradd (arg1, - value_as_long (arg2)); else @@ -1775,10 +2042,10 @@ evaluate_subexp_standard (struct type *expect_type, goto nosideret; if (binop_user_defined_p (op, arg1, arg2)) return value_x_binop (arg1, arg2, op, OP_NULL, noside); - else if (ptrmath_type_p (value_type (arg1)) + else if (ptrmath_type_p (exp->language_defn, value_type (arg1)) && is_integral_type (value_type (arg2))) return value_ptradd (arg1, value_as_long (arg2)); - else if (ptrmath_type_p (value_type (arg2)) + else if (ptrmath_type_p (exp->language_defn, value_type (arg2)) && is_integral_type (value_type (arg1))) return value_ptradd (arg2, value_as_long (arg1)); else @@ -1794,14 +2061,14 @@ evaluate_subexp_standard (struct type *expect_type, goto nosideret; if (binop_user_defined_p (op, arg1, arg2)) return value_x_binop (arg1, arg2, op, OP_NULL, noside); - else if (ptrmath_type_p (value_type (arg1)) - && ptrmath_type_p (value_type (arg2))) + else if (ptrmath_type_p (exp->language_defn, value_type (arg1)) + && ptrmath_type_p (exp->language_defn, value_type (arg2))) { /* FIXME -- should be ptrdiff_t */ type = builtin_type (exp->gdbarch)->builtin_long; return value_from_longest (type, value_ptrdiff (arg1, arg2)); } - else if (ptrmath_type_p (value_type (arg1)) + else if (ptrmath_type_p (exp->language_defn, value_type (arg1)) && is_integral_type (value_type (arg2))) return value_ptradd (arg1, - value_as_long (arg2)); else @@ -1871,8 +2138,8 @@ evaluate_subexp_standard (struct type *expect_type, error (_("':' operator used in invalid context")); case BINOP_SUBSCRIPT: - arg1 = evaluate_subexp_with_coercion (exp, pos, noside); - arg2 = evaluate_subexp_with_coercion (exp, pos, noside); + arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); + arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside); if (noside == EVAL_SKIP) goto nosideret; if (binop_user_defined_p (op, arg1, arg2)) @@ -2339,6 +2606,7 @@ evaluate_subexp_standard (struct type *expect_type, else { struct value *retvalp = evaluate_subexp_for_address (exp, pos, noside); + return retvalp; } @@ -2360,6 +2628,22 @@ evaluate_subexp_standard (struct type *expect_type, arg1 = value_cast (type, arg1); return arg1; + case UNOP_DYNAMIC_CAST: + (*pos) += 2; + type = exp->elts[pc + 1].type; + arg1 = evaluate_subexp (type, exp, pos, noside); + if (noside == EVAL_SKIP) + goto nosideret; + return value_dynamic_cast (type, arg1); + + case UNOP_REINTERPRET_CAST: + (*pos) += 2; + type = exp->elts[pc + 1].type; + arg1 = evaluate_subexp (type, exp, pos, noside); + if (noside == EVAL_SKIP) + goto nosideret; + return value_reinterpret_cast (type, arg1); + case UNOP_MEMVAL: (*pos) += 2; arg1 = evaluate_subexp (expect_type, exp, pos, noside); @@ -2381,6 +2665,7 @@ evaluate_subexp_standard (struct type *expect_type, else { CORE_ADDR tls_addr; + tls_addr = target_translate_tls_address (exp->elts[pc + 1].objfile, value_as_address (arg1)); return value_at_lazy (exp->elts[pc + 2].type, tls_addr); @@ -2396,11 +2681,12 @@ evaluate_subexp_standard (struct type *expect_type, } else { - if (ptrmath_type_p (value_type (arg1))) + if (ptrmath_type_p (exp->language_defn, value_type (arg1))) arg2 = value_ptradd (arg1, 1); else { struct value *tmp = arg1; + arg2 = value_one (value_type (arg1), not_lval); binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2); arg2 = value_binop (tmp, arg2, BINOP_ADD); @@ -2419,11 +2705,12 @@ evaluate_subexp_standard (struct type *expect_type, } else { - if (ptrmath_type_p (value_type (arg1))) + if (ptrmath_type_p (exp->language_defn, value_type (arg1))) arg2 = value_ptradd (arg1, -1); else { struct value *tmp = arg1; + arg2 = value_one (value_type (arg1), not_lval); binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2); arg2 = value_binop (tmp, arg2, BINOP_SUB); @@ -2442,11 +2729,12 @@ evaluate_subexp_standard (struct type *expect_type, } else { - if (ptrmath_type_p (value_type (arg1))) + if (ptrmath_type_p (exp->language_defn, value_type (arg1))) arg2 = value_ptradd (arg1, 1); else { struct value *tmp = arg1; + arg2 = value_one (value_type (arg1), not_lval); binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2); arg2 = value_binop (tmp, arg2, BINOP_ADD); @@ -2466,11 +2754,12 @@ evaluate_subexp_standard (struct type *expect_type, } else { - if (ptrmath_type_p (value_type (arg1))) + if (ptrmath_type_p (exp->language_defn, value_type (arg1))) arg2 = value_ptradd (arg1, -1); else { struct value *tmp = arg1; + arg2 = value_one (value_type (arg1), not_lval); binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2); arg2 = value_binop (tmp, arg2, BINOP_SUB); @@ -2497,6 +2786,7 @@ evaluate_subexp_standard (struct type *expect_type, else if (noside == EVAL_AVOID_SIDE_EFFECTS) { struct type *type = exp->elts[pc + 1].type; + /* If this is a typedef, then find its immediate target. We use check_typedef to resolve stubs, but we ignore its result because we do not want to dig past all @@ -2560,7 +2850,7 @@ evaluate_subexp_for_address (struct expression *exp, int *pos, goto default_case_after_eval; } - return x; + return coerce_array (x); case UNOP_MEMVAL: (*pos) += 3; @@ -2579,7 +2869,7 @@ evaluate_subexp_for_address (struct expression *exp, int *pos, if (noside == EVAL_AVOID_SIDE_EFFECTS) { struct type *type = - lookup_pointer_type (SYMBOL_TYPE (var)); + lookup_pointer_type (SYMBOL_TYPE (var)); enum address_class sym_class = SYMBOL_CLASS (var); if (sym_class == LOC_CONST @@ -2598,7 +2888,7 @@ evaluate_subexp_for_address (struct expression *exp, int *pos, (*pos) += 5 + BYTES_TO_EXP_ELEM (tem + 1); x = value_aggregate_elt (exp->elts[pc + 1].type, &exp->elts[pc + 3].string, - 1, noside); + NULL, 1, noside); if (x == NULL) error (_("There is no field named %s"), &exp->elts[pc + 3].string); return x; @@ -2656,7 +2946,7 @@ evaluate_subexp_with_coercion (struct expression *exp, var = exp->elts[pc + 2].symbol; type = check_typedef (SYMBOL_TYPE (var)); if (TYPE_CODE (type) == TYPE_CODE_ARRAY - && CAST_IS_CONVERSION) + && CAST_IS_CONVERSION (exp->language_defn)) { (*pos) += 4; val = address_of_variable (var, exp->elts[pc + 1].block); @@ -2729,6 +3019,7 @@ parse_and_eval_type (char *p, int length) { char *tmp = (char *) alloca (length + 4); struct expression *expr; + tmp[0] = '('; memcpy (tmp + 1, p, length); tmp[length + 1] = ')'; diff --git a/contrib/gdb-7/gdb/event-loop.c b/contrib/gdb-7/gdb/event-loop.c index 3672aa825f..e8cba5d0ac 100644 --- a/contrib/gdb-7/gdb/event-loop.c +++ b/contrib/gdb-7/gdb/event-loop.c @@ -1,5 +1,5 @@ /* Event loop machinery for GDB, the GNU debugger. - Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Elena Zannoni of Cygnus Solutions. @@ -38,6 +38,13 @@ #include "gdb_assert.h" #include "gdb_select.h" +/* Tell create_file_handler what events we are interested in. + This is used by the select version of the event loop. */ + +#define GDB_READABLE (1<<1) +#define GDB_WRITABLE (1<<2) +#define GDB_EXCEPTION (1<<3) + /* Data point to pass to the event handler. */ typedef union event_data { @@ -218,8 +225,7 @@ struct gdb_timer struct gdb_timer *next; timer_handler_func *proc; /* Function to call to do the work */ gdb_client_data client_data; /* Argument to async_handler_func */ - } -gdb_timer; + }; /* List of currently active timers. It is sorted in order of increasing timers. */ @@ -262,7 +268,6 @@ static void create_file_handler (int fd, int mask, handler_func *proc, gdb_client_data client_data); static void handle_file_event (event_data data); static void check_async_event_handlers (void); -static void check_async_signal_handlers (void); static int gdb_wait_for_event (int); static void poll_timers (void); @@ -860,8 +865,8 @@ gdb_wait_for_event (int block) else { struct timeval select_timeout; - struct timeval *timeout_p; + if (block) timeout_p = gdb_notifier.timeout_valid ? &gdb_notifier.select_timeout : NULL; @@ -1189,7 +1194,7 @@ create_timer (int milliseconds, timer_handler_func * proc, gdb_client_data clien gettimeofday (&time_now, NULL); - timer_ptr = (struct gdb_timer *) xmalloc (sizeof (gdb_timer)); + timer_ptr = (struct gdb_timer *) xmalloc (sizeof (*timer_ptr)); timer_ptr->when.tv_sec = time_now.tv_sec + delta.tv_sec; timer_ptr->when.tv_usec = time_now.tv_usec + delta.tv_usec; /* carry? */ @@ -1212,9 +1217,9 @@ create_timer (int milliseconds, timer_handler_func * proc, gdb_client_data clien { /* If the seconds field is greater or if it is the same, but the microsecond field is greater. */ - if ((timer_index->when.tv_sec > timer_ptr->when.tv_sec) || - ((timer_index->when.tv_sec == timer_ptr->when.tv_sec) - && (timer_index->when.tv_usec > timer_ptr->when.tv_usec))) + if ((timer_index->when.tv_sec > timer_ptr->when.tv_sec) + || ((timer_index->when.tv_sec == timer_ptr->when.tv_sec) + && (timer_index->when.tv_usec > timer_ptr->when.tv_usec))) break; } @@ -1288,9 +1293,9 @@ handle_timer_event (event_data dummy) while (timer_ptr != NULL) { - if ((timer_ptr->when.tv_sec > time_now.tv_sec) || - ((timer_ptr->when.tv_sec == time_now.tv_sec) && - (timer_ptr->when.tv_usec > time_now.tv_usec))) + if ((timer_ptr->when.tv_sec > time_now.tv_sec) + || ((timer_ptr->when.tv_sec == time_now.tv_sec) + && (timer_ptr->when.tv_usec > time_now.tv_usec))) break; /* Get rid of the timer from the beginning of the list. */ diff --git a/contrib/gdb-7/gdb/event-loop.h b/contrib/gdb-7/gdb/event-loop.h index d6c6cc54d3..9a61d91cdc 100644 --- a/contrib/gdb-7/gdb/event-loop.h +++ b/contrib/gdb-7/gdb/event-loop.h @@ -1,5 +1,6 @@ /* Definitions used by the GDB event loop. - Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Written by Elena Zannoni of Cygnus Solutions. This file is part of GDB. @@ -87,13 +88,6 @@ typedef enum } queue_position; -/* Tell create_file_handler what events we are interested in. - This is used by the select version of the event loop. */ - -#define GDB_READABLE (1<<1) -#define GDB_WRITABLE (1<<2) -#define GDB_EXCEPTION (1<<3) - /* Exported functions from event-loop.c */ extern void start_event_loop (void); diff --git a/contrib/gdb-7/gdb/event-top.c b/contrib/gdb-7/gdb/event-top.c index 52a5ad75d4..0fc7f899a0 100644 --- a/contrib/gdb-7/gdb/event-top.c +++ b/contrib/gdb-7/gdb/event-top.c @@ -1,6 +1,6 @@ /* Top level stuff for GDB, the GNU debugger. - Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Elena Zannoni of Cygnus Solutions. @@ -476,12 +476,7 @@ static void command_handler (char *command) { int stdin_is_tty = ISATTY (stdin); - long time_at_cmd_start; -#ifdef HAVE_SBRK - long space_at_cmd_start = 0; -#endif - extern int display_time; - extern int display_space; + struct cleanup *stat_chain; quit_flag = 0; if (instream == stdin && stdin_is_tty) @@ -498,42 +493,14 @@ command_handler (char *command) execute_command ("quit", stdin == instream); } - time_at_cmd_start = get_run_time (); - - if (display_space) - { -#ifdef HAVE_SBRK - char *lim = (char *) sbrk (0); - space_at_cmd_start = lim - lim_at_start; -#endif - } + stat_chain = make_command_stats_cleanup (1); execute_command (command, instream == stdin); /* Do any commands attached to breakpoint we stopped at. */ bpstat_do_actions (); - if (display_time) - { - long cmd_time = get_run_time () - time_at_cmd_start; - - printf_unfiltered (_("Command execution time: %ld.%06ld\n"), - cmd_time / 1000000, cmd_time % 1000000); - } - - if (display_space) - { -#ifdef HAVE_SBRK - char *lim = (char *) sbrk (0); - long space_now = lim - lim_at_start; - long space_diff = space_now - space_at_cmd_start; - - printf_unfiltered (_("Space used: %ld (%c%ld for this command)\n"), - space_now, - (space_diff >= 0 ? '+' : '-'), - space_diff); -#endif - } + do_cleanups (stat_chain); } /* Handle a complete line of input. This is called by the callback @@ -556,7 +523,6 @@ command_line_handler (char *rl) char *nline; char got_eof = 0; - int repeat = (instream == stdin); if (annotation_level > 1 && instream == stdin) @@ -990,6 +956,7 @@ static void async_stop_sig (gdb_client_data arg) { char *prompt = get_prompt (); + #if STOP_SIGNAL == SIGTSTP signal (SIGTSTP, SIG_DFL); #if HAVE_SIGPROCMASK diff --git a/contrib/gdb-7/gdb/event-top.h b/contrib/gdb-7/gdb/event-top.h index 75d417c263..725eae2997 100644 --- a/contrib/gdb-7/gdb/event-top.h +++ b/contrib/gdb-7/gdb/event-top.h @@ -1,6 +1,6 @@ /* Definitions used by event-top.c, for GDB, the GNU debugger. - Copyright (C) 1999, 2001, 2003, 2007, 2008, 2009 + Copyright (C) 1999, 2001, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Elena Zannoni of Cygnus Solutions. diff --git a/contrib/gdb-7/gdb/exceptions.c b/contrib/gdb-7/gdb/exceptions.c index a3ee378aeb..ec9b9be62e 100644 --- a/contrib/gdb-7/gdb/exceptions.c +++ b/contrib/gdb-7/gdb/exceptions.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -104,6 +104,7 @@ static void catcher_pop (void) { struct catcher *old_catcher = current_catcher; + current_catcher = old_catcher->prev; /* Restore the cleanup chain, the error/quit messages, and the uiout @@ -174,6 +175,7 @@ exceptions_state_mc (enum catcher_action action) case CATCH_ITER: { struct gdb_exception exception = *current_catcher->exception; + if (current_catcher->mask & RETURN_MASK (exception.reason)) { /* Exit normally if this catcher can handle this @@ -210,7 +212,7 @@ exceptions_state_mc_action_iter_1 (void) /* Return EXCEPTION to the nearest containing catch_errors(). */ -NORETURN void +void throw_exception (struct gdb_exception exception) { struct thread_info *tp = NULL; @@ -239,10 +241,11 @@ throw_exception (struct gdb_exception exception) static char *last_message; -NORETURN void +void deprecated_throw_reason (enum return_reason reason) { struct gdb_exception exception; + memset (&exception, 0, sizeof exception); exception.reason = reason; @@ -299,6 +302,7 @@ print_exception (struct ui_file *file, struct gdb_exception e) as that way the MI's behavior is preserved. */ const char *start; const char *end; + for (start = e.message; start != NULL; start = end) { end = strchr (start, '\n'); @@ -374,7 +378,7 @@ print_any_exception (struct ui_file *file, const char *prefix, } } -NORETURN static void ATTR_NORETURN ATTR_FORMAT (printf, 3, 0) +static void ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0) throw_it (enum return_reason reason, enum errors error, const char *fmt, va_list ap) { @@ -396,22 +400,23 @@ throw_it (enum return_reason reason, enum errors error, const char *fmt, throw_exception (e); } -NORETURN void +void throw_verror (enum errors error, const char *fmt, va_list ap) { throw_it (RETURN_ERROR, error, fmt, ap); } -NORETURN void +void throw_vfatal (const char *fmt, va_list ap) { throw_it (RETURN_QUIT, GDB_NO_ERROR, fmt, ap); } -NORETURN void +void throw_error (enum errors error, const char *fmt, ...) { va_list args; + va_start (args, fmt); throw_it (RETURN_ERROR, error, fmt, args); va_end (args); @@ -457,6 +462,7 @@ catch_exception (struct ui_out *uiout, return_mask mask) { volatile struct gdb_exception exception; + TRY_CATCH (exception, mask) { (*func) (uiout, func_args); @@ -473,6 +479,7 @@ catch_exceptions_with_msg (struct ui_out *uiout, { volatile struct gdb_exception exception; volatile int val = 0; + TRY_CATCH (exception, mask) { val = (*func) (uiout, func_args); @@ -505,6 +512,7 @@ catch_errors (catch_errors_ftype *func, void *func_args, char *errstring, { volatile int val = 0; volatile struct gdb_exception exception; + TRY_CATCH (exception, mask) { val = func (func_args); @@ -520,6 +528,7 @@ catch_command_errors (catch_command_errors_ftype * command, char *arg, int from_tty, return_mask mask) { volatile struct gdb_exception e; + TRY_CATCH (e, mask) { command (arg, from_tty); diff --git a/contrib/gdb-7/gdb/exceptions.h b/contrib/gdb-7/gdb/exceptions.h index d2102c3ba9..7d68a36a21 100644 --- a/contrib/gdb-7/gdb/exceptions.h +++ b/contrib/gdb-7/gdb/exceptions.h @@ -2,7 +2,7 @@ Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -75,6 +75,9 @@ enum errors { /* Error accessing memory. */ MEMORY_ERROR, + /* Feature is not supported in this copy of GDB. */ + UNSUPPORTED_ERROR, + /* Add more errors here. */ NR_ERRORS }; @@ -150,7 +153,7 @@ int exceptions_state_mc_action_iter_1 (void); extern void exception_print (struct ui_file *file, struct gdb_exception e); extern void exception_fprintf (struct ui_file *file, struct gdb_exception e, const char *prefix, - ...) ATTR_FORMAT (printf, 3, 4); + ...) ATTRIBUTE_PRINTF (3, 4); /* Throw an exception (as described by "struct gdb_exception"). Will execute a LONG JUMP to the inner most containing exception handler @@ -163,17 +166,18 @@ extern void exception_fprintf (struct ui_file *file, struct gdb_exception e, be a good thing or a dangerous thing.'' -- the Existential Wombat. */ -extern NORETURN void throw_exception (struct gdb_exception exception) ATTR_NORETURN; -extern NORETURN void throw_verror (enum errors, const char *fmt, va_list ap) - ATTR_NORETURN ATTR_FORMAT (printf, 2, 0); -extern NORETURN void throw_vfatal (const char *fmt, va_list ap) - ATTR_NORETURN ATTR_FORMAT (printf, 1, 0); -extern NORETURN void throw_error (enum errors error, const char *fmt, - ...) ATTR_NORETURN ATTR_FORMAT (printf, 2, 3); +extern void throw_exception (struct gdb_exception exception) ATTRIBUTE_NORETURN; +extern void throw_verror (enum errors, const char *fmt, va_list ap) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 0); +extern void throw_vfatal (const char *fmt, va_list ap) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0); +extern void throw_error (enum errors error, const char *fmt, ...) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 3); /* Instead of deprecated_throw_reason, code should use catch_exception and throw_exception. */ -extern NORETURN void deprecated_throw_reason (enum return_reason reason) ATTR_NORETURN; +extern void deprecated_throw_reason (enum return_reason reason) + ATTRIBUTE_NORETURN; /* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception handler. If an exception (enum return_reason) is thrown using diff --git a/contrib/gdb-7/gdb/exec.c b/contrib/gdb-7/gdb/exec.c index 455151ea12..f9977a8ed6 100644 --- a/contrib/gdb-7/gdb/exec.c +++ b/contrib/gdb-7/gdb/exec.c @@ -1,7 +1,7 @@ /* Work with executable files, for GDB. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -32,6 +32,8 @@ #include "exec.h" #include "observer.h" #include "arch-utils.h" +#include "gdbthread.h" +#include "progspace.h" #include #include "readline/readline.h" @@ -50,8 +52,6 @@ void (*deprecated_file_changed_hook) (char *); /* Prototypes for local functions */ -static void exec_close (int); - static void file_command (char *, int); static void set_section_command (char *, int); @@ -66,20 +66,8 @@ void _initialize_exec (void); struct target_ops exec_ops; -/* The Binary File Descriptor handle for the executable file. */ - -bfd *exec_bfd = NULL; -long exec_bfd_mtime = 0; - -/* GDB currently only supports a single symbol/address space for the - whole debug session. When that limitation is lifted, this global - goes away. */ -static struct target_section_table current_target_sections_1; - -/* The set of target sections matching the sections mapped into the - current inferior's address space. */ -static struct target_section_table *current_target_sections - = ¤t_target_sections_1; +/* True if the exec target is pushed on the stack. */ +static int using_exec_ops; /* Whether to open exec and core files read-only or read-write. */ @@ -105,17 +93,15 @@ exec_open (char *args, int from_tty) /* Close and clear exec_bfd. If we end up with no target sections to read memory from, this unpushes the exec_ops target. */ -static void -exec_close_1 (void) +void +exec_close (void) { if (exec_bfd) { bfd *abfd = exec_bfd; char *name = bfd_get_filename (abfd); - if (!bfd_close (abfd)) - warning (_("cannot close \"%s\": %s"), - name, bfd_errmsg (bfd_get_error ())); + gdb_bfd_close_or_warn (abfd); xfree (name); /* Removing target sections may close the exec_ops target. @@ -127,12 +113,17 @@ exec_close_1 (void) } } +/* This is the target_close implementation. Clears all target + sections and closes all executable bfds from all program spaces. */ + static void -exec_close (int quitting) +exec_close_1 (int quitting) { int need_symtab_cleanup = 0; struct vmap *vp, *nxt; + using_exec_ops = 0; + for (nxt = vmap; nxt != NULL;) { vp = nxt; @@ -148,35 +139,39 @@ exec_close (int quitting) } else if (vp->bfd != exec_bfd) /* FIXME-leak: We should be freeing vp->name too, I think. */ - if (!bfd_close (vp->bfd)) - warning (_("cannot close \"%s\": %s"), - vp->name, bfd_errmsg (bfd_get_error ())); - - /* FIXME: This routine is #if 0'd in symfile.c. What should we - be doing here? Should we just free everything in - vp->objfile->symtabs? Should free_objfile do that? - FIXME-as-well: free_objfile already free'd vp->name, so it isn't - valid here. */ - free_named_symtabs (vp->name); + gdb_bfd_close_or_warn (vp->bfd); + xfree (vp); } vmap = NULL; - /* Delete all target sections. */ - resize_section_table - (current_target_sections, - -resize_section_table (current_target_sections, 0)); + { + struct program_space *ss; + struct cleanup *old_chain; - /* Remove exec file. */ - exec_close_1 (); + old_chain = save_current_program_space (); + ALL_PSPACES (ss) + { + set_current_program_space (ss); + + /* Delete all target sections. */ + resize_section_table + (current_target_sections, + -resize_section_table (current_target_sections, 0)); + + exec_close (); + } + + do_cleanups (old_chain); + } } void exec_file_clear (int from_tty) { /* Remove exec file. */ - exec_close_1 (); + exec_close (); if (from_tty) printf_unfiltered (_("No executable file now.\n")); @@ -203,7 +198,7 @@ void exec_file_attach (char *filename, int from_tty) { /* Remove any previous exec file. */ - exec_close_1 (); + exec_close (); /* Now open and digest the file the user requested, if any. */ @@ -220,6 +215,7 @@ exec_file_attach (char *filename, int from_tty) char *scratch_pathname; int scratch_chan; struct target_section *sections = NULL, *sections_end = NULL; + char **matching; scratch_chan = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, filename, write_files ? O_RDWR | O_BINARY : O_RDONLY | O_BINARY, @@ -228,6 +224,7 @@ exec_file_attach (char *filename, int from_tty) if (scratch_chan < 0) { char *exename = alloca (strlen (filename) + 5); + strcat (strcpy (exename, filename), ".exe"); scratch_chan = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, exename, write_files ? O_RDWR | O_BINARY : O_RDONLY | O_BINARY, @@ -254,13 +251,14 @@ exec_file_attach (char *filename, int from_tty) scratch_pathname = xstrdup (scratch_pathname); cleanups = make_cleanup (xfree, scratch_pathname); - if (!bfd_check_format (exec_bfd, bfd_object)) + if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching)) { /* Make sure to close exec_bfd, or else "run" might try to use it. */ - exec_close_1 (); + exec_close (); error (_("\"%s\": not in executable format: %s"), - scratch_pathname, bfd_errmsg (bfd_get_error ())); + scratch_pathname, + gdb_bfd_errmsg (bfd_get_error (), matching)); } /* FIXME - This should only be run for RS6000, but the ifdef is a poor @@ -273,7 +271,7 @@ exec_file_attach (char *filename, int from_tty) { /* Make sure to close exec_bfd, or else "run" might try to use it. */ - exec_close_1 (); + exec_close (); error (_("\"%s\": can't find the file sections: %s"), scratch_pathname, bfd_errmsg (bfd_get_error ())); } @@ -283,7 +281,7 @@ exec_file_attach (char *filename, int from_tty) { /* Make sure to close exec_bfd, or else "run" might try to use it. */ - exec_close_1 (); + exec_close (); error (_("\"%s\": can't find the file sections: %s"), scratch_pathname, bfd_errmsg (bfd_get_error ())); } @@ -295,7 +293,8 @@ exec_file_attach (char *filename, int from_tty) set_gdbarch_from_file (exec_bfd); /* Add the executable's sections to the current address spaces' - list of sections. */ + list of sections. This possibly pushes the exec_ops + target. */ add_target_sections (sections, sections_end); xfree (sections); @@ -460,13 +459,17 @@ add_target_sections (struct target_section *sections, if (count > 0) { int space = resize_section_table (table, count); + memcpy (table->sections + space, sections, count * sizeof (sections[0])); /* If these are the first file sections we can provide memory from, push the file_stratum target. */ - if (space == 0) - push_target (&exec_ops); + if (!using_exec_ops) + { + using_exec_ops = 1; + push_target (&exec_ops); + } } } @@ -476,7 +479,6 @@ void remove_target_sections (bfd *abfd) { struct target_section *src, *dest; - struct target_section_table *table = current_target_sections; dest = table->sections; @@ -499,7 +501,16 @@ remove_target_sections (bfd *abfd) /* If we don't have any more sections to read memory from, remove the file_stratum target from the stack. */ if (old_count + (dest - src) == 0) - unpush_target (&exec_ops); + { + struct program_space *pspace; + + ALL_PSPACES (pspace) + if (pspace->target_sections.sections + != pspace->target_sections.sections_end) + return; + + unpush_target (&exec_ops); + } } } @@ -656,8 +667,37 @@ print_section_info (struct target_section_table *t, bfd *abfd) wrap_here (" "); printf_filtered (_("file type %s.\n"), bfd_get_target (abfd)); if (abfd == exec_bfd) - printf_filtered (_("\tEntry point: %s\n"), - paddress (gdbarch, bfd_get_start_address (abfd))); + { + /* gcc-3.4 does not like the initialization in

sections_end>. */ + bfd_vma displacement = 0; + bfd_vma entry_point; + + for (p = t->sections; p < t->sections_end; p++) + { + asection *asect = p->the_bfd_section; + + if ((bfd_get_section_flags (abfd, asect) & (SEC_ALLOC | SEC_LOAD)) + != (SEC_ALLOC | SEC_LOAD)) + continue; + + if (bfd_get_section_vma (abfd, asect) <= abfd->start_address + && abfd->start_address < (bfd_get_section_vma (abfd, asect) + + bfd_get_section_size (asect))) + { + displacement = p->addr - bfd_get_section_vma (abfd, asect); + break; + } + } + if (p == t->sections_end) + warning (_("Cannot find section for the entry point of %s.\n"), + bfd_get_filename (abfd)); + + entry_point = gdbarch_addr_bits_remove (gdbarch, + bfd_get_start_address (abfd) + + displacement); + printf_filtered (_("\tEntry point: %s\n"), + paddress (gdbarch, entry_point)); + } for (p = t->sections; p < t->sections_end; p++) { printf_filtered ("\t%s", hex_string_custom (p->addr, wid)); @@ -817,7 +857,7 @@ init_exec_ops (void) exec_ops.to_doc = "Use an executable file as a target.\n\ Specify the filename of the executable file."; exec_ops.to_open = exec_open; - exec_ops.to_close = exec_close; + exec_ops.to_close = exec_close_1; exec_ops.to_attach = find_default_attach; exec_ops.to_xfer_partial = exec_xfer_partial; exec_ops.to_get_section_table = exec_get_section_table; diff --git a/contrib/gdb-7/gdb/exec.h b/contrib/gdb-7/gdb/exec.h index c1125e5f4b..89d14d556c 100644 --- a/contrib/gdb-7/gdb/exec.h +++ b/contrib/gdb-7/gdb/exec.h @@ -1,6 +1,6 @@ /* Work with executable files, for GDB, the GNU debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -21,6 +21,7 @@ #define EXEC_H #include "target.h" +#include "progspace.h" struct target_section; struct target_ops; @@ -28,6 +29,9 @@ struct bfd; extern struct target_ops exec_ops; +#define exec_bfd current_program_space->ebfd +#define exec_bfd_mtime current_program_space->ebfd_mtime + /* Builds a section table, given args BFD, SECTABLE_PTR, SECEND_PTR. Returns 0 if OK, 1 on error. */ @@ -82,5 +86,6 @@ extern void add_target_sections (struct target_section *sections, extern void print_section_info (struct target_section_table *table, bfd *abfd); +extern void exec_close (void); #endif diff --git a/contrib/gdb-7/gdb/expprint.c b/contrib/gdb-7/gdb/expprint.c index e83d1011ab..ee9b4f9a99 100644 --- a/contrib/gdb-7/gdb/expprint.c +++ b/contrib/gdb-7/gdb/expprint.c @@ -1,7 +1,8 @@ /* Print in infix form a struct expression. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + 1998, 1999, 2000, 2003, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -41,6 +42,7 @@ void print_expression (struct expression *exp, struct ui_file *stream) { int pc = 0; + print_subexp (exp, &pc, stream, PREC_NULL); } @@ -95,6 +97,7 @@ print_subexp_standard (struct expression *exp, int *pos, case OP_LONG: { struct value_print_options opts; + get_raw_print_options (&opts); (*pos) += 3; value_print (value_from_longest (exp->elts[pc + 1].type, @@ -106,6 +109,7 @@ print_subexp_standard (struct expression *exp, int *pos, case OP_DOUBLE: { struct value_print_options opts; + get_raw_print_options (&opts); (*pos) += 3; value_print (value_from_double (exp->elts[pc + 1].type, @@ -117,6 +121,7 @@ print_subexp_standard (struct expression *exp, int *pos, case OP_VAR_VALUE: { struct block *b; + (*pos) += 3; b = exp->elts[pc + 1].block; if (b != NULL @@ -139,6 +144,7 @@ print_subexp_standard (struct expression *exp, int *pos, case OP_REGISTER: { const char *name = &exp->elts[pc + 2].string; + (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1); fprintf_filtered (stream, "$%s", name); return; @@ -180,6 +186,7 @@ print_subexp_standard (struct expression *exp, int *pos, case OP_STRING: { struct value_print_options opts; + nargs = longest_to_int (exp->elts[pc + 1].longconst); (*pos) += 3 + BYTES_TO_EXP_ELEM (nargs + 1); /* LA_PRINT_STRING will print using the current repeat count threshold. @@ -187,7 +194,7 @@ print_subexp_standard (struct expression *exp, int *pos, additional parameter to LA_PRINT_STRING. -fnf */ get_user_print_options (&opts); LA_PRINT_STRING (stream, builtin_type (exp->gdbarch)->builtin_char, - &exp->elts[pc + 2].string, nargs, 0, &opts); + &exp->elts[pc + 2].string, nargs, NULL, 0, &opts); } return; @@ -201,12 +208,13 @@ print_subexp_standard (struct expression *exp, int *pos, case OP_OBJC_NSSTRING: /* Objective-C Foundation Class NSString constant. */ { struct value_print_options opts; + nargs = longest_to_int (exp->elts[pc + 1].longconst); (*pos) += 3 + BYTES_TO_EXP_ELEM (nargs + 1); fputs_filtered ("@\"", stream); get_user_print_options (&opts); LA_PRINT_STRING (stream, builtin_type (exp->gdbarch)->builtin_char, - &exp->elts[pc + 2].string, nargs, 0, &opts); + &exp->elts[pc + 2].string, nargs, NULL, 0, &opts); fputs_filtered ("\"", stream); } return; @@ -214,6 +222,7 @@ print_subexp_standard (struct expression *exp, int *pos, case OP_OBJC_MSGCALL: { /* Objective C message (method) call. */ char *selector; + (*pos) += 3; nargs = longest_to_int (exp->elts[pc + 2].longconst); fprintf_unfiltered (stream, "["); @@ -227,6 +236,7 @@ print_subexp_standard (struct expression *exp, int *pos, if (nargs) { char *s, *nextS; + s = alloca (strlen (selector) + 1); strcpy (s, selector); for (tem = 0; tem < nargs; tem++) @@ -290,9 +300,10 @@ print_subexp_standard (struct expression *exp, int *pos, if (tem > 0) { struct value_print_options opts; + get_user_print_options (&opts); LA_PRINT_STRING (stream, builtin_type (exp->gdbarch)->builtin_char, - tempstr, nargs - 1, 0, &opts); + tempstr, nargs - 1, NULL, 0, &opts); (*pos) = pc; } else @@ -409,12 +420,24 @@ print_subexp_standard (struct expression *exp, int *pos, fputs_filtered (")", stream); return; + case UNOP_DYNAMIC_CAST: + case UNOP_REINTERPRET_CAST: + fputs_filtered (opcode == UNOP_DYNAMIC_CAST ? "dynamic_cast" + : "reinterpret_cast", stream); + fputs_filtered ("<", stream); + (*pos) += 2; + type_print (exp->elts[pc + 1].type, "", stream, 0); + fputs_filtered ("> (", stream); + print_subexp (exp, pos, stream, PREC_PREFIX); + fputs_filtered (")", stream); + return; + case UNOP_MEMVAL: (*pos) += 2; if ((int) prec > (int) PREC_PREFIX) fputs_filtered ("(", stream); - if (TYPE_CODE (exp->elts[pc + 1].type) == TYPE_CODE_FUNC && - exp->elts[pc + 3].opcode == OP_LONG) + if (TYPE_CODE (exp->elts[pc + 1].type) == TYPE_CODE_FUNC + && exp->elts[pc + 3].opcode == OP_LONG) { struct value_print_options opts; @@ -509,10 +532,6 @@ print_subexp_standard (struct expression *exp, int *pos, fprintf_unfiltered (stream, ")"); return; - case BINOP_INCL: - case BINOP_EXCL: - error (_("print_subexp: Not implemented.")); - /* Default ops */ default: @@ -691,10 +710,6 @@ op_name_standard (enum exp_opcode opcode) return "BINOP_ASSIGN_MODIFY"; case BINOP_VAL: return "BINOP_VAL"; - case BINOP_INCL: - return "BINOP_INCL"; - case BINOP_EXCL: - return "BINOP_EXCL"; case BINOP_CONCAT: return "BINOP_CONCAT"; case BINOP_RANGE: @@ -729,6 +744,10 @@ op_name_standard (enum exp_opcode opcode) return "OP_ARRAY"; case UNOP_CAST: return "UNOP_CAST"; + case UNOP_DYNAMIC_CAST: + return "UNOP_DYNAMIC_CAST"; + case UNOP_REINTERPRET_CAST: + return "UNOP_REINTERPRET_CAST"; case UNOP_MEMVAL: return "UNOP_MEMVAL"; case UNOP_MEMVAL_TLS: @@ -753,12 +772,6 @@ op_name_standard (enum exp_opcode opcode) return "UNOP_POSTDECREMENT"; case UNOP_SIZEOF: return "UNOP_SIZEOF"; - case UNOP_LOWER: - return "UNOP_LOWER"; - case UNOP_UPPER: - return "UNOP_UPPER"; - case UNOP_LENGTH: - return "UNOP_LENGTH"; case UNOP_PLUS: return "UNOP_PLUS"; case UNOP_CAP: @@ -799,6 +812,8 @@ op_name_standard (enum exp_opcode opcode) return "OP_TYPE"; case OP_LABELED: return "OP_LABELED"; + case OP_ADL_FUNC: + return "OP_ADL_FUNC"; } } @@ -923,8 +938,6 @@ dump_subexp_body_standard (struct expression *exp, case BINOP_INTDIV: case BINOP_ASSIGN_MODIFY: case BINOP_VAL: - case BINOP_INCL: - case BINOP_EXCL: case BINOP_CONCAT: case BINOP_IN: case BINOP_RANGE: @@ -953,12 +966,6 @@ dump_subexp_body_standard (struct expression *exp, case UNOP_MIN: case UNOP_ODD: case UNOP_TRUNC: - case UNOP_LOWER: - case UNOP_UPPER: - case UNOP_LENGTH: - case UNOP_CARD: - case UNOP_CHMAX: - case UNOP_CHMIN: elt = dump_subexp (exp, stream, elt); break; case OP_LONG: @@ -1035,6 +1042,8 @@ dump_subexp_body_standard (struct expression *exp, break; case UNOP_MEMVAL: case UNOP_CAST: + case UNOP_DYNAMIC_CAST: + case UNOP_REINTERPRET_CAST: fprintf_filtered (stream, "Type @"); gdb_print_host_address (exp->elts[elt].type, stream); fprintf_filtered (stream, " ("); diff --git a/contrib/gdb-7/gdb/expression.h b/contrib/gdb-7/gdb/expression.h index effe1f042e..a6f966a8ee 100644 --- a/contrib/gdb-7/gdb/expression.h +++ b/contrib/gdb-7/gdb/expression.h @@ -1,7 +1,7 @@ /* Definitions for expressions stored in reversed prefix form, for GDB. - Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -88,6 +88,13 @@ enum exp_opcode when X is a pointer instead of an aggregate. */ STRUCTOP_MPTR, + /* TYPE_INSTANCE is used when the user specifies a specific + type instantiation for overloaded methods/functions. + + The format is: + TYPE_INSTANCE num_types type0 ... typeN num_types TYPE_INSTANCE */ + TYPE_INSTANCE, + /* end of C++. */ /* For Modula-2 integer division DIV */ @@ -101,8 +108,6 @@ enum exp_opcode /* Modula-2 standard (binary) procedures */ BINOP_VAL, - BINOP_INCL, - BINOP_EXCL, /* Concatenate two operands, such as character strings or bitstrings. If the first operand is a integer expression, then it means concatenate @@ -226,6 +231,12 @@ enum exp_opcode It casts the value of the following subexpression. */ UNOP_CAST, + /* The C++ dynamic_cast operator. */ + UNOP_DYNAMIC_CAST, + + /* The C++ reinterpret_cast operator. */ + UNOP_REINTERPRET_CAST, + /* UNOP_MEMVAL is followed by a type pointer in the next exp_element With another UNOP_MEMVAL at the end, this makes three exp_elements. It casts the contents of the word addressed by the value of the @@ -266,9 +277,6 @@ enum exp_opcode UNOP_ODD, UNOP_TRUNC, - /* (The deleted) Chill builtin functions. */ - UNOP_LOWER, UNOP_UPPER, UNOP_LENGTH, UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN, - OP_BOOL, /* Modula-2 builtin BOOLEAN type */ OP_M2_STRING, /* Modula-2 string constants */ @@ -334,6 +342,10 @@ enum exp_opcode Then comes another OP_DECFLOAT. */ OP_DECFLOAT, + /* OP_ADL_FUNC specifies that the function is to be looked up in an + Argument Dependent manner (Koenig lookup). */ + OP_ADL_FUNC, + /* First extension operator. Individual language modules define extra operators in *.inc include files below always starting with numbering at OP_EXTENDED0: diff --git a/contrib/gdb-7/gdb/f-exp.y b/contrib/gdb-7/gdb/f-exp.y index c04c8f4641..415819a0fc 100644 --- a/contrib/gdb-7/gdb/f-exp.y +++ b/contrib/gdb-7/gdb/f-exp.y @@ -1,6 +1,6 @@ /* YACC parser for Fortran expressions, for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1993, 1994, 1995, 1996, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Motorola. Adapted from the C parser by Farooq Butt @@ -196,6 +196,7 @@ static int parse_number (char *, int, int, YYSTYPE *); /* Special type cases, put in to allow the parser to distinguish different legal basetypes. */ %token INT_KEYWORD INT_S2_KEYWORD LOGICAL_S1_KEYWORD LOGICAL_S2_KEYWORD +%token LOGICAL_S8_KEYWORD %token LOGICAL_KEYWORD REAL_KEYWORD REAL_S8_KEYWORD REAL_S16_KEYWORD %token COMPLEX_S8_KEYWORD COMPLEX_S16_KEYWORD COMPLEX_S32_KEYWORD %token BOOL_AND BOOL_OR BOOL_NOT @@ -492,9 +493,9 @@ variable: name_not_typename { if (symbol_read_needs_frame (sym)) { - if (innermost_block == 0 || - contained_in (block_found, - innermost_block)) + if (innermost_block == 0 + || contained_in (block_found, + innermost_block)) innermost_block = block_found; } write_exp_elt_opcode (OP_VAR_VALUE); @@ -606,6 +607,8 @@ typebase /* Implements (approximately): (type-qualifier)* type-specifier */ { $$ = parse_f_type->builtin_integer_s2; } | CHARACTER { $$ = parse_f_type->builtin_character; } + | LOGICAL_S8_KEYWORD + { $$ = parse_f_type->builtin_logical_s8; } | LOGICAL_KEYWORD { $$ = parse_f_type->builtin_logical; } | LOGICAL_S2_KEYWORD @@ -858,6 +861,7 @@ static const struct token f77_keywords[] = { "integer_2", INT_S2_KEYWORD, BINOP_END }, { "logical_1", LOGICAL_S1_KEYWORD, BINOP_END }, { "logical_2", LOGICAL_S2_KEYWORD, BINOP_END }, + { "logical_8", LOGICAL_S8_KEYWORD, BINOP_END }, { "complex_8", COMPLEX_S8_KEYWORD, BINOP_END }, { "integer", INT_KEYWORD, BINOP_END }, { "logical", LOGICAL_KEYWORD, BINOP_END }, @@ -1124,14 +1128,14 @@ yylex () return c; } - if (!(c == '_' || c == '$' + if (!(c == '_' || c == '$' || c ==':' || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) /* We must have come across a bad character (e.g. ';'). */ error ("Invalid character '%c' in expression.", c); namelen = 0; for (c = tokstart[namelen]; - (c == '_' || c == '$' || (c >= '0' && c <= '9') + (c == '_' || c == '$' || c == ':' || (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); c = tokstart[++namelen]); diff --git a/contrib/gdb-7/gdb/f-lang.c b/contrib/gdb-7/gdb/f-lang.c index 19c13168d0..cad8cfbbf7 100644 --- a/contrib/gdb-7/gdb/f-lang.c +++ b/contrib/gdb-7/gdb/f-lang.c @@ -1,7 +1,7 @@ /* Fortran language support routines for GDB, the GNU debugger. Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Motorola. Adapted from the C parser by Farooq Butt (fmbutt@engage.sps.mot.com). @@ -31,6 +31,7 @@ #include "f-lang.h" #include "valprint.h" #include "value.h" +#include "cp-support.h" /* Following is dubious stuff that had been in the xcoff reader. */ @@ -143,14 +144,13 @@ f_printchar (int c, struct type *type, struct ui_file *stream) static void f_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, - unsigned int length, int force_ellipses, + unsigned int length, const char *encoding, int force_ellipses, const struct value_print_options *options) { unsigned int i; unsigned int things_printed = 0; int in_quotes = 0; int need_comma = 0; - int width = TYPE_LENGTH (type); if (length == 0) { @@ -259,6 +259,7 @@ enum f_primitive_types { f_primitive_type_logical, f_primitive_type_logical_s1, f_primitive_type_logical_s2, + f_primitive_type_logical_s8, f_primitive_type_integer, f_primitive_type_integer_s2, f_primitive_type_real, @@ -289,6 +290,8 @@ f_language_arch_info (struct gdbarch *gdbarch, = builtin->builtin_logical_s1; lai->primitive_type_vector [f_primitive_type_logical_s2] = builtin->builtin_logical_s2; + lai->primitive_type_vector [f_primitive_type_logical_s8] + = builtin->builtin_logical_s8; lai->primitive_type_vector [f_primitive_type_real] = builtin->builtin_real; lai->primitive_type_vector [f_primitive_type_real_s8] @@ -306,6 +309,38 @@ f_language_arch_info (struct gdbarch *gdbarch, lai->bool_type_default = builtin->builtin_logical_s2; } +/* Remove the modules separator :: from the default break list. */ + +static char * +f_word_break_characters (void) +{ + static char *retval; + + if (!retval) + { + char *s; + + retval = xstrdup (default_word_break_characters ()); + s = strchr (retval, ':'); + if (s) + { + char *last_char = &s[strlen (s) - 1]; + + *s = *last_char; + *last_char = 0; + } + } + return retval; +} + +/* Consider the modules separator :: as a valid symbol name character class. */ + +static char ** +f_make_symbol_completion_list (char *text, char *word) +{ + return default_make_symbol_completion_list_break_on (text, word, ":"); +} + /* This is declared in c-lang.h but it is silly to import that file for what is already just a hack. */ extern int c_value_print (struct value *, struct ui_file *, @@ -333,15 +368,15 @@ const struct language_defn f_language_defn = c_value_print, /* FIXME */ NULL, /* Language specific skip_trampoline */ NULL, /* name_of_this */ - basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ + cp_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ basic_lookup_transparent_type,/* lookup_transparent_type */ NULL, /* Language specific symbol demangler */ NULL, /* Language specific class_name_from_physname */ f_op_print_tab, /* expression operators for printing */ 0, /* arrays are first-class (not c-style) */ 1, /* String lower bound */ - default_word_break_characters, - default_make_symbol_completion_list, + f_word_break_characters, + f_make_symbol_completion_list, f_language_arch_info, default_print_array_index, default_pass_by_reference, @@ -372,6 +407,10 @@ build_fortran_types (struct gdbarch *gdbarch) = arch_boolean_type (gdbarch, gdbarch_short_bit (gdbarch), 1, "logical*2"); + builtin_f_type->builtin_logical_s8 + = arch_boolean_type (gdbarch, gdbarch_long_long_bit (gdbarch), 1, + "logical*8"); + builtin_f_type->builtin_integer = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 0, "integer"); diff --git a/contrib/gdb-7/gdb/f-lang.h b/contrib/gdb-7/gdb/f-lang.h index 711bdbae94..f5bb82d7ed 100644 --- a/contrib/gdb-7/gdb/f-lang.h +++ b/contrib/gdb-7/gdb/f-lang.h @@ -1,7 +1,7 @@ /* Fortran language support definitions for GDB, the GNU debugger. - Copyright (C) 1992, 1993, 1994, 1995, 1998, 2000, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1992, 1993, 1994, 1995, 1998, 2000, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Motorola. Adapted from the C definitions by Farooq Butt (fmbutt@engage.sps.mot.com). @@ -25,11 +25,12 @@ extern int f_parse (void); extern void f_error (char *); /* Defined in f-exp.y */ -extern void f_print_type (struct type *, char *, struct ui_file *, int, +extern void f_print_type (struct type *, const char *, struct ui_file *, int, int); extern int f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); /* Language-specific data structures */ @@ -113,6 +114,7 @@ struct builtin_f_type struct type *builtin_logical; struct type *builtin_logical_s1; struct type *builtin_logical_s2; + struct type *builtin_logical_s8; struct type *builtin_real; struct type *builtin_real_s8; struct type *builtin_real_s16; diff --git a/contrib/gdb-7/gdb/f-typeprint.c b/contrib/gdb-7/gdb/f-typeprint.c index 6c9668f00e..d35a255ae1 100644 --- a/contrib/gdb-7/gdb/f-typeprint.c +++ b/contrib/gdb-7/gdb/f-typeprint.c @@ -1,7 +1,8 @@ /* Support for printing Fortran types for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1998, 2000, - 2001, 2002, 2003, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Motorola. Adapted from the C version by Farooq Butt (fmbutt@engage.sps.mot.com). @@ -51,7 +52,7 @@ void f_type_print_base (struct type *, struct ui_file *, int, int); /* LEVEL is the depth to indent lines by. */ void -f_print_type (struct type *type, char *varstring, struct ui_file *stream, +f_print_type (struct type *type, const char *varstring, struct ui_file *stream, int show, int level) { enum type_code code; @@ -60,15 +61,13 @@ f_print_type (struct type *type, char *varstring, struct ui_file *stream, f_type_print_base (type, stream, show, level); code = TYPE_CODE (type); if ((varstring != NULL && *varstring != '\0') - || /* Need a space if going to print stars or brackets; but not if we will print just a type name. */ - ((show > 0 || TYPE_NAME (type) == 0) - && - (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC - || code == TYPE_CODE_METHOD - || code == TYPE_CODE_ARRAY - || code == TYPE_CODE_REF))) + || ((show > 0 || TYPE_NAME (type) == 0) + && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC + || code == TYPE_CODE_METHOD + || code == TYPE_CODE_ARRAY + || code == TYPE_CODE_REF))) fputs_filtered (" ", stream); f_type_print_varspec_prefix (type, stream, show, 0); @@ -154,7 +153,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream, int arrayprint_recurse_level) { int upper_bound, lower_bound; - int retcode; + /* No static variables are permitted as an error call may occur during execution of this function. */ @@ -259,9 +258,7 @@ void f_type_print_base (struct type *type, struct ui_file *stream, int show, int level) { - int retcode; int upper_bound; - int index; QUIT; @@ -315,7 +312,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show, break; case TYPE_CODE_ERROR: - fprintfi_filtered (level, stream, ""); + fprintfi_filtered (level, stream, "%s", TYPE_ERROR_NAME (type)); break; case TYPE_CODE_RANGE: @@ -373,6 +370,10 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show, fputs_filtered (TYPE_TAG_NAME (type), stream); break; + case TYPE_CODE_MODULE: + fprintfi_filtered (level, stream, "module %s", TYPE_TAG_NAME (type)); + break; + default_case: default: /* Handle types not explicitly handled by the other cases, diff --git a/contrib/gdb-7/gdb/f-valprint.c b/contrib/gdb-7/gdb/f-valprint.c index 0a574042fc..85f698d5da 100644 --- a/contrib/gdb-7/gdb/f-valprint.c +++ b/contrib/gdb-7/gdb/f-valprint.c @@ -1,7 +1,7 @@ /* Support for printing Fortran values for GDB, the GNU debugger. Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2003, 2005, 2006, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Motorola. Adapted from the C definitions by Farooq Butt (fmbutt@engage.sps.mot.com), additionally worked over by Stan Shebs. @@ -92,7 +92,6 @@ f77_get_dynamic_length_of_aggregate (struct type *type) { int upper_bound = -1; int lower_bound = 1; - int retcode; /* Recursively go all the way down into a possibly multi-dimensional F77 array and get the bounds. For simple arrays, this is pretty @@ -126,7 +125,7 @@ f77_create_arrayprint_offset_tbl (struct type *type, struct ui_file *stream) struct type *tmp_type; int eltlen; int ndimen = 1; - int upper, lower, retcode; + int upper, lower; tmp_type = type; @@ -165,6 +164,7 @@ static void f77_print_array_1 (int nss, int ndimensions, struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, int *elts) { @@ -178,7 +178,7 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type, f77_print_array_1 (nss + 1, ndimensions, TYPE_TARGET_TYPE (type), valaddr + i * F77_DIM_OFFSET (nss), address + i * F77_DIM_OFFSET (nss), - stream, recurse, options, elts); + stream, recurse, val, options, elts); fprintf_filtered (stream, ") "); } if (*elts >= options->print_max && i < F77_DIM_SIZE (nss)) @@ -193,7 +193,7 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type, valaddr + i * F77_DIM_OFFSET (ndimensions), 0, address + i * F77_DIM_OFFSET (ndimensions), - stream, recurse, options, current_language); + stream, recurse, val, options, current_language); if (i != (F77_DIM_SIZE (nss) - 1)) fprintf_filtered (stream, ", "); @@ -211,7 +211,9 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type, static void f77_print_array (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, - int recurse, const struct value_print_options *options) + int recurse, + const struct value *val, + const struct value_print_options *options) { int ndimensions; int elts = 0; @@ -229,7 +231,7 @@ f77_print_array (struct type *type, const gdb_byte *valaddr, f77_create_arrayprint_offset_tbl (type, stream); f77_print_array_1 (1, ndimensions, type, valaddr, address, stream, - recurse, options, &elts); + recurse, val, options, &elts); } @@ -243,6 +245,7 @@ f77_print_array (struct type *type, const gdb_byte *valaddr, int f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *original_value, const struct value_print_options *options) { struct gdbarch *gdbarch = get_type_arch (type); @@ -259,12 +262,12 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, case TYPE_CODE_STRING: f77_get_dynamic_length_of_aggregate (type); LA_PRINT_STRING (stream, builtin_type (gdbarch)->builtin_char, - valaddr, TYPE_LENGTH (type), 0, options); + valaddr, TYPE_LENGTH (type), NULL, 0, options); break; case TYPE_CODE_ARRAY: fprintf_filtered (stream, "("); - f77_print_array (type, valaddr, address, stream, recurse, options); + f77_print_array (type, valaddr, address, stream, recurse, original_value, options); fprintf_filtered (stream, ")"); break; @@ -312,6 +315,7 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, { CORE_ADDR addr = extract_typed_address (valaddr + embedded_offset, type); + fprintf_filtered (stream, "@"); fputs_filtered (paddress (gdbarch, addr), stream); if (options->deref_ref) @@ -323,9 +327,10 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) { struct value *deref_val = - value_at - (TYPE_TARGET_TYPE (type), - unpack_pointer (type, valaddr + embedded_offset)); + value_at + (TYPE_TARGET_TYPE (type), + unpack_pointer (type, valaddr + embedded_offset)); + common_val_print (deref_val, stream, recurse, options, current_language); } @@ -353,6 +358,7 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr, type, &opts, 0, stream); @@ -392,7 +398,7 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, break; case TYPE_CODE_ERROR: - fprintf_filtered (stream, ""); + fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type)); break; case TYPE_CODE_RANGE: @@ -404,6 +410,7 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr, type, &opts, 0, stream); @@ -421,7 +428,8 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, { /* Bash the type code temporarily. */ TYPE_CODE (type) = TYPE_CODE_INT; - f_val_print (type, valaddr, 0, address, stream, recurse, options); + val_print (type, valaddr, 0, address, stream, recurse, + original_value, options, current_language); /* Restore the type code so later uses work as intended. */ TYPE_CODE (type) = TYPE_CODE_BOOL; } @@ -452,8 +460,10 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, for (index = 0; index < TYPE_NFIELDS (type); index++) { int offset = TYPE_FIELD_BITPOS (type, index) / 8; - f_val_print (TYPE_FIELD_TYPE (type, index), valaddr + offset, - embedded_offset, address, stream, recurse, options); + + val_print (TYPE_FIELD_TYPE (type, index), valaddr + offset, + embedded_offset, address, stream, recurse + 1, + original_value, options, current_language); if (index != TYPE_NFIELDS (type) - 1) fputs_filtered (", ", stream); } @@ -538,7 +548,7 @@ info_common_command (char *comname, int from_tty) else { struct minimal_symbol *msymbol = - lookup_minimal_symbol_by_pc (get_frame_pc (fi)); + lookup_minimal_symbol_by_pc (get_frame_pc (fi)); if (msymbol != NULL) funname = SYMBOL_LINKAGE_NAME (msymbol); @@ -627,7 +637,7 @@ there_is_a_visible_common_named (char *comname) else { struct minimal_symbol *msymbol = - lookup_minimal_symbol_by_pc (fi->pc); + lookup_minimal_symbol_by_pc (fi->pc); if (msymbol != NULL) funname = SYMBOL_LINKAGE_NAME (msymbol); diff --git a/contrib/gdb-7/gdb/fbsd-nat.c b/contrib/gdb-7/gdb/fbsd-nat.c index 2380e2e30e..d499864904 100644 --- a/contrib/gdb-7/gdb/fbsd-nat.c +++ b/contrib/gdb-7/gdb/fbsd-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for FreeBSD. - Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -208,7 +208,8 @@ fbsd_make_corefile_notes (bfd *obfd, int *note_size) char *psargs = xstrdup (fname); if (get_inferior_args ()) - psargs = reconcat (psargs, psargs, " ", get_inferior_args (), NULL); + psargs = reconcat (psargs, psargs, " ", get_inferior_args (), + (char *) NULL); note_data = elfcore_write_prpsinfo (obfd, note_data, note_size, fname, psargs); diff --git a/contrib/gdb-7/gdb/fbsd-nat.h b/contrib/gdb-7/gdb/fbsd-nat.h index 8ee97b3a58..b61162bc4e 100644 --- a/contrib/gdb-7/gdb/fbsd-nat.h +++ b/contrib/gdb-7/gdb/fbsd-nat.h @@ -1,6 +1,6 @@ /* Native-dependent code for FreeBSD. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/features/feature_to_c.sh b/contrib/gdb-7/gdb/features/feature_to_c.sh index 0b6c43115c..9a68314541 100644 --- a/contrib/gdb-7/gdb/features/feature_to_c.sh +++ b/contrib/gdb-7/gdb/features/feature_to_c.sh @@ -2,7 +2,7 @@ # Convert text files to compilable C arrays. # -# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. # # This file is part of GDB. # diff --git a/contrib/gdb-7/gdb/features/gdb-target.dtd b/contrib/gdb-7/gdb/features/gdb-target.dtd index d6e71092f8..d5710caa77 100644 --- a/contrib/gdb-7/gdb/features/gdb-target.dtd +++ b/contrib/gdb-7/gdb/features/gdb-target.dtd @@ -1,4 +1,4 @@ - + + + + + + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/32bit-core.xml b/contrib/gdb-7/gdb/features/i386/32bit-core.xml new file mode 100644 index 0000000000..4d0377eb4c --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/32bit-core.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/32bit-linux.xml b/contrib/gdb-7/gdb/features/i386/32bit-linux.xml new file mode 100644 index 0000000000..975daf982f --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/32bit-linux.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/32bit-sse.xml b/contrib/gdb-7/gdb/features/i386/32bit-sse.xml new file mode 100644 index 0000000000..cca94b3753 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/32bit-sse.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/64bit-avx.xml b/contrib/gdb-7/gdb/features/i386/64bit-avx.xml new file mode 100644 index 0000000000..7827e725ec --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/64bit-avx.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/64bit-core.xml b/contrib/gdb-7/gdb/features/i386/64bit-core.xml new file mode 100644 index 0000000000..8cfe3fe053 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/64bit-core.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/64bit-linux.xml b/contrib/gdb-7/gdb/features/i386/64bit-linux.xml new file mode 100644 index 0000000000..8609272108 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/64bit-linux.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/64bit-sse.xml b/contrib/gdb-7/gdb/features/i386/64bit-sse.xml new file mode 100644 index 0000000000..d7f7925d65 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/64bit-sse.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/amd64-avx-linux.c b/contrib/gdb-7/gdb/features/i386/amd64-avx-linux.c new file mode 100644 index 0000000000..73392d3d81 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64-avx-linux.c @@ -0,0 +1,171 @@ +/* THIS FILE IS GENERATED. Original: amd64-avx-linux.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_amd64_avx_linux; +static void +initialize_tdesc_amd64_avx_linux (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64")); + + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr"); + tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux"); + tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx"); + tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128"); + + tdesc_amd64_avx_linux = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/amd64-avx-linux.xml b/contrib/gdb-7/gdb/features/i386/amd64-avx-linux.xml new file mode 100644 index 0000000000..9812dede6b --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64-avx-linux.xml @@ -0,0 +1,18 @@ + + + + + + + + i386:x86-64 + GNU/Linux + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/amd64-avx.c b/contrib/gdb-7/gdb/features/i386/amd64-avx.c new file mode 100644 index 0000000000..05c60ff0fe --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64-avx.c @@ -0,0 +1,166 @@ +/* THIS FILE IS GENERATED. Original: amd64-avx.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_amd64_avx; +static void +initialize_tdesc_amd64_avx (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr"); + tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx"); + tdesc_create_reg (feature, "ymm0h", 57, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm1h", 58, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm2h", 59, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm3h", 60, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm4h", 61, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm5h", 62, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm6h", 63, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm7h", 64, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm8h", 65, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm9h", 66, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm10h", 67, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm11h", 68, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm12h", 69, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm13h", 70, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm14h", 71, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm15h", 72, 1, NULL, 128, "uint128"); + + tdesc_amd64_avx = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/amd64-avx.xml b/contrib/gdb-7/gdb/features/i386/amd64-avx.xml new file mode 100644 index 0000000000..c62088f7f0 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64-avx.xml @@ -0,0 +1,16 @@ + + + + + + + + i386:x86-64 + + + + diff --git a/contrib/gdb-7/gdb/features/i386/amd64-linux.c b/contrib/gdb-7/gdb/features/i386/amd64-linux.c new file mode 100644 index 0000000000..71efcbef74 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64-linux.c @@ -0,0 +1,153 @@ +/* THIS FILE IS GENERATED. Original: amd64-linux.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_amd64_linux; +static void +initialize_tdesc_amd64_linux (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64")); + + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr"); + tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux"); + tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int"); + + tdesc_amd64_linux = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/amd64-linux.xml b/contrib/gdb-7/gdb/features/i386/amd64-linux.xml new file mode 100644 index 0000000000..337d0a9f30 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64-linux.xml @@ -0,0 +1,17 @@ + + + + + + + + i386:x86-64 + GNU/Linux + + + + diff --git a/contrib/gdb-7/gdb/features/i386/amd64.c b/contrib/gdb-7/gdb/features/i386/amd64.c new file mode 100644 index 0000000000..154e8df129 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64.c @@ -0,0 +1,148 @@ +/* THIS FILE IS GENERATED. Original: amd64.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_amd64; +static void +initialize_tdesc_amd64 (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr"); + tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64"); + tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr"); + tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr"); + + tdesc_amd64 = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/amd64.xml b/contrib/gdb-7/gdb/features/i386/amd64.xml new file mode 100644 index 0000000000..5429c945bf --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/amd64.xml @@ -0,0 +1,15 @@ + + + + + + + + i386:x86-64 + + + diff --git a/contrib/gdb-7/gdb/features/i386/i386-avx-linux.c b/contrib/gdb-7/gdb/features/i386/i386-avx-linux.c new file mode 100644 index 0000000000..1aa939b32f --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-avx-linux.c @@ -0,0 +1,147 @@ +/* THIS FILE IS GENERATED. Original: i386-avx-linux.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_i386_avx_linux; +static void +initialize_tdesc_i386_avx_linux (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr"); + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux"); + tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx"); + tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128"); + + tdesc_i386_avx_linux = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/i386-avx-linux.xml b/contrib/gdb-7/gdb/features/i386/i386-avx-linux.xml new file mode 100644 index 0000000000..7cbb730777 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-avx-linux.xml @@ -0,0 +1,18 @@ + + + + + + + + i386 + GNU/Linux + + + + + diff --git a/contrib/gdb-7/gdb/features/i386/i386-avx.c b/contrib/gdb-7/gdb/features/i386/i386-avx.c new file mode 100644 index 0000000000..1e74ed5da0 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-avx.c @@ -0,0 +1,142 @@ +/* THIS FILE IS GENERATED. Original: i386-avx.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_i386_avx; +static void +initialize_tdesc_i386_avx (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr"); + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx"); + tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128"); + tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128"); + + tdesc_i386_avx = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/i386-avx.xml b/contrib/gdb-7/gdb/features/i386/i386-avx.xml new file mode 100644 index 0000000000..b8f59c07df --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-avx.xml @@ -0,0 +1,16 @@ + + + + + + + + i386 + + + + diff --git a/contrib/gdb-7/gdb/features/i386/i386-linux.c b/contrib/gdb-7/gdb/features/i386/i386-linux.c new file mode 100644 index 0000000000..cc1fb99b20 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-linux.c @@ -0,0 +1,137 @@ +/* THIS FILE IS GENERATED. Original: i386-linux.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_i386_linux; +static void +initialize_tdesc_i386_linux (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr"); + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux"); + tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr"); + + tdesc_i386_linux = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/i386-linux.xml b/contrib/gdb-7/gdb/features/i386/i386-linux.xml new file mode 100644 index 0000000000..4511a4dd0a --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-linux.xml @@ -0,0 +1,17 @@ + + + + + + + + i386 + GNU/Linux + + + + diff --git a/contrib/gdb-7/gdb/features/i386/i386-mmx-linux.c b/contrib/gdb-7/gdb/features/i386/i386-mmx-linux.c new file mode 100644 index 0000000000..364ade4783 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-mmx-linux.c @@ -0,0 +1,76 @@ +/* THIS FILE IS GENERATED. Original: i386-mmx-linux.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_i386_mmx_linux; +static void +initialize_tdesc_i386_mmx_linux (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr"); + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux"); + tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int"); + + tdesc_i386_mmx_linux = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/i386-mmx-linux.xml b/contrib/gdb-7/gdb/features/i386/i386-mmx-linux.xml new file mode 100644 index 0000000000..19d4f3f99a --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-mmx-linux.xml @@ -0,0 +1,16 @@ + + + + + + + + i386 + GNU/Linux + + + diff --git a/contrib/gdb-7/gdb/features/i386/i386-mmx.c b/contrib/gdb-7/gdb/features/i386/i386-mmx.c new file mode 100644 index 0000000000..7ca24675b0 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-mmx.c @@ -0,0 +1,71 @@ +/* THIS FILE IS GENERATED. Original: i386-mmx.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_i386_mmx; +static void +initialize_tdesc_i386_mmx (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr"); + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int"); + + tdesc_i386_mmx = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/i386-mmx.xml b/contrib/gdb-7/gdb/features/i386/i386-mmx.xml new file mode 100644 index 0000000000..7bb9e7a4ee --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386-mmx.xml @@ -0,0 +1,14 @@ + + + + + + + + i386 + + diff --git a/contrib/gdb-7/gdb/features/i386/i386.c b/contrib/gdb-7/gdb/features/i386/i386.c new file mode 100644 index 0000000000..7f7beb3b32 --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386.c @@ -0,0 +1,132 @@ +/* THIS FILE IS GENERATED. Original: i386.xml */ + +#include "defs.h" +#include "osabi.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_i386; +static void +initialize_tdesc_i386 (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct tdesc_type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("i386")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core"); + field_type = tdesc_create_flags (feature, "i386_eflags", 4); + tdesc_add_flag (field_type, 0, "CF"); + tdesc_add_flag (field_type, 1, ""); + tdesc_add_flag (field_type, 2, "PF"); + tdesc_add_flag (field_type, 4, "AF"); + tdesc_add_flag (field_type, 6, "ZF"); + tdesc_add_flag (field_type, 7, "SF"); + tdesc_add_flag (field_type, 8, "TF"); + tdesc_add_flag (field_type, 9, "IF"); + tdesc_add_flag (field_type, 10, "DF"); + tdesc_add_flag (field_type, 11, "OF"); + tdesc_add_flag (field_type, 14, "NT"); + tdesc_add_flag (field_type, 16, "RF"); + tdesc_add_flag (field_type, 17, "VM"); + tdesc_add_flag (field_type, 18, "AC"); + tdesc_add_flag (field_type, 19, "VIF"); + tdesc_add_flag (field_type, 20, "VIP"); + tdesc_add_flag (field_type, 21, "ID"); + + tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr"); + tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags"); + tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32"); + tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext"); + tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int"); + tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int"); + tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse"); + field_type = tdesc_named_type (feature, "ieee_single"); + tdesc_create_vector (feature, "v4f", field_type, 4); + + field_type = tdesc_named_type (feature, "ieee_double"); + tdesc_create_vector (feature, "v2d", field_type, 2); + + field_type = tdesc_named_type (feature, "int8"); + tdesc_create_vector (feature, "v16i8", field_type, 16); + + field_type = tdesc_named_type (feature, "int16"); + tdesc_create_vector (feature, "v8i16", field_type, 8); + + field_type = tdesc_named_type (feature, "int32"); + tdesc_create_vector (feature, "v4i32", field_type, 4); + + field_type = tdesc_named_type (feature, "int64"); + tdesc_create_vector (feature, "v2i64", field_type, 2); + + type = tdesc_create_union (feature, "vec128"); + field_type = tdesc_named_type (feature, "v4f"); + tdesc_add_field (type, "v4_float", field_type); + field_type = tdesc_named_type (feature, "v2d"); + tdesc_add_field (type, "v2_double", field_type); + field_type = tdesc_named_type (feature, "v16i8"); + tdesc_add_field (type, "v16_int8", field_type); + field_type = tdesc_named_type (feature, "v8i16"); + tdesc_add_field (type, "v8_int16", field_type); + field_type = tdesc_named_type (feature, "v4i32"); + tdesc_add_field (type, "v4_int32", field_type); + field_type = tdesc_named_type (feature, "v2i64"); + tdesc_add_field (type, "v2_int64", field_type); + field_type = tdesc_named_type (feature, "uint128"); + tdesc_add_field (type, "uint128", field_type); + + field_type = tdesc_create_flags (feature, "i386_mxcsr", 4); + tdesc_add_flag (field_type, 0, "IE"); + tdesc_add_flag (field_type, 1, "DE"); + tdesc_add_flag (field_type, 2, "ZE"); + tdesc_add_flag (field_type, 3, "OE"); + tdesc_add_flag (field_type, 4, "UE"); + tdesc_add_flag (field_type, 5, "PE"); + tdesc_add_flag (field_type, 6, "DAZ"); + tdesc_add_flag (field_type, 7, "IM"); + tdesc_add_flag (field_type, 8, "DM"); + tdesc_add_flag (field_type, 9, "ZM"); + tdesc_add_flag (field_type, 10, "OM"); + tdesc_add_flag (field_type, 11, "UM"); + tdesc_add_flag (field_type, 12, "PM"); + tdesc_add_flag (field_type, 15, "FZ"); + + tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128"); + tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr"); + + tdesc_i386 = result; +} diff --git a/contrib/gdb-7/gdb/features/i386/i386.xml b/contrib/gdb-7/gdb/features/i386/i386.xml new file mode 100644 index 0000000000..fc07fb092b --- /dev/null +++ b/contrib/gdb-7/gdb/features/i386/i386.xml @@ -0,0 +1,15 @@ + + + + + + + + i386 + + + diff --git a/contrib/gdb-7/gdb/features/library-list.dtd b/contrib/gdb-7/gdb/features/library-list.dtd index ffb4ea5ca5..9cce5aba8c 100644 --- a/contrib/gdb-7/gdb/features/library-list.dtd +++ b/contrib/gdb-7/gdb/features/library-list.dtd @@ -1,4 +1,4 @@ - - + + - - - + - - - - + + diff --git a/contrib/gdb-7/gdb/features/xinclude.dtd b/contrib/gdb-7/gdb/features/xinclude.dtd index e58eb1386a..307b316758 100644 --- a/contrib/gdb-7/gdb/features/xinclude.dtd +++ b/contrib/gdb-7/gdb/features/xinclude.dtd @@ -1,4 +1,4 @@ - - + diff --git a/contrib/gdb-7/gdb/filesystem.c b/contrib/gdb-7/gdb/filesystem.c new file mode 100644 index 0000000000..7f7157f362 --- /dev/null +++ b/contrib/gdb-7/gdb/filesystem.c @@ -0,0 +1,103 @@ +/* Handle different target file systems for GDB, the GNU Debugger. + + Copyright (C) 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#include "defs.h" +#include "filesystem.h" +#include "gdbarch.h" +#include "gdbcmd.h" + +const char file_system_kind_auto[] = "auto"; +const char file_system_kind_unix[] = "unix"; +const char file_system_kind_dos_based[] = "dos-based"; +const char *target_file_system_kinds[] = +{ + file_system_kind_auto, + file_system_kind_unix, + file_system_kind_dos_based, + NULL +}; +const char *target_file_system_kind = file_system_kind_auto; + +const char * +effective_target_file_system_kind (void) +{ + if (target_file_system_kind == file_system_kind_auto) + { + if (gdbarch_has_dos_based_file_system (target_gdbarch)) + return file_system_kind_dos_based; + else + return file_system_kind_unix; + } + else + return target_file_system_kind; +} + +const char * +target_lbasename (const char *kind, const char *name) +{ + if (kind == file_system_kind_dos_based) + return dos_lbasename (name); + else + return unix_lbasename (name); +} + +static void +show_target_file_system_kind_command (struct ui_file *file, + int from_tty, + struct cmd_list_element *c, + const char *value) +{ + if (target_file_system_kind == file_system_kind_auto) + fprintf_filtered (file, _("\ +The assumed file system kind for target reported file names \ +is \"%s\" (currently \"%s\").\n"), + value, + effective_target_file_system_kind ()); + else + fprintf_filtered (file, _("\ +The assumed file system kind for target reported file names \ +is \"%s\".\n"), + value); +} + +/* Provide a prototype to silence -Wmissing-prototypes. */ +extern initialize_file_ftype _initialize_filesystem; + +void +_initialize_filesystem (void) +{ + add_setshow_enum_cmd ("target-file-system-kind", + class_files, + target_file_system_kinds, + &target_file_system_kind, _("\ +Set assumed file system kind for target reported file names"), _("\ +Show assumed file system kind for target reported file names"), + _("\ +If `unix', target file names (e.g., loaded shared library file names)\n\ +starting the forward slash (`/') character are considered absolute,\n\ +and the directory separator character is the forward slash (`/'). If\n\ +`dos-based', target file names starting with a drive letter followed\n\ +by a colon (e.g., `c:'), are also considered absolute, and the\n\ +backslash (`\\') is also considered a directory separator. Set to\n\ +`auto' (which is the default), to let GDB decide, based on its\n\ +knowledge of the target operating system."), + NULL, /* setfunc */ + show_target_file_system_kind_command, + &setlist, &showlist); +} diff --git a/contrib/gdb-7/gdb/filesystem.h b/contrib/gdb-7/gdb/filesystem.h new file mode 100644 index 0000000000..992e2e2828 --- /dev/null +++ b/contrib/gdb-7/gdb/filesystem.h @@ -0,0 +1,58 @@ +/* Handle different target file systems for GDB, the GNU Debugger. + Copyright (C) 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#ifndef FILESYSTEM_H +#define FILESYSTEM_H + +extern const char file_system_kind_auto[]; +extern const char file_system_kind_unix[]; +extern const char file_system_kind_dos_based[]; + +extern const char *target_file_system_kind; + +/* Same as IS_DIR_SEPARATOR but with file system kind KIND's + semantics, instead of host semantics. */ + +#define IS_TARGET_DIR_SEPARATOR(kind, c) \ + (((kind) == file_system_kind_dos_based) ? IS_DOS_DIR_SEPARATOR (c) \ + : IS_UNIX_DIR_SEPARATOR (c)) + +/* Same as IS_ABSOLUTE_PATH but with file system kind KIND's + semantics, instead of host semantics. */ + +#define IS_TARGET_ABSOLUTE_PATH(kind, p) \ + (((kind) == file_system_kind_dos_based) ? IS_DOS_ABSOLUTE_PATH (p) \ + : IS_UNIX_ABSOLUTE_PATH (p)) + +/* Same as HAS_DRIVE_SPEC but with file system kind KIND's semantics, + instead of host semantics. */ + +#define HAS_TARGET_DRIVE_SPEC(kind, p) \ + (((kind) == file_system_kind_dos_based) ? HAS_DOS_DRIVE_SPEC (p) \ + : 0) + +/* Same as lbasename, but with file system kind KIND's semantics, + instead of host semantics. */ +extern const char *target_lbasename (const char *kind, const char *name); + +/* The effective setting of "set target-file-system-kind", with "auto" + resolved to the real kind. That is, you never see "auto" as a + result from this function. */ +extern const char *effective_target_file_system_kind (void); + +#endif diff --git a/contrib/gdb-7/gdb/findcmd.c b/contrib/gdb-7/gdb/findcmd.c index 1d28914a34..ac63a9e4a9 100644 --- a/contrib/gdb-7/gdb/findcmd.c +++ b/contrib/gdb-7/gdb/findcmd.c @@ -1,6 +1,6 @@ /* The find command. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -126,6 +126,7 @@ parse_find_args (char *args, ULONGEST *max_countp, if (*s == '+') { LONGEST len; + ++s; v = parse_to_comma_and_eval (&s); len = value_as_long (v); @@ -145,6 +146,7 @@ parse_find_args (char *args, ULONGEST *max_countp, else { CORE_ADDR end_addr; + v = parse_to_comma_and_eval (&s); end_addr = value_as_address (v); if (start_addr > end_addr) @@ -179,6 +181,7 @@ parse_find_args (char *args, ULONGEST *max_countp, > pattern_buf_size) { size_t current_offset = pattern_buf_end - pattern_buf; + pattern_buf_size *= 2; pattern_buf = xrealloc (pattern_buf, pattern_buf_size); pattern_buf_end = pattern_buf + current_offset; @@ -208,7 +211,7 @@ parse_find_args (char *args, ULONGEST *max_countp, } else { - memcpy (pattern_buf_end, value_contents_raw (v), val_bytes); + memcpy (pattern_buf_end, value_contents (v), val_bytes); pattern_buf_end += val_bytes; } @@ -298,6 +301,7 @@ find_command (char *args, int from_tty) if (found_count > 0) { struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr; + set_internalvar (lookup_internalvar ("_"), value_from_pointer (ptr_type, last_found_addr)); } diff --git a/contrib/gdb-7/gdb/findvar.c b/contrib/gdb-7/gdb/findvar.c index 8c027c9156..e0ca12c81f 100644 --- a/contrib/gdb-7/gdb/findvar.c +++ b/contrib/gdb-7/gdb/findvar.c @@ -1,8 +1,8 @@ /* Find a variable's value in memory, for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -36,8 +36,9 @@ #include "block.h" #include "objfiles.h" -/* Basic byte-swapping routines. GDB has needed these for a long time... - All extract a target-format integer at ADDR which is LEN bytes long. */ +/* Basic byte-swapping routines. All 'extract' functions return a + host-format integer from a target-format integer at ADDR which is + LEN bytes long. */ #if TARGET_CHAR_BIT != 8 || HOST_CHAR_BIT != 8 /* 8 bit characters are a pretty safe assumption these days, so we @@ -179,6 +180,8 @@ extract_typed_address (const gdb_byte *buf, struct type *type) return gdbarch_pointer_to_address (get_type_arch (type), type, buf); } +/* All 'store' functions accept a host-format integer and store a + target-format integer at ADDR which is LEN bytes long. */ void store_signed_integer (gdb_byte *addr, int len, @@ -318,6 +321,7 @@ unsigned_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + return extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order); } @@ -326,6 +330,7 @@ signed_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + return extract_signed_integer (buf, TYPE_LENGTH (type), byte_order); } @@ -336,6 +341,7 @@ unsigned_address_to_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + store_unsigned_integer (buf, TYPE_LENGTH (type), byte_order, addr); } @@ -344,6 +350,7 @@ address_to_signed_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + store_signed_integer (buf, TYPE_LENGTH (type), byte_order, addr); } @@ -436,6 +443,7 @@ read_var_value (struct symbol *var, struct frame_info *frame) CORE_ADDR addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var), SYMBOL_OBJ_SECTION (var)); + store_typed_address (value_contents_raw (v), type, addr); } else @@ -445,11 +453,9 @@ read_var_value (struct symbol *var, struct frame_info *frame) return v; case LOC_CONST_BYTES: - { - memcpy (value_contents_raw (v), SYMBOL_VALUE_BYTES (var), len); - VALUE_LVAL (v) = not_lval; - return v; - } + memcpy (value_contents_raw (v), SYMBOL_VALUE_BYTES (var), len); + VALUE_LVAL (v) = not_lval; + return v; case LOC_STATIC: if (overlay_debugging) @@ -470,6 +476,7 @@ read_var_value (struct symbol *var, struct frame_info *frame) { struct value *ref; CORE_ADDR argref; + argref = get_frame_args_address (frame); if (!argref) return 0; diff --git a/contrib/gdb-7/gdb/fork-child.c b/contrib/gdb-7/gdb/fork-child.c index 9eadbc9969..2b085ffe6a 100644 --- a/contrib/gdb-7/gdb/fork-child.c +++ b/contrib/gdb-7/gdb/fork-child.c @@ -1,7 +1,8 @@ /* Fork a Unix child process, and set up to debug it, for GDB. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, - 2001, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -138,6 +139,7 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env, int shell = 0; static char **argv; const char *inferior_io_terminal = get_inferior_io_terminal (); + struct inferior *inf; /* If no exec file handed to us, get it from the exec-file command -- with a good, common error message if none is specified. */ @@ -176,6 +178,7 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env, assuming that every other character is a separate argument. */ int argc = (strlen (allargs) + 1) / 2 + 2; + argv = (char **) xmalloc (argc * sizeof (*argv)); argv[0] = exec_file; breakup_args (allargs, &argv[1]); @@ -395,7 +398,9 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env, if (!have_inferiors ()) init_thread_list (); - add_inferior (pid); + inf = current_inferior (); + + inferior_appeared (inf, pid); /* Needed for wait_for_inferior stuff below. */ inferior_ptid = pid_to_ptid (pid); diff --git a/contrib/gdb-7/gdb/frame-base.c b/contrib/gdb-7/gdb/frame-base.c index 501b2aa066..656ab25901 100644 --- a/contrib/gdb-7/gdb/frame-base.c +++ b/contrib/gdb-7/gdb/frame-base.c @@ -1,6 +1,7 @@ /* Definitions for frame address handler, for GDB, the GNU debugger. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -72,6 +73,7 @@ frame_base_init (struct obstack *obstack) { struct frame_base_table *table = OBSTACK_ZALLOC (obstack, struct frame_base_table); + table->tail = &table->head; table->default_base = &default_frame_base; return table; @@ -82,6 +84,7 @@ frame_base_append_sniffer (struct gdbarch *gdbarch, frame_base_sniffer_ftype *sniffer) { struct frame_base_table *table = gdbarch_data (gdbarch, frame_base_data); + (*table->tail) = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct frame_base_table_entry); (*table->tail)->sniffer = sniffer; table->tail = &(*table->tail)->next; @@ -92,6 +95,7 @@ frame_base_set_default (struct gdbarch *gdbarch, const struct frame_base *default_base) { struct frame_base_table *table = gdbarch_data (gdbarch, frame_base_data); + table->default_base = default_base; } @@ -105,6 +109,7 @@ frame_base_find_by_frame (struct frame_info *this_frame) for (entry = table->head; entry != NULL; entry = entry->next) { const struct frame_base *desc = NULL; + desc = entry->sniffer (this_frame); if (desc != NULL) return desc; diff --git a/contrib/gdb-7/gdb/frame-base.h b/contrib/gdb-7/gdb/frame-base.h index e3e4e77952..b7897d5f08 100644 --- a/contrib/gdb-7/gdb/frame-base.h +++ b/contrib/gdb-7/gdb/frame-base.h @@ -1,6 +1,6 @@ /* Definitions for a frame base, for GDB, the GNU debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/frame-unwind.c b/contrib/gdb-7/gdb/frame-unwind.c index f0c2a64c78..62e37f63d6 100644 --- a/contrib/gdb-7/gdb/frame-unwind.c +++ b/contrib/gdb-7/gdb/frame-unwind.c @@ -1,6 +1,7 @@ /* Definitions for frame unwinder, for GDB, the GNU debugger. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -48,6 +49,7 @@ frame_unwind_init (struct obstack *obstack) { struct frame_unwind_table *table = OBSTACK_ZALLOC (obstack, struct frame_unwind_table); + /* Start the table out with a few default sniffers. OSABI code can't override this. */ table->list = OBSTACK_ZALLOC (obstack, struct frame_unwind_table_entry); @@ -89,11 +91,10 @@ frame_unwind_append_unwinder (struct gdbarch *gdbarch, const struct frame_unwind * frame_unwind_find_by_frame (struct frame_info *this_frame, void **this_cache) { - int i; struct gdbarch *gdbarch = get_frame_arch (this_frame); struct frame_unwind_table *table = gdbarch_data (gdbarch, frame_unwind_data); struct frame_unwind_table_entry *entry; - struct cleanup *old_cleanup; + for (entry = table->list; entry != NULL; entry = entry->next) { struct cleanup *old_cleanup; diff --git a/contrib/gdb-7/gdb/frame-unwind.h b/contrib/gdb-7/gdb/frame-unwind.h index c4518b558e..9079e5d249 100644 --- a/contrib/gdb-7/gdb/frame-unwind.h +++ b/contrib/gdb-7/gdb/frame-unwind.h @@ -1,6 +1,7 @@ /* Definitions for a frame unwinder, for GDB, the GNU debugger. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/frame.c b/contrib/gdb-7/gdb/frame.c index 7932b48ee3..1c4bccaf9e 100644 --- a/contrib/gdb-7/gdb/frame.c +++ b/contrib/gdb-7/gdb/frame.c @@ -1,7 +1,7 @@ /* Cache and manage frames for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000, 2001, - 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -43,6 +43,7 @@ #include "gdbthread.h" #include "block.h" #include "inline-frame.h" +#include "tracepoint.h" static struct frame_info *get_prev_frame_1 (struct frame_info *this_frame); static struct frame_info *get_prev_frame_raw (struct frame_info *this_frame); @@ -70,6 +71,12 @@ struct frame_info moment leave this as speculation. */ int level; + /* The frame's program space. */ + struct program_space *pspace; + + /* The frame's address space. */ + struct address_space *aspace; + /* The frame's low-level unwinder and corresponding cache. The low-level unwinder is responsible for unwinding register values for the previous frame. The low-level unwind methods are @@ -374,6 +381,7 @@ frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr, CORE_ADDR special_addr) { struct frame_id id = null_frame_id; + id.stack_addr = stack_addr; id.stack_addr_p = 1; id.code_addr = code_addr; @@ -387,6 +395,7 @@ struct frame_id frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr) { struct frame_id id = null_frame_id; + id.stack_addr = stack_addr; id.stack_addr_p = 1; id.code_addr = code_addr; @@ -398,6 +407,7 @@ struct frame_id frame_id_build_wild (CORE_ADDR stack_addr) { struct frame_id id = null_frame_id; + id.stack_addr = stack_addr; id.stack_addr_p = 1; return id; @@ -407,6 +417,7 @@ int frame_id_p (struct frame_id l) { int p; + /* The frame is valid iff it has a valid stack address. */ p = l.stack_addr_p; /* outer_frame_id is also valid. */ @@ -434,6 +445,7 @@ int frame_id_eq (struct frame_id l, struct frame_id r) { int eq; + if (!l.stack_addr_p && l.special_addr_p && !r.stack_addr_p && r.special_addr_p) /* The outermost frame marker is equal to itself. This is the dodgy thing about outer_frame_id, since between execution steps @@ -511,6 +523,7 @@ static int frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r) { int inner; + if (!l.stack_addr_p || !r.stack_addr_p) /* Like NaN, any operation involving an invalid ID always fails. */ inner = 0; @@ -579,6 +592,7 @@ frame_find_by_id (struct frame_id id) for (frame = get_current_frame (); ; frame = prev_frame) { struct frame_id this = get_frame_id (frame); + if (frame_id_eq (id, this)) /* An exact match. */ return frame; @@ -607,6 +621,7 @@ frame_unwind_pc (struct frame_info *this_frame) if (!this_frame->prev_pc.p) { CORE_ADDR pc; + if (gdbarch_unwind_pc_p (frame_unwind_arch (this_frame))) { /* The right way. The `pure' way. The one true way. This @@ -633,7 +648,7 @@ frame_unwind_pc (struct frame_info *this_frame) this_frame->prev_pc.p = 1; if (frame_debug) fprintf_unfiltered (gdb_stdlog, - "{ frame_unwind_caller_pc (this_frame=%d) -> 0x%s }\n", + "{ frame_unwind_caller_pc (this_frame=%d) -> %s }\n", this_frame->level, hex_string (this_frame->prev_pc.value)); } @@ -676,8 +691,11 @@ do_frame_register_read (void *src, int regnum, gdb_byte *buf) struct regcache * frame_save_as_regcache (struct frame_info *this_frame) { - struct regcache *regcache = regcache_xmalloc (get_frame_arch (this_frame)); + struct address_space *aspace = get_frame_address_space (this_frame); + struct regcache *regcache = regcache_xmalloc (get_frame_arch (this_frame), + aspace); struct cleanup *cleanups = make_cleanup_regcache_xfree (regcache); + regcache_save (regcache, do_frame_register_read, this_frame); discard_cleanups (cleanups); return regcache; @@ -753,7 +771,7 @@ frame_register_unwind (struct frame_info *frame, int regnum, *addrp = value_address (value); *realnump = VALUE_REGNUM (value); - if (bufferp) + if (bufferp && !*optimizedp) memcpy (bufferp, value_contents_all (value), TYPE_LENGTH (value_type (value))); @@ -790,6 +808,7 @@ frame_unwind_register (struct frame_info *frame, int regnum, gdb_byte *buf) CORE_ADDR addr; int realnum; enum lval_type lval; + frame_register_unwind (frame, regnum, &optimized, &lval, &addr, &realnum, buf); } @@ -876,6 +895,7 @@ frame_unwind_register_signed (struct frame_info *frame, int regnum) enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int size = register_size (gdbarch, regnum); gdb_byte buf[MAX_REGISTER_SIZE]; + frame_unwind_register (frame, regnum, buf); return extract_signed_integer (buf, size, byte_order); } @@ -893,6 +913,7 @@ frame_unwind_register_unsigned (struct frame_info *frame, int regnum) enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int size = register_size (gdbarch, regnum); gdb_byte buf[MAX_REGISTER_SIZE]; + frame_unwind_register (frame, regnum, buf); return extract_unsigned_integer (buf, size, byte_order); } @@ -912,6 +933,7 @@ put_frame_register (struct frame_info *frame, int regnum, int optim; enum lval_type lval; CORE_ADDR addr; + frame_register (frame, regnum, &optim, &lval, &addr, &realnum, NULL); if (optim) error (_("Attempt to assign to a value that was optimized out.")); @@ -922,6 +944,7 @@ put_frame_register (struct frame_info *frame, int regnum, /* FIXME: write_memory doesn't yet take constant buffers. Arrrg! */ gdb_byte tmp[MAX_REGISTER_SIZE]; + memcpy (tmp, buf, register_size (gdbarch, regnum)); write_memory (addr, tmp, register_size (gdbarch, regnum)); break; @@ -949,6 +972,7 @@ frame_register_read (struct frame_info *frame, int regnum, enum lval_type lval; CORE_ADDR addr; int realnum; + frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr); return !optimized; @@ -977,6 +1001,7 @@ get_frame_register_bytes (struct frame_info *frame, int regnum, for (i = regnum; i < numregs; i++) { int thissize = register_size (gdbarch, i); + if (thissize == 0) break; /* This register is not available on this architecture. */ maxsize += thissize; @@ -992,6 +1017,7 @@ get_frame_register_bytes (struct frame_info *frame, int regnum, while (len > 0) { int curr_len = register_size (gdbarch, regnum) - offset; + if (curr_len > len) curr_len = len; @@ -1003,6 +1029,7 @@ get_frame_register_bytes (struct frame_info *frame, int regnum, else { gdb_byte buf[MAX_REGISTER_SIZE]; + if (!frame_register_read (frame, regnum, buf)) return 0; memcpy (myaddr, buf + offset, curr_len); @@ -1034,6 +1061,7 @@ put_frame_register_bytes (struct frame_info *frame, int regnum, while (len > 0) { int curr_len = register_size (gdbarch, regnum) - offset; + if (curr_len > len) curr_len = len; @@ -1044,6 +1072,7 @@ put_frame_register_bytes (struct frame_info *frame, int regnum, else { gdb_byte buf[MAX_REGISTER_SIZE]; + frame_register_read (frame, regnum, buf); memcpy (buf + offset, myaddr, curr_len); put_frame_register (frame, regnum, buf); @@ -1059,10 +1088,13 @@ put_frame_register_bytes (struct frame_info *frame, int regnum, /* Create a sentinel frame. */ static struct frame_info * -create_sentinel_frame (struct regcache *regcache) +create_sentinel_frame (struct program_space *pspace, struct regcache *regcache) { struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info); + frame->level = -1; + frame->pspace = pspace; + frame->aspace = get_regcache_aspace (regcache); /* Explicitly initialize the sentinel frame's cache. Provide it with the underlying regcache. In the future additional information, such as the frame's thread will be added. */ @@ -1099,6 +1131,7 @@ void * frame_obstack_zalloc (unsigned long size) { void *data = obstack_alloc (&frame_cache_obstack, size); + memset (data, 0, size); return data; } @@ -1112,6 +1145,7 @@ static int unwind_to_current_frame (struct ui_out *ui_out, void *args) { struct frame_info *frame = get_prev_frame (args); + /* A sentinel frame can fail to unwind, e.g., because its PC value lands in somewhere like start. */ if (frame == NULL) @@ -1134,17 +1168,21 @@ get_current_frame (void) error (_("No stack.")); if (!target_has_memory) error (_("No memory.")); - if (ptid_equal (inferior_ptid, null_ptid)) - error (_("No selected thread.")); - if (is_exited (inferior_ptid)) - error (_("Invalid selected thread.")); - if (is_executing (inferior_ptid)) - error (_("Target is executing.")); + /* Traceframes are effectively a substitute for the live inferior. */ + if (get_traceframe_number () < 0) + { + if (ptid_equal (inferior_ptid, null_ptid)) + error (_("No selected thread.")); + if (is_exited (inferior_ptid)) + error (_("Invalid selected thread.")); + if (is_executing (inferior_ptid)) + error (_("Target is executing.")); + } if (current_frame == NULL) { struct frame_info *sentinel_frame = - create_sentinel_frame (get_current_regcache ()); + create_sentinel_frame (current_program_space, get_current_regcache ()); if (catch_exceptions (uiout, unwind_to_current_frame, sentinel_frame, RETURN_MASK_ERROR) != 0) { @@ -1275,7 +1313,7 @@ create_new_frame (CORE_ADDR addr, CORE_ADDR pc) fi = FRAME_OBSTACK_ZALLOC (struct frame_info); - fi->next = create_sentinel_frame (get_current_regcache ()); + fi->next = create_sentinel_frame (current_program_space, get_current_regcache ()); /* Set/update this frame's cached PC value, found in the next frame. Do this before looking for this frame's unwinder. A sniffer is @@ -1284,6 +1322,10 @@ create_new_frame (CORE_ADDR addr, CORE_ADDR pc) fi->next->prev_pc.value = pc; fi->next->prev_pc.p = 1; + /* We currently assume that frame chain's can't cross spaces. */ + fi->pspace = fi->next->pspace; + fi->aspace = fi->next->aspace; + /* Select/initialize both the unwind function and the frame's type based on the PC. */ fi->unwind = frame_unwind_find_by_frame (fi, &fi->prologue_cache); @@ -1557,6 +1599,11 @@ get_prev_frame_raw (struct frame_info *this_frame) prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info); prev_frame->level = this_frame->level + 1; + /* For now, assume we don't have frame chains crossing address + spaces. */ + prev_frame->pspace = this_frame->pspace; + prev_frame->aspace = this_frame->aspace; + /* Don't yet compute ->unwind (and hence ->type). It is computed on-demand in get_frame_type, frame_register_unwind, and get_frame_id. */ @@ -1633,7 +1680,12 @@ inside_main_func (struct frame_info *this_frame) static int inside_entry_func (struct frame_info *this_frame) { - return (get_frame_func (this_frame) == entry_point_address ()); + CORE_ADDR entry_point; + + if (!entry_point_address_query (&entry_point)) + return 0; + + return get_frame_func (this_frame) == entry_point; } /* Return a structure containing various interesting information about @@ -1648,8 +1700,6 @@ inside_entry_func (struct frame_info *this_frame) struct frame_info * get_prev_frame (struct frame_info *this_frame) { - struct frame_info *prev_frame; - /* There is always a frame. If this assertion fails, suspect that something should be calling get_selected_frame() or get_current_frame(). */ @@ -1877,7 +1927,6 @@ get_frame_base_address (struct frame_info *fi) CORE_ADDR get_frame_locals_address (struct frame_info *fi) { - void **cache; if (get_frame_type (fi) != NORMAL_FRAME) return 0; /* If there isn't a frame address method, find it. */ @@ -1893,7 +1942,6 @@ get_frame_locals_address (struct frame_info *fi) CORE_ADDR get_frame_args_address (struct frame_info *fi) { - void **cache; if (get_frame_type (fi) != NORMAL_FRAME) return 0; /* If there isn't a frame address method, find it. */ @@ -1939,6 +1987,29 @@ get_frame_type (struct frame_info *frame) return frame->unwind->type; } +struct program_space * +get_frame_program_space (struct frame_info *frame) +{ + return frame->pspace; +} + +struct program_space * +frame_unwind_program_space (struct frame_info *this_frame) +{ + gdb_assert (this_frame); + + /* This is really a placeholder to keep the API consistent --- we + assume for now that we don't have frame chains crossing + spaces. */ + return this_frame->pspace; +} + +struct address_space * +get_frame_address_space (struct frame_info *frame) +{ + return frame->aspace; +} + /* Memory access methods. */ void @@ -1954,6 +2025,7 @@ get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr, { struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + return read_memory_integer (addr, len, byte_order); } @@ -1963,6 +2035,7 @@ get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr, { struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + return read_memory_unsigned_integer (addr, len, byte_order); } @@ -2024,6 +2097,7 @@ CORE_ADDR get_frame_sp (struct frame_info *this_frame) { struct gdbarch *gdbarch = get_frame_arch (this_frame); + /* Normality - an architecture that provides a way of obtaining any frame inner-most address. */ if (gdbarch_unwind_sp_p (gdbarch)) @@ -2178,7 +2252,7 @@ Set whether backtraces should continue past the entry point of a program."), Show whether backtraces should continue past the entry point of a program."), _("\ Normally there are no callers beyond the entry point of a program, so GDB\n\ -will terminate the backtrace there. Set this variable if you need to see \n\ +will terminate the backtrace there. Set this variable if you need to see\n\ the rest of the stack trace."), NULL, show_backtrace_past_entry, diff --git a/contrib/gdb-7/gdb/frame.h b/contrib/gdb-7/gdb/frame.h index 994b529f9d..a104a5e35a 100644 --- a/contrib/gdb-7/gdb/frame.h +++ b/contrib/gdb-7/gdb/frame.h @@ -1,7 +1,7 @@ /* Definitions for dealing with stack frames, for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -406,6 +406,15 @@ extern int frame_relative_level (struct frame_info *fi); extern enum frame_type get_frame_type (struct frame_info *); +/* Return the frame's program space. */ +extern struct program_space *get_frame_program_space (struct frame_info *); + +/* Unwind THIS frame's program space from the NEXT frame. */ +extern struct program_space *frame_unwind_program_space (struct frame_info *); + +/* Return the frame's address space. */ +extern struct address_space *get_frame_address_space (struct frame_info *); + /* For frames where we can not unwind further, describe why. */ enum unwind_stop_reason diff --git a/contrib/gdb-7/gdb/gcore.c b/contrib/gdb-7/gdb/gcore.c index 5bc38e2ab5..a38a5a357c 100644 --- a/contrib/gdb-7/gdb/gcore.c +++ b/contrib/gdb-7/gdb/gcore.c @@ -1,6 +1,6 @@ /* Generate a core file for the inferior process. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -24,11 +24,16 @@ #include "inferior.h" #include "gdbcore.h" #include "objfiles.h" +#include "solib.h" #include "symfile.h" - +#include "arch-utils.h" +#include "completer.h" +#include "gcore.h" #include "cli/cli-decode.h" - #include "gdb_assert.h" +#include +#include "regcache.h" +#include "regset.h" /* The largest amount of memory to read from the target at once. We must throttle it to limit the amount of memory used by GDB during @@ -40,45 +45,31 @@ static enum bfd_architecture default_gcore_arch (void); static unsigned long default_gcore_mach (void); static int gcore_memory_sections (bfd *); -/* Generate a core file from the inferior process. */ +/* create_gcore_bfd -- helper for gcore_command (exported). + Open a new bfd core file for output, and return the handle. */ -static void -gcore_command (char *args, int from_tty) +bfd * +create_gcore_bfd (char *filename) { - struct cleanup *old_chain; - char *corefilename, corefilename_buffer[40]; - asection *note_sec = NULL; - bfd *obfd; - void *note_data = NULL; - int note_size = 0; - - /* No use generating a corefile without a target process. */ - if (!target_has_execution) - noprocess (); - - if (args && *args) - corefilename = args; - else - { - /* Default corefile name is "core.PID". */ - sprintf (corefilename_buffer, "core.%d", PIDGET (inferior_ptid)); - corefilename = corefilename_buffer; - } - - if (info_verbose) - fprintf_filtered (gdb_stdout, - "Opening corefile '%s' for output.\n", corefilename); + bfd *obfd = bfd_openw (filename, default_gcore_target ()); - /* Open the output file. */ - obfd = bfd_openw (corefilename, default_gcore_target ()); if (!obfd) - error (_("Failed to open '%s' for output."), corefilename); - - /* Need a cleanup that will close the file (FIXME: delete it?). */ - old_chain = make_cleanup_bfd_close (obfd); - + error (_("Failed to open '%s' for output."), filename); bfd_set_format (obfd, bfd_core); bfd_set_arch_mach (obfd, default_gcore_arch (), default_gcore_mach ()); + return obfd; +} + +/* write_gcore_file -- helper for gcore_command (exported). + Compose and write the corefile data to the core file. */ + + +void +write_gcore_file (bfd *obfd) +{ + void *note_data = NULL; + int note_size = 0; + asection *note_sec = NULL; /* An external target method must build the notes section. */ note_data = target_make_corefile_notes (obfd, ¬e_size); @@ -107,15 +98,62 @@ gcore_command (char *args, int from_tty) if (note_data != NULL && note_size != 0) { if (!bfd_set_section_contents (obfd, note_sec, note_data, 0, note_size)) - warning (_("writing note section (%s)"), bfd_errmsg (bfd_get_error ())); + warning (_("writing note section (%s)"), + bfd_errmsg (bfd_get_error ())); } +} + +static void +do_bfd_delete_cleanup (void *arg) +{ + bfd *obfd = arg; + const char *filename = obfd->filename; + + bfd_close (arg); + unlink (filename); +} + +/* gcore_command -- implements the 'gcore' command. + Generate a core file from the inferior process. */ + +static void +gcore_command (char *args, int from_tty) +{ + struct cleanup *old_chain; + char *corefilename, corefilename_buffer[40]; + bfd *obfd; + + /* No use generating a corefile without a target process. */ + if (!target_has_execution) + noprocess (); + + if (args && *args) + corefilename = args; + else + { + /* Default corefile name is "core.PID". */ + sprintf (corefilename_buffer, "core.%d", PIDGET (inferior_ptid)); + corefilename = corefilename_buffer; + } + + if (info_verbose) + fprintf_filtered (gdb_stdout, + "Opening corefile '%s' for output.\n", corefilename); + + /* Open the output file. */ + obfd = create_gcore_bfd (corefilename); + + /* Need a cleanup that will close and delete the file. */ + old_chain = make_cleanup (do_bfd_delete_cleanup, obfd); + + /* Call worker function. */ + write_gcore_file (obfd); /* Succeeded. */ fprintf_filtered (gdb_stdout, "Saved corefile %s\n", corefilename); - /* Clean-ups will close the output file and free malloc memory. */ - do_cleanups (old_chain); - return; + discard_cleanups (old_chain); + bfd_close (obfd); } static unsigned long @@ -212,6 +250,50 @@ derive_stack_segment (bfd_vma *bottom, bfd_vma *top) return 1; } +/* call_target_sbrk -- + helper function for derive_heap_segment. */ + +static bfd_vma +call_target_sbrk (int sbrk_arg) +{ + struct objfile *sbrk_objf; + struct gdbarch *gdbarch; + bfd_vma top_of_heap; + struct value *target_sbrk_arg; + struct value *sbrk_fn, *ret; + bfd_vma tmp; + + if (lookup_minimal_symbol ("sbrk", NULL, NULL) != NULL) + { + sbrk_fn = find_function_in_inferior ("sbrk", &sbrk_objf); + if (sbrk_fn == NULL) + return (bfd_vma) 0; + } + else if (lookup_minimal_symbol ("_sbrk", NULL, NULL) != NULL) + { + sbrk_fn = find_function_in_inferior ("_sbrk", &sbrk_objf); + if (sbrk_fn == NULL) + return (bfd_vma) 0; + } + else + return (bfd_vma) 0; + + gdbarch = get_objfile_arch (sbrk_objf); + target_sbrk_arg = value_from_longest (builtin_type (gdbarch)->builtin_int, + sbrk_arg); + gdb_assert (target_sbrk_arg); + ret = call_function_by_hand (sbrk_fn, 1, &target_sbrk_arg); + if (ret == NULL) + return (bfd_vma) 0; + + tmp = value_as_long (ret); + if ((LONGEST) tmp <= 0 || (LONGEST) tmp == 0xffffffff) + return (bfd_vma) 0; + + top_of_heap = tmp; + return top_of_heap; +} + /* Derive a reasonable heap segment for ABFD by looking at sbrk and the static data sections. Store its limits in *BOTTOM and *TOP. Return non-zero if successful. */ @@ -219,12 +301,9 @@ derive_stack_segment (bfd_vma *bottom, bfd_vma *top) static int derive_heap_segment (bfd *abfd, bfd_vma *bottom, bfd_vma *top) { - struct objfile *sbrk_objf; - struct gdbarch *gdbarch; bfd_vma top_of_data_memory = 0; bfd_vma top_of_heap = 0; bfd_size_type sec_size; - struct value *zero, *sbrk; bfd_vma sec_vaddr; asection *sec; @@ -259,30 +338,10 @@ derive_heap_segment (bfd *abfd, bfd_vma *bottom, bfd_vma *top) } } - /* Now get the top-of-heap by calling sbrk in the inferior. */ - if (lookup_minimal_symbol ("sbrk", NULL, NULL) != NULL) - { - sbrk = find_function_in_inferior ("sbrk", &sbrk_objf); - if (sbrk == NULL) - return 0; - } - else if (lookup_minimal_symbol ("_sbrk", NULL, NULL) != NULL) - { - sbrk = find_function_in_inferior ("_sbrk", &sbrk_objf); - if (sbrk == NULL) - return 0; - } - else + top_of_heap = call_target_sbrk (0); + if (top_of_heap == (bfd_vma) 0) return 0; - gdbarch = get_objfile_arch (sbrk_objf); - zero = value_from_longest (builtin_type (gdbarch)->builtin_int, 0); - gdb_assert (zero); - sbrk = call_function_by_hand (sbrk, 1, &zero); - if (sbrk == NULL) - return 0; - top_of_heap = value_as_long (sbrk); - /* Return results. */ if (top_of_heap > top_of_data_memory) { @@ -299,13 +358,15 @@ static void make_output_phdrs (bfd *obfd, asection *osec, void *ignored) { int p_flags = 0; - int p_type; + int p_type = 0; /* FIXME: these constants may only be applicable for ELF. */ if (strncmp (bfd_section_name (obfd, osec), "load", 4) == 0) p_type = PT_LOAD; - else + else if (strncmp (bfd_section_name (obfd, osec), "note", 4) == 0) p_type = PT_NOTE; + else + p_type = PT_NULL; p_flags |= PF_R; /* Segment is readable. */ if (!(bfd_get_section_flags (obfd, osec) & SEC_READONLY)) @@ -338,7 +399,7 @@ gcore_create_callback (CORE_ADDR vaddr, unsigned long size, return 0; } - if (write == 0) + if (write == 0 && !solib_keep_data_in_core (vaddr, size)) { /* See if this region of memory lies inside a known file on disk. If so, we can avoid copying its contents by clearing SEC_LOAD. */ @@ -353,6 +414,7 @@ gcore_create_callback (CORE_ADDR vaddr, unsigned long size, asec); bfd_vma start = obj_section_addr (objsec) & -align; bfd_vma end = (obj_section_endaddr (objsec) + align - 1) & -align; + /* Match if either the entire memory region lies inside the section (i.e. a mapping covering some pages of a large segment) or the entire section lies inside the memory region @@ -415,14 +477,13 @@ objfile_find_memory_regions (int (*func) (CORE_ADDR, unsigned long, bfd *ibfd = objfile->obfd; asection *isec = objsec->the_bfd_section; flagword flags = bfd_get_section_flags (ibfd, isec); - int ret; if ((flags & SEC_ALLOC) || (flags & SEC_LOAD)) { int size = bfd_section_size (ibfd, isec); int ret; - ret = (*func) (obj_section_addr (objsec), bfd_section_size (ibfd, isec), + ret = (*func) (obj_section_addr (objsec), size, 1, /* All sections will be readable. */ (flags & SEC_READONLY) == 0, /* Writable. */ (flags & SEC_CODE) != 0, /* Executable. */ @@ -469,9 +530,6 @@ gcore_copy_callback (bfd *obfd, asection *osec, void *ignored) size = min (total_size, MAX_COPY_BYTES); memhunk = xmalloc (size); - /* ??? This is crap since xmalloc should never return NULL. */ - if (memhunk == NULL) - error (_("Not enough memory to create corefile.")); old_chain = make_cleanup (xfree, memhunk); while (total_size > 0) diff --git a/contrib/gdb-7/gdb/tui/tui-hooks.h b/contrib/gdb-7/gdb/gcore.h similarity index 68% copy from contrib/gdb-7/gdb/tui/tui-hooks.h copy to contrib/gdb-7/gdb/gcore.h index 74bf8be2ea..fc168d3e2e 100644 --- a/contrib/gdb-7/gdb/tui/tui-hooks.h +++ b/contrib/gdb-7/gdb/gcore.h @@ -1,6 +1,6 @@ -/* External/Public TUI hools header file, for GDB the GNU debugger. +/* Support for reading/writing gcore files. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2009, Free Software Foundation, Inc. This file is part of GDB. @@ -17,10 +17,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef TUI_HOOKS_H -#define TUI_HOOKS_H +#if !defined (GCORE_H) +#define GCORE_H 1 -extern void tui_install_hooks (void); -extern void tui_remove_hooks (void); +extern bfd *create_gcore_bfd (char *filename); +extern void write_gcore_file (bfd *obfd); +extern bfd *load_corefile (char *filename, int from_tty); -#endif +#endif /* GCORE_H */ diff --git a/contrib/gdb-7/gdb/gdb-gdb.py b/contrib/gdb-7/gdb/gdb-gdb.py new file mode 100644 index 0000000000..b2e68eef8a --- /dev/null +++ b/contrib/gdb-7/gdb/gdb-gdb.py @@ -0,0 +1,260 @@ +# Copyright (C) 2009, 2010 Free Software Foundation, Inc. +# +# This file is part of GDB. +# +# 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 . + +import gdb +import os.path + +class TypeFlag: + """A class that allows us to store a flag name, its short name, + and its value. + + In the GDB sources, struct type has a component called instance_flags + in which the value is the addition of various flags. These flags are + defined by two enumerates: type_flag_value, and type_instance_flag_value. + This class helps us recreate a list with all these flags that is + easy to manipulate and sort. Because all flag names start with either + TYPE_FLAG_ or TYPE_INSTANCE_FLAG_, a short_name attribute is provided + that strips this prefix. + + ATTRIBUTES + name: The enumeration name (eg: "TYPE_FLAG_UNSIGNED"). + value: The associated value. + short_name: The enumeration name, with the suffix stripped. + """ + def __init__(self, name, value): + self.name = name + self.value = value + self.short_name = name.replace("TYPE_FLAG_", '') + if self.short_name == name: + self.short_name = name.replace("TYPE_INSTANCE_FLAG_", '') + def __cmp__(self, other): + """Sort by value order.""" + return self.value.__cmp__(other.value) + +# A list of all existing TYPE_FLAGS_* and TYPE_INSTANCE_FLAGS_* +# enumerations, stored as TypeFlags objects. Lazy-initialized. +TYPE_FLAGS = None + +class TypeFlagsPrinter: + """A class that prints a decoded form of an instance_flags value. + + This class uses a global named TYPE_FLAGS, which is a list of + all defined TypeFlag values. Using a global allows us to compute + this list only once. + + This class relies on a couple of enumeration types being defined. + If not, then printing of the instance_flag is going to be degraded, + but it's not a fatal error. + """ + def __init__(self, val): + self.val = val + def __str__(self): + global TYPE_FLAGS + if TYPE_FLAGS is None: + self.init_TYPE_FLAGS() + if not self.val: + return "0" + if TYPE_FLAGS: + flag_list = [flag.short_name for flag in TYPE_FLAGS + if self.val & flag.value] + else: + flag_list = ["???"] + return "0x%x [%s]" % (self.val, "|".join(flag_list)) + def init_TYPE_FLAGS(self): + """Initialize the TYPE_FLAGS global as a list of TypeFlag objects. + This operation requires the search of a couple of enumeration types. + If not found, a warning is printed on stdout, and TYPE_FLAGS is + set to the empty list. + + The resulting list is sorted by increasing value, to facilitate + printing of the list of flags used in an instance_flags value. + """ + global TYPE_FLAGS + TYPE_FLAGS = [] + try: + flags = gdb.lookup_type("enum type_flag_value") + except: + print "Warning: Cannot find enum type_flag_value type." + print " `struct type' pretty-printer will be degraded" + return + try: + iflags = gdb.lookup_type("enum type_instance_flag_value") + except: + print "Warning: Cannot find enum type_instance_flag_value type." + print " `struct type' pretty-printer will be degraded" + return + # Note: TYPE_FLAG_MIN is a duplicate of TYPE_FLAG_UNSIGNED, + # so exclude it from the list we are building. + TYPE_FLAGS = [TypeFlag(field.name, field.bitpos) + for field in flags.fields() + if field.name != 'TYPE_FLAG_MIN'] + TYPE_FLAGS += [TypeFlag(field.name, field.bitpos) + for field in iflags.fields()] + TYPE_FLAGS.sort() + +class StructTypePrettyPrinter: + """Pretty-print an object of type struct type""" + def __init__(self, val): + self.val = val + def to_string(self): + fields = [] + fields.append("pointer_type = %s" % self.val['pointer_type']) + fields.append("reference_type = %s" % self.val['reference_type']) + fields.append("chain = %s" % self.val['reference_type']) + fields.append("instance_flags = %s" + % TypeFlagsPrinter(self.val['instance_flags'])) + fields.append("length = %d" % self.val['length']) + fields.append("main_type = %s" % self.val['main_type']) + return "\n{" + ",\n ".join(fields) + "}" + +class StructMainTypePrettyPrinter: + """Pretty-print an objet of type main_type""" + def __init__(self, val): + self.val = val + def flags_to_string(self): + """struct main_type contains a series of components that + are one-bit ints whose name start with "flag_". For instance: + flag_unsigned, flag_stub, etc. In essence, these components are + really boolean flags, and this method prints a short synthetic + version of the value of all these flags. For instance, if + flag_unsigned and flag_static are the only components set to 1, + this function will return "unsigned|static". + """ + fields = [field.name.replace("flag_", "") + for field in self.val.type.fields() + if field.name.startswith("flag_") + and self.val[field.name]] + return "|".join(fields) + def owner_to_string(self): + """Return an image of component "owner". + """ + if self.val['flag_objfile_owned'] != 0: + return "%s (objfile)" % self.val['owner']['objfile'] + else: + return "%s (gdbarch)" % self.val['owner']['gdbarch'] + def struct_field_location_img(self, field_val): + """Return an image of the loc component inside the given field + gdb.Value. + """ + loc_val = field_val['loc'] + loc_kind = str(field_val['loc_kind']) + if loc_kind == "FIELD_LOC_KIND_BITPOS": + return 'bitpos = %d' % loc_val['bitpos'] + elif loc_kind == "FIELD_LOC_KIND_PHYSADDR": + return 'physaddr = 0x%x' % loc_val['physaddr'] + elif loc_kind == "FIELD_LOC_KIND_PHYSNAME": + return 'physname = %s' % loc_val['physname'] + else: + return 'loc = ??? (unsupported loc_kind value)' + def struct_field_img(self, fieldno): + """Return an image of the main_type field number FIELDNO. + """ + f = self.val['flds_bnds']['fields'][fieldno] + label = "field[%d]:" % fieldno + if f['artificial']: + label += " (artificial)" + fields = [] + fields.append("name = %s" % f['name']) + fields.append("type = %s" % f['type']) + fields.append("loc_kind = %s" % f['loc_kind']) + fields.append("bitsize = %d" % f['bitsize']) + fields.append(self.struct_field_location_img(f)) + return label + "\n" + " {" + ",\n ".join(fields) + "}" + def bounds_img(self): + """Return an image of the main_type bounds. + """ + b = self.val['flds_bnds']['bounds'].dereference() + low = str(b['low']) + if b['low_undefined'] != 0: + low += " (undefined)" + high = str(b['high']) + if b['high_undefined'] != 0: + high += " (undefined)" + return "bounds = {%s, %s}" % (low, high) + def type_specific_img(self): + """Return a string image of the main_type type_specific union. + Only the relevant component of that union is printed (based on + the value of the type_specific_kind field. + """ + type_specific_kind = str(self.val['type_specific_field']) + type_specific = self.val['type_specific'] + if type_specific_kind == "TYPE_SPECIFIC_NONE": + img = 'type_specific_field = %s' % type_specific_kind + elif type_specific_kind == "TYPE_SPECIFIC_CPLUS_STUFF": + img = "cplus_stuff = %s" % type_specific['cplus_stuff'] + elif type_specific_kind == "TYPE_SPECIFIC_GNAT_STUFF": + img = ("gnat_stuff = {descriptive_type = %s}" + % type_specific['gnat_stuff']['descriptive_type']) + elif type_specific_kind == "TYPE_SPECIFIC_FLOATFORMAT": + img = "floatformat[0..1] = %s" % type_specific['floatformat'] + elif type_specific_kind == "TYPE_SPECIFIC_CALLING_CONVENTION": + img = ("calling_convention = %d" + % type_specific['calling_convention']) + else: + img = ("type_specific = ??? (unknown type_secific_kind: %s)" + % type_specific_kind) + return img + + def to_string(self): + """Return a pretty-printed image of our main_type. + """ + fields = [] + fields.append("name = %s" % self.val['name']) + fields.append("tag_name = %s" % self.val['tag_name']) + fields.append("code = %s" % self.val['code']) + fields.append("flags = [%s]" % self.flags_to_string()) + fields.append("owner = %s" % self.owner_to_string()) + fields.append("target_type = %s" % self.val['target_type']) + fields.append("vptr_basetype = %s" % self.val['vptr_basetype']) + if self.val['nfields'] > 0: + for fieldno in range(self.val['nfields']): + fields.append(self.struct_field_img(fieldno)) + if self.val['code'] == gdb.TYPE_CODE_RANGE: + fields.append(self.bounds_img()) + fields.append(self.type_specific_img()) + + return "\n{" + ",\n ".join(fields) + "}" + +def type_lookup_function(val): + """A routine that returns the correct pretty printer for VAL + if appropriate. Returns None otherwise. + """ + if val.type.tag == "type": + return StructTypePrettyPrinter(val) + elif val.type.tag == "main_type": + return StructMainTypePrettyPrinter(val) + return None + +def register_pretty_printer(objfile): + """A routine to register a pretty-printer against the given OBJFILE. + """ + objfile.pretty_printers.append(type_lookup_function) + +if __name__ == "__main__": + if gdb.current_objfile() is not None: + # This is the case where this script is being "auto-loaded" + # for a given objfile. Register the pretty-printer for that + # objfile. + register_pretty_printer(gdb.current_objfile()) + else: + # We need to locate the objfile corresponding to the GDB + # executable, and register the pretty-printer for that objfile. + # FIXME: The condition used to match the objfile is too simplistic + # and will not work on Windows. + for objfile in gdb.objfiles(): + if os.path.basename(objfile.filename) == "gdb": + objfile.pretty_printers.append(type_lookup_function) diff --git a/contrib/gdb-7/gdb/gdb-stabs.h b/contrib/gdb-7/gdb/gdb-stabs.h index 1126b9a1e1..406d5fe9fc 100644 --- a/contrib/gdb-7/gdb/gdb-stabs.h +++ b/contrib/gdb-7/gdb/gdb-stabs.h @@ -1,6 +1,6 @@ /* Definitions for symbol-reading containing "stabs", for GDB. - Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by John Gilmore. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb.1 b/contrib/gdb-7/gdb/gdb.1 index 809578fc16..548b46d00e 100644 --- a/contrib/gdb-7/gdb/gdb.1 +++ b/contrib/gdb-7/gdb/gdb.1 @@ -1,4 +1,4 @@ -.\" Copyright (C) 1991, 1999 Free Software Foundation, Inc. +.\" Copyright (C) 1991, 1999, 2010 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution .\" $Id: gdb.1,v 1.4 1999/01/05 00:50:50 jsm Exp $ .TH gdb 1 "22may2002" "GNU Tools" "GNU Tools" @@ -363,7 +363,7 @@ entry in Using GDB: A Guide to the GNU Source-Level Debugger\c , Richard M. Stallman and Roland H. Pesch, July 1991. .SH COPYING -Copyright (c) 1991 Free Software Foundation, Inc. +Copyright (c) 1991, 2010 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice diff --git a/contrib/gdb-7/gdb/gdb.c b/contrib/gdb-7/gdb/gdb.c index 611540393b..bc5e6cc354 100644 --- a/contrib/gdb-7/gdb/gdb.c +++ b/contrib/gdb-7/gdb/gdb.c @@ -1,5 +1,5 @@ /* Main function for CLI gdb. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -25,6 +25,7 @@ int main (int argc, char **argv) { struct captured_main_args args; + memset (&args, 0, sizeof args); args.argc = argc; args.argv = argv; diff --git a/contrib/gdb-7/gdb/gdb.h b/contrib/gdb-7/gdb/gdb.h index d288229da9..edd2294fbf 100644 --- a/contrib/gdb-7/gdb/gdb.h +++ b/contrib/gdb-7/gdb/gdb.h @@ -1,5 +1,6 @@ /* Library interface into GDB. - Copyright (C) 1999, 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2001, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_assert.h b/contrib/gdb-7/gdb/gdb_assert.h index 7d21beb7bb..2d04fb0b22 100644 --- a/contrib/gdb-7/gdb/gdb_assert.h +++ b/contrib/gdb-7/gdb/gdb_assert.h @@ -1,5 +1,6 @@ /* GDB-friendly replacement for . - Copyright (C) 2000, 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_curses.h b/contrib/gdb-7/gdb/gdb_curses.h index ff1c5f5cb4..7d8d09a184 100644 --- a/contrib/gdb-7/gdb/gdb_curses.h +++ b/contrib/gdb-7/gdb/gdb_curses.h @@ -1,6 +1,7 @@ /* Portable . - Copyright (C) 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_locale.h b/contrib/gdb-7/gdb/gdb_locale.h index 4fa4d3dc86..9519744e61 100644 --- a/contrib/gdb-7/gdb/gdb_locale.h +++ b/contrib/gdb-7/gdb/gdb_locale.h @@ -1,5 +1,5 @@ /* GDB-friendly replacement for . - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_obstack.h b/contrib/gdb-7/gdb/gdb_obstack.h index 757d8e9078..e90f921b51 100644 --- a/contrib/gdb-7/gdb/gdb_obstack.h +++ b/contrib/gdb-7/gdb/gdb_obstack.h @@ -1,6 +1,6 @@ /* Obstack wrapper for GDB. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_ptrace.h b/contrib/gdb-7/gdb/gdb_ptrace.h index 8e32e88577..8ee8c4eea3 100644 --- a/contrib/gdb-7/gdb/gdb_ptrace.h +++ b/contrib/gdb-7/gdb/gdb_ptrace.h @@ -1,6 +1,7 @@ /* Portable - Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -114,7 +115,11 @@ and there is probably no special request that we would be required to use when resuming the execution of our program. */ #ifndef PT_SYSCALL -# define PT_SYSCALL PT_CONTINUE +# ifdef PTRACE_SYSCALL +# define PT_SYSCALL PTRACE_SYSCALL +#else +# define PT_SYSCALL PT_CONTINUE +# endif #endif /* Some systems, in particular DEC OSF/1, Digital Unix, Compaq Tru64 diff --git a/contrib/gdb-7/gdb/gdb_regex.h b/contrib/gdb-7/gdb/gdb_regex.h index 7e1d3d8dd4..a55ae97362 100644 --- a/contrib/gdb-7/gdb/gdb_regex.h +++ b/contrib/gdb-7/gdb/gdb_regex.h @@ -1,5 +1,5 @@ /* Portable . - Copyright (C) 2000, 2001, 2003, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_select.h b/contrib/gdb-7/gdb/gdb_select.h index e4edb71aba..e8a7d98c9a 100644 --- a/contrib/gdb-7/gdb/gdb_select.h +++ b/contrib/gdb-7/gdb/gdb_select.h @@ -1,6 +1,6 @@ /* Slightly more portable version of . - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_stat.h b/contrib/gdb-7/gdb/gdb_stat.h index 6473ae6edb..27030248bc 100644 --- a/contrib/gdb-7/gdb/gdb_stat.h +++ b/contrib/gdb-7/gdb/gdb_stat.h @@ -1,5 +1,5 @@ /* Portable - Copyright (C) 1995, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1995, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_string.h b/contrib/gdb-7/gdb/gdb_string.h index 04450e7c9b..182382c552 100644 --- a/contrib/gdb-7/gdb/gdb_string.h +++ b/contrib/gdb-7/gdb/gdb_string.h @@ -1,6 +1,6 @@ /* Portable - Copyright (C) 1995, 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009 + Copyright (C) 1995, 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_thread_db.h b/contrib/gdb-7/gdb/gdb_thread_db.h index 1cc5fda5ad..8ddcaedb2f 100644 --- a/contrib/gdb-7/gdb/gdb_thread_db.h +++ b/contrib/gdb-7/gdb/gdb_thread_db.h @@ -11,7 +11,8 @@ #else -/* Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2007, 2008, 2009, 2010 +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 diff --git a/contrib/gdb-7/gdb/gdb_usleep.c b/contrib/gdb-7/gdb/gdb_usleep.c index dd6d4603fb..395c765eda 100644 --- a/contrib/gdb-7/gdb/gdb_usleep.c +++ b/contrib/gdb-7/gdb/gdb_usleep.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Free Software Foundation, Inc. +/* Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_usleep.h b/contrib/gdb-7/gdb/gdb_usleep.h index 444ffbd9b5..fed185c4fe 100644 --- a/contrib/gdb-7/gdb/gdb_usleep.h +++ b/contrib/gdb-7/gdb/gdb_usleep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Free Software Foundation, Inc. +/* Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_vfork.h b/contrib/gdb-7/gdb/gdb_vfork.h index b5d9634684..4ba1ff7a69 100644 --- a/contrib/gdb-7/gdb/gdb_vfork.h +++ b/contrib/gdb-7/gdb/gdb_vfork.h @@ -1,5 +1,5 @@ /* GDB-friendly replacement for . - Copyright (C) 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_wait.h b/contrib/gdb-7/gdb/gdb_wait.h index c76e36234f..0fe1d9a8ad 100644 --- a/contrib/gdb-7/gdb/gdb_wait.h +++ b/contrib/gdb-7/gdb/gdb_wait.h @@ -1,5 +1,5 @@ /* Standard wait macros. - Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdb_wchar.h b/contrib/gdb-7/gdb/gdb_wchar.h index 07a6c877cf..fca3fe43cc 100644 --- a/contrib/gdb-7/gdb/gdb_wchar.h +++ b/contrib/gdb-7/gdb/gdb_wchar.h @@ -1,5 +1,5 @@ /* Wide characters for gdb - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/gdbarch.c b/contrib/gdb-7/gdb/gdbarch.c index 6c13dc8787..103abcb66c 100644 --- a/contrib/gdb-7/gdb/gdbarch.c +++ b/contrib/gdb-7/gdb/gdbarch.c @@ -2,8 +2,8 @@ /* Dynamic architecture support for GDB, the GNU debugger. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GDB. @@ -77,6 +77,14 @@ pformat (const struct floatformat **format) return format[0]->name; } +static const char * +pstring (const char *string) +{ + if (string == NULL) + return "(null)"; + return string; +} + /* Maintain the struct gdbarch object */ @@ -137,6 +145,8 @@ struct gdbarch int int_bit; int long_bit; int long_long_bit; + int half_bit; + const struct floatformat ** half_format; int float_bit; const struct floatformat ** float_format; int double_bit; @@ -188,6 +198,7 @@ struct gdbarch gdbarch_skip_main_prologue_ftype *skip_main_prologue; gdbarch_inner_than_ftype *inner_than; gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc; + gdbarch_remote_breakpoint_from_pc_ftype *remote_breakpoint_from_pc; gdbarch_adjust_breakpoint_address_ftype *adjust_breakpoint_address; gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint; gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint; @@ -236,6 +247,7 @@ struct gdbarch gdbarch_displaced_step_fixup_ftype *displaced_step_fixup; gdbarch_displaced_step_free_closure_ftype *displaced_step_free_closure; gdbarch_displaced_step_location_ftype *displaced_step_location; + gdbarch_relocate_instruction_ftype *relocate_instruction; gdbarch_overlay_update_ftype *overlay_update; gdbarch_core_read_description_ftype *core_read_description; gdbarch_static_transform_name_ftype *static_transform_name; @@ -249,6 +261,12 @@ struct gdbarch gdbarch_get_syscall_number_ftype *get_syscall_number; int has_global_solist; int has_global_breakpoints; + gdbarch_has_shared_address_space_ftype *has_shared_address_space; + gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at; + gdbarch_auto_charset_ftype *auto_charset; + gdbarch_auto_wide_charset_ftype *auto_wide_charset; + const char * solib_symbols_extension; + int has_dos_based_file_system; }; @@ -277,6 +295,8 @@ struct gdbarch startup_gdbarch = 8 * sizeof (int), /* int_bit */ 8 * sizeof (long), /* long_bit */ 8 * sizeof (LONGEST), /* long_long_bit */ + 16, /* half_bit */ + 0, /* half_format */ 8 * sizeof (float), /* float_bit */ 0, /* float_format */ 8 * sizeof (double), /* double_bit */ @@ -328,6 +348,7 @@ struct gdbarch startup_gdbarch = 0, /* skip_main_prologue */ 0, /* inner_than */ 0, /* breakpoint_from_pc */ + default_remote_breakpoint_from_pc, /* remote_breakpoint_from_pc */ 0, /* adjust_breakpoint_address */ default_memory_insert_breakpoint, /* memory_insert_breakpoint */ default_memory_remove_breakpoint, /* memory_remove_breakpoint */ @@ -376,6 +397,7 @@ struct gdbarch startup_gdbarch = 0, /* displaced_step_fixup */ NULL, /* displaced_step_free_closure */ NULL, /* displaced_step_location */ + 0, /* relocate_instruction */ 0, /* overlay_update */ 0, /* core_read_description */ 0, /* static_transform_name */ @@ -389,6 +411,12 @@ struct gdbarch startup_gdbarch = 0, /* get_syscall_number */ 0, /* has_global_solist */ 0, /* has_global_breakpoints */ + default_has_shared_address_space, /* has_shared_address_space */ + default_fast_tracepoint_valid_at, /* fast_tracepoint_valid_at */ + default_auto_charset, /* auto_charset */ + default_auto_wide_charset, /* auto_wide_charset */ + 0, /* solib_symbols_extension */ + 0, /* has_dos_based_file_system */ /* startup_gdbarch() */ }; @@ -427,6 +455,7 @@ gdbarch_alloc (const struct gdbarch_info *info, gdbarch->int_bit = 4*TARGET_CHAR_BIT; gdbarch->long_bit = 4*TARGET_CHAR_BIT; gdbarch->long_long_bit = 2*gdbarch->long_bit; + gdbarch->half_bit = 2*TARGET_CHAR_BIT; gdbarch->float_bit = 4*TARGET_CHAR_BIT; gdbarch->double_bit = 8*TARGET_CHAR_BIT; gdbarch->long_double_bit = 8*TARGET_CHAR_BIT; @@ -452,6 +481,7 @@ gdbarch_alloc (const struct gdbarch_info *info, gdbarch->value_from_register = default_value_from_register; gdbarch->pointer_to_address = unsigned_pointer_to_address; gdbarch->address_to_pointer = unsigned_address_to_pointer; + gdbarch->remote_breakpoint_from_pc = default_remote_breakpoint_from_pc; gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint; gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint; gdbarch->remote_register_number = default_remote_register_number; @@ -470,8 +500,13 @@ gdbarch_alloc (const struct gdbarch_info *info, gdbarch->displaced_step_fixup = NULL; gdbarch->displaced_step_free_closure = NULL; gdbarch->displaced_step_location = NULL; + gdbarch->relocate_instruction = NULL; gdbarch->target_signal_from_host = default_target_signal_from_host; gdbarch->target_signal_to_host = default_target_signal_to_host; + gdbarch->has_shared_address_space = default_has_shared_address_space; + gdbarch->fast_tracepoint_valid_at = default_fast_tracepoint_valid_at; + gdbarch->auto_charset = default_auto_charset; + gdbarch->auto_wide_charset = default_auto_wide_charset; /* gdbarch_alloc() */ return gdbarch; @@ -484,6 +519,7 @@ void * gdbarch_obstack_zalloc (struct gdbarch *arch, long size) { void *data = obstack_alloc (arch->obstack, size); + memset (data, 0, size); return data; } @@ -499,6 +535,7 @@ void gdbarch_free (struct gdbarch *arch) { struct obstack *obstack; + gdb_assert (arch != NULL); gdb_assert (!arch->initialized_p); obstack = arch->obstack; @@ -516,6 +553,7 @@ verify_gdbarch (struct gdbarch *gdbarch) struct cleanup *cleanups; long length; char *buf; + log = mem_fileopen (); cleanups = make_cleanup_ui_file_delete (log); /* fundamental */ @@ -529,6 +567,9 @@ verify_gdbarch (struct gdbarch *gdbarch) /* Skip verify of int_bit, invalid_p == 0 */ /* Skip verify of long_bit, invalid_p == 0 */ /* Skip verify of long_long_bit, invalid_p == 0 */ + /* Skip verify of half_bit, invalid_p == 0 */ + if (gdbarch->half_format == 0) + gdbarch->half_format = floatformats_ieee_half; /* Skip verify of float_bit, invalid_p == 0 */ if (gdbarch->float_format == 0) gdbarch->float_format = floatformats_ieee_single; @@ -587,6 +628,7 @@ verify_gdbarch (struct gdbarch *gdbarch) fprintf_unfiltered (log, "\n\tinner_than"); if (gdbarch->breakpoint_from_pc == 0) fprintf_unfiltered (log, "\n\tbreakpoint_from_pc"); + /* Skip verify of remote_breakpoint_from_pc, invalid_p == 0 */ /* Skip verify of adjust_breakpoint_address, has predicate */ /* Skip verify of memory_insert_breakpoint, invalid_p == 0 */ /* Skip verify of memory_remove_breakpoint, invalid_p == 0 */ @@ -636,6 +678,7 @@ verify_gdbarch (struct gdbarch *gdbarch) fprintf_unfiltered (log, "\n\tdisplaced_step_free_closure"); if ((! gdbarch->displaced_step_location) != (! gdbarch->displaced_step_copy_insn)) fprintf_unfiltered (log, "\n\tdisplaced_step_location"); + /* Skip verify of relocate_instruction, has predicate */ /* Skip verify of overlay_update, has predicate */ /* Skip verify of core_read_description, has predicate */ /* Skip verify of static_transform_name, has predicate */ @@ -649,6 +692,11 @@ verify_gdbarch (struct gdbarch *gdbarch) /* Skip verify of get_syscall_number, has predicate */ /* Skip verify of has_global_solist, invalid_p == 0 */ /* Skip verify of has_global_breakpoints, invalid_p == 0 */ + /* Skip verify of has_shared_address_space, invalid_p == 0 */ + /* Skip verify of fast_tracepoint_valid_at, invalid_p == 0 */ + /* Skip verify of auto_charset, invalid_p == 0 */ + /* Skip verify of auto_wide_charset, invalid_p == 0 */ + /* Skip verify of has_dos_based_file_system, invalid_p == 0 */ buf = ui_file_xstrdup (log, &length); make_cleanup (xfree, buf); if (length > 0) @@ -665,6 +713,7 @@ void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) { const char *gdb_nm_file = ""; + #if defined (GDB_NM_FILE) gdb_nm_file = GDB_NM_FILE; #endif @@ -704,6 +753,12 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) fprintf_unfiltered (file, "gdbarch_dump: adjust_breakpoint_address = <%s>\n", host_address_to_string (gdbarch->adjust_breakpoint_address)); + fprintf_unfiltered (file, + "gdbarch_dump: auto_charset = <%s>\n", + host_address_to_string (gdbarch->auto_charset)); + fprintf_unfiltered (file, + "gdbarch_dump: auto_wide_charset = <%s>\n", + host_address_to_string (gdbarch->auto_wide_charset)); fprintf_unfiltered (file, "gdbarch_dump: believe_pcc_promotion = %s\n", plongest (gdbarch->believe_pcc_promotion)); @@ -821,6 +876,9 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) fprintf_unfiltered (file, "gdbarch_dump: elf_make_msymbol_special = <%s>\n", host_address_to_string (gdbarch->elf_make_msymbol_special)); + fprintf_unfiltered (file, + "gdbarch_dump: fast_tracepoint_valid_at = <%s>\n", + host_address_to_string (gdbarch->fast_tracepoint_valid_at)); fprintf_unfiltered (file, "gdbarch_dump: gdbarch_fetch_pointer_argument_p() = %d\n", gdbarch_fetch_pointer_argument_p (gdbarch)); @@ -884,12 +942,24 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) fprintf_unfiltered (file, "gdbarch_dump: get_syscall_number = <%s>\n", host_address_to_string (gdbarch->get_syscall_number)); + fprintf_unfiltered (file, + "gdbarch_dump: half_bit = %s\n", + plongest (gdbarch->half_bit)); + fprintf_unfiltered (file, + "gdbarch_dump: half_format = %s\n", + pformat (gdbarch->half_format)); + fprintf_unfiltered (file, + "gdbarch_dump: has_dos_based_file_system = %s\n", + plongest (gdbarch->has_dos_based_file_system)); fprintf_unfiltered (file, "gdbarch_dump: has_global_breakpoints = %s\n", plongest (gdbarch->has_global_breakpoints)); fprintf_unfiltered (file, "gdbarch_dump: has_global_solist = %s\n", plongest (gdbarch->has_global_solist)); + fprintf_unfiltered (file, + "gdbarch_dump: has_shared_address_space = <%s>\n", + host_address_to_string (gdbarch->has_shared_address_space)); fprintf_unfiltered (file, "gdbarch_dump: have_nonsteppable_watchpoint = %s\n", plongest (gdbarch->have_nonsteppable_watchpoint)); @@ -1052,6 +1122,15 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) fprintf_unfiltered (file, "gdbarch_dump: regset_from_core_section = <%s>\n", host_address_to_string (gdbarch->regset_from_core_section)); + fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_relocate_instruction_p() = %d\n", + gdbarch_relocate_instruction_p (gdbarch)); + fprintf_unfiltered (file, + "gdbarch_dump: relocate_instruction = <%s>\n", + host_address_to_string (gdbarch->relocate_instruction)); + fprintf_unfiltered (file, + "gdbarch_dump: remote_breakpoint_from_pc = <%s>\n", + host_address_to_string (gdbarch->remote_breakpoint_from_pc)); fprintf_unfiltered (file, "gdbarch_dump: remote_register_number = <%s>\n", host_address_to_string (gdbarch->remote_register_number)); @@ -1106,6 +1185,9 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) fprintf_unfiltered (file, "gdbarch_dump: sofun_address_maybe_missing = %s\n", plongest (gdbarch->sofun_address_maybe_missing)); + fprintf_unfiltered (file, + "gdbarch_dump: solib_symbols_extension = %s\n", + pstring (gdbarch->solib_symbols_extension)); fprintf_unfiltered (file, "gdbarch_dump: sp_regnum = %s\n", plongest (gdbarch->sp_regnum)); @@ -1306,6 +1388,39 @@ set_gdbarch_long_long_bit (struct gdbarch *gdbarch, gdbarch->long_long_bit = long_long_bit; } +int +gdbarch_half_bit (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + /* Skip verify of half_bit, invalid_p == 0 */ + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_half_bit called\n"); + return gdbarch->half_bit; +} + +void +set_gdbarch_half_bit (struct gdbarch *gdbarch, + int half_bit) +{ + gdbarch->half_bit = half_bit; +} + +const struct floatformat ** +gdbarch_half_format (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_half_format called\n"); + return gdbarch->half_format; +} + +void +set_gdbarch_half_format (struct gdbarch *gdbarch, + const struct floatformat ** half_format) +{ + gdbarch->half_format = half_format; +} + int gdbarch_float_bit (struct gdbarch *gdbarch) { @@ -2270,6 +2385,23 @@ set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch->breakpoint_from_pc = breakpoint_from_pc; } +void +gdbarch_remote_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *kindptr) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->remote_breakpoint_from_pc != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_remote_breakpoint_from_pc called\n"); + gdbarch->remote_breakpoint_from_pc (gdbarch, pcptr, kindptr); +} + +void +set_gdbarch_remote_breakpoint_from_pc (struct gdbarch *gdbarch, + gdbarch_remote_breakpoint_from_pc_ftype remote_breakpoint_from_pc) +{ + gdbarch->remote_breakpoint_from_pc = remote_breakpoint_from_pc; +} + int gdbarch_adjust_breakpoint_address_p (struct gdbarch *gdbarch) { @@ -3227,6 +3359,31 @@ set_gdbarch_displaced_step_location (struct gdbarch *gdbarch, gdbarch->displaced_step_location = displaced_step_location; } +int +gdbarch_relocate_instruction_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->relocate_instruction != NULL; +} + +void +gdbarch_relocate_instruction (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR from) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->relocate_instruction != NULL); + /* Do not check predicate: gdbarch->relocate_instruction != NULL, allow call. */ + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_relocate_instruction called\n"); + gdbarch->relocate_instruction (gdbarch, to, from); +} + +void +set_gdbarch_relocate_instruction (struct gdbarch *gdbarch, + gdbarch_relocate_instruction_ftype relocate_instruction) +{ + gdbarch->relocate_instruction = relocate_instruction; +} + int gdbarch_overlay_update_p (struct gdbarch *gdbarch) { @@ -3504,6 +3661,107 @@ set_gdbarch_has_global_breakpoints (struct gdbarch *gdbarch, gdbarch->has_global_breakpoints = has_global_breakpoints; } +int +gdbarch_has_shared_address_space (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->has_shared_address_space != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_has_shared_address_space called\n"); + return gdbarch->has_shared_address_space (gdbarch); +} + +void +set_gdbarch_has_shared_address_space (struct gdbarch *gdbarch, + gdbarch_has_shared_address_space_ftype has_shared_address_space) +{ + gdbarch->has_shared_address_space = has_shared_address_space; +} + +int +gdbarch_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr, int *isize, char **msg) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->fast_tracepoint_valid_at != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_fast_tracepoint_valid_at called\n"); + return gdbarch->fast_tracepoint_valid_at (gdbarch, addr, isize, msg); +} + +void +set_gdbarch_fast_tracepoint_valid_at (struct gdbarch *gdbarch, + gdbarch_fast_tracepoint_valid_at_ftype fast_tracepoint_valid_at) +{ + gdbarch->fast_tracepoint_valid_at = fast_tracepoint_valid_at; +} + +const char * +gdbarch_auto_charset (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->auto_charset != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_auto_charset called\n"); + return gdbarch->auto_charset (); +} + +void +set_gdbarch_auto_charset (struct gdbarch *gdbarch, + gdbarch_auto_charset_ftype auto_charset) +{ + gdbarch->auto_charset = auto_charset; +} + +const char * +gdbarch_auto_wide_charset (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->auto_wide_charset != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_auto_wide_charset called\n"); + return gdbarch->auto_wide_charset (); +} + +void +set_gdbarch_auto_wide_charset (struct gdbarch *gdbarch, + gdbarch_auto_wide_charset_ftype auto_wide_charset) +{ + gdbarch->auto_wide_charset = auto_wide_charset; +} + +const char * +gdbarch_solib_symbols_extension (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_solib_symbols_extension called\n"); + return gdbarch->solib_symbols_extension; +} + +void +set_gdbarch_solib_symbols_extension (struct gdbarch *gdbarch, + const char * solib_symbols_extension) +{ + gdbarch->solib_symbols_extension = solib_symbols_extension; +} + +int +gdbarch_has_dos_based_file_system (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + /* Skip verify of has_dos_based_file_system, invalid_p == 0 */ + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_has_dos_based_file_system called\n"); + return gdbarch->has_dos_based_file_system; +} + +void +set_gdbarch_has_dos_based_file_system (struct gdbarch *gdbarch, + int has_dos_based_file_system) +{ + gdbarch->has_dos_based_file_system = has_dos_based_file_system; +} + /* Keep a registry of per-architecture data-pointers required by GDB modules. */ @@ -3538,7 +3796,8 @@ gdbarch_data_register (gdbarch_data_pre_init_ftype *pre_init, gdbarch_data_post_init_ftype *post_init) { struct gdbarch_data_registration **curr; - /* Append the new registraration. */ + + /* Append the new registration. */ for (curr = &gdbarch_data_registry.registrations; (*curr) != NULL; curr = &(*curr)->next); @@ -3654,10 +3913,10 @@ gdbarch_printable_names (void) { /* Accumulate a list of names based on the registed list of architectures. */ - enum bfd_architecture a; int nr_arches = 0; const char **arches = NULL; struct gdbarch_registration *rego; + for (rego = gdbarch_registry; rego != NULL; rego = rego->next) @@ -3686,6 +3945,7 @@ gdbarch_register (enum bfd_architecture bfd_architecture, { struct gdbarch_registration **curr; const struct bfd_arch_info *bfd_arch_info; + /* Check that BFD recognizes this architecture */ bfd_arch_info = bfd_lookup_arch (bfd_architecture, 0); if (bfd_arch_info == NULL) @@ -3889,8 +4149,6 @@ extern void _initialize_gdbarch (void); void _initialize_gdbarch (void) { - struct cmd_list_element *c; - add_setshow_zinteger_cmd ("arch", class_maintenance, &gdbarch_debug, _("\ Set architecture debugging."), _("\ Show architecture debugging."), _("\ diff --git a/contrib/gdb-7/gdb/gdbarch.h b/contrib/gdb-7/gdb/gdbarch.h index f7b0355699..cfc777ee1d 100644 --- a/contrib/gdb-7/gdb/gdbarch.h +++ b/contrib/gdb-7/gdb/gdbarch.h @@ -2,8 +2,8 @@ /* Dynamic architecture support for GDB, the GNU debugger. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GDB. @@ -118,12 +118,18 @@ extern void set_gdbarch_long_bit (struct gdbarch *gdbarch, int long_bit); extern int gdbarch_long_long_bit (struct gdbarch *gdbarch); extern void set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int long_long_bit); -/* The ABI default bit-size and format for "float", "double", and "long - double". These bit/format pairs should eventually be combined into - a single object. For the moment, just initialize them as a pair. +/* The ABI default bit-size and format for "half", "float", "double", and + "long double". These bit/format pairs should eventually be combined + into a single object. For the moment, just initialize them as a pair. Each format describes both the big and little endian layouts (if useful). */ +extern int gdbarch_half_bit (struct gdbarch *gdbarch); +extern void set_gdbarch_half_bit (struct gdbarch *gdbarch, int half_bit); + +extern const struct floatformat ** gdbarch_half_format (struct gdbarch *gdbarch); +extern void set_gdbarch_half_format (struct gdbarch *gdbarch, const struct floatformat ** half_format); + extern int gdbarch_float_bit (struct gdbarch *gdbarch); extern void set_gdbarch_float_bit (struct gdbarch *gdbarch, int float_bit); @@ -407,6 +413,14 @@ typedef const gdb_byte * (gdbarch_breakpoint_from_pc_ftype) (struct gdbarch *gdb extern const gdb_byte * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr); extern void set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc); +/* Return the adjusted address and kind to use for Z0/Z1 packets. + KIND is usually the memory length of the breakpoint, but may have a + different target-specific meaning. */ + +typedef void (gdbarch_remote_breakpoint_from_pc_ftype) (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *kindptr); +extern void gdbarch_remote_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *kindptr); +extern void set_gdbarch_remote_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_remote_breakpoint_from_pc_ftype *remote_breakpoint_from_pc); + extern int gdbarch_adjust_breakpoint_address_p (struct gdbarch *gdbarch); typedef CORE_ADDR (gdbarch_adjust_breakpoint_address_ftype) (struct gdbarch *gdbarch, CORE_ADDR bpaddr); @@ -798,6 +812,24 @@ typedef CORE_ADDR (gdbarch_displaced_step_location_ftype) (struct gdbarch *gdbar extern CORE_ADDR gdbarch_displaced_step_location (struct gdbarch *gdbarch); extern void set_gdbarch_displaced_step_location (struct gdbarch *gdbarch, gdbarch_displaced_step_location_ftype *displaced_step_location); +/* Relocate an instruction to execute at a different address. OLDLOC + is the address in the inferior memory where the instruction to + relocate is currently at. On input, TO points to the destination + where we want the instruction to be copied (and possibly adjusted) + to. On output, it points to one past the end of the resulting + instruction(s). The effect of executing the instruction at TO shall + be the same as if executing it at FROM. For example, call + instructions that implicitly push the return address on the stack + should be adjusted to return to the instruction after OLDLOC; + relative branches, and other PC-relative instructions need the + offset adjusted; etc. */ + +extern int gdbarch_relocate_instruction_p (struct gdbarch *gdbarch); + +typedef void (gdbarch_relocate_instruction_ftype) (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR from); +extern void gdbarch_relocate_instruction (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR from); +extern void set_gdbarch_relocate_instruction (struct gdbarch *gdbarch, gdbarch_relocate_instruction_ftype *relocate_instruction); + /* Refresh overlay mapped state for section OSECT. */ extern int gdbarch_overlay_update_p (struct gdbarch *gdbarch); @@ -903,6 +935,47 @@ extern void set_gdbarch_has_global_solist (struct gdbarch *gdbarch, int has_glob extern int gdbarch_has_global_breakpoints (struct gdbarch *gdbarch); extern void set_gdbarch_has_global_breakpoints (struct gdbarch *gdbarch, int has_global_breakpoints); +/* True if inferiors share an address space (e.g., uClinux). */ + +typedef int (gdbarch_has_shared_address_space_ftype) (struct gdbarch *gdbarch); +extern int gdbarch_has_shared_address_space (struct gdbarch *gdbarch); +extern void set_gdbarch_has_shared_address_space (struct gdbarch *gdbarch, gdbarch_has_shared_address_space_ftype *has_shared_address_space); + +/* True if a fast tracepoint can be set at an address. */ + +typedef int (gdbarch_fast_tracepoint_valid_at_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr, int *isize, char **msg); +extern int gdbarch_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr, int *isize, char **msg); +extern void set_gdbarch_fast_tracepoint_valid_at (struct gdbarch *gdbarch, gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at); + +/* Return the "auto" target charset. */ + +typedef const char * (gdbarch_auto_charset_ftype) (void); +extern const char * gdbarch_auto_charset (struct gdbarch *gdbarch); +extern void set_gdbarch_auto_charset (struct gdbarch *gdbarch, gdbarch_auto_charset_ftype *auto_charset); + +/* Return the "auto" target wide charset. */ + +typedef const char * (gdbarch_auto_wide_charset_ftype) (void); +extern const char * gdbarch_auto_wide_charset (struct gdbarch *gdbarch); +extern void set_gdbarch_auto_wide_charset (struct gdbarch *gdbarch, gdbarch_auto_wide_charset_ftype *auto_wide_charset); + +/* If non-empty, this is a file extension that will be opened in place + of the file extension reported by the shared library list. + + This is most useful for toolchains that use a post-linker tool, + where the names of the files run on the target differ in extension + compared to the names of the files GDB should load for debug info. */ + +extern const char * gdbarch_solib_symbols_extension (struct gdbarch *gdbarch); +extern void set_gdbarch_solib_symbols_extension (struct gdbarch *gdbarch, const char * solib_symbols_extension); + +/* If true, the target OS has DOS-based file system semantics. That + is, absolute paths include a drive name, and the backslash is + considered a directory separator. */ + +extern int gdbarch_has_dos_based_file_system (struct gdbarch *gdbarch); +extern void set_gdbarch_has_dos_based_file_system (struct gdbarch *gdbarch, int has_dos_based_file_system); + /* Definition for an unknown syscall, used basically in error-cases. */ #define UNKNOWN_SYSCALL (-1) diff --git a/contrib/gdb-7/gdb/gdbcmd.h b/contrib/gdb-7/gdb/gdbcmd.h index 0075fc1cc1..78151dd355 100644 --- a/contrib/gdb-7/gdb/gdbcmd.h +++ b/contrib/gdb-7/gdb/gdbcmd.h @@ -7,7 +7,7 @@ /* Header file for GDB-specific command-line stuff. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2000, - 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -125,6 +125,7 @@ extern struct cmd_list_element *setchecklist; extern struct cmd_list_element *showchecklist; extern void execute_command (char *, int); +extern char *execute_command_to_string (char *p, int from_tty); enum command_control_type execute_control_command (struct command_line *); diff --git a/contrib/gdb-7/gdb/gdbcore.h b/contrib/gdb-7/gdb/gdbcore.h index 7a7dcb2b3a..4b36d6968a 100644 --- a/contrib/gdb-7/gdb/gdbcore.h +++ b/contrib/gdb-7/gdb/gdbcore.h @@ -1,7 +1,7 @@ /* Machine independent variables that describe the core file under GDB. Copyright (C) 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009 + 1997, 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -28,6 +28,7 @@ struct type; struct regcache; #include "bfd.h" +#include "exec.h" /* Return the name of the executable file as a string. ERR nonzero means get error if there is none specified; @@ -103,13 +104,9 @@ extern void (*deprecated_file_changed_hook) (char *filename); extern void specify_exec_file_hook (void (*hook) (char *filename)); -/* Binary File Diddlers for the exec and core files. */ +/* Binary File Diddler for the core file. */ extern bfd *core_bfd; -extern bfd *exec_bfd; - -/* The mtime when we last opened exec_bfd. */ -extern long exec_bfd_mtime; /* Whether to open exec and core files read-only or read-write. */ diff --git a/contrib/gdb-7/gdb/gdbthread.h b/contrib/gdb-7/gdb/gdbthread.h index 79d33fec0e..cd24eaf2fb 100644 --- a/contrib/gdb-7/gdb/gdbthread.h +++ b/contrib/gdb-7/gdb/gdbthread.h @@ -1,6 +1,6 @@ /* Multi-process/thread control defs for GDB, the GNU debugger. Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1997, 1998, 1999, - 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Lynx Real-Time Systems, Inc. Los Gatos, CA. @@ -187,6 +187,10 @@ struct thread_info /* Private data used by the target vector implementation. */ struct private_thread_info *private; + + /* Function that is called to free PRIVATE. If this is NULL, then + xfree will be called on PRIVATE. */ + void (*private_dtor) (struct private_thread_info *); }; /* Create an empty thread list, or empty the existing one. */ @@ -246,6 +250,10 @@ struct thread_info *first_thread_of_process (int pid); /* Returns any thread of process PID. */ extern struct thread_info *any_thread_of_process (int pid); +/* Returns any non-exited thread of process PID, giving preference for + already stopped threads. */ +extern struct thread_info *any_live_thread_of_process (int pid); + /* Change the ptid of thread OLD_PTID to NEW_PTID. */ void thread_change_ptid (ptid_t old_ptid, ptid_t new_ptid); @@ -342,4 +350,6 @@ extern struct cleanup *make_cleanup_restore_current_thread (void); INFERIOR_PTID. INFERIOR_PTID *must* be in the thread list. */ extern struct thread_info* inferior_thread (void); +extern void update_thread_list (void); + #endif /* GDBTHREAD_H */ diff --git a/contrib/gdb-7/gdb/gdbtypes.c b/contrib/gdb-7/gdb/gdbtypes.c index 2f77dca5be..443f6f7a10 100644 --- a/contrib/gdb-7/gdb/gdbtypes.c +++ b/contrib/gdb-7/gdb/gdbtypes.c @@ -1,7 +1,8 @@ /* Support routines for manipulating internal types for GDB. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Cygnus Support, using pieces from other GDB modules. @@ -41,6 +42,10 @@ /* Floatformat pairs. */ +const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN] = { + &floatformat_ieee_half_big, + &floatformat_ieee_half_little +}; const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN] = { &floatformat_ieee_single_big, &floatformat_ieee_single_little @@ -442,6 +447,7 @@ extern int address_space_name_to_int (struct gdbarch *gdbarch, char *space_identifier) { int type_flags; + /* Check for known address space delimiters. */ if (!strcmp (space_identifier, "code")) return TYPE_INSTANCE_FLAG_CODE_SPACE; @@ -539,7 +545,6 @@ make_qualified_type (struct type *type, int new_flags, struct type * make_type_with_address_space (struct type *type, int space_flag) { - struct type *ntype; int new_flags = ((TYPE_INSTANCE_FLAGS (type) & ~(TYPE_INSTANCE_FLAG_CODE_SPACE | TYPE_INSTANCE_FLAG_DATA_SPACE @@ -566,11 +571,10 @@ make_cv_type (int cnst, int voltl, struct type **typeptr) { struct type *ntype; /* New type */ - struct type *tmp_type = type; /* tmp type */ - struct objfile *objfile; int new_flags = (TYPE_INSTANCE_FLAGS (type) - & ~(TYPE_INSTANCE_FLAG_CONST | TYPE_INSTANCE_FLAG_VOLATILE)); + & ~(TYPE_INSTANCE_FLAG_CONST + | TYPE_INSTANCE_FLAG_VOLATILE)); if (cnst) new_flags |= TYPE_INSTANCE_FLAG_CONST; @@ -672,10 +676,7 @@ lookup_methodptr_type (struct type *to_type) struct type *mtype; mtype = alloc_type_copy (to_type); - TYPE_TARGET_TYPE (mtype) = to_type; - TYPE_DOMAIN_TYPE (mtype) = TYPE_DOMAIN_TYPE (to_type); - TYPE_LENGTH (mtype) = cplus_method_ptr_size (to_type); - TYPE_CODE (mtype) = TYPE_CODE_METHODPTR; + smash_to_methodptr_type (mtype, to_type); return mtype; } @@ -711,7 +712,7 @@ allocate_stub_method (struct type *type) struct type * create_range_type (struct type *result_type, struct type *index_type, - int low_bound, int high_bound) + LONGEST low_bound, LONGEST high_bound) { if (result_type == NULL) result_type = alloc_type_copy (index_type); @@ -721,10 +722,8 @@ create_range_type (struct type *result_type, struct type *index_type, TYPE_TARGET_STUB (result_type) = 1; else TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type)); - TYPE_NFIELDS (result_type) = 2; - TYPE_FIELDS (result_type) = TYPE_ZALLOC (result_type, - TYPE_NFIELDS (result_type) - * sizeof (struct field)); + TYPE_RANGE_DATA (result_type) = (struct range_bounds *) + TYPE_ZALLOC (result_type, sizeof (struct range_bounds)); TYPE_LOW_BOUND (result_type) = low_bound; TYPE_HIGH_BOUND (result_type) = high_bound; @@ -858,6 +857,7 @@ lookup_array_range_type (struct type *element_type, struct type *index_type = builtin_type (gdbarch)->builtin_int; struct type *range_type = create_range_type (NULL, index_type, low_bound, high_bound); + return create_array_type (NULL, element_type, range_type); } @@ -890,6 +890,7 @@ lookup_string_range_type (struct type *string_char_type, int low_bound, int high_bound) { struct type *result_type; + result_type = lookup_array_range_type (string_char_type, low_bound, high_bound); TYPE_CODE (result_type) = TYPE_CODE_STRING; @@ -909,6 +910,7 @@ create_set_type (struct type *result_type, struct type *domain_type) if (!TYPE_STUB (domain_type)) { LONGEST low_bound, high_bound, bit_length; + if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0) low_bound = high_bound = 0; bit_length = high_bound - low_bound + 1; @@ -952,6 +954,7 @@ struct type * init_vector_type (struct type *elt_type, int n) { struct type *array_type; + array_type = lookup_array_range_type (elt_type, 0, n - 1); make_vector_type (array_type); return array_type; @@ -982,6 +985,22 @@ smash_to_memberptr_type (struct type *type, struct type *domain, TYPE_CODE (type) = TYPE_CODE_MEMBERPTR; } +/* Smash TYPE to be a type of pointer to methods type TO_TYPE. + + When "smashing" the type, we preserve the objfile that the old type + pointed to, since we aren't changing where the type is actually + allocated. */ + +void +smash_to_methodptr_type (struct type *type, struct type *to_type) +{ + smash_type (type); + TYPE_TARGET_TYPE (type) = to_type; + TYPE_DOMAIN_TYPE (type) = TYPE_DOMAIN_TYPE (to_type); + TYPE_LENGTH (type) = cplus_method_ptr_size (to_type); + TYPE_CODE (type) = TYPE_CODE_METHODPTR; +} + /* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE. METHOD just means `function that gets an extra "this" argument'. @@ -1120,13 +1139,6 @@ lookup_union (char *name, struct block *block) if (TYPE_CODE (t) == TYPE_CODE_UNION) return t; - /* C++ unions may come out with TYPE_CODE_CLASS, but we look at - * a further "declared_type" field to discover it is really a union. - */ - if (HAVE_CPLUS_STRUCT (t)) - if (TYPE_DECLARED_TYPE (t) == DECLARED_TYPE_UNION) - return t; - /* If we get here, it's not a union. */ error (_("This context has class, struct or enum %s, not a union."), name); @@ -1164,6 +1176,7 @@ lookup_template_type (char *name, struct type *type, struct symbol *sym; char *nam = (char *) alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4); + strcpy (nam, name); strcat (nam, "<"); strcat (nam, TYPE_NAME (type)); @@ -1241,6 +1254,14 @@ lookup_struct_elt_type (struct type *type, char *name, int noerr) { return TYPE_FIELD_TYPE (type, i); } + else if (!t_field_name || *t_field_name == '\0') + { + struct type *subtype + = lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 1); + + if (subtype != NULL) + return subtype; + } } /* OK, it's not in this class. Recursively check the baseclasses. */ @@ -1277,7 +1298,8 @@ lookup_struct_elt_type (struct type *type, char *name, int noerr) If not found, return -1 and ignore BASETYPEP. Callers should be aware that in some cases (for example, the type or one of its baseclasses is a stub type and we are - debugging a .o file), this function will not be able to find the + debugging a .o file, or the compiler uses DWARF-2 and is not GCC), + this function will not be able to find the virtual function table pointer, and vptr_fieldno will remain -1 and vptr_basetype will remain NULL or incomplete. */ @@ -1342,12 +1364,17 @@ stub_noname_complaint (void) symbols which contain a full definition for the type. This used to be coded as a macro, but I don't think it is called - often enough to merit such treatment. */ + often enough to merit such treatment. -/* Find the real type of TYPE. This function returns the real type, + Find the real type of TYPE. This function returns the real type, after removing all layers of typedefs and completing opaque or stub types. Completion changes the TYPE argument, but stripping of - typedefs does not. */ + typedefs does not. + + If TYPE is a TYPE_CODE_TYPEDEF, its length is (also) set to the length of + the target type instead of zero. However, in the case of TYPE_CODE_TYPEDEF + check_typedef can still return different type than the original TYPE + pointer. */ struct type * check_typedef (struct type *type) @@ -1403,6 +1430,7 @@ check_typedef (struct type *type) { char *name = type_name_no_tag (type); struct type *newtype; + if (name == NULL) { stub_noname_complaint (); @@ -1438,6 +1466,7 @@ check_typedef (struct type *type) as appropriate? (this code was written before TYPE_NAME and TYPE_TAG_NAME were separate). */ struct symbol *sym; + if (name == NULL) { stub_noname_complaint (); @@ -1474,17 +1503,35 @@ check_typedef (struct type *type) /* Now recompute the length of the array type, based on its number of elements and the target type's length. Watch out for Ada null Ada arrays where the high bound - is smaller than the low bound. */ - const int low_bound = TYPE_LOW_BOUND (range_type); - const int high_bound = TYPE_HIGH_BOUND (range_type); - int nb_elements; - + is smaller than the low bound. */ + const LONGEST low_bound = TYPE_LOW_BOUND (range_type); + const LONGEST high_bound = TYPE_HIGH_BOUND (range_type); + ULONGEST len; + if (high_bound < low_bound) - nb_elements = 0; + len = 0; else - nb_elements = high_bound - low_bound + 1; - - TYPE_LENGTH (type) = nb_elements * TYPE_LENGTH (target_type); + { + /* For now, we conservatively take the array length to be 0 + if its length exceeds UINT_MAX. The code below assumes + that for x < 0, (ULONGEST) x == -x + ULONGEST_MAX + 1, + which is technically not guaranteed by C, but is usually true + (because it would be true if x were unsigned with its + high-order bit on). It uses the fact that + high_bound-low_bound is always representable in + ULONGEST and that if high_bound-low_bound+1 overflows, + it overflows to 0. We must change these tests if we + decide to increase the representation of TYPE_LENGTH + from unsigned int to ULONGEST. */ + ULONGEST ulow = low_bound, uhigh = high_bound; + ULONGEST tlen = TYPE_LENGTH (target_type); + + len = tlen * (uhigh - ulow + 1); + if (tlen == 0 || (len / tlen - 1 + ulow) != uhigh + || len > UINT_MAX) + len = 0; + } + TYPE_LENGTH (type) = len; TYPE_TARGET_STUB (type) = 0; } else if (TYPE_CODE (type) == TYPE_CODE_RANGE) @@ -1690,19 +1737,38 @@ check_stub_method_group (struct type *type, int method_id) } } -const struct cplus_struct_type cplus_struct_default; +/* Ensure it is in .rodata (if available) by workarounding GCC PR 44690. */ +const struct cplus_struct_type cplus_struct_default = { }; void allocate_cplus_struct_type (struct type *type) { - if (!HAVE_CPLUS_STRUCT (type)) - { - TYPE_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *) - TYPE_ALLOC (type, sizeof (struct cplus_struct_type)); - *(TYPE_CPLUS_SPECIFIC (type)) = cplus_struct_default; - } + if (HAVE_CPLUS_STRUCT (type)) + /* Structure was already allocated. Nothing more to do. */ + return; + + TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF; + TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *) + TYPE_ALLOC (type, sizeof (struct cplus_struct_type)); + *(TYPE_RAW_CPLUS_SPECIFIC (type)) = cplus_struct_default; +} + +const struct gnat_aux_type gnat_aux_default = + { NULL }; + +/* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF, + and allocate the associated gnat-specific data. The gnat-specific + data is also initialized to gnat_aux_default. */ +void +allocate_gnat_aux_type (struct type *type) +{ + TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF; + TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *) + TYPE_ALLOC (type, sizeof (struct gnat_aux_type)); + *(TYPE_GNAT_SPECIFIC (type)) = gnat_aux_default; } + /* Helper function to initialize the standard scalar types. If NAME is non-NULL, then we make a copy of the string pointed @@ -1755,10 +1821,19 @@ init_type (enum type_code code, int length, int flags, if (name && strcmp (name, "char") == 0) TYPE_NOSIGN (type) = 1; - if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION - || code == TYPE_CODE_NAMESPACE) + switch (code) { - INIT_CPLUS_SPECIFIC (type); + case TYPE_CODE_STRUCT: + case TYPE_CODE_UNION: + case TYPE_CODE_NAMESPACE: + INIT_CPLUS_SPECIFIC (type); + break; + case TYPE_CODE_FLT: + TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT; + break; + case TYPE_CODE_FUNC: + TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CALLING_CONVENTION; + break; } return type; } @@ -1789,6 +1864,18 @@ is_integral_type (struct type *t) || (TYPE_CODE (t) == TYPE_CODE_BOOL))); } +/* A helper function which returns true if types A and B represent the + "same" class type. This is true if the types have the same main + type, or the same name. */ + +int +class_types_same_p (const struct type *a, const struct type *b) +{ + return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b) + || (TYPE_NAME (a) && TYPE_NAME (b) + && !strcmp (TYPE_NAME (a), TYPE_NAME (b)))); +} + /* Check whether BASE is an ancestor or base class or DCLASS Return 1 if so, and 0 if not. Note: callers may want to check for identity of the types before @@ -1803,18 +1890,103 @@ is_ancestor (struct type *base, struct type *dclass) CHECK_TYPEDEF (base); CHECK_TYPEDEF (dclass); - if (base == dclass) - return 1; - if (TYPE_NAME (base) && TYPE_NAME (dclass) - && !strcmp (TYPE_NAME (base), TYPE_NAME (dclass))) + if (class_types_same_p (base, dclass)) return 1; for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++) - if (is_ancestor (base, TYPE_BASECLASS (dclass, i))) - return 1; + { + if (is_ancestor (base, TYPE_BASECLASS (dclass, i))) + return 1; + } + + return 0; +} + +/* Like is_ancestor, but only returns true when BASE is a public + ancestor of DCLASS. */ + +int +is_public_ancestor (struct type *base, struct type *dclass) +{ + int i; + + CHECK_TYPEDEF (base); + CHECK_TYPEDEF (dclass); + + if (class_types_same_p (base, dclass)) + return 1; + + for (i = 0; i < TYPE_N_BASECLASSES (dclass); ++i) + { + if (! BASETYPE_VIA_PUBLIC (dclass, i)) + continue; + if (is_public_ancestor (base, TYPE_BASECLASS (dclass, i))) + return 1; + } return 0; } + +/* A helper function for is_unique_ancestor. */ + +static int +is_unique_ancestor_worker (struct type *base, struct type *dclass, + int *offset, + const bfd_byte *contents, CORE_ADDR address) +{ + int i, count = 0; + + CHECK_TYPEDEF (base); + CHECK_TYPEDEF (dclass); + + for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i) + { + struct type *iter = check_typedef (TYPE_BASECLASS (dclass, i)); + int this_offset = baseclass_offset (dclass, i, contents, address); + + if (this_offset == -1) + error (_("virtual baseclass botch")); + + if (class_types_same_p (base, iter)) + { + /* If this is the first subclass, set *OFFSET and set count + to 1. Otherwise, if this is at the same offset as + previous instances, do nothing. Otherwise, increment + count. */ + if (*offset == -1) + { + *offset = this_offset; + count = 1; + } + else if (this_offset == *offset) + { + /* Nothing. */ + } + else + ++count; + } + else + count += is_unique_ancestor_worker (base, iter, offset, + contents + this_offset, + address + this_offset); + } + + return count; +} + +/* Like is_ancestor, but only returns true if BASE is a unique base + class of the type of VAL. */ + +int +is_unique_ancestor (struct type *base, struct value *val) +{ + int offset = -1; + + return is_unique_ancestor_worker (base, value_type (val), &offset, + value_contents (val), + value_address (val)) == 1; +} + @@ -2004,7 +2176,8 @@ rank_one_type (struct type *parm, struct type *arg) switch (TYPE_CODE (arg)) { case TYPE_CODE_PTR: - if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID) + if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID + && TYPE_CODE (TYPE_TARGET_TYPE (arg)) != TYPE_CODE_VOID) return VOID_PTR_CONVERSION_BADNESS; else return rank_one_type (TYPE_TARGET_TYPE (parm), @@ -2343,9 +2516,7 @@ field_is_static (struct field *f) to the address of the enclosing struct. It would be nice to have a dedicated flag that would be set for static fields when the type is being created. But in practice, checking the field - loc_kind should give us an accurate answer (at least as long as - we assume that DWARF block locations are not going to be used - for static fields). FIXME? */ + loc_kind should give us an accurate answer. */ return (FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSNAME || FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSADDR); } @@ -2472,6 +2643,17 @@ print_cplus_stuff (struct type *type, int spaces) } } +/* Print the contents of the TYPE's type_specific union, assuming that + its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF. */ + +static void +print_gnat_stuff (struct type *type, int spaces) +{ + struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type); + + recursive_dump_type (descriptive_type, spaces + 2); +} + static struct obstack dont_print_type_obstack; void @@ -2483,7 +2665,7 @@ recursive_dump_type (struct type *type, int spaces) obstack_begin (&dont_print_type_obstack, 0); if (TYPE_NFIELDS (type) > 0 - || (TYPE_CPLUS_SPECIFIC (type) && TYPE_NFN_FIELDS (type) > 0)) + || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0)) { struct type **first_dont_print = (struct type **) obstack_base (&dont_print_type_obstack); @@ -2591,12 +2773,6 @@ recursive_dump_type (struct type *type, int spaces) case TYPE_CODE_TYPEDEF: printf_filtered ("(TYPE_CODE_TYPEDEF)"); break; - case TYPE_CODE_TEMPLATE: - printf_filtered ("(TYPE_CODE_TEMPLATE)"); - break; - case TYPE_CODE_TEMPLATE_ARG: - printf_filtered ("(TYPE_CODE_TEMPLATE_ARG)"); - break; case TYPE_CODE_NAMESPACE: printf_filtered ("(TYPE_CODE_NAMESPACE)"); break; @@ -2735,6 +2911,14 @@ recursive_dump_type (struct type *type, int spaces) recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4); } } + if (TYPE_CODE (type) == TYPE_CODE_RANGE) + { + printfi_filtered (spaces, "low %s%s high %s%s\n", + plongest (TYPE_LOW_BOUND (type)), + TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "", + plongest (TYPE_HIGH_BOUND (type)), + TYPE_HIGH_BOUND_UNDEFINED (type) ? " (undefined)" : ""); + } printfi_filtered (spaces, "vptr_basetype "); gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout); puts_filtered ("\n"); @@ -2744,55 +2928,55 @@ recursive_dump_type (struct type *type, int spaces) } printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type)); - switch (TYPE_CODE (type)) - { - case TYPE_CODE_STRUCT: - printfi_filtered (spaces, "cplus_stuff "); - gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), - gdb_stdout); - puts_filtered ("\n"); - print_cplus_stuff (type, spaces); - break; - - case TYPE_CODE_FLT: - printfi_filtered (spaces, "floatformat "); - if (TYPE_FLOATFORMAT (type) == NULL) - puts_filtered ("(null)"); - else - { - puts_filtered ("{ "); - if (TYPE_FLOATFORMAT (type)[0] == NULL - || TYPE_FLOATFORMAT (type)[0]->name == NULL) - puts_filtered ("(null)"); - else - puts_filtered (TYPE_FLOATFORMAT (type)[0]->name); - puts_filtered (", "); - if (TYPE_FLOATFORMAT (type)[1] == NULL - || TYPE_FLOATFORMAT (type)[1]->name == NULL) - puts_filtered ("(null)"); - else - puts_filtered (TYPE_FLOATFORMAT (type)[1]->name); + switch (TYPE_SPECIFIC_FIELD (type)) + { + case TYPE_SPECIFIC_CPLUS_STUFF: + printfi_filtered (spaces, "cplus_stuff "); + gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), + gdb_stdout); + puts_filtered ("\n"); + print_cplus_stuff (type, spaces); + break; - puts_filtered (" }"); - } - puts_filtered ("\n"); - break; + case TYPE_SPECIFIC_GNAT_STUFF: + printfi_filtered (spaces, "gnat_stuff "); + gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout); + puts_filtered ("\n"); + print_gnat_stuff (type, spaces); + break; - default: - /* We have to pick one of the union types to be able print and - test the value. Pick cplus_struct_type, even though we know - it isn't any particular one. */ - printfi_filtered (spaces, "type_specific "); - gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout); - if (TYPE_CPLUS_SPECIFIC (type) != NULL) - { - printf_filtered (_(" (unknown data form)")); - } - printf_filtered ("\n"); - break; + case TYPE_SPECIFIC_FLOATFORMAT: + printfi_filtered (spaces, "floatformat "); + if (TYPE_FLOATFORMAT (type) == NULL) + puts_filtered ("(null)"); + else + { + puts_filtered ("{ "); + if (TYPE_FLOATFORMAT (type)[0] == NULL + || TYPE_FLOATFORMAT (type)[0]->name == NULL) + puts_filtered ("(null)"); + else + puts_filtered (TYPE_FLOATFORMAT (type)[0]->name); + + puts_filtered (", "); + if (TYPE_FLOATFORMAT (type)[1] == NULL + || TYPE_FLOATFORMAT (type)[1]->name == NULL) + puts_filtered ("(null)"); + else + puts_filtered (TYPE_FLOATFORMAT (type)[1]->name); + + puts_filtered (" }"); + } + puts_filtered ("\n"); + break; + case TYPE_SPECIFIC_CALLING_CONVENTION: + printfi_filtered (spaces, "calling_convention %d\n", + TYPE_CALLING_CONVENTION (type)); + break; } + if (spaces == 0) obstack_free (&dont_print_type_obstack, NULL); } @@ -2809,6 +2993,7 @@ static hashval_t type_pair_hash (const void *item) { const struct type_pair *pair = item; + return htab_hash_pointer (pair->old); } @@ -2816,6 +3001,7 @@ static int type_pair_eq (const void *item_lhs, const void *item_rhs) { const struct type_pair *lhs = item_lhs, *rhs = item_rhs; + return lhs->old == rhs->old; } @@ -2923,6 +3109,13 @@ copy_type_recursive (struct objfile *objfile, } } + /* For range types, copy the bounds information. */ + if (TYPE_CODE (type) == TYPE_CODE_RANGE) + { + TYPE_RANGE_DATA (new_type) = xmalloc (sizeof (struct range_bounds)); + *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type); + } + /* Copy pointers to other types. */ if (TYPE_TARGET_TYPE (type)) TYPE_TARGET_TYPE (new_type) = @@ -2944,7 +3137,6 @@ copy_type_recursive (struct objfile *objfile, TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type); else if (TYPE_CODE (type) == TYPE_CODE_STRUCT || TYPE_CODE (type) == TYPE_CODE_UNION - || TYPE_CODE (type) == TYPE_CODE_TEMPLATE || TYPE_CODE (type) == TYPE_CODE_NAMESPACE) INIT_CPLUS_SPECIFIC (new_type); @@ -3074,6 +3266,7 @@ arch_complex_type (struct gdbarch *gdbarch, char *name, struct type *target_type) { struct type *t; + t = arch_type (gdbarch, TYPE_CODE_COMPLEX, 2 * TYPE_LENGTH (target_type), name); TYPE_TARGET_TYPE (t) = target_type; @@ -3081,7 +3274,7 @@ arch_complex_type (struct gdbarch *gdbarch, } /* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH. - NAME is the type name. LENGTH is the number of flag bits. */ + NAME is the type name. LENGTH is the size of the flag word in bytes. */ struct type * arch_flags_type (struct gdbarch *gdbarch, char *name, int length) { @@ -3123,6 +3316,7 @@ struct type * arch_composite_type (struct gdbarch *gdbarch, char *name, enum type_code code) { struct type *t; + gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION); t = arch_type (gdbarch, code, 0, NULL); TYPE_TAG_NAME (t) = name; @@ -3131,12 +3325,14 @@ arch_composite_type (struct gdbarch *gdbarch, char *name, enum type_code code) } /* Add new field with name NAME and type FIELD to composite type T. - ALIGNMENT (if non-zero) specifies the minimum field alignment. */ -void -append_composite_type_field_aligned (struct type *t, char *name, - struct type *field, int alignment) + Do not set the field's position or adjust the type's length; + the caller should do so. Return the new field. */ +struct field * +append_composite_type_field_raw (struct type *t, char *name, + struct type *field) { struct field *f; + TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1; TYPE_FIELDS (t) = xrealloc (TYPE_FIELDS (t), sizeof (struct field) * TYPE_NFIELDS (t)); @@ -3144,6 +3340,17 @@ append_composite_type_field_aligned (struct type *t, char *name, memset (f, 0, sizeof f[0]); FIELD_TYPE (f[0]) = field; FIELD_NAME (f[0]) = name; + return f; +} + +/* Add new field with name NAME and type FIELD to composite type T. + ALIGNMENT (if non-zero) specifies the minimum field alignment. */ +void +append_composite_type_field_aligned (struct type *t, char *name, + struct type *field, int alignment) +{ + struct field *f = append_composite_type_field_raw (t, name, field); + if (TYPE_CODE (t) == TYPE_CODE_UNION) { if (TYPE_LENGTH (t) < TYPE_LENGTH (field)) @@ -3161,6 +3368,7 @@ append_composite_type_field_aligned (struct type *t, char *name, if (alignment) { int left = FIELD_BITPOS (f[0]) % (alignment * TARGET_CHAR_BIT); + if (left) { FIELD_BITPOS (f[0]) += left; @@ -3291,6 +3499,13 @@ gdbtypes_post_init (struct gdbarch *gdbarch) TYPE_NOTTEXT (builtin_type->builtin_int8) = 1; TYPE_NOTTEXT (builtin_type->builtin_uint8) = 1; + /* Wide character types. */ + builtin_type->builtin_char16 + = arch_integer_type (gdbarch, 16, 0, "char16_t"); + builtin_type->builtin_char32 + = arch_integer_type (gdbarch, 32, 0, "char32_t"); + + /* Default data/code pointer types. */ builtin_type->builtin_data_ptr = lookup_pointer_type (builtin_type->builtin_void); diff --git a/contrib/gdb-7/gdb/gdbtypes.h b/contrib/gdb-7/gdb/gdbtypes.h index be6ed55236..085270e21d 100644 --- a/contrib/gdb-7/gdb/gdbtypes.h +++ b/contrib/gdb-7/gdb/gdbtypes.h @@ -1,7 +1,8 @@ /* Internal type definitions for GDB. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Cygnus Support, using pieces from other GDB modules. @@ -130,13 +131,13 @@ enum type_code TYPE_CODE_COMPLEX, /* Complex float */ TYPE_CODE_TYPEDEF, - TYPE_CODE_TEMPLATE, /* C++ template */ - TYPE_CODE_TEMPLATE_ARG, /* C++ template arg */ TYPE_CODE_NAMESPACE, /* C++ namespace. */ TYPE_CODE_DECFLOAT, /* Decimal floating point. */ + TYPE_CODE_MODULE, /* Fortran module. */ + /* Internal function type. */ TYPE_CODE_INTERNAL_FUNCTION }; @@ -278,6 +279,12 @@ enum type_instance_flag_value #define TYPE_OWNER(t) TYPE_MAIN_TYPE(t)->owner #define TYPE_OBJFILE(t) (TYPE_OBJFILE_OWNED(t)? TYPE_OWNER(t).objfile : NULL) +/* True if this type was declared using the "class" keyword. This is + only valid for C++ structure types, and only used for displaying + the type. If false, the structure was declared as a "struct". */ + +#define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class) + /* Constant type. If this is set, the corresponding type has a * const modifier. */ @@ -335,10 +342,29 @@ enum field_loc_kind { FIELD_LOC_KIND_BITPOS, /* bitpos */ FIELD_LOC_KIND_PHYSADDR, /* physaddr */ - FIELD_LOC_KIND_PHYSNAME, /* physname */ - FIELD_LOC_KIND_DWARF_BLOCK /* dwarf_block */ + FIELD_LOC_KIND_PHYSNAME /* physname */ }; +/* A discriminant to determine which field in the main_type.type_specific + union is being used, if any. + + For types such as TYPE_CODE_FLT or TYPE_CODE_FUNC, the use of this + discriminant is really redundant, as we know from the type code + which field is going to be used. As such, it would be possible to + reduce the size of this enum in order to save a bit or two for + other fields of struct main_type. But, since we still have extra + room , and for the sake of clarity and consistency, we treat all fields + of the union the same way. */ + +enum type_specific_kind +{ + TYPE_SPECIFIC_NONE, + TYPE_SPECIFIC_CPLUS_STUFF, + TYPE_SPECIFIC_GNAT_STUFF, + TYPE_SPECIFIC_FLOATFORMAT, + TYPE_SPECIFIC_CALLING_CONVENTION +}; + /* This structure is space-critical. Its layout has been tweaked to reduce the space used. */ @@ -365,6 +391,13 @@ struct main_type unsigned int flag_nottext : 1; unsigned int flag_fixed_instance : 1; unsigned int flag_objfile_owned : 1; + /* True if this type was declared with "class" rather than + "struct". */ + unsigned int flag_declared_class : 1; + + /* A discriminant telling us which field of the type_specific union + is being used for this type, if any. */ + ENUM_BITFIELD(type_specific_kind) type_specific_field : 3; /* Number of fields described for this type. This field appears at this location because it packs nicely here. */ @@ -427,6 +460,9 @@ struct main_type For a function or method type, describes the type of the return value. For a range type, describes the type of the full range. For a complex type, describes the type of each coordinate. + For a special record or union type encoding a dynamic-sized type + in GNAT, a memoized pointer to a corresponding static version of + the type. Unused otherwise. */ struct type *target_type; @@ -447,61 +483,81 @@ struct main_type because we can allocate the space for a type before we know what to put in it. */ - struct field + union { - union field_location + struct field { - /* Position of this field, counting in bits from start of - containing structure. - For gdbarch_bits_big_endian=1 targets, it is the bit offset to the MSB. - For gdbarch_bits_big_endian=0 targets, it is the bit offset to the LSB. - For a range bound or enum value, this is the value itself. */ + union field_location + { + /* Position of this field, counting in bits from start of + containing structure. + For gdbarch_bits_big_endian=1 targets, it is the bit offset to the MSB. + For gdbarch_bits_big_endian=0 targets, it is the bit offset to the LSB. + For a range bound or enum value, this is the value itself. */ + + int bitpos; + + /* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr + is the location (in the target) of the static field. + Otherwise, physname is the mangled label of the static field. */ - int bitpos; + CORE_ADDR physaddr; + char *physname; + } + loc; + + /* For a function or member type, this is 1 if the argument is marked + artificial. Artificial arguments should not be shown to the + user. For TYPE_CODE_RANGE it is set if the specific bound is not + defined. */ + unsigned int artificial : 1; + + /* Discriminant for union field_location. */ + ENUM_BITFIELD(field_loc_kind) loc_kind : 2; - /* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr - is the location (in the target) of the static field. - Otherwise, physname is the mangled label of the static field. */ + /* Size of this field, in bits, or zero if not packed. + If non-zero in an array type, indicates the element size in + bits (used only in Ada at the moment). + For an unpacked field, the field's type's length + says how many bytes the field occupies. */ - CORE_ADDR physaddr; - char *physname; + unsigned int bitsize : 29; - /* The field location can be computed by evaluating the following DWARF - block. This can be used in Fortran variable-length arrays, for - instance. */ + /* In a struct or union type, type of this field. + In a function or member type, type of this argument. + In an array type, the domain-type of the array. */ - struct dwarf2_locexpr_baton *dwarf_block; - } - loc; + struct type *type; - /* For a function or member type, this is 1 if the argument is marked - artificial. Artificial arguments should not be shown to the - user. For TYPE_CODE_RANGE it is set if the specific bound is not - defined. */ - unsigned int artificial : 1; + /* Name of field, value or argument. + NULL for range bounds, array domains, and member function + arguments. */ - /* Discriminant for union field_location. */ - ENUM_BITFIELD(field_loc_kind) loc_kind : 2; + char *name; + } *fields; - /* Size of this field, in bits, or zero if not packed. - For an unpacked field, the field's type's length - says how many bytes the field occupies. */ + /* Union member used for range types. */ - unsigned int bitsize : 29; + struct range_bounds + { + /* Low bound of range. */ + + LONGEST low; - /* In a struct or union type, type of this field. - In a function or member type, type of this argument. - In an array type, the domain-type of the array. */ + /* High bound of range. */ - struct type *type; + LONGEST high; - /* Name of field, value or argument. - NULL for range bounds, array domains, and member function - arguments. */ + /* Flags indicating whether the values of low and high are + valid. When true, the respective range value is + undefined. Currently used only for FORTRAN arrays. */ + + char low_undefined; + char high_undefined; - char *name; + } *bounds; - } *fields; + } flds_bnds; /* For types with virtual functions (TYPE_CODE_STRUCT), VPTR_BASETYPE is the base class which defined the virtual function table pointer. @@ -527,6 +583,10 @@ struct main_type struct cplus_struct_type *cplus_stuff; + /* GNAT_STUFF is for types for which the GNAT Ada compiler + provides additional information. */ + struct gnat_aux_type *gnat_stuff; + /* FLOATFORMAT is for TYPE_CODE_FLT. It is a pointer to two floatformat objects that describe the floating-point value that resides within the type. The first is for big endian @@ -621,19 +681,12 @@ struct cplus_struct_type short nfn_fields_total; - /* The "declared_type" field contains a code saying how the - user really declared this type, e.g., "class s", "union s", - "struct s". - The 3 above things come out from the C++ compiler looking like classes, - but we keep track of the real declaration so we can give - the correct information on "ptype". (Note: TEMPLATE may not - belong in this list...) */ - -#define DECLARED_TYPE_CLASS 0 -#define DECLARED_TYPE_UNION 1 -#define DECLARED_TYPE_STRUCT 2 -#define DECLARED_TYPE_TEMPLATE 3 - short declared_type; /* One of the above codes */ + /* One if this struct is a dynamic class, as defined by the + Itanium C++ ABI: if it requires a virtual table pointer, + because it or any of its base classes have one or more virtual + member functions or virtual base classes. Minus one if not + dynamic. Zero if not yet computed. */ + int is_dynamic : 2; /* For derived classes, the number of base classes is given by n_baseclasses and virtual_field_bits is a bit vector containing one bit per base class. @@ -751,21 +804,6 @@ struct cplus_struct_type } *fn_fieldlists; - /* If this "struct type" describes a template, then it - * has arguments. "template_args" points to an array of - * template arg descriptors, of length "ntemplate_args". - * The only real information in each of these template arg descriptors - * is a name. "type" will typically just point to a "struct type" with - * the placeholder TYPE_CODE_TEMPLATE_ARG type. - */ - short ntemplate_args; - struct template_arg - { - char *name; - struct type *type; - } - *template_args; - /* Pointer to information about enclosing scope, if this is a * local type. If it is not a local type, this is NULL */ @@ -775,6 +813,19 @@ struct cplus_struct_type int line; } *localtype_ptr; + + /* typedefs defined inside this class. TYPEDEF_FIELD points to an array of + TYPEDEF_FIELD_COUNT elements. */ + struct typedef_field + { + /* Unqualified name to be prefixed by owning class qualified name. */ + const char *name; + + /* Type this typedef named NAME represents. */ + struct type *type; + } + *typedef_field; + unsigned typedef_field_count; }; /* Struct used in computing virtual base list */ @@ -791,6 +842,15 @@ struct badness_vector int *rank; }; +/* GNAT Ada-specific information for various Ada types. */ +struct gnat_aux_type + { + /* Parallel type used to encode information about dynamic types + used in Ada (such as variant records, variable-size array, + etc). */ + struct type* descriptive_type; + }; + /* The default value of TYPE_CPLUS_SPECIFIC(T) points to the this shared static structure. */ @@ -799,10 +859,27 @@ extern const struct cplus_struct_type cplus_struct_default; extern void allocate_cplus_struct_type (struct type *); #define INIT_CPLUS_SPECIFIC(type) \ - (TYPE_CPLUS_SPECIFIC(type)=(struct cplus_struct_type*)&cplus_struct_default) + (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF, \ + TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type*) &cplus_struct_default) + #define ALLOCATE_CPLUS_STRUCT_TYPE(type) allocate_cplus_struct_type (type) + #define HAVE_CPLUS_STRUCT(type) \ - (TYPE_CPLUS_SPECIFIC(type) != &cplus_struct_default) + (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_CPLUS_STUFF \ + && TYPE_RAW_CPLUS_SPECIFIC (type) != &cplus_struct_default) + +extern const struct gnat_aux_type gnat_aux_default; + +extern void allocate_gnat_aux_type (struct type *); + +#define INIT_GNAT_SPECIFIC(type) \ + (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF, \ + TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *) &gnat_aux_default) +#define ALLOCATE_GNAT_AUX_TYPE(type) allocate_gnat_aux_type (type) +/* A macro that returns non-zero if the type-specific data should be + read as "gnat-stuff". */ +#define HAVE_GNAT_AUX_INFO(type) \ + (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_GNAT_STUFF) #define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type @@ -821,19 +898,23 @@ extern void allocate_cplus_struct_type (struct type *); type, you need to do TYPE_CODE (check_type (this_type)). */ #define TYPE_CODE(thistype) TYPE_MAIN_TYPE(thistype)->code #define TYPE_NFIELDS(thistype) TYPE_MAIN_TYPE(thistype)->nfields -#define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->fields -#define TYPE_TEMPLATE_ARGS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->template_args +#define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields #define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0) -#define TYPE_LOW_BOUND(range_type) TYPE_FIELD_BITPOS (range_type, 0) -#define TYPE_HIGH_BOUND(range_type) TYPE_FIELD_BITPOS (range_type, 1) +#define TYPE_RANGE_DATA(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.bounds +#define TYPE_LOW_BOUND(range_type) TYPE_RANGE_DATA(range_type)->low +#define TYPE_HIGH_BOUND(range_type) TYPE_RANGE_DATA(range_type)->high +#define TYPE_LOW_BOUND_UNDEFINED(range_type) \ + TYPE_RANGE_DATA(range_type)->low_undefined +#define TYPE_HIGH_BOUND_UNDEFINED(range_type) \ + TYPE_RANGE_DATA(range_type)->high_undefined /* Moto-specific stuff for FORTRAN arrays */ #define TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED(arraytype) \ - (TYPE_FIELD_ARTIFICIAL(TYPE_INDEX_TYPE((arraytype)),1)) + TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) #define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \ - (TYPE_FIELD_ARTIFICIAL(TYPE_INDEX_TYPE((arraytype)),0)) + TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) #define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \ (TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype)))) @@ -849,18 +930,30 @@ extern void allocate_cplus_struct_type (struct type *); #define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields #define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields #define TYPE_NFN_FIELDS_TOTAL(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields_total -#define TYPE_NTEMPLATE_ARGS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->ntemplate_args -#define TYPE_DECLARED_TYPE(thistype) TYPE_CPLUS_SPECIFIC(thistype)->declared_type +#define TYPE_SPECIFIC_FIELD(thistype) \ + TYPE_MAIN_TYPE(thistype)->type_specific_field #define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific -#define TYPE_CPLUS_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff +/* We need this tap-dance with the TYPE_RAW_SPECIFIC because of the case + where we're trying to print an Ada array using the C language. + In that case, there is no "cplus_stuff", but the C language assumes + that there is. What we do, in that case, is pretend that there is + an implicit one which is the default cplus stuff. */ +#define TYPE_CPLUS_SPECIFIC(thistype) \ + (!HAVE_CPLUS_STRUCT(thistype) \ + ? (struct cplus_struct_type*)&cplus_struct_default \ + : TYPE_RAW_CPLUS_SPECIFIC(thistype)) +#define TYPE_RAW_CPLUS_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff #define TYPE_FLOATFORMAT(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.floatformat +#define TYPE_GNAT_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.gnat_stuff +#define TYPE_DESCRIPTIVE_TYPE(thistype) TYPE_GNAT_SPECIFIC(thistype)->descriptive_type #define TYPE_CALLING_CONVENTION(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.calling_convention -#define TYPE_BASECLASS(thistype,index) TYPE_MAIN_TYPE(thistype)->fields[index].type +#define TYPE_BASECLASS(thistype,index) TYPE_FIELD_TYPE(thistype, index) #define TYPE_N_BASECLASSES(thistype) TYPE_CPLUS_SPECIFIC(thistype)->n_baseclasses -#define TYPE_BASECLASS_NAME(thistype,index) TYPE_MAIN_TYPE(thistype)->fields[index].name +#define TYPE_BASECLASS_NAME(thistype,index) TYPE_FIELD_NAME(thistype, index) #define TYPE_BASECLASS_BITPOS(thistype,index) TYPE_FIELD_BITPOS(thistype,index) #define BASETYPE_VIA_PUBLIC(thistype, index) \ ((!TYPE_FIELD_PRIVATE(thistype, index)) && (!TYPE_FIELD_PROTECTED(thistype, index))) +#define TYPE_CPLUS_DYNAMIC(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_dynamic #define BASETYPE_VIA_VIRTUAL(thistype, index) \ (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \ @@ -872,7 +965,6 @@ extern void allocate_cplus_struct_type (struct type *); #define FIELD_BITPOS(thisfld) ((thisfld).loc.bitpos) #define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname) #define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr) -#define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block) #define SET_FIELD_BITPOS(thisfld, bitpos) \ (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS, \ FIELD_BITPOS (thisfld) = (bitpos)) @@ -882,24 +974,19 @@ extern void allocate_cplus_struct_type (struct type *); #define SET_FIELD_PHYSADDR(thisfld, addr) \ (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \ FIELD_STATIC_PHYSADDR (thisfld) = (addr)) -#define SET_FIELD_DWARF_BLOCK(thisfld, addr) \ - (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_DWARF_BLOCK, \ - FIELD_DWARF_BLOCK (thisfld) = (addr)) #define FIELD_ARTIFICIAL(thisfld) ((thisfld).artificial) #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize) -#define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->fields[n] +#define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields[n] #define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n)) #define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n)) #define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n)) -#define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n)) #define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n)) #define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0) -#define TYPE_TEMPLATE_ARG(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->template_args[n] #define TYPE_FIELD_PRIVATE_BITS(thistype) \ TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits @@ -961,12 +1048,29 @@ extern void allocate_cplus_struct_type (struct type *); #define TYPE_LOCALTYPE_FILE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->file) #define TYPE_LOCALTYPE_LINE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->line) +#define TYPE_TYPEDEF_FIELD_ARRAY(thistype) \ + TYPE_CPLUS_SPECIFIC (thistype)->typedef_field +#define TYPE_TYPEDEF_FIELD(thistype, n) \ + TYPE_CPLUS_SPECIFIC (thistype)->typedef_field[n] +#define TYPE_TYPEDEF_FIELD_NAME(thistype, n) \ + TYPE_TYPEDEF_FIELD (thistype, n).name +#define TYPE_TYPEDEF_FIELD_TYPE(thistype, n) \ + TYPE_TYPEDEF_FIELD (thistype, n).type +#define TYPE_TYPEDEF_FIELD_COUNT(thistype) \ + TYPE_CPLUS_SPECIFIC (thistype)->typedef_field_count + #define TYPE_IS_OPAQUE(thistype) (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) || \ (TYPE_CODE (thistype) == TYPE_CODE_UNION)) && \ (TYPE_NFIELDS (thistype) == 0) && \ - (TYPE_CPLUS_SPECIFIC (thistype) && (TYPE_NFN_FIELDS (thistype) == 0)) && \ + (!HAVE_CPLUS_STRUCT (thistype) \ + || TYPE_NFN_FIELDS (thistype) == 0) && \ (TYPE_STUB (thistype) || !TYPE_STUB_SUPPORTED (thistype))) +/* A helper macro that returns the name of an error type. If the type + has a name, it is used; otherwise, a default is used. */ +#define TYPE_ERROR_NAME(type) \ + (TYPE_NAME (type) ? TYPE_NAME (type) : _("")) + struct builtin_type { /* Integral types. */ @@ -1017,6 +1121,9 @@ struct builtin_type struct type *builtin_int128; struct type *builtin_uint128; + /* Wide character types. */ + struct type *builtin_char16; + struct type *builtin_char32; /* Pointer types. */ @@ -1084,6 +1191,7 @@ extern const struct objfile_type *objfile_type (struct objfile *objfile); /* Explicit floating-point formats. See "floatformat.h". */ +extern const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN]; extern const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN]; extern const struct floatformat *floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]; extern const struct floatformat *floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN]; @@ -1097,16 +1205,6 @@ extern const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN]; extern const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN]; -/* Maximum and minimum values of built-in types */ - -#define MAX_OF_TYPE(t) \ - (TYPE_UNSIGNED(t) ? UMAX_OF_SIZE(TYPE_LENGTH(t)) \ - : MAX_OF_SIZE(TYPE_LENGTH(t))) - -#define MIN_OF_TYPE(t) \ - (TYPE_UNSIGNED(t) ? UMIN_OF_SIZE(TYPE_LENGTH(t)) \ - : MIN_OF_SIZE(TYPE_LENGTH(t))) - /* Allocate space for storing data associated with a particular type. We ensure that the space is allocated using the same mechanism that was used to allocate the space for the type structure itself. I.E. @@ -1156,7 +1254,7 @@ extern struct type *arch_complex_type (struct gdbarch *, char *, /* Helper functions to construct a struct or record type. An initially empty type is created using arch_composite_type(). - Fields are then added using append_struct_type_field(). A union + Fields are then added using append_composite_type_field*(). A union type has its size set to the largest field. A struct type has each field packed against the previous. */ @@ -1168,6 +1266,8 @@ extern void append_composite_type_field_aligned (struct type *t, char *name, struct type *field, int alignment); +struct field *append_composite_type_field_raw (struct type *t, char *name, + struct type *field); /* Helper functions to construct a bit flags type. An initially empty type is created using arch_flag_type(). Flags are then added using @@ -1205,6 +1305,8 @@ extern void smash_to_method_type (struct type *type, struct type *domain, extern void smash_to_memberptr_type (struct type *, struct type *, struct type *); +extern void smash_to_methodptr_type (struct type *, struct type *); + extern struct type *allocate_stub_method (struct type *); extern char *type_name_no_tag (const struct type *); @@ -1219,8 +1321,8 @@ extern struct type *make_function_type (struct type *, struct type **); extern struct type *lookup_function_type (struct type *); -extern struct type *create_range_type (struct type *, struct type *, int, - int); +extern struct type *create_range_type (struct type *, struct type *, LONGEST, + LONGEST); extern struct type *create_array_type (struct type *, struct type *, struct type *); @@ -1260,8 +1362,14 @@ extern int get_vptr_fieldno (struct type *, struct type **); extern int get_discrete_bounds (struct type *, LONGEST *, LONGEST *); +extern int class_types_same_p (const struct type *, const struct type *); + extern int is_ancestor (struct type *, struct type *); +extern int is_public_ancestor (struct type *, struct type *); + +extern int is_unique_ancestor (struct type *, struct value *); + /* Overload resolution */ #define LENGTH_MATCH(bv) ((bv)->rank[0]) diff --git a/contrib/gdb-7/gdb/gnu-v2-abi.c b/contrib/gdb-7/gdb/gnu-v2-abi.c index e577e2e550..67bf097569 100644 --- a/contrib/gdb-7/gdb/gnu-v2-abi.c +++ b/contrib/gdb-7/gdb/gnu-v2-abi.c @@ -1,6 +1,6 @@ /* Abstraction of GNU v2 abi. - Copyright (C) 2001, 2002, 2003, 2005, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Daniel Berlin @@ -28,7 +28,6 @@ #include "demangle.h" #include "cp-abi.h" #include "cp-support.h" -#include "gnu-v2-abi.h" #include @@ -114,6 +113,7 @@ gnuv2_virtual_fn_field (struct value **arg1p, struct fn_field * f, int j, if (TYPE_TARGET_TYPE (context) != type1) { struct value *tmp = value_cast (context, value_addr (arg1)); + arg1 = value_ind (tmp); type1 = check_typedef (value_type (arg1)); } @@ -186,13 +186,8 @@ gnuv2_value_rtti_type (struct value *v, int *full, int *top, int *using_enc) { struct type *known_type; struct type *rtti_type; - CORE_ADDR coreptr; - struct value *vp; - long top_offset = 0; - char rtti_type_name[256]; CORE_ADDR vtbl; struct minimal_symbol *minsym; - struct symbol *sym; char *demangled_name, *p; struct type *btype; struct type *known_type_vptr_basetype; @@ -346,7 +341,7 @@ vb_match (struct type *type, int index, struct type *basetype) -1 is returned on error. */ -int +static int gnuv2_baseclass_offset (struct type *type, int index, const bfd_byte *valaddr, CORE_ADDR address) { @@ -365,8 +360,8 @@ gnuv2_baseclass_offset (struct type *type, int index, if (vb_match (type, i, basetype)) { CORE_ADDR addr - = unpack_pointer (TYPE_FIELD_TYPE (type, i), - valaddr + (TYPE_FIELD_BITPOS (type, i) / 8)); + = unpack_pointer (TYPE_FIELD_TYPE (type, i), + valaddr + (TYPE_FIELD_BITPOS (type, i) / 8)); return addr - (LONGEST) address; } @@ -375,7 +370,8 @@ gnuv2_baseclass_offset (struct type *type, int index, for (i = index + 1; i < n_baseclasses; i++) { int boffset = - baseclass_offset (type, i, valaddr, address); + baseclass_offset (type, i, valaddr, address); + if (boffset) return boffset; } diff --git a/contrib/gdb-7/gdb/gnu-v3-abi.c b/contrib/gdb-7/gdb/gnu-v3-abi.c index 0f9d44efc0..571b52a888 100644 --- a/contrib/gdb-7/gdb/gnu-v3-abi.c +++ b/contrib/gdb-7/gdb/gnu-v3-abi.c @@ -1,7 +1,7 @@ /* Abstraction of GNU v3 abi. Contributed by Jim Blandy - Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -26,6 +26,7 @@ #include "demangle.h" #include "objfiles.h" #include "valprint.h" +#include "c-lang.h" #include "gdb_assert.h" #include "gdb_string.h" @@ -190,23 +191,96 @@ vtable_address_point_offset (struct gdbarch *gdbarch) } +/* Determine whether structure TYPE is a dynamic class. Cache the + result. */ + +static int +gnuv3_dynamic_class (struct type *type) +{ + int fieldnum, fieldelem; + + if (TYPE_CPLUS_DYNAMIC (type)) + return TYPE_CPLUS_DYNAMIC (type) == 1; + + ALLOCATE_CPLUS_STRUCT_TYPE (type); + + for (fieldnum = 0; fieldnum < TYPE_N_BASECLASSES (type); fieldnum++) + if (BASETYPE_VIA_VIRTUAL (type, fieldnum) + || gnuv3_dynamic_class (TYPE_FIELD_TYPE (type, fieldnum))) + { + TYPE_CPLUS_DYNAMIC (type) = 1; + return 1; + } + + for (fieldnum = 0; fieldnum < TYPE_NFN_FIELDS (type); fieldnum++) + for (fieldelem = 0; fieldelem < TYPE_FN_FIELDLIST_LENGTH (type, fieldnum); + fieldelem++) + { + struct fn_field *f = TYPE_FN_FIELDLIST1 (type, fieldnum); + + if (TYPE_FN_FIELD_VIRTUAL_P (f, fieldelem)) + { + TYPE_CPLUS_DYNAMIC (type) = 1; + return 1; + } + } + + TYPE_CPLUS_DYNAMIC (type) = -1; + return 0; +} + +/* Find the vtable for a value of CONTAINER_TYPE located at + CONTAINER_ADDR. Return a value of the correct vtable type for this + architecture, or NULL if CONTAINER does not have a vtable. */ + +static struct value * +gnuv3_get_vtable (struct gdbarch *gdbarch, + struct type *container_type, CORE_ADDR container_addr) +{ + struct type *vtable_type = gdbarch_data (gdbarch, + vtable_type_gdbarch_data); + struct type *vtable_pointer_type; + struct value *vtable_pointer; + CORE_ADDR vtable_address; + + /* If this type does not have a virtual table, don't read the first + field. */ + if (!gnuv3_dynamic_class (check_typedef (container_type))) + return NULL; + + /* We do not consult the debug information to find the virtual table. + The ABI specifies that it is always at offset zero in any class, + and debug information may not represent it. + + We avoid using value_contents on principle, because the object might + be large. */ + + /* Find the type "pointer to virtual table". */ + vtable_pointer_type = lookup_pointer_type (vtable_type); + + /* Load it from the start of the class. */ + vtable_pointer = value_at (vtable_pointer_type, container_addr); + vtable_address = value_as_address (vtable_pointer); + + /* Correct it to point at the start of the virtual table, rather + than the address point. */ + return value_at_lazy (vtable_type, + vtable_address - vtable_address_point_offset (gdbarch)); +} + + static struct type * gnuv3_rtti_type (struct value *value, int *full_p, int *top_p, int *using_enc_p) { struct gdbarch *gdbarch; - struct type *vtable_type; struct type *values_type = check_typedef (value_type (value)); - CORE_ADDR vtable_address; struct value *vtable; struct minimal_symbol *vtable_symbol; const char *vtable_symbol_name; const char *class_name; struct type *run_time_type; - struct type *base_type; LONGEST offset_to_top; - struct type *values_type_vptr_basetype; - int values_type_vptr_fieldno; /* We only have RTTI for class objects. */ if (TYPE_CODE (values_type) != TYPE_CODE_CLASS) @@ -214,33 +288,15 @@ gnuv3_rtti_type (struct value *value, /* Determine architecture. */ gdbarch = get_type_arch (values_type); - vtable_type = gdbarch_data (gdbarch, vtable_type_gdbarch_data); - - /* If we can't find the virtual table pointer for values_type, we - can't find the RTTI. */ - values_type_vptr_fieldno = get_vptr_fieldno (values_type, - &values_type_vptr_basetype); - if (values_type_vptr_fieldno == -1) - return NULL; if (using_enc_p) *using_enc_p = 0; - /* Fetch VALUE's virtual table pointer, and tweak it to point at - an instance of our imaginary gdb_gnu_v3_abi_vtable structure. */ - base_type = check_typedef (values_type_vptr_basetype); - if (values_type != base_type) - { - value = value_cast (base_type, value); - if (using_enc_p) - *using_enc_p = 1; - } - vtable_address - = value_as_address (value_field (value, values_type_vptr_fieldno)); - vtable - = value_at_lazy (vtable_type, - vtable_address - vtable_address_point_offset (gdbarch)); - + vtable = gnuv3_get_vtable (gdbarch, value_type (value), + value_as_address (value_addr (value))); + if (vtable == NULL) + return NULL; + /* Find the linker symbol for this vtable. */ vtable_symbol = lookup_minimal_symbol_by_pc (value_address (vtable) @@ -282,45 +338,9 @@ gnuv3_rtti_type (struct value *value, >= TYPE_LENGTH (run_time_type))); if (top_p) *top_p = - offset_to_top; - return run_time_type; } -/* Find the vtable for CONTAINER and return a value of the correct - vtable type for this architecture. */ - -static struct value * -gnuv3_get_vtable (struct gdbarch *gdbarch, struct value *container) -{ - struct type *vtable_type = gdbarch_data (gdbarch, vtable_type_gdbarch_data); - struct type *vtable_pointer_type; - struct value *vtable_pointer; - CORE_ADDR vtable_pointer_address, vtable_address; - - /* We do not consult the debug information to find the virtual table. - The ABI specifies that it is always at offset zero in any class, - and debug information may not represent it. We won't issue an - error if there's a class with virtual functions but no virtual table - pointer, but something's already gone seriously wrong if that - happens. - - We avoid using value_contents on principle, because the object might - be large. */ - - /* Find the type "pointer to virtual table". */ - vtable_pointer_type = lookup_pointer_type (vtable_type); - - /* Load it from the start of the class. */ - vtable_pointer_address = value_as_address (value_addr (container)); - vtable_pointer = value_at (vtable_pointer_type, vtable_pointer_address); - vtable_address = value_as_address (vtable_pointer); - - /* Correct it to point at the start of the virtual table, rather - than the address point. */ - return value_at_lazy (vtable_type, - vtable_address - vtable_address_point_offset (gdbarch)); -} - /* Return a function pointer for CONTAINER's VTABLE_INDEX'th virtual function, of type FNTYPE. */ @@ -328,8 +348,12 @@ static struct value * gnuv3_get_virtual_fn (struct gdbarch *gdbarch, struct value *container, struct type *fntype, int vtable_index) { - struct value *vtable = gnuv3_get_vtable (gdbarch, container); - struct value *vfn; + struct value *vtable, *vfn; + + /* Every class with virtual functions must have a vtable. */ + vtable = gnuv3_get_vtable (gdbarch, value_type (container), + value_as_address (value_addr (container))); + gdb_assert (vtable != NULL); /* Fetch the appropriate function pointer from the vtable. */ vfn = value_subscript (value_field (vtable, vtable_field_virtual_functions), @@ -389,18 +413,13 @@ gnuv3_baseclass_offset (struct type *type, int index, const bfd_byte *valaddr, CORE_ADDR address) { struct gdbarch *gdbarch; - struct type *vtable_type; struct type *ptr_type; struct value *vtable; - struct type *vbasetype; struct value *vbase_array; - CORE_ADDR vtable_address; long int cur_base_offset, base_offset; - int vbasetype_vptr_fieldno; /* Determine architecture. */ gdbarch = get_type_arch (type); - vtable_type = gdbarch_data (gdbarch, vtable_type_gdbarch_data); ptr_type = builtin_type (gdbarch)->builtin_data_ptr; /* If it isn't a virtual base, this is easy. The offset is in the @@ -422,29 +441,8 @@ gnuv3_baseclass_offset (struct type *type, int index, const bfd_byte *valaddr, error (_("Misaligned vbase offset.")); cur_base_offset = cur_base_offset / ((int) TYPE_LENGTH (ptr_type)); - /* We're now looking for the cur_base_offset'th entry (negative index) - in the vcall_and_vbase_offsets array. We used to cast the object to - its TYPE_VPTR_BASETYPE, and reference the vtable as TYPE_VPTR_FIELDNO; - however, that cast can not be done without calling baseclass_offset again - if the TYPE_VPTR_BASETYPE is a virtual base class, as described in the - v3 C++ ABI Section 2.4.I.2.b. Fortunately the ABI guarantees that the - vtable pointer will be located at the beginning of the object, so we can - bypass the casting. Verify that the TYPE_VPTR_FIELDNO is in fact at the - start of whichever baseclass it resides in, as a sanity measure - iff - we have debugging information for that baseclass. */ - - vbasetype = check_typedef (TYPE_VPTR_BASETYPE (type)); - vbasetype_vptr_fieldno = get_vptr_fieldno (vbasetype, NULL); - - if (vbasetype_vptr_fieldno >= 0 - && TYPE_FIELD_BITPOS (vbasetype, vbasetype_vptr_fieldno) != 0) - error (_("Illegal vptr offset in class %s"), - TYPE_NAME (vbasetype) ? TYPE_NAME (vbasetype) : ""); - - vtable_address = value_as_address (value_at_lazy (ptr_type, address)); - vtable - = value_at_lazy (vtable_type, - vtable_address - vtable_address_point_offset (gdbarch)); + vtable = gnuv3_get_vtable (gdbarch, type, address); + gdb_assert (vtable != NULL); vbase_array = value_field (vtable, vtable_field_vcall_and_vbase_offsets); base_offset = value_as_long (value_subscript (vbase_array, cur_base_offset)); return base_offset; @@ -459,10 +457,8 @@ gnuv3_find_method_in (struct type *domain, CORE_ADDR voffset, LONGEST adjustment) { int i; - const char *physname; /* Search this class first. */ - physname = NULL; if (adjustment == 0) { int len; @@ -590,15 +586,25 @@ gnuv3_print_method_ptr (const gdb_byte *contents, { char *demangled_name = cplus_demangle (physname, DMGL_ANSI | DMGL_PARAMS); - if (demangled_name != NULL) + + fprintf_filtered (stream, "&virtual "); + if (demangled_name == NULL) + fputs_filtered (physname, stream); + else { - fprintf_filtered (stream, "&virtual "); fputs_filtered (demangled_name, stream); xfree (demangled_name); - return; } + return; } } + else if (ptr_value != 0) + { + /* Found a non-virtual function: print out the type. */ + fputs_filtered ("(", stream); + c_print_type (type, "", stream, -1, 0); + fputs_filtered (") ", stream); + } /* We didn't find it; print the raw data. */ if (vbit) @@ -623,6 +629,7 @@ gnuv3_method_ptr_size (struct type *type) { struct type *domain_type = check_typedef (TYPE_DOMAIN_TYPE (type)); struct gdbarch *gdbarch = get_type_arch (domain_type); + return 2 * TYPE_LENGTH (builtin_type (gdbarch)->builtin_data_ptr); } @@ -705,6 +712,7 @@ gnuv3_method_ptr_to_value (struct value **this_p, struct value *method_ptr) if (vbit) { LONGEST voffset; + voffset = ptr_value / TYPE_LENGTH (vtable_ptrdiff_type (gdbarch)); return gnuv3_get_virtual_fn (gdbarch, value_ind (*this_p), method_type, voffset); diff --git a/contrib/gdb-7/gdb/i386-nat.c b/contrib/gdb-7/gdb/i386-nat.c index 325b4df6ca..eaa3644238 100644 --- a/contrib/gdb-7/gdb/i386-nat.c +++ b/contrib/gdb-7/gdb/i386-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for the i386. - Copyright (C) 2001, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2001, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -137,8 +137,11 @@ struct i386_dr_low_type i386_dr_low; #define I386_DR_GET_RW_LEN(i) \ ((dr_control_mirror >> (DR_CONTROL_SHIFT + DR_CONTROL_SIZE * (i))) & 0x0f) +/* Mask that this I'th watchpoint has triggered. */ +#define I386_DR_WATCH_MASK(i) (1 << (i)) + /* Did the watchpoint whose address is in the I'th register break? */ -#define I386_DR_WATCH_HIT(i) (dr_status_mirror & (1 << (i))) +#define I386_DR_WATCH_HIT(i) (dr_status_mirror & I386_DR_WATCH_MASK (i)) /* A macro to loop over all debug registers. */ #define ALL_DEBUG_REGISTERS(i) for (i = 0; i < DR_NADDR; i++) @@ -265,7 +268,8 @@ i386_length_and_rw_bits (int len, enum target_hw_bp_type type) rw = DR_RW_WRITE; break; case hw_read: - /* The i386 doesn't support data-read watchpoints. */ + internal_error (__FILE__, __LINE__, + _("The i386 doesn't support data-read watchpoints.\n")); case hw_access: rw = DR_RW_READ; break; @@ -358,6 +362,10 @@ i386_insert_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits) i386_dr_low.set_addr (i, addr); i386_dr_low.set_control (dr_control_mirror); + /* Only a sanity check for leftover bits (set possibly only by inferior). */ + if (i386_dr_low.unset_status) + i386_dr_low.unset_status (I386_DR_WATCH_MASK (i)); + return 0; } @@ -476,10 +484,14 @@ Invalid value %d of operation in i386_handle_nonaligned_watchpoint.\n"), of the type TYPE. Return 0 on success, -1 on failure. */ static int -i386_insert_watchpoint (CORE_ADDR addr, int len, int type) +i386_insert_watchpoint (CORE_ADDR addr, int len, int type, + struct expression *cond) { int retval; + if (type == hw_read) + return 1; /* unsupported */ + if (((len != 1 && len !=2 && len !=4) && !(TARGET_HAS_DR_LEN_8 && len == 8)) || addr % len != 0) retval = i386_handle_nonaligned_watchpoint (WP_INSERT, addr, len, type); @@ -500,7 +512,8 @@ i386_insert_watchpoint (CORE_ADDR addr, int len, int type) address ADDR, whose length is LEN bytes, and for accesses of the type TYPE. Return 0 on success, -1 on failure. */ static int -i386_remove_watchpoint (CORE_ADDR addr, int len, int type) +i386_remove_watchpoint (CORE_ADDR addr, int len, int type, + struct expression *cond) { int retval; @@ -581,27 +594,6 @@ i386_stopped_by_watchpoint (void) return i386_stopped_data_address (¤t_target, &addr); } -/* Return non-zero if the inferior has some break/watchpoint that - triggered. */ - -static int -i386_stopped_by_hwbp (void) -{ - int i; - - dr_status_mirror = i386_dr_low.get_status (); - if (maint_show_dr) - i386_show_dr ("stopped_by_hwbp", 0, 0, hw_execute); - - ALL_DEBUG_REGISTERS(i) - { - if (I386_DR_WATCH_HIT (i)) - return 1; - } - - return 0; -} - /* Insert a hardware-assisted breakpoint at BP_TGT->placed_address. Return 0 on success, EBUSY on failure. */ static int diff --git a/contrib/gdb-7/gdb/i386-nat.h b/contrib/gdb-7/gdb/i386-nat.h index f49b9f60bf..7317e7dd8a 100644 --- a/contrib/gdb-7/gdb/i386-nat.h +++ b/contrib/gdb-7/gdb/i386-nat.h @@ -3,8 +3,7 @@ Low level functions to implement Oeprating System specific code to manipulate I386 debug registers. - Copyright (C) 2009 - Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -49,16 +48,19 @@ extern void i386_use_watchpoints (struct target_ops *); functions are: set_control -- set the debug control (DR7) - register to a given value + register to a given value for all LWPs set_addr -- put an address into one debug - register + register for all LWPs reset_addr -- reset the address stored in - one debug register + one debug register for all LWPs get_status -- return the value of the debug - status (DR6) register. + status (DR6) register for current LWP + + unset_status -- unset the specified bits of the debug + status (DR6) register for all LWPs Additionally, the native file should set the debug_register_length field to 4 or 8 depending on the number of bytes used for @@ -70,6 +72,7 @@ struct i386_dr_low_type void (*set_addr) (int, CORE_ADDR); void (*reset_addr) (int); unsigned long (*get_status) (void); + void (*unset_status) (unsigned long); int debug_register_length; }; diff --git a/contrib/gdb-7/gdb/i386-tdep.c b/contrib/gdb-7/gdb/i386-tdep.c index b79bcd29be..435b623151 100644 --- a/contrib/gdb-7/gdb/i386-tdep.c +++ b/contrib/gdb-7/gdb/i386-tdep.c @@ -1,8 +1,8 @@ /* Intel 386 target-dependent stuff. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -43,19 +43,26 @@ #include "target.h" #include "value.h" #include "dis-asm.h" +#include "disasm.h" +#include "remote.h" #include "gdb_assert.h" #include "gdb_string.h" #include "i386-tdep.h" #include "i387-tdep.h" +#include "i386-xstate.h" #include "record.h" #include +#include "features/i386/i386.c" +#include "features/i386/i386-avx.c" +#include "features/i386/i386-mmx.c" + /* Register names. */ -static char *i386_register_names[] = +static const char *i386_register_names[] = { "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", @@ -70,41 +77,135 @@ static char *i386_register_names[] = "mxcsr" }; -static const int i386_num_register_names = ARRAY_SIZE (i386_register_names); +static const char *i386_ymm_names[] = +{ + "ymm0", "ymm1", "ymm2", "ymm3", + "ymm4", "ymm5", "ymm6", "ymm7", +}; + +static const char *i386_ymmh_names[] = +{ + "ymm0h", "ymm1h", "ymm2h", "ymm3h", + "ymm4h", "ymm5h", "ymm6h", "ymm7h", +}; /* Register names for MMX pseudo-registers. */ -static char *i386_mmx_names[] = +static const char *i386_mmx_names[] = { "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7" }; -static const int i386_num_mmx_regs = ARRAY_SIZE (i386_mmx_names); +/* Register names for byte pseudo-registers. */ + +static const char *i386_byte_names[] = +{ + "al", "cl", "dl", "bl", + "ah", "ch", "dh", "bh" +}; + +/* Register names for word pseudo-registers. */ + +static const char *i386_word_names[] = +{ + "ax", "cx", "dx", "bx", + "", "bp", "si", "di" +}; + +/* MMX register? */ static int i386_mmx_regnum_p (struct gdbarch *gdbarch, int regnum) { - int mm0_regnum = gdbarch_tdep (gdbarch)->mm0_regnum; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int mm0_regnum = tdep->mm0_regnum; if (mm0_regnum < 0) return 0; - return (regnum >= mm0_regnum && regnum < mm0_regnum + i386_num_mmx_regs); + regnum -= mm0_regnum; + return regnum >= 0 && regnum < tdep->num_mmx_regs; +} + +/* Byte register? */ + +int +i386_byte_regnum_p (struct gdbarch *gdbarch, int regnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + regnum -= tdep->al_regnum; + return regnum >= 0 && regnum < tdep->num_byte_regs; +} + +/* Word register? */ + +int +i386_word_regnum_p (struct gdbarch *gdbarch, int regnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + regnum -= tdep->ax_regnum; + return regnum >= 0 && regnum < tdep->num_word_regs; +} + +/* Dword register? */ + +int +i386_dword_regnum_p (struct gdbarch *gdbarch, int regnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int eax_regnum = tdep->eax_regnum; + + if (eax_regnum < 0) + return 0; + + regnum -= eax_regnum; + return regnum >= 0 && regnum < tdep->num_dword_regs; +} + +int +i386_ymmh_regnum_p (struct gdbarch *gdbarch, int regnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int ymm0h_regnum = tdep->ymm0h_regnum; + + if (ymm0h_regnum < 0) + return 0; + + regnum -= ymm0h_regnum; + return regnum >= 0 && regnum < tdep->num_ymm_regs; +} + +/* AVX register? */ + +int +i386_ymm_regnum_p (struct gdbarch *gdbarch, int regnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int ymm0_regnum = tdep->ymm0_regnum; + + if (ymm0_regnum < 0) + return 0; + + regnum -= ymm0_regnum; + return regnum >= 0 && regnum < tdep->num_ymm_regs; } /* SSE register? */ -static int -i386_sse_regnum_p (struct gdbarch *gdbarch, int regnum) +int +i386_xmm_regnum_p (struct gdbarch *gdbarch, int regnum) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int num_xmm_regs = I387_NUM_XMM_REGS (tdep); - if (I387_NUM_XMM_REGS (tdep) == 0) + if (num_xmm_regs == 0) return 0; - return (I387_XMM0_REGNUM (tdep) <= regnum - && regnum < I387_MXCSR_REGNUM (tdep)); + regnum -= I387_XMM0_REGNUM (tdep); + return regnum >= 0 && regnum < num_xmm_regs; } static int @@ -144,18 +245,35 @@ i386_fpc_regnum_p (struct gdbarch *gdbarch, int regnum) && regnum < I387_XMM0_REGNUM (tdep)); } -/* Return the name of register REGNUM. */ +/* Return the name of register REGNUM, or the empty string if it is + an anonymous register. */ -const char * +static const char * i386_register_name (struct gdbarch *gdbarch, int regnum) { - if (i386_mmx_regnum_p (gdbarch, regnum)) - return i386_mmx_names[regnum - I387_MM0_REGNUM (gdbarch_tdep (gdbarch))]; + /* Hide the upper YMM registers. */ + if (i386_ymmh_regnum_p (gdbarch, regnum)) + return ""; - if (regnum >= 0 && regnum < i386_num_register_names) - return i386_register_names[regnum]; + return tdesc_register_name (gdbarch, regnum); +} - return NULL; +/* Return the name of register REGNUM. */ + +const char * +i386_pseudo_register_name (struct gdbarch *gdbarch, int regnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + if (i386_mmx_regnum_p (gdbarch, regnum)) + return i386_mmx_names[regnum - I387_MM0_REGNUM (tdep)]; + else if (i386_ymm_regnum_p (gdbarch, regnum)) + return i386_ymm_names[regnum - tdep->ymm0_regnum]; + else if (i386_byte_regnum_p (gdbarch, regnum)) + return i386_byte_names[regnum - tdep->al_regnum]; + else if (i386_word_regnum_p (gdbarch, regnum)) + return i386_word_names[regnum - tdep->ax_regnum]; + + internal_error (__FILE__, __LINE__, _("invalid regnum")); } /* Convert a dbx register number REG to the appropriate register @@ -187,7 +305,13 @@ i386_dbx_reg_to_regnum (struct gdbarch *gdbarch, int reg) else if (reg >= 21 && reg <= 28) { /* SSE registers. */ - return reg - 21 + I387_XMM0_REGNUM (tdep); + int ymm0_regnum = tdep->ymm0_regnum; + + if (ymm0_regnum >= 0 + && i386_xmm_regnum_p (gdbarch, reg)) + return reg - 21 + ymm0_regnum; + else + return reg - 21 + I387_XMM0_REGNUM (tdep); } else if (reg >= 29 && reg <= 36) { @@ -394,7 +518,7 @@ i386_call_p (const gdb_byte *insn) length in bytes. Otherwise, return zero. */ static int -i386_syscall_p (const gdb_byte *insn, ULONGEST *lengthp) +i386_syscall_p (const gdb_byte *insn, int *lengthp) { if (insn[0] == 0xcd) { @@ -405,6 +529,43 @@ i386_syscall_p (const gdb_byte *insn, ULONGEST *lengthp) return 0; } +/* Some kernels may run one past a syscall insn, so we have to cope. + Otherwise this is just simple_displaced_step_copy_insn. */ + +struct displaced_step_closure * +i386_displaced_step_copy_insn (struct gdbarch *gdbarch, + CORE_ADDR from, CORE_ADDR to, + struct regcache *regs) +{ + size_t len = gdbarch_max_insn_length (gdbarch); + gdb_byte *buf = xmalloc (len); + + read_memory (from, buf, len); + + /* GDB may get control back after the insn after the syscall. + Presumably this is a kernel bug. + If this is a syscall, make sure there's a nop afterwards. */ + { + int syscall_length; + gdb_byte *insn; + + insn = i386_skip_prefixes (buf, len); + if (insn != NULL && i386_syscall_p (insn, &syscall_length)) + insn[syscall_length] = NOP_OPCODE; + } + + write_memory (to, buf, len); + + if (debug_displaced) + { + fprintf_unfiltered (gdb_stdlog, "displaced: copy %s->%s: ", + paddress (gdbarch, from), paddress (gdbarch, to)); + displaced_step_dump_bytes (gdb_stdlog, buf, len); + } + + return (struct displaced_step_closure *) buf; +} + /* Fix up the state of registers and memory after having single-stepped a displaced instruction. */ @@ -463,7 +624,7 @@ i386_displaced_step_fixup (struct gdbarch *gdbarch, && ! i386_ret_p (insn)) { ULONGEST orig_eip; - ULONGEST insn_len; + int insn_len; regcache_cooked_read_unsigned (regs, I386_EIP_REGNUM, &orig_eip); @@ -482,7 +643,12 @@ i386_displaced_step_fixup (struct gdbarch *gdbarch, it unrelocated. Goodness help us if there are PC-relative system calls. */ if (i386_syscall_p (insn, &insn_len) - && orig_eip != to + (insn - insn_start) + insn_len) + && orig_eip != to + (insn - insn_start) + insn_len + /* GDB can get control back after the insn after the syscall. + Presumably this is a kernel bug. + i386_displaced_step_copy_insn ensures its a nop, + we add one to the length for it. */ + && orig_eip != to + (insn - insn_start) + insn_len + 1) { if (debug_displaced) fprintf_unfiltered (gdb_stdlog, @@ -534,6 +700,86 @@ i386_displaced_step_fixup (struct gdbarch *gdbarch, paddress (gdbarch, retaddr)); } } + +static void +append_insns (CORE_ADDR *to, ULONGEST len, const gdb_byte *buf) +{ + target_write_memory (*to, buf, len); + *to += len; +} + +static void +i386_relocate_instruction (struct gdbarch *gdbarch, + CORE_ADDR *to, CORE_ADDR oldloc) +{ + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + gdb_byte buf[I386_MAX_INSN_LEN]; + int offset = 0, rel32, newrel; + int insn_length; + gdb_byte *insn = buf; + + read_memory (oldloc, buf, I386_MAX_INSN_LEN); + + insn_length = gdb_buffered_insn_length (gdbarch, insn, + I386_MAX_INSN_LEN, oldloc); + + /* Get past the prefixes. */ + insn = i386_skip_prefixes (insn, I386_MAX_INSN_LEN); + + /* Adjust calls with 32-bit relative addresses as push/jump, with + the address pushed being the location where the original call in + the user program would return to. */ + if (insn[0] == 0xe8) + { + gdb_byte push_buf[16]; + unsigned int ret_addr; + + /* Where "ret" in the original code will return to. */ + ret_addr = oldloc + insn_length; + push_buf[0] = 0x68; /* pushq $... */ + memcpy (&push_buf[1], &ret_addr, 4); + /* Push the push. */ + append_insns (to, 5, push_buf); + + /* Convert the relative call to a relative jump. */ + insn[0] = 0xe9; + + /* Adjust the destination offset. */ + rel32 = extract_signed_integer (insn + 1, 4, byte_order); + newrel = (oldloc - *to) + rel32; + store_signed_integer (insn + 1, 4, newrel, byte_order); + + /* Write the adjusted jump into its displaced location. */ + append_insns (to, 5, insn); + return; + } + + /* Adjust jumps with 32-bit relative addresses. Calls are already + handled above. */ + if (insn[0] == 0xe9) + offset = 1; + /* Adjust conditional jumps. */ + else if (insn[0] == 0x0f && (insn[1] & 0xf0) == 0x80) + offset = 2; + + if (offset) + { + rel32 = extract_signed_integer (insn + offset, 4, byte_order); + newrel = (oldloc - *to) + rel32; + store_signed_integer (insn + offset, 4, newrel, byte_order); + if (debug_displaced) + fprintf_unfiltered (gdb_stdlog, + "Adjusted insn rel32=0x%s at 0x%s to" + " rel32=0x%s at 0x%s\n", + hex_string (rel32), paddress (gdbarch, oldloc), + hex_string (newrel), paddress (gdbarch, *to)); + } + + /* Write the adjusted instructions into their displaced + location. */ + append_insns (to, insn_length, buf); +} + #ifdef I386_REGNO_TO_SYMMETRY #error "The Sequent Symmetry is no longer supported." @@ -1394,12 +1640,24 @@ i386_frame_cache (struct frame_info *this_frame, void **this_cache) /* This will be added back below. */ cache->saved_regs[I386_EIP_REGNUM] -= cache->base; } - else + else if (cache->pc != 0 + || target_read_memory (get_frame_pc (this_frame), buf, 1)) { + /* We're in a known function, but did not find a frame + setup. Assume that the function does not use %ebp. + Alternatively, we may have jumped to an invalid + address; in that case there is definitely no new + frame in %ebp. */ get_frame_register (this_frame, I386_ESP_REGNUM, buf); cache->base = extract_unsigned_integer (buf, 4, byte_order) + cache->sp_offset; } + else + /* We're in an unknown function. We could not find the start + of the function to analyze the prologue; our best option is + to assume a typical frame layout with the caller's %ebp + saved. */ + cache->saved_regs[I386_EBP_REGNUM] = 0; } /* Now that we have the base address for the stack frame we can @@ -2099,87 +2357,75 @@ i386_return_value (struct gdbarch *gdbarch, struct type *func_type, } -/* Construct types for ISA-specific registers. */ struct type * -i386_eflags_type (struct gdbarch *gdbarch) +i387_ext_type (struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - if (!tdep->i386_eflags_type) + if (!tdep->i387_ext_type) { - struct type *type; - - type = arch_flags_type (gdbarch, "builtin_type_i386_eflags", 4); - append_flags_type_flag (type, 0, "CF"); - append_flags_type_flag (type, 1, NULL); - append_flags_type_flag (type, 2, "PF"); - append_flags_type_flag (type, 4, "AF"); - append_flags_type_flag (type, 6, "ZF"); - append_flags_type_flag (type, 7, "SF"); - append_flags_type_flag (type, 8, "TF"); - append_flags_type_flag (type, 9, "IF"); - append_flags_type_flag (type, 10, "DF"); - append_flags_type_flag (type, 11, "OF"); - append_flags_type_flag (type, 14, "NT"); - append_flags_type_flag (type, 16, "RF"); - append_flags_type_flag (type, 17, "VM"); - append_flags_type_flag (type, 18, "AC"); - append_flags_type_flag (type, 19, "VIF"); - append_flags_type_flag (type, 20, "VIP"); - append_flags_type_flag (type, 21, "ID"); - - tdep->i386_eflags_type = type; + tdep->i387_ext_type = tdesc_find_type (gdbarch, "i387_ext"); + gdb_assert (tdep->i387_ext_type != NULL); } - return tdep->i386_eflags_type; + return tdep->i387_ext_type; } -struct type * -i386_mxcsr_type (struct gdbarch *gdbarch) +/* Construct vector type for pseudo YMM registers. We can't use + tdesc_find_type since YMM isn't described in target description. */ + +static struct type * +i386_ymm_type (struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - if (!tdep->i386_mxcsr_type) + if (!tdep->i386_ymm_type) { - struct type *type; - - type = arch_flags_type (gdbarch, "builtin_type_i386_mxcsr", 4); - append_flags_type_flag (type, 0, "IE"); - append_flags_type_flag (type, 1, "DE"); - append_flags_type_flag (type, 2, "ZE"); - append_flags_type_flag (type, 3, "OE"); - append_flags_type_flag (type, 4, "UE"); - append_flags_type_flag (type, 5, "PE"); - append_flags_type_flag (type, 6, "DAZ"); - append_flags_type_flag (type, 7, "IM"); - append_flags_type_flag (type, 8, "DM"); - append_flags_type_flag (type, 9, "ZM"); - append_flags_type_flag (type, 10, "OM"); - append_flags_type_flag (type, 11, "UM"); - append_flags_type_flag (type, 12, "PM"); - append_flags_type_flag (type, 15, "FZ"); - - tdep->i386_mxcsr_type = type; - } + const struct builtin_type *bt = builtin_type (gdbarch); - return tdep->i386_mxcsr_type; -} + /* The type we're building is this: */ +#if 0 + union __gdb_builtin_type_vec256i + { + int128_t uint128[2]; + int64_t v2_int64[4]; + int32_t v4_int32[8]; + int16_t v8_int16[16]; + int8_t v16_int8[32]; + double v2_double[4]; + float v4_float[8]; + }; +#endif -struct type * -i387_ext_type (struct gdbarch *gdbarch) -{ - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + struct type *t; - if (!tdep->i387_ext_type) - tdep->i387_ext_type - = arch_float_type (gdbarch, -1, "builtin_type_i387_ext", - floatformats_i387_ext); + t = arch_composite_type (gdbarch, + "__gdb_builtin_type_vec256i", TYPE_CODE_UNION); + append_composite_type_field (t, "v8_float", + init_vector_type (bt->builtin_float, 8)); + append_composite_type_field (t, "v4_double", + init_vector_type (bt->builtin_double, 4)); + append_composite_type_field (t, "v32_int8", + init_vector_type (bt->builtin_int8, 32)); + append_composite_type_field (t, "v16_int16", + init_vector_type (bt->builtin_int16, 16)); + append_composite_type_field (t, "v8_int32", + init_vector_type (bt->builtin_int32, 8)); + append_composite_type_field (t, "v4_int64", + init_vector_type (bt->builtin_int64, 4)); + append_composite_type_field (t, "v2_int128", + init_vector_type (bt->builtin_int128, 2)); - return tdep->i387_ext_type; + TYPE_VECTOR (t) = 1; + TYPE_NAME (t) = "builtin_type_vec128i"; + tdep->i386_ymm_type = t; + } + + return tdep->i386_ymm_type; } /* Construct vector type for MMX registers. */ -struct type * +static struct type * i386_mmx_type (struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); @@ -2220,84 +2466,28 @@ i386_mmx_type (struct gdbarch *gdbarch) return tdep->i386_mmx_type; } -struct type * -i386_sse_type (struct gdbarch *gdbarch) -{ - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - - if (!tdep->i386_sse_type) - { - const struct builtin_type *bt = builtin_type (gdbarch); - - /* The type we're building is this: */ -#if 0 - union __gdb_builtin_type_vec128i - { - int128_t uint128; - int64_t v2_int64[2]; - int32_t v4_int32[4]; - int16_t v8_int16[8]; - int8_t v16_int8[16]; - double v2_double[2]; - float v4_float[4]; - }; -#endif - - struct type *t; - - t = arch_composite_type (gdbarch, - "__gdb_builtin_type_vec128i", TYPE_CODE_UNION); - append_composite_type_field (t, "v4_float", - init_vector_type (bt->builtin_float, 4)); - append_composite_type_field (t, "v2_double", - init_vector_type (bt->builtin_double, 2)); - append_composite_type_field (t, "v16_int8", - init_vector_type (bt->builtin_int8, 16)); - append_composite_type_field (t, "v8_int16", - init_vector_type (bt->builtin_int16, 8)); - append_composite_type_field (t, "v4_int32", - init_vector_type (bt->builtin_int32, 4)); - append_composite_type_field (t, "v2_int64", - init_vector_type (bt->builtin_int64, 2)); - append_composite_type_field (t, "uint128", bt->builtin_int128); - - TYPE_VECTOR (t) = 1; - TYPE_NAME (t) = "builtin_type_vec128i"; - tdep->i386_sse_type = t; - } - - return tdep->i386_sse_type; -} - /* Return the GDB type object for the "standard" data type of data in - register REGNUM. Perhaps %esi and %edi should go here, but - potentially they could be used for things other than address. */ + register REGNUM. */ static struct type * -i386_register_type (struct gdbarch *gdbarch, int regnum) +i386_pseudo_register_type (struct gdbarch *gdbarch, int regnum) { - if (regnum == I386_EIP_REGNUM) - return builtin_type (gdbarch)->builtin_func_ptr; - - if (regnum == I386_EFLAGS_REGNUM) - return i386_eflags_type (gdbarch); - - if (regnum == I386_EBP_REGNUM || regnum == I386_ESP_REGNUM) - return builtin_type (gdbarch)->builtin_data_ptr; - - if (i386_fp_regnum_p (gdbarch, regnum)) - return i387_ext_type (gdbarch); - if (i386_mmx_regnum_p (gdbarch, regnum)) return i386_mmx_type (gdbarch); + else if (i386_ymm_regnum_p (gdbarch, regnum)) + return i386_ymm_type (gdbarch); + else + { + const struct builtin_type *bt = builtin_type (gdbarch); + if (i386_byte_regnum_p (gdbarch, regnum)) + return bt->builtin_int8; + else if (i386_word_regnum_p (gdbarch, regnum)) + return bt->builtin_int16; + else if (i386_dword_regnum_p (gdbarch, regnum)) + return bt->builtin_int32; + } - if (i386_sse_regnum_p (gdbarch, regnum)) - return i386_sse_type (gdbarch); - - if (regnum == I387_MXCSR_REGNUM (gdbarch_tdep (gdbarch))) - return i386_mxcsr_type (gdbarch); - - return builtin_type (gdbarch)->builtin_int; + internal_error (__FILE__, __LINE__, _("invalid regnum")); } /* Map a cooked register onto a raw register or memory. For the i386, @@ -2319,41 +2509,132 @@ i386_mmx_regnum_to_fp_regnum (struct regcache *regcache, int regnum) return (I387_ST0_REGNUM (tdep) + fpreg); } -static void +void i386_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, gdb_byte *buf) { + gdb_byte raw_buf[MAX_REGISTER_SIZE]; + if (i386_mmx_regnum_p (gdbarch, regnum)) { - gdb_byte mmx_buf[MAX_REGISTER_SIZE]; int fpnum = i386_mmx_regnum_to_fp_regnum (regcache, regnum); /* Extract (always little endian). */ - regcache_raw_read (regcache, fpnum, mmx_buf); - memcpy (buf, mmx_buf, register_size (gdbarch, regnum)); + regcache_raw_read (regcache, fpnum, raw_buf); + memcpy (buf, raw_buf, register_size (gdbarch, regnum)); } else - regcache_raw_read (regcache, regnum, buf); + { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (i386_ymm_regnum_p (gdbarch, regnum)) + { + regnum -= tdep->ymm0_regnum; + + /* Extract (always little endian). Read lower 128bits. */ + regcache_raw_read (regcache, + I387_XMM0_REGNUM (tdep) + regnum, + raw_buf); + memcpy (buf, raw_buf, 16); + /* Read upper 128bits. */ + regcache_raw_read (regcache, + tdep->ymm0h_regnum + regnum, + raw_buf); + memcpy (buf + 16, raw_buf, 16); + } + else if (i386_word_regnum_p (gdbarch, regnum)) + { + int gpnum = regnum - tdep->ax_regnum; + + /* Extract (always little endian). */ + regcache_raw_read (regcache, gpnum, raw_buf); + memcpy (buf, raw_buf, 2); + } + else if (i386_byte_regnum_p (gdbarch, regnum)) + { + /* Check byte pseudo registers last since this function will + be called from amd64_pseudo_register_read, which handles + byte pseudo registers differently. */ + int gpnum = regnum - tdep->al_regnum; + + /* Extract (always little endian). We read both lower and + upper registers. */ + regcache_raw_read (regcache, gpnum % 4, raw_buf); + if (gpnum >= 4) + memcpy (buf, raw_buf + 1, 1); + else + memcpy (buf, raw_buf, 1); + } + else + internal_error (__FILE__, __LINE__, _("invalid regnum")); + } } -static void +void i386_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf) { + gdb_byte raw_buf[MAX_REGISTER_SIZE]; + if (i386_mmx_regnum_p (gdbarch, regnum)) { - gdb_byte mmx_buf[MAX_REGISTER_SIZE]; int fpnum = i386_mmx_regnum_to_fp_regnum (regcache, regnum); /* Read ... */ - regcache_raw_read (regcache, fpnum, mmx_buf); + regcache_raw_read (regcache, fpnum, raw_buf); /* ... Modify ... (always little endian). */ - memcpy (mmx_buf, buf, register_size (gdbarch, regnum)); + memcpy (raw_buf, buf, register_size (gdbarch, regnum)); /* ... Write. */ - regcache_raw_write (regcache, fpnum, mmx_buf); + regcache_raw_write (regcache, fpnum, raw_buf); } else - regcache_raw_write (regcache, regnum, buf); + { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (i386_ymm_regnum_p (gdbarch, regnum)) + { + regnum -= tdep->ymm0_regnum; + + /* ... Write lower 128bits. */ + regcache_raw_write (regcache, + I387_XMM0_REGNUM (tdep) + regnum, + buf); + /* ... Write upper 128bits. */ + regcache_raw_write (regcache, + tdep->ymm0h_regnum + regnum, + buf + 16); + } + else if (i386_word_regnum_p (gdbarch, regnum)) + { + int gpnum = regnum - tdep->ax_regnum; + + /* Read ... */ + regcache_raw_read (regcache, gpnum, raw_buf); + /* ... Modify ... (always little endian). */ + memcpy (raw_buf, buf, 2); + /* ... Write. */ + regcache_raw_write (regcache, gpnum, raw_buf); + } + else if (i386_byte_regnum_p (gdbarch, regnum)) + { + /* Check byte pseudo registers last since this function will + be called from amd64_pseudo_register_read, which handles + byte pseudo registers differently. */ + int gpnum = regnum - tdep->al_regnum; + + /* Read ... We read both lower and upper registers. */ + regcache_raw_read (regcache, gpnum % 4, raw_buf); + /* ... Modify ... (always little endian). */ + if (gpnum >= 4) + memcpy (raw_buf + 1, buf, 1); + else + memcpy (raw_buf, buf, 1); + /* ... Write. */ + regcache_raw_write (regcache, gpnum % 4, raw_buf); + } + else + internal_error (__FILE__, __LINE__, _("invalid regnum")); + } } @@ -2570,6 +2851,26 @@ i386_collect_fpregset (const struct regset *regset, i387_collect_fsave (regcache, regnum, fpregs); } +/* Similar to i386_supply_fpregset, but use XSAVE extended state. */ + +static void +i386_supply_xstateregset (const struct regset *regset, + struct regcache *regcache, int regnum, + const void *xstateregs, size_t len) +{ + i387_supply_xsave (regcache, regnum, xstateregs); +} + +/* Similar to i386_collect_fpregset , but use XSAVE extended state. */ + +static void +i386_collect_xstateregset (const struct regset *regset, + const struct regcache *regcache, + int regnum, void *xstateregs, size_t len) +{ + i387_collect_xsave (regcache, regnum, xstateregs, 1); +} + /* Return the appropriate register set for the core section identified by SECT_NAME and SECT_SIZE. */ @@ -2597,6 +2898,16 @@ i386_regset_from_core_section (struct gdbarch *gdbarch, return tdep->fpregset; } + if (strcmp (sect_name, ".reg-xstate") == 0) + { + if (tdep->xstateregset == NULL) + tdep->xstateregset = regset_alloc (gdbarch, + i386_supply_xstateregset, + i386_collect_xstateregset); + + return tdep->xstateregset; + } + return NULL; } @@ -2747,8 +3058,8 @@ i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) tdep->jb_pc_offset = 36; /* DJGPP does not support the SSE registers. */ - tdep->num_xmm_regs = 0; - set_gdbarch_num_regs (gdbarch, I386_NUM_GREGS + I386_NUM_FREGS); + if (! tdesc_has_registers (info.target_desc)) + tdep->tdesc = tdesc_i386_mmx; /* Native compiler is GCC, which uses the SVR4 register numbering even in COFF and STABS. See the comment in i386_gdbarch_init, @@ -2756,6 +3067,8 @@ i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_sdb_reg_to_regnum. */ set_gdbarch_stab_reg_to_regnum (gdbarch, i386_svr4_reg_to_regnum); set_gdbarch_sdb_reg_to_regnum (gdbarch, i386_svr4_reg_to_regnum); + + set_gdbarch_has_dos_based_file_system (gdbarch, 1); } @@ -2790,22 +3103,60 @@ int i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *group) { - int sse_regnum_p = (i386_sse_regnum_p (gdbarch, regnum) - || i386_mxcsr_regnum_p (gdbarch, regnum)); - int fp_regnum_p = (i386_fp_regnum_p (gdbarch, regnum) - || i386_fpc_regnum_p (gdbarch, regnum)); - int mmx_regnum_p = (i386_mmx_regnum_p (gdbarch, regnum)); + const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int fp_regnum_p, mmx_regnum_p, xmm_regnum_p, mxcsr_regnum_p, + ymm_regnum_p, ymmh_regnum_p; + + /* Don't include pseudo registers, except for MMX, in any register + groups. */ + if (i386_byte_regnum_p (gdbarch, regnum)) + return 0; + + if (i386_word_regnum_p (gdbarch, regnum)) + return 0; + + if (i386_dword_regnum_p (gdbarch, regnum)) + return 0; + mmx_regnum_p = i386_mmx_regnum_p (gdbarch, regnum); if (group == i386_mmx_reggroup) return mmx_regnum_p; + + xmm_regnum_p = i386_xmm_regnum_p (gdbarch, regnum); + mxcsr_regnum_p = i386_mxcsr_regnum_p (gdbarch, regnum); if (group == i386_sse_reggroup) - return sse_regnum_p; + return xmm_regnum_p || mxcsr_regnum_p; + + ymm_regnum_p = i386_ymm_regnum_p (gdbarch, regnum); if (group == vector_reggroup) - return (mmx_regnum_p || sse_regnum_p); + return (mmx_regnum_p + || ymm_regnum_p + || mxcsr_regnum_p + || (xmm_regnum_p + && ((tdep->xcr0 & I386_XSTATE_AVX_MASK) + == I386_XSTATE_SSE_MASK))); + + fp_regnum_p = (i386_fp_regnum_p (gdbarch, regnum) + || i386_fpc_regnum_p (gdbarch, regnum)); if (group == float_reggroup) return fp_regnum_p; + + /* For "info reg all", don't include upper YMM registers nor XMM + registers when AVX is supported. */ + ymmh_regnum_p = i386_ymmh_regnum_p (gdbarch, regnum); + if (group == all_reggroup + && ((xmm_regnum_p + && (tdep->xcr0 & I386_XSTATE_AVX)) + || ymmh_regnum_p)) + return 0; + if (group == general_reggroup) - return (!fp_regnum_p && !mmx_regnum_p && !sse_regnum_p); + return (!fp_regnum_p + && !mmx_regnum_p + && !mxcsr_regnum_p + && !xmm_regnum_p + && !ymm_regnum_p + && !ymmh_regnum_p); return default_register_reggroup_p (gdbarch, regnum, group); } @@ -2848,6 +3199,7 @@ enum OT_WORD, OT_LONG, OT_QUAD, + OT_DQUAD, }; /* i386 arith/logic operations */ @@ -2914,10 +3266,9 @@ static int i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) { struct gdbarch *gdbarch = irp->gdbarch; - uint8_t tmpu8; - int16_t tmpi16; - int32_t tmpi32; - ULONGEST tmpulongest; + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + gdb_byte buf[4]; + ULONGEST offset64; *addr = 0; if (irp->aflag) @@ -2925,13 +3276,14 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) /* 32 bits */ int havesib = 0; uint8_t scale = 0; + uint8_t byte; uint8_t index = 0; uint8_t base = irp->rm; if (base == 4) { havesib = 1; - if (target_read_memory (irp->addr, &tmpu8, 1)) + if (target_read_memory (irp->addr, &byte, 1)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory " @@ -2940,9 +3292,9 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) return -1; } irp->addr++; - scale = (tmpu8 >> 6) & 3; - index = ((tmpu8 >> 3) & 7) | irp->rex_x; - base = (tmpu8 & 7); + scale = (byte >> 6) & 3; + index = ((byte >> 3) & 7) | irp->rex_x; + base = (byte & 7); } base |= irp->rex_b; @@ -2952,7 +3304,7 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) if ((base & 7) == 5) { base = 0xff; - if (target_read_memory (irp->addr, (gdb_byte *) &tmpi32, 4)) + if (target_read_memory (irp->addr, buf, 4)) { if (record_debug) printf_unfiltered (_("Process record: error reading " @@ -2961,17 +3313,13 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) return -1; } irp->addr += 4; - *addr = tmpi32; + *addr = extract_signed_integer (buf, 4, byte_order); if (irp->regmap[X86_RECORD_R8_REGNUM] && !havesib) *addr += irp->addr + irp->rip_offset; } - else - { - *addr = 0; - } break; case 1: - if (target_read_memory (irp->addr, &tmpu8, 1)) + if (target_read_memory (irp->addr, buf, 1)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory " @@ -2980,10 +3328,10 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) return -1; } irp->addr++; - *addr = (int8_t) tmpu8; + *addr = (int8_t) buf[0]; break; case 2: - if (target_read_memory (irp->addr, (gdb_byte *) &tmpi32, 4)) + if (target_read_memory (irp->addr, buf, 4)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory " @@ -2991,34 +3339,34 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) paddress (gdbarch, irp->addr)); return -1; } - *addr = tmpi32; + *addr = extract_signed_integer (buf, 4, byte_order); irp->addr += 4; break; } - tmpulongest = 0; + offset64 = 0; if (base != 0xff) { if (base == 4 && irp->popl_esp_hack) *addr += irp->popl_esp_hack; regcache_raw_read_unsigned (irp->regcache, irp->regmap[base], - &tmpulongest); + &offset64); } if (irp->aflag == 2) { - *addr += tmpulongest; + *addr += offset64; } else - *addr = (uint32_t) (tmpulongest + *addr); + *addr = (uint32_t) (offset64 + *addr); if (havesib && (index != 4 || scale != 0)) { regcache_raw_read_unsigned (irp->regcache, irp->regmap[index], - &tmpulongest); + &offset64); if (irp->aflag == 2) - *addr += tmpulongest << scale; + *addr += offset64 << scale; else - *addr = (uint32_t) (*addr + (tmpulongest << scale)); + *addr = (uint32_t) (*addr + (offset64 << scale)); } } else @@ -3029,8 +3377,7 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) case 0: if (irp->rm == 6) { - if (target_read_memory - (irp->addr, (gdb_byte *) &tmpi16, 2)) + if (target_read_memory (irp->addr, buf, 2)) { if (record_debug) printf_unfiltered (_("Process record: error reading " @@ -3039,17 +3386,13 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) return -1; } irp->addr += 2; - *addr = tmpi16; + *addr = extract_signed_integer (buf, 2, byte_order); irp->rm = 0; goto no_rm; } - else - { - *addr = 0; - } break; case 1: - if (target_read_memory (irp->addr, &tmpu8, 1)) + if (target_read_memory (irp->addr, buf, 1)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory " @@ -3058,10 +3401,10 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) return -1; } irp->addr++; - *addr = (int8_t) tmpu8; + *addr = (int8_t) buf[0]; break; case 2: - if (target_read_memory (irp->addr, (gdb_byte *) &tmpi16, 2)) + if (target_read_memory (irp->addr, buf, 2)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory " @@ -3070,7 +3413,7 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) return -1; } irp->addr += 2; - *addr = tmpi16; + *addr = extract_signed_integer (buf, 2, byte_order); break; } @@ -3079,72 +3422,72 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) case 0: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBX_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_RESI_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; case 1: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBX_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REDI_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; case 2: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBP_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_RESI_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; case 3: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBP_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REDI_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; case 4: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_RESI_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; case 5: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REDI_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; case 6: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBP_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; case 7: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBX_REGNUM], - &tmpulongest); - *addr = (uint32_t) (*addr + tmpulongest); + &offset64); + *addr = (uint32_t) (*addr + offset64); break; } *addr &= 0xffff; } -no_rm: + no_rm: return 0; } @@ -3160,10 +3503,21 @@ i386_record_lea_modrm (struct i386_record_s *irp) if (irp->override >= 0) { - warning (_("Process record ignores the memory change " - "of instruction at address %s because it " - "can't get the value of the segment register."), - paddress (gdbarch, irp->orig_addr)); + if (record_memory_query) + { + int q; + + target_terminal_ours (); + q = yquery (_("\ +Process record ignores the memory change of instruction at address %s\n\ +because it can't get the value of the segment register.\n\ +Do you want to stop the program?"), + paddress (gdbarch, irp->orig_addr)); + target_terminal_inferior (); + if (q) + return -1; + } + return 0; } @@ -3182,51 +3536,121 @@ i386_record_lea_modrm (struct i386_record_s *irp) static int i386_record_push (struct i386_record_s *irp, int size) { - ULONGEST tmpulongest; + ULONGEST addr; if (record_arch_list_add_reg (irp->regcache, irp->regmap[X86_RECORD_RESP_REGNUM])) return -1; regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_RESP_REGNUM], - &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest - size, size)) + &addr); + if (record_arch_list_add_mem ((CORE_ADDR) addr - size, size)) return -1; return 0; } -/* Parse the current instruction and record the values of the registers and - memory that will be changed in current instruction to "record_arch_list". - Return -1 if something wrong. */ -#define I386_RECORD_ARCH_LIST_ADD_REG(regnum) \ - record_arch_list_add_reg (ir.regcache, ir.regmap[(regnum)]) +/* Defines contents to record. */ +#define I386_SAVE_FPU_REGS 0xfffd +#define I386_SAVE_FPU_ENV 0xfffe +#define I386_SAVE_FPU_ENV_REG_STACK 0xffff -int -i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, - CORE_ADDR addr) -{ - int prefixes = 0; - uint8_t tmpu8; - uint16_t tmpu16; - uint32_t tmpu32; - ULONGEST tmpulongest; - uint32_t opcode; - struct i386_record_s ir; - int rex = 0; - uint8_t rex_w = -1; - uint8_t rex_r = 0; +/* Record the value of floating point registers which will be changed by the + current instruction to "record_arch_list". Return -1 if something is wrong. +*/ - memset (&ir, 0, sizeof (struct i386_record_s)); +static int i386_record_floats (struct gdbarch *gdbarch, + struct i386_record_s *ir, + uint32_t iregnum) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int i; + + /* Oza: Because of floating point insn push/pop of fpu stack is going to + happen. Currently we store st0-st7 registers, but we need not store all + registers all the time, in future we use ftag register and record only + those who are not marked as an empty. */ + + if (I386_SAVE_FPU_REGS == iregnum) + { + for (i = I387_ST0_REGNUM (tdep); i <= I387_ST0_REGNUM (tdep) + 7; i++) + { + if (record_arch_list_add_reg (ir->regcache, i)) + return -1; + } + } + else if (I386_SAVE_FPU_ENV == iregnum) + { + for (i = I387_FCTRL_REGNUM (tdep); i <= I387_FOP_REGNUM (tdep); i++) + { + if (record_arch_list_add_reg (ir->regcache, i)) + return -1; + } + } + else if (I386_SAVE_FPU_ENV_REG_STACK == iregnum) + { + for (i = I387_ST0_REGNUM (tdep); i <= I387_FOP_REGNUM (tdep); i++) + { + if (record_arch_list_add_reg (ir->regcache, i)) + return -1; + } + } + else if ((iregnum >= I387_ST0_REGNUM (tdep)) && + (iregnum <= I387_FOP_REGNUM (tdep))) + { + if (record_arch_list_add_reg (ir->regcache,iregnum)) + return -1; + } + else + { + /* Parameter error. */ + return -1; + } + if(I386_SAVE_FPU_ENV != iregnum) + { + for (i = I387_FCTRL_REGNUM (tdep); i <= I387_FOP_REGNUM (tdep); i++) + { + if (record_arch_list_add_reg (ir->regcache, i)) + return -1; + } + } + return 0; +} + +/* Parse the current instruction and record the values of the registers and + memory that will be changed in current instruction to "record_arch_list". + Return -1 if something wrong. */ + +#define I386_RECORD_ARCH_LIST_ADD_REG(regnum) \ + record_arch_list_add_reg (ir.regcache, ir.regmap[(regnum)]) + +int +i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, + CORE_ADDR input_addr) +{ + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + int prefixes = 0; + int regnum = 0; + uint32_t opcode; + uint8_t opcode8; + ULONGEST addr; + gdb_byte buf[MAX_REGISTER_SIZE]; + struct i386_record_s ir; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + int rex = 0; + uint8_t rex_w = -1; + uint8_t rex_r = 0; + + memset (&ir, 0, sizeof (struct i386_record_s)); ir.regcache = regcache; - ir.addr = addr; - ir.orig_addr = addr; + ir.addr = input_addr; + ir.orig_addr = input_addr; ir.aflag = 1; ir.dflag = 1; ir.override = -1; ir.popl_esp_hack = 0; - ir.regmap = gdbarch_tdep (gdbarch)->record_regmap; + ir.regmap = tdep->record_regmap; ir.gdbarch = gdbarch; if (record_debug > 1) @@ -3237,7 +3661,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, /* prefixes */ while (1) { - if (target_read_memory (ir.addr, &tmpu8, 1)) + if (target_read_memory (ir.addr, &opcode8, 1)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory at " @@ -3246,39 +3670,39 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, return -1; } ir.addr++; - switch (tmpu8) + switch (opcode8) /* Instruction prefixes */ { - case 0xf3: + case REPE_PREFIX_OPCODE: prefixes |= PREFIX_REPZ; break; - case 0xf2: + case REPNE_PREFIX_OPCODE: prefixes |= PREFIX_REPNZ; break; - case 0xf0: + case LOCK_PREFIX_OPCODE: prefixes |= PREFIX_LOCK; break; - case 0x2e: + case CS_PREFIX_OPCODE: ir.override = X86_RECORD_CS_REGNUM; break; - case 0x36: + case SS_PREFIX_OPCODE: ir.override = X86_RECORD_SS_REGNUM; break; - case 0x3e: + case DS_PREFIX_OPCODE: ir.override = X86_RECORD_DS_REGNUM; break; - case 0x26: + case ES_PREFIX_OPCODE: ir.override = X86_RECORD_ES_REGNUM; break; - case 0x64: + case FS_PREFIX_OPCODE: ir.override = X86_RECORD_FS_REGNUM; break; - case 0x65: + case GS_PREFIX_OPCODE: ir.override = X86_RECORD_GS_REGNUM; break; - case 0x66: + case DATA_PREFIX_OPCODE: prefixes |= PREFIX_DATA; break; - case 0x67: + case ADDR_PREFIX_OPCODE: prefixes |= PREFIX_ADDR; break; case 0x40: /* i386 inc %eax */ @@ -3301,10 +3725,10 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, { /* REX */ rex = 1; - rex_w = (tmpu8 >> 3) & 1; - rex_r = (tmpu8 & 0x4) << 1; - ir.rex_x = (tmpu8 & 0x2) << 2; - ir.rex_b = (tmpu8 & 0x1) << 3; + rex_w = (opcode8 >> 3) & 1; + rex_r = (opcode8 & 0x4) << 1; + ir.rex_x = (opcode8 & 0x2) << 2; + ir.rex_b = (opcode8 & 0x1) << 3; } else /* 32 bit target */ goto out_prefixes; @@ -3314,7 +3738,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, break; } } -out_prefixes: + out_prefixes: if (ir.regmap[X86_RECORD_R8_REGNUM] && rex_w == 1) { ir.dflag = 2; @@ -3330,12 +3754,12 @@ out_prefixes: ir.aflag = 2; /* now check op code */ - opcode = (uint32_t) tmpu8; -reswitch: + opcode = (uint32_t) opcode8; + reswitch: switch (opcode) { case 0x0f: - if (target_read_memory (ir.addr, &tmpu8, 1)) + if (target_read_memory (ir.addr, &opcode8, 1)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory at " @@ -3344,12 +3768,11 @@ reswitch: return -1; } ir.addr++; - opcode = (uint16_t) tmpu8 | 0x0f00; + opcode = (uint32_t) opcode8 | 0x0f00; goto reswitch; break; - /* arith & logic */ - case 0x00: + case 0x00: /* arith & logic */ case 0x01: case 0x02: case 0x03: @@ -3406,8 +3829,7 @@ reswitch: switch ((opcode >> 1) & 3) { - /* OP Ev, Gv */ - case 0: + case 0: /* OP Ev, Gv */ if (i386_record_modrm (&ir)) return -1; if (ir.mod != 3) @@ -3423,8 +3845,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (ir.rm); } break; - /* OP Gv, Ev */ - case 1: + case 1: /* OP Gv, Ev */ if (i386_record_modrm (&ir)) return -1; ir.reg |= rex_r; @@ -3432,8 +3853,7 @@ reswitch: ir.reg &= 0x3; I386_RECORD_ARCH_LIST_ADD_REG (ir.reg); break; - /* OP A, Iv */ - case 2: + case 2: /* OP A, Iv */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); break; } @@ -3441,8 +3861,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* GRP1 */ - case 0x80: + case 0x80: /* GRP1 */ case 0x81: case 0x82: case 0x83: @@ -3471,8 +3890,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* inv */ - case 0x40: + case 0x40: /* inc */ case 0x41: case 0x42: case 0x43: @@ -3480,8 +3898,8 @@ reswitch: case 0x45: case 0x46: case 0x47: - /* dec */ - case 0x48: + + case 0x48: /* dec */ case 0x49: case 0x4a: case 0x4b: @@ -3489,12 +3907,12 @@ reswitch: case 0x4d: case 0x4e: case 0x4f: + I386_RECORD_ARCH_LIST_ADD_REG (opcode & 7); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* GRP3 */ - case 0xf6: + case 0xf6: /* GRP3 */ case 0xf7: if ((opcode & 1) == 0) ir.ot = OT_BYTE; @@ -3508,14 +3926,11 @@ reswitch: switch (ir.reg) { - /* test */ - case 0: + case 0: /* test */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* not */ - case 2: - /* neg */ - case 3: + case 2: /* not */ + case 3: /* neg */ if (ir.mod != 3) { if (i386_record_lea_modrm (&ir)) @@ -3528,18 +3943,13 @@ reswitch: ir.rm &= 0x3; I386_RECORD_ARCH_LIST_ADD_REG (ir.rm); } - /* neg */ - if (ir.reg == 3) + if (ir.reg == 3) /* neg */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* mul */ - case 4: - /* imul */ - case 5: - /* div */ - case 6: - /* idiv */ - case 7: + case 4: /* mul */ + case 5: /* imul */ + case 6: /* div */ + case 7: /* idiv */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); if (ir.ot != OT_BYTE) I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM); @@ -3553,10 +3963,8 @@ reswitch: } break; - /* GRP4 */ - case 0xfe: - /* GRP5 */ - case 0xff: + case 0xfe: /* GRP4 */ + case 0xff: /* GRP5 */ if (i386_record_modrm (&ir)) return -1; if (ir.reg >= 2 && opcode == 0xfe) @@ -3567,10 +3975,8 @@ reswitch: } switch (ir.reg) { - /* inc */ - case 0: - /* dec */ - case 1: + case 0: /* inc */ + case 1: /* dec */ if ((opcode & 1) == 0) ir.ot = OT_BYTE; else @@ -3589,29 +3995,24 @@ reswitch: } I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* call */ - case 2: + case 2: /* call */ if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) return -1; I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* lcall */ - case 3: + case 3: /* lcall */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_CS_REGNUM); if (i386_record_push (&ir, 1 << (ir.dflag + 1))) return -1; I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* jmp */ - case 4: - /* ljmp */ - case 5: + case 4: /* jmp */ + case 5: /* ljmp */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* push */ - case 6: + case 6: /* push */ if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) @@ -3625,27 +4026,23 @@ reswitch: } break; - /* test */ - case 0x84: + case 0x84: /* test */ case 0x85: case 0xa8: case 0xa9: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* CWDE/CBW */ - case 0x98: + case 0x98: /* CWDE/CBW */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); break; - /* CDQ/CWD */ - case 0x99: + case 0x99: /* CDQ/CWD */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM); break; - /* imul */ - case 0x0faf: + case 0x0faf: /* imul */ case 0x69: case 0x6b: ir.ot = ir.dflag + OT_WORD; @@ -3662,8 +4059,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* xadd */ - case 0x0fc0: + case 0x0fc0: /* xadd */ case 0x0fc1: if ((opcode & 1) == 0) ir.ot = OT_BYTE; @@ -3692,8 +4088,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* cmpxchg */ - case 0x0fb0: + case 0x0fb0: /* cmpxchg */ case 0x0fb1: if ((opcode & 1) == 0) ir.ot = OT_BYTE; @@ -3718,8 +4113,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* cmpxchg8b */ - case 0x0fc7: + case 0x0fc7: /* cmpxchg8b */ if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3) @@ -3735,8 +4129,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* push */ - case 0x50: + case 0x50: /* push */ case 0x51: case 0x52: case 0x53: @@ -3752,14 +4145,10 @@ reswitch: return -1; break; - /* push es */ - case 0x06: - /* push cs */ - case 0x0e: - /* push ss */ - case 0x16: - /* push ds */ - case 0x1e: + case 0x06: /* push es */ + case 0x0e: /* push cs */ + case 0x16: /* push ss */ + case 0x1e: /* push ds */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -3769,10 +4158,8 @@ reswitch: return -1; break; - /* push fs */ - case 0x0fa0: - /* push gs */ - case 0x0fa8: + case 0x0fa0: /* push fs */ + case 0x0fa8: /* push gs */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 2; @@ -3782,8 +4169,7 @@ reswitch: return -1; break; - /* pusha */ - case 0x60: + case 0x60: /* pusha */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -3793,8 +4179,7 @@ reswitch: return -1; break; - /* pop */ - case 0x58: + case 0x58: /* pop */ case 0x59: case 0x5a: case 0x5b: @@ -3806,20 +4191,19 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG ((opcode & 0x7) | ir.rex_b); break; - /* popa */ - case 0x61: + case 0x61: /* popa */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; goto no_support; } - for (tmpu8 = X86_RECORD_REAX_REGNUM; tmpu8 <= X86_RECORD_REDI_REGNUM; - tmpu8++) - I386_RECORD_ARCH_LIST_ADD_REG (tmpu8); + for (regnum = X86_RECORD_REAX_REGNUM; + regnum <= X86_RECORD_REDI_REGNUM; + regnum++) + I386_RECORD_ARCH_LIST_ADD_REG (regnum); break; - /* pop */ - case 0x8f: + case 0x8f: /* pop */ if (ir.regmap[X86_RECORD_R8_REGNUM]) ir.ot = ir.dflag ? OT_QUAD : OT_WORD; else @@ -3837,8 +4221,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); break; - /* enter */ - case 0xc8: + case 0xc8: /* enter */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBP_REGNUM); if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) ir.dflag = 2; @@ -3846,14 +4229,12 @@ reswitch: return -1; break; - /* leave */ - case 0xc9: + case 0xc9: /* leave */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBP_REGNUM); break; - /* pop es */ - case 0x07: + case 0x07: /* pop es */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -3864,8 +4245,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* pop ss */ - case 0x17: + case 0x17: /* pop ss */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -3876,8 +4256,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* pop ds */ - case 0x1f: + case 0x1f: /* pop ds */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -3888,22 +4267,19 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* pop fs */ - case 0x0fa1: + case 0x0fa1: /* pop fs */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_FS_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* pop gs */ - case 0x0fa9: + case 0x0fa9: /* pop gs */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_GS_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* mov */ - case 0x88: + case 0x88: /* mov */ case 0x89: case 0xc6: case 0xc7: @@ -3932,8 +4308,7 @@ reswitch: } break; - /* mov */ - case 0x8a: + case 0x8a: /* mov */ case 0x8b: if ((opcode & 1) == 0) ir.ot = OT_BYTE; @@ -3947,8 +4322,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (ir.reg); break; - /* mov seg */ - case 0x8c: + case 0x8c: /* mov seg */ if (i386_record_modrm (&ir)) return -1; if (ir.reg > 5) @@ -3968,26 +4342,25 @@ reswitch: } break; - /* mov seg */ - case 0x8e: + case 0x8e: /* mov seg */ if (i386_record_modrm (&ir)) return -1; switch (ir.reg) { case 0: - tmpu8 = X86_RECORD_ES_REGNUM; + regnum = X86_RECORD_ES_REGNUM; break; case 2: - tmpu8 = X86_RECORD_SS_REGNUM; + regnum = X86_RECORD_SS_REGNUM; break; case 3: - tmpu8 = X86_RECORD_DS_REGNUM; + regnum = X86_RECORD_DS_REGNUM; break; case 4: - tmpu8 = X86_RECORD_FS_REGNUM; + regnum = X86_RECORD_FS_REGNUM; break; case 5: - tmpu8 = X86_RECORD_GS_REGNUM; + regnum = X86_RECORD_GS_REGNUM; break; default: ir.addr -= 2; @@ -3995,25 +4368,20 @@ reswitch: goto no_support; break; } - I386_RECORD_ARCH_LIST_ADD_REG (tmpu8); + I386_RECORD_ARCH_LIST_ADD_REG (regnum); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* movzbS */ - case 0x0fb6: - /* movzwS */ - case 0x0fb7: - /* movsbS */ - case 0x0fbe: - /* movswS */ - case 0x0fbf: + case 0x0fb6: /* movzbS */ + case 0x0fb7: /* movzwS */ + case 0x0fbe: /* movsbS */ + case 0x0fbf: /* movswS */ if (i386_record_modrm (&ir)) return -1; I386_RECORD_ARCH_LIST_ADD_REG (ir.reg | rex_r); break; - /* lea */ - case 0x8d: + case 0x8d: /* lea */ if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3) @@ -4029,24 +4397,31 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (ir.reg); break; - /* mov EAX */ - case 0xa0: + case 0xa0: /* mov EAX */ case 0xa1: - /* xlat */ - case 0xd7: + + case 0xd7: /* xlat */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); break; - /* mov EAX */ - case 0xa2: + case 0xa2: /* mov EAX */ case 0xa3: if (ir.override >= 0) { - warning (_("Process record ignores the memory change " - "of instruction at address %s because " - "it can't get the value of the segment " - "register."), - paddress (gdbarch, ir.orig_addr)); + if (record_memory_query) + { + int q; + + target_terminal_ours (); + q = yquery (_("\ +Process record ignores the memory change of instruction at address %s\n\ +because it can't get the value of the segment register.\n\ +Do you want to stop the program?"), + paddress (gdbarch, ir.orig_addr)); + target_terminal_inferior (); + if (q) + return -1; + } } else { @@ -4056,7 +4431,7 @@ reswitch: ir.ot = ir.dflag + OT_WORD; if (ir.aflag == 2) { - if (target_read_memory (ir.addr, (gdb_byte *) &addr, 8)) + if (target_read_memory (ir.addr, buf, 8)) { if (record_debug) printf_unfiltered (_("Process record: error reading " @@ -4065,10 +4440,11 @@ reswitch: return -1; } ir.addr += 8; + addr = extract_unsigned_integer (buf, 8, byte_order); } else if (ir.aflag) { - if (target_read_memory (ir.addr, (gdb_byte *) &tmpu32, 4)) + if (target_read_memory (ir.addr, buf, 4)) { if (record_debug) printf_unfiltered (_("Process record: error reading " @@ -4077,11 +4453,11 @@ reswitch: return -1; } ir.addr += 4; - addr = tmpu32; + addr = extract_unsigned_integer (buf, 4, byte_order); } else { - if (target_read_memory (ir.addr, (gdb_byte *) &tmpu16, 2)) + if (target_read_memory (ir.addr, buf, 2)) { if (record_debug) printf_unfiltered (_("Process record: error reading " @@ -4090,15 +4466,14 @@ reswitch: return -1; } ir.addr += 2; - addr = tmpu16; + addr = extract_unsigned_integer (buf, 2, byte_order); } if (record_arch_list_add_mem (addr, 1 << ir.ot)) return -1; } break; - /* mov R, Ib */ - case 0xb0: + case 0xb0: /* mov R, Ib */ case 0xb1: case 0xb2: case 0xb3: @@ -4111,8 +4486,7 @@ reswitch: : ((opcode & 0x7) & 0x3)); break; - /* mov R, Iv */ - case 0xb8: + case 0xb8: /* mov R, Iv */ case 0xb9: case 0xba: case 0xbb: @@ -4123,8 +4497,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG ((opcode & 0x7) | ir.rex_b); break; - /* xchg R, EAX */ - case 0x91: + case 0x91: /* xchg R, EAX */ case 0x92: case 0x93: case 0x94: @@ -4135,8 +4508,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (opcode & 0x7); break; - /* xchg Ev, Gv */ - case 0x86: + case 0x86: /* xchg Ev, Gv */ case 0x87: if ((opcode & 1) == 0) ir.ot = OT_BYTE; @@ -4146,7 +4518,7 @@ reswitch: return -1; if (ir.mod == 3) { - ir.rm != ir.rex_b; + ir.rm |= ir.rex_b; if (ir.ot == OT_BYTE && !ir.regmap[X86_RECORD_R8_REGNUM]) ir.rm &= 0x3; I386_RECORD_ARCH_LIST_ADD_REG (ir.rm); @@ -4162,21 +4534,16 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (ir.reg); break; - /* les Gv */ - case 0xc4: - /* lds Gv */ - case 0xc5: + case 0xc4: /* les Gv */ + case 0xc5: /* lds Gv */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; goto no_support; } - /* lss Gv */ - case 0x0fb2: - /* lfs Gv */ - case 0x0fb4: - /* lgs Gv */ - case 0x0fb5: + case 0x0fb2: /* lss Gv */ + case 0x0fb4: /* lfs Gv */ + case 0x0fb5: /* lgs Gv */ if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3) @@ -4190,34 +4557,28 @@ reswitch: } switch (opcode) { - /* les Gv */ - case 0xc4: - tmpu8 = X86_RECORD_ES_REGNUM; + case 0xc4: /* les Gv */ + regnum = X86_RECORD_ES_REGNUM; break; - /* lds Gv */ - case 0xc5: - tmpu8 = X86_RECORD_DS_REGNUM; + case 0xc5: /* lds Gv */ + regnum = X86_RECORD_DS_REGNUM; break; - /* lss Gv */ - case 0x0fb2: - tmpu8 = X86_RECORD_SS_REGNUM; + case 0x0fb2: /* lss Gv */ + regnum = X86_RECORD_SS_REGNUM; break; - /* lfs Gv */ - case 0x0fb4: - tmpu8 = X86_RECORD_FS_REGNUM; + case 0x0fb4: /* lfs Gv */ + regnum = X86_RECORD_FS_REGNUM; break; - /* lgs Gv */ - case 0x0fb5: - tmpu8 = X86_RECORD_GS_REGNUM; + case 0x0fb5: /* lgs Gv */ + regnum = X86_RECORD_GS_REGNUM; break; } - I386_RECORD_ARCH_LIST_ADD_REG (tmpu8); + I386_RECORD_ARCH_LIST_ADD_REG (regnum); I386_RECORD_ARCH_LIST_ADD_REG (ir.reg | rex_r); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* shifts */ - case 0xc0: + case 0xc0: /* shifts */ case 0xc1: case 0xd0: case 0xd1: @@ -4262,9 +4623,7 @@ reswitch: } break; - /* floats */ - /* It just record the memory change of instrcution. */ - case 0xd8: + case 0xd8: /* Floats. */ case 0xd9: case 0xda: case 0xdb: @@ -4277,45 +4636,56 @@ reswitch: ir.reg |= ((opcode & 7) << 3); if (ir.mod != 3) { - /* memory */ - uint64_t tmpu64; + /* Memory. */ + uint64_t addr64; - if (i386_record_lea_modrm_addr (&ir, &tmpu64)) + if (i386_record_lea_modrm_addr (&ir, &addr64)) return -1; switch (ir.reg) { - case 0x00: - case 0x01: case 0x02: + case 0x12: + case 0x22: + case 0x32: + /* For fcom, ficom nothing to do. */ + break; case 0x03: + case 0x13: + case 0x23: + case 0x33: + /* For fcomp, ficomp pop FPU stack, store all. */ + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; + break; + case 0x00: + case 0x01: case 0x04: case 0x05: case 0x06: case 0x07: case 0x10: case 0x11: - case 0x12: - case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x20: case 0x21: - case 0x22: - case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x30: case 0x31: - case 0x32: - case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: + /* For fadd, fmul, fsub, fsubr, fdiv, fdivr, fiadd, fimul, + fisub, fisubr, fidiv, fidivr, modR/M.reg is an extension + of code, always affects st(0) register. */ + if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep))) + return -1; break; case 0x08: case 0x0a: @@ -4324,6 +4694,7 @@ reswitch: case 0x19: case 0x1a: case 0x1b: + case 0x1d: case 0x28: case 0x29: case 0x2a: @@ -4332,24 +4703,30 @@ reswitch: case 0x39: case 0x3a: case 0x3b: + case 0x3c: + case 0x3d: switch (ir.reg & 7) { case 0: + /* Handling fld, fild. */ + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; break; case 1: switch (ir.reg >> 4) { case 0: - if (record_arch_list_add_mem (tmpu64, 4)) + if (record_arch_list_add_mem (addr64, 4)) return -1; break; case 2: - if (record_arch_list_add_mem (tmpu64, 8)) + if (record_arch_list_add_mem (addr64, 8)) return -1; break; case 3: + break; default: - if (record_arch_list_add_mem (tmpu64, 2)) + if (record_arch_list_add_mem (addr64, 2)) return -1; break; } @@ -4358,17 +4735,51 @@ reswitch: switch (ir.reg >> 4) { case 0: + if (record_arch_list_add_mem (addr64, 4)) + return -1; + if (3 == (ir.reg & 7)) + { + /* For fstp m32fp. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_REGS)) + return -1; + } + break; case 1: - if (record_arch_list_add_mem (tmpu64, 4)) + if (record_arch_list_add_mem (addr64, 4)) return -1; + if ((3 == (ir.reg & 7)) + || (5 == (ir.reg & 7)) + || (7 == (ir.reg & 7))) + { + /* For fstp insn. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_REGS)) + return -1; + } break; case 2: - if (record_arch_list_add_mem (tmpu64, 8)) + if (record_arch_list_add_mem (addr64, 8)) return -1; + if (3 == (ir.reg & 7)) + { + /* For fstp m64fp. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_REGS)) + return -1; + } break; case 3: + if ((3 <= (ir.reg & 7)) && (6 <= (ir.reg & 7))) + { + /* For fistp, fbld, fild, fbstp. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_REGS)) + return -1; + } + /* Fall through */ default: - if (record_arch_list_add_mem (tmpu64, 2)) + if (record_arch_list_add_mem (addr64, 2)) return -1; break; } @@ -4376,52 +4787,72 @@ reswitch: } break; case 0x0c: + /* Insn fldenv. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_ENV_REG_STACK)) + return -1; + break; case 0x0d: - case 0x1d: + /* Insn fldcw. */ + if (i386_record_floats (gdbarch, &ir, I387_FCTRL_REGNUM (tdep))) + return -1; + break; case 0x2c: - case 0x3c: - case 0x3d: + /* Insn frstor. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_ENV_REG_STACK)) + return -1; break; case 0x0e: if (ir.dflag) { - if (record_arch_list_add_mem (tmpu64, 28)) + if (record_arch_list_add_mem (addr64, 28)) return -1; } else { - if (record_arch_list_add_mem (tmpu64, 14)) + if (record_arch_list_add_mem (addr64, 14)) return -1; } break; case 0x0f: case 0x2f: - if (record_arch_list_add_mem (tmpu64, 2)) + if (record_arch_list_add_mem (addr64, 2)) return -1; + /* Insn fstp, fbstp. */ + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; break; case 0x1f: case 0x3e: - if (record_arch_list_add_mem (tmpu64, 10)) + if (record_arch_list_add_mem (addr64, 10)) return -1; break; case 0x2e: if (ir.dflag) { - if (record_arch_list_add_mem (tmpu64, 28)) + if (record_arch_list_add_mem (addr64, 28)) return -1; - tmpu64 += 28; + addr64 += 28; } else { - if (record_arch_list_add_mem (tmpu64, 14)) + if (record_arch_list_add_mem (addr64, 14)) return -1; - tmpu64 += 14; + addr64 += 14; } - if (record_arch_list_add_mem (tmpu64, 80)) + if (record_arch_list_add_mem (addr64, 80)) + return -1; + /* Insn fsave. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_ENV_REG_STACK)) return -1; break; case 0x3f: - if (record_arch_list_add_mem (tmpu64, 8)) + if (record_arch_list_add_mem (addr64, 8)) + return -1; + /* Insn fistp. */ + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) return -1; break; default: @@ -4431,22 +4862,222 @@ reswitch: break; } } + /* Opcode is an extension of modR/M byte. */ + else + { + switch (opcode) + { + case 0xd8: + if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep))) + return -1; + break; + case 0xd9: + if (0x0c == (ir.modrm >> 4)) + { + if ((ir.modrm & 0x0f) <= 7) + { + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_REGS)) + return -1; + } + else + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep))) + return -1; + /* If only st(0) is changing, then we have already + recorded. */ + if ((ir.modrm & 0x0f) - 0x08) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + ((ir.modrm & 0x0f) - 0x08))) + return -1; + } + } + } + else + { + switch (ir.modrm) + { + case 0xe0: + case 0xe1: + case 0xf0: + case 0xf5: + case 0xf8: + case 0xfa: + case 0xfc: + case 0xfe: + case 0xff: + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep))) + return -1; + break; + case 0xf1: + case 0xf2: + case 0xf3: + case 0xf4: + case 0xf6: + case 0xf7: + case 0xe8: + case 0xe9: + case 0xea: + case 0xeb: + case 0xec: + case 0xed: + case 0xee: + case 0xf9: + case 0xfb: + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_REGS)) + return -1; + break; + case 0xfd: + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep))) + return -1; + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + 1)) + return -1; + break; + } + } + break; + case 0xda: + if (0xe9 == ir.modrm) + { + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; + } + else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4)) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep))) + return -1; + if (((ir.modrm & 0x0f) > 0) && ((ir.modrm & 0x0f) <= 7)) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + (ir.modrm & 0x0f))) + return -1; + } + else if ((ir.modrm & 0x0f) - 0x08) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + ((ir.modrm & 0x0f) - 0x08))) + return -1; + } + } + break; + case 0xdb: + if (0xe3 == ir.modrm) + { + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_ENV)) + return -1; + } + else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4)) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep))) + return -1; + if (((ir.modrm & 0x0f) > 0) && ((ir.modrm & 0x0f) <= 7)) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + (ir.modrm & 0x0f))) + return -1; + } + else if ((ir.modrm & 0x0f) - 0x08) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + ((ir.modrm & 0x0f) - 0x08))) + return -1; + } + } + break; + case 0xdc: + if ((0x0c == ir.modrm >> 4) + || (0x0d == ir.modrm >> 4) + || (0x0f == ir.modrm >> 4)) + { + if ((ir.modrm & 0x0f) <= 7) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + (ir.modrm & 0x0f))) + return -1; + } + else + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + ((ir.modrm & 0x0f) - 0x08))) + return -1; + } + } + break; + case 0xdd: + if (0x0c == ir.modrm >> 4) + { + if (i386_record_floats (gdbarch, &ir, + I387_FTAG_REGNUM (tdep))) + return -1; + } + else if ((0x0d == ir.modrm >> 4) || (0x0e == ir.modrm >> 4)) + { + if ((ir.modrm & 0x0f) <= 7) + { + if (i386_record_floats (gdbarch, &ir, + I387_ST0_REGNUM (tdep) + + (ir.modrm & 0x0f))) + return -1; + } + else + { + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_REGS)) + return -1; + } + } + break; + case 0xde: + if ((0x0c == ir.modrm >> 4) + || (0x0e == ir.modrm >> 4) + || (0x0f == ir.modrm >> 4) + || (0xd9 == ir.modrm)) + { + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; + } + break; + case 0xdf: + if (0xe0 == ir.modrm) + { + if (record_arch_list_add_reg (ir.regcache, I386_EAX_REGNUM)) + return -1; + } + else if ((0x0f == ir.modrm >> 4) || (0x0e == ir.modrm >> 4)) + { + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; + } + break; + } + } break; - /* string ops */ - /* movsS */ - case 0xa4: + case 0xa4: /* movsS */ case 0xa5: - /* stosS */ - case 0xaa: + case 0xaa: /* stosS */ case 0xab: - /* insS */ - case 0x6c: + case 0x6c: /* insS */ case 0x6d: regcache_raw_read_unsigned (ir.regcache, ir.regmap[X86_RECORD_RECX_REGNUM], - &tmpulongest); - if (tmpulongest) + &addr); + if (addr) { ULONGEST es, ds; @@ -4456,7 +5087,7 @@ reswitch: ir.ot = ir.dflag + OT_WORD; regcache_raw_read_unsigned (ir.regcache, ir.regmap[X86_RECORD_REDI_REGNUM], - &tmpulongest); + &addr); regcache_raw_read_unsigned (ir.regcache, ir.regmap[X86_RECORD_ES_REGNUM], @@ -4467,15 +5098,24 @@ reswitch: if (ir.aflag && (es != ds)) { /* addr += ((uint32_t) read_register (I386_ES_REGNUM)) << 4; */ - warning (_("Process record ignores the memory " - "change of instruction at address %s " - "because it can't get the value of the " - "ES segment register."), - paddress (gdbarch, ir.orig_addr)); + if (record_memory_query) + { + int q; + + target_terminal_ours (); + q = yquery (_("\ +Process record ignores the memory change of instruction at address %s\n\ +because it can't get the value of the segment register.\n\ +Do you want to stop the program?"), + paddress (gdbarch, ir.orig_addr)); + target_terminal_inferior (); + if (q) + return -1; + } } else { - if (record_arch_list_add_mem (tmpulongest, 1 << ir.ot)) + if (record_arch_list_add_mem (addr, 1 << ir.ot)) return -1; } @@ -4488,8 +5128,7 @@ reswitch: } break; - /* cmpsS */ - case 0xa6: + case 0xa6: /* cmpsS */ case 0xa7: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); @@ -4498,8 +5137,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* lodsS */ - case 0xac: + case 0xac: /* lodsS */ case 0xad: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); @@ -4508,8 +5146,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* scasS */ - case 0xae: + case 0xae: /* scasS */ case 0xaf: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) @@ -4517,8 +5154,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* outsS */ - case 0x6e: + case 0x6e: /* outsS */ case 0x6f: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) @@ -4526,8 +5162,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* port I/O */ - case 0xe4: + case 0xe4: /* port I/O */ case 0xe5: case 0xec: case 0xed: @@ -4542,35 +5177,28 @@ reswitch: break; /* control */ - /* ret im */ - case 0xc2: - /* ret */ - case 0xc3: + case 0xc2: /* ret im */ + case 0xc3: /* ret */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* lret im */ - case 0xca: - /* lret */ - case 0xcb: - /* iret */ - case 0xcf: + case 0xca: /* lret im */ + case 0xcb: /* lret */ + case 0xcf: /* iret */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_CS_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* call im */ - case 0xe8: + case 0xe8: /* call im */ if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) return -1; break; - /* lcall im */ - case 0x9a: + case 0x9a: /* lcall im */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -4581,14 +5209,10 @@ reswitch: return -1; break; - /* jmp im */ - case 0xe9: - /* ljmp im */ - case 0xea: - /* jmp Jb */ - case 0xeb: - /* jcc Jb */ - case 0x70: + case 0xe9: /* jmp im */ + case 0xea: /* ljmp im */ + case 0xeb: /* jmp Jb */ + case 0x70: /* jcc Jb */ case 0x71: case 0x72: case 0x73: @@ -4604,8 +5228,7 @@ reswitch: case 0x7d: case 0x7e: case 0x7f: - /* jcc Jv */ - case 0x0f80: + case 0x0f80: /* jcc Jv */ case 0x0f81: case 0x0f82: case 0x0f83: @@ -4623,8 +5246,7 @@ reswitch: case 0x0f8f: break; - /* setcc Gv */ - case 0x0f90: + case 0x0f90: /* setcc Gv */ case 0x0f91: case 0x0f92: case 0x0f93: @@ -4654,8 +5276,7 @@ reswitch: } break; - /* cmov Gv, Ev */ - case 0x0f40: + case 0x0f40: /* cmov Gv, Ev */ case 0x0f41: case 0x0f42: case 0x0f43: @@ -4680,8 +5301,7 @@ reswitch: break; /* flags */ - /* pushf */ - case 0x9c: + case 0x9c: /* pushf */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) ir.dflag = 2; @@ -4689,34 +5309,26 @@ reswitch: return -1; break; - /* popf */ - case 0x9d: + case 0x9d: /* popf */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* sahf */ - case 0x9e: + case 0x9e: /* sahf */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; goto no_support; } - /* cmc */ - case 0xf5: - /* clc */ - case 0xf8: - /* stc */ - case 0xf9: - /* cld */ - case 0xfc: - /* std */ - case 0xfd: + case 0xf5: /* cmc */ + case 0xf8: /* clc */ + case 0xf9: /* stc */ + case 0xfc: /* cld */ + case 0xfd: /* std */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* lahf */ - case 0x9f: + case 0x9f: /* lahf */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -4727,8 +5339,7 @@ reswitch: break; /* bit operations */ - /* bt/bts/btr/btc Gv, im */ - case 0x0fba: + case 0x0fba: /* bt/bts/btr/btc Gv, im */ ir.ot = ir.dflag + OT_WORD; if (i386_record_modrm (&ir)) return -1; @@ -4751,17 +5362,13 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* bt Gv, Ev */ - case 0x0fa3: + case 0x0fa3: /* bt Gv, Ev */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* bts */ - case 0x0fab: - /* btr */ - case 0x0fb3: - /* btc */ - case 0x0fbb: + case 0x0fab: /* bts */ + case 0x0fb3: /* btr */ + case 0x0fbb: /* btc */ ir.ot = ir.dflag + OT_WORD; if (i386_record_modrm (&ir)) return -1; @@ -4769,25 +5376,25 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); else { - uint64_t tmpu64; - if (i386_record_lea_modrm_addr (&ir, &tmpu64)) + uint64_t addr64; + if (i386_record_lea_modrm_addr (&ir, &addr64)) return -1; regcache_raw_read_unsigned (ir.regcache, ir.regmap[ir.reg | rex_r], - &tmpulongest); + &addr); switch (ir.dflag) { case 0: - tmpu64 += ((int16_t) tmpulongest >> 4) << 4; + addr64 += ((int16_t) addr >> 4) << 4; break; case 1: - tmpu64 += ((int32_t) tmpulongest >> 5) << 5; + addr64 += ((int32_t) addr >> 5) << 5; break; case 2: - tmpu64 += ((int64_t) tmpulongest >> 6) << 6; + addr64 += ((int64_t) addr >> 6) << 6; break; } - if (record_arch_list_add_mem (tmpu64, 1 << ir.ot)) + if (record_arch_list_add_mem (addr64, 1 << ir.ot)) return -1; if (i386_record_lea_modrm (&ir)) return -1; @@ -4795,27 +5402,19 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* bsf */ - case 0x0fbc: - /* bsr */ - case 0x0fbd: + case 0x0fbc: /* bsf */ + case 0x0fbd: /* bsr */ I386_RECORD_ARCH_LIST_ADD_REG (ir.reg | rex_r); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; /* bcd */ - /* daa */ - case 0x27: - /* das */ - case 0x2f: - /* aaa */ - case 0x37: - /* aas */ - case 0x3f: - /* aam */ - case 0xd4: - /* aad */ - case 0xd5: + case 0x27: /* daa */ + case 0x2f: /* das */ + case 0x37: /* aaa */ + case 0x3f: /* aas */ + case 0xd4: /* aam */ + case 0xd5: /* aad */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -4826,8 +5425,7 @@ reswitch: break; /* misc */ - /* nop */ - case 0x90: + case 0x90: /* nop */ if (prefixes & PREFIX_LOCK) { ir.addr -= 1; @@ -4835,30 +5433,34 @@ reswitch: } break; - /* fwait */ - /* XXX */ - case 0x9b: - printf_unfiltered (_("Process record doesn't support instruction " - "fwait.\n")); - ir.addr -= 1; - goto no_support; + case 0x9b: /* fwait */ + if (target_read_memory (ir.addr, &opcode8, 1)) + { + if (record_debug) + printf_unfiltered (_("Process record: error reading memory at " + "addr 0x%s len = 1.\n"), + paddress (gdbarch, ir.addr)); + return -1; + } + opcode = (uint32_t) opcode8; + ir.addr++; + goto reswitch; break; - /* int3 */ /* XXX */ - case 0xcc: - printf_unfiltered (_("Process record doesn't support instruction " + case 0xcc: /* int3 */ + printf_unfiltered (_("Process record does not support instruction " "int3.\n")); ir.addr -= 1; goto no_support; break; - /* int */ /* XXX */ - case 0xcd: + case 0xcd: /* int */ { int ret; - if (target_read_memory (ir.addr, &tmpu8, 1)) + uint8_t interrupt; + if (target_read_memory (ir.addr, &interrupt, 1)) { if (record_debug) printf_unfiltered (_("Process record: error reading memory " @@ -4867,46 +5469,41 @@ reswitch: return -1; } ir.addr++; - if (tmpu8 != 0x80 - || gdbarch_tdep (gdbarch)->i386_intx80_record == NULL) + if (interrupt != 0x80 + || tdep->i386_intx80_record == NULL) { - printf_unfiltered (_("Process record doesn't support " + printf_unfiltered (_("Process record does not support " "instruction int 0x%02x.\n"), - tmpu8); + interrupt); ir.addr -= 2; goto no_support; } - ret = gdbarch_tdep (gdbarch)->i386_intx80_record (ir.regcache); + ret = tdep->i386_intx80_record (ir.regcache); if (ret) return ret; } break; - /* into */ /* XXX */ - case 0xce: - printf_unfiltered (_("Process record doesn't support " + case 0xce: /* into */ + printf_unfiltered (_("Process record does not support " "instruction into.\n")); ir.addr -= 1; goto no_support; break; - /* cli */ - case 0xfa: - /* sti */ - case 0xfb: + case 0xfa: /* cli */ + case 0xfb: /* sti */ break; - /* bound */ - case 0x62: - printf_unfiltered (_("Process record doesn't support " + case 0x62: /* bound */ + printf_unfiltered (_("Process record does not support " "instruction bound.\n")); ir.addr -= 1; goto no_support; break; - /* bswap reg */ - case 0x0fc8: + case 0x0fc8: /* bswap reg */ case 0x0fc9: case 0x0fca: case 0x0fcb: @@ -4917,8 +5514,7 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG ((opcode & 7) | ir.rex_b); break; - /* salc */ - case 0xd6: + case 0xd6: /* salc */ if (ir.regmap[X86_RECORD_R8_REGNUM]) { ir.addr -= 1; @@ -4928,44 +5524,34 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* loopnz */ - case 0xe0: - /* loopz */ - case 0xe1: - /* loop */ - case 0xe2: - /* jecxz */ - case 0xe3: + case 0xe0: /* loopnz */ + case 0xe1: /* loopz */ + case 0xe2: /* loop */ + case 0xe3: /* jecxz */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* wrmsr */ - case 0x0f30: - printf_unfiltered (_("Process record doesn't support " + case 0x0f30: /* wrmsr */ + printf_unfiltered (_("Process record does not support " "instruction wrmsr.\n")); ir.addr -= 2; goto no_support; break; - /* rdmsr */ - case 0x0f32: - printf_unfiltered (_("Process record doesn't support " + case 0x0f32: /* rdmsr */ + printf_unfiltered (_("Process record does not support " "instruction rdmsr.\n")); ir.addr -= 2; goto no_support; break; - /* rdtsc */ - case 0x0f31: - printf_unfiltered (_("Process record doesn't support " - "instruction rdtsc.\n")); - ir.addr -= 2; - goto no_support; + case 0x0f31: /* rdtsc */ + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM); break; - /* sysenter */ - case 0x0f34: + case 0x0f34: /* sysenter */ { int ret; if (ir.regmap[X86_RECORD_R8_REGNUM]) @@ -4973,63 +5559,58 @@ reswitch: ir.addr -= 2; goto no_support; } - if (gdbarch_tdep (gdbarch)->i386_sysenter_record == NULL) + if (tdep->i386_sysenter_record == NULL) { - printf_unfiltered (_("Process record doesn't support " + printf_unfiltered (_("Process record does not support " "instruction sysenter.\n")); ir.addr -= 2; goto no_support; } - ret = gdbarch_tdep (gdbarch)->i386_sysenter_record (ir.regcache); + ret = tdep->i386_sysenter_record (ir.regcache); if (ret) return ret; } break; - /* sysexit */ - case 0x0f35: - printf_unfiltered (_("Process record doesn't support " + case 0x0f35: /* sysexit */ + printf_unfiltered (_("Process record does not support " "instruction sysexit.\n")); ir.addr -= 2; goto no_support; break; - /* syscall */ - case 0x0f05: + case 0x0f05: /* syscall */ { int ret; - if (gdbarch_tdep (gdbarch)->i386_syscall_record == NULL) + if (tdep->i386_syscall_record == NULL) { - printf_unfiltered (_("Process record doesn't support " + printf_unfiltered (_("Process record does not support " "instruction syscall.\n")); ir.addr -= 2; goto no_support; } - ret = gdbarch_tdep (gdbarch)->i386_syscall_record (ir.regcache); + ret = tdep->i386_syscall_record (ir.regcache); if (ret) return ret; } break; - /* sysret */ - case 0x0f07: - printf_unfiltered (_("Process record doesn't support " + case 0x0f07: /* sysret */ + printf_unfiltered (_("Process record does not support " "instruction sysret.\n")); ir.addr -= 2; goto no_support; break; - /* cpuid */ - case 0x0fa2: + case 0x0fa2: /* cpuid */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM); I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBX_REGNUM); break; - /* hlt */ - case 0xf4: - printf_unfiltered (_("Process record doesn't support " + case 0xf4: /* hlt */ + printf_unfiltered (_("Process record does not support " "instruction hlt.\n")); ir.addr -= 1; goto no_support; @@ -5040,10 +5621,8 @@ reswitch: return -1; switch (ir.reg) { - /* sldt */ - case 0: - /* str */ - case 1: + case 0: /* sldt */ + case 1: /* str */ if (ir.mod == 3) I386_RECORD_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); else @@ -5053,15 +5632,11 @@ reswitch: return -1; } break; - /* lldt */ - case 2: - /* ltr */ - case 3: + case 2: /* lldt */ + case 3: /* ltr */ break; - /* verr */ - case 4: - /* verw */ - case 5: + case 4: /* verr */ + case 5: /* verw */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; default: @@ -5077,10 +5652,9 @@ reswitch: return -1; switch (ir.reg) { - /* sgdt */ - case 0: + case 0: /* sgdt */ { - uint64_t tmpu64; + uint64_t addr64; if (ir.mod == 3) { @@ -5090,28 +5664,36 @@ reswitch: } if (ir.override >= 0) { - warning (_("Process record ignores the memory " - "change of instruction at " - "address %s because it can't get " - "the value of the segment " - "register."), - paddress (gdbarch, ir.orig_addr)); + if (record_memory_query) + { + int q; + + target_terminal_ours (); + q = yquery (_("\ +Process record ignores the memory change of instruction at address %s\n\ +because it can't get the value of the segment register.\n\ +Do you want to stop the program?"), + paddress (gdbarch, ir.orig_addr)); + target_terminal_inferior (); + if (q) + return -1; + } } else { - if (i386_record_lea_modrm_addr (&ir, &tmpu64)) + if (i386_record_lea_modrm_addr (&ir, &addr64)) return -1; - if (record_arch_list_add_mem (tmpu64, 2)) + if (record_arch_list_add_mem (addr64, 2)) return -1; - tmpu64 += 2; + addr64 += 2; if (ir.regmap[X86_RECORD_R8_REGNUM]) { - if (record_arch_list_add_mem (tmpu64, 8)) + if (record_arch_list_add_mem (addr64, 8)) return -1; } else { - if (record_arch_list_add_mem (tmpu64, 4)) + if (record_arch_list_add_mem (addr64, 4)) return -1; } } @@ -5122,11 +5704,9 @@ reswitch: { switch (ir.rm) { - /* monitor */ - case 0: + case 0: /* monitor */ break; - /* mwait */ - case 1: + case 1: /* mwait */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; default: @@ -5141,39 +5721,58 @@ reswitch: /* sidt */ if (ir.override >= 0) { - warning (_("Process record ignores the memory " - "change of instruction at " - "address %s because it can't get " - "the value of the segment " - "register."), - paddress (gdbarch, ir.orig_addr)); + if (record_memory_query) + { + int q; + + target_terminal_ours (); + q = yquery (_("\ +Process record ignores the memory change of instruction at address %s\n\ +because it can't get the value of the segment register.\n\ +Do you want to stop the program?"), + paddress (gdbarch, ir.orig_addr)); + target_terminal_inferior (); + if (q) + return -1; + } } else { - uint64_t tmpu64; + uint64_t addr64; - if (i386_record_lea_modrm_addr (&ir, &tmpu64)) + if (i386_record_lea_modrm_addr (&ir, &addr64)) return -1; - if (record_arch_list_add_mem (tmpu64, 2)) + if (record_arch_list_add_mem (addr64, 2)) return -1; - addr += 2; + addr64 += 2; if (ir.regmap[X86_RECORD_R8_REGNUM]) { - if (record_arch_list_add_mem (tmpu64, 8)) + if (record_arch_list_add_mem (addr64, 8)) return -1; } else { - if (record_arch_list_add_mem (tmpu64, 4)) + if (record_arch_list_add_mem (addr64, 4)) return -1; } } } break; - /* lgdt */ - case 2: - /* lidt */ - case 3: + case 2: /* lgdt */ + if (ir.mod == 3) + { + /* xgetbv */ + if (ir.rm == 0) + { + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM); + break; + } + /* xsetbv */ + else if (ir.rm == 1) + break; + } + case 3: /* lidt */ if (ir.mod == 3) { ir.addr -= 3; @@ -5181,8 +5780,7 @@ reswitch: goto no_support; } break; - /* smsw */ - case 4: + case 4: /* smsw */ if (ir.mod == 3) { if (record_arch_list_add_reg (ir.regcache, ir.rm | ir.rex_b)) @@ -5196,12 +5794,10 @@ reswitch: } I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* lmsw */ - case 6: + case 6: /* lmsw */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* invlpg */ - case 7: + case 7: /* invlpg */ if (ir.mod == 3) { if (ir.rm == 0 && ir.regmap[X86_RECORD_R8_REGNUM]) @@ -5224,14 +5820,11 @@ reswitch: } break; - /* invd */ - case 0x0f08: - /* wbinvd */ - case 0x0f09: + case 0x0f08: /* invd */ + case 0x0f09: /* wbinvd */ break; - /* arpl */ - case 0x63: + case 0x63: /* arpl */ if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3 || ir.regmap[X86_RECORD_R8_REGNUM]) @@ -5249,10 +5842,8 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* lar */ - case 0x0f02: - /* lsl */ - case 0x0f03: + case 0x0f02: /* lar */ + case 0x0f03: /* lsl */ if (i386_record_modrm (&ir)) return -1; I386_RECORD_ARCH_LIST_ADD_REG (ir.reg | rex_r); @@ -5270,7 +5861,6 @@ reswitch: } break; - /* nop (multi byte) */ case 0x0f19: case 0x0f1a: case 0x0f1b: @@ -5278,12 +5868,11 @@ reswitch: case 0x0f1d: case 0x0f1e: case 0x0f1f: + /* nop (multi byte) */ break; - /* mov reg, crN */ - case 0x0f20: - /* mov crN, reg */ - case 0x0f22: + case 0x0f20: /* mov reg, crN */ + case 0x0f22: /* mov crN, reg */ if (i386_record_modrm (&ir)) return -1; if ((ir.modrm & 0xc0) != 0xc0) @@ -5312,10 +5901,8 @@ reswitch: } break; - /* mov reg, drN */ - case 0x0f21: - /* mov drN, reg */ - case 0x0f23: + case 0x0f21: /* mov reg, drN */ + case 0x0f23: /* mov drN, reg */ if (i386_record_modrm (&ir)) return -1; if ((ir.modrm & 0xc0) != 0xc0 || ir.reg == 4 @@ -5331,19 +5918,820 @@ reswitch: I386_RECORD_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); break; - /* clts */ - case 0x0f06: + case 0x0f06: /* clts */ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; - /* MMX/SSE/SSE2/PNI support */ - /* XXX */ + /* MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 */ + + case 0x0f0d: /* 3DNow! prefetch */ + break; + + case 0x0f0e: /* 3DNow! femms */ + case 0x0f77: /* emms */ + if (i386_fpc_regnum_p (gdbarch, I387_FTAG_REGNUM(tdep))) + goto no_support; + record_arch_list_add_reg (ir.regcache, I387_FTAG_REGNUM(tdep)); + break; + + case 0x0f0f: /* 3DNow! data */ + if (i386_record_modrm (&ir)) + return -1; + if (target_read_memory (ir.addr, &opcode8, 1)) + { + printf_unfiltered (_("Process record: error reading memory at " + "addr %s len = 1.\n"), + paddress (gdbarch, ir.addr)); + return -1; + } + ir.addr++; + switch (opcode8) + { + case 0x0c: /* 3DNow! pi2fw */ + case 0x0d: /* 3DNow! pi2fd */ + case 0x1c: /* 3DNow! pf2iw */ + case 0x1d: /* 3DNow! pf2id */ + case 0x8a: /* 3DNow! pfnacc */ + case 0x8e: /* 3DNow! pfpnacc */ + case 0x90: /* 3DNow! pfcmpge */ + case 0x94: /* 3DNow! pfmin */ + case 0x96: /* 3DNow! pfrcp */ + case 0x97: /* 3DNow! pfrsqrt */ + case 0x9a: /* 3DNow! pfsub */ + case 0x9e: /* 3DNow! pfadd */ + case 0xa0: /* 3DNow! pfcmpgt */ + case 0xa4: /* 3DNow! pfmax */ + case 0xa6: /* 3DNow! pfrcpit1 */ + case 0xa7: /* 3DNow! pfrsqit1 */ + case 0xaa: /* 3DNow! pfsubr */ + case 0xae: /* 3DNow! pfacc */ + case 0xb0: /* 3DNow! pfcmpeq */ + case 0xb4: /* 3DNow! pfmul */ + case 0xb6: /* 3DNow! pfrcpit2 */ + case 0xb7: /* 3DNow! pmulhrw */ + case 0xbb: /* 3DNow! pswapd */ + case 0xbf: /* 3DNow! pavgusb */ + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) + goto no_support_3dnow_data; + record_arch_list_add_reg (ir.regcache, ir.reg); + break; + + default: +no_support_3dnow_data: + opcode = (opcode << 8) | opcode8; + goto no_support; + break; + } + break; + + case 0x0faa: /* rsm */ + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBX_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBP_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); + break; + + case 0x0fae: + if (i386_record_modrm (&ir)) + return -1; + switch(ir.reg) + { + case 0: /* fxsave */ + { + uint64_t tmpu64; + + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + if (i386_record_lea_modrm_addr (&ir, &tmpu64)) + return -1; + if (record_arch_list_add_mem (tmpu64, 512)) + return -1; + } + break; + + case 1: /* fxrstor */ + { + int i; + + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + + for (i = I387_MM0_REGNUM (tdep); + i386_mmx_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + + for (i = I387_XMM0_REGNUM (tdep); + i386_xmm_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + + if (i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) + record_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep)); + + for (i = I387_ST0_REGNUM (tdep); + i386_fp_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + + for (i = I387_FCTRL_REGNUM (tdep); + i386_fpc_regnum_p (gdbarch, i); i++) + record_arch_list_add_reg (ir.regcache, i); + } + break; + + case 2: /* ldmxcsr */ + if (!i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) + goto no_support; + record_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep)); + break; + + case 3: /* stmxcsr */ + ir.ot = OT_LONG; + if (i386_record_lea_modrm (&ir)) + return -1; + break; + + case 5: /* lfence */ + case 6: /* mfence */ + case 7: /* sfence clflush */ + break; + + default: + opcode = (opcode << 8) | ir.modrm; + goto no_support; + break; + } + break; + + case 0x0fc3: /* movnti */ + ir.ot = (ir.dflag == 2) ? OT_QUAD : OT_LONG; + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + goto no_support; + ir.reg |= rex_r; + if (i386_record_lea_modrm (&ir)) + return -1; + break; + + /* Add prefix to opcode. */ + case 0x0f10: + case 0x0f11: + case 0x0f12: + case 0x0f13: + case 0x0f14: + case 0x0f15: + case 0x0f16: + case 0x0f17: + case 0x0f28: + case 0x0f29: + case 0x0f2a: + case 0x0f2b: + case 0x0f2c: + case 0x0f2d: + case 0x0f2e: + case 0x0f2f: + case 0x0f38: + case 0x0f39: + case 0x0f3a: + case 0x0f50: + case 0x0f51: + case 0x0f52: + case 0x0f53: + case 0x0f54: + case 0x0f55: + case 0x0f56: + case 0x0f57: + case 0x0f58: + case 0x0f59: + case 0x0f5a: + case 0x0f5b: + case 0x0f5c: + case 0x0f5d: + case 0x0f5e: + case 0x0f5f: + case 0x0f60: + case 0x0f61: + case 0x0f62: + case 0x0f63: + case 0x0f64: + case 0x0f65: + case 0x0f66: + case 0x0f67: + case 0x0f68: + case 0x0f69: + case 0x0f6a: + case 0x0f6b: + case 0x0f6c: + case 0x0f6d: + case 0x0f6e: + case 0x0f6f: + case 0x0f70: + case 0x0f71: + case 0x0f72: + case 0x0f73: + case 0x0f74: + case 0x0f75: + case 0x0f76: + case 0x0f7c: + case 0x0f7d: + case 0x0f7e: + case 0x0f7f: + case 0x0fb8: + case 0x0fc2: + case 0x0fc4: + case 0x0fc5: + case 0x0fc6: + case 0x0fd0: + case 0x0fd1: + case 0x0fd2: + case 0x0fd3: + case 0x0fd4: + case 0x0fd5: + case 0x0fd6: + case 0x0fd7: + case 0x0fd8: + case 0x0fd9: + case 0x0fda: + case 0x0fdb: + case 0x0fdc: + case 0x0fdd: + case 0x0fde: + case 0x0fdf: + case 0x0fe0: + case 0x0fe1: + case 0x0fe2: + case 0x0fe3: + case 0x0fe4: + case 0x0fe5: + case 0x0fe6: + case 0x0fe7: + case 0x0fe8: + case 0x0fe9: + case 0x0fea: + case 0x0feb: + case 0x0fec: + case 0x0fed: + case 0x0fee: + case 0x0fef: + case 0x0ff0: + case 0x0ff1: + case 0x0ff2: + case 0x0ff3: + case 0x0ff4: + case 0x0ff5: + case 0x0ff6: + case 0x0ff7: + case 0x0ff8: + case 0x0ff9: + case 0x0ffa: + case 0x0ffb: + case 0x0ffc: + case 0x0ffd: + case 0x0ffe: + switch (prefixes) + { + case PREFIX_REPNZ: + opcode |= 0xf20000; + break; + case PREFIX_DATA: + opcode |= 0x660000; + break; + case PREFIX_REPZ: + opcode |= 0xf30000; + break; + } +reswitch_prefix_add: + switch (opcode) + { + case 0x0f38: + case 0x660f38: + case 0xf20f38: + case 0x0f3a: + case 0x660f3a: + if (target_read_memory (ir.addr, &opcode8, 1)) + { + printf_unfiltered (_("Process record: error reading memory at " + "addr %s len = 1.\n"), + paddress (gdbarch, ir.addr)); + return -1; + } + ir.addr++; + opcode = (uint32_t) opcode8 | opcode << 8; + goto reswitch_prefix_add; + break; + + case 0x0f10: /* movups */ + case 0x660f10: /* movupd */ + case 0xf30f10: /* movss */ + case 0xf20f10: /* movsd */ + case 0x0f12: /* movlps */ + case 0x660f12: /* movlpd */ + case 0xf30f12: /* movsldup */ + case 0xf20f12: /* movddup */ + case 0x0f14: /* unpcklps */ + case 0x660f14: /* unpcklpd */ + case 0x0f15: /* unpckhps */ + case 0x660f15: /* unpckhpd */ + case 0x0f16: /* movhps */ + case 0x660f16: /* movhpd */ + case 0xf30f16: /* movshdup */ + case 0x0f28: /* movaps */ + case 0x660f28: /* movapd */ + case 0x0f2a: /* cvtpi2ps */ + case 0x660f2a: /* cvtpi2pd */ + case 0xf30f2a: /* cvtsi2ss */ + case 0xf20f2a: /* cvtsi2sd */ + case 0x0f2c: /* cvttps2pi */ + case 0x660f2c: /* cvttpd2pi */ + case 0x0f2d: /* cvtps2pi */ + case 0x660f2d: /* cvtpd2pi */ + case 0x660f3800: /* pshufb */ + case 0x660f3801: /* phaddw */ + case 0x660f3802: /* phaddd */ + case 0x660f3803: /* phaddsw */ + case 0x660f3804: /* pmaddubsw */ + case 0x660f3805: /* phsubw */ + case 0x660f3806: /* phsubd */ + case 0x660f3807: /* phaddsw */ + case 0x660f3808: /* psignb */ + case 0x660f3809: /* psignw */ + case 0x660f380a: /* psignd */ + case 0x660f380b: /* pmulhrsw */ + case 0x660f3810: /* pblendvb */ + case 0x660f3814: /* blendvps */ + case 0x660f3815: /* blendvpd */ + case 0x660f381c: /* pabsb */ + case 0x660f381d: /* pabsw */ + case 0x660f381e: /* pabsd */ + case 0x660f3820: /* pmovsxbw */ + case 0x660f3821: /* pmovsxbd */ + case 0x660f3822: /* pmovsxbq */ + case 0x660f3823: /* pmovsxwd */ + case 0x660f3824: /* pmovsxwq */ + case 0x660f3825: /* pmovsxdq */ + case 0x660f3828: /* pmuldq */ + case 0x660f3829: /* pcmpeqq */ + case 0x660f382a: /* movntdqa */ + case 0x660f3a08: /* roundps */ + case 0x660f3a09: /* roundpd */ + case 0x660f3a0a: /* roundss */ + case 0x660f3a0b: /* roundsd */ + case 0x660f3a0c: /* blendps */ + case 0x660f3a0d: /* blendpd */ + case 0x660f3a0e: /* pblendw */ + case 0x660f3a0f: /* palignr */ + case 0x660f3a20: /* pinsrb */ + case 0x660f3a21: /* insertps */ + case 0x660f3a22: /* pinsrd pinsrq */ + case 0x660f3a40: /* dpps */ + case 0x660f3a41: /* dppd */ + case 0x660f3a42: /* mpsadbw */ + case 0x660f3a60: /* pcmpestrm */ + case 0x660f3a61: /* pcmpestri */ + case 0x660f3a62: /* pcmpistrm */ + case 0x660f3a63: /* pcmpistri */ + case 0x0f51: /* sqrtps */ + case 0x660f51: /* sqrtpd */ + case 0xf20f51: /* sqrtsd */ + case 0xf30f51: /* sqrtss */ + case 0x0f52: /* rsqrtps */ + case 0xf30f52: /* rsqrtss */ + case 0x0f53: /* rcpps */ + case 0xf30f53: /* rcpss */ + case 0x0f54: /* andps */ + case 0x660f54: /* andpd */ + case 0x0f55: /* andnps */ + case 0x660f55: /* andnpd */ + case 0x0f56: /* orps */ + case 0x660f56: /* orpd */ + case 0x0f57: /* xorps */ + case 0x660f57: /* xorpd */ + case 0x0f58: /* addps */ + case 0x660f58: /* addpd */ + case 0xf20f58: /* addsd */ + case 0xf30f58: /* addss */ + case 0x0f59: /* mulps */ + case 0x660f59: /* mulpd */ + case 0xf20f59: /* mulsd */ + case 0xf30f59: /* mulss */ + case 0x0f5a: /* cvtps2pd */ + case 0x660f5a: /* cvtpd2ps */ + case 0xf20f5a: /* cvtsd2ss */ + case 0xf30f5a: /* cvtss2sd */ + case 0x0f5b: /* cvtdq2ps */ + case 0x660f5b: /* cvtps2dq */ + case 0xf30f5b: /* cvttps2dq */ + case 0x0f5c: /* subps */ + case 0x660f5c: /* subpd */ + case 0xf20f5c: /* subsd */ + case 0xf30f5c: /* subss */ + case 0x0f5d: /* minps */ + case 0x660f5d: /* minpd */ + case 0xf20f5d: /* minsd */ + case 0xf30f5d: /* minss */ + case 0x0f5e: /* divps */ + case 0x660f5e: /* divpd */ + case 0xf20f5e: /* divsd */ + case 0xf30f5e: /* divss */ + case 0x0f5f: /* maxps */ + case 0x660f5f: /* maxpd */ + case 0xf20f5f: /* maxsd */ + case 0xf30f5f: /* maxss */ + case 0x660f60: /* punpcklbw */ + case 0x660f61: /* punpcklwd */ + case 0x660f62: /* punpckldq */ + case 0x660f63: /* packsswb */ + case 0x660f64: /* pcmpgtb */ + case 0x660f65: /* pcmpgtw */ + case 0x660f66: /* pcmpgtl */ + case 0x660f67: /* packuswb */ + case 0x660f68: /* punpckhbw */ + case 0x660f69: /* punpckhwd */ + case 0x660f6a: /* punpckhdq */ + case 0x660f6b: /* packssdw */ + case 0x660f6c: /* punpcklqdq */ + case 0x660f6d: /* punpckhqdq */ + case 0x660f6e: /* movd */ + case 0x660f6f: /* movdqa */ + case 0xf30f6f: /* movdqu */ + case 0x660f70: /* pshufd */ + case 0xf20f70: /* pshuflw */ + case 0xf30f70: /* pshufhw */ + case 0x660f74: /* pcmpeqb */ + case 0x660f75: /* pcmpeqw */ + case 0x660f76: /* pcmpeql */ + case 0x660f7c: /* haddpd */ + case 0xf20f7c: /* haddps */ + case 0x660f7d: /* hsubpd */ + case 0xf20f7d: /* hsubps */ + case 0xf30f7e: /* movq */ + case 0x0fc2: /* cmpps */ + case 0x660fc2: /* cmppd */ + case 0xf20fc2: /* cmpsd */ + case 0xf30fc2: /* cmpss */ + case 0x660fc4: /* pinsrw */ + case 0x0fc6: /* shufps */ + case 0x660fc6: /* shufpd */ + case 0x660fd0: /* addsubpd */ + case 0xf20fd0: /* addsubps */ + case 0x660fd1: /* psrlw */ + case 0x660fd2: /* psrld */ + case 0x660fd3: /* psrlq */ + case 0x660fd4: /* paddq */ + case 0x660fd5: /* pmullw */ + case 0xf30fd6: /* movq2dq */ + case 0x660fd8: /* psubusb */ + case 0x660fd9: /* psubusw */ + case 0x660fda: /* pminub */ + case 0x660fdb: /* pand */ + case 0x660fdc: /* paddusb */ + case 0x660fdd: /* paddusw */ + case 0x660fde: /* pmaxub */ + case 0x660fdf: /* pandn */ + case 0x660fe0: /* pavgb */ + case 0x660fe1: /* psraw */ + case 0x660fe2: /* psrad */ + case 0x660fe3: /* pavgw */ + case 0x660fe4: /* pmulhuw */ + case 0x660fe5: /* pmulhw */ + case 0x660fe6: /* cvttpd2dq */ + case 0xf20fe6: /* cvtpd2dq */ + case 0xf30fe6: /* cvtdq2pd */ + case 0x660fe8: /* psubsb */ + case 0x660fe9: /* psubsw */ + case 0x660fea: /* pminsw */ + case 0x660feb: /* por */ + case 0x660fec: /* paddsb */ + case 0x660fed: /* paddsw */ + case 0x660fee: /* pmaxsw */ + case 0x660fef: /* pxor */ + case 0x660ff0: /* lddqu */ + case 0x660ff1: /* psllw */ + case 0x660ff2: /* pslld */ + case 0x660ff3: /* psllq */ + case 0x660ff4: /* pmuludq */ + case 0x660ff5: /* pmaddwd */ + case 0x660ff6: /* psadbw */ + case 0x660ff8: /* psubb */ + case 0x660ff9: /* psubw */ + case 0x660ffa: /* psubl */ + case 0x660ffb: /* psubq */ + case 0x660ffc: /* paddb */ + case 0x660ffd: /* paddw */ + case 0x660ffe: /* paddl */ + if (i386_record_modrm (&ir)) + return -1; + ir.reg |= rex_r; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.reg)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.reg); + if ((opcode & 0xfffffffc) == 0x660f3a60) + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + case 0x0f11: /* movups */ + case 0x660f11: /* movupd */ + case 0xf30f11: /* movss */ + case 0xf20f11: /* movsd */ + case 0x0f13: /* movlps */ + case 0x660f13: /* movlpd */ + case 0x0f17: /* movhps */ + case 0x660f17: /* movhpd */ + case 0x0f29: /* movaps */ + case 0x660f29: /* movapd */ + case 0x660f3a14: /* pextrb */ + case 0x660f3a15: /* pextrw */ + case 0x660f3a16: /* pextrd pextrq */ + case 0x660f3a17: /* extractps */ + case 0x660f7f: /* movdqa */ + case 0xf30f7f: /* movdqu */ + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + { + if (opcode == 0x0f13 || opcode == 0x660f13 + || opcode == 0x0f17 || opcode == 0x660f17) + goto no_support; + ir.rm |= ir.rex_b; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.rm); + } + else + { + switch (opcode) + { + case 0x660f3a14: + ir.ot = OT_BYTE; + break; + case 0x660f3a15: + ir.ot = OT_WORD; + break; + case 0x660f3a16: + ir.ot = OT_LONG; + break; + case 0x660f3a17: + ir.ot = OT_QUAD; + break; + default: + ir.ot = OT_DQUAD; + break; + } + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0x0f2b: /* movntps */ + case 0x660f2b: /* movntpd */ + case 0x0fe7: /* movntq */ + case 0x660fe7: /* movntdq */ + if (ir.mod == 3) + goto no_support; + if (opcode == 0x0fe7) + ir.ot = OT_QUAD; + else + ir.ot = OT_DQUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + break; + + case 0xf30f2c: /* cvttss2si */ + case 0xf20f2c: /* cvttsd2si */ + case 0xf30f2d: /* cvtss2si */ + case 0xf20f2d: /* cvtsd2si */ + case 0xf20f38f0: /* crc32 */ + case 0xf20f38f1: /* crc32 */ + case 0x0f50: /* movmskps */ + case 0x660f50: /* movmskpd */ + case 0x0fc5: /* pextrw */ + case 0x660fc5: /* pextrw */ + case 0x0fd7: /* pmovmskb */ + case 0x660fd7: /* pmovmskb */ + I386_RECORD_ARCH_LIST_ADD_REG (ir.reg | rex_r); + break; + + case 0x0f3800: /* pshufb */ + case 0x0f3801: /* phaddw */ + case 0x0f3802: /* phaddd */ + case 0x0f3803: /* phaddsw */ + case 0x0f3804: /* pmaddubsw */ + case 0x0f3805: /* phsubw */ + case 0x0f3806: /* phsubd */ + case 0x0f3807: /* phaddsw */ + case 0x0f3808: /* psignb */ + case 0x0f3809: /* psignw */ + case 0x0f380a: /* psignd */ + case 0x0f380b: /* pmulhrsw */ + case 0x0f381c: /* pabsb */ + case 0x0f381d: /* pabsw */ + case 0x0f381e: /* pabsd */ + case 0x0f382b: /* packusdw */ + case 0x0f3830: /* pmovzxbw */ + case 0x0f3831: /* pmovzxbd */ + case 0x0f3832: /* pmovzxbq */ + case 0x0f3833: /* pmovzxwd */ + case 0x0f3834: /* pmovzxwq */ + case 0x0f3835: /* pmovzxdq */ + case 0x0f3837: /* pcmpgtq */ + case 0x0f3838: /* pminsb */ + case 0x0f3839: /* pminsd */ + case 0x0f383a: /* pminuw */ + case 0x0f383b: /* pminud */ + case 0x0f383c: /* pmaxsb */ + case 0x0f383d: /* pmaxsd */ + case 0x0f383e: /* pmaxuw */ + case 0x0f383f: /* pmaxud */ + case 0x0f3840: /* pmulld */ + case 0x0f3841: /* phminposuw */ + case 0x0f3a0f: /* palignr */ + case 0x0f60: /* punpcklbw */ + case 0x0f61: /* punpcklwd */ + case 0x0f62: /* punpckldq */ + case 0x0f63: /* packsswb */ + case 0x0f64: /* pcmpgtb */ + case 0x0f65: /* pcmpgtw */ + case 0x0f66: /* pcmpgtl */ + case 0x0f67: /* packuswb */ + case 0x0f68: /* punpckhbw */ + case 0x0f69: /* punpckhwd */ + case 0x0f6a: /* punpckhdq */ + case 0x0f6b: /* packssdw */ + case 0x0f6e: /* movd */ + case 0x0f6f: /* movq */ + case 0x0f70: /* pshufw */ + case 0x0f74: /* pcmpeqb */ + case 0x0f75: /* pcmpeqw */ + case 0x0f76: /* pcmpeql */ + case 0x0fc4: /* pinsrw */ + case 0x0fd1: /* psrlw */ + case 0x0fd2: /* psrld */ + case 0x0fd3: /* psrlq */ + case 0x0fd4: /* paddq */ + case 0x0fd5: /* pmullw */ + case 0xf20fd6: /* movdq2q */ + case 0x0fd8: /* psubusb */ + case 0x0fd9: /* psubusw */ + case 0x0fda: /* pminub */ + case 0x0fdb: /* pand */ + case 0x0fdc: /* paddusb */ + case 0x0fdd: /* paddusw */ + case 0x0fde: /* pmaxub */ + case 0x0fdf: /* pandn */ + case 0x0fe0: /* pavgb */ + case 0x0fe1: /* psraw */ + case 0x0fe2: /* psrad */ + case 0x0fe3: /* pavgw */ + case 0x0fe4: /* pmulhuw */ + case 0x0fe5: /* pmulhw */ + case 0x0fe8: /* psubsb */ + case 0x0fe9: /* psubsw */ + case 0x0fea: /* pminsw */ + case 0x0feb: /* por */ + case 0x0fec: /* paddsb */ + case 0x0fed: /* paddsw */ + case 0x0fee: /* pmaxsw */ + case 0x0fef: /* pxor */ + case 0x0ff1: /* psllw */ + case 0x0ff2: /* pslld */ + case 0x0ff3: /* psllq */ + case 0x0ff4: /* pmuludq */ + case 0x0ff5: /* pmaddwd */ + case 0x0ff6: /* psadbw */ + case 0x0ff8: /* psubb */ + case 0x0ff9: /* psubw */ + case 0x0ffa: /* psubl */ + case 0x0ffb: /* psubq */ + case 0x0ffc: /* paddb */ + case 0x0ffd: /* paddw */ + case 0x0ffe: /* paddl */ + if (i386_record_modrm (&ir)) + return -1; + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_MM0_REGNUM (tdep) + ir.reg); + break; + + case 0x0f71: /* psllw */ + case 0x0f72: /* pslld */ + case 0x0f73: /* psllq */ + if (i386_record_modrm (&ir)) + return -1; + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_MM0_REGNUM (tdep) + ir.rm); + break; + + case 0x660f71: /* psllw */ + case 0x660f72: /* pslld */ + case 0x660f73: /* psllq */ + if (i386_record_modrm (&ir)) + return -1; + ir.rm |= ir.rex_b; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.rm); + break; + + case 0x0f7e: /* movd */ + case 0x660f7e: /* movd */ + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + I386_RECORD_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); + else + { + if (ir.dflag == 2) + ir.ot = OT_QUAD; + else + ir.ot = OT_LONG; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0x0f7f: /* movq */ + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + { + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_MM0_REGNUM (tdep) + ir.rm); + } + else + { + ir.ot = OT_QUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0xf30fb8: /* popcnt */ + if (i386_record_modrm (&ir)) + return -1; + I386_RECORD_ARCH_LIST_ADD_REG (ir.reg); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + case 0x660fd6: /* movq */ + if (i386_record_modrm (&ir)) + return -1; + if (ir.mod == 3) + { + ir.rm |= ir.rex_b; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_arch_list_add_reg (ir.regcache, + I387_XMM0_REGNUM (tdep) + ir.rm); + } + else + { + ir.ot = OT_QUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0x660f3817: /* ptest */ + case 0x0f2e: /* ucomiss */ + case 0x660f2e: /* ucomisd */ + case 0x0f2f: /* comiss */ + case 0x660f2f: /* comisd */ + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + case 0x0ff7: /* maskmovq */ + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_REDI_REGNUM], + &addr); + if (record_arch_list_add_mem (addr, 64)) + return -1; + break; + + case 0x660ff7: /* maskmovdqu */ + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_REDI_REGNUM], + &addr); + if (record_arch_list_add_mem (addr, 128)) + return -1; + break; + + default: + goto no_support; + break; + } + break; default: - if (opcode > 0xff) - ir.addr -= 2; - else - ir.addr -= 1; goto no_support; break; } @@ -5355,10 +6743,11 @@ reswitch: return 0; -no_support: - printf_unfiltered (_("Process record doesn't support instruction 0x%02x " - "at address %s.\n"), - (unsigned int) (opcode), paddress (gdbarch, ir.addr)); + no_support: + printf_unfiltered (_("Process record does not support instruction 0x%02x " + "at address %s.\n"), + (unsigned int) (opcode), + paddress (gdbarch, ir.orig_addr)); return -1; } @@ -5371,12 +6760,131 @@ static const int i386_record_regmap[] = I386_DS_REGNUM, I386_ES_REGNUM, I386_FS_REGNUM, I386_GS_REGNUM }; +/* Check that the given address appears suitable for a fast + tracepoint, which on x86 means that we need an instruction of at + least 5 bytes, so that we can overwrite it with a 4-byte-offset + jump and not have to worry about program jumps to an address in the + middle of the tracepoint jump. Returns 1 if OK, and writes a size + of instruction to replace, and 0 if not, plus an explanatory + string. */ + +static int +i386_fast_tracepoint_valid_at (struct gdbarch *gdbarch, + CORE_ADDR addr, int *isize, char **msg) +{ + int len, jumplen; + static struct ui_file *gdb_null = NULL; + + /* This is based on the target agent using a 4-byte relative jump. + Alternate future possibilities include 8-byte offset for x86-84, + or 3-byte jumps if the program has trampoline space close by. */ + jumplen = 5; + + /* Dummy file descriptor for the disassembler. */ + if (!gdb_null) + gdb_null = ui_file_new (); + + /* Check for fit. */ + len = gdb_print_insn (gdbarch, addr, gdb_null, NULL); + if (len < jumplen) + { + /* Return a bit of target-specific detail to add to the caller's + generic failure message. */ + if (msg) + *msg = xstrprintf (_("; instruction is only %d bytes long, need at least %d bytes for the jump"), + len, jumplen); + return 0; + } + + if (isize) + *isize = len; + if (msg) + *msg = NULL; + return 1; +} + +static int +i386_validate_tdesc_p (struct gdbarch_tdep *tdep, + struct tdesc_arch_data *tdesc_data) +{ + const struct target_desc *tdesc = tdep->tdesc; + const struct tdesc_feature *feature_core; + const struct tdesc_feature *feature_sse, *feature_avx; + int i, num_regs, valid_p; + + if (! tdesc_has_registers (tdesc)) + return 0; + + /* Get core registers. */ + feature_core = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.core"); + if (feature_core == NULL) + return 0; + + /* Get SSE registers. */ + feature_sse = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.sse"); + + /* Try AVX registers. */ + feature_avx = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.avx"); + + valid_p = 1; + + /* The XCR0 bits. */ + if (feature_avx) + { + /* AVX register description requires SSE register description. */ + if (!feature_sse) + return 0; + + tdep->xcr0 = I386_XSTATE_AVX_MASK; + + /* It may have been set by OSABI initialization function. */ + if (tdep->num_ymm_regs == 0) + { + tdep->ymmh_register_names = i386_ymmh_names; + tdep->num_ymm_regs = 8; + tdep->ymm0h_regnum = I386_YMM0H_REGNUM; + } + + for (i = 0; i < tdep->num_ymm_regs; i++) + valid_p &= tdesc_numbered_register (feature_avx, tdesc_data, + tdep->ymm0h_regnum + i, + tdep->ymmh_register_names[i]); + } + else if (feature_sse) + tdep->xcr0 = I386_XSTATE_SSE_MASK; + else + { + tdep->xcr0 = I386_XSTATE_X87_MASK; + tdep->num_xmm_regs = 0; + } + + num_regs = tdep->num_core_regs; + for (i = 0; i < num_regs; i++) + valid_p &= tdesc_numbered_register (feature_core, tdesc_data, i, + tdep->register_names[i]); + + if (feature_sse) + { + /* Need to include %mxcsr, so add one. */ + num_regs += tdep->num_xmm_regs + 1; + for (; i < num_regs; i++) + valid_p &= tdesc_numbered_register (feature_sse, tdesc_data, i, + tdep->register_names[i]); + } + + return valid_p; +} + static struct gdbarch * i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) { struct gdbarch_tdep *tdep; struct gdbarch *gdbarch; + struct tdesc_arch_data *tdesc_data; + const struct target_desc *tdesc; + int mm0_regnum; + int ymm0_regnum; /* If there is already a candidate, use it. */ arches = gdbarch_list_lookup_by_info (arches, &info); @@ -5397,27 +6905,16 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) tdep->fpregset = NULL; tdep->sizeof_fpregset = I387_SIZEOF_FSAVE; + tdep->xstateregset = NULL; + /* The default settings include the FPU registers, the MMX registers and the SSE registers. This can be overridden for a specific ABI by adjusting the members `st0_regnum', `mm0_regnum' and `num_xmm_regs' of `struct gdbarch_tdep', otherwise the registers - will show up in the output of "info all-registers". Ideally we - should try to autodetect whether they are available, such that we - can prevent "info all-registers" from displaying registers that - aren't available. - - NOTE: kevinb/2003-07-13: ... if it's a choice between printing - [the SSE registers] always (even when they don't exist) or never - showing them to the user (even when they do exist), I prefer the - former over the latter. */ + will show up in the output of "info all-registers". */ tdep->st0_regnum = I386_ST0_REGNUM; - /* The MMX registers are implemented as pseudo-registers. Put off - calculating the register number for %mm0 until we know the number - of raw registers. */ - tdep->mm0_regnum = 0; - /* I386_NUM_XREGS includes %mxcsr, so substract one. */ tdep->num_xmm_regs = I386_NUM_XREGS - 1; @@ -5431,6 +6928,8 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) tdep->sc_pc_offset = -1; tdep->sc_sp_offset = -1; + tdep->xsave_xcr0_offset = -1; + tdep->record_regmap = i386_record_regmap; /* The format used for `long double' on almost all i386 targets is @@ -5444,12 +6943,6 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) alignment. */ set_gdbarch_long_double_bit (gdbarch, 96); - /* The default ABI includes general-purpose registers, - floating-point registers, and the SSE registers. */ - set_gdbarch_num_regs (gdbarch, I386_SSE_NUM_REGS); - set_gdbarch_register_name (gdbarch, i386_register_name); - set_gdbarch_register_type (gdbarch, i386_register_type); - /* Register numbers of various important registers. */ set_gdbarch_sp_regnum (gdbarch, I386_ESP_REGNUM); /* %esp */ set_gdbarch_pc_regnum (gdbarch, I386_EIP_REGNUM); /* %eip */ @@ -5520,11 +7013,6 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_frame_args_skip (gdbarch, 8); - /* Wire in the MMX registers. */ - set_gdbarch_num_pseudo_regs (gdbarch, i386_num_mmx_regs); - set_gdbarch_pseudo_register_read (gdbarch, i386_pseudo_register_read); - set_gdbarch_pseudo_register_write (gdbarch, i386_pseudo_register_write); - set_gdbarch_print_insn (gdbarch, i386_print_insn); set_gdbarch_dummy_id (gdbarch, i386_dummy_id); @@ -5533,7 +7021,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Add the i386 register groups. */ i386_add_reggroups (gdbarch); - set_gdbarch_register_reggroup_p (gdbarch, i386_register_reggroup_p); + tdep->register_reggroup_p = i386_register_reggroup_p; /* Helper for function argument information. */ set_gdbarch_fetch_pointer_argument (gdbarch, i386_fetch_pointer_argument); @@ -5551,9 +7039,105 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_base_set_default (gdbarch, &i386_frame_base); + /* Pseudo registers may be changed by amd64_init_abi. */ + set_gdbarch_pseudo_register_read (gdbarch, i386_pseudo_register_read); + set_gdbarch_pseudo_register_write (gdbarch, i386_pseudo_register_write); + + set_tdesc_pseudo_register_type (gdbarch, i386_pseudo_register_type); + set_tdesc_pseudo_register_name (gdbarch, i386_pseudo_register_name); + + /* Override the normal target description method to make the AVX + upper halves anonymous. */ + set_gdbarch_register_name (gdbarch, i386_register_name); + + /* Even though the default ABI only includes general-purpose registers, + floating-point registers and the SSE registers, we have to leave a + gap for the upper AVX registers. */ + set_gdbarch_num_regs (gdbarch, I386_AVX_NUM_REGS); + + /* Get the x86 target description from INFO. */ + tdesc = info.target_desc; + if (! tdesc_has_registers (tdesc)) + tdesc = tdesc_i386; + tdep->tdesc = tdesc; + + tdep->num_core_regs = I386_NUM_GREGS + I387_NUM_REGS; + tdep->register_names = i386_register_names; + + /* No upper YMM registers. */ + tdep->ymmh_register_names = NULL; + tdep->ymm0h_regnum = -1; + + tdep->num_byte_regs = 8; + tdep->num_word_regs = 8; + tdep->num_dword_regs = 0; + tdep->num_mmx_regs = 8; + tdep->num_ymm_regs = 0; + + tdesc_data = tdesc_data_alloc (); + + set_gdbarch_relocate_instruction (gdbarch, i386_relocate_instruction); + /* Hook in ABI-specific overrides, if they have been registered. */ + info.tdep_info = (void *) tdesc_data; gdbarch_init_osabi (info, gdbarch); + if (!i386_validate_tdesc_p (tdep, tdesc_data)) + { + tdesc_data_cleanup (tdesc_data); + xfree (tdep); + gdbarch_free (gdbarch); + return NULL; + } + + /* Wire in pseudo registers. Number of pseudo registers may be + changed. */ + set_gdbarch_num_pseudo_regs (gdbarch, (tdep->num_byte_regs + + tdep->num_word_regs + + tdep->num_dword_regs + + tdep->num_mmx_regs + + tdep->num_ymm_regs)); + + /* Target description may be changed. */ + tdesc = tdep->tdesc; + + tdesc_use_registers (gdbarch, tdesc, tdesc_data); + + /* Override gdbarch_register_reggroup_p set in tdesc_use_registers. */ + set_gdbarch_register_reggroup_p (gdbarch, tdep->register_reggroup_p); + + /* Make %al the first pseudo-register. */ + tdep->al_regnum = gdbarch_num_regs (gdbarch); + tdep->ax_regnum = tdep->al_regnum + tdep->num_byte_regs; + + ymm0_regnum = tdep->ax_regnum + tdep->num_word_regs; + if (tdep->num_dword_regs) + { + /* Support dword pseudo-registesr if it hasn't been disabled, */ + tdep->eax_regnum = ymm0_regnum; + ymm0_regnum += tdep->num_dword_regs; + } + else + tdep->eax_regnum = -1; + + mm0_regnum = ymm0_regnum; + if (tdep->num_ymm_regs) + { + /* Support YMM pseudo-registesr if it is available, */ + tdep->ymm0_regnum = ymm0_regnum; + mm0_regnum += tdep->num_ymm_regs; + } + else + tdep->ymm0_regnum = -1; + + if (tdep->num_mmx_regs != 0) + { + /* Support MMX pseudo-registesr if MMX hasn't been disabled, */ + tdep->mm0_regnum = mm0_regnum; + } + else + tdep->mm0_regnum = -1; + /* Hook in the legacy prologue-based unwinders last (fallback). */ frame_unwind_append_unwinder (gdbarch, &i386_sigtramp_frame_unwind); frame_unwind_append_unwinder (gdbarch, &i386_frame_unwind); @@ -5565,14 +7149,12 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_regset_from_core_section (gdbarch, i386_regset_from_core_section); - /* Unless support for MMX has been disabled, make %mm0 the first - pseudo-register. */ - if (tdep->mm0_regnum == 0) - tdep->mm0_regnum = gdbarch_num_regs (gdbarch); - set_gdbarch_skip_permanent_breakpoint (gdbarch, i386_skip_permanent_breakpoint); + set_gdbarch_fast_tracepoint_valid_at (gdbarch, + i386_fast_tracepoint_valid_at); + return gdbarch; } @@ -5627,4 +7209,12 @@ is \"default\"."), /* Initialize the i386-specific register groups. */ i386_init_reggroups (); + + /* Initialize the standard target descriptions. */ + initialize_tdesc_i386 (); + initialize_tdesc_i386_mmx (); + initialize_tdesc_i386_avx (); + + /* Tell remote stub that we support XML target description. */ + register_remote_support_xml ("i386"); } diff --git a/contrib/gdb-7/gdb/i386-tdep.h b/contrib/gdb-7/gdb/i386-tdep.h index b236532986..49e072734e 100644 --- a/contrib/gdb-7/gdb/i386-tdep.h +++ b/contrib/gdb-7/gdb/i386-tdep.h @@ -1,6 +1,6 @@ /* Target-dependent code for the i386. - Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -53,6 +53,20 @@ enum struct_return reg_struct_return /* Return "short" structures in registers. */ }; +/* Register classes as defined in the AMD x86-64 psABI. */ + +enum amd64_reg_class +{ + AMD64_INTEGER, + AMD64_SSE, + AMD64_SSEUP, + AMD64_X87, + AMD64_X87UP, + AMD64_COMPLEX_X87, + AMD64_NO_CLASS, + AMD64_MEMORY +}; + /* i386 architecture specific information. */ struct gdbarch_tdep { @@ -62,22 +76,110 @@ struct gdbarch_tdep int gregset_num_regs; size_t sizeof_gregset; + /* The general-purpose registers used to pass integers when making + function calls. This only applies to amd64, as all parameters + are passed through the stack on x86. */ + int call_dummy_num_integer_regs; + int *call_dummy_integer_regs; + + /* Used on amd64 only. Classify TYPE according to calling conventions, + and store the result in CLASS. */ + void (*classify) (struct type *type, enum amd64_reg_class class[2]); + + /* Used on amd64 only. Non-zero if the first few MEMORY arguments + should be passed by pointer. + + More precisely, MEMORY arguments are passed through the stack. + But certain architectures require that their address be passed + by register as well, if there are still some integer registers + available for argument passing. */ + int memory_args_by_pointer; + + /* Used on amd64 only. + + If non-zero, then the callers of a function are expected to reserve + some space in the stack just before the area where the PC is saved + so that the callee may save the integer-parameter registers there. + The amount of space is dependent on the list of registers used for + integer parameter passing (see component call_dummy_num_integer_regs + above). */ + int integer_param_regs_saved_in_caller_frame; + /* Floating-point registers. */ struct regset *fpregset; size_t sizeof_fpregset; + /* XSAVE extended state. */ + struct regset *xstateregset; + /* Register number for %st(0). The register numbers for the other registers follow from this one. Set this to -1 to indicate the absence of an FPU. */ int st0_regnum; + /* Number of MMX registers. */ + int num_mmx_regs; + /* Register number for %mm0. Set this to -1 to indicate the absence of MMX support. */ int mm0_regnum; + /* Number of pseudo YMM registers. */ + int num_ymm_regs; + + /* Register number for %ymm0. Set this to -1 to indicate the absence + of pseudo YMM register support. */ + int ymm0_regnum; + + /* Number of byte registers. */ + int num_byte_regs; + + /* Register pseudo number for %al. */ + int al_regnum; + + /* Number of pseudo word registers. */ + int num_word_regs; + + /* Register number for %ax. */ + int ax_regnum; + + /* Number of pseudo dword registers. */ + int num_dword_regs; + + /* Register number for %eax. Set this to -1 to indicate the absence + of pseudo dword register support. */ + int eax_regnum; + + /* Number of core registers. */ + int num_core_regs; + /* Number of SSE registers. */ int num_xmm_regs; + /* Bits of the extended control register 0 (the XFEATURE_ENABLED_MASK + register), excluding the x87 bit, which are supported by this GDB. + */ + uint64_t xcr0; + + /* Offset of XCR0 in XSAVE extended state. */ + int xsave_xcr0_offset; + + /* Register names. */ + const char **register_names; + + /* Register number for %ymm0h. Set this to -1 to indicate the absence + of upper YMM register support. */ + int ymm0h_regnum; + + /* Upper YMM register names. Only used for tdesc_numbered_register. */ + const char **ymmh_register_names; + + /* Target description. */ + const struct target_desc *tdesc; + + /* Register group function. */ + const void *register_reggroup_p; + /* Offset of saved PC in jmp_buf. */ int jb_pc_offset; @@ -104,10 +206,8 @@ struct gdbarch_tdep int sc_sp_offset; /* ISA-specific data types. */ - struct type *i386_eflags_type; - struct type *i386_mxcsr_type; struct type *i386_mmx_type; - struct type *i386_sse_type; + struct type *i386_ymm_type; struct type *i387_ext_type; /* Process record/replay target. */ @@ -153,7 +253,10 @@ enum i386_regnum I386_ES_REGNUM, /* %es */ I386_FS_REGNUM, /* %fs */ I386_GS_REGNUM, /* %gs */ - I386_ST0_REGNUM /* %st(0) */ + I386_ST0_REGNUM, /* %st(0) */ + I386_MXCSR_REGNUM = 40, /* %mxcsr */ + I386_YMM0H_REGNUM, /* %ymm0h */ + I386_YMM7H_REGNUM = I386_YMM0H_REGNUM + 7 }; /* Register numbers of RECORD_REGMAP. */ @@ -187,22 +290,35 @@ enum record_i386_regnum }; #define I386_NUM_GREGS 16 -#define I386_NUM_FREGS 16 #define I386_NUM_XREGS 9 -#define I386_SSE_NUM_REGS (I386_NUM_GREGS + I386_NUM_FREGS \ - + I386_NUM_XREGS) +#define I386_SSE_NUM_REGS (I386_MXCSR_REGNUM + 1) +#define I386_AVX_NUM_REGS (I386_YMM7H_REGNUM + 1) /* Size of the largest register. */ #define I386_MAX_REGISTER_SIZE 16 /* Types for i386-specific registers. */ -extern struct type *i386_eflags_type (struct gdbarch *gdbarch); -extern struct type *i386_mxcsr_type (struct gdbarch *gdbarch); -extern struct type *i386_mmx_type (struct gdbarch *gdbarch); -extern struct type *i386_sse_type (struct gdbarch *gdbarch); extern struct type *i387_ext_type (struct gdbarch *gdbarch); +/* Checks of different pseudo-registers. */ +extern int i386_byte_regnum_p (struct gdbarch *gdbarch, int regnum); +extern int i386_word_regnum_p (struct gdbarch *gdbarch, int regnum); +extern int i386_dword_regnum_p (struct gdbarch *gdbarch, int regnum); +extern int i386_xmm_regnum_p (struct gdbarch *gdbarch, int regnum); +extern int i386_ymm_regnum_p (struct gdbarch *gdbarch, int regnum); +extern int i386_ymmh_regnum_p (struct gdbarch *gdbarch, int regnum); + +extern const char *i386_pseudo_register_name (struct gdbarch *gdbarch, + int regnum); + +extern void i386_pseudo_register_read (struct gdbarch *gdbarch, + struct regcache *regcache, + int regnum, gdb_byte *buf); +extern void i386_pseudo_register_write (struct gdbarch *gdbarch, + struct regcache *regcache, + int regnum, const gdb_byte *buf); + /* Segment selectors. */ #define I386_SEL_RPL 0x0003 /* Requester's Privilege Level mask. */ #define I386_SEL_UPL 0x0003 /* User Privilige Level. */ @@ -220,9 +336,6 @@ extern CORE_ADDR i386_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) /* Return whether the THIS_FRAME corresponds to a sigtramp routine. */ extern int i386_sigtramp_p (struct frame_info *this_frame); -/* Return the name of register REGNUM. */ -extern char const *i386_register_name (struct gdbarch * gdbarch, int regnum); - /* Return non-zero if REGNUM is a member of the specified group. */ extern int i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *group); @@ -249,6 +362,9 @@ extern const struct regset * const char *sect_name, size_t sect_size); +extern struct displaced_step_closure *i386_displaced_step_copy_insn + (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, + struct regcache *regs); extern void i386_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_closure *closure, CORE_ADDR from, CORE_ADDR to, diff --git a/contrib/gdb-7/gdb/i386bsd-nat.c b/contrib/gdb-7/gdb/i386bsd-nat.c index 79bf25bd85..42e545729a 100644 --- a/contrib/gdb-7/gdb/i386bsd-nat.c +++ b/contrib/gdb-7/gdb/i386bsd-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for modern i386 BSD's. - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/i386bsd-nat.h b/contrib/gdb-7/gdb/i386bsd-nat.h index 7bf53f3c0c..a77fafa795 100644 --- a/contrib/gdb-7/gdb/i386bsd-nat.h +++ b/contrib/gdb-7/gdb/i386bsd-nat.h @@ -1,6 +1,6 @@ /* Native-dependent code for modern i386 BSD's. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/i386bsd-tdep.c b/contrib/gdb-7/gdb/i386bsd-tdep.c index b7e1413575..1816e12f6b 100644 --- a/contrib/gdb-7/gdb/i386bsd-tdep.c +++ b/contrib/gdb-7/gdb/i386bsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for i386 BSD's. - Copyright (C) 2001, 2002, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/i386fbsd-tdep.c b/contrib/gdb-7/gdb/i386fbsd-tdep.c index 17d88a724d..91c7090a8e 100644 --- a/contrib/gdb-7/gdb/i386fbsd-tdep.c +++ b/contrib/gdb-7/gdb/i386fbsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for FreeBSD/i386. - Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/i387-tdep.c b/contrib/gdb-7/gdb/i387-tdep.c index 073bb31ddd..1af66c5a84 100644 --- a/contrib/gdb-7/gdb/i387-tdep.c +++ b/contrib/gdb-7/gdb/i387-tdep.c @@ -1,7 +1,8 @@ /* Intel 387 floating point stuff. Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -33,6 +34,7 @@ #include "i386-tdep.h" #include "i387-tdep.h" +#include "i386-xstate.h" /* Print the floating point number specified by RAW. */ @@ -203,7 +205,6 @@ i387_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args) { struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (frame)); - gdb_byte buf[4]; ULONGEST fctrl; ULONGEST fstat; ULONGEST ftag; @@ -676,6 +677,477 @@ i387_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave) FXSAVE_MXCSR_ADDR (regs)); } +/* `xstate_bv' is at byte offset 512. */ +#define XSAVE_XSTATE_BV_ADDR(xsave) (xsave + 512) + +/* At xsave_avxh_offset[REGNUM] you'll find the offset to the location in + the upper 128bit of AVX register data structure used by the "xsave" + instruction where GDB register REGNUM is stored. */ + +static int xsave_avxh_offset[] = +{ + 576 + 0 * 16, /* Upper 128bit of %ymm0 through ... */ + 576 + 1 * 16, + 576 + 2 * 16, + 576 + 3 * 16, + 576 + 4 * 16, + 576 + 5 * 16, + 576 + 6 * 16, + 576 + 7 * 16, + 576 + 8 * 16, + 576 + 9 * 16, + 576 + 10 * 16, + 576 + 11 * 16, + 576 + 12 * 16, + 576 + 13 * 16, + 576 + 14 * 16, + 576 + 15 * 16 /* Upper 128bit of ... %ymm15 (128 bits each). */ +}; + +#define XSAVE_AVXH_ADDR(tdep, xsave, regnum) \ + (xsave + xsave_avxh_offset[regnum - I387_YMM0H_REGNUM (tdep)]) + +/* Similar to i387_supply_fxsave, but use XSAVE extended state. */ + +void +i387_supply_xsave (struct regcache *regcache, int regnum, + const void *xsave) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); + const gdb_byte *regs = xsave; + int i; + unsigned int clear_bv; + const gdb_byte *p; + enum + { + none = 0x0, + x87 = 0x1, + sse = 0x2, + avxh = 0x4, + all = x87 | sse | avxh + } regclass; + + gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM); + gdb_assert (tdep->num_xmm_regs > 0); + + if (regnum == -1) + regclass = all; + else if (regnum >= I387_YMM0H_REGNUM (tdep) + && regnum < I387_YMMENDH_REGNUM (tdep)) + regclass = avxh; + else if (regnum >= I387_XMM0_REGNUM(tdep) + && regnum < I387_MXCSR_REGNUM (tdep)) + regclass = sse; + else if (regnum >= I387_ST0_REGNUM (tdep) + && regnum < I387_FCTRL_REGNUM (tdep)) + regclass = x87; + else + regclass = none; + + if (regs != NULL && regclass != none) + { + /* Get `xstat_bv'. */ + const gdb_byte *xstate_bv_p = XSAVE_XSTATE_BV_ADDR (regs); + + /* The supported bits in `xstat_bv' are 1 byte. Clear part in + vector registers if its bit in xstat_bv is zero. */ + clear_bv = (~(*xstate_bv_p)) & tdep->xcr0; + } + else + clear_bv = I386_XSTATE_AVX_MASK; + + switch (regclass) + { + case none: + break; + + case avxh: + if ((clear_bv & I386_XSTATE_AVX)) + p = NULL; + else + p = XSAVE_AVXH_ADDR (tdep, regs, regnum); + regcache_raw_supply (regcache, regnum, p); + return; + + case sse: + if ((clear_bv & I386_XSTATE_SSE)) + p = NULL; + else + p = FXSAVE_ADDR (tdep, regs, regnum); + regcache_raw_supply (regcache, regnum, p); + return; + + case x87: + if ((clear_bv & I386_XSTATE_X87)) + p = NULL; + else + p = FXSAVE_ADDR (tdep, regs, regnum); + regcache_raw_supply (regcache, regnum, p); + return; + + case all: + /* Hanle the upper YMM registers. */ + if ((tdep->xcr0 & I386_XSTATE_AVX)) + { + if ((clear_bv & I386_XSTATE_AVX)) + p = NULL; + else + p = regs; + + for (i = I387_YMM0H_REGNUM (tdep); + i < I387_YMMENDH_REGNUM (tdep); i++) + { + if (p != NULL) + p = XSAVE_AVXH_ADDR (tdep, regs, i); + regcache_raw_supply (regcache, i, p); + } + } + + /* Handle the XMM registers. */ + if ((tdep->xcr0 & I386_XSTATE_SSE)) + { + if ((clear_bv & I386_XSTATE_SSE)) + p = NULL; + else + p = regs; + + for (i = I387_XMM0_REGNUM (tdep); + i < I387_MXCSR_REGNUM (tdep); i++) + { + if (p != NULL) + p = FXSAVE_ADDR (tdep, regs, i); + regcache_raw_supply (regcache, i, p); + } + } + + /* Handle the x87 registers. */ + if ((tdep->xcr0 & I386_XSTATE_X87)) + { + if ((clear_bv & I386_XSTATE_X87)) + p = NULL; + else + p = regs; + + for (i = I387_ST0_REGNUM (tdep); + i < I387_FCTRL_REGNUM (tdep); i++) + { + if (p != NULL) + p = FXSAVE_ADDR (tdep, regs, i); + regcache_raw_supply (regcache, i, p); + } + } + break; + } + + /* Only handle x87 control registers. */ + for (i = I387_FCTRL_REGNUM (tdep); i < I387_XMM0_REGNUM (tdep); i++) + if (regnum == -1 || regnum == i) + { + if (regs == NULL) + { + regcache_raw_supply (regcache, i, NULL); + continue; + } + + /* Most of the FPU control registers occupy only 16 bits in + the xsave extended state. Give those a special treatment. */ + if (i != I387_FIOFF_REGNUM (tdep) + && i != I387_FOOFF_REGNUM (tdep)) + { + gdb_byte val[4]; + + memcpy (val, FXSAVE_ADDR (tdep, regs, i), 2); + val[2] = val[3] = 0; + if (i == I387_FOP_REGNUM (tdep)) + val[1] &= ((1 << 3) - 1); + else if (i== I387_FTAG_REGNUM (tdep)) + { + /* The fxsave area contains a simplified version of + the tag word. We have to look at the actual 80-bit + FP data to recreate the traditional i387 tag word. */ + + unsigned long ftag = 0; + int fpreg; + int top; + + top = ((FXSAVE_ADDR (tdep, regs, + I387_FSTAT_REGNUM (tdep)))[1] >> 3); + top &= 0x7; + + for (fpreg = 7; fpreg >= 0; fpreg--) + { + int tag; + + if (val[0] & (1 << fpreg)) + { + int regnum = (fpreg + 8 - top) % 8 + + I387_ST0_REGNUM (tdep); + tag = i387_tag (FXSAVE_ADDR (tdep, regs, regnum)); + } + else + tag = 3; /* Empty */ + + ftag |= tag << (2 * fpreg); + } + val[0] = ftag & 0xff; + val[1] = (ftag >> 8) & 0xff; + } + regcache_raw_supply (regcache, i, val); + } + else + regcache_raw_supply (regcache, i, FXSAVE_ADDR (tdep, regs, i)); + } + + if (regnum == I387_MXCSR_REGNUM (tdep) || regnum == -1) + { + p = regs == NULL ? NULL : FXSAVE_MXCSR_ADDR (regs); + regcache_raw_supply (regcache, I387_MXCSR_REGNUM (tdep), p); + } +} + +/* Similar to i387_collect_fxsave, but use XSAVE extended state. */ + +void +i387_collect_xsave (const struct regcache *regcache, int regnum, + void *xsave, int gcore) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache)); + gdb_byte *regs = xsave; + int i; + enum + { + none = 0x0, + check = 0x1, + x87 = 0x2 | check, + sse = 0x4 | check, + avxh = 0x8 | check, + all = x87 | sse | avxh + } regclass; + + gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM); + gdb_assert (tdep->num_xmm_regs > 0); + + if (regnum == -1) + regclass = all; + else if (regnum >= I387_YMM0H_REGNUM (tdep) + && regnum < I387_YMMENDH_REGNUM (tdep)) + regclass = avxh; + else if (regnum >= I387_XMM0_REGNUM(tdep) + && regnum < I387_MXCSR_REGNUM (tdep)) + regclass = sse; + else if (regnum >= I387_ST0_REGNUM (tdep) + && regnum < I387_FCTRL_REGNUM (tdep)) + regclass = x87; + else + regclass = none; + + if (gcore) + { + /* Clear XSAVE extended state. */ + memset (regs, 0, I386_XSTATE_SIZE (tdep->xcr0)); + + /* Update XCR0 and `xstate_bv' with XCR0 for gcore. */ + if (tdep->xsave_xcr0_offset != -1) + memcpy (regs + tdep->xsave_xcr0_offset, &tdep->xcr0, 8); + memcpy (XSAVE_XSTATE_BV_ADDR (regs), &tdep->xcr0, 8); + } + + if ((regclass & check)) + { + gdb_byte raw[I386_MAX_REGISTER_SIZE]; + gdb_byte *xstate_bv_p = XSAVE_XSTATE_BV_ADDR (regs); + unsigned int xstate_bv = 0; + /* The supported bits in `xstat_bv' are 1 byte. */ + unsigned int clear_bv = (~(*xstate_bv_p)) & tdep->xcr0; + gdb_byte *p; + + /* Clear register set if its bit in xstat_bv is zero. */ + if (clear_bv) + { + if ((clear_bv & I386_XSTATE_AVX)) + for (i = I387_YMM0H_REGNUM (tdep); + i < I387_YMMENDH_REGNUM (tdep); i++) + memset (XSAVE_AVXH_ADDR (tdep, regs, i), 0, 16); + + if ((clear_bv & I386_XSTATE_SSE)) + for (i = I387_XMM0_REGNUM (tdep); + i < I387_MXCSR_REGNUM (tdep); i++) + memset (FXSAVE_ADDR (tdep, regs, i), 0, 16); + + if ((clear_bv & I386_XSTATE_X87)) + for (i = I387_ST0_REGNUM (tdep); + i < I387_FCTRL_REGNUM (tdep); i++) + memset (FXSAVE_ADDR (tdep, regs, i), 0, 10); + } + + if (regclass == all) + { + /* Check if any upper YMM registers are changed. */ + if ((tdep->xcr0 & I386_XSTATE_AVX)) + for (i = I387_YMM0H_REGNUM (tdep); + i < I387_YMMENDH_REGNUM (tdep); i++) + { + regcache_raw_collect (regcache, i, raw); + p = XSAVE_AVXH_ADDR (tdep, regs, i); + if (memcmp (raw, p, 16)) + { + xstate_bv |= I386_XSTATE_AVX; + memcpy (p, raw, 16); + } + } + + /* Check if any SSE registers are changed. */ + if ((tdep->xcr0 & I386_XSTATE_SSE)) + for (i = I387_XMM0_REGNUM (tdep); + i < I387_MXCSR_REGNUM (tdep); i++) + { + regcache_raw_collect (regcache, i, raw); + p = FXSAVE_ADDR (tdep, regs, i); + if (memcmp (raw, p, 16)) + { + xstate_bv |= I386_XSTATE_SSE; + memcpy (p, raw, 16); + } + } + + /* Check if any X87 registers are changed. */ + if ((tdep->xcr0 & I386_XSTATE_X87)) + for (i = I387_ST0_REGNUM (tdep); + i < I387_FCTRL_REGNUM (tdep); i++) + { + regcache_raw_collect (regcache, i, raw); + p = FXSAVE_ADDR (tdep, regs, i); + if (memcmp (raw, p, 10)) + { + xstate_bv |= I386_XSTATE_X87; + memcpy (p, raw, 10); + } + } + } + else + { + /* Check if REGNUM is changed. */ + regcache_raw_collect (regcache, regnum, raw); + + switch (regclass) + { + default: + internal_error (__FILE__, __LINE__, + _("invalid i387 regclass")); + + case avxh: + /* This is an upper YMM register. */ + p = XSAVE_AVXH_ADDR (tdep, regs, regnum); + if (memcmp (raw, p, 16)) + { + xstate_bv |= I386_XSTATE_AVX; + memcpy (p, raw, 16); + } + break; + + case sse: + /* This is an SSE register. */ + p = FXSAVE_ADDR (tdep, regs, regnum); + if (memcmp (raw, p, 16)) + { + xstate_bv |= I386_XSTATE_SSE; + memcpy (p, raw, 16); + } + break; + + case x87: + /* This is an x87 register. */ + p = FXSAVE_ADDR (tdep, regs, regnum); + if (memcmp (raw, p, 10)) + { + xstate_bv |= I386_XSTATE_X87; + memcpy (p, raw, 10); + } + break; + } + } + + /* Update the corresponding bits in `xstate_bv' if any SSE/AVX + registers are changed. */ + if (xstate_bv) + { + /* The supported bits in `xstat_bv' are 1 byte. */ + *xstate_bv_p |= (gdb_byte) xstate_bv; + + switch (regclass) + { + default: + internal_error (__FILE__, __LINE__, + _("invalid i387 regclass")); + + case all: + break; + + case x87: + case sse: + case avxh: + /* Register REGNUM has been updated. Return. */ + return; + } + } + else + { + /* Return if REGNUM isn't changed. */ + if (regclass != all) + return; + } + } + + /* Only handle x87 control registers. */ + for (i = I387_FCTRL_REGNUM (tdep); i < I387_XMM0_REGNUM (tdep); i++) + if (regnum == -1 || regnum == i) + { + /* Most of the FPU control registers occupy only 16 bits in + the xsave extended state. Give those a special treatment. */ + if (i != I387_FIOFF_REGNUM (tdep) + && i != I387_FOOFF_REGNUM (tdep)) + { + gdb_byte buf[4]; + + regcache_raw_collect (regcache, i, buf); + + if (i == I387_FOP_REGNUM (tdep)) + { + /* The opcode occupies only 11 bits. Make sure we + don't touch the other bits. */ + buf[1] &= ((1 << 3) - 1); + buf[1] |= ((FXSAVE_ADDR (tdep, regs, i))[1] & ~((1 << 3) - 1)); + } + else if (i == I387_FTAG_REGNUM (tdep)) + { + /* Converting back is much easier. */ + + unsigned short ftag; + int fpreg; + + ftag = (buf[1] << 8) | buf[0]; + buf[0] = 0; + buf[1] = 0; + + for (fpreg = 7; fpreg >= 0; fpreg--) + { + int tag = (ftag >> (fpreg * 2)) & 3; + + if (tag != 3) + buf[0] |= (1 << fpreg); + } + } + memcpy (FXSAVE_ADDR (tdep, regs, i), buf, 2); + } + else + regcache_raw_collect (regcache, i, FXSAVE_ADDR (tdep, regs, i)); + } + + if (regnum == I387_MXCSR_REGNUM (tdep) || regnum == -1) + regcache_raw_collect (regcache, I387_MXCSR_REGNUM (tdep), + FXSAVE_MXCSR_ADDR (regs)); +} + /* Recreate the FTW (tag word) valid bits from the 80-bit FP data in *RAW. */ diff --git a/contrib/gdb-7/gdb/i387-tdep.h b/contrib/gdb-7/gdb/i387-tdep.h index e378384219..976fa11d6c 100644 --- a/contrib/gdb-7/gdb/i387-tdep.h +++ b/contrib/gdb-7/gdb/i387-tdep.h @@ -1,6 +1,6 @@ /* Target-dependent code for the i387. - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -27,9 +27,14 @@ struct regcache; struct type; struct ui_file; +/* Number of i387 floating point registers. */ +#define I387_NUM_REGS 16 + #define I387_ST0_REGNUM(tdep) ((tdep)->st0_regnum) #define I387_NUM_XMM_REGS(tdep) ((tdep)->num_xmm_regs) #define I387_MM0_REGNUM(tdep) ((tdep)->mm0_regnum) +#define I387_NUM_YMM_REGS(tdep) ((tdep)->num_ymm_regs) +#define I387_YMM0H_REGNUM(tdep) ((tdep)->ymm0h_regnum) #define I387_FCTRL_REGNUM(tdep) (I387_ST0_REGNUM (tdep) + 8) #define I387_FSTAT_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) + 1) @@ -42,6 +47,8 @@ struct ui_file; #define I387_XMM0_REGNUM(tdep) (I387_ST0_REGNUM (tdep) + 16) #define I387_MXCSR_REGNUM(tdep) \ (I387_XMM0_REGNUM (tdep) + I387_NUM_XMM_REGS (tdep)) +#define I387_YMMENDH_REGNUM(tdep) \ + (I387_YMM0H_REGNUM (tdep) + I387_NUM_YMM_REGS (tdep)) /* Print out the i387 floating point state. */ @@ -96,6 +103,11 @@ extern void i387_collect_fsave (const struct regcache *regcache, int regnum, extern void i387_supply_fxsave (struct regcache *regcache, int regnum, const void *fxsave); +/* Similar to i387_supply_fxsave, but use XSAVE extended state. */ + +extern void i387_supply_xsave (struct regcache *regcache, int regnum, + const void *xsave); + /* Fill register REGNUM (if it is a floating-point or SSE register) in *FXSAVE with the value from REGCACHE. If REGNUM is -1, do this for all registers. This function doesn't touch any of the reserved @@ -104,6 +116,11 @@ extern void i387_supply_fxsave (struct regcache *regcache, int regnum, extern void i387_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave); +/* Similar to i387_collect_fxsave, but use XSAVE extended state. */ + +extern void i387_collect_xsave (const struct regcache *regcache, + int regnum, void *xsave, int gcore); + /* Prepare the FPU stack in REGCACHE for a function return. */ extern void i387_return_value (struct gdbarch *gdbarch, diff --git a/contrib/gdb-7/gdb/inf-child.c b/contrib/gdb-7/gdb/inf-child.c index 07ca814b03..72a18e41b9 100644 --- a/contrib/gdb-7/gdb/inf-child.c +++ b/contrib/gdb-7/gdb/inf-child.c @@ -2,7 +2,7 @@ Unix. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -174,6 +174,7 @@ struct target_ops * inf_child_target (void) { struct target_ops *t = XZALLOC (struct target_ops); + t->to_shortname = "child"; t->to_longname = "Unix child process"; t->to_doc = "Unix child process (started by the \"run\" command)."; diff --git a/contrib/gdb-7/gdb/inf-child.h b/contrib/gdb-7/gdb/inf-child.h index 81b8600665..b2823961bf 100644 --- a/contrib/gdb-7/gdb/inf-child.h +++ b/contrib/gdb-7/gdb/inf-child.h @@ -1,6 +1,6 @@ /* Low level Unix child interface, for GDB when running under Unix. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/inf-loop.c b/contrib/gdb-7/gdb/inf-loop.c index e19056766f..8681e7c3ff 100644 --- a/contrib/gdb-7/gdb/inf-loop.c +++ b/contrib/gdb-7/gdb/inf-loop.c @@ -1,5 +1,5 @@ /* Handling of inferior events for the event loop for GDB, the GNU debugger. - Copyright (C) 1999, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Elena Zannoni of Cygnus Solutions. This file is part of GDB. @@ -46,6 +46,7 @@ inferior_event_handler (enum inferior_event_type event_type, { struct gdb_exception e; int was_sync = 0; + switch (event_type) { case INF_ERROR: diff --git a/contrib/gdb-7/gdb/inf-loop.h b/contrib/gdb-7/gdb/inf-loop.h index 0c036e0e5a..fbf22c2874 100644 --- a/contrib/gdb-7/gdb/inf-loop.h +++ b/contrib/gdb-7/gdb/inf-loop.h @@ -1,5 +1,5 @@ /* Interface to the inferior event handling code for GDB, the GNU debugger. - Copyright (C) 1999, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Elena Zannoni of Cygnus Solutions. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/inf-ptrace.c b/contrib/gdb-7/gdb/inf-ptrace.c index 736154aac0..ba9d8a8aec 100644 --- a/contrib/gdb-7/gdb/inf-ptrace.c +++ b/contrib/gdb-7/gdb/inf-ptrace.c @@ -1,7 +1,7 @@ /* Low-level child interface to ptrace. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -67,6 +67,8 @@ inf_ptrace_follow_fork (struct target_ops *ops, int follow_child) child_inf = add_inferior (fpid); child_inf->attach_flag = parent_inf->attach_flag; copy_terminal_info (child_inf, parent_inf); + child_inf->pspace = parent_inf->pspace; + child_inf->aspace = parent_inf->aspace; /* Before detaching from the parent, remove all breakpoints from it. */ @@ -185,17 +187,9 @@ inf_ptrace_attach (struct target_ops *ops, char *args, int from_tty) { char *exec_file; pid_t pid; - char *dummy; struct inferior *inf; - if (!args) - error_no_arg (_("process-id to attach")); - - dummy = args; - pid = strtol (args, &dummy, 0); - /* Some targets don't set errno on errors, grrr! */ - if (pid == 0 && args == dummy) - error (_("Illegal process-id: %s."), args); + pid = parse_pid_to_attach (args); if (pid == getpid ()) /* Trying to masturbate? */ error (_("I refuse to debug myself!")); @@ -223,10 +217,10 @@ inf_ptrace_attach (struct target_ops *ops, char *args, int from_tty) error (_("This system does not support attaching to a process")); #endif - inferior_ptid = pid_to_ptid (pid); - - inf = add_inferior (pid); + inf = current_inferior (); + inferior_appeared (inf, pid); inf->attach_flag = 1; + inferior_ptid = pid_to_ptid (pid); /* Always add a main thread. If some target extends the ptrace target, it should decorate the ptid later with more info. */ diff --git a/contrib/gdb-7/gdb/inf-ptrace.h b/contrib/gdb-7/gdb/inf-ptrace.h index 086649defd..1b09781ced 100644 --- a/contrib/gdb-7/gdb/inf-ptrace.h +++ b/contrib/gdb-7/gdb/inf-ptrace.h @@ -1,6 +1,7 @@ /* Low level child interface to ptrace. - Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/infcall.c b/contrib/gdb-7/gdb/infcall.c index c9d98cf65e..0c9a3af7b8 100644 --- a/contrib/gdb-7/gdb/infcall.c +++ b/contrib/gdb-7/gdb/infcall.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -21,6 +21,7 @@ #include "defs.h" #include "breakpoint.h" +#include "tracepoint.h" #include "target.h" #include "regcache.h" #include "inferior.h" @@ -267,10 +268,12 @@ find_function_addr (struct value *function, struct type **retval_type) { /* Handle function descriptors lacking debug info. */ int found_descriptor = 0; + funaddr = 0; /* pacify "gcc -Werror" */ if (VALUE_LVAL (function) == lval_memory) { CORE_ADDR nfunaddr; + funaddr = value_as_address (value_addr (function)); nfunaddr = funaddr; funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr, @@ -320,6 +323,7 @@ get_function_name (CORE_ADDR funaddr, char *buf, int buf_size) { { struct symbol *symbol = find_pc_function (funaddr); + if (symbol) return SYMBOL_PRINT_NAME (symbol); } @@ -327,6 +331,7 @@ get_function_name (CORE_ADDR funaddr, char *buf, int buf_size) { /* Try the minimal symbols. */ struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr); + if (msymbol) return SYMBOL_PRINT_NAME (msymbol); } @@ -334,6 +339,7 @@ get_function_name (CORE_ADDR funaddr, char *buf, int buf_size) { char *tmp = xstrprintf (_(RAW_FUNCTION_ADDRESS_FORMAT), hex_string (funaddr)); + gdb_assert (strlen (tmp) + 1 <= buf_size); strcpy (buf, tmp); xfree (tmp); @@ -402,6 +408,13 @@ run_inferior_call (struct thread_info *call_thread, CORE_ADDR real_pc) return e; } +/* A cleanup function that calls delete_std_terminate_breakpoint. */ +static void +cleanup_delete_std_terminate_breakpoint (void *ignore) +{ + delete_std_terminate_breakpoint (); +} + /* All this stuff with a dummy frame may seem unnecessarily complicated (why not just save registers in GDB?). The purpose of pushing a dummy frame which looks just like a real frame is so that if you call a @@ -439,11 +452,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) struct cleanup *args_cleanup; struct frame_info *frame; struct gdbarch *gdbarch; - struct breakpoint *terminate_bp = NULL; - struct minimal_symbol *tm; + struct cleanup *terminate_bp_cleanup; ptid_t call_thread_ptid; struct gdb_exception e; - const char *name; char name_buf[RAW_FUNCTION_ADDRESS_SIZE]; if (TYPE_CODE (ftype) == TYPE_CODE_PTR) @@ -452,6 +463,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) if (!target_has_execution) noprocess (); + if (get_traceframe_number () >= 0) + error (_("May not call functions while looking at trace frames.")); + frame = get_current_frame (); gdbarch = get_frame_arch (frame); @@ -474,6 +488,7 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) /* Ensure that the initial SP is correctly aligned. */ { CORE_ADDR old_sp = get_frame_sp (frame); + if (gdbarch_frame_align_p (gdbarch)) { sp = gdbarch_frame_align (gdbarch, old_sp); @@ -517,10 +532,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) /* Stack grows up. */ sp = gdbarch_frame_align (gdbarch, old_sp + 1); } - gdb_assert ((gdbarch_inner_than (gdbarch, 1, 2) - && sp <= old_sp) - || (gdbarch_inner_than (gdbarch, 2, 1) - && sp >= old_sp)); + /* SP may have underflown address zero here from OLD_SP. Memory access + functions will probably fail in such case but that is a target's + problem. */ } else /* FIXME: cagney/2002-09-18: Hey, you loose! @@ -633,6 +647,7 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) { int i; + for (i = nargs - 1; i >= 0; i--) { int prototyped; @@ -667,6 +682,7 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) if (struct_return || lang_struct_return) { int len = TYPE_LENGTH (values_type); + if (gdbarch_inner_than (gdbarch, 1, 2)) { /* Stack grows downward. Align STRUCT_ADDR and SP after @@ -729,7 +745,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) { struct breakpoint *bpt; struct symtab_and_line sal; + init_sal (&sal); /* initialize to zeroes */ + sal.pspace = current_program_space; sal.pc = bp_addr; sal.section = find_pc_overlay (sal.pc); /* Sanity. The exact same SP value is returned by @@ -752,13 +770,7 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) call. Place a momentary breakpoint in the std::terminate function and if triggered in the call, rewind. */ if (unwind_on_terminating_exception_p) - { - struct minimal_symbol *tm = lookup_minimal_symbol ("std::terminate()", - NULL, NULL); - if (tm != NULL) - terminate_bp = set_momentary_breakpoint_at_pc - (gdbarch, SYMBOL_VALUE_ADDRESS (tm), bp_breakpoint); - } + set_std_terminate_breakpoint (); /* Everything's ready, push all the info needed to restore the caller (and identify the dummy-frame) onto the dummy-frame @@ -771,8 +783,8 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) discard_cleanups (inf_status_cleanup); /* Register a clean-up for unwind_on_terminating_exception_breakpoint. */ - if (terminate_bp) - make_cleanup_delete_breakpoint (terminate_bp); + terminate_bp_cleanup = make_cleanup (cleanup_delete_std_terminate_breakpoint, + NULL); /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - If you're looking to implement asynchronous dummy-frames, then @@ -873,7 +885,7 @@ When the function is done executing, GDB will silently stop."), name); } - if (stopped_by_random_signal || !stop_stack_dummy) + if (stopped_by_random_signal || stop_stack_dummy != STOP_STACK_DUMMY) { const char *name = get_function_name (funaddr, name_buf, sizeof (name_buf)); @@ -927,30 +939,17 @@ When the function is done executing, GDB will silently stop."), } } - if (!stop_stack_dummy) + if (stop_stack_dummy == STOP_STD_TERMINATE) { + /* We must get back to the frame we were before the dummy + call. */ + dummy_frame_pop (dummy_id); - /* Check if unwind on terminating exception behaviour is on. */ - if (unwind_on_terminating_exception_p) - { - /* Check that the breakpoint is our special std::terminate - breakpoint. If it is, we do not want to kill the inferior - in an inferior function call. Rewind, and warn the - user. */ - - if (terminate_bp != NULL - && (inferior_thread()->stop_bpstat->breakpoint_at->address - == terminate_bp->loc->address)) - { - /* We must get back to the frame we were before the - dummy call. */ - dummy_frame_pop (dummy_id); - - /* We also need to restore inferior status to that before the - dummy call. */ - restore_inferior_status (inf_status); - - error (_("\ + /* We also need to restore inferior status to that before + the dummy call. */ + restore_inferior_status (inf_status); + + error (_("\ The program being debugged entered a std::terminate call, most likely\n\ caused by an unhandled C++ exception. GDB blocked this call in order\n\ to prevent the program from being terminated, and has restored the\n\ @@ -958,9 +957,11 @@ context to its original state before the call.\n\ To change this behaviour use \"set unwind-on-terminating-exception off\".\n\ Evaluation of the expression containing the function (%s)\n\ will be abandoned."), - name); - } - } + name); + } + else if (stop_stack_dummy == STOP_NONE) + { + /* We hit a breakpoint inside the FUNCTION. Keep the dummy frame, the user may want to examine its state. Discard inferior status, we're not at the same point @@ -987,11 +988,14 @@ When the function is done executing, GDB will silently stop."), internal_error (__FILE__, __LINE__, _("... should not be here")); } + do_cleanups (terminate_bp_cleanup); + /* If we get here the called FUNCTION ran to completion, and the dummy frame has already been popped. */ { - struct regcache *retbuf = regcache_xmalloc (gdbarch); + struct address_space *aspace = get_regcache_aspace (stop_registers); + struct regcache *retbuf = regcache_xmalloc (gdbarch, aspace); struct cleanup *retbuf_cleanup = make_cleanup_regcache_xfree (retbuf); struct value *retval = NULL; diff --git a/contrib/gdb-7/gdb/infcall.h b/contrib/gdb-7/gdb/infcall.h index 6bfbfed1a6..2db7ee01f0 100644 --- a/contrib/gdb-7/gdb/infcall.h +++ b/contrib/gdb-7/gdb/infcall.h @@ -1,6 +1,6 @@ /* Perform an inferior function call, for GDB, the GNU debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/infcmd.c b/contrib/gdb-7/gdb/infcmd.c index 9e98290708..c4cdb06478 100644 --- a/contrib/gdb-7/gdb/infcmd.c +++ b/contrib/gdb-7/gdb/infcmd.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -54,6 +54,7 @@ #include "gdbthread.h" #include "valprint.h" #include "inline-frame.h" +#include "tracepoint.h" /* Functions exported for general use, in inferior.h: */ @@ -124,20 +125,17 @@ void _initialize_infcmd (void); #define ERROR_NO_INFERIOR \ if (!target_has_execution) error (_("The program is not being run.")); -/* String containing arguments to give to the program, separated by spaces. - Empty string (pointer to '\0') means no args. */ +/* Scratch area where string containing arguments to give to the program will be + stored by 'set args'. As soon as anything is stored, notice_args_set will + move it into per-inferior storage. Arguments are separated by spaces. Empty + string (pointer to '\0') means no args. */ -static char *inferior_args; +static char *inferior_args_scratch; -/* The inferior arguments as a vector. If INFERIOR_ARGC is nonzero, - then we must compute INFERIOR_ARGS from this (via the target). */ +/* Scratch area where 'set inferior-tty' will store user-provided value. + We'll immediate copy it into per-inferior storage. */ -static int inferior_argc; -static char **inferior_argv; - -/* File name for default use for standard in/out in the inferior. */ - -static char *inferior_io_terminal; +static char *inferior_io_terminal_scratch; /* Pid of our debugged inferior, or 0 if no inferior now. Since various parts of infrun.c test this to see whether there is a program @@ -157,87 +155,107 @@ int breakpoint_proceeded; /* Nonzero if stopped due to completion of a stack dummy routine. */ -int stop_stack_dummy; +enum stop_stack_kind stop_stack_dummy; /* Nonzero if stopped due to a random (unexpected) signal in inferior process. */ int stopped_by_random_signal; -/* Environment to use for running inferior, - in format described in environ.h. */ - -struct gdb_environ *inferior_environ; /* Accessor routines. */ +/* Set the io terminal for the current inferior. Ownership of + TERMINAL_NAME is not transferred. */ + void set_inferior_io_terminal (const char *terminal_name) { - if (inferior_io_terminal) - xfree (inferior_io_terminal); - - if (!terminal_name) - inferior_io_terminal = NULL; - else - inferior_io_terminal = xstrdup (terminal_name); + xfree (current_inferior ()->terminal); + current_inferior ()->terminal = terminal_name ? xstrdup (terminal_name) : 0; } const char * get_inferior_io_terminal (void) { - return inferior_io_terminal; + return current_inferior ()->terminal; +} + +static void +set_inferior_tty_command (char *args, int from_tty, + struct cmd_list_element *c) +{ + /* CLI has assigned the user-provided value to inferior_io_terminal_scratch. + Now route it to current inferior. */ + set_inferior_io_terminal (inferior_io_terminal_scratch); +} + +static void +show_inferior_tty_command (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + /* Note that we ignore the passed-in value in favor of computing it + directly. */ + const char *inferior_io_terminal = get_inferior_io_terminal (); + + if (inferior_io_terminal == NULL) + inferior_io_terminal = ""; + fprintf_filtered (gdb_stdout, + _("Terminal for future runs of program being debugged " + "is \"%s\".\n"), inferior_io_terminal); } char * get_inferior_args (void) { - if (inferior_argc != 0) + if (current_inferior ()->argc != 0) { - char *n, *old; + char *n; - n = construct_inferior_arguments (inferior_argc, inferior_argv); - old = set_inferior_args (n); - xfree (old); + n = construct_inferior_arguments (current_inferior ()->argc, + current_inferior ()->argv); + set_inferior_args (n); + xfree (n); } - if (inferior_args == NULL) - inferior_args = xstrdup (""); + if (current_inferior ()->args == NULL) + current_inferior ()->args = xstrdup (""); - return inferior_args; + return current_inferior ()->args; } -char * +/* Set the arguments for the current inferior. Ownership of + NEWARGS is not transferred. */ + +void set_inferior_args (char *newargs) { - char *saved_args = inferior_args; - - inferior_args = newargs; - inferior_argc = 0; - inferior_argv = 0; - - return saved_args; + xfree (current_inferior ()->args); + current_inferior ()->args = newargs ? xstrdup (newargs) : NULL; + current_inferior ()->argc = 0; + current_inferior ()->argv = 0; } void set_inferior_args_vector (int argc, char **argv) { - inferior_argc = argc; - inferior_argv = argv; + current_inferior ()->argc = argc; + current_inferior ()->argv = argv; } /* Notice when `set args' is run. */ static void -notice_args_set (char *args, int from_tty, struct cmd_list_element *c) +set_args_command (char *args, int from_tty, struct cmd_list_element *c) { - inferior_argc = 0; - inferior_argv = 0; + /* CLI has assigned the user-provided value to inferior_args_scratch. + Now route it to current inferior. */ + set_inferior_args (inferior_args_scratch); } /* Notice when `show args' is run. */ static void -notice_args_read (struct ui_file *file, int from_tty, - struct cmd_list_element *c, const char *value) +show_args_command (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) { /* Note that we ignore the passed-in value in favor of computing it directly. */ @@ -367,15 +385,6 @@ strip_bg_char (char **args) return 0; } -void -tty_command (char *file, int from_tty) -{ - if (file == 0) - error_no_arg (_("terminal name for running target process")); - - set_inferior_io_terminal (file); -} - /* Common actions to take after creating any sort of inferior, by any means (running, attaching, connecting, et cetera). The target should be stopped. */ @@ -395,22 +404,6 @@ post_create_inferior (struct target_ops *target, int from_tty) /* Now that we know the register layout, retrieve current PC. */ stop_pc = regcache_read_pc (get_current_regcache ()); - /* If the solist is global across processes, there's no need to - refetch it here. */ - if (exec_bfd && !gdbarch_has_global_solist (target_gdbarch)) - { - /* Sometimes the platform-specific hook loads initial shared - libraries, and sometimes it doesn't. Try to do so first, so - that we can add them with the correct value for FROM_TTY. - If we made all the inferior hook methods consistent, - this call could be removed. */ -#ifdef SOLIB_ADD - SOLIB_ADD (NULL, from_tty, target, auto_solib_add); -#else - solib_add (NULL, from_tty, target, auto_solib_add); -#endif - } - if (exec_bfd) { /* Create the hooks to handle shared library load and unload @@ -418,7 +411,25 @@ post_create_inferior (struct target_ops *target, int from_tty) #ifdef SOLIB_CREATE_INFERIOR_HOOK SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid)); #else - solib_create_inferior_hook (); + solib_create_inferior_hook (from_tty); +#endif + } + + /* If the solist is global across processes, there's no need to + refetch it here. */ + if (exec_bfd && !gdbarch_has_global_solist (target_gdbarch)) + { + /* Sometimes the platform-specific hook loads initial shared + libraries, and sometimes it doesn't. If it doesn't FROM_TTY will be + incorrectly 0 but such solib targets should be fixed anyway. If we + made all the inferior hook methods consistent, this call could be + removed. Call it only after the solib target has been initialized by + solib_create_inferior_hook. */ + +#ifdef SOLIB_ADD + SOLIB_ADD (NULL, 0, target, auto_solib_add); +#else + solib_add (NULL, 0, target, auto_solib_add); #endif } @@ -532,10 +543,7 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main) /* If there were other args, beside '&', process them. */ if (args) - { - char *old_args = set_inferior_args (xstrdup (args)); - xfree (old_args); - } + set_inferior_args (args); } if (from_tty) @@ -555,7 +563,7 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main) /* We call get_inferior_args() because we might need to compute the value now. */ target_create_inferior (exec_file, get_inferior_args (), - environ_vector (inferior_environ), from_tty); + environ_vector (current_inferior ()->environment), from_tty); /* We're starting off a new process. When we get out of here, in non-stop mode, finish the state of all threads of that process, @@ -573,8 +581,9 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main) has done its thing; now we are setting up the running program. */ post_create_inferior (¤t_target, 0); - /* Start the target running. */ - proceed ((CORE_ADDR) -1, TARGET_SIGNAL_0, 0); + /* Start the target running. Do not use -1 continuation as it would skip + breakpoint right at the entry point. */ + proceed (regcache_read_pc (get_current_regcache ()), TARGET_SIGNAL_0, 0); /* Since there was no error, there's no need to finish the thread states here. */ @@ -590,8 +599,7 @@ run_command (char *args, int from_tty) static void run_no_args_command (char *args, int from_tty) { - char *old_args = set_inferior_args (xstrdup ("")); - xfree (old_args); + set_inferior_args (""); } @@ -641,15 +649,28 @@ ensure_valid_thread (void) Cannot execute this command without a live selected thread.")); } +/* If the user is looking at trace frames, any resumption of execution + is likely to mix up recorded and live target data. So simply + disallow those commands. */ + +void +ensure_not_tfind_mode (void) +{ + if (get_traceframe_number () >= 0) + error (_("\ +Cannot execute this command while looking at trace frames.")); +} + void continue_1 (int all_threads) { ERROR_NO_INFERIOR; + ensure_not_tfind_mode (); if (non_stop && all_threads) { /* Don't error out if the current thread is running, because - there may be other stopped threads. */ + there may be other stopped threads. */ struct cleanup *old_chain; /* Backup current thread and selected frame. */ @@ -812,12 +833,12 @@ static void step_1 (int skip_subroutines, int single_inst, char *count_string) { int count = 1; - struct frame_info *frame; struct cleanup *cleanups = make_cleanup (null_cleanup, NULL); int async_exec = 0; int thread = -1; ERROR_NO_INFERIOR; + ensure_not_tfind_mode (); ensure_valid_thread (); ensure_not_running (); @@ -855,6 +876,7 @@ step_1 (int skip_subroutines, int single_inst, char *count_string) for (; count > 0; count--) { struct thread_info *tp; + step_once (skip_subroutines, single_inst, count, thread); if (target_has_execution @@ -948,6 +970,7 @@ step_once (int skip_subroutines, int single_inst, int count, int thread) INFERIOR_PTID thread instead, which is the same thread when THREAD is set. */ struct thread_info *tp = inferior_thread (); + clear_proceed_status (); set_step_frame (); @@ -978,6 +1001,7 @@ step_once (int skip_subroutines, int single_inst, int count, int thread) else if (tp->step_range_end == 0) { char *name; + if (find_pc_partial_function (pc, &name, &tp->step_range_start, &tp->step_range_end) == 0) @@ -985,7 +1009,7 @@ step_once (int skip_subroutines, int single_inst, int count, int thread) target_terminal_ours (); printf_filtered (_("\ -Single stepping until exit from function %s, \n\ +Single stepping until exit from function %s,\n\ which has no line number information.\n"), name); } } @@ -1039,6 +1063,7 @@ jump_command (char *arg, int from_tty) int async_exec = 0; ERROR_NO_INFERIOR; + ensure_not_tfind_mode (); ensure_valid_thread (); ensure_not_running (); @@ -1141,6 +1166,7 @@ signal_command (char *signum_exp, int from_tty) dont_repeat (); /* Too dangerous. */ ERROR_NO_INFERIOR; + ensure_not_tfind_mode (); ensure_valid_thread (); ensure_not_running (); @@ -1252,8 +1278,10 @@ until_command (char *arg, int from_tty) { int async_exec = 0; - if (!target_has_execution) - error (_("The program is not running.")); + ERROR_NO_INFERIOR; + ensure_not_tfind_mode (); + ensure_valid_thread (); + ensure_not_running (); /* Find out whether we must run in the background. */ if (arg != NULL) @@ -1283,8 +1311,10 @@ advance_command (char *arg, int from_tty) { int async_exec = 0; - if (!target_has_execution) - error (_("The program is not running.")); + ERROR_NO_INFERIOR; + ensure_not_tfind_mode (); + ensure_valid_thread (); + ensure_not_running (); if (arg == NULL) error_no_arg (_("a location")); @@ -1413,7 +1443,19 @@ finish_command_continuation (void *arg) _("finish_command: function has no target type")); if (TYPE_CODE (value_type) != TYPE_CODE_VOID) - print_return_value (SYMBOL_TYPE (a->function), value_type); + { + volatile struct gdb_exception ex; + + TRY_CATCH (ex, RETURN_MASK_ALL) + { + /* print_return_value can throw an exception in some + circumstances. We need to catch this so that we still + delete the breakpoint. */ + print_return_value (SYMBOL_TYPE (a->function), value_type); + } + if (ex.reason < 0) + exception_print (gdb_stdout, ex); + } } /* We suppress normal call of normal_stop observer and do it here so @@ -1515,14 +1557,13 @@ finish_forward (struct symbol *function, struct frame_info *frame) old_chain = make_cleanup_delete_breakpoint (breakpoint); tp->proceed_to_finish = 1; /* We want stop_registers, please... */ - proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0); - cargs = xmalloc (sizeof (*cargs)); cargs->breakpoint = breakpoint; cargs->function = function; add_continuation (tp, finish_command_continuation, cargs, finish_command_continuation_free_arg); + proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0); discard_cleanups (old_chain); if (!target_can_async_p ()) @@ -1540,6 +1581,11 @@ finish_command (char *arg, int from_tty) int async_exec = 0; + ERROR_NO_INFERIOR; + ensure_not_tfind_mode (); + ensure_valid_thread (); + ensure_not_running (); + /* Find out whether we must run in the background. */ if (arg != NULL) async_exec = strip_bg_char (&arg); @@ -1563,8 +1609,6 @@ finish_command (char *arg, int from_tty) if (arg) error (_("The \"finish\" command does not take any arguments.")); - if (!target_has_execution) - error (_("The program is not running.")); frame = get_prev_frame (get_selected_frame (_("No selected frame."))); if (frame == 0) @@ -1585,6 +1629,7 @@ finish_command (char *arg, int from_tty) and not step over the rest of this inlined function call. */ struct thread_info *tp = inferior_thread (); struct symtab_and_line empty_sal; + init_sal (&empty_sal); set_step_info (frame, empty_sal); tp->step_range_start = tp->step_range_end = get_frame_pc (frame); @@ -1644,6 +1689,7 @@ program_info (char *args, int from_tty) else { struct target_waitstatus ws; + get_last_target_status (&ptid, &ws); } @@ -1696,7 +1742,8 @@ environment_info (char *var, int from_tty) { if (var) { - char *val = get_in_environ (inferior_environ, var); + char *val = get_in_environ (current_inferior ()->environment, var); + if (val) { puts_filtered (var); @@ -1713,7 +1760,8 @@ environment_info (char *var, int from_tty) } else { - char **vector = environ_vector (inferior_environ); + char **vector = environ_vector (current_inferior ()->environment); + while (*vector) { puts_filtered (*vector++); @@ -1778,10 +1826,10 @@ set_environment_command (char *arg, int from_tty) printf_filtered (_("\ Setting environment variable \"%s\" to null value.\n"), var); - set_in_environ (inferior_environ, var, ""); + set_in_environ (current_inferior ()->environment, var, ""); } else - set_in_environ (inferior_environ, var, val); + set_in_environ (current_inferior ()->environment, var, val); xfree (var); } @@ -1794,12 +1842,12 @@ unset_environment_command (char *var, int from_tty) Ask for confirmation if reading from the terminal. */ if (!from_tty || query (_("Delete all environment variables? "))) { - free_environ (inferior_environ); - inferior_environ = make_environ (); + free_environ (current_inferior ()->environment); + current_inferior ()->environment = make_environ (); } } else - unset_in_environ (inferior_environ, var); + unset_in_environ (current_inferior ()->environment, var); } /* Handle the execution path (PATH variable) */ @@ -1810,7 +1858,7 @@ static void path_info (char *args, int from_tty) { puts_filtered ("Executable and object file path: "); - puts_filtered (get_in_environ (inferior_environ, path_var_name)); + puts_filtered (get_in_environ (current_inferior ()->environment, path_var_name)); puts_filtered ("\n"); } @@ -1821,14 +1869,15 @@ path_command (char *dirname, int from_tty) { char *exec_path; char *env; + dont_repeat (); - env = get_in_environ (inferior_environ, path_var_name); + env = get_in_environ (current_inferior ()->environment, path_var_name); /* Can be null if path is not set */ if (!env) env = ""; exec_path = xstrdup (env); mod_path (dirname, &exec_path); - set_in_environ (inferior_environ, path_var_name, exec_path); + set_in_environ (current_inferior ()->environment, path_var_name, exec_path); xfree (exec_path); if (from_tty) path_info ((char *) NULL, from_tty); @@ -1908,12 +1957,13 @@ default_print_registers_info (struct gdbarch *gdbarch, get_user_print_options (&opts); opts.deref_ref = 1; val_print (register_type (gdbarch, i), buffer, 0, 0, - file, 0, &opts, current_language); + file, 0, NULL, &opts, current_language); fprintf_filtered (file, "\t(raw 0x"); for (j = 0; j < register_size (gdbarch, i); j++) { int idx; + if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) idx = j; else @@ -1930,8 +1980,7 @@ default_print_registers_info (struct gdbarch *gdbarch, get_formatted_print_options (&opts, 'x'); opts.deref_ref = 1; val_print (register_type (gdbarch, i), buffer, 0, 0, - file, 0, &opts, - current_language); + file, 0, NULL, &opts, current_language); /* If not a vector register, print it also according to its natural format. */ if (TYPE_VECTOR (register_type (gdbarch, i)) == 0) @@ -1940,7 +1989,7 @@ default_print_registers_info (struct gdbarch *gdbarch, opts.deref_ref = 1; fprintf_filtered (file, "\t"); val_print (register_type (gdbarch, i), buffer, 0, 0, - file, 0, &opts, current_language); + file, 0, NULL, &opts, current_language); } } @@ -1953,8 +2002,6 @@ registers_info (char *addr_exp, int fpregs) { struct frame_info *frame; struct gdbarch *gdbarch; - int regnum, numregs; - char *end; if (!target_has_registers) error (_("The program has no registers now.")); @@ -1998,6 +2045,7 @@ registers_info (char *addr_exp, int fpregs) /* A register name? */ { int regnum = user_reg_map_name_to_regnum (gdbarch, start, end - start); + if (regnum >= 0) { /* User registers lie completely outside of the range of @@ -2026,6 +2074,7 @@ registers_info (char *addr_exp, int fpregs) /* A register group? */ { struct reggroup *group; + for (group = reggroup_next (gdbarch, NULL); group != NULL; group = reggroup_next (gdbarch, group)) @@ -2039,6 +2088,7 @@ registers_info (char *addr_exp, int fpregs) if (group != NULL) { int regnum; + for (regnum = 0; regnum < gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch); @@ -2301,6 +2351,7 @@ static void attach_command_continuation (void *args) { struct attach_command_continuation_args *a = args; + attach_command_post_wait (a->args, a->from_tty, a->async_exec); } @@ -2308,6 +2359,7 @@ static void attach_command_continuation_free_args (void *args) { struct attach_command_continuation_args *a = args; + xfree (a->args); xfree (a); } @@ -2315,8 +2367,6 @@ attach_command_continuation_free_args (void *args) void attach_command (char *args, int from_tty) { - char *exec_file; - char *full_exec_path = NULL; int async_exec = 0; struct cleanup *back_to = make_cleanup (null_cleanup, NULL); @@ -2506,6 +2556,8 @@ detach_command (char *args, int from_tty) if (ptid_equal (inferior_ptid, null_ptid)) error (_("The program is not being run.")); + disconnect_tracing (from_tty); + target_detach (args, from_tty); /* If the solist is global across inferiors, don't clear it when we @@ -2545,6 +2597,7 @@ void interrupt_target_1 (int all_threads) { ptid_t ptid; + if (all_threads) ptid = minus_one_ptid; else @@ -2641,19 +2694,22 @@ _initialize_infcmd (void) /* add the filename of the terminal connected to inferior I/O */ add_setshow_filename_cmd ("inferior-tty", class_run, - &inferior_io_terminal, _("\ + &inferior_io_terminal_scratch, _("\ Set terminal for future runs of program being debugged."), _("\ Show terminal for future runs of program being debugged."), _("\ -Usage: set inferior-tty /dev/pts/1"), NULL, NULL, &setlist, &showlist); +Usage: set inferior-tty /dev/pts/1"), + set_inferior_tty_command, + show_inferior_tty_command, + &setlist, &showlist); add_com_alias ("tty", "set inferior-tty", class_alias, 0); add_setshow_optional_filename_cmd ("args", class_run, - &inferior_args, _("\ + &inferior_args_scratch, _("\ Set argument list to give program being debugged when it is started."), _("\ Show argument list to give program being debugged when it is started."), _("\ Follow this command with any number of args, to be passed to the program."), - notice_args_set, - notice_args_read, + set_args_command, + show_args_command, &setlist, &showlist); c = add_cmd ("environment", no_class, environment_info, _("\ @@ -2850,7 +2906,4 @@ Register name as argument means describe only that register.")); add_info ("vector", vector_info, _("Print the status of the vector unit\n")); - - inferior_environ = make_environ (); - init_environ (inferior_environ); } diff --git a/contrib/gdb-7/gdb/inferior.c b/contrib/gdb-7/gdb/inferior.c index 676fff9941..28c586792b 100644 --- a/contrib/gdb-7/gdb/inferior.c +++ b/contrib/gdb-7/gdb/inferior.c @@ -1,6 +1,6 @@ /* Multi-process control for GDB, the GNU debugger. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -18,6 +18,7 @@ along with this program. If not, see . */ #include "defs.h" +#include "exec.h" #include "inferior.h" #include "target.h" #include "command.h" @@ -26,28 +27,72 @@ #include "ui-out.h" #include "observer.h" #include "gdbthread.h" +#include "gdbcore.h" +#include "symfile.h" +#include "environ.h" void _initialize_inferiors (void); -static struct inferior *inferior_list = NULL; +static void inferior_alloc_data (struct inferior *inf); +static void inferior_free_data (struct inferior *inf); + +struct inferior *inferior_list = NULL; static int highest_inferior_num; /* Print notices on inferior events (attach, detach, etc.), set with `set print inferior-events'. */ static int print_inferior_events = 0; +/* The Current Inferior. */ +static struct inferior *current_inferior_ = NULL; + struct inferior* current_inferior (void) { - struct inferior *inf = find_inferior_pid (ptid_get_pid (inferior_ptid)); - gdb_assert (inf); - return inf; + return current_inferior_; +} + +void +set_current_inferior (struct inferior *inf) +{ + /* There's always an inferior. */ + gdb_assert (inf != NULL); + + current_inferior_ = inf; +} + +/* A cleanups callback, helper for save_current_program_space + below. */ + +static void +restore_inferior (void *arg) +{ + struct inferior *saved_inferior = arg; + + set_current_inferior (saved_inferior); +} + +/* Save the current program space so that it may be restored by a later + call to do_cleanups. Returns the struct cleanup pointer needed for + later doing the cleanup. */ + +struct cleanup * +save_current_inferior (void) +{ + struct cleanup *old_chain = make_cleanup (restore_inferior, + current_inferior_); + + return old_chain; } static void free_inferior (struct inferior *inf) { discard_all_inferior_continuations (inf); + inferior_free_data (inf); + xfree (inf->args); + xfree (inf->terminal); + free_environ (inf->environment); xfree (inf->private); xfree (inf); } @@ -85,7 +130,15 @@ add_inferior_silent (int pid) inf->next = inferior_list; inferior_list = inf; - observer_notify_new_inferior (pid); + inf->environment = make_environ (); + init_environ (inf->environment); + + inferior_alloc_data (inf); + + observer_notify_inferior_added (inf); + + if (pid != 0) + inferior_appeared (inf, pid); return inf; } @@ -123,44 +176,64 @@ delete_thread_of_inferior (struct thread_info *tp, void *data) return 0; } +void +delete_threads_of_inferior (int pid) +{ + struct inferior *inf; + struct delete_thread_of_inferior_arg arg; + + for (inf = inferior_list; inf; inf = inf->next) + if (inf->pid == pid) + break; + + if (!inf) + return; + + arg.pid = pid; + arg.silent = 1; + + iterate_over_threads (delete_thread_of_inferior, &arg); +} + /* If SILENT then be quiet -- don't announce a inferior death, or the exit of its threads. */ -static void -delete_inferior_1 (int pid, int silent) + +void +delete_inferior_1 (struct inferior *todel, int silent) { struct inferior *inf, *infprev; - struct delete_thread_of_inferior_arg arg = { pid, silent }; + struct delete_thread_of_inferior_arg arg; infprev = NULL; for (inf = inferior_list; inf; infprev = inf, inf = inf->next) - if (inf->pid == pid) + if (inf == todel) break; if (!inf) return; - arg.pid = pid; + arg.pid = inf->pid; arg.silent = silent; iterate_over_threads (delete_thread_of_inferior, &arg); - /* Notify the observers before removing the inferior from the list, - so that the observers have a change to look it up. */ - observer_notify_inferior_exit (pid); - if (infprev) infprev->next = inf->next; else inferior_list = inf->next; + observer_notify_inferior_removed (inf); + free_inferior (inf); } void delete_inferior (int pid) { - delete_inferior_1 (pid, 0); + struct inferior *inf = find_inferior_pid (pid); + + delete_inferior_1 (inf, 0); if (print_inferior_events) printf_unfiltered (_("[Inferior %d exited]\n"), pid); @@ -169,31 +242,104 @@ delete_inferior (int pid) void delete_inferior_silent (int pid) { - delete_inferior_1 (pid, 1); + struct inferior *inf = find_inferior_pid (pid); + + delete_inferior_1 (inf, 1); +} + + +/* If SILENT then be quiet -- don't announce a inferior exit, or the + exit of its threads. */ + +static void +exit_inferior_1 (struct inferior *inftoex, int silent) +{ + struct inferior *inf; + struct delete_thread_of_inferior_arg arg; + + for (inf = inferior_list; inf; inf = inf->next) + if (inf == inftoex) + break; + + if (!inf) + return; + + arg.pid = inf->pid; + arg.silent = silent; + + iterate_over_threads (delete_thread_of_inferior, &arg); + + /* Notify the observers before removing the inferior from the list, + so that the observers have a chance to look it up. */ + observer_notify_inferior_exit (inf); + + inf->pid = 0; + if (inf->vfork_parent != NULL) + { + inf->vfork_parent->vfork_child = NULL; + inf->vfork_parent = NULL; + } +} + +void +exit_inferior (int pid) +{ + struct inferior *inf = find_inferior_pid (pid); + + exit_inferior_1 (inf, 0); + + if (print_inferior_events) + printf_unfiltered (_("[Inferior %d exited]\n"), pid); +} + +void +exit_inferior_silent (int pid) +{ + struct inferior *inf = find_inferior_pid (pid); + + exit_inferior_1 (inf, 1); +} + +void +exit_inferior_num_silent (int num) +{ + struct inferior *inf = find_inferior_id (num); + + exit_inferior_1 (inf, 1); } void detach_inferior (int pid) { - delete_inferior_1 (pid, 1); + struct inferior *inf = find_inferior_pid (pid); + + exit_inferior_1 (inf, 1); if (print_inferior_events) printf_unfiltered (_("[Inferior %d detached]\n"), pid); } +void +inferior_appeared (struct inferior *inf, int pid) +{ + inf->pid = pid; + + observer_notify_inferior_appeared (inf); +} + void discard_all_inferiors (void) { - struct inferior *inf, *infnext; + struct inferior *inf; - for (inf = inferior_list; inf; inf = infnext) + for (inf = inferior_list; inf; inf = inf->next) { - infnext = inf->next; - delete_inferior_silent (inf->pid); + if (inf->pid != 0) + exit_inferior_silent (inf->pid); } } -static struct inferior * +struct inferior * find_inferior_id (int num) { struct inferior *inf; @@ -210,6 +356,11 @@ find_inferior_pid (int pid) { struct inferior *inf; + /* Looking for inferior pid == 0 is always wrong, and indicative of + a bug somewhere else. There may be more than one with pid == 0, + for instance. */ + gdb_assert (pid != 0); + for (inf = inferior_list; inf; inf = inf->next) if (inf->pid == pid) return inf; @@ -217,6 +368,22 @@ find_inferior_pid (int pid) return NULL; } +/* Find an inferior bound to PSPACE. */ + +struct inferior * +find_inferior_for_program_space (struct program_space *pspace) +{ + struct inferior *inf; + + for (inf = inferior_list; inf != NULL; inf = inf->next) + { + if (inf->pspace == pspace) + return inf; + } + + return NULL; +} + struct inferior * iterate_over_inferiors (int (*callback) (struct inferior *, void *), void *data) @@ -282,15 +449,72 @@ in_inferior_list (int pid) int have_inferiors (void) { - return inferior_list != NULL; + struct inferior *inf; + + for (inf = inferior_list; inf; inf = inf->next) + if (inf->pid != 0) + return 1; + + return 0; } int have_live_inferiors (void) { + struct target_ops *t; + /* The check on stratum suffices, as GDB doesn't currently support multiple target interfaces. */ - return (current_target.to_stratum >= process_stratum && have_inferiors ()); + if (have_inferiors ()) + for (t = current_target.beneath; t != NULL; t = t->beneath) + if (t->to_stratum == process_stratum) + return 1; + + return 0; +} + +/* Prune away automatically added program spaces that aren't required + anymore. */ + +void +prune_inferiors (void) +{ + struct inferior *ss, **ss_link; + struct inferior *current = current_inferior (); + + ss = inferior_list; + ss_link = &inferior_list; + while (ss) + { + if (ss == current + || !ss->removable + || ss->pid != 0) + { + ss_link = &ss->next; + ss = *ss_link; + continue; + } + + *ss_link = ss->next; + delete_inferior_1 (ss, 1); + ss = *ss_link; + } + + prune_program_spaces (); +} + +/* Simply returns the count of inferiors. */ + +int +number_of_inferiors (void) +{ + struct inferior *inf; + int count = 0; + + for (inf = inferior_list; inf != NULL; inf = inf->next) + count++; + + return count; } /* Prints the list of inferiors and their details on UIOUT. This is a @@ -308,8 +532,6 @@ print_inferior (struct ui_out *uiout, int requested_inferior) /* Compute number of inferiors we will print. */ for (inf = inferior_list; inf; inf = inf->next) { - struct cleanup *chain2; - if (requested_inferior != -1 && inf->num != requested_inferior) continue; @@ -322,13 +544,14 @@ print_inferior (struct ui_out *uiout, int requested_inferior) return; } - old_chain = make_cleanup_ui_out_table_begin_end (uiout, 3, inf_count, + old_chain = make_cleanup_ui_out_table_begin_end (uiout, 4, inf_count, "inferiors"); ui_out_table_header (uiout, 1, ui_left, "current", ""); ui_out_table_header (uiout, 4, ui_left, "number", "Num"); ui_out_table_header (uiout, 17, ui_left, "target-id", "Description"); - ui_out_table_body (uiout); + ui_out_table_header (uiout, 17, ui_left, "exec", "Executable"); + ui_out_table_body (uiout); for (inf = inferior_list; inf; inf = inf->next) { struct cleanup *chain2; @@ -338,24 +561,43 @@ print_inferior (struct ui_out *uiout, int requested_inferior) chain2 = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); - if (inf->pid == ptid_get_pid (inferior_ptid)) + if (inf == current_inferior ()) ui_out_field_string (uiout, "current", "*"); else ui_out_field_skip (uiout, "current"); ui_out_field_int (uiout, "number", inf->num); - ui_out_field_string (uiout, "target-id", - target_pid_to_str (pid_to_ptid (inf->pid))); + + if (inf->pid) + ui_out_field_string (uiout, "target-id", + target_pid_to_str (pid_to_ptid (inf->pid))); + else + ui_out_field_string (uiout, "target-id", ""); + + if (inf->pspace->ebfd) + ui_out_field_string (uiout, "exec", + bfd_get_filename (inf->pspace->ebfd)); + else + ui_out_field_skip (uiout, "exec"); + + /* Print extra info that isn't really fit to always present in + tabular form. Currently we print the vfork parent/child + relationships, if any. */ + if (inf->vfork_parent) + { + ui_out_text (uiout, _("\n\tis vfork child of inferior ")); + ui_out_field_int (uiout, "vfork-parent", inf->vfork_parent->num); + } + if (inf->vfork_child) + { + ui_out_text (uiout, _("\n\tis vfork parent of inferior ")); + ui_out_field_int (uiout, "vfork-child", inf->vfork_child->num); + } ui_out_text (uiout, "\n"); do_cleanups (chain2); } - if (inferior_list - && ptid_equal (inferior_ptid, null_ptid)) - ui_out_message (uiout, 0, "\n\ -No selected inferior/thread. See `help thread' or `help inferior'.\n"); - do_cleanups (old_chain); } @@ -414,36 +656,52 @@ kill_inferior_command (char *args, int from_tty) static void inferior_command (char *args, int from_tty) { - int num, pid; - - if (!have_inferiors ()) - error (_("No inferiors")); + struct inferior *inf; + int num; num = parse_and_eval_long (args); - if (!valid_gdb_inferior_id (num)) + inf = find_inferior_id (num); + if (inf == NULL) error (_("Inferior ID %d not known."), num); - pid = gdb_inferior_id_to_pid (num); + printf_filtered (_("[Switching to inferior %d [%s] (%s)]\n"), + inf->num, + target_pid_to_str (pid_to_ptid (inf->pid)), + (inf->pspace->ebfd + ? bfd_get_filename (inf->pspace->ebfd) + : _(""))); - if (pid != ptid_get_pid (inferior_ptid)) + if (inf->pid != 0) { - struct thread_info *tp; + if (inf->pid != ptid_get_pid (inferior_ptid)) + { + struct thread_info *tp; + + tp = any_thread_of_process (inf->pid); + if (!tp) + error (_("Inferior has no threads.")); - tp = any_thread_of_process (pid); - if (!tp) - error (_("Inferior has no threads.")); + switch_to_thread (tp->ptid); + } - switch_to_thread (tp->ptid); + printf_filtered (_("[Switching to thread %d (%s)] "), + pid_to_thread_id (inferior_ptid), + target_pid_to_str (inferior_ptid)); } + else + { + struct inferior *inf; - printf_filtered (_("[Switching to thread %d (%s)] "), - pid_to_thread_id (inferior_ptid), - target_pid_to_str (inferior_ptid)); + inf = find_inferior_id (num); + set_current_inferior (inf); + switch_to_thread (null_ptid); + set_current_program_space (inf->pspace); + } - if (is_running (inferior_ptid)) + if (inf->pid != 0 && is_running (inferior_ptid)) ui_out_text (uiout, "(running)\n"); - else + else if (inf->pid != 0) { ui_out_text (uiout, "\n"); print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC); @@ -467,6 +725,191 @@ info_inferiors_command (char *args, int from_tty) print_inferior (uiout, requested); } +/* remove-inferior ID */ + +void +remove_inferior_command (char *args, int from_tty) +{ + int num; + struct inferior *inf; + + num = parse_and_eval_long (args); + inf = find_inferior_id (num); + + if (inf == NULL) + error (_("Inferior ID %d not known."), num); + + if (inf == current_inferior ()) + error (_("Can not remove current symbol inferior.")); + + delete_inferior_1 (inf, 1); +} + +struct inferior * +add_inferior_with_spaces (void) +{ + struct address_space *aspace; + struct program_space *pspace; + struct inferior *inf; + + /* If all inferiors share an address space on this system, this + doesn't really return a new address space; otherwise, it + really does. */ + aspace = maybe_new_address_space (); + pspace = add_program_space (aspace); + inf = add_inferior (0); + inf->pspace = pspace; + inf->aspace = pspace->aspace; + + return inf; +} + +/* add-inferior [-copies N] [-exec FILENAME] */ + +void +add_inferior_command (char *args, int from_tty) +{ + int i, copies = 1; + char *exec = NULL; + char **argv; + struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); + + if (args) + { + argv = gdb_buildargv (args); + make_cleanup_freeargv (argv); + + for (; *argv != NULL; argv++) + { + if (**argv == '-') + { + if (strcmp (*argv, "-copies") == 0) + { + ++argv; + if (!*argv) + error (_("No argument to -copies")); + copies = parse_and_eval_long (*argv); + } + else if (strcmp (*argv, "-exec") == 0) + { + ++argv; + if (!*argv) + error (_("No argument to -exec")); + exec = *argv; + } + } + else + error (_("Invalid argument")); + } + } + + save_current_space_and_thread (); + + for (i = 0; i < copies; ++i) + { + struct inferior *inf = add_inferior_with_spaces (); + + printf_filtered (_("Added inferior %d\n"), inf->num); + + if (exec != NULL) + { + /* Switch over temporarily, while reading executable and + symbols.q */ + set_current_program_space (inf->pspace); + set_current_inferior (inf); + switch_to_thread (null_ptid); + + exec_file_attach (exec, from_tty); + symbol_file_add_main (exec, from_tty); + } + } + + do_cleanups (old_chain); +} + +/* clone-inferior [-copies N] [ID] */ + +void +clone_inferior_command (char *args, int from_tty) +{ + int i, copies = 1; + char **argv; + struct inferior *orginf = NULL; + struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); + + if (args) + { + argv = gdb_buildargv (args); + make_cleanup_freeargv (argv); + + for (; *argv != NULL; argv++) + { + if (**argv == '-') + { + if (strcmp (*argv, "-copies") == 0) + { + ++argv; + if (!*argv) + error (_("No argument to -copies")); + copies = parse_and_eval_long (*argv); + + if (copies < 0) + error (_("Invalid copies number")); + } + } + else + { + if (orginf == NULL) + { + int num; + + /* The first non-option (-) argument specified the + program space ID. */ + num = parse_and_eval_long (*argv); + orginf = find_inferior_id (num); + + if (orginf == NULL) + error (_("Inferior ID %d not known."), num); + continue; + } + else + error (_("Invalid argument")); + } + } + } + + /* If no inferior id was specified, then the user wants to clone the + current inferior. */ + if (orginf == NULL) + orginf = current_inferior (); + + save_current_space_and_thread (); + + for (i = 0; i < copies; ++i) + { + struct address_space *aspace; + struct program_space *pspace; + struct inferior *inf; + + /* If all inferiors share an address space on this system, this + doesn't really return a new address space; otherwise, it + really does. */ + aspace = maybe_new_address_space (); + pspace = add_program_space (aspace); + inf = add_inferior (0); + inf->pspace = pspace; + inf->aspace = pspace->aspace; + + printf_filtered (_("Added inferior %d.\n"), inf->num); + + set_current_inferior (inf); + switch_to_thread (null_ptid); + clone_program_space (pspace, orginf->pspace); + } + + do_cleanups (old_chain); +} + /* Print notices when new inferiors are created and die. */ static void show_print_inferior_events (struct ui_file *file, int from_tty, @@ -475,19 +918,141 @@ show_print_inferior_events (struct ui_file *file, int from_tty, fprintf_filtered (file, _("Printing of inferior events is %s.\n"), value); } + + +/* Keep a registry of per-inferior data-pointers required by other GDB + modules. */ + +struct inferior_data +{ + unsigned index; + void (*cleanup) (struct inferior *, void *); +}; + +struct inferior_data_registration +{ + struct inferior_data *data; + struct inferior_data_registration *next; +}; + +struct inferior_data_registry +{ + struct inferior_data_registration *registrations; + unsigned num_registrations; +}; + +static struct inferior_data_registry inferior_data_registry + = { NULL, 0 }; + +const struct inferior_data * +register_inferior_data_with_cleanup + (void (*cleanup) (struct inferior *, void *)) +{ + struct inferior_data_registration **curr; + + /* Append new registration. */ + for (curr = &inferior_data_registry.registrations; + *curr != NULL; curr = &(*curr)->next); + + *curr = XMALLOC (struct inferior_data_registration); + (*curr)->next = NULL; + (*curr)->data = XMALLOC (struct inferior_data); + (*curr)->data->index = inferior_data_registry.num_registrations++; + (*curr)->data->cleanup = cleanup; + + return (*curr)->data; +} + +const struct inferior_data * +register_inferior_data (void) +{ + return register_inferior_data_with_cleanup (NULL); +} + +static void +inferior_alloc_data (struct inferior *inf) +{ + gdb_assert (inf->data == NULL); + inf->num_data = inferior_data_registry.num_registrations; + inf->data = XCALLOC (inf->num_data, void *); +} + +static void +inferior_free_data (struct inferior *inf) +{ + gdb_assert (inf->data != NULL); + clear_inferior_data (inf); + xfree (inf->data); + inf->data = NULL; +} + +void +clear_inferior_data (struct inferior *inf) +{ + struct inferior_data_registration *registration; + int i; + + gdb_assert (inf->data != NULL); + + for (registration = inferior_data_registry.registrations, i = 0; + i < inf->num_data; + registration = registration->next, i++) + if (inf->data[i] != NULL && registration->data->cleanup) + registration->data->cleanup (inf, inf->data[i]); + + memset (inf->data, 0, inf->num_data * sizeof (void *)); +} + +void +set_inferior_data (struct inferior *inf, + const struct inferior_data *data, + void *value) +{ + gdb_assert (data->index < inf->num_data); + inf->data[data->index] = value; +} + +void * +inferior_data (struct inferior *inf, const struct inferior_data *data) +{ + gdb_assert (data->index < inf->num_data); + return inf->data[data->index]; +} + void -_initialize_inferiors (void) +initialize_inferiors (void) { + /* There's always one inferior. Note that this function isn't an + automatic _initialize_foo function, since other _initialize_foo + routines may need to install their per-inferior data keys. We + can only allocate an inferior when all those modules have done + that. Do this after initialize_progspace, due to the + current_program_space reference. */ + current_inferior_ = add_inferior (0); + current_inferior_->pspace = current_program_space; + current_inferior_->aspace = current_program_space->aspace; + add_info ("inferiors", info_inferiors_command, _("IDs of currently known inferiors.")); - add_setshow_boolean_cmd ("inferior-events", no_class, - &print_inferior_events, _("\ -Set printing of inferior events (e.g., inferior start and exit)."), _("\ -Show printing of inferior events (e.g., inferior start and exit)."), NULL, - NULL, - show_print_inferior_events, - &setprintlist, &showprintlist); + add_com ("add-inferior", no_class, add_inferior_command, _("\ +Add a new inferior.\n\ +Usage: add-inferior [-copies ] [-exec ]\n\ +N is the optional number of inferior to add, default is 1.\n\ +FILENAME is the file name of the executable to use\n\ +as main program.")); + + add_com ("remove-inferior", no_class, remove_inferior_command, _("\ +Remove inferior ID.\n\ +Usage: remove-inferior ID")); + + add_com ("clone-inferior", no_class, clone_inferior_command, _("\ +Clone inferior ID.\n\ +Usage: clone-inferior [-copies ] [ID]\n\ +Add N copies of inferior ID. The new inferior has the same\n\ +executable loaded as the copied inferior. If -copies is not specified,\n\ +adds 1 copy. If ID is not specified, it is the current inferior\n\ +that is cloned.")); add_cmd ("inferior", class_run, detach_inferior_command, _("\ Detach from inferior ID."), @@ -501,4 +1066,13 @@ Kill inferior ID."), Use this command to switch between inferiors.\n\ The new inferior ID must be currently known."), &cmdlist); + + add_setshow_boolean_cmd ("inferior-events", no_class, + &print_inferior_events, _("\ +Set printing of inferior events (e.g., inferior start and exit)."), _("\ +Show printing of inferior events (e.g., inferior start and exit)."), NULL, + NULL, + show_print_inferior_events, + &setprintlist, &showprintlist); + } diff --git a/contrib/gdb-7/gdb/inferior.h b/contrib/gdb-7/gdb/inferior.h index f1b5d173a7..5abec6868d 100644 --- a/contrib/gdb-7/gdb/inferior.h +++ b/contrib/gdb-7/gdb/inferior.h @@ -2,7 +2,7 @@ Where it is, why it stopped, and how to step it. Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -41,6 +41,8 @@ struct terminal_info; /* For struct frame_id. */ #include "frame.h" +#include "progspace.h" + /* Two structures are used to record inferior state. inferior_thread_state contains state about the program itself like its @@ -103,6 +105,16 @@ extern int ptid_equal (ptid_t p1, ptid_t p2); /* Return true if PTID represents a process id. */ extern int ptid_is_pid (ptid_t ptid); +/* Returns true if PTID matches filter FILTER. FILTER can be the wild + card MINUS_ONE_PTID (all ptid match it); can be a ptid representing + a process (ptid_is_pid returns true), in which case, all lwps and + threads of that given process match, lwps and threads of other + processes do not; or, it can represent a specific thread, in which + case, only that thread will match true. PTID must represent a + specific LWP or THREAD, it can never be a wild card. */ + +extern int ptid_match (ptid_t ptid, ptid_t filter); + /* Save value of inferior_ptid so that it may be restored by a later call to do_cleanups(). Returns the struct cleanup pointer needed for later doing the cleanup. */ @@ -129,8 +141,6 @@ extern int sync_execution; /* Inferior environment. */ -extern struct gdb_environ *inferior_environ; - extern void clear_proceed_status (void); extern void proceed (CORE_ADDR, enum target_signal, int); @@ -149,6 +159,11 @@ extern int step_stop_if_no_debug; are kept running freely. */ extern int non_stop; +/* If set (default), when following a fork, GDB will detach from one + the fork branches, child or parent. Exactly which branch is + detached depends on 'set follow-fork-mode' setting. */ +extern int detach_fork; + extern void generic_mourn_inferior (void); extern void terminal_save_ours (void); @@ -170,6 +185,8 @@ extern void address_to_signed_pointer (struct gdbarch *gdbarch, extern void wait_for_inferior (int treat_exec_as_sigtrap); +extern void prepare_for_detach (void); + extern void fetch_inferior_event (void *); extern void init_wait_for_inferior (void); @@ -215,6 +232,10 @@ extern char *construct_inferior_arguments (int, char **); /* From infrun.c */ +extern int debug_infrun; + +extern int stop_on_solib_events; + extern void start_remote (int from_tty); extern void normal_stop (void); @@ -246,15 +267,13 @@ void set_step_info (struct frame_info *frame, struct symtab_and_line sal); /* From infcmd.c */ -extern void tty_command (char *, int); - extern void post_create_inferior (struct target_ops *, int); extern void attach_command (char *, int); extern char *get_inferior_args (void); -extern char *set_inferior_args (char *); +extern void set_inferior_args (char *); extern void set_inferior_args_vector (int, char **); @@ -282,7 +301,7 @@ extern CORE_ADDR stop_pc; /* Nonzero if stopped due to completion of a stack dummy routine. */ -extern int stop_stack_dummy; +extern enum stop_stack_kind stop_stack_dummy; /* Nonzero if program stopped due to a random (unexpected) signal in inferior process. */ @@ -408,6 +427,37 @@ struct inferior the ptid_t.pid member of threads of this inferior. */ int pid; + /* True if this was an auto-created inferior, e.g. created from + following a fork; false, if this inferior was manually added by + the user, and we should not attempt to prune it + automatically. */ + int removable; + + /* The address space bound to this inferior. */ + struct address_space *aspace; + + /* The program space bound to this inferior. */ + struct program_space *pspace; + + /* The arguments string to use when running. */ + char *args; + + /* The size of elements in argv. */ + int argc; + + /* The vector version of arguments. If ARGC is nonzero, + then we must compute ARGS from this (via the target). + This is always coming from main's argv and therefore + should never be freed. */ + char **argv; + + /* The name of terminal device to use for I/O. */ + char *terminal; + + /* Environment to use for running inferior, + in format described in environ.h. */ + struct gdb_environ *environment; + /* See the definition of stop_kind above. */ enum stop_kind stop_soon; @@ -415,14 +465,33 @@ struct inferior forked. */ int attach_flag; + /* If this inferior is a vfork child, then this is the pointer to + its vfork parent, if GDB is still attached to it. */ + struct inferior *vfork_parent; + + /* If this process is a vfork parent, this is the pointer to the + child. Since a vfork parent is left frozen by the kernel until + the child execs or exits, a process can only have one vfork child + at a given time. */ + struct inferior *vfork_child; + + /* True if this inferior should be detached when it's vfork sibling + exits or execs. */ + int pending_detach; + + /* True if this inferior is a vfork parent waiting for a vfork child + not under our control to be done with the shared memory region, + either by exiting or execing. */ + int waiting_for_vfork_done; + + /* True if we're in the process of detaching from this inferior. */ + int detaching; + /* What is left to do for an execution command after any thread of this inferior stops. For continuations associated with a specific thread, see `struct thread_info'. */ struct continuation *continuations; - /* Terminal info and state managed by inflow.c. */ - struct terminal_info *terminal_info; - /* Private data used by the target vector implementation. */ struct private_inferior *private; @@ -439,8 +508,24 @@ struct inferior /* This counts all syscall catch requests, so we can readily determine if any catching is necessary. */ int total_syscalls_count; + + /* Per inferior data-pointers required by other GDB modules. */ + void **data; + unsigned num_data; }; +/* Keep a registry of per-inferior data-pointers required by other GDB + modules. */ + +extern const struct inferior_data *register_inferior_data (void); +extern const struct inferior_data *register_inferior_data_with_cleanup + (void (*cleanup) (struct inferior *, void *)); +extern void clear_inferior_data (struct inferior *inf); +extern void set_inferior_data (struct inferior *inf, + const struct inferior_data *data, void *value); +extern void *inferior_data (struct inferior *inf, + const struct inferior_data *data); + /* Create an empty inferior list, or empty the existing one. */ extern void init_inferior_list (void); @@ -457,6 +542,8 @@ extern struct inferior *add_inferior_silent (int pid); /* Delete an existing inferior list entry, due to inferior exit. */ extern void delete_inferior (int pid); +extern void delete_inferior_1 (struct inferior *todel, int silent); + /* Same as delete_inferior, but don't print new inferior notifications to the CLI. */ extern void delete_inferior_silent (int pid); @@ -464,6 +551,14 @@ extern void delete_inferior_silent (int pid); /* Delete an existing inferior list entry, due to inferior detaching. */ extern void detach_inferior (int pid); +extern void exit_inferior (int pid); + +extern void exit_inferior_silent (int pid); + +extern void exit_inferior_num_silent (int num); + +extern void inferior_appeared (struct inferior *inf, int pid); + /* Get rid of all inferiors. */ extern void discard_all_inferiors (void); @@ -482,9 +577,16 @@ extern int in_inferior_list (int pid); not the system's). */ extern int valid_gdb_inferior_id (int num); -/* Search function to lookup a inferior by target 'pid'. */ +/* Search function to lookup an inferior by target 'pid'. */ extern struct inferior *find_inferior_pid (int pid); +/* Search function to lookup an inferior by GDB 'num'. */ +extern struct inferior *find_inferior_id (int num); + +/* Find an inferior bound to PSPACE. */ +extern struct inferior * + find_inferior_for_program_space (struct program_space *pspace); + /* Inferior iterator function. Calls a callback function once for each inferior, so long as the @@ -516,4 +618,20 @@ extern int have_live_inferiors (void); this if there is no current inferior. */ extern struct inferior *current_inferior (void); +extern void set_current_inferior (struct inferior *); + +extern struct cleanup *save_current_inferior (void); + +extern struct inferior *inferior_list; + +/* Prune away automatically added inferiors that aren't required + anymore. */ +extern void prune_inferiors (void); + +extern int number_of_inferiors (void); + +extern struct inferior *add_inferior_with_spaces (void); + +extern void update_observer_mode (void); + #endif /* !defined (INFERIOR_H) */ diff --git a/contrib/gdb-7/gdb/inflow.c b/contrib/gdb-7/gdb/inflow.c index 9ec45dd090..5e11ca6009 100644 --- a/contrib/gdb-7/gdb/inflow.c +++ b/contrib/gdb-7/gdb/inflow.c @@ -1,7 +1,7 @@ /* Low level interface to ptrace, for GDB when running under Unix. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -43,10 +43,6 @@ #define O_NOCTTY 0 #endif -#if defined (SIGIO) && defined (FASYNC) && defined (FD_SET) && defined (F_SETOWN) -static void handle_sigio (int); -#endif - extern void _initialize_inflow (void); static void pass_signal (int); @@ -86,6 +82,8 @@ struct terminal_info unimportant. */ static struct terminal_info our_terminal_info; +static struct terminal_info *get_inflow_inferior_data (struct inferior *); + #ifdef PROCESS_GROUP_TYPE /* Return the process group of the current inferior. */ @@ -93,7 +91,7 @@ static struct terminal_info our_terminal_info; PROCESS_GROUP_TYPE inferior_process_group (void) { - return current_inferior ()->terminal_info->process_group; + return get_inflow_inferior_data (current_inferior ())->process_group; } #endif @@ -123,6 +121,7 @@ static PROCESS_GROUP_TYPE gdb_getpgrp (void) { int process_group = -1; + #ifdef HAVE_TERMIOS process_group = tcgetpgrp (0); #endif @@ -201,15 +200,15 @@ terminal_init_inferior_with_pgrp (int pgrp) if (gdb_has_a_terminal ()) { struct inferior *inf = current_inferior (); + struct terminal_info *tinfo = get_inflow_inferior_data (inf); /* We could just as well copy our_ttystate (if we felt like adding a new function serial_copy_tty_state()). */ - xfree (inf->terminal_info->ttystate); - inf->terminal_info->ttystate - = serial_get_tty_state (stdin_serial); + xfree (tinfo->ttystate); + tinfo->ttystate = serial_get_tty_state (stdin_serial); #ifdef PROCESS_GROUP_TYPE - inf->terminal_info->process_group = pgrp; + tinfo->process_group = pgrp; #endif /* Make sure that next time we call terminal_inferior (which will be @@ -256,15 +255,17 @@ void terminal_inferior (void) { struct inferior *inf; + struct terminal_info *tinfo; if (!terminal_is_ours) return; inf = current_inferior (); + tinfo = get_inflow_inferior_data (inf); if (gdb_has_a_terminal () - && inf->terminal_info->ttystate != NULL - && inf->terminal_info->run_terminal == NULL) + && tinfo->ttystate != NULL + && tinfo->run_terminal == NULL) { int result; @@ -272,8 +273,8 @@ terminal_inferior (void) /* Is there a reason this is being done twice? It happens both places we use F_SETFL, so I'm inclined to think perhaps there is some reason, however perverse. Perhaps not though... */ - result = fcntl (0, F_SETFL, inf->terminal_info->tflags); - result = fcntl (0, F_SETFL, inf->terminal_info->tflags); + result = fcntl (0, F_SETFL, tinfo->tflags); + result = fcntl (0, F_SETFL, tinfo->tflags); OOPSY ("fcntl F_SETFL"); #endif @@ -281,7 +282,7 @@ terminal_inferior (void) terminal_ours, we will not change in our out of raw mode with this call, so we don't flush any input. */ result = serial_set_tty_state (stdin_serial, - inf->terminal_info->ttystate); + tinfo->ttystate); OOPSY ("setting tty state"); if (!job_control) @@ -307,13 +308,13 @@ terminal_inferior (void) if (job_control) { #ifdef HAVE_TERMIOS - result = tcsetpgrp (0, inf->terminal_info->process_group); + result = tcsetpgrp (0, tinfo->process_group); if (!inf->attach_flag) OOPSY ("tcsetpgrp"); #endif #ifdef HAVE_SGTTY - result = ioctl (0, TIOCSPGRP, &inf->terminal_info->process_group); + result = ioctl (0, TIOCSPGRP, &tinfo->process_group); if (!inf->attach_flag) OOPSY ("TIOCSPGRP"); #endif @@ -355,6 +356,7 @@ static void terminal_ours_1 (int output_only) { struct inferior *inf; + struct terminal_info *tinfo; if (terminal_is_ours) return; @@ -367,8 +369,9 @@ terminal_ours_1 (int output_only) avoids attempting all the ioctl's when running in batch. */ inf = current_inferior (); + tinfo = get_inflow_inferior_data (inf); - if (inf->terminal_info->run_terminal != NULL || gdb_has_a_terminal () == 0) + if (tinfo->run_terminal != NULL || gdb_has_a_terminal () == 0) return; { @@ -384,15 +387,15 @@ terminal_ours_1 (int output_only) osigttou = (void (*)()) signal (SIGTTOU, SIG_IGN); #endif - xfree (inf->terminal_info->ttystate); - inf->terminal_info->ttystate = serial_get_tty_state (stdin_serial); + xfree (tinfo->ttystate); + tinfo->ttystate = serial_get_tty_state (stdin_serial); #ifdef PROCESS_GROUP_TYPE if (!inf->attach_flag) /* If setpgrp failed in terminal_inferior, this would give us our process group instead of the inferior's. See terminal_inferior for details. */ - inf->terminal_info->process_group = gdb_getpgrp (); + tinfo->process_group = gdb_getpgrp (); #endif /* Here we used to set ICANON in our ttystate, but I believe this @@ -410,7 +413,7 @@ terminal_ours_1 (int output_only) */ serial_noflush_set_tty_state (stdin_serial, our_terminal_info.ttystate, - inf->terminal_info->ttystate); + tinfo->ttystate); if (job_control) { @@ -446,7 +449,7 @@ terminal_ours_1 (int output_only) } #ifdef F_GETFL - inf->terminal_info->tflags = fcntl (0, F_GETFL, 0); + tinfo->tflags = fcntl (0, F_GETFL, 0); /* Is there a reason this is being done twice? It happens both places we use F_SETFL, so I'm inclined to think perhaps there @@ -457,18 +460,38 @@ terminal_ours_1 (int output_only) } } -/* This is a "new_inferior" observer. It's business is to allocate - the TERMINAL_INFO member of the inferior structure. This field is - private to inflow.c, and its type is opaque to the rest of GDB. - PID is the target pid of the inferior that has just been added to - the inferior list. */ +/* Per-inferior data key. */ +static const struct inferior_data *inflow_inferior_data; static void -inflow_new_inferior (int pid) +inflow_inferior_data_cleanup (struct inferior *inf, void *arg) { - struct inferior *inf = find_inferior_pid (pid); + struct terminal_info *info; - inf->terminal_info = XZALLOC (struct terminal_info); + info = inferior_data (inf, inflow_inferior_data); + if (info != NULL) + { + xfree (info->run_terminal); + xfree (info); + } +} + +/* Get the current svr4 data. If none is found yet, add it now. This + function always returns a valid object. */ + +static struct terminal_info * +get_inflow_inferior_data (struct inferior *inf) +{ + struct terminal_info *info; + + info = inferior_data (inf, inflow_inferior_data); + if (info == NULL) + { + info = XZALLOC (struct terminal_info); + set_inferior_data (inf, inflow_inferior_data, info); + } + + return info; } /* This is a "inferior_exit" observer. Releases the TERMINAL_INFO member @@ -478,22 +501,30 @@ inflow_new_inferior (int pid) list. */ static void -inflow_inferior_exit (int pid) +inflow_inferior_exit (struct inferior *inf) { - struct inferior *inf = find_inferior_pid (pid); + struct terminal_info *info; - xfree (inf->terminal_info->run_terminal); - xfree (inf->terminal_info); - inf->terminal_info = NULL; + info = inferior_data (inf, inflow_inferior_data); + if (info != NULL) + { + xfree (info->run_terminal); + xfree (info); + set_inferior_data (inf, inflow_inferior_data, NULL); + } } void copy_terminal_info (struct inferior *to, struct inferior *from) { - *to->terminal_info = *from->terminal_info; - if (from->terminal_info->run_terminal) - to->terminal_info->run_terminal - = xstrdup (from->terminal_info->run_terminal); + struct terminal_info *tinfo_to, *tinfo_from; + + tinfo_to = get_inflow_inferior_data (to); + tinfo_from = get_inflow_inferior_data (from); + *tinfo_to = *tinfo_from; + if (tinfo_from->run_terminal) + tinfo_to->run_terminal + = xstrdup (tinfo_from->run_terminal); } void @@ -506,6 +537,7 @@ void child_terminal_info (char *args, int from_tty) { struct inferior *inf; + struct terminal_info *tinfo; if (!gdb_has_a_terminal ()) { @@ -517,6 +549,7 @@ child_terminal_info (char *args, int from_tty) return; inf = current_inferior (); + tinfo = get_inflow_inferior_data (inf); printf_filtered (_("Inferior's terminal status (currently saved by GDB):\n")); @@ -524,7 +557,7 @@ child_terminal_info (char *args, int from_tty) { int flags; - flags = inf->terminal_info->tflags; + flags = tinfo->tflags; printf_filtered ("File descriptor flags = "); @@ -577,13 +610,10 @@ child_terminal_info (char *args, int from_tty) } #ifdef PROCESS_GROUP_TYPE - printf_filtered ("Process group = %d\n", - (int) inf->terminal_info->process_group); + printf_filtered ("Process group = %d\n", (int) tinfo->process_group); #endif - serial_print_tty_state (stdin_serial, - inf->terminal_info->ttystate, - gdb_stdout); + serial_print_tty_state (stdin_serial, tinfo->ttystate, gdb_stdout); } /* NEW_TTY_PREFORK is called before forking a new child process, @@ -603,7 +633,7 @@ new_tty_prefork (const char *ttyname) inferior_thisrun_terminal = ttyname; } - +#if !defined(__GO32__) && !defined(_WIN32) /* If RESULT, assumed to be the return value from a system call, is negative, print the error message indicated by errno and exit. MSG should identify the operation that failed. */ @@ -616,6 +646,7 @@ check_syscall (const char *msg, int result) _exit (1); } } +#endif void new_tty (void) @@ -687,8 +718,12 @@ new_tty_postfork (void) are sharing a tty. */ if (inferior_thisrun_terminal) - current_inferior ()->terminal_info->run_terminal - = xstrdup (inferior_thisrun_terminal); + { + struct inferior *inf = current_inferior (); + struct terminal_info *tinfo = get_inflow_inferior_data (inf); + + tinfo->run_terminal = xstrdup (inferior_thisrun_terminal); + } inferior_thisrun_terminal = NULL; } @@ -712,7 +747,9 @@ void set_sigint_trap (void) { struct inferior *inf = current_inferior (); - if (inf->attach_flag || inf->terminal_info->run_terminal) + struct terminal_info *tinfo = get_inflow_inferior_data (inf); + + if (inf->attach_flag || tinfo->run_terminal) { osig = (void (*)()) signal (SIGINT, pass_signal); osig_set = 1; @@ -841,6 +878,8 @@ _initialize_inflow (void) #endif /* TIOCGPGRP */ #endif /* sgtty */ - observer_attach_new_inferior (inflow_new_inferior); observer_attach_inferior_exit (inflow_inferior_exit); + + inflow_inferior_data + = register_inferior_data_with_cleanup (inflow_inferior_data_cleanup); } diff --git a/contrib/gdb-7/gdb/inflow.h b/contrib/gdb-7/gdb/inflow.h index 064e773eac..3f20477118 100644 --- a/contrib/gdb-7/gdb/inflow.h +++ b/contrib/gdb-7/gdb/inflow.h @@ -1,6 +1,7 @@ /* Low level interface to ptrace, for GDB when running under Unix. - Copyright (C) 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/infrun.c b/contrib/gdb-7/gdb/infrun.c index ff7c6b9cb7..54b1d9f1f7 100644 --- a/contrib/gdb-7/gdb/infrun.c +++ b/contrib/gdb-7/gdb/infrun.c @@ -3,7 +3,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -51,6 +51,7 @@ #include "record.h" #include "inline-frame.h" #include "jit.h" +#include "tracepoint.h" /* Prototypes for local functions */ @@ -68,8 +69,6 @@ static int hook_stop_stub (void *); static int restore_selected_frame (void *); -static void build_infrun (void); - static int follow_fork (void); static void set_schedlock_func (char *args, int from_tty, @@ -109,6 +108,9 @@ int sync_execution = 0; static ptid_t previous_inferior_ptid; +/* Default behavior is to detach newly forked processes (legacy). */ +int detach_fork = 1; + int debug_displaced = 0; static void show_debug_displaced (struct ui_file *file, int from_tty, @@ -117,7 +119,7 @@ show_debug_displaced (struct ui_file *file, int from_tty, fprintf_filtered (file, _("Displace stepping debugging is %s.\n"), value); } -static int debug_infrun = 0; +int debug_infrun = 0; static void show_debug_infrun (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) @@ -176,16 +178,85 @@ show_debug_infrun (struct ui_file *file, int from_tty, #define SOLIB_IN_DYNAMIC_LINKER(pid,pc) 0 #endif +/* "Observer mode" is somewhat like a more extreme version of + non-stop, in which all GDB operations that might affect the + target's execution have been disabled. */ -/* Convert the #defines into values. This is temporary until wfi control - flow is completely sorted out. */ +static int non_stop_1 = 0; -#ifndef CANNOT_STEP_HW_WATCHPOINTS -#define CANNOT_STEP_HW_WATCHPOINTS 0 -#else -#undef CANNOT_STEP_HW_WATCHPOINTS -#define CANNOT_STEP_HW_WATCHPOINTS 1 -#endif +int observer_mode = 0; +static int observer_mode_1 = 0; + +static void +set_observer_mode (char *args, int from_tty, + struct cmd_list_element *c) +{ + extern int pagination_enabled; + + if (target_has_execution) + { + observer_mode_1 = observer_mode; + error (_("Cannot change this setting while the inferior is running.")); + } + + observer_mode = observer_mode_1; + + may_write_registers = !observer_mode; + may_write_memory = !observer_mode; + may_insert_breakpoints = !observer_mode; + may_insert_tracepoints = !observer_mode; + /* We can insert fast tracepoints in or out of observer mode, + but enable them if we're going into this mode. */ + if (observer_mode) + may_insert_fast_tracepoints = 1; + may_stop = !observer_mode; + update_target_permissions (); + + /* Going *into* observer mode we must force non-stop, then + going out we leave it that way. */ + if (observer_mode) + { + target_async_permitted = 1; + pagination_enabled = 0; + non_stop = non_stop_1 = 1; + } + + if (from_tty) + printf_filtered (_("Observer mode is now %s.\n"), + (observer_mode ? "on" : "off")); +} + +static void +show_observer_mode (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Observer mode is %s.\n"), value); +} + +/* This updates the value of observer mode based on changes in + permissions. Note that we are deliberately ignoring the values of + may-write-registers and may-write-memory, since the user may have + reason to enable these during a session, for instance to turn on a + debugging-related global. */ + +void +update_observer_mode (void) +{ + int newval; + + newval = (!may_insert_breakpoints + && !may_insert_tracepoints + && may_insert_fast_tracepoints + && !may_stop + && non_stop); + + /* Let the user know if things change. */ + if (newval != observer_mode) + printf_filtered (_("Observer mode is now %s.\n"), + (newval ? "on" : "off")); + + observer_mode = observer_mode_1 = newval; +} /* Tables of how to react to signals; the user sets them. */ @@ -223,7 +294,7 @@ static struct symbol *step_start_function; /* Nonzero if we want to give control to the user when we're notified of shared library events by the dynamic linker. */ -static int stop_on_solib_events; +int stop_on_solib_events; static void show_stop_on_solib_events (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) @@ -461,13 +532,205 @@ follow_inferior_reset_breakpoints (void) insert_breakpoints (); } +/* The child has exited or execed: resume threads of the parent the + user wanted to be executing. */ + +static int +proceed_after_vfork_done (struct thread_info *thread, + void *arg) +{ + int pid = * (int *) arg; + + if (ptid_get_pid (thread->ptid) == pid + && is_running (thread->ptid) + && !is_executing (thread->ptid) + && !thread->stop_requested + && thread->stop_signal == TARGET_SIGNAL_0) + { + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, + "infrun: resuming vfork parent thread %s\n", + target_pid_to_str (thread->ptid)); + + switch_to_thread (thread->ptid); + clear_proceed_status (); + proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0); + } + + return 0; +} + +/* Called whenever we notice an exec or exit event, to handle + detaching or resuming a vfork parent. */ + +static void +handle_vfork_child_exec_or_exit (int exec) +{ + struct inferior *inf = current_inferior (); + + if (inf->vfork_parent) + { + int resume_parent = -1; + + /* This exec or exit marks the end of the shared memory region + between the parent and the child. If the user wanted to + detach from the parent, now is the time. */ + + if (inf->vfork_parent->pending_detach) + { + struct thread_info *tp; + struct cleanup *old_chain; + struct program_space *pspace; + struct address_space *aspace; + + /* follow-fork child, detach-on-fork on */ + + old_chain = make_cleanup_restore_current_thread (); + + /* We're letting loose of the parent. */ + tp = any_live_thread_of_process (inf->vfork_parent->pid); + switch_to_thread (tp->ptid); + + /* We're about to detach from the parent, which implicitly + removes breakpoints from its address space. There's a + catch here: we want to reuse the spaces for the child, + but, parent/child are still sharing the pspace at this + point, although the exec in reality makes the kernel give + the child a fresh set of new pages. The problem here is + that the breakpoints module being unaware of this, would + likely chose the child process to write to the parent + address space. Swapping the child temporarily away from + the spaces has the desired effect. Yes, this is "sort + of" a hack. */ + + pspace = inf->pspace; + aspace = inf->aspace; + inf->aspace = NULL; + inf->pspace = NULL; + + if (debug_infrun || info_verbose) + { + target_terminal_ours (); + + if (exec) + fprintf_filtered (gdb_stdlog, + "Detaching vfork parent process %d after child exec.\n", + inf->vfork_parent->pid); + else + fprintf_filtered (gdb_stdlog, + "Detaching vfork parent process %d after child exit.\n", + inf->vfork_parent->pid); + } + + target_detach (NULL, 0); + + /* Put it back. */ + inf->pspace = pspace; + inf->aspace = aspace; + + do_cleanups (old_chain); + } + else if (exec) + { + /* We're staying attached to the parent, so, really give the + child a new address space. */ + inf->pspace = add_program_space (maybe_new_address_space ()); + inf->aspace = inf->pspace->aspace; + inf->removable = 1; + set_current_program_space (inf->pspace); + + resume_parent = inf->vfork_parent->pid; + + /* Break the bonds. */ + inf->vfork_parent->vfork_child = NULL; + } + else + { + struct cleanup *old_chain; + struct program_space *pspace; + + /* If this is a vfork child exiting, then the pspace and + aspaces were shared with the parent. Since we're + reporting the process exit, we'll be mourning all that is + found in the address space, and switching to null_ptid, + preparing to start a new inferior. But, since we don't + want to clobber the parent's address/program spaces, we + go ahead and create a new one for this exiting + inferior. */ + + /* Switch to null_ptid, so that clone_program_space doesn't want + to read the selected frame of a dead process. */ + old_chain = save_inferior_ptid (); + inferior_ptid = null_ptid; + + /* This inferior is dead, so avoid giving the breakpoints + module the option to write through to it (cloning a + program space resets breakpoints). */ + inf->aspace = NULL; + inf->pspace = NULL; + pspace = add_program_space (maybe_new_address_space ()); + set_current_program_space (pspace); + inf->removable = 1; + clone_program_space (pspace, inf->vfork_parent->pspace); + inf->pspace = pspace; + inf->aspace = pspace->aspace; + + /* Put back inferior_ptid. We'll continue mourning this + inferior. */ + do_cleanups (old_chain); + + resume_parent = inf->vfork_parent->pid; + /* Break the bonds. */ + inf->vfork_parent->vfork_child = NULL; + } + + inf->vfork_parent = NULL; + + gdb_assert (current_program_space == inf->pspace); + + if (non_stop && resume_parent != -1) + { + /* If the user wanted the parent to be running, let it go + free now. */ + struct cleanup *old_chain = make_cleanup_restore_current_thread (); + + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, "infrun: resuming vfork parent process %d\n", + resume_parent); + + iterate_over_threads (proceed_after_vfork_done, &resume_parent); + + do_cleanups (old_chain); + } + } +} + +/* Enum strings for "set|show displaced-stepping". */ + +static const char follow_exec_mode_new[] = "new"; +static const char follow_exec_mode_same[] = "same"; +static const char *follow_exec_mode_names[] = +{ + follow_exec_mode_new, + follow_exec_mode_same, + NULL, +}; + +static const char *follow_exec_mode_string = follow_exec_mode_same; +static void +show_follow_exec_mode_string (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Follow exec mode is \"%s\".\n"), value); +} + /* EXECD_PATHNAME is assumed to be non-NULL. */ static void follow_exec (ptid_t pid, char *execd_pathname) { - struct target_ops *tgt; struct thread_info *th = inferior_thread (); + struct inferior *inf = current_inferior (); /* This is an exec event that we actually wish to pay attention to. Refresh our symbol table to the newly exec'd program, remove any @@ -489,6 +752,9 @@ follow_exec (ptid_t pid, char *execd_pathname) that may write the bp's "shadow contents" (the instruction value that was overwritten witha TRAP instruction). Since we now have a new a.out, those shadow contents aren't valid. */ + + mark_breakpoints_out (); + update_breakpoints_after_exec (); /* If there was one, it's gone now. We cannot truly step-to-next @@ -506,7 +772,9 @@ follow_exec (ptid_t pid, char *execd_pathname) th->stop_requested = 0; /* What is this a.out's name? */ - printf_unfiltered (_("Executing new program: %s\n"), execd_pathname); + printf_unfiltered (_("%s is executing new program: %s\n"), + target_pid_to_str (inferior_ptid), + execd_pathname); /* We've followed the inferior through an exec. Therefore, the inferior has essentially been killed & reborn. */ @@ -520,14 +788,12 @@ follow_exec (ptid_t pid, char *execd_pathname) char *name = alloca (strlen (gdb_sysroot) + strlen (execd_pathname) + 1); + strcpy (name, gdb_sysroot); strcat (name, execd_pathname); execd_pathname = name; } - /* That a.out is now the one to use. */ - exec_file_attach (execd_pathname, 0); - /* Reset the shared library package. This ensures that we get a shlib event when the child reaches "_start", at which point the dld will have had a chance to initialize the child. */ @@ -536,13 +802,36 @@ follow_exec (ptid_t pid, char *execd_pathname) previous incarnation of this process. */ no_shared_libraries (NULL, 0); + if (follow_exec_mode_string == follow_exec_mode_new) + { + struct program_space *pspace; + + /* The user wants to keep the old inferior and program spaces + around. Create a new fresh one, and switch to it. */ + + inf = add_inferior (current_inferior ()->pid); + pspace = add_program_space (maybe_new_address_space ()); + inf->pspace = pspace; + inf->aspace = pspace->aspace; + + exit_inferior_num_silent (current_inferior ()->num); + + set_current_inferior (inf); + set_current_program_space (pspace); + } + + gdb_assert (current_program_space == inf->pspace); + + /* That a.out is now the one to use. */ + exec_file_attach (execd_pathname, 0); + /* Load the main file's symbols. */ symbol_file_add_main (execd_pathname, 0); #ifdef SOLIB_CREATE_INFERIOR_HOOK SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid)); #else - solib_create_inferior_hook (); + solib_create_inferior_hook (0); #endif jit_inferior_created_hook (); @@ -671,32 +960,118 @@ static ptid_t deferred_step_ptid; displaced step operation on it. See displaced_step_prepare and displaced_step_fixup for details. */ -/* If this is not null_ptid, this is the thread carrying out a - displaced single-step. This thread's state will require fixing up - once it has completed its step. */ -static ptid_t displaced_step_ptid; - struct displaced_step_request { ptid_t ptid; struct displaced_step_request *next; }; -/* A queue of pending displaced stepping requests. */ -struct displaced_step_request *displaced_step_request_queue; +/* Per-inferior displaced stepping state. */ +struct displaced_step_inferior_state +{ + /* Pointer to next in linked list. */ + struct displaced_step_inferior_state *next; + + /* The process this displaced step state refers to. */ + int pid; + + /* A queue of pending displaced stepping requests. One entry per + thread that needs to do a displaced step. */ + struct displaced_step_request *step_request_queue; -/* The architecture the thread had when we stepped it. */ -static struct gdbarch *displaced_step_gdbarch; + /* If this is not null_ptid, this is the thread carrying out a + displaced single-step in process PID. This thread's state will + require fixing up once it has completed its step. */ + ptid_t step_ptid; -/* The closure provided gdbarch_displaced_step_copy_insn, to be used - for post-step cleanup. */ -static struct displaced_step_closure *displaced_step_closure; + /* The architecture the thread had when we stepped it. */ + struct gdbarch *step_gdbarch; -/* The address of the original instruction, and the copy we made. */ -static CORE_ADDR displaced_step_original, displaced_step_copy; + /* The closure provided gdbarch_displaced_step_copy_insn, to be used + for post-step cleanup. */ + struct displaced_step_closure *step_closure; -/* Saved contents of copy area. */ -static gdb_byte *displaced_step_saved_copy; + /* The address of the original instruction, and the copy we + made. */ + CORE_ADDR step_original, step_copy; + + /* Saved contents of copy area. */ + gdb_byte *step_saved_copy; +}; + +/* The list of states of processes involved in displaced stepping + presently. */ +static struct displaced_step_inferior_state *displaced_step_inferior_states; + +/* Get the displaced stepping state of process PID. */ + +static struct displaced_step_inferior_state * +get_displaced_stepping_state (int pid) +{ + struct displaced_step_inferior_state *state; + + for (state = displaced_step_inferior_states; + state != NULL; + state = state->next) + if (state->pid == pid) + return state; + + return NULL; +} + +/* Add a new displaced stepping state for process PID to the displaced + stepping state list, or return a pointer to an already existing + entry, if it already exists. Never returns NULL. */ + +static struct displaced_step_inferior_state * +add_displaced_stepping_state (int pid) +{ + struct displaced_step_inferior_state *state; + + for (state = displaced_step_inferior_states; + state != NULL; + state = state->next) + if (state->pid == pid) + return state; + + state = xcalloc (1, sizeof (*state)); + state->pid = pid; + state->next = displaced_step_inferior_states; + displaced_step_inferior_states = state; + + return state; +} + +/* Remove the displaced stepping state of process PID. */ + +static void +remove_displaced_stepping_state (int pid) +{ + struct displaced_step_inferior_state *it, **prev_next_p; + + gdb_assert (pid != 0); + + it = displaced_step_inferior_states; + prev_next_p = &displaced_step_inferior_states; + while (it) + { + if (it->pid == pid) + { + *prev_next_p = it->next; + xfree (it); + return; + } + + prev_next_p = &it->next; + it = *prev_next_p; + } +} + +static void +infrun_inferior_exit (struct inferior *inf) +{ + remove_displaced_stepping_state (inf->pid); +} /* Enum strings for "set|show displaced-stepping". */ @@ -753,23 +1128,25 @@ use_displaced_stepping (struct gdbarch *gdbarch) /* Clean out any stray displaced stepping state. */ static void -displaced_step_clear (void) +displaced_step_clear (struct displaced_step_inferior_state *displaced) { /* Indicate that there is no cleanup pending. */ - displaced_step_ptid = null_ptid; + displaced->step_ptid = null_ptid; - if (displaced_step_closure) + if (displaced->step_closure) { - gdbarch_displaced_step_free_closure (displaced_step_gdbarch, - displaced_step_closure); - displaced_step_closure = NULL; + gdbarch_displaced_step_free_closure (displaced->step_gdbarch, + displaced->step_closure); + displaced->step_closure = NULL; } } static void -displaced_step_clear_cleanup (void *ignore) +displaced_step_clear_cleanup (void *arg) { - displaced_step_clear (); + struct displaced_step_inferior_state *state = arg; + + displaced_step_clear (state); } /* Dump LEN bytes at BUF in hex to FILE, followed by a newline. */ @@ -808,15 +1185,18 @@ displaced_step_prepare (ptid_t ptid) CORE_ADDR original, copy; ULONGEST len; struct displaced_step_closure *closure; + struct displaced_step_inferior_state *displaced; /* We should never reach this function if the architecture does not support displaced stepping. */ gdb_assert (gdbarch_displaced_step_copy_insn_p (gdbarch)); - /* For the first cut, we're displaced stepping one thread at a - time. */ + /* We have to displaced step one thread at a time, as we only have + access to a single scratch space per inferior. */ - if (!ptid_equal (displaced_step_ptid, null_ptid)) + displaced = add_displaced_stepping_state (ptid_get_pid (ptid)); + + if (!ptid_equal (displaced->step_ptid, null_ptid)) { /* Already waiting for a displaced step to finish. Defer this request and place in queue. */ @@ -831,16 +1211,16 @@ displaced_step_prepare (ptid_t ptid) new_req->ptid = ptid; new_req->next = NULL; - if (displaced_step_request_queue) + if (displaced->step_request_queue) { - for (req = displaced_step_request_queue; + for (req = displaced->step_request_queue; req && req->next; req = req->next) ; req->next = new_req; } else - displaced_step_request_queue = new_req; + displaced->step_request_queue = new_req; return 0; } @@ -852,7 +1232,7 @@ displaced_step_prepare (ptid_t ptid) target_pid_to_str (ptid)); } - displaced_step_clear (); + displaced_step_clear (displaced); old_cleanups = save_inferior_ptid (); inferior_ptid = ptid; @@ -863,15 +1243,17 @@ displaced_step_prepare (ptid_t ptid) len = gdbarch_max_insn_length (gdbarch); /* Save the original contents of the copy area. */ - displaced_step_saved_copy = xmalloc (len); + displaced->step_saved_copy = xmalloc (len); ignore_cleanups = make_cleanup (free_current_contents, - &displaced_step_saved_copy); - read_memory (copy, displaced_step_saved_copy, len); + &displaced->step_saved_copy); + read_memory (copy, displaced->step_saved_copy, len); if (debug_displaced) { fprintf_unfiltered (gdb_stdlog, "displaced: saved %s: ", paddress (gdbarch, copy)); - displaced_step_dump_bytes (gdb_stdlog, displaced_step_saved_copy, len); + displaced_step_dump_bytes (gdb_stdlog, + displaced->step_saved_copy, + len); }; closure = gdbarch_displaced_step_copy_insn (gdbarch, @@ -882,13 +1264,13 @@ displaced_step_prepare (ptid_t ptid) /* Save the information we need to fix things up if the step succeeds. */ - displaced_step_ptid = ptid; - displaced_step_gdbarch = gdbarch; - displaced_step_closure = closure; - displaced_step_original = original; - displaced_step_copy = copy; + displaced->step_ptid = ptid; + displaced->step_gdbarch = gdbarch; + displaced->step_closure = closure; + displaced->step_original = original; + displaced->step_copy = copy; - make_cleanup (displaced_step_clear_cleanup, 0); + make_cleanup (displaced_step_clear_cleanup, displaced); /* Resume execution at the copy. */ regcache_write_pc (regcache, copy); @@ -908,6 +1290,7 @@ static void write_memory_ptid (ptid_t ptid, CORE_ADDR memaddr, const gdb_byte *myaddr, int len) { struct cleanup *ptid_cleanup = save_inferior_ptid (); + inferior_ptid = ptid; write_memory (memaddr, myaddr, len); do_cleanups (ptid_cleanup); @@ -917,34 +1300,41 @@ static void displaced_step_fixup (ptid_t event_ptid, enum target_signal signal) { struct cleanup *old_cleanups; + struct displaced_step_inferior_state *displaced + = get_displaced_stepping_state (ptid_get_pid (event_ptid)); + + /* Was any thread of this process doing a displaced step? */ + if (displaced == NULL) + return; /* Was this event for the pid we displaced? */ - if (ptid_equal (displaced_step_ptid, null_ptid) - || ! ptid_equal (displaced_step_ptid, event_ptid)) + if (ptid_equal (displaced->step_ptid, null_ptid) + || ! ptid_equal (displaced->step_ptid, event_ptid)) return; - old_cleanups = make_cleanup (displaced_step_clear_cleanup, 0); + old_cleanups = make_cleanup (displaced_step_clear_cleanup, displaced); /* Restore the contents of the copy area. */ { - ULONGEST len = gdbarch_max_insn_length (displaced_step_gdbarch); - write_memory_ptid (displaced_step_ptid, displaced_step_copy, - displaced_step_saved_copy, len); + ULONGEST len = gdbarch_max_insn_length (displaced->step_gdbarch); + + write_memory_ptid (displaced->step_ptid, displaced->step_copy, + displaced->step_saved_copy, len); if (debug_displaced) fprintf_unfiltered (gdb_stdlog, "displaced: restored %s\n", - paddress (displaced_step_gdbarch, - displaced_step_copy)); + paddress (displaced->step_gdbarch, + displaced->step_copy)); } /* Did the instruction complete successfully? */ if (signal == TARGET_SIGNAL_TRAP) { /* Fix up the resulting state. */ - gdbarch_displaced_step_fixup (displaced_step_gdbarch, - displaced_step_closure, - displaced_step_original, - displaced_step_copy, - get_thread_regcache (displaced_step_ptid)); + gdbarch_displaced_step_fixup (displaced->step_gdbarch, + displaced->step_closure, + displaced->step_original, + displaced->step_copy, + get_thread_regcache (displaced->step_ptid)); } else { @@ -952,35 +1342,39 @@ displaced_step_fixup (ptid_t event_ptid, enum target_signal signal) relocate the PC. */ struct regcache *regcache = get_thread_regcache (event_ptid); CORE_ADDR pc = regcache_read_pc (regcache); - pc = displaced_step_original + (pc - displaced_step_copy); + + pc = displaced->step_original + (pc - displaced->step_copy); regcache_write_pc (regcache, pc); } do_cleanups (old_cleanups); - displaced_step_ptid = null_ptid; + displaced->step_ptid = null_ptid; /* Are there any pending displaced stepping requests? If so, run - one now. */ - while (displaced_step_request_queue) + one now. Leave the state object around, since we're likely to + need it again soon. */ + while (displaced->step_request_queue) { struct displaced_step_request *head; ptid_t ptid; struct regcache *regcache; struct gdbarch *gdbarch; CORE_ADDR actual_pc; + struct address_space *aspace; - head = displaced_step_request_queue; + head = displaced->step_request_queue; ptid = head->ptid; - displaced_step_request_queue = head->next; + displaced->step_request_queue = head->next; xfree (head); context_switch (ptid); regcache = get_thread_regcache (ptid); actual_pc = regcache_read_pc (regcache); + aspace = get_regcache_aspace (regcache); - if (breakpoint_here_p (actual_pc)) + if (breakpoint_here_p (aspace, actual_pc)) { if (debug_displaced) fprintf_unfiltered (gdb_stdlog, @@ -1002,8 +1396,8 @@ displaced_step_fixup (ptid_t event_ptid, enum target_signal signal) displaced_step_dump_bytes (gdb_stdlog, buf, sizeof (buf)); } - if (gdbarch_displaced_step_hw_singlestep - (gdbarch, displaced_step_closure)) + if (gdbarch_displaced_step_hw_singlestep (gdbarch, + displaced->step_closure)) target_resume (ptid, 1, TARGET_SIGNAL_0); else target_resume (ptid, 0, TARGET_SIGNAL_0); @@ -1042,6 +1436,7 @@ static void infrun_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid) { struct displaced_step_request *it; + struct displaced_step_inferior_state *displaced; if (ptid_equal (inferior_ptid, old_ptid)) inferior_ptid = new_ptid; @@ -1049,15 +1444,20 @@ infrun_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid) if (ptid_equal (singlestep_ptid, old_ptid)) singlestep_ptid = new_ptid; - if (ptid_equal (displaced_step_ptid, old_ptid)) - displaced_step_ptid = new_ptid; - if (ptid_equal (deferred_step_ptid, old_ptid)) deferred_step_ptid = new_ptid; - for (it = displaced_step_request_queue; it; it = it->next) - if (ptid_equal (it->ptid, old_ptid)) - it->ptid = new_ptid; + for (displaced = displaced_step_inferior_states; + displaced; + displaced = displaced->next) + { + if (ptid_equal (displaced->step_ptid, old_ptid)) + displaced->step_ptid = new_ptid; + + for (it = displaced->step_request_queue; it; it = it->next) + if (ptid_equal (it->ptid, old_ptid)) + it->ptid = new_ptid; + } } @@ -1145,6 +1545,7 @@ resume (int step, enum target_signal sig) struct gdbarch *gdbarch = get_regcache_arch (regcache); struct thread_info *tp = inferior_thread (); CORE_ADDR pc = regcache_read_pc (regcache); + struct address_space *aspace = get_regcache_aspace (regcache); QUIT; @@ -1154,23 +1555,11 @@ resume (int step, enum target_signal sig) "trap_expected=%d\n", step, sig, tp->trap_expected); - /* Some targets (e.g. Solaris x86) have a kernel bug when stepping - over an instruction that causes a page fault without triggering - a hardware watchpoint. The kernel properly notices that it shouldn't - stop, because the hardware watchpoint is not triggered, but it forgets - the step request and continues the program normally. - Work around the problem by removing hardware watchpoints if a step is - requested, GDB will check for a hardware watchpoint trigger after the - step anyway. */ - if (CANNOT_STEP_HW_WATCHPOINTS && step) - remove_hw_watchpoints (); - - /* Normally, by the time we reach `resume', the breakpoints are either removed or inserted, as appropriate. The exception is if we're sitting at a permanent breakpoint; we need to step over it, but permanent breakpoints can't be removed. So we have to test for it here. */ - if (breakpoint_here_p (pc) == permanent_breakpoint_here) + if (breakpoint_here_p (aspace, pc) == permanent_breakpoint_here) { if (gdbarch_skip_permanent_breakpoint_p (gdbarch)) gdbarch_skip_permanent_breakpoint (gdbarch, regcache); @@ -1193,6 +1582,8 @@ a command like `return' or `jump' to continue execution.")); || (step && gdbarch_software_single_step_p (gdbarch))) && sig == TARGET_SIGNAL_0) { + struct displaced_step_inferior_state *displaced; + if (!displaced_step_prepare (inferior_ptid)) { /* Got placed in displaced stepping queue. Will be resumed @@ -1206,8 +1597,9 @@ a command like `return' or `jump' to continue execution.")); return; } - step = gdbarch_displaced_step_hw_singlestep - (gdbarch, displaced_step_closure); + displaced = get_displaced_stepping_state (ptid_get_pid (inferior_ptid)); + step = gdbarch_displaced_step_hw_singlestep (gdbarch, + displaced->step_closure); } /* Do we need to do it the hard way, w/temp breakpoints? */ @@ -1287,7 +1679,7 @@ a command like `return' or `jump' to continue execution.")); /* Most targets can step a breakpoint instruction, thus executing it normally. But if this one cannot, just continue and we will hit it anyway. */ - if (step && breakpoint_inserted_here_p (pc)) + if (step && breakpoint_inserted_here_p (aspace, pc)) step = 0; } @@ -1361,23 +1753,26 @@ clear_proceed_status_callback (struct thread_info *tp, void *data) void clear_proceed_status (void) { + if (!non_stop) + { + /* In all-stop mode, delete the per-thread status of all + threads, even if inferior_ptid is null_ptid, there may be + threads on the list. E.g., we may be launching a new + process, while selecting the executable. */ + iterate_over_threads (clear_proceed_status_callback, NULL); + } + if (!ptid_equal (inferior_ptid, null_ptid)) { struct inferior *inferior; if (non_stop) { - /* If in non-stop mode, only delete the per-thread status - of the current thread. */ + /* If in non-stop mode, only delete the per-thread status of + the current thread. */ clear_proceed_status_thread (inferior_thread ()); } - else - { - /* In all-stop mode, delete the per-thread status of - *all* threads. */ - iterate_over_threads (clear_proceed_status_callback, NULL); - } - + inferior = current_inferior (); inferior->stop_soon = NO_STOP_QUIETLY; } @@ -1414,7 +1809,10 @@ prepare_to_proceed (int step) /* Make sure we were stopped at a breakpoint. */ if (wait_status.kind != TARGET_WAITKIND_STOPPED - || wait_status.value.sig != TARGET_SIGNAL_TRAP) + || (wait_status.value.sig != TARGET_SIGNAL_TRAP + && wait_status.value.sig != TARGET_SIGNAL_ILL + && wait_status.value.sig != TARGET_SIGNAL_SEGV + && wait_status.value.sig != TARGET_SIGNAL_EMT)) { return 0; } @@ -1439,7 +1837,8 @@ prepare_to_proceed (int step) { struct regcache *regcache = get_thread_regcache (wait_ptid); - if (breakpoint_here_p (regcache_read_pc (regcache))) + if (breakpoint_here_p (get_regcache_aspace (regcache), + regcache_read_pc (regcache))) { /* If stepping, remember current thread to switch back to. */ if (step) @@ -1477,6 +1876,7 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step) struct gdbarch *gdbarch; struct thread_info *tp; CORE_ADDR pc; + struct address_space *aspace; int oneproc = 0; /* If we're stopped at a fork/vfork, follow the branch set by the @@ -1491,6 +1891,7 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step) regcache = get_current_regcache (); gdbarch = get_regcache_arch (regcache); + aspace = get_regcache_aspace (regcache); pc = regcache_read_pc (regcache); if (step > 0) @@ -1500,7 +1901,7 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step) if (addr == (CORE_ADDR) -1) { - if (pc == stop_pc && breakpoint_here_p (pc) + if (pc == stop_pc && breakpoint_here_p (aspace, pc) && execution_direction != EXEC_REVERSE) /* There is a breakpoint at the address we will resume at, step one instruction before inserting breakpoints so that @@ -1529,6 +1930,16 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step) "infrun: proceed (addr=%s, signal=%d, step=%d)\n", paddress (gdbarch, addr), siggnal, step); + /* We're handling a live event, so make sure we're doing live + debugging. If we're looking at traceframes while the target is + running, we're going to need to get back to that mode after + handling the event. */ + if (non_stop) + { + make_cleanup_restore_current_traceframe (); + set_traceframe_number (-1); + } + if (non_stop) /* In non-stop, each thread is handled individually. The context must already be set to the right thread here. */ @@ -1625,13 +2036,14 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step) or a return command, we often end up a few instructions forward, still within the original line we started. - An attempt was made to have init_execution_control_state () refresh - the prev_pc value before calculating the line number. This approach - did not work because on platforms that use ptrace, the pc register - cannot be read unless the inferior is stopped. At that point, we - are not guaranteed the inferior is stopped and so the regcache_read_pc () - call can fail. Setting the prev_pc value here ensures the value is - updated correctly when the inferior is stopped. */ + An attempt was made to refresh the prev_pc at the same time the + execution_control_state is initialized (for instance, just before + waiting for an inferior event). But this approach did not work + because of platforms that use ptrace, where the pc register cannot + be read unless the inferior is stopped. At that point, we are not + guaranteed the inferior is stopped and so the regcache_read_pc() call + can fail. Setting the prev_pc value here ensures the value is updated + correctly when the inferior is stopped. */ tp->prev_pc = regcache_read_pc (get_current_regcache ()); /* Fill in with reasonable starting values. */ @@ -1661,8 +2073,8 @@ void start_remote (int from_tty) { struct inferior *inferior; - init_wait_for_inferior (); + init_wait_for_inferior (); inferior = current_inferior (); inferior->stop_soon = STOP_QUIETLY_REMOTE; @@ -1709,8 +2121,6 @@ init_wait_for_inferior (void) previous_inferior_ptid = null_ptid; init_infwait_state (); - displaced_step_clear (); - /* Discard any skipped inlined frames. */ clear_inline_frame_state (minus_one_ptid); } @@ -1768,8 +2178,6 @@ struct execution_control_state int wait_some_more; }; -static void init_execution_control_state (struct execution_control_state *ecs); - static void handle_inferior_event (struct execution_control_state *ecs); static void handle_step_into_function (struct gdbarch *gdbarch, @@ -1856,28 +2264,34 @@ infrun_thread_stop_requested_callback (struct thread_info *info, void *arg) static void infrun_thread_stop_requested (ptid_t ptid) { - struct displaced_step_request *it, *next, *prev = NULL; + struct displaced_step_inferior_state *displaced; /* PTID was requested to stop. Remove it from the displaced stepping queue, so we don't try to resume it automatically. */ - for (it = displaced_step_request_queue; it; it = next) + + for (displaced = displaced_step_inferior_states; + displaced; + displaced = displaced->next) { - next = it->next; + struct displaced_step_request *it, **prev_next_p; - if (ptid_equal (it->ptid, ptid) - || ptid_equal (minus_one_ptid, ptid) - || (ptid_is_pid (ptid) - && ptid_get_pid (ptid) == ptid_get_pid (it->ptid))) + it = displaced->step_request_queue; + prev_next_p = &displaced->step_request_queue; + while (it) { - if (displaced_step_request_queue == it) - displaced_step_request_queue = it->next; + if (ptid_match (it->ptid, ptid)) + { + *prev_next_p = it->next; + it->next = NULL; + xfree (it); + } else - prev->next = it->next; + { + prev_next_p = &it->next; + } - xfree (it); + it = *prev_next_p; } - else - prev = it; } iterate_over_threads (infrun_thread_stop_requested_callback, &ptid); @@ -1921,6 +2335,7 @@ delete_step_thread_step_resume_breakpoint (void) longjmp-resume breakpoint of the thread that just stopped stepping. */ struct thread_info *tp = inferior_thread (); + delete_step_resume_breakpoint (tp); } else @@ -1976,6 +2391,92 @@ print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid, ui_file_delete (tmp_stream); } +/* Prepare and stabilize the inferior for detaching it. E.g., + detaching while a thread is displaced stepping is a recipe for + crashing it, as nothing would readjust the PC out of the scratch + pad. */ + +void +prepare_for_detach (void) +{ + struct inferior *inf = current_inferior (); + ptid_t pid_ptid = pid_to_ptid (inf->pid); + struct cleanup *old_chain_1; + struct displaced_step_inferior_state *displaced; + + displaced = get_displaced_stepping_state (inf->pid); + + /* Is any thread of this process displaced stepping? If not, + there's nothing else to do. */ + if (displaced == NULL || ptid_equal (displaced->step_ptid, null_ptid)) + return; + + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, + "displaced-stepping in-process while detaching"); + + old_chain_1 = make_cleanup_restore_integer (&inf->detaching); + inf->detaching = 1; + + while (!ptid_equal (displaced->step_ptid, null_ptid)) + { + struct cleanup *old_chain_2; + struct execution_control_state ecss; + struct execution_control_state *ecs; + + ecs = &ecss; + memset (ecs, 0, sizeof (*ecs)); + + overlay_cache_invalid = 1; + + /* We have to invalidate the registers BEFORE calling + target_wait because they can be loaded from the target while + in target_wait. This makes remote debugging a bit more + efficient for those targets that provide critical registers + as part of their normal status mechanism. */ + + registers_changed (); + + if (deprecated_target_wait_hook) + ecs->ptid = deprecated_target_wait_hook (pid_ptid, &ecs->ws, 0); + else + ecs->ptid = target_wait (pid_ptid, &ecs->ws, 0); + + if (debug_infrun) + print_target_wait_results (pid_ptid, ecs->ptid, &ecs->ws); + + /* If an error happens while handling the event, propagate GDB's + knowledge of the executing state to the frontend/user running + state. */ + old_chain_2 = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid); + + /* In non-stop mode, each thread is handled individually. + Switch early, so the global state is set correctly for this + thread. */ + if (non_stop + && ecs->ws.kind != TARGET_WAITKIND_EXITED + && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED) + context_switch (ecs->ptid); + + /* Now figure out what to do with the result of the result. */ + handle_inferior_event (ecs); + + /* No error, don't finish the state yet. */ + discard_cleanups (old_chain_2); + + /* Breakpoints and watchpoints are not installed on the target + at this point, and signals are passed directly to the + inferior, so this must mean the process is gone. */ + if (!ecs->wait_some_more) + { + discard_cleanups (old_chain_1); + error (_("Program exited while detaching")); + } + } + + discard_cleanups (old_chain_1); +} + /* Wait for control to return from inferior to debugger. If TREAT_EXEC_AS_SIGTRAP is non-zero, then handle EXEC signals @@ -2172,15 +2673,6 @@ set_step_info (struct frame_info *frame, struct symtab_and_line sal) tp->current_line = sal.line; } -/* Prepare an execution control state for looping through a - wait_for_inferior-type loop. */ - -static void -init_execution_control_state (struct execution_control_state *ecs) -{ - ecs->random_signal = 0; -} - /* Clear context switchable stepping state. */ void @@ -2231,6 +2723,7 @@ adjust_pc_after_break (struct execution_control_state *ecs) { struct regcache *regcache; struct gdbarch *gdbarch; + struct address_space *aspace; CORE_ADDR breakpoint_pc; /* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP. If @@ -2296,6 +2789,8 @@ adjust_pc_after_break (struct execution_control_state *ecs) if (gdbarch_decr_pc_after_break (gdbarch) == 0) return; + aspace = get_regcache_aspace (regcache); + /* Find the location where (if we've hit a breakpoint) the breakpoint would be. */ breakpoint_pc = regcache_read_pc (regcache) @@ -2309,10 +2804,11 @@ adjust_pc_after_break (struct execution_control_state *ecs) already queued and arrive later. To suppress those spurious SIGTRAPs, we keep a list of such breakpoint locations for a bit, and retire them after a number of stop events are reported. */ - if (software_breakpoint_inserted_here_p (breakpoint_pc) - || (non_stop && moribund_breakpoint_here_p (breakpoint_pc))) + if (software_breakpoint_inserted_here_p (aspace, breakpoint_pc) + || (non_stop && moribund_breakpoint_here_p (aspace, breakpoint_pc))) { struct cleanup *old_cleanups = NULL; + if (RECORD_IS_USED) old_cleanups = record_gdb_operation_disable_set (); @@ -2386,13 +2882,22 @@ stepped_in_from (struct frame_info *frame, struct frame_id step_frame_id) It returns 1 if the inferior should keep going (and GDB should ignore the event), or 0 if the event deserves to be processed. */ + static int -deal_with_syscall_event (struct execution_control_state *ecs) +handle_syscall_event (struct execution_control_state *ecs) { - struct regcache *regcache = get_thread_regcache (ecs->ptid); - struct gdbarch *gdbarch = get_regcache_arch (regcache); - int syscall_number = gdbarch_get_syscall_number (gdbarch, - ecs->ptid); + struct regcache *regcache; + struct gdbarch *gdbarch; + int syscall_number; + + if (!ptid_equal (ecs->ptid, inferior_ptid)) + context_switch (ecs->ptid); + + regcache = get_thread_regcache (ecs->ptid); + gdbarch = get_regcache_arch (regcache); + syscall_number = gdbarch_get_syscall_number (gdbarch, ecs->ptid); + stop_pc = regcache_read_pc (regcache); + target_last_waitstatus.value.syscall_number = syscall_number; if (catch_syscall_enabled () > 0 @@ -2401,35 +2906,24 @@ deal_with_syscall_event (struct execution_control_state *ecs) if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: syscall number = '%d'\n", syscall_number); - ecs->event_thread->stop_signal = TARGET_SIGNAL_TRAP; - - if (!ptid_equal (ecs->ptid, inferior_ptid)) - { - context_switch (ecs->ptid); - reinit_frame_cache (); - } - - stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid)); - - ecs->event_thread->stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid); + ecs->event_thread->stop_bpstat + = bpstat_stop_status (get_regcache_aspace (regcache), + stop_pc, ecs->ptid); ecs->random_signal = !bpstat_explains_signal (ecs->event_thread->stop_bpstat); - /* If no catchpoint triggered for this, then keep going. */ - if (ecs->random_signal) - { - ecs->event_thread->stop_signal = TARGET_SIGNAL_0; - keep_going (ecs); - return 1; - } - return 0; - } - else - { - resume (0, TARGET_SIGNAL_0); - prepare_to_wait (ecs); - return 1; + if (!ecs->random_signal) + { + /* Catchpoint hit. */ + ecs->event_thread->stop_signal = TARGET_SIGNAL_TRAP; + return 0; + } } + + /* If no catchpoint triggered for this, then keep going. */ + ecs->event_thread->stop_signal = TARGET_SIGNAL_0; + keep_going (ecs); + return 1; } /* Given an execution control state that has been freshly filled in @@ -2447,11 +2941,28 @@ handle_inferior_event (struct execution_control_state *ecs) struct symtab_and_line stop_pc_sal; enum stop_kind stop_soon; + if (ecs->ws.kind == TARGET_WAITKIND_IGNORE) + { + /* We had an event in the inferior, but we are not interested in + handling it at this level. The lower layers have already + done what needs to be done, if anything. + + One of the possible circumstances for this is when the + inferior produces output for the console. The inferior has + not stopped, and we are ignoring the event. Another possible + circumstance is any event which the lower level knows will be + reported multiple times without an intervening resume. */ + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_IGNORE\n"); + prepare_to_wait (ecs); + return; + } + if (ecs->ws.kind != TARGET_WAITKIND_EXITED - && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED - && ecs->ws.kind != TARGET_WAITKIND_IGNORE) + && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED) { struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid)); + gdb_assert (inf); stop_soon = inf->stop_soon; } @@ -2463,7 +2974,7 @@ handle_inferior_event (struct execution_control_state *ecs) target_last_waitstatus = ecs->ws; /* Always clear state belonging to the previous time we stopped. */ - stop_stack_dummy = 0; + stop_stack_dummy = STOP_NONE; /* If it's a new process, add it to the thread database */ @@ -2483,23 +2994,47 @@ handle_inferior_event (struct execution_control_state *ecs) /* Dependent on the current PC value modified by adjust_pc_after_break. */ reinit_frame_cache (); - if (ecs->ws.kind != TARGET_WAITKIND_IGNORE) + breakpoint_retire_moribund (); + + /* First, distinguish signals caused by the debugger from signals + that have to do with the program's own actions. Note that + breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending + on the operating system version. Here we detect when a SIGILL or + SIGEMT is really a breakpoint and change it to SIGTRAP. We do + something similar for SIGSEGV, since a SIGSEGV will be generated + when we're trying to execute a breakpoint instruction on a + non-executable stack. This happens for call dummy breakpoints + for architectures like SPARC that place call dummies on the + stack. */ + if (ecs->ws.kind == TARGET_WAITKIND_STOPPED + && (ecs->ws.value.sig == TARGET_SIGNAL_ILL + || ecs->ws.value.sig == TARGET_SIGNAL_SEGV + || ecs->ws.value.sig == TARGET_SIGNAL_EMT)) { - breakpoint_retire_moribund (); - - /* Mark the non-executing threads accordingly. In all-stop, all - threads of all processes are stopped when we get any event - reported. In non-stop mode, only the event thread stops. If - we're handling a process exit in non-stop mode, there's - nothing to do, as threads of the dead process are gone, and - threads of any other process were left running. */ - if (!non_stop) - set_executing (minus_one_ptid, 0); - else if (ecs->ws.kind != TARGET_WAITKIND_SIGNALLED - && ecs->ws.kind != TARGET_WAITKIND_EXITED) - set_executing (inferior_ptid, 0); + struct regcache *regcache = get_thread_regcache (ecs->ptid); + + if (breakpoint_inserted_here_p (get_regcache_aspace (regcache), + regcache_read_pc (regcache))) + { + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, + "infrun: Treating signal as SIGTRAP\n"); + ecs->ws.value.sig = TARGET_SIGNAL_TRAP; + } } + /* Mark the non-executing threads accordingly. In all-stop, all + threads of all processes are stopped when we get any event + reported. In non-stop mode, only the event thread stops. If + we're handling a process exit in non-stop mode, there's nothing + to do, as threads of the dead process are gone, and threads of + any other process were left running. */ + if (!non_stop) + set_executing (minus_one_ptid, 0); + else if (ecs->ws.kind != TARGET_WAITKIND_SIGNALLED + && ecs->ws.kind != TARGET_WAITKIND_EXITED) + set_executing (inferior_ptid, 0); + switch (infwait_state) { case infwait_thread_hop_state: @@ -2576,6 +3111,10 @@ handle_inferior_event (struct execution_control_state *ecs) dynamically loaded objects (among other things). */ if (stop_on_solib_events) { + /* Make sure we print "Stopped due to solib-event" in + normal_stop. */ + stop_print_frame = 1; + stop_stepping (ecs); return; } @@ -2613,6 +3152,9 @@ handle_inferior_event (struct execution_control_state *ecs) if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXITED\n"); inferior_ptid = ecs->ptid; + set_current_inferior (find_inferior_pid (ptid_get_pid (ecs->ptid))); + set_current_program_space (current_inferior ()->pspace); + handle_vfork_child_exec_or_exit (0); target_terminal_ours (); /* Must do this before mourn anyway */ print_stop_reason (EXITED, ecs->ws.value.integer); @@ -2623,6 +3165,7 @@ handle_inferior_event (struct execution_control_state *ecs) gdb_flush (gdb_stdout); target_mourn_inferior (); singlestep_breakpoints_inserted_p = 0; + cancel_single_step_breakpoints (); stop_print_frame = 0; stop_stepping (ecs); return; @@ -2631,6 +3174,9 @@ handle_inferior_event (struct execution_control_state *ecs) if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SIGNALLED\n"); inferior_ptid = ecs->ptid; + set_current_inferior (find_inferior_pid (ptid_get_pid (ecs->ptid))); + set_current_program_space (current_inferior ()->pspace); + handle_vfork_child_exec_or_exit (0); stop_print_frame = 0; target_terminal_ours (); /* Must do this before mourn anyway */ @@ -2643,6 +3189,7 @@ handle_inferior_event (struct execution_control_state *ecs) print_stop_reason (SIGNAL_EXITED, ecs->ws.value.sig); singlestep_breakpoints_inserted_p = 0; + cancel_single_step_breakpoints (); stop_stepping (ecs); return; @@ -2680,6 +3227,13 @@ handle_inferior_event (struct execution_control_state *ecs) detach_breakpoints (child_pid); } + if (singlestep_breakpoints_inserted_p) + { + /* Pull the single step breakpoints out of the target. */ + remove_single_step_breakpoints (); + singlestep_breakpoints_inserted_p = 0; + } + /* In case the event is caught by a catchpoint, remember that the event is to be followed at the next resume of the thread, and not immediately. */ @@ -2687,19 +3241,49 @@ handle_inferior_event (struct execution_control_state *ecs) stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid)); - ecs->event_thread->stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid); + ecs->event_thread->stop_bpstat + = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), + stop_pc, ecs->ptid); - ecs->random_signal = !bpstat_explains_signal (ecs->event_thread->stop_bpstat); + /* Note that we're interested in knowing the bpstat actually + causes a stop, not just if it may explain the signal. + Software watchpoints, for example, always appear in the + bpstat. */ + ecs->random_signal = !bpstat_causes_stop (ecs->event_thread->stop_bpstat); /* If no catchpoint triggered for this, then keep going. */ if (ecs->random_signal) { + ptid_t parent; + ptid_t child; int should_resume; + int follow_child = (follow_fork_mode_string == follow_fork_mode_child); ecs->event_thread->stop_signal = TARGET_SIGNAL_0; should_resume = follow_fork (); + parent = ecs->ptid; + child = ecs->ws.value.related_pid; + + /* In non-stop mode, also resume the other branch. */ + if (non_stop && !detach_fork) + { + if (follow_child) + switch_to_thread (parent); + else + switch_to_thread (child); + + ecs->event_thread = inferior_thread (); + ecs->ptid = inferior_ptid; + keep_going (ecs); + } + + if (follow_child) + switch_to_thread (child); + else + switch_to_thread (parent); + ecs->event_thread = inferior_thread (); ecs->ptid = inferior_ptid; @@ -2712,6 +3296,23 @@ handle_inferior_event (struct execution_control_state *ecs) ecs->event_thread->stop_signal = TARGET_SIGNAL_TRAP; goto process_event_stop_test; + case TARGET_WAITKIND_VFORK_DONE: + /* Done with the shared memory region. Re-insert breakpoints in + the parent, and keep going. */ + + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_VFORK_DONE\n"); + + if (!ptid_equal (ecs->ptid, inferior_ptid)) + context_switch (ecs->ptid); + + current_inferior ()->waiting_for_vfork_done = 0; + current_inferior ()->pspace->breakpoints_not_allowed = 0; + /* This also takes care of reinserting breakpoints in the + previously locked inferior. */ + keep_going (ecs); + return; + case TARGET_WAITKIND_EXECD: if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXECD\n"); @@ -2722,14 +3323,22 @@ handle_inferior_event (struct execution_control_state *ecs) reinit_frame_cache (); } + singlestep_breakpoints_inserted_p = 0; + cancel_single_step_breakpoints (); + stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid)); + /* Do whatever is necessary to the parent branch of the vfork. */ + handle_vfork_child_exec_or_exit (1); + /* This causes the eventpoints and symbol table to be reset. Must do this now, before trying to determine whether to stop. */ follow_exec (inferior_ptid, ecs->ws.value.execd_pathname); - ecs->event_thread->stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid); + ecs->event_thread->stop_bpstat + = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), + stop_pc, ecs->ptid); ecs->random_signal = !bpstat_explains_signal (ecs->event_thread->stop_bpstat); /* Note that this may be referenced from inside @@ -2753,10 +3362,9 @@ handle_inferior_event (struct execution_control_state *ecs) if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n"); /* Getting the current syscall number */ - if (deal_with_syscall_event (ecs) != 0) + if (handle_syscall_event (ecs) != 0) return; goto process_event_stop_test; - break; /* Before examining the threads further, step this thread to get it entirely out of the syscall. (We get notice of the @@ -2766,10 +3374,9 @@ handle_inferior_event (struct execution_control_state *ecs) case TARGET_WAITKIND_SYSCALL_RETURN: if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SYSCALL_RETURN\n"); - if (deal_with_syscall_event (ecs) != 0) + if (handle_syscall_event (ecs) != 0) return; goto process_event_stop_test; - break; case TARGET_WAITKIND_STOPPED: if (debug_infrun) @@ -2783,21 +3390,6 @@ handle_inferior_event (struct execution_control_state *ecs) print_stop_reason (NO_HISTORY, 0); stop_stepping (ecs); return; - - /* We had an event in the inferior, but we are not interested - in handling it at this level. The lower layers have already - done what needs to be done, if anything. - - One of the possible circumstances for this is when the - inferior produces output for the console. The inferior has - not stopped, and we are ignoring the event. Another possible - circumstance is any event which the lower level knows will be - reported multiple times without an intervening resume. */ - case TARGET_WAITKIND_IGNORE: - if (debug_infrun) - fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_IGNORE\n"); - prepare_to_wait (ecs); - return; } if (ecs->new_thread_event) @@ -2845,12 +3437,16 @@ targets should add new threads to the thread list themselves in non-stop mode.") { struct regcache *regcache = get_thread_regcache (ecs->ptid); struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct cleanup *old_chain = save_inferior_ptid (); + + inferior_ptid = ecs->ptid; fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = %s\n", paddress (gdbarch, stop_pc)); if (target_stopped_by_watchpoint ()) { CORE_ADDR addr; + fprintf_unfiltered (gdb_stdlog, "infrun: stopped by watchpoint\n"); if (target_stopped_data_address (¤t_target, &addr)) @@ -2861,6 +3457,8 @@ targets should add new threads to the thread list themselves in non-stop mode.") fprintf_unfiltered (gdb_stdlog, "infrun: (no data address available)\n"); } + + do_cleanups (old_chain); } if (stepping_past_singlestep_breakpoint) @@ -2937,14 +3535,16 @@ targets should add new threads to the thread list themselves in non-stop mode.") if (ecs->event_thread->stop_signal == TARGET_SIGNAL_TRAP) { int thread_hop_needed = 0; + struct address_space *aspace = + get_regcache_aspace (get_thread_regcache (ecs->ptid)); /* Check if a regular breakpoint has been hit before checking for a potential single step breakpoint. Otherwise, GDB will not see this breakpoint hit when stepping onto breakpoints. */ - if (regular_breakpoint_inserted_here_p (stop_pc)) + if (regular_breakpoint_inserted_here_p (aspace, stop_pc)) { ecs->random_signal = 0; - if (!breakpoint_thread_match (stop_pc, ecs->ptid)) + if (!breakpoint_thread_match (aspace, stop_pc, ecs->ptid)) thread_hop_needed = 1; } else if (singlestep_breakpoints_inserted_p) @@ -3185,6 +3785,7 @@ targets should add new threads to the thread list themselves in non-stop mode.") the instruction and once for the delay slot. */ int step_through_delay = gdbarch_single_step_through_delay (gdbarch, frame); + if (debug_infrun && step_through_delay) fprintf_unfiltered (gdb_stdlog, "infrun: step through delay\n"); if (ecs->event_thread->step_range_end == 0 && step_through_delay) @@ -3215,26 +3816,7 @@ targets should add new threads to the thread list themselves in non-stop mode.") 3) set ecs->random_signal to 1, and the decision between 1 and 2 will be made according to the signal handling tables. */ - /* First, distinguish signals caused by the debugger from signals - that have to do with the program's own actions. Note that - breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending - on the operating system version. Here we detect when a SIGILL or - SIGEMT is really a breakpoint and change it to SIGTRAP. We do - something similar for SIGSEGV, since a SIGSEGV will be generated - when we're trying to execute a breakpoint instruction on a - non-executable stack. This happens for call dummy breakpoints - for architectures like SPARC that place call dummies on the - stack. - - If we're doing a displaced step past a breakpoint, then the - breakpoint is always inserted at the original instruction; - non-standard signals can't be explained by the breakpoint. */ if (ecs->event_thread->stop_signal == TARGET_SIGNAL_TRAP - || (! ecs->event_thread->trap_expected - && breakpoint_inserted_here_p (stop_pc) - && (ecs->event_thread->stop_signal == TARGET_SIGNAL_ILL - || ecs->event_thread->stop_signal == TARGET_SIGNAL_SEGV - || ecs->event_thread->stop_signal == TARGET_SIGNAL_EMT)) || stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_NO_SIGSTOP || stop_soon == STOP_QUIETLY_REMOTE) { @@ -3288,12 +3870,29 @@ targets should add new threads to the thread list themselves in non-stop mode.") } /* See if there is a breakpoint at the current PC. */ - ecs->event_thread->stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid); - + ecs->event_thread->stop_bpstat + = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), + stop_pc, ecs->ptid); + /* Following in case break condition called a function. */ stop_print_frame = 1; + /* This is where we handle "moribund" watchpoints. Unlike + software breakpoints traps, hardware watchpoint traps are + always distinguishable from random traps. If no high-level + watchpoint is associated with the reported stop data address + anymore, then the bpstat does not explain the signal --- + simply make sure to ignore it if `stopped_by_watchpoint' is + set. */ + + if (debug_infrun + && ecs->event_thread->stop_signal == TARGET_SIGNAL_TRAP + && !bpstat_explains_signal (ecs->event_thread->stop_bpstat) + && stopped_by_watchpoint) + fprintf_unfiltered (gdb_stdlog, "\ +infrun: no user watchpoint explains watchpoint SIGTRAP, ignoring\n"); + /* NOTE: cagney/2003-03-29: These two checks for a random signal at one stage in the past included checks for an inferior function call's call dummy's return breakpoint. The original @@ -3317,6 +3916,7 @@ targets should add new threads to the thread list themselves in non-stop mode.") if (ecs->event_thread->stop_signal == TARGET_SIGNAL_TRAP) ecs->random_signal = !(bpstat_explains_signal (ecs->event_thread->stop_bpstat) + || stopped_by_watchpoint || ecs->event_thread->trap_expected || (ecs->event_thread->step_range_end && ecs->event_thread->step_resume_breakpoint == NULL)); @@ -3349,6 +3949,7 @@ process_event_stop_test: { /* Signal not for debugging purposes. */ int printed = 0; + struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid)); if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: random signal %d\n", @@ -3367,7 +3968,8 @@ process_event_stop_test: to remain stopped. */ if (stop_soon != NO_STOP_QUIETLY || ecs->event_thread->stop_requested - || signal_stop_state (ecs->event_thread->stop_signal)) + || (!inf->detaching + && signal_stop_state (ecs->event_thread->stop_signal))) { stop_stepping (ecs); return; @@ -3452,9 +4054,15 @@ process_event_stop_test: if (what.call_dummy) { - stop_stack_dummy = 1; + stop_stack_dummy = what.call_dummy; } + /* If we hit an internal event that triggers symbol changes, the + current frame will be invalidated within bpstat_what (e.g., if + we hit an internal solib event). Re-fetch it. */ + frame = get_current_frame (); + gdbarch = get_frame_arch (frame); + switch (what.main_action) { case BPSTAT_WHAT_SET_LONGJMP_RESUME: @@ -3559,66 +4167,6 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n"); } break; - case BPSTAT_WHAT_CHECK_SHLIBS: - { - if (debug_infrun) - fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_CHECK_SHLIBS\n"); - - /* Check for any newly added shared libraries if we're - supposed to be adding them automatically. Switch - terminal for any messages produced by - breakpoint_re_set. */ - target_terminal_ours_for_output (); - /* NOTE: cagney/2003-11-25: Make certain that the target - stack's section table is kept up-to-date. Architectures, - (e.g., PPC64), use the section table to perform - operations such as address => section name and hence - require the table to contain all sections (including - those found in shared libraries). */ -#ifdef SOLIB_ADD - SOLIB_ADD (NULL, 0, ¤t_target, auto_solib_add); -#else - solib_add (NULL, 0, ¤t_target, auto_solib_add); -#endif - target_terminal_inferior (); - - /* If requested, stop when the dynamic linker notifies - gdb of events. This allows the user to get control - and place breakpoints in initializer routines for - dynamically loaded objects (among other things). */ - if (stop_on_solib_events || stop_stack_dummy) - { - stop_stepping (ecs); - return; - } - else - { - /* We want to step over this breakpoint, then keep going. */ - ecs->event_thread->stepping_over_breakpoint = 1; - break; - } - } - break; - - case BPSTAT_WHAT_CHECK_JIT: - if (debug_infrun) - fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_CHECK_JIT\n"); - - /* Switch terminal for any messages produced by breakpoint_re_set. */ - target_terminal_ours_for_output (); - - jit_event_handler (gdbarch); - - target_terminal_inferior (); - - /* We want to step over this breakpoint, then keep going. */ - ecs->event_thread->stepping_over_breakpoint = 1; - - break; - - case BPSTAT_WHAT_LAST: - /* Not a real code, but listed here to shut up gcc -Wall. */ - case BPSTAT_WHAT_KEEP_CHECKING: break; } @@ -3635,6 +4183,7 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n"); if (!non_stop) { struct thread_info *tp; + tp = iterate_over_threads (currently_stepping_or_nexting_callback, ecs->event_thread); if (tp) @@ -3750,6 +4299,12 @@ infrun: not switching back to stepped thread, it has vanished\n"); return; } + /* Re-fetch current thread's frame in case the code above caused + the frame cache to be re-initialized, making our FRAME variable + a dangling pointer. */ + frame = get_current_frame (); + gdbarch = get_frame_arch (frame); + /* If stepping through a line, keep going if still within it. Note that step_range_end is the address of the first instruction @@ -3818,8 +4373,10 @@ infrun: not switching back to stepped thread, it has vanished\n"); /* Set up a step-resume breakpoint at the address indicated by SKIP_SOLIB_RESOLVER. */ struct symtab_and_line sr_sal; + init_sal (&sr_sal); sr_sal.pc = pc_after_resolver; + sr_sal.pspace = get_frame_program_space (frame); insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id); @@ -3860,7 +4417,7 @@ infrun: not switching back to stepped thread, it has vanished\n"); "outermost" function. This could be fixed by marking outermost frames as !stack_p,code_p,special_p. Then the initial outermost frame, before sp was valid, would - have code_addr == &_start. See the commend in frame_id_eq + have code_addr == &_start. See the comment in frame_id_eq for more. */ if (!frame_id_eq (get_stack_frame_id (frame), ecs->event_thread->step_stack_frame_id) @@ -3930,8 +4487,9 @@ infrun: not switching back to stepped thread, it has vanished\n"); /* Normal function call return (static or dynamic). */ init_sal (&sr_sal); sr_sal.pc = ecs->stop_func_start; - insert_step_resume_breakpoint_at_sal (gdbarch, - sr_sal, null_frame_id); + sr_sal.pspace = get_frame_program_space (frame); + insert_step_resume_breakpoint_at_sal (gdbarch, + sr_sal, null_frame_id); } else insert_step_resume_breakpoint_at_caller (frame); @@ -3954,8 +4512,10 @@ infrun: not switching back to stepped thread, it has vanished\n"); if (real_stop_pc != 0 && in_solib_dynsym_resolve_code (real_stop_pc)) { struct symtab_and_line sr_sal; + init_sal (&sr_sal); sr_sal.pc = ecs->stop_func_start; + sr_sal.pspace = get_frame_program_space (frame); insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id); @@ -3973,6 +4533,7 @@ infrun: not switching back to stepped thread, it has vanished\n"); struct symtab_and_line tmp_sal; tmp_sal = find_pc_line (ecs->stop_func_start, 0); + tmp_sal.pspace = get_frame_program_space (frame); if (tmp_sal.line != 0) { if (execution_direction == EXEC_REVERSE) @@ -4000,8 +4561,10 @@ infrun: not switching back to stepped thread, it has vanished\n"); /* Set a breakpoint at callee's start address. From there we can step once and be back in the caller. */ struct symtab_and_line sr_sal; + init_sal (&sr_sal); sr_sal.pc = ecs->stop_func_start; + sr_sal.pspace = get_frame_program_space (frame); insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id); } @@ -4037,8 +4600,10 @@ infrun: not switching back to stepped thread, it has vanished\n"); Set a breakpoint at its start and continue, then one more step will take us out. */ struct symtab_and_line sr_sal; + init_sal (&sr_sal); sr_sal.pc = ecs->stop_func_start; + sr_sal.pspace = get_frame_program_space (frame); insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id); keep_going (ecs); @@ -4053,6 +4618,7 @@ infrun: not switching back to stepped thread, it has vanished\n"); { /* Determine where this trampoline returns. */ CORE_ADDR real_stop_pc; + real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc); if (debug_infrun) @@ -4067,6 +4633,7 @@ infrun: not switching back to stepped thread, it has vanished\n"); init_sal (&sr_sal); /* initialize to zeroes */ sr_sal.pc = real_stop_pc; sr_sal.section = find_pc_overlay (sr_sal.pc); + sr_sal.pspace = get_frame_program_space (frame); /* Do not specify what the fp should be when we stop since on some machines the prologue is where the new fp value @@ -4346,6 +4913,7 @@ handle_step_into_function (struct gdbarch *gdbarch, init_sal (&sr_sal); /* initialize to zeroes */ sr_sal.pc = ecs->stop_func_start; sr_sal.section = find_pc_overlay (ecs->stop_func_start); + sr_sal.pspace = get_frame_program_space (get_current_frame ()); /* Do not specify what the fp should be when we stop since on some machines the prologue is where the new fp value is @@ -4367,7 +4935,7 @@ handle_step_into_function_backward (struct gdbarch *gdbarch, struct execution_control_state *ecs) { struct symtab *s; - struct symtab_and_line stop_func_sal, sr_sal; + struct symtab_and_line stop_func_sal; s = find_pc_symtab (stop_pc); if (s && s->language != language_asm) @@ -4437,6 +5005,7 @@ insert_step_resume_breakpoint_at_frame (struct frame_info *return_frame) gdbarch = get_frame_arch (return_frame); sr_sal.pc = gdbarch_addr_bits_remove (gdbarch, get_frame_pc (return_frame)); sr_sal.section = find_pc_overlay (sr_sal.pc); + sr_sal.pspace = get_frame_program_space (return_frame); insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, get_stack_frame_id (return_frame)); @@ -4473,6 +5042,7 @@ insert_step_resume_breakpoint_at_caller (struct frame_info *next_frame) sr_sal.pc = gdbarch_addr_bits_remove (gdbarch, frame_unwind_caller_pc (next_frame)); sr_sal.section = find_pc_overlay (sr_sal.pc); + sr_sal.pspace = frame_unwind_program_space (next_frame); insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, frame_unwind_caller_id (next_frame)); @@ -4517,6 +5087,10 @@ stop_stepping (struct execution_control_state *ecs) static void keep_going (struct execution_control_state *ecs) { + /* Make sure normal_stop is called if we get a QUIT handled before + reaching resume. */ + struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0); + /* Save the pc before execution, to compare with pc after stop. */ ecs->event_thread->prev_pc = regcache_read_pc (get_thread_regcache (ecs->ptid)); @@ -4530,6 +5104,8 @@ keep_going (struct execution_control_state *ecs) /* We took a signal (which we are supposed to pass through to the inferior, else we'd not get here) and we haven't yet gotten our trap. Simply continue. */ + + discard_cleanups (old_cleanups); resume (currently_stepping (ecs->event_thread), ecs->event_thread->stop_signal); } @@ -4551,6 +5127,7 @@ keep_going (struct execution_control_state *ecs) if (ecs->event_thread->stepping_over_breakpoint) { struct regcache *thread_regcache = get_thread_regcache (ecs->ptid); + if (!use_displaced_stepping (get_regcache_arch (thread_regcache))) /* Since we can't do a displaced step, we have to remove the breakpoint while we step it. To keep things @@ -4560,6 +5137,7 @@ keep_going (struct execution_control_state *ecs) else { struct gdb_exception e; + /* Stop stepping when inserting breakpoints has failed. */ TRY_CATCH (e, RETURN_MASK_ERROR) @@ -4568,6 +5146,7 @@ keep_going (struct execution_control_state *ecs) } if (e.reason < 0) { + exception_print (gdb_stderr, e); stop_stepping (ecs); return; } @@ -4591,6 +5170,7 @@ keep_going (struct execution_control_state *ecs) && !signal_program[ecs->event_thread->stop_signal]) ecs->event_thread->stop_signal = TARGET_SIGNAL_0; + discard_cleanups (old_cleanups); resume (currently_stepping (ecs->event_thread), ecs->event_thread->stop_signal); } @@ -4919,12 +5499,13 @@ Further execution is probably impossible.\n")); stop_registers = regcache_dup (get_current_regcache ()); } - if (stop_stack_dummy) + if (stop_stack_dummy == STOP_STACK_DUMMY) { /* Pop the empty frame that contains the stack dummy. This also restores inferior state prior to the call (struct inferior_thread_state). */ struct frame_info *frame = get_current_frame (); + gdb_assert (get_frame_type (frame) == DUMMY_FRAME); frame_pop (frame); /* frame_pop() calls reinit_frame_cache as the last thing it does @@ -4976,6 +5557,11 @@ done: Delete any breakpoint that is to be deleted at the next stop. */ breakpoint_auto_delete (inferior_thread ()->stop_bpstat); } + + /* Try to get rid of automatically added inferiors that are no + longer needed. Keeping those around slows down things linearly. + Note that this never removes the current inferior. */ + prune_inferiors (); } static int @@ -5007,6 +5593,7 @@ int signal_stop_update (int signo, int state) { int ret = signal_stop[signo]; + signal_stop[signo] = state; return ret; } @@ -5015,6 +5602,7 @@ int signal_print_update (int signo, int state) { int ret = signal_print[signo]; + signal_print[signo] = state; return ret; } @@ -5023,6 +5611,7 @@ int signal_pass_update (int signo, int state) { int ret = signal_program[signo]; + signal_program[signo] = state; return ret; } @@ -5306,6 +5895,7 @@ static void signals_info (char *signum_exp, int from_tty) { enum target_signal oursig; + sig_print_header (); if (signum_exp) @@ -5404,6 +5994,7 @@ siginfo_make_value (struct gdbarch *gdbarch, struct internalvar *var) && gdbarch_get_siginfo_type_p (gdbarch)) { struct type *type = gdbarch_get_siginfo_type (gdbarch); + return allocate_computed_value (type, &siginfo_value_funcs, NULL); } @@ -5492,7 +6083,7 @@ struct inferior_status { bpstat stop_bpstat; int stop_step; - int stop_stack_dummy; + enum stop_stack_kind stop_stack_dummy; int stopped_by_random_signal; int stepping_over_breakpoint; CORE_ADDR step_range_start; @@ -5773,6 +6364,25 @@ ptid_is_pid (ptid_t ptid) return (ptid_get_lwp (ptid) == 0 && ptid_get_tid (ptid) == 0); } +int +ptid_match (ptid_t ptid, ptid_t filter) +{ + /* Since both parameters have the same type, prevent easy mistakes + from happening. */ + gdb_assert (!ptid_equal (ptid, minus_one_ptid) + && !ptid_equal (ptid, null_ptid)); + + if (ptid_equal (filter, minus_one_ptid)) + return 1; + if (ptid_is_pid (filter) + && ptid_get_pid (ptid) == ptid_get_pid (filter)) + return 1; + else if (ptid_equal (ptid, filter)) + return 1; + + return 0; +} + /* restore_inferior_ptid() will be used by the cleanup machinery to restore the inferior_ptid value saved in a call to save_inferior_ptid(). */ @@ -5781,6 +6391,7 @@ static void restore_inferior_ptid (void *arg) { ptid_t *saved_ptid_ptr = arg; + inferior_ptid = *saved_ptid_ptr; xfree (arg); } @@ -5825,6 +6436,11 @@ set_exec_direction_func (char *args, int from_tty, else if (!strcmp (exec_direction, exec_reverse)) execution_direction = EXEC_REVERSE; } + else + { + exec_direction = exec_forward; + error (_("Target does not support this operation.")); + } } static void @@ -5850,7 +6466,6 @@ show_exec_direction_func (struct ui_file *out, int from_tty, /* User interface for non-stop mode. */ int non_stop = 0; -static int non_stop_1 = 0; static void set_non_stop (char *args, int from_tty, @@ -5887,7 +6502,6 @@ _initialize_infrun (void) { int i; int numsigs; - struct cmd_list_element *c; add_info ("signals", signals_info, _("\ What debugger does when program gets various signals.\n\ @@ -5922,7 +6536,7 @@ from 1-15 are allowed for compatibility with old versions of GDB.\n\ Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\ The special arg \"all\" is recognized to mean all signals except those\n\ used by the debugger, typically SIGTRAP and SIGINT.\n\ -Recognized actions include \"s\" (toggles between stop and nostop), \n\ +Recognized actions include \"s\" (toggles between stop and nostop),\n\ \"r\" (toggles between print and noprint), \"i\" (toggles between pass and \ nopass), \"Q\" (noprint)\n\ Stop means reenter debugger if this signal happens (implies print).\n\ @@ -6047,6 +6661,30 @@ By default, the debugger will follow the parent process."), show_follow_fork_mode_string, &setlist, &showlist); + add_setshow_enum_cmd ("follow-exec-mode", class_run, + follow_exec_mode_names, + &follow_exec_mode_string, _("\ +Set debugger response to a program call of exec."), _("\ +Show debugger response to a program call of exec."), _("\ +An exec call replaces the program image of a process.\n\ +\n\ +follow-exec-mode can be:\n\ +\n\ + new - the debugger creates a new inferior and rebinds the process\n\ +to this new inferior. The program the process was running before\n\ +the exec call can be restarted afterwards by restarting the original\n\ +inferior.\n\ +\n\ + same - the debugger keeps the process bound to the same inferior.\n\ +The new executable image replaces the previous executable loaded in\n\ +the inferior. Restarting the inferior after the exec call restarts\n\ +the executable the process was running after the exec call.\n\ +\n\ +By default, the debugger will use the same inferior."), + NULL, + show_follow_exec_mode_string, + &setlist, &showlist); + add_setshow_enum_cmd ("scheduler-locking", class_run, scheduler_enums, &scheduler_mode, _("\ Set mode for locking scheduler during execution."), _("\ @@ -6105,20 +6743,41 @@ Options are 'forward' or 'reverse'."), set_exec_direction_func, show_exec_direction_func, &setlist, &showlist); + /* Set/show detach-on-fork: user-settable mode. */ + + add_setshow_boolean_cmd ("detach-on-fork", class_run, &detach_fork, _("\ +Set whether gdb will detach the child of a fork."), _("\ +Show whether gdb will detach the child of a fork."), _("\ +Tells gdb whether to detach the child of a fork."), + NULL, NULL, &setlist, &showlist); + /* ptid initializations */ null_ptid = ptid_build (0, 0, 0); minus_one_ptid = ptid_build (-1, 0, 0); inferior_ptid = null_ptid; target_last_wait_ptid = minus_one_ptid; - displaced_step_ptid = null_ptid; observer_attach_thread_ptid_changed (infrun_thread_ptid_changed); observer_attach_thread_stop_requested (infrun_thread_stop_requested); observer_attach_thread_exit (infrun_thread_thread_exit); + observer_attach_inferior_exit (infrun_inferior_exit); /* Explicitly create without lookup, since that tries to create a value with a void typed value, and when we get here, gdbarch isn't initialized yet. At this point, we're quite sure there isn't another convenience variable of the same name. */ create_internalvar_type_lazy ("_siginfo", siginfo_make_value); + + add_setshow_boolean_cmd ("observer", no_class, + &observer_mode_1, _("\ +Set whether gdb controls the inferior in observer mode."), _("\ +Show whether gdb controls the inferior in observer mode."), _("\ +In observer mode, GDB can get data from the inferior, but not\n\ +affect its execution. Registers and memory may not be changed,\n\ +breakpoints may not be set, and the program cannot be interrupted\n\ +or signalled."), + set_observer_mode, + show_observer_mode, + &setlist, + &showlist); } diff --git a/contrib/gdb-7/gdb/inline-frame.c b/contrib/gdb-7/gdb/inline-frame.c index 0e6dae323f..706bcd962c 100644 --- a/contrib/gdb-7/gdb/inline-frame.c +++ b/contrib/gdb-7/gdb/inline-frame.c @@ -1,6 +1,6 @@ /* Inline frame unwinder for GDB. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -22,6 +22,7 @@ #include "block.h" #include "frame-unwind.h" #include "inferior.h" +#include "regcache.h" #include "symtab.h" #include "vec.h" @@ -59,7 +60,8 @@ DEF_VEC_O(inline_state_s); static VEC(inline_state_s) *inline_states; -/* Locate saved inlined frame state for PTID, if it exists. */ +/* Locate saved inlined frame state for PTID, if it exists + and is valid. */ static struct inline_state * find_inline_frame_state (ptid_t ptid) @@ -70,7 +72,20 @@ find_inline_frame_state (ptid_t ptid) for (ix = 0; VEC_iterate (inline_state_s, inline_states, ix, state); ix++) { if (ptid_equal (state->ptid, ptid)) - return state; + { + struct regcache *regcache = get_thread_regcache (ptid); + CORE_ADDR current_pc = regcache_read_pc (regcache); + + if (current_pc != state->saved_pc) + { + /* PC has changed - this context is invalid. Use the + default behavior. */ + VEC_unordered_remove (inline_state_s, inline_states, ix); + return NULL; + } + else + return state; + } } return NULL; @@ -110,6 +125,7 @@ clear_inline_frame_state (ptid_t ptid) { VEC (inline_state_s) *new_states = NULL; int pid = ptid_get_pid (ptid); + for (ix = 0; VEC_iterate (inline_state_s, inline_states, ix, state); ix++) if (pid != ptid_get_pid (state->ptid)) VEC_safe_push (inline_state_s, new_states, state); @@ -225,13 +241,8 @@ inline_frame_sniffer (const struct frame_unwind *self, can be stepped into later). */ if (state != NULL && state->skipped_frames > 0 && next_frame == NULL) { - if (this_pc != state->saved_pc) - state->skipped_frames = 0; - else - { - gdb_assert (depth >= state->skipped_frames); - depth -= state->skipped_frames; - } + gdb_assert (depth >= state->skipped_frames); + depth -= state->skipped_frames; } /* If all the inlined functions here already have frames, then pass diff --git a/contrib/gdb-7/gdb/inline-frame.h b/contrib/gdb-7/gdb/inline-frame.h index 210d6c3e7b..c48e8d7bf2 100644 --- a/contrib/gdb-7/gdb/inline-frame.h +++ b/contrib/gdb-7/gdb/inline-frame.h @@ -1,6 +1,6 @@ /* Definitions for inline frame support. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/interps.c b/contrib/gdb-7/gdb/interps.c index da05ee26ed..494c15c588 100644 --- a/contrib/gdb-7/gdb/interps.c +++ b/contrib/gdb-7/gdb/interps.c @@ -1,6 +1,6 @@ /* Manages interpreters for GDB, the GNU debugger. - Copyright (C) 2000, 2002, 2003, 2007, 2008, 2009 + Copyright (C) 2000, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Jim Ingham of Apple Computer, Inc. @@ -306,6 +306,7 @@ static int interp_set_quiet (struct interp *interp, int quiet) { int old_val = interp->quiet_p; + interp->quiet_p = quiet; return old_val; } @@ -343,7 +344,6 @@ clear_interpreter_hooks (void) deprecated_readline_hook = 0; deprecated_readline_end_hook = 0; deprecated_register_changed_hook = 0; - deprecated_memory_changed_hook = 0; deprecated_context_hook = 0; deprecated_target_wait_hook = 0; deprecated_call_command_hook = 0; @@ -401,6 +401,7 @@ interpreter_exec_cmd (char *args, int from_tty) for (i = 1; i < nrules; i++) { struct gdb_exception e = interp_exec (interp_to_use, prules[i]); + if (e.reason < 0) { interp_set (old_interp, 0); diff --git a/contrib/gdb-7/gdb/interps.h b/contrib/gdb-7/gdb/interps.h index de736ce38e..127daafd40 100644 --- a/contrib/gdb-7/gdb/interps.h +++ b/contrib/gdb-7/gdb/interps.h @@ -1,6 +1,6 @@ /* Manages interpreters for GDB, the GNU debugger. - Copyright (C) 2000, 2002, 2003, 2007, 2008, 2009 + Copyright (C) 2000, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Jim Ingham of Apple Computer, Inc. diff --git a/contrib/gdb-7/gdb/jit.c b/contrib/gdb-7/gdb/jit.c index a362098b02..42ef8efb5c 100644 --- a/contrib/gdb-7/gdb/jit.c +++ b/contrib/gdb-7/gdb/jit.c @@ -1,7 +1,6 @@ /* Handle JIT code generation in the inferior for GDB, the GNU Debugger. - Copyright (C) 2009 - Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -253,7 +252,7 @@ JITed symbol file is not an object file, ignoring it.\n")); /* We assume that these virtual addresses are absolute, and do not treat them as offsets. */ sai->other[i].addr = bfd_get_section_vma (nbfd, sec); - sai->other[i].name = (char *) bfd_get_section_name (nbfd, sec); + sai->other[i].name = xstrdup (bfd_get_section_name (nbfd, sec)); sai->other[i].sectindex = sec->index; ++i; } @@ -314,7 +313,6 @@ jit_inferior_init (struct gdbarch *gdbarch) struct jit_descriptor descriptor; struct jit_code_entry cur_entry; CORE_ADDR cur_entry_addr; - struct cleanup *old_cleanups; /* When we register code, GDB resets its breakpoints in case symbols have changed. That in turn calls this handler, which makes us look for new @@ -398,7 +396,7 @@ jit_inferior_created_observer (struct target_ops *objfile, int from_tty) for example when it crashes. */ static void -jit_inferior_exit_hook (int pid) +jit_inferior_exit_hook (struct inferior *inf) { struct objfile *objf; struct objfile *temp; diff --git a/contrib/gdb-7/gdb/jit.h b/contrib/gdb-7/gdb/jit.h index fb0a1095df..842472b442 100644 --- a/contrib/gdb-7/gdb/jit.h +++ b/contrib/gdb-7/gdb/jit.h @@ -1,7 +1,6 @@ /* JIT declarations for GDB, the GNU Debugger. - Copyright (C) 2009 - Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/jv-exp.y b/contrib/gdb-7/gdb/jv-exp.y index 71ee775d16..8109e0c59a 100644 --- a/contrib/gdb-7/gdb/jv-exp.y +++ b/contrib/gdb-7/gdb/jv-exp.y @@ -1,5 +1,5 @@ /* YACC parser for Java expressions, for GDB. - Copyright (C) 1997, 1998, 1999, 2000, 2006, 2007, 2008, 2009 + Copyright (C) 1997, 1998, 1999, 2000, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -547,7 +547,6 @@ CastExpression: write_exp_elt_opcode (UNOP_CAST); } | '(' Expression ')' UnaryExpressionNotPlusMinus { - int exp_size = expout_ptr; int last_exp_size = length_of_subexp(expout, expout_ptr); struct type *type; int i; @@ -898,7 +897,7 @@ yylex (void) lexptr++; c = *lexptr++; if (c == '\\') - c = parse_escape (&lexptr); + c = parse_escape (parse_gdbarch, &lexptr); else if (c == '\'') error (_("Empty character constant")); @@ -1061,7 +1060,7 @@ yylex (void) break; case '\\': tokptr++; - c = parse_escape (&tokptr); + c = parse_escape (parse_gdbarch, &tokptr); if (c == -1) { continue; @@ -1358,7 +1357,6 @@ push_expression_name (struct stoken name) { char *tmp; struct type *typ; - char *ptr; int i; for (i = 0; i < name.length; i++) diff --git a/contrib/gdb-7/gdb/jv-lang.c b/contrib/gdb-7/gdb/jv-lang.c index 6b68e7d6b0..53fd9a2ccd 100644 --- a/contrib/gdb-7/gdb/jv-lang.c +++ b/contrib/gdb-7/gdb/jv-lang.c @@ -1,7 +1,7 @@ /* Java language support routines for GDB, the GNU debugger. - Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -46,7 +46,7 @@ extern void _initialize_java_language (void); static int java_demangled_signature_length (char *); static void java_demangled_signature_copy (char *, char *); -static struct symtab *get_java_class_symtab (void); +static struct symtab *get_java_class_symtab (struct gdbarch *gdbarch); static char *get_java_utf8_name (struct obstack *obstack, struct value *name); static int java_class_is_primitive (struct value *clas); static struct value *java_value_string (char *ptr, int len); @@ -56,15 +56,35 @@ static void java_emit_char (int c, struct type *type, static char *java_class_name_from_physname (const char *physname); +static const struct objfile_data *jv_dynamics_objfile_data_key; +static const struct objfile_data *jv_type_objfile_data_key; + /* This objfile contains symtabs that have been dynamically created to record dynamically loaded Java classes and dynamically compiled java methods. */ static struct objfile *dynamics_objfile = NULL; +/* symtab contains classes read from the inferior. */ + +static struct symtab *class_symtab = NULL; + static struct type *java_link_class_type (struct gdbarch *, struct type *, struct value *); +/* A function called when the dynamics_objfile is freed. We use this + to clean up some internal state. */ +static void +jv_per_objfile_free (struct objfile *objfile, void *ignore) +{ + gdb_assert (objfile == dynamics_objfile); + /* Clean up all our cached state. These objects are all allocated + in the dynamics_objfile, so we don't need to actually free + anything. */ + dynamics_objfile = NULL; + class_symtab = NULL; +} + /* FIXME: carlton/2003-02-04: This is the main or only caller of allocate_objfile with first argument NULL; as a result, this code breaks every so often. Somebody should write a test case that @@ -72,30 +92,35 @@ static struct type *java_link_class_type (struct gdbarch *, dynamic library) after this code has been called. */ static struct objfile * -get_dynamics_objfile (void) +get_dynamics_objfile (struct gdbarch *gdbarch) { if (dynamics_objfile == NULL) { - dynamics_objfile = allocate_objfile (NULL, 0); + /* Mark it as shared so that it is cleared when the inferior is + re-run. */ + dynamics_objfile = allocate_objfile (NULL, OBJF_SHARED); + dynamics_objfile->gdbarch = gdbarch; + /* We don't have any data to store, but this lets us get a + notification when the objfile is destroyed. Since we have to + store a non-NULL value, we just pick something arbitrary and + safe. */ + set_objfile_data (dynamics_objfile, jv_dynamics_objfile_data_key, + &dynamics_objfile); } return dynamics_objfile; } -#if 1 -/* symtab contains classes read from the inferior. */ - -static struct symtab *class_symtab = NULL; - static void free_class_block (struct symtab *symtab); static struct symtab * -get_java_class_symtab (void) +get_java_class_symtab (struct gdbarch *gdbarch) { if (class_symtab == NULL) { - struct objfile *objfile = get_dynamics_objfile (); + struct objfile *objfile = get_dynamics_objfile (gdbarch); struct blockvector *bv; struct block *bl; + class_symtab = allocate_symtab ("", objfile); class_symtab->language = language_java; bv = (struct blockvector *) @@ -122,17 +147,18 @@ get_java_class_symtab (void) static void add_class_symtab_symbol (struct symbol *sym) { - struct symtab *symtab = get_java_class_symtab (); + struct symtab *symtab + = get_java_class_symtab (get_objfile_arch (SYMBOL_SYMTAB (sym)->objfile)); struct blockvector *bv = BLOCKVECTOR (symtab); + dict_add_symbol (BLOCK_DICT (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK)), sym); } -static struct symbol *add_class_symbol (struct type *type, CORE_ADDR addr); - static struct symbol * add_class_symbol (struct type *type, CORE_ADDR addr) { struct symbol *sym; + sym = (struct symbol *) obstack_alloc (&dynamics_objfile->objfile_obstack, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol)); @@ -155,39 +181,17 @@ free_class_block (struct symtab *symtab) dict_free (BLOCK_DICT (bl)); } -#endif struct type * java_lookup_class (char *name) { struct symbol *sym; + sym = lookup_symbol (name, expression_context_block, STRUCT_DOMAIN, NULL); if (sym != NULL) return SYMBOL_TYPE (sym); -#if 0 - CORE_ADDR addr; - if (called from parser) - { - call lookup_class (or similar) in inferior; - if not - found: - return NULL; - addr = found in inferior; - } - else - addr = 0; - struct type *type; - type = alloc_type (objfile); - TYPE_CODE (type) = TYPE_CODE_STRUCT; - INIT_CPLUS_SPECIFIC (type); - TYPE_TAG_NAME (type) = obsavestring (name, strlen (name), &objfile->objfile_obstack); - TYPE_STUB (type) = 1; - TYPE ? = addr; - return type; -#else /* FIXME - should search inferior's symbol table. */ return NULL; -#endif } /* Return a nul-terminated string (allocated on OBSTACK) for @@ -200,6 +204,7 @@ get_java_utf8_name (struct obstack *obstack, struct value *name) struct value *temp = name; int name_length; CORE_ADDR data_addr; + temp = value_struct_elt (&temp, NULL, "length", NULL, "structure"); name_length = (int) value_as_long (temp); data_addr = value_address (temp) + TYPE_LENGTH (value_type (temp)); @@ -231,6 +236,7 @@ java_class_is_primitive (struct value *clas) { struct value *vtable = value_struct_elt (&clas, NULL, "vtable", NULL, "struct"); CORE_ADDR i = value_as_address (vtable); + return (int) (i & 0x7fffffff) == (int) 0x7fffffff; } @@ -246,8 +252,6 @@ type_from_class (struct gdbarch *gdbarch, struct value *clas) struct value *utf8_name; char *nptr; CORE_ADDR addr; - struct block *bl; - struct dict_iterator iter; int is_array = 0; type = check_typedef (value_type (clas)); @@ -259,20 +263,11 @@ type_from_class (struct gdbarch *gdbarch, struct value *clas) } addr = value_address (clas); -#if 0 - get_java_class_symtab (); - bl = BLOCKVECTOR_BLOCK (BLOCKVECTOR (class_symtab), GLOBAL_BLOCK); - ALL_BLOCK_SYMBOLS (block, iter, sym) - { - if (SYMBOL_VALUE_ADDRESS (sym) == addr) - return SYMBOL_TYPE (sym); - } -#endif - - objfile = get_dynamics_objfile (); + objfile = get_dynamics_objfile (gdbarch); if (java_class_is_primitive (clas)) { struct value *sig; + temp = clas; sig = value_struct_elt (&temp, NULL, "method_count", NULL, "structure"); return java_primitive_type (gdbarch, value_as_long (sig)); @@ -293,10 +288,7 @@ type_from_class (struct gdbarch *gdbarch, struct value *clas) if (type != NULL) return type; - /* Do not use the "fake" dynamics objfile to own dynamically generated - types, as it does not provide an architecture, and it would not help - manage the lifetime of these types anyway. */ - type = alloc_type_arch (gdbarch); + type = alloc_type (objfile); TYPE_CODE (type) = TYPE_CODE_STRUCT; INIT_CPLUS_SPECIFIC (type); @@ -304,6 +296,7 @@ type_from_class (struct gdbarch *gdbarch, struct value *clas) { char *signature = name; int namelen = java_demangled_signature_length (signature); + if (namelen > strlen (name)) name = obstack_alloc (&objfile->objfile_obstack, namelen + 1); java_demangled_signature_copy (name, signature); @@ -325,7 +318,7 @@ type_from_class (struct gdbarch *gdbarch, struct value *clas) /* Fill in class TYPE with data from the CLAS value. */ -struct type * +static struct type * java_link_class_type (struct gdbarch *gdbarch, struct type *type, struct value *clas) { @@ -341,7 +334,7 @@ java_link_class_type (struct gdbarch *gdbarch, struct value *method = NULL; struct value *field = NULL; int i, j; - struct objfile *objfile = get_dynamics_objfile (); + struct objfile *objfile = get_dynamics_objfile (gdbarch); struct type *tsuper; gdb_assert (name != NULL); @@ -425,6 +418,7 @@ java_link_class_type (struct gdbarch *gdbarch, { int accflags; int boffset; + if (fields == NULL) { temp = clas; @@ -435,6 +429,7 @@ java_link_class_type (struct gdbarch *gdbarch, { /* Re-use field value for next field. */ CORE_ADDR addr = value_address (field) + TYPE_LENGTH (value_type (field)); + set_value_address (field, addr); set_value_lazy (field, 1); } @@ -472,6 +467,7 @@ java_link_class_type (struct gdbarch *gdbarch, else { struct type *ftype; + temp = field; temp = value_struct_elt (&temp, NULL, "type", NULL, "structure"); ftype = type_from_class (gdbarch, temp); @@ -497,6 +493,7 @@ java_link_class_type (struct gdbarch *gdbarch, { char *mname; int k; + if (methods == NULL) { temp = clas; @@ -507,6 +504,7 @@ java_link_class_type (struct gdbarch *gdbarch, { /* Re-use method value for next method. */ CORE_ADDR addr = value_address (method) + TYPE_LENGTH (value_type (method)); + set_value_address (method, addr); set_value_lazy (method, 1); } @@ -538,6 +536,7 @@ java_link_class_type (struct gdbarch *gdbarch, if (strcmp (mname, fn_fieldlists[j].name) == 0) { /* Found an existing method with the same name. */ int l; + if (mname != unqualified_name) obstack_free (&objfile->objfile_obstack, mname); mname = fn_fieldlists[j].name; @@ -570,16 +569,39 @@ java_link_class_type (struct gdbarch *gdbarch, static struct type *java_object_type; +/* A free function that is attached to the objfile defining + java_object_type. This is used to clear the cached type whenever + its owning objfile is destroyed. */ +static void +jv_clear_object_type (struct objfile *objfile, void *ignore) +{ + java_object_type = NULL; +} + +static void +set_java_object_type (struct type *type) +{ + struct objfile *owner; + + gdb_assert (java_object_type == NULL); + + owner = TYPE_OBJFILE (type); + if (owner) + set_objfile_data (owner, jv_type_objfile_data_key, &java_object_type); + java_object_type = type; +} + struct type * get_java_object_type (void) { if (java_object_type == NULL) { struct symbol *sym; + sym = lookup_symbol ("java.lang.Object", NULL, STRUCT_DOMAIN, NULL); if (sym == NULL) error (_("cannot find java.lang.Object")); - java_object_type = SYMBOL_TYPE (sym); + set_java_object_type (SYMBOL_TYPE (sym)); } return java_object_type; } @@ -588,6 +610,7 @@ int get_java_object_header_size (struct gdbarch *gdbarch) { struct type *objtype = get_java_object_type (); + if (objtype == NULL) return (2 * gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT); else @@ -613,7 +636,7 @@ is_object_type (struct type *type) if (name != NULL && strcmp (name, "vtable") == 0) { if (java_object_type == NULL) - java_object_type = type; + set_java_object_type (type); return 1; } } @@ -731,6 +754,7 @@ static int java_demangled_signature_length (char *signature) { int array = 0; + for (; *signature == '['; signature++) array += 2; /* Two chars for "[]". */ switch (signature[0]) @@ -751,6 +775,7 @@ java_demangled_signature_copy (char *result, char *signature) int array = 0; char *ptr; int i; + while (*signature == '[') { array++; @@ -792,6 +817,7 @@ java_demangle_type_signature (char *signature) { int length = java_demangled_signature_length (signature); char *result = xmalloc (length + 1); + java_demangled_signature_copy (result, signature); result[length] = '\0'; return result; @@ -868,6 +894,7 @@ evaluate_subexp_java (struct type *expect_type, struct expression *exp, struct value *arg1; struct value *arg2; struct type *type; + switch (op) { case UNOP_IND: @@ -1012,7 +1039,6 @@ java_class_name_from_physname (const char *physname) { char *ret = NULL; const char *end; - int depth = 0; char *demangled_name = java_demangle (physname, DMGL_PARAMS | DMGL_ANSI); if (demangled_name == NULL) @@ -1050,9 +1076,6 @@ const struct op_print java_op_print_tab[] = {"<", BINOP_LESS, PREC_ORDER, 0}, {">>", BINOP_RSH, PREC_SHIFT, 0}, {"<<", BINOP_LSH, PREC_SHIFT, 0}, -#if 0 - {">>>", BINOP_ ? ? ?, PREC_SHIFT, 0}, -#endif {"+", BINOP_ADD, PREC_ADD, 0}, {"-", BINOP_SUB, PREC_ADD, 0}, {"*", BINOP_MUL, PREC_MUL, 0}, @@ -1062,9 +1085,6 @@ const struct op_print java_op_print_tab[] = {"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0}, {"~", UNOP_COMPLEMENT, PREC_PREFIX, 0}, {"*", UNOP_IND, PREC_PREFIX, 0}, -#if 0 - {"instanceof", ? ? ?, ? ? ?, 0}, -#endif {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0}, {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0}, {NULL, 0, 0, 0} @@ -1121,6 +1141,7 @@ const struct exp_descriptor exp_descriptor_java = { print_subexp_standard, operator_length_standard, + operator_check_standard, op_name_standard, dump_subexp_body_standard, evaluate_subexp_java @@ -1203,6 +1224,11 @@ builtin_java_type (struct gdbarch *gdbarch) void _initialize_java_language (void) { + jv_dynamics_objfile_data_key + = register_objfile_data_with_cleanup (NULL, jv_per_objfile_free); + jv_type_objfile_data_key + = register_objfile_data_with_cleanup (NULL, jv_clear_object_type); + java_type_data = gdbarch_data_register_post_init (build_java_types); add_language (&java_language_defn); diff --git a/contrib/gdb-7/gdb/jv-lang.h b/contrib/gdb-7/gdb/jv-lang.h index 466927d09b..aad5743e3b 100644 --- a/contrib/gdb-7/gdb/jv-lang.h +++ b/contrib/gdb-7/gdb/jv-lang.h @@ -1,6 +1,6 @@ /* Java language support definitions for GDB, the GNU debugger. - Copyright (C) 1997, 1998, 1999, 2000, 2005, 2007, 2008, 2009 + Copyright (C) 1997, 1998, 1999, 2000, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -44,6 +44,7 @@ extern const struct builtin_java_type *builtin_java_type (struct gdbarch *); extern int java_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); extern int java_value_print (struct value *, struct ui_file *, @@ -68,7 +69,7 @@ extern struct type *java_lookup_class (char *); extern int is_object_type (struct type *); /* Defined in jv-typeprint.c */ -extern void java_print_type (struct type *, char *, struct ui_file *, int, +extern void java_print_type (struct type *, const char *, struct ui_file *, int, int); extern char *java_demangle_type_signature (char *); diff --git a/contrib/gdb-7/gdb/jv-typeprint.c b/contrib/gdb-7/gdb/jv-typeprint.c index 43995babac..0189ecf5e4 100644 --- a/contrib/gdb-7/gdb/jv-typeprint.c +++ b/contrib/gdb-7/gdb/jv-typeprint.c @@ -1,5 +1,5 @@ /* Support for printing Java types for GDB, the GNU debugger. - Copyright (C) 1997, 1998, 1999, 2000, 2007, 2008, 2009 + Copyright (C) 1997, 1998, 1999, 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -28,6 +28,7 @@ #include "typeprint.h" #include "c-lang.h" #include "cp-abi.h" +#include "gdb_assert.h" /* Local functions */ @@ -89,8 +90,8 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, int len; char *mangled_name; char *demangled_name; - QUIT; + QUIT; wrap_here (" "); if (type == NULL) @@ -121,6 +122,7 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, if (TYPE_TAG_NAME (type) != NULL && TYPE_TAG_NAME (type)[0] == '[') { /* array type */ char *name = java_demangle_type_signature (TYPE_TAG_NAME (type)); + fputs_filtered (name, stream); xfree (name); break; @@ -219,10 +221,19 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, for (j = 0; j < n_overloads; j++) { - char *physname; + char *real_physname, *physname, *p; int is_full_physname_constructor; - physname = TYPE_FN_FIELD_PHYSNAME (f, j); + real_physname = TYPE_FN_FIELD_PHYSNAME (f, j); + + /* The physname will contain the return type + after the final closing parenthesis. Strip it off. */ + p = strrchr (real_physname, ')'); + gdb_assert (p != NULL); + ++p; /* Keep the trailing ')'. */ + physname = alloca (p - real_physname + 1); + memcpy (physname, real_physname, p - real_physname); + physname[p - real_physname] = '\0'; is_full_physname_constructor = (is_constructor_name (physname) @@ -268,7 +279,7 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, /* Build something we can demangle. */ mangled_name = gdb_mangle_name (type, i, j); else - mangled_name = TYPE_FN_FIELD_PHYSNAME (f, j); + mangled_name = physname; demangled_name = cplus_demangle (mangled_name, @@ -321,8 +332,8 @@ extern void c_type_print_varspec_suffix (struct type *, struct ui_file *, int, int, int); void -java_print_type (struct type *type, char *varstring, struct ui_file *stream, - int show, int level) +java_print_type (struct type *type, const char *varstring, + struct ui_file *stream, int show, int level) { int demangled_args; diff --git a/contrib/gdb-7/gdb/jv-valprint.c b/contrib/gdb-7/gdb/jv-valprint.c index 08d2e6fb3d..1819b50323 100644 --- a/contrib/gdb-7/gdb/jv-valprint.c +++ b/contrib/gdb-7/gdb/jv-valprint.c @@ -1,7 +1,7 @@ /* Support for printing Java values for GDB, the GNU debugger. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -79,6 +79,7 @@ java_value_print (struct value *val, struct ui_file *stream, int reps; struct type *el_type = java_primitive_type_from_name (gdbarch, name, i - 2); + i = 0; read_memory (address + get_java_object_header_size (gdbarch), buf4, 4); @@ -258,6 +259,7 @@ static void java_print_value_fields (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { int i, len, n_baseclasses; @@ -301,7 +303,7 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr, base_valaddr = valaddr; java_print_value_fields (baseclass, base_valaddr, address + boffset, - stream, recurse + 1, options); + stream, recurse + 1, val, options); fputs_filtered (", ", stream); } @@ -319,6 +321,7 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr, if (field_is_static (&TYPE_FIELD (type, i))) { char *name = TYPE_FIELD_NAME (type, i); + if (!options->static_field_print) continue; if (name != NULL && strcmp (name, "class") == 0) @@ -390,6 +393,11 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr, { fputs_filtered ("", stream); } + else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i), + TYPE_FIELD_BITSIZE (type, i))) + { + fputs_filtered (_(""), stream); + } else { struct value_print_options opts; @@ -412,12 +420,14 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr, else if (field_is_static (&TYPE_FIELD (type, i))) { struct value *v = value_static_field (type, i); + if (v == NULL) fputs_filtered ("", stream); else { struct value_print_options opts; struct type *t = check_typedef (value_type (v)); + if (TYPE_CODE (t) == TYPE_CODE_STRUCT) v = value_addr (v); opts = *options; @@ -431,11 +441,12 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr, else { struct value_print_options opts = *options; + opts.deref_ref = 0; val_print (TYPE_FIELD_TYPE (type, i), valaddr + TYPE_FIELD_BITPOS (type, i) / 8, 0, address + TYPE_FIELD_BITPOS (type, i) / 8, - stream, recurse + 1, &opts, + stream, recurse + 1, val, &opts, current_language); } } @@ -462,6 +473,7 @@ int java_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { struct gdbarch *gdbarch = get_type_arch (type); @@ -522,6 +534,7 @@ java_val_print (struct type *type, const gdb_byte *valaddr, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr, type, &opts, 0, stream); @@ -537,12 +550,12 @@ java_val_print (struct type *type, const gdb_byte *valaddr, case TYPE_CODE_STRUCT: java_print_value_fields (type, valaddr, address, stream, recurse, - options); + val, options); break; default: return c_val_print (type, valaddr, embedded_offset, address, stream, - recurse, options); + recurse, val, options); } return 0; diff --git a/contrib/gdb-7/gdb/language.c b/contrib/gdb-7/gdb/language.c index 51a49f8ce3..3ce08b5b91 100644 --- a/contrib/gdb-7/gdb/language.c +++ b/contrib/gdb-7/gdb/language.c @@ -1,7 +1,8 @@ /* Multiple source language support for GDB. Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by the Department of Computer Science at the State University of New York at Buffalo. @@ -63,7 +64,7 @@ static void unk_lang_emit_char (int c, struct type *type, static void unk_lang_printchar (int c, struct type *type, struct ui_file *stream); -static void unk_lang_print_type (struct type *, char *, struct ui_file *, +static void unk_lang_print_type (struct type *, const char *, struct ui_file *, int, int); static int unk_lang_value_print (struct value *, struct ui_file *, @@ -485,6 +486,7 @@ binop_result_type (struct value *v1, struct value *v2) { case language_c: case language_cplus: + case language_d: case language_objc: if (TYPE_CODE (t1) == TYPE_CODE_FLT) return TYPE_CODE (t2) == TYPE_CODE_FLT && l2 > l1 ? @@ -596,6 +598,7 @@ integral_type (struct type *type) { case language_c: case language_cplus: + case language_d: case language_objc: return (TYPE_CODE (type) != TYPE_CODE_INT) && (TYPE_CODE (type) != TYPE_CODE_ENUM) ? 0 : 1; @@ -636,6 +639,7 @@ character_type (struct type *type) case language_c: case language_cplus: + case language_d: case language_objc: return (TYPE_CODE (type) == TYPE_CODE_INT) && TYPE_LENGTH (type) == sizeof (char) @@ -658,6 +662,7 @@ string_type (struct type *type) case language_c: case language_cplus: + case language_d: case language_objc: /* C does not have distinct string type. */ return (0); @@ -677,6 +682,7 @@ boolean_type (struct type *type) { case language_c: case language_cplus: + case language_d: case language_objc: /* Might be more cleanly handled by having a TYPE_CODE_INT_NOT_BOOL for (the deleted) CHILL and such @@ -696,6 +702,7 @@ float_type (struct type *type) CHECK_TYPEDEF (type); return TYPE_CODE (type) == TYPE_CODE_FLT; } +#endif /* Returns non-zero if the value is a pointer type */ int @@ -705,6 +712,7 @@ pointer_type (struct type *type) TYPE_CODE (type) == TYPE_CODE_REF; } +#if 0 /* Returns non-zero if the value is a structured type */ int structured_type (struct type *type) @@ -714,6 +722,7 @@ structured_type (struct type *type) { case language_c: case language_cplus: + case language_d: case language_objc: return (TYPE_CODE (type) == TYPE_CODE_STRUCT) || (TYPE_CODE (type) == TYPE_CODE_UNION) || @@ -764,8 +773,8 @@ void type_error (const char *string,...) { va_list args; - va_start (args, string); + va_start (args, string); switch (type_check) { case type_check_warn: @@ -790,8 +799,8 @@ void range_error (const char *string,...) { va_list args; - va_start (args, string); + va_start (args, string); switch (range_check) { case range_check_warn: @@ -972,6 +981,7 @@ skip_language_trampoline (struct frame_info *frame, CORE_ADDR pc) if (languages[i]->skip_trampoline) { CORE_ADDR real_pc = (languages[i]->skip_trampoline) (frame, pc); + if (real_pc) return real_pc; } @@ -1045,7 +1055,7 @@ default_print_array_index (struct value *index_value, struct ui_file *stream, void default_get_string (struct value *value, gdb_byte **buffer, int *length, - const char **charset) + struct type **char_type, const char **charset) { error (_("Getting a string is unsupported in this language.")); } @@ -1080,15 +1090,15 @@ unk_lang_printchar (int c, struct type *type, struct ui_file *stream) static void unk_lang_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, unsigned int length, - int force_ellipses, + const char *encoding, int force_ellipses, const struct value_print_options *options) { error (_("internal error - unimplemented function unk_lang_printstr called.")); } static void -unk_lang_print_type (struct type *type, char *varstring, struct ui_file *stream, - int show, int level) +unk_lang_print_type (struct type *type, const char *varstring, + struct ui_file *stream, int show, int level) { error (_("internal error - unimplemented function unk_lang_print_type called.")); } @@ -1097,6 +1107,7 @@ static int unk_lang_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { error (_("internal error - unimplemented function unk_lang_val_print called.")); @@ -1289,6 +1300,7 @@ language_string_char_type (const struct language_defn *la, { struct language_gdbarch *ld = gdbarch_data (gdbarch, language_gdbarch_data); + return ld->arch_info[la->la_language].string_char_type; } @@ -1302,11 +1314,13 @@ language_bool_type (const struct language_defn *la, if (ld->arch_info[la->la_language].bool_type_symbol) { struct symbol *sym; + sym = lookup_symbol (ld->arch_info[la->la_language].bool_type_symbol, NULL, VAR_DOMAIN, NULL); if (sym) { struct type *type = SYMBOL_TYPE (sym); + if (type && TYPE_CODE (type) == TYPE_CODE_BOOL) return type; } @@ -1323,6 +1337,7 @@ language_lookup_primitive_type_by_name (const struct language_defn *la, struct language_gdbarch *ld = gdbarch_data (gdbarch, language_gdbarch_data); struct type *const *p; + for (p = ld->arch_info[la->la_language].primitive_type_vector; (*p) != NULL; p++) diff --git a/contrib/gdb-7/gdb/language.h b/contrib/gdb-7/gdb/language.h index c650e07d41..aa0523b489 100644 --- a/contrib/gdb-7/gdb/language.h +++ b/contrib/gdb-7/gdb/language.h @@ -1,7 +1,7 @@ /* Source-language-related definitions for GDB. Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003, 2004, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by the Department of Computer Science at the State University of New York at Buffalo. @@ -190,7 +190,7 @@ struct language_defn void (*la_printstr) (struct ui_file * stream, struct type *elttype, const gdb_byte *string, unsigned int length, - int force_ellipses, + const char *encoding, int force_ellipses, const struct value_print_options *); void (*la_emitchar) (int ch, struct type *chtype, @@ -198,7 +198,7 @@ struct language_defn /* Print a type using syntax appropriate for this language. */ - void (*la_print_type) (struct type *, char *, struct ui_file *, int, + void (*la_print_type) (struct type *, const char *, struct ui_file *, int, int); /* Print a typedef using syntax appropriate for this language. @@ -208,11 +208,33 @@ struct language_defn void (*la_print_typedef) (struct type *type, struct symbol *new_symbol, struct ui_file *stream); - /* Print a value using syntax appropriate for this language. */ + /* Print a value using syntax appropriate for this language. + + TYPE is the type of the sub-object to be printed. - int (*la_val_print) (struct type *, const gdb_byte *, int, CORE_ADDR, - struct ui_file *, int, - const struct value_print_options *); + CONTENTS holds the bits of the value. This holds the entire + enclosing object. + + EMBEDDED_OFFSET is the offset into the outermost object of the + sub-object represented by TYPE. This is the object which this + call should print. Note that the enclosing type is not + available. + + ADDRESS is the address in the inferior of the enclosing object. + + STREAM is the stream on which the value is to be printed. + + RECURSE is the recursion depth. It is zero-based. + + OPTIONS are the formatting options to be used when + printing. */ + + int (*la_val_print) (struct type *type, + const gdb_byte *contents, + int embedded_offset, CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options); /* Print a top-level value using syntax appropriate for this language. */ @@ -237,7 +259,6 @@ struct language_defn variables. */ struct symbol *(*la_lookup_symbol_nonlocal) (const char *, - const char *, const struct block *, const domain_enum); @@ -294,7 +315,7 @@ struct language_defn Otherwise *LENGTH will include all characters - including any nulls. CHARSET will hold the encoding used in the string. */ void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length, - const char **charset); + struct type **chartype, const char **charset); /* Add fields above this point, so the magic number is always last. */ /* Magic number for compat checking */ @@ -361,9 +382,9 @@ struct type *language_lookup_primitive_type_by_name (const struct language_defn /* "cast" really means conversion */ /* FIXME -- should be a setting in language_defn */ -#define CAST_IS_CONVERSION (current_language->la_language == language_c || \ - current_language->la_language == language_cplus || \ - current_language->la_language == language_objc) +#define CAST_IS_CONVERSION(LANG) ((LANG)->la_language == language_c || \ + (LANG)->la_language == language_cplus || \ + (LANG)->la_language == language_objc) extern void language_info (int); @@ -381,21 +402,21 @@ extern enum language set_language (enum language); #define LA_PRINT_TYPEDEF(type,new_symbol,stream) \ (current_language->la_print_typedef(type,new_symbol,stream)) -#define LA_VAL_PRINT(type,valaddr,offset,addr,stream,recurse,options) \ +#define LA_VAL_PRINT(type,valaddr,offset,addr,stream,val,recurse,options) \ (current_language->la_val_print(type,valaddr,offset,addr,stream, \ - recurse,options)) + val,recurse,options)) #define LA_VALUE_PRINT(val,stream,options) \ (current_language->la_value_print(val,stream,options)) #define LA_PRINT_CHAR(ch, type, stream) \ (current_language->la_printchar(ch, type, stream)) -#define LA_PRINT_STRING(stream, elttype, string, length, force_ellipses,options) \ +#define LA_PRINT_STRING(stream, elttype, string, length, encoding, force_ellipses,options) \ (current_language->la_printstr(stream, elttype, string, length, \ - force_ellipses,options)) + encoding, force_ellipses,options)) #define LA_EMIT_CHAR(ch, type, stream, quoter) \ (current_language->la_emitchar(ch, type, stream, quoter)) -#define LA_GET_STRING(value, buffer, length, encoding) \ - (current_language->la_get_string(value, buffer, length, encoding)) +#define LA_GET_STRING(value, buffer, length, chartype, encoding) \ + (current_language->la_get_string(value, buffer, length, chartype, encoding)) #define LA_PRINT_ARRAY_INDEX(index_value, stream, optins) \ (current_language->la_print_array_index(index_value, stream, options)) @@ -441,9 +462,9 @@ extern void binop_type_check (struct value *, struct value *, int); /* Error messages */ -extern void type_error (const char *, ...) ATTR_FORMAT (printf, 1, 2); +extern void type_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2); -extern void range_error (const char *, ...) ATTR_FORMAT (printf, 1, 2); +extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2); /* Data: Does this value represent "truth" to the current language? */ @@ -497,9 +518,9 @@ void default_print_typedef (struct type *type, struct symbol *new_symbol, struct ui_file *stream); void default_get_string (struct value *value, gdb_byte **buffer, int *length, - const char **charset); + struct type **char_type, const char **charset); void c_get_string (struct value *value, gdb_byte **buffer, int *length, - const char **charset); + struct type **char_type, const char **charset); #endif /* defined (LANGUAGE_H) */ diff --git a/contrib/gdb-7/gdb/linespec.c b/contrib/gdb-7/gdb/linespec.c index 3e943a18e7..378c6c940c 100644 --- a/contrib/gdb-7/gdb/linespec.c +++ b/contrib/gdb-7/gdb/linespec.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -30,6 +30,7 @@ #include "value.h" #include "completer.h" #include "cp-abi.h" +#include "cp-support.h" #include "parser-defs.h" #include "block.h" #include "objc-lang.h" @@ -39,6 +40,7 @@ #include "interps.h" #include "mi/mi-cmds.h" #include "target.h" +#include "arch-utils.h" /* We share this one with symtab.c, but it is not exported widely. */ @@ -49,8 +51,6 @@ extern char *operator_chars (char *, char **); static void initialize_defaults (struct symtab **default_symtab, int *default_line); -static void set_flags (char *arg, int *is_quoted, char **paren_pointer); - static struct symtabs_and_lines decode_indirect (char **argptr); static char *locate_first_half (char **argptr, int *is_quote_enclosed); @@ -78,9 +78,8 @@ static struct symtabs_and_lines find_method (int funfirstline, struct symbol *sym_class, int *not_found_ptr); -static NORETURN void cplusplus_error (const char *name, - const char *fmt, ...) - ATTR_NORETURN ATTR_FORMAT (printf, 2, 3); +static void cplusplus_error (const char *name, const char *fmt, ...) + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 3); static int total_number_of_methods (struct type *type); @@ -146,16 +145,18 @@ symtabs_and_lines minsym_found (int funfirstline, single quoted demangled C++ symbols as part of the completion error. */ -static NORETURN void +static void cplusplus_error (const char *name, const char *fmt, ...) { struct ui_file *tmp_stream; char *message; + tmp_stream = mem_fileopen (); make_cleanup_ui_file_delete (tmp_stream); { va_list args; + va_start (args, fmt); vfprintf_unfiltered (tmp_stream, fmt, args); va_end (args); @@ -185,7 +186,7 @@ total_number_of_methods (struct type *type) int count; CHECK_TYPEDEF (type); - if (TYPE_CPLUS_SPECIFIC (type) == NULL) + if (! HAVE_CPLUS_STRUCT (type)) return 0; count = TYPE_NFN_FIELDS_TOTAL (type); @@ -627,6 +628,37 @@ See set/show multiple-symbol.")); discard_cleanups (old_chain); return return_values; } + +/* A helper function for decode_line_1 and friends which skips P + past any method overload information at the beginning of P, e.g., + "(const struct foo *)". + + This function assumes that P has already been validated to contain + overload information, and it will assert if *P != '('. */ +static char * +find_method_overload_end (char *p) +{ + int depth = 0; + + gdb_assert (*p == '('); + + while (*p) + { + if (*p == '(') + ++depth; + else if (*p == ')') + { + if (--depth == 0) + { + ++p; + break; + } + } + ++p; + } + + return p; +} /* The parser of linespec itself. */ @@ -687,16 +719,17 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, struct symtab *file_symtab = NULL; char *copy; - /* This is NULL if there are no parens in *ARGPTR, or a pointer to - the closing parenthesis if there are parens. */ - char *paren_pointer; /* This says whether or not something in *ARGPTR is quoted with completer_quotes (i.e. with single quotes). */ int is_quoted; - /* Is part of *ARGPTR is enclosed in double quotes? */ + /* Is *ARGPTR is enclosed in double quotes? */ int is_quote_enclosed; int is_objc_method = 0; char *saved_arg = *argptr; + /* If IS_QUOTED, the end of the quoted bit. */ + char *end_quote = NULL; + /* The "first half" of the linespec. */ + char *first_half; if (not_found_ptr) *not_found_ptr = 0; @@ -710,12 +743,11 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, if (**argptr == '*') return decode_indirect (argptr); - /* Set various flags. 'paren_pointer' is important for overload - checking, where we allow things like: - (gdb) break c::f(int) - */ - - set_flags (*argptr, &is_quoted, &paren_pointer); + is_quoted = (*argptr + && strchr (get_gdb_completer_quote_characters (), + **argptr) != NULL); + if (is_quoted) + end_quote = skip_quoted (*argptr); /* Check to see if it's a multipart linespec (with colons or periods). */ @@ -726,20 +758,18 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, will point to "". If this is a C++ name, like "A::B::foo", p will point to "::B::foo". Argptr is not changed by this call. */ - p = locate_first_half (argptr, &is_quote_enclosed); + first_half = p = locate_first_half (argptr, &is_quote_enclosed); /* Check if this is an Objective-C method (anything that starts with a '+' or '-' and a '['). */ if (is_objc_method_format (p)) - { - is_objc_method = 1; - paren_pointer = NULL; /* Just a category name. Ignore it. */ - } + is_objc_method = 1; /* Check if the symbol could be an Objective-C selector. */ { struct symtabs_and_lines values; + values = decode_objc (argptr, funfirstline, NULL, canonical, saved_arg); if (values.sals != NULL) @@ -748,11 +778,8 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, /* Does it look like there actually were two parts? */ - if ((p[0] == ':' || p[0] == '.') && paren_pointer == NULL) + if (p[0] == ':' || p[0] == '.') { - if (is_quoted) - *argptr = *argptr + 1; - /* Is it a C++ or Java compound data structure? The check on p[1] == ':' is capturing the case of "::", since p[0]==':' was checked above. @@ -761,52 +788,49 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, can return now. */ if (p[0] == '.' || p[1] == ':') - return decode_compound (argptr, funfirstline, canonical, - saved_arg, p, not_found_ptr); + { + struct symtabs_and_lines values; + + if (is_quote_enclosed) + ++saved_arg; + values = decode_compound (argptr, funfirstline, canonical, + saved_arg, p, not_found_ptr); + if (is_quoted && **argptr == '\'') + *argptr = *argptr + 1; + return values; + } /* No, the first part is a filename; set file_symtab to be that file's symtab. Also, move argptr past the filename. */ - file_symtab = symtab_from_filename (argptr, p, is_quote_enclosed, - not_found_ptr); - } -#if 0 - /* No one really seems to know why this was added. It certainly - breaks the command line, though, whenever the passed - name is of the form ClassName::Method. This bit of code - singles out the class name, and if funfirstline is set (for - example, you are setting a breakpoint at this function), - you get an error. This did not occur with earlier - verions, so I am ifdef'ing this out. 3/29/99 */ - else - { - /* Check if what we have till now is a symbol name */ - - /* We may be looking at a template instantiation such - as "foo". Check here whether we know about it, - instead of falling through to the code below which - handles ordinary function names, because that code - doesn't like seeing '<' and '>' in a name -- the - skip_quoted call doesn't go past them. So see if we - can figure it out right now. */ + file_symtab = symtab_from_filename (argptr, p, is_quote_enclosed, + not_found_ptr); - copy = (char *) alloca (p - *argptr + 1); - memcpy (copy, *argptr, p - *argptr); - copy[p - *argptr] = '\000'; - sym = lookup_symbol (copy, 0, VAR_DOMAIN, 0); - if (sym) + /* Check for single quotes on the non-filename part. */ + if (!is_quoted) { - *argptr = (*p == '\'') ? p + 1 : p; - return symbol_found (funfirstline, canonical, copy, sym, NULL); + is_quoted = (**argptr + && strchr (get_gdb_completer_quote_characters (), + **argptr) != NULL); + if (is_quoted) + end_quote = skip_quoted (*argptr); } - /* Otherwise fall out from here and go to file/line spec - processing, etc. */ } -#endif /* file_symtab is specified file's symtab, or 0 if no file specified. arg no longer contains the file name. */ + /* If the filename was quoted, we must re-check the quotation. */ + + if (end_quote == first_half && *end_quote!= '\0') + { + is_quoted = (**argptr + && strchr (get_gdb_completer_quote_characters (), + **argptr) != NULL); + if (is_quoted) + end_quote = skip_quoted (*argptr); + } + /* Check whether arg is all digits (and sign). */ q = *argptr; @@ -828,7 +852,7 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, p = skip_quoted (*argptr + (((*argptr)[1] == '$') ? 2 : 1)); else if (is_quoted) { - p = skip_quoted (*argptr); + p = end_quote; if (p[-1] != '\'') error (_("Unmatched single quote.")); } @@ -837,10 +861,6 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, /* allow word separators in method names for Obj-C */ p = skip_quoted_chars (*argptr, NULL, ""); } - else if (paren_pointer != NULL) - { - p = paren_pointer + 1; - } else { p = skip_quoted (*argptr); @@ -850,6 +870,14 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, if (*p == '<') p = find_template_name_end (p); + /* Keep method overload information. */ + if (*p == '(') + p = find_method_overload_end (p); + + /* Make sure we keep important kewords like "const" */ + if (strncmp (p, " const", 6) == 0) + p += 6; + copy = (char *) alloca (p - *argptr + 1); memcpy (copy, *argptr, p - *argptr); copy[p - *argptr] = '\0'; @@ -861,6 +889,8 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, copy[p - *argptr - 1] = '\0'; copy++; } + else if (is_quoted) + copy[p - *argptr - 1] = '\0'; while (*p == ' ' || *p == '\t') p++; *argptr = p; @@ -895,10 +925,9 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab, function is passed ARGPTR as an argument, it modifies what ARGPTR points to; typically, it advances *ARGPTR past whatever substring it has just looked at. (If it doesn't modify *ARGPTR, then the - function gets passed *ARGPTR instead, which is then called ARG: see - set_flags, for example.) Also, functions that return a struct - symtabs_and_lines may modify CANONICAL, as in the description of - decode_line_1. + function gets passed *ARGPTR instead, which is then called ARG.) + Also, functions that return a struct symtabs_and_lines may modify + CANONICAL, as in the description of decode_line_1. If a function returns a struct symtabs_and_lines, then that struct will immediately make its way up the call chain to be returned by @@ -925,44 +954,6 @@ initialize_defaults (struct symtab **default_symtab, int *default_line) } } -static void -set_flags (char *arg, int *is_quoted, char **paren_pointer) -{ - char *ii; - int has_if = 0; - - /* 'has_if' is for the syntax: - (gdb) break foo if (a==b) - */ - if ((ii = strstr (arg, " if ")) != NULL || - (ii = strstr (arg, "\tif ")) != NULL || - (ii = strstr (arg, " if\t")) != NULL || - (ii = strstr (arg, "\tif\t")) != NULL || - (ii = strstr (arg, " if(")) != NULL || - (ii = strstr (arg, "\tif( ")) != NULL) - has_if = 1; - /* Temporarily zap out "if (condition)" to not confuse the - parenthesis-checking code below. This is undone below. Do not - change ii!! */ - if (has_if) - { - *ii = '\0'; - } - - *is_quoted = (*arg - && strchr (get_gdb_completer_quote_characters (), - *arg) != NULL); - - *paren_pointer = strchr (arg, '('); - if (*paren_pointer != NULL) - *paren_pointer = strrchr (*paren_pointer, ')'); - - /* Now that we're safely past the paren_pointer check, put back " if - (condition)" so outer layers can see it. */ - if (has_if) - *ii = ' '; -} - /* Decode arg of the form *PC. */ @@ -1033,12 +1024,20 @@ locate_first_half (char **argptr, int *is_quote_enclosed) p++; } else - *is_quote_enclosed = 0; + { + *is_quote_enclosed = 0; + if (strchr (get_gdb_completer_quote_characters (), *p)) + { + ++(*argptr); + ++p; + } + } for (; *p; p++) { if (p[0] == '<') { char *temp_end = find_template_name_end (p); + if (!temp_end) error (_("malformed template specification in command")); p = temp_end; @@ -1062,8 +1061,9 @@ locate_first_half (char **argptr, int *is_quote_enclosed) if (p[0] == '.' && strchr (p, ':') == NULL) { /* Java qualified method. Find the *last* '.', since the - others are package qualifiers. */ - for (p1 = p; *p1; p1++) + others are package qualifiers. Stop at any open parenthesis + which might provide overload information. */ + for (p1 = p; *p1 && *p1 != '('; p1++) { if (*p1 == '.') p = p1; @@ -1078,6 +1078,7 @@ locate_first_half (char **argptr, int *is_quote_enclosed) if (*is_quote_enclosed) { char *closing_quote = strchr (p - 1, '"'); + if (closing_quote && closing_quote[1] == '\0') *closing_quote = '\0'; } @@ -1171,11 +1172,19 @@ decode_objc (char **argptr, int funfirstline, struct symtab *file_symtab, } else { - /* The only match was a non-debuggable symbol. */ - values.sals[0].symtab = NULL; - values.sals[0].line = 0; - values.sals[0].end = 0; - values.sals[0].pc = SYMBOL_VALUE_ADDRESS (sym_arr[0]); + /* The only match was a non-debuggable symbol, which might point + to a function descriptor; resolve it to the actual code address + instead. */ + struct minimal_symbol *msymbol = (struct minimal_symbol *)sym_arr[0]; + struct objfile *objfile = msymbol_objfile (msymbol); + struct gdbarch *gdbarch = get_objfile_arch (objfile); + CORE_ADDR pc = SYMBOL_VALUE_ADDRESS (msymbol); + + pc = gdbarch_convert_from_func_ptr_addr (gdbarch, pc, + ¤t_target); + + init_sal (&values.sals[0]); + values.sals[0].pc = pc; } return values; } @@ -1205,8 +1214,8 @@ decode_compound (char **argptr, int funfirstline, char ***canonical, struct symbol *sym; char *copy; struct symbol *sym_class; - struct symbol **sym_arr; struct type *t; + char *saved_java_argptr = NULL; /* First check for "global" namespace specification, of the form "::foo". If found, skip over the colons and jump to normal @@ -1255,8 +1264,12 @@ decode_compound (char **argptr, int funfirstline, char ***canonical, /* PASS2: p2->"::fun", p->":fun" */ /* Move pointer ahead to next double-colon. */ - while (*p && (p[0] != ' ') && (p[0] != '\t') && (p[0] != '\'')) + while (*p && (p[0] != ' ') && (p[0] != '\t') && (p[0] != '\'') + && (*p != '(')) { + if (current_language->la_language == language_cplus) + p += cp_validate_operator (p); + if (p[0] == '<') { temp_end = find_template_name_end (p); @@ -1330,10 +1343,59 @@ decode_compound (char **argptr, int funfirstline, char ***canonical, else { /* At this point argptr->"fun". */ + char *a; + p = *argptr; - while (*p && *p != ' ' && *p != '\t' && *p != ',' && *p != ':') + while (*p && *p != ' ' && *p != '\t' && *p != ',' && *p != ':' + && *p != '(') p++; /* At this point p->"". String ended. */ + /* Nope, C++ operators could have spaces in them + ("foo::operator <" or "foo::operator delete []"). + I apologize, this is a bit hacky... */ + if (current_language->la_language == language_cplus + && *p == ' ' && p - 8 - *argptr + 1 > 0) + { + /* The above loop has already swallowed "operator". */ + p += cp_validate_operator (p - 8) - 8; + } + + /* Keep any template parameters */ + if (*p == '<') + p = find_template_name_end (p); + + /* Keep method overload information. */ + a = strchr (p, '('); + if (a != NULL) + p = find_method_overload_end (a); + + /* Make sure we keep important kewords like "const" */ + if (strncmp (p, " const", 6) == 0) + p += 6; + + /* Java may append typenames, so assume that if there is + anything else left in *argptr, it must be a typename. */ + if (*p && current_language->la_language == language_java) + { + struct type *type; + + p2 = p; + while (*p2) + ++p2; + copy = (char *) alloca (p2 - p + 1); + memcpy (copy, p, p2 - p); + copy[p2 - p] = '\0'; + type = lookup_typename (current_language, get_current_arch (), + copy, NULL, 1); + if (type != NULL) + { + /* Save the location of this just in case this + method/type combination isn't actually defined. + It will be checked later. */ + saved_java_argptr = p; + p = p2; + } + } } /* Allocate our own copy of the substring between argptr and @@ -1362,9 +1424,26 @@ decode_compound (char **argptr, int funfirstline, char ***canonical, here, we return. If not, and we are at the and of the string, we'll lookup the whole string in the symbol tables. */ - return find_method (funfirstline, canonical, saved_arg, - copy, t, sym_class, not_found_ptr); - + values = find_method (funfirstline, canonical, saved_arg, + copy, t, sym_class, not_found_ptr); + if (saved_java_argptr != NULL && values.nelts == 1) + { + /* The user specified a specific return type for a java method. + Double-check that it really is the one the user specified. + [This is a necessary evil because strcmp_iw_ordered stops + comparisons too prematurely.] */ + sym = find_pc_sect_function (values.sals[0].pc, + values.sals[0].section); + /* We just found a SAL, we had better be able to go backwards! */ + gdb_assert (sym != NULL); + if (strcmp_iw (SYMBOL_LINKAGE_NAME (sym), saved_arg) != 0) + { + xfree (values.sals); + error (_("the class `%s' does not have any method instance named %s\n"), + SYMBOL_PRINT_NAME (sym_class), copy); + } + } + return values; } /* End if symbol found */ @@ -1407,6 +1486,7 @@ lookup_prefix_sym (char **argptr, char *p) { char *p1; char *copy; + struct symbol *sym; /* Extract the class name. */ p1 = p; @@ -1425,7 +1505,28 @@ lookup_prefix_sym (char **argptr, char *p) /* At this point p1->"::inA::fun", p->"inA::fun" copy->"AAA", argptr->"inA::fun" */ - return lookup_symbol (copy, 0, STRUCT_DOMAIN, 0); + sym = lookup_symbol (copy, 0, STRUCT_DOMAIN, 0); + if (sym == NULL) + { + /* Typedefs are in VAR_DOMAIN so the above symbol lookup will + fail when the user attempts to lookup a method of a class + via a typedef'd name (NOT via the class's name, which is already + handled in symbol_matches_domain). So try the lookup again + using VAR_DOMAIN (where typedefs live) and double-check that we + found a struct/class type. */ + struct symbol *s = lookup_symbol (copy, 0, VAR_DOMAIN, 0); + + if (s != NULL) + { + struct type *t = SYMBOL_TYPE (s); + + CHECK_TYPEDEF (t); + if (TYPE_CODE (t) == TYPE_CODE_STRUCT) + return s; + } + } + + return sym; } /* This finds the method COPY in the class whose type is T and whose @@ -1468,32 +1569,55 @@ find_method (int funfirstline, char ***canonical, char *saved_arg, } if (i1 > 0) { - /* There is more than one field with that name - (overloaded). Ask the user which one to use. */ + /* If we were given a specific overload instance, use that + (or error if no matches were found). Otherwise ask the user + which one to use. */ + if (strchr (saved_arg, '(') != NULL) + { + int i; + + for (i = 0; i < i1; ++i) + { + char *name = saved_arg; + char *canon = cp_canonicalize_string (name); + + if (canon != NULL) + name = canon; + + if (strcmp_iw (name, SYMBOL_LINKAGE_NAME (sym_arr[i])) == 0) + { + values.sals = (struct symtab_and_line *) + xmalloc (sizeof (struct symtab_and_line)); + values.nelts = 1; + values.sals[0] = find_function_start_sal (sym_arr[i], + funfirstline); + if (canon) + xfree (canon); + return values; + } + + if (canon) + xfree (canon); + } + + error (_("the class `%s' does not have any method instance named %s\n"), + SYMBOL_PRINT_NAME (sym_class), copy); + } + return decode_line_2 (sym_arr, i1, funfirstline, canonical); } else { - char *tmp; - - if (is_operator_name (copy)) - { - tmp = (char *) alloca (strlen (copy + 3) + 9); - strcpy (tmp, "operator "); - strcat (tmp, copy + 3); - } - else - tmp = copy; if (not_found_ptr) *not_found_ptr = 1; - if (tmp[0] == '~') + if (copy[0] == '~') cplusplus_error (saved_arg, "the class `%s' does not have destructor defined\n", SYMBOL_PRINT_NAME (sym_class)); else cplusplus_error (saved_arg, "the class %s does not have any method named %s\n", - SYMBOL_PRINT_NAME (sym_class), tmp); + SYMBOL_PRINT_NAME (sym_class), copy); } } @@ -1521,7 +1645,8 @@ symtab_from_filename (char **argptr, char *p, int is_quote_enclosed, copy = (char *) alloca (p - *argptr + 1); memcpy (copy, *argptr, p - *argptr); /* It may have the ending quote right after the file name. */ - if (is_quote_enclosed && copy[p - *argptr - 1] == '"') + if ((is_quote_enclosed && copy[p - *argptr - 1] == '"') + || copy[p - *argptr - 1] == '\'') copy[p - *argptr - 1] = 0; else copy[p - *argptr] = 0; @@ -1573,6 +1698,8 @@ decode_all_digits (char **argptr, struct symtab *default_symtab, init_sal (&val); + val.pspace = current_program_space; + /* This is where we need to make sure that we have good defaults. We must guarantee that this section of code is never executed when we are called with just a function name, since @@ -1624,6 +1751,7 @@ decode_all_digits (char **argptr, struct symtab *default_symtab, if (val.symtab == 0) val.symtab = file_symtab; + val.pspace = SYMTAB_PSPACE (val.symtab); val.pc = 0; values.sals = (struct symtab_and_line *) xmalloc (sizeof (struct symtab_and_line)); @@ -1659,6 +1787,7 @@ decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab, { /* We have a value history reference. */ struct value *val_history; + sscanf ((copy[1] == '$') ? copy + 2 : copy + 1, "%d", &index); val_history = access_value_history ((copy[1] == '$') ? -index : index); if (TYPE_CODE (value_type (val_history)) != TYPE_CODE_INT) @@ -1695,6 +1824,7 @@ decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab, val.symtab = file_symtab ? file_symtab : default_symtab; val.line = valx; val.pc = 0; + val.pspace = current_program_space; values.sals = (struct symtab_and_line *) xmalloc (sizeof val); values.sals[0] = val; @@ -1718,7 +1848,6 @@ decode_variable (char *copy, int funfirstline, char ***canonical, struct symtab *file_symtab, int *not_found_ptr) { struct symbol *sym; - struct minimal_symbol *msymbol; sym = lookup_symbol (copy, @@ -1780,7 +1909,8 @@ symbol_found (int funfirstline, char ***canonical, char *copy, { struct blockvector *bv = BLOCKVECTOR (SYMBOL_SYMTAB (sym)); struct block *b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK); - if (lookup_block_symbol (b, copy, NULL, VAR_DOMAIN) != NULL) + + if (lookup_block_symbol (b, copy, VAR_DOMAIN) != NULL) build_canonical_line_spec (values.sals, copy, canonical); } return values; @@ -1836,26 +1966,7 @@ minsym_found (int funfirstline, struct minimal_symbol *msymbol) values.sals[0] = find_pc_sect_line (pc, NULL, 0); if (funfirstline) - { - struct symtab_and_line sal; - - values.sals[0].pc = find_function_start_pc (gdbarch, - values.sals[0].pc, - values.sals[0].section); - - sal = find_pc_sect_line (values.sals[0].pc, values.sals[0].section, 0); - - /* Check if SKIP_PROLOGUE left us in mid-line, and the next - line is still part of the same function. If there is no - line information here, sal.pc will be the passed in PC. */ - if (sal.pc != values.sals[0].pc - && (lookup_minimal_symbol_by_pc_section (values.sals[0].pc, - values.sals[0].section) - == lookup_minimal_symbol_by_pc_section (sal.end, - values.sals[0].section))) - /* Recalculate the line number (might not be N+1). */ - values.sals[0] = find_pc_sect_line (sal.end, values.sals[0].section, 0); - } + skip_prologue_sal (&values.sals[0]); values.nelts = 1; return values; diff --git a/contrib/gdb-7/gdb/linespec.h b/contrib/gdb-7/gdb/linespec.h index 8ac6ea7416..161f7d04dc 100644 --- a/contrib/gdb-7/gdb/linespec.h +++ b/contrib/gdb-7/gdb/linespec.h @@ -1,5 +1,5 @@ /* Header for GDB line completion. - Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/contrib/gdb-7/gdb/m2-exp.y b/contrib/gdb-7/gdb/m2-exp.y index 6c387aca30..3baff791ee 100644 --- a/contrib/gdb-7/gdb/m2-exp.y +++ b/contrib/gdb-7/gdb/m2-exp.y @@ -1,6 +1,6 @@ /* YACC grammar for Modula-2 expressions, for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, - 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Generated from expread.y (now c-exp.y) and contributed by the Department of Computer Science at the State University of New York at Buffalo, 1991. @@ -651,22 +651,6 @@ type %% -#if 0 /* FIXME! */ -int -overflow(a,b) - long a,b; -{ - return (MAX_OF_TYPE(parse_m2_type->builtin_int) - b) < a; -} - -int -uoverflow(a,b) - unsigned long a,b; -{ - return (MAX_OF_TYPE(parse_m2_type->builtin_card) - b) < a; -} -#endif /* FIXME */ - /* Take care of parsing a number (anything that starts with a digit). Set yylval and return the token type; update lexptr. LEN is the number of characters in it. */ @@ -1022,7 +1006,7 @@ yylex () char *tmp = copy_name (yylval.sval); struct symbol *sym; - if (lookup_partial_symtab (tmp)) + if (lookup_symtab (tmp)) return BLOCKNAME; sym = lookup_symbol (tmp, expression_context_block, VAR_DOMAIN, 0); if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK) diff --git a/contrib/gdb-7/gdb/m2-lang.c b/contrib/gdb-7/gdb/m2-lang.c index 88c7e5e642..ade52d9852 100644 --- a/contrib/gdb-7/gdb/m2-lang.c +++ b/contrib/gdb-7/gdb/m2-lang.c @@ -1,7 +1,7 @@ /* Modula 2 language support routines for GDB, the GNU debugger. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2002, 2003, 2004, - 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -104,14 +104,13 @@ m2_printchar (int c, struct type *type, struct ui_file *stream) static void m2_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, - unsigned int length, int force_ellipses, + unsigned int length, const char *encoding, int force_ellipses, const struct value_print_options *options) { unsigned int i; unsigned int things_printed = 0; int in_quotes = 0; int need_comma = 0; - int width = TYPE_LENGTH (type); if (length == 0) { @@ -195,6 +194,7 @@ evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp, struct value *arg1; struct value *arg2; struct type *type; + switch (op) { case UNOP_HIGH: @@ -211,6 +211,7 @@ evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp, if (m2_is_unbounded_array (type)) { struct value *temp = arg1; + type = TYPE_FIELD_TYPE (type, 1); /* i18n: Do not translate the "_m2_high" part! */ arg1 = value_struct_elt (&temp, NULL, "_m2_high", NULL, @@ -240,10 +241,11 @@ evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp, { struct value *temp = arg1; type = TYPE_FIELD_TYPE (type, 0); - if (type == NULL || (TYPE_CODE (type) != TYPE_CODE_PTR)) { - warning (_("internal error: unbounded array structure is unknown")); - return evaluate_subexp_standard (expect_type, exp, pos, noside); - } + if (type == NULL || (TYPE_CODE (type) != TYPE_CODE_PTR)) + { + warning (_("internal error: unbounded array structure is unknown")); + return evaluate_subexp_standard (expect_type, exp, pos, noside); + } /* i18n: Do not translate the "_m2_contents" part! */ arg1 = value_struct_elt (&temp, NULL, "_m2_contents", NULL, _("unbounded structure " @@ -356,6 +358,7 @@ const struct exp_descriptor exp_descriptor_modula2 = { print_subexp_standard, operator_length_standard, + operator_check_standard, op_name_standard, dump_subexp_body_standard, evaluate_subexp_modula2 diff --git a/contrib/gdb-7/gdb/m2-lang.h b/contrib/gdb-7/gdb/m2-lang.h index 05e70a88ca..87df81c3f0 100644 --- a/contrib/gdb-7/gdb/m2-lang.h +++ b/contrib/gdb-7/gdb/m2-lang.h @@ -1,6 +1,6 @@ /* Modula 2 language support definitions for GDB, the GNU debugger. - Copyright (C) 1992, 1998, 2000, 2005, 2007, 2008, 2009 + Copyright (C) 1992, 1998, 2000, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -23,7 +23,7 @@ extern int m2_parse (void); /* Defined in m2-exp.y */ extern void m2_error (char *); /* Defined in m2-exp.y */ /* Defined in m2-typeprint.c */ -extern void m2_print_type (struct type *, char *, struct ui_file *, int, +extern void m2_print_type (struct type *, const char *, struct ui_file *, int, int); extern void m2_print_typedef (struct type *, struct symbol *, @@ -34,6 +34,7 @@ extern int m2_is_unbounded_array (struct type *type); extern int m2_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); extern int get_long_set_bounds (struct type *type, LONGEST *low, diff --git a/contrib/gdb-7/gdb/m2-typeprint.c b/contrib/gdb-7/gdb/m2-typeprint.c index 8c5d6b4c59..592df37827 100644 --- a/contrib/gdb-7/gdb/m2-typeprint.c +++ b/contrib/gdb-7/gdb/m2-typeprint.c @@ -1,6 +1,6 @@ /* Support for printing Modula 2 types for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1995, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -67,11 +67,10 @@ int m2_is_unbounded_array (struct type *type); void -m2_print_type (struct type *type, char *varstring, struct ui_file *stream, +m2_print_type (struct type *type, const char *varstring, struct ui_file *stream, int show, int level) { enum type_code code; - int demangled_args; CHECK_TYPEDEF (type); @@ -146,9 +145,6 @@ m2_print_type (struct type *type, char *varstring, struct ui_file *stream, m2_range (type, stream, show, level); break; - case TYPE_CODE_TEMPLATE: - break; - default: m2_type_name (type, stream); break; @@ -427,8 +423,6 @@ m2_is_long_set_of_type (struct type *type, struct type **of_type) static int m2_long_set (struct type *type, struct ui_file *stream, int show, int level) { - struct type *index_type; - struct type *range_type; struct type *of_type; int i; int len = TYPE_NFIELDS (type); @@ -547,9 +541,9 @@ m2_record_fields (struct type *type, struct ui_file *stream, int show, wrap_here (" "); if (show < 0) { - if (TYPE_CODE (type) == DECLARED_TYPE_STRUCT) + if (TYPE_CODE (type) == TYPE_CODE_STRUCT) fprintf_filtered (stream, "RECORD ... END "); - else if (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_UNION) + else if (TYPE_CODE (type) == TYPE_CODE_UNION) fprintf_filtered (stream, "CASE ... END "); } else if (show > 0) diff --git a/contrib/gdb-7/gdb/m2-valprint.c b/contrib/gdb-7/gdb/m2-valprint.c index 657eff702a..e27ce8c1a2 100644 --- a/contrib/gdb-7/gdb/m2-valprint.c +++ b/contrib/gdb-7/gdb/m2-valprint.c @@ -1,7 +1,7 @@ /* Support for printing Modula 2 values for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1996, 1998, 2000, 2005, 2006, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -38,6 +38,7 @@ static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, int len); @@ -202,7 +203,7 @@ m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr, fprintf_filtered (stream, "{"); m2_print_array_contents (value_type (val), value_contents(val), value_embedded_offset (val), addr, stream, - recurse, options, len); + recurse, NULL, options, len); fprintf_filtered (stream, ", HIGH = %d}", (int) len); } @@ -259,6 +260,7 @@ print_variable_at_address (struct type *type, { struct value *deref_val = value_at (TYPE_TARGET_TYPE (type), unpack_pointer (type, valaddr)); + common_val_print (deref_val, stream, recurse, options, current_language); } else @@ -276,6 +278,7 @@ static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, int len) { @@ -298,7 +301,8 @@ m2_print_array_contents (struct type *type, const gdb_byte *valaddr, { fprintf_filtered (stream, "{"); val_print_array_elements (type, valaddr + embedded_offset, - address, stream, recurse, options, 0); + address, stream, recurse, val, + options, 0); fprintf_filtered (stream, "}"); } } @@ -315,6 +319,7 @@ m2_print_array_contents (struct type *type, const gdb_byte *valaddr, int m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *original_value, const struct value_print_options *options) { struct gdbarch *gdbarch = get_type_arch (type); @@ -322,8 +327,6 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, unsigned len; struct type *elttype; unsigned eltlen; - int length_pos, length_size, string_pos; - int char_size; LONGEST val; CORE_ADDR addr; @@ -360,15 +363,16 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, } LA_PRINT_STRING (stream, TYPE_TARGET_TYPE (type), - valaddr + embedded_offset, len, 0, - options); + valaddr + embedded_offset, len, NULL, + 0, options); i = len; } else { fprintf_filtered (stream, "{"); val_print_array_elements (type, valaddr + embedded_offset, - address, stream, recurse, options, 0); + address, stream, recurse, original_value, + options, 0); fprintf_filtered (stream, "}"); } break; @@ -397,6 +401,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, { CORE_ADDR addr = extract_typed_address (valaddr + embedded_offset, type); + fprintf_filtered (stream, "@"); fputs_filtered (paddress (gdbarch, addr), stream); if (options->deref_ref) @@ -411,6 +416,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, value_at (TYPE_TARGET_TYPE (type), unpack_pointer (type, valaddr + embedded_offset)); + common_val_print (deref_val, stream, recurse, options, current_language); } @@ -435,7 +441,8 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, address, stream, recurse, options); else cp_print_value_fields (type, type, valaddr, embedded_offset, - address, stream, recurse, options, NULL, 0); + address, stream, recurse, original_value, + options, NULL, 0); break; case TYPE_CODE_ENUM: @@ -485,6 +492,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr + embedded_offset, type, @@ -506,7 +514,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (TYPE_LENGTH (type) == TYPE_LENGTH (TYPE_TARGET_TYPE (type))) { m2_val_print (TYPE_TARGET_TYPE (type), valaddr, embedded_offset, - address, stream, recurse, options); + address, stream, recurse, original_value, options); break; } /* FIXME: create_range_type does not set the unsigned bit in a @@ -522,6 +530,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr + embedded_offset, type, @@ -535,6 +544,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr + embedded_offset, type, @@ -598,6 +608,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, { int element = value_bit_index (type, valaddr + embedded_offset, i); + if (element < 0) { i = element; @@ -617,6 +628,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, ++i)) { int j = i; + fputs_filtered ("..", stream); while (i + 1 <= high_bound && value_bit_index (type, @@ -640,7 +652,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, break; case TYPE_CODE_ERROR: - fprintf_filtered (stream, _("")); + fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type)); break; case TYPE_CODE_UNDEF: diff --git a/contrib/gdb-7/gdb/macrocmd.c b/contrib/gdb-7/gdb/macrocmd.c index 355efe0e89..74aa05221a 100644 --- a/contrib/gdb-7/gdb/macrocmd.c +++ b/contrib/gdb-7/gdb/macrocmd.c @@ -1,5 +1,5 @@ /* C preprocessor macro expansion commands for GDB. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GDB. @@ -50,6 +50,7 @@ macro_expand_command (char *exp, int from_tty) struct macro_scope *ms = NULL; char *expanded = NULL; struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &ms); + make_cleanup (free_current_contents, &expanded); /* You know, when the user doesn't specify any expression, it would be @@ -249,6 +250,7 @@ free_macro_definition_ptr (void *ptr) { int i; struct macro_definition *loc = (struct macro_definition *) ptr; + for (i = 0; i < loc->argc; ++i) xfree ((char *) loc->argv[i]); xfree ((char *) loc->argv); @@ -362,6 +364,7 @@ print_one_macro (const char *name, const struct macro_definition *macro, if (macro->kind == macro_function_like) { int i; + fprintf_filtered (gdb_stdout, "("); for (i = 0; i < macro->argc; ++i) fprintf_filtered (gdb_stdout, "%s%s", (i > 0) ? ", " : "", @@ -387,8 +390,6 @@ extern initialize_file_ftype _initialize_macrocmd; /* -Wmissing-prototypes */ void _initialize_macrocmd (void) { - struct cmd_list_element *c; - /* We introduce a new command prefix, `macro', under which we'll put the various commands for working with preprocessor macros. */ add_prefix_cmd ("macro", class_info, macro_command, diff --git a/contrib/gdb-7/gdb/macroexp.c b/contrib/gdb-7/gdb/macroexp.c index 752a9399a9..73e68d76df 100644 --- a/contrib/gdb-7/gdb/macroexp.c +++ b/contrib/gdb-7/gdb/macroexp.c @@ -1,5 +1,5 @@ /* C preprocessor macro expansion for GDB. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GDB. @@ -525,6 +525,7 @@ get_token (struct macro_buffer *tok, { /* How many characters did we consume, including whitespace? */ int consumed = p - src->text + tok->len; + src->text += consumed; src->len -= consumed; return 1; @@ -767,6 +768,7 @@ gather_arguments (const char *name, struct macro_buffer *src, paren. */ { struct macro_buffer temp; + init_shared_buffer (&temp, src->text, src->len); if (! get_token (&tok, &temp) @@ -805,8 +807,6 @@ gather_arguments (const char *name, struct macro_buffer *src, depth = 0; for (;;) { - char *start = src->text; - if (! get_token (&tok, src)) error (_("Malformed argument list for macro `%s'."), name); @@ -1004,7 +1004,7 @@ substitute_args (struct macro_buffer *dest, && lookahead.text[0] == '#' && lookahead.text[1] == '#') { - int arg, finished = 0; + int finished = 0; int prev_was_comma = 0; /* Note that GCC warns if the result of splicing is not a @@ -1018,6 +1018,7 @@ substitute_args (struct macro_buffer *dest, { int arg = find_parameter (&tok, is_varargs, va_arg_name, def->argc, def->argv); + if (arg != -1) appendmem (dest, argv[arg].text, argv[arg].len); else @@ -1057,6 +1058,7 @@ substitute_args (struct macro_buffer *dest, { int arg = find_parameter (&tok, is_varargs, va_arg_name, def->argc, def->argv); + if (arg != -1) appendmem (dest, argv[arg].text, argv[arg].len); else @@ -1195,6 +1197,7 @@ expand (const char *id, else { int len = strlen (def->argv[def->argc - 1]); + if (len > 3 && strcmp (def->argv[def->argc - 1] + len - 3, "...") == 0) { @@ -1299,6 +1302,7 @@ maybe_expand (struct macro_buffer *dest, lookup function expects. */ char *id = xmalloc (src_first->len + 1); struct cleanup *back_to = make_cleanup (xfree, id); + memcpy (id, src_first->text, src_first->len); id[src_first->len] = 0; diff --git a/contrib/gdb-7/gdb/macroexp.h b/contrib/gdb-7/gdb/macroexp.h index 497647b680..fce77855fb 100644 --- a/contrib/gdb-7/gdb/macroexp.h +++ b/contrib/gdb-7/gdb/macroexp.h @@ -1,5 +1,5 @@ /* Interface to C preprocessor macro expansion for GDB. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/macroscope.c b/contrib/gdb-7/gdb/macroscope.c index 18852611b0..844e2e5b29 100644 --- a/contrib/gdb-7/gdb/macroscope.c +++ b/contrib/gdb-7/gdb/macroscope.c @@ -1,5 +1,5 @@ /* Functions for deciding which macros are currently in scope. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GDB. @@ -88,6 +88,7 @@ struct macro_scope * user_macro_scope (void) { struct macro_scope *ms; + ms = XNEW (struct macro_scope); ms->file = macro_main (macro_user_macros); ms->line = -1; diff --git a/contrib/gdb-7/gdb/macroscope.h b/contrib/gdb-7/gdb/macroscope.h index 36422668f0..55937897da 100644 --- a/contrib/gdb-7/gdb/macroscope.h +++ b/contrib/gdb-7/gdb/macroscope.h @@ -1,5 +1,5 @@ /* Interface to functions for deciding which macros are currently in scope. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/macrotab.c b/contrib/gdb-7/gdb/macrotab.c index 603c8e73ce..93651ab39a 100644 --- a/contrib/gdb-7/gdb/macrotab.c +++ b/contrib/gdb-7/gdb/macrotab.c @@ -1,5 +1,5 @@ /* C preprocessor macro tables for GDB. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GDB. @@ -113,6 +113,7 @@ macro_bcache (struct macro_table *t, const void *addr, int len) else { void *copy = xmalloc (len); + memcpy (copy, addr, len); return copy; } @@ -316,6 +317,7 @@ key_compare (struct macro_key *key, const char *name, struct macro_source_file *file, int line) { int names = strcmp (key->name, name); + if (names) return names; @@ -879,6 +881,7 @@ macro_definition_location (struct macro_source_file *source, if (n) { struct macro_key *key = (struct macro_key *) n->key; + *definition_line = key->start_line; return key->start_file; } @@ -905,6 +908,7 @@ foreach_macro (splay_tree_node node, void *arg) struct macro_for_each_data *datum = (struct macro_for_each_data *) arg; struct macro_key *key = (struct macro_key *) node->key; struct macro_definition *def = (struct macro_definition *) node->value; + (*datum->fn) (key->name, def, datum->user_data); return 0; } @@ -915,6 +919,7 @@ macro_for_each (struct macro_table *table, macro_callback_fn fn, void *user_data) { struct macro_for_each_data datum; + datum.fn = fn; datum.user_data = user_data; datum.file = NULL; @@ -946,6 +951,7 @@ macro_for_each_in_scope (struct macro_source_file *file, int line, macro_callback_fn fn, void *user_data) { struct macro_for_each_data datum; + datum.fn = fn; datum.user_data = user_data; datum.file = file; diff --git a/contrib/gdb-7/gdb/macrotab.h b/contrib/gdb-7/gdb/macrotab.h index bc26c2e0fc..e929739d53 100644 --- a/contrib/gdb-7/gdb/macrotab.h +++ b/contrib/gdb-7/gdb/macrotab.h @@ -1,5 +1,5 @@ /* Interface to C preprocessor macro tables for GDB. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/main.c b/contrib/gdb-7/gdb/main.c index 55411a87ca..bfd1213573 100644 --- a/contrib/gdb-7/gdb/main.c +++ b/contrib/gdb-7/gdb/main.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -39,16 +39,9 @@ #include "interps.h" #include "main.h" - #include "source.h" - -/* If nonzero, display time usage both at startup and for each command. */ - -int display_time; - -/* If nonzero, display space usage both at startup and for each command. */ - -int display_space; +#include "cli/cli-cmds.h" +#include "python/python.h" /* The selected interpreter. This will be used as a set command variable, so it should always be malloc'ed - since @@ -67,6 +60,10 @@ char *gdb_sysroot = 0; /* GDB datadir, used to store data files. */ char *gdb_datadir = 0; +/* If gdb was configured with --with-python=/path, + the possibly relocated path to python's lib directory. */ +char *python_libdir = 0; + struct ui_file *gdb_stdout; struct ui_file *gdb_stderr; struct ui_file *gdb_stdlog; @@ -76,6 +73,9 @@ struct ui_file *gdb_stdtargin; struct ui_file *gdb_stdtarg; struct ui_file *gdb_stdtargerr; +/* True if --batch or --batch-silent was seen. */ +int batch_flag = 0; + /* Support for the --batch-silent option. */ int batch_silent = 0; @@ -139,6 +139,7 @@ relocate_directory (const char *progname, const char *initial, int flag) if (*dir) { char *canon_sysroot = lrealpath (dir); + if (canon_sysroot) { xfree (dir); @@ -247,7 +248,6 @@ captured_main (void *data) int argc = context->argc; char **argv = context->argv; static int quiet = 0; - static int batch = 0; static int set_args = 0; /* Pointers to various arguments from command line. */ @@ -289,8 +289,9 @@ captured_main (void *data) char *local_gdbinit; int i; + int save_auto_load; - long time_at_startup = get_run_time (); + struct cleanup *pre_stat_chain = make_command_stats_cleanup (0); #if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES) setlocale (LC_MESSAGES, ""); @@ -346,6 +347,14 @@ captured_main (void *data) gdb_datadir = relocate_directory (argv[0], GDB_DATADIR, GDB_DATADIR_RELOCATABLE); +#ifdef WITH_PYTHON_PATH + /* For later use in helping Python find itself. */ + python_libdir = relocate_directory (argv[0], + concat (WITH_PYTHON_PATH, + SLASH_STRING, "lib", NULL), + PYTHON_PATH_RELOCATABLE); +#endif + #ifdef RELOC_SRCDIR add_substitute_path_rule (RELOC_SRCDIR, make_relative_prefix (argv[0], BINDIR, @@ -386,7 +395,7 @@ captured_main (void *data) {"nx", no_argument, &inhibit_gdbinit, 1}, {"n", no_argument, &inhibit_gdbinit, 1}, {"batch-silent", no_argument, 0, 'B'}, - {"batch", no_argument, &batch, 1}, + {"batch", no_argument, &batch_flag, 1}, {"epoch", no_argument, &epoch_interface, 1}, /* This is a synonym for "--annotate=1". --annotate is now preferred, @@ -432,7 +441,7 @@ captured_main (void *data) {"statistics", no_argument, 0, OPT_STATISTICS}, {"write", no_argument, &write_files, 1}, {"args", no_argument, &set_args, 1}, - {"l", required_argument, 0, 'l'}, + {"l", required_argument, 0, 'l'}, {"return-child-result", no_argument, &return_child_result, 1}, {0, no_argument, 0, 0} }; @@ -468,8 +477,8 @@ captured_main (void *data) break; case OPT_STATISTICS: /* Enable the display of both time and space usage. */ - display_time = 1; - display_space = 1; + set_display_time (1); + set_display_space (1); break; case OPT_TUI: /* --tui is equivalent to -i=tui. */ @@ -537,7 +546,7 @@ captured_main (void *data) } break; case 'B': - batch = batch_silent = 1; + batch_flag = batch_silent = 1; gdb_stdout = ui_file_new(); break; #ifdef GDBTK @@ -631,55 +640,7 @@ extern int gdbtk_test (char *); use_windows = 0; } - if (set_args) - { - /* The remaining options are the command-line options for the - inferior. The first one is the sym/exec file, and the rest - are arguments. */ - if (optind >= argc) - { - fprintf_unfiltered (gdb_stderr, - _("%s: `--args' specified but no program specified\n"), - argv[0]); - exit (1); - } - symarg = argv[optind]; - execarg = argv[optind]; - ++optind; - set_inferior_args_vector (argc - optind, &argv[optind]); - } - else - { - /* OK, that's all the options. */ - - /* The first argument, if specified, is the name of the - executable. */ - if (optind < argc) - { - symarg = argv[optind]; - execarg = argv[optind]; - optind++; - } - - /* If the user hasn't already specified a PID or the name of a - core file, then a second optional argument is allowed. If - present, this argument should be interpreted as either a - PID or a core file, whichever works. */ - if (pidarg == NULL && corearg == NULL && optind < argc) - { - pid_or_core_arg = argv[optind]; - optind++; - } - - /* Any argument left on the command line is unexpected and - will be ignored. Inform the user. */ - if (optind < argc) - fprintf_unfiltered (gdb_stderr, _("\ -Excess command line arguments ignored. (%s%s)\n"), - argv[optind], - (optind == argc - 1) ? "" : " ..."); - } - if (batch) + if (batch_flag) quiet = 1; } @@ -687,6 +648,57 @@ Excess command line arguments ignored. (%s%s)\n"), control of the console via the deprecated_init_ui_hook (). */ gdb_init (argv[0]); + /* Now that gdb_init has created the initial inferior, we're in position + to set args for that inferior. */ + if (set_args) + { + /* The remaining options are the command-line options for the + inferior. The first one is the sym/exec file, and the rest + are arguments. */ + if (optind >= argc) + { + fprintf_unfiltered (gdb_stderr, + _("%s: `--args' specified but no program specified\n"), + argv[0]); + exit (1); + } + symarg = argv[optind]; + execarg = argv[optind]; + ++optind; + set_inferior_args_vector (argc - optind, &argv[optind]); + } + else + { + /* OK, that's all the options. */ + + /* The first argument, if specified, is the name of the + executable. */ + if (optind < argc) + { + symarg = argv[optind]; + execarg = argv[optind]; + optind++; + } + + /* If the user hasn't already specified a PID or the name of a + core file, then a second optional argument is allowed. If + present, this argument should be interpreted as either a + PID or a core file, whichever works. */ + if (pidarg == NULL && corearg == NULL && optind < argc) + { + pid_or_core_arg = argv[optind]; + optind++; + } + + /* Any argument left on the command line is unexpected and + will be ignored. Inform the user. */ + if (optind < argc) + fprintf_unfiltered (gdb_stderr, _("\ +Excess command line arguments ignored. (%s%s)\n"), + argv[optind], + (optind == argc - 1) ? "" : " ..."); + } + /* Lookup gdbinit files. Note that the gdbinit file name may be overriden during file initialization, so get_init_files should be called after gdb_init. */ @@ -735,6 +747,7 @@ Excess command line arguments ignored. (%s%s)\n"), { /* Find it. */ struct interp *interp = interp_lookup (interpreter_p); + if (interp == NULL) error (_("Interpreter `%s' unrecognized"), interpreter_p); /* Install it. */ @@ -793,6 +806,11 @@ Excess command line arguments ignored. (%s%s)\n"), catch_command_errors (directory_switch, dirarg[i], 0, RETURN_MASK_ALL); xfree (dirarg); + /* Skip auto-loading section-specified scripts until we've sourced + local_gdbinit (which is often used to augment the source search path). */ + save_auto_load = gdbpy_global_auto_load; + gdbpy_global_auto_load = 0; + if (execarg != NULL && symarg != NULL && strcmp (execarg, symarg) == 0) @@ -800,15 +818,15 @@ Excess command line arguments ignored. (%s%s)\n"), /* The exec file and the symbol-file are the same. If we can't open it, better only print one error message. catch_command_errors returns non-zero on success! */ - if (catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL)) - catch_command_errors (symbol_file_add_main, symarg, !batch, RETURN_MASK_ALL); + if (catch_command_errors (exec_file_attach, execarg, !batch_flag, RETURN_MASK_ALL)) + catch_command_errors (symbol_file_add_main, symarg, !batch_flag, RETURN_MASK_ALL); } else { if (execarg != NULL) - catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL); + catch_command_errors (exec_file_attach, execarg, !batch_flag, RETURN_MASK_ALL); if (symarg != NULL) - catch_command_errors (symbol_file_add_main, symarg, !batch, RETURN_MASK_ALL); + catch_command_errors (symbol_file_add_main, symarg, !batch_flag, RETURN_MASK_ALL); } if (corearg && pidarg) @@ -817,10 +835,10 @@ Can't attach to process and specify a core file at the same time.")); if (corearg != NULL) catch_command_errors (core_file_command, corearg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); else if (pidarg != NULL) catch_command_errors (attach_command, pidarg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); else if (pid_or_core_arg) { /* The user specified 'gdb program pid' or gdb program core'. @@ -830,17 +848,17 @@ Can't attach to process and specify a core file at the same time.")); if (isdigit (pid_or_core_arg[0])) { if (catch_command_errors (attach_command, pid_or_core_arg, - !batch, RETURN_MASK_ALL) == 0) + !batch_flag, RETURN_MASK_ALL) == 0) catch_command_errors (core_file_command, pid_or_core_arg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); } else /* Can't be a pid, better be a corefile. */ catch_command_errors (core_file_command, pid_or_core_arg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); } if (ttyarg != NULL) - catch_command_errors (tty_command, ttyarg, !batch, RETURN_MASK_ALL); + set_inferior_io_terminal (ttyarg); /* Error messages should no longer be distinguished with extra output. */ error_pre_print = NULL; @@ -852,46 +870,36 @@ Can't attach to process and specify a core file at the same time.")); if (local_gdbinit && !inhibit_gdbinit) catch_command_errors (source_script, local_gdbinit, 0, RETURN_MASK_ALL); + /* Now that all .gdbinit's have been read and all -d options have been + processed, we can read any scripts mentioned in SYMARG. + We wait until now because it is common to add to the source search + path in local_gdbinit. */ + gdbpy_global_auto_load = save_auto_load; + if (symfile_objfile != NULL) + load_auto_scripts_for_objfile (symfile_objfile); + for (i = 0; i < ncmd; i++) { if (cmdarg[i].type == CMDARG_FILE) catch_command_errors (source_script, cmdarg[i].string, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); else /* cmdarg[i].type == CMDARG_COMMAND */ catch_command_errors (execute_command, cmdarg[i].string, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); } xfree (cmdarg); /* Read in the old history after all the command files have been read. */ init_history (); - if (batch) + if (batch_flag) { /* We have hit the end of the batch file. */ quit_force (NULL, 0); } /* Show time and/or space usage. */ - - if (display_time) - { - long init_time = get_run_time () - time_at_startup; - - printf_unfiltered (_("Startup time: %ld.%06ld\n"), - init_time / 1000000, init_time % 1000000); - } - - if (display_space) - { -#ifdef HAVE_SBRK - extern char **environ; - char *lim = (char *) sbrk (0); - - printf_unfiltered (_("Startup size: data size %ld\n"), - (long) (lim - (char *) &environ)); -#endif - } + do_cleanups (pre_stat_chain); /* NOTE: cagney/1999-11-07: There is probably no reason for not moving this loop and the code found in captured_command_loop() diff --git a/contrib/gdb-7/gdb/main.h b/contrib/gdb-7/gdb/main.h index 529958259d..4b27c1a325 100644 --- a/contrib/gdb-7/gdb/main.h +++ b/contrib/gdb-7/gdb/main.h @@ -1,6 +1,6 @@ /* Main interface for GDB, the GNU debugger. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -34,5 +34,6 @@ extern int gdb_main (struct captured_main_args *); extern int return_child_result; extern int return_child_result_value; extern int batch_silent; +extern int batch_flag; #endif diff --git a/contrib/gdb-7/gdb/maint.c b/contrib/gdb-7/gdb/maint.c index ecbae129a0..28fd610b2c 100644 --- a/contrib/gdb-7/gdb/maint.c +++ b/contrib/gdb-7/gdb/maint.c @@ -1,7 +1,7 @@ /* Support for GDB maintenance commands. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, - 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Fred Fish at Cygnus Support. @@ -171,23 +171,19 @@ maintenance_demangle (char *args, int from_tty) static void maintenance_time_display (char *args, int from_tty) { - extern int display_time; - if (args == NULL || *args == '\0') printf_unfiltered (_("\"maintenance time\" takes a numeric argument.\n")); else - display_time = strtol (args, NULL, 10); + set_display_time (strtol (args, NULL, 10)); } static void maintenance_space_display (char *args, int from_tty) { - extern int display_space; - if (args == NULL || *args == '\0') printf_unfiltered ("\"maintenance space\" takes a numeric argument.\n"); else - display_space = strtol (args, NULL, 10); + set_display_space (strtol (args, NULL, 10)); } /* The "maintenance info" command is defined as a prefix, with @@ -354,6 +350,7 @@ print_objfile_section_info (bfd *abfd, { struct gdbarch *gdbarch = gdbarch_from_bfd (abfd); int addr_size = gdbarch_addr_bit (gdbarch) / 8; + maint_print_section_info (name, flags, obj_section_addr (asect), obj_section_endaddr (asect), @@ -425,6 +422,7 @@ maintenance_print_architecture (char *args, int from_tty) { struct cleanup *cleanups; struct ui_file *file = gdb_fopen (args, "w"); + if (file == NULL) perror_with_name (_("maintenance print architecture")); cleanups = make_cleanup_ui_file_delete (file); @@ -538,8 +536,8 @@ maintenance_deprecate (char *args, int from_tty) { if (args == NULL || *args == '\0') { - printf_unfiltered (_("\"maintenance deprecate\" takes an argument, \n\ -the command you want to deprecate, and optionally the replacement command \n\ + printf_unfiltered (_("\"maintenance deprecate\" takes an argument,\n\ +the command you want to deprecate, and optionally the replacement command\n\ enclosed in quotes.\n")); } @@ -571,7 +569,6 @@ the command you want to undeprecate.\n")); static void maintenance_do_deprecate (char *text, int deprecate) { - struct cmd_list_element *alias = NULL; struct cmd_list_element *prefix_cmd = NULL; struct cmd_list_element *cmd = NULL; @@ -618,7 +615,6 @@ maintenance_do_deprecate (char *text, int deprecate) memory. */ if (alias) { - if (alias->flags & MALLOCED_REPLACEMENT) xfree (alias->replacement); @@ -722,6 +718,7 @@ maintenance_set_profile_cmd (char *args, int from_tty, struct cmd_list_element * else { extern void _mcleanup (void); + _mcleanup (); } } @@ -736,8 +733,6 @@ maintenance_set_profile_cmd (char *args, int from_tty, struct cmd_list_element * void _initialize_maint_cmds (void) { - struct cmd_list_element *tmpcmd; - add_prefix_cmd ("maintenance", class_maintenance, maintenance_command, _("\ Commands for use by GDB maintainers.\n\ Includes commands to dump specific internal GDB structures in\n\ diff --git a/contrib/gdb-7/gdb/mdebugread.c b/contrib/gdb-7/gdb/mdebugread.c index aac82e9ab7..2e18fa461b 100644 --- a/contrib/gdb-7/gdb/mdebugread.c +++ b/contrib/gdb-7/gdb/mdebugread.c @@ -1,7 +1,7 @@ /* Read a symbol table in ECOFF format (Third-Eye). Copyright (C) 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Original version contributed by Alessandro Forin (af@cs.cmu.edu) at @@ -57,6 +57,7 @@ #include "mdebugread.h" #include "gdb_stat.h" #include "gdb_string.h" +#include "psympriv.h" #include "bfd.h" @@ -270,7 +271,6 @@ static char *mdebug_next_symbol_text (struct objfile *); static void mdebug_psymtab_to_symtab (struct partial_symtab *pst) { - if (!pst) return; @@ -752,6 +752,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, if (sh->st == stProc) { struct blockvector *bv = BLOCKVECTOR (top_stack->cur_st); + /* The next test should normally be true, but provides a hook for nested functions (which we don't want to make global). */ @@ -997,8 +998,8 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, if (sh->iss == 0 || name[0] == '.' || name[0] == '\0') TYPE_TAG_NAME (t) = NULL; else - TYPE_TAG_NAME (t) = obconcat (¤t_objfile->objfile_obstack, - "", "", name); + TYPE_TAG_NAME (t) = obconcat (¤t_objfile->objfile_obstack, name, + (char *) NULL); TYPE_CODE (t) = type_code; TYPE_LENGTH (t) = sh->value; @@ -1153,6 +1154,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, for (i = 0; i < BLOCKVECTOR_NBLOCKS (bv); i++) { struct block *b_bad = BLOCKVECTOR_BLOCK (bv, i); + if (BLOCK_SUPERBLOCK (b_bad) == b && BLOCK_START (b_bad) == top_stack->procadr && BLOCK_END (b_bad) == top_stack->procadr) @@ -1173,6 +1175,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, if (nparams > 0) { struct dict_iterator iter; + TYPE_NFIELDS (ftype) = nparams; TYPE_FIELDS (ftype) = (struct field *) TYPE_ALLOC (ftype, nparams * sizeof (struct field)); @@ -1575,6 +1578,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs, if (t->fBitfield) { int width = AUX_GET_WIDTH (bigend, ax); + /* Inhibit core dumps if TIR is corrupted. */ if (bs == (int *) NULL) { @@ -1662,7 +1666,6 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs, } else { - /* Usually, TYPE_CODE(tp) is already type_code. The main exception is if we guessed wrong re struct/union/enum. But for struct vs. union a wrong guess is harmless, so @@ -1743,15 +1746,11 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs, /* Deal with range types */ if (t->bt == btRange) { - TYPE_NFIELDS (tp) = 2; - TYPE_FIELDS (tp) = ((struct field *) - TYPE_ALLOC (tp, 2 * sizeof (struct field))); - TYPE_FIELD_NAME (tp, 0) = obsavestring ("Low", strlen ("Low"), - ¤t_objfile->objfile_obstack); + TYPE_NFIELDS (tp) = 0; + TYPE_RANGE_DATA (tp) = ((struct range_bounds *) + TYPE_ZALLOC (tp, sizeof (struct range_bounds))); TYPE_LOW_BOUND (tp) = AUX_GET_DNLOW (bigend, ax); ax++; - TYPE_FIELD_NAME (tp, 1) = obsavestring ("High", strlen ("High"), - ¤t_objfile->objfile_obstack); TYPE_HIGH_BOUND (tp) = AUX_GET_DNHIGH (bigend, ax); ax++; } @@ -1971,6 +1970,7 @@ parse_procedure (PDR *pr, struct symtab *search_symtab, the same name exists, lookup_symbol will eventually read in the symtab for the global function and clobber cur_fdr. */ FDR *save_cur_fdr = cur_fdr; + s = lookup_symbol (sh_name, NULL, VAR_DOMAIN, 0); cur_fdr = save_cur_fdr; #else @@ -2404,6 +2404,7 @@ parse_partial_symbols (struct objfile *objfile) fdr_to_pst++; { struct partial_symtab *pst = new_psymtab ("", objfile); + fdr_to_pst[-1].pst = pst; FDR_IDX (pst) = -1; } @@ -2663,9 +2664,8 @@ parse_partial_symbols (struct objfile *objfile) textlow, objfile->global_psymbols.next, objfile->static_psymbols.next); - pst->read_symtab_private = ((char *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (struct symloc))); + pst->read_symtab_private = obstack_alloc (&objfile->objfile_obstack, + sizeof (struct symloc)); memset (pst->read_symtab_private, 0, sizeof (struct symloc)); save_pst = pst; @@ -2813,6 +2813,7 @@ parse_partial_symbols (struct objfile *objfile) { char *stabstring = debug_info->ss + fh->issBase + sh.iss; int len = strlen (stabstring); + while (stabstring[len - 1] == '\\') { SYMR sh2; @@ -2849,6 +2850,7 @@ parse_partial_symbols (struct objfile *objfile) switch (type_code) { char *p; + /* * Standard, external, non-debugger, symbols */ @@ -2955,7 +2957,7 @@ parse_partial_symbols (struct objfile *objfile) past_first_source_file = 1; if (prev_so_symnum != symnum - 1) - { /* Here if prev stab wasn't N_SO */ + { /* Here if prev stab wasn't N_SO */ first_so_symnum = symnum; if (pst) @@ -3001,6 +3003,7 @@ parse_partial_symbols (struct objfile *objfile) case N_SOL: { enum language tmp_language; + /* Mark down an include file in the current psymtab */ /* SET_NAMESTRING ();*/ @@ -3029,8 +3032,10 @@ parse_partial_symbols (struct objfile *objfile) in a binary tree, if profiling shows this is a major hog). */ if (pst && strcmp (namestring, pst->filename) == 0) continue; + { int i; + for (i = 0; i < includes_used; i++) if (strcmp (namestring, psymtab_include_list[i]) == 0) @@ -3097,7 +3102,7 @@ parse_partial_symbols (struct objfile *objfile) namestring = gdbarch_static_transform_name (gdbarch, namestring); - add_psymbol_to_list (namestring, p - namestring, + add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_STATIC, &objfile->static_psymbols, 0, sh.value, @@ -3107,7 +3112,7 @@ parse_partial_symbols (struct objfile *objfile) sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile)); /* The addresses in these entries are reported to be wrong. See the code that reads 'G's for symtabs. */ - add_psymbol_to_list (namestring, p - namestring, + add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_STATIC, &objfile->global_psymbols, 0, sh.value, @@ -3125,7 +3130,7 @@ parse_partial_symbols (struct objfile *objfile) || (p == namestring + 1 && namestring[0] != ' ')) { - add_psymbol_to_list (namestring, p - namestring, + add_psymbol_to_list (namestring, p - namestring, 1, STRUCT_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, sh.value, 0, @@ -3134,6 +3139,7 @@ parse_partial_symbols (struct objfile *objfile) { /* Also a typedef with the same name. */ add_psymbol_to_list (namestring, p - namestring, + 1, VAR_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, sh.value, 0, @@ -3145,7 +3151,7 @@ parse_partial_symbols (struct objfile *objfile) case 't': if (p != namestring) /* a name is there, not just :T... */ { - add_psymbol_to_list (namestring, p - namestring, + add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, sh.value, 0, @@ -3207,7 +3213,7 @@ parse_partial_symbols (struct objfile *objfile) ; /* Note that the value doesn't matter for enum constants in psymtabs, just in symtabs. */ - add_psymbol_to_list (p, q - p, + add_psymbol_to_list (p, q - p, 1, VAR_DOMAIN, LOC_CONST, &objfile->static_psymbols, 0, 0, psymtab_language, objfile); @@ -3224,7 +3230,7 @@ parse_partial_symbols (struct objfile *objfile) continue; case 'c': /* Constant, e.g. from "const" in Pascal. */ - add_psymbol_to_list (namestring, p - namestring, + add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_CONST, &objfile->static_psymbols, sh.value, 0, psymtab_language, objfile); @@ -3235,13 +3241,14 @@ parse_partial_symbols (struct objfile *objfile) { int name_len = p - namestring; char *name = xmalloc (name_len + 1); + memcpy (name, namestring, name_len); name[name_len] = '\0'; function_outside_compilation_unit_complaint (name); xfree (name); } sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); - add_psymbol_to_list (namestring, p - namestring, + add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_BLOCK, &objfile->static_psymbols, 0, sh.value, @@ -3256,13 +3263,14 @@ parse_partial_symbols (struct objfile *objfile) { int name_len = p - namestring; char *name = xmalloc (name_len + 1); + memcpy (name, namestring, name_len); name[name_len] = '\0'; function_outside_compilation_unit_complaint (name); xfree (name); } sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); - add_psymbol_to_list (namestring, p - namestring, + add_psymbol_to_list (namestring, p - namestring, 1, VAR_DOMAIN, LOC_BLOCK, &objfile->global_psymbols, 0, sh.value, @@ -3491,12 +3499,12 @@ parse_partial_symbols (struct objfile *objfile) symbol table, and the MAIN__ symbol via the minimal symbol table. */ if (sh.st == stProc) - add_psymbol_to_list (name, strlen (name), + add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, LOC_BLOCK, &objfile->global_psymbols, 0, sh.value, psymtab_language, objfile); else - add_psymbol_to_list (name, strlen (name), + add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, LOC_BLOCK, &objfile->static_psymbols, 0, sh.value, psymtab_language, objfile); @@ -3565,7 +3573,7 @@ parse_partial_symbols (struct objfile *objfile) && sh.iss != 0 && sh.index != cur_sdx + 2) { - add_psymbol_to_list (name, strlen (name), + add_psymbol_to_list (name, strlen (name), 1, STRUCT_DOMAIN, LOC_TYPEDEF, &objfile->static_psymbols, 0, (CORE_ADDR) 0, @@ -3606,7 +3614,7 @@ parse_partial_symbols (struct objfile *objfile) continue; } /* Use this gdb symbol */ - add_psymbol_to_list (name, strlen (name), + add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, class, &objfile->static_psymbols, 0, sh.value, psymtab_language, objfile); @@ -3682,7 +3690,7 @@ parse_partial_symbols (struct objfile *objfile) break; } name = debug_info->ssext + psh->iss; - add_psymbol_to_list (name, strlen (name), + add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, class, &objfile->global_psymbols, 0, svalue, @@ -3845,7 +3853,7 @@ handle_psymbol_enumerators (struct objfile *objfile, FDR *fh, int stype, /* Note that the value doesn't matter for enum constants in psymtabs, just in symtabs. */ - add_psymbol_to_list (name, strlen (name), + add_psymbol_to_list (name, strlen (name), 1, VAR_DOMAIN, LOC_CONST, &objfile->static_psymbols, 0, (CORE_ADDR) 0, psymtab_language, objfile); @@ -4034,9 +4042,9 @@ psymtab_to_symtab_1 (struct partial_symtab *pst, char *filename) /* Make up special symbol to contain procedure specific info */ struct mdebug_extra_func_info *e = - ((struct mdebug_extra_func_info *) - obstack_alloc (¤t_objfile->objfile_obstack, - sizeof (struct mdebug_extra_func_info))); + ((struct mdebug_extra_func_info *) + obstack_alloc (¤t_objfile->objfile_obstack, + sizeof (struct mdebug_extra_func_info))); struct symbol *s = new_symbol (MDEBUG_EFI_SYMBOL_NAME); memset (e, 0, sizeof (struct mdebug_extra_func_info)); @@ -4127,7 +4135,6 @@ psymtab_to_symtab_1 (struct partial_symtab *pst, char *filename) { /* This symbol table contains ordinary ecoff entries. */ - int f_max; int maxlines; EXTR *ext_ptr; @@ -4680,8 +4687,7 @@ new_symtab (char *name, int maxlines, struct objfile *objfile) BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK); s->free_code = free_linetable; - s->debugformat = obsavestring ("ECOFF", 5, - &objfile->objfile_obstack); + s->debugformat = "ECOFF"; return (s); } @@ -4697,9 +4703,8 @@ new_psymtab (char *name, struct objfile *objfile) /* Keep a backpointer to the file's symbols */ - psymtab->read_symtab_private = ((char *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (struct symloc))); + psymtab->read_symtab_private = obstack_alloc (&objfile->objfile_obstack, + sizeof (struct symloc)); memset (psymtab->read_symtab_private, 0, sizeof (struct symloc)); CUR_BFD (psymtab) = cur_bfd; DEBUG_SWAP (psymtab) = debug_swap; @@ -4736,7 +4741,6 @@ new_linetable (int size) static struct linetable * shrink_linetable (struct linetable *lt) { - return (struct linetable *) xrealloc ((void *) lt, (sizeof (struct linetable) + ((lt->nitems - 1) @@ -4791,7 +4795,7 @@ new_symbol (char *name) memset (s, 0, sizeof (*s)); SYMBOL_LANGUAGE (s) = psymtab_language; - SYMBOL_SET_NAMES (s, name, strlen (name), current_objfile); + SYMBOL_SET_NAMES (s, name, strlen (name), 1, current_objfile); return s; } @@ -4804,7 +4808,7 @@ new_type (char *name) t = alloc_type (current_objfile); TYPE_NAME (t) = name; - TYPE_CPLUS_SPECIFIC (t) = (struct cplus_struct_type *) &cplus_struct_default; + INIT_CPLUS_SPECIFIC (t); return t; } diff --git a/contrib/gdb-7/gdb/mdebugread.h b/contrib/gdb-7/gdb/mdebugread.h index 218befd7ff..e7774d2ba8 100644 --- a/contrib/gdb-7/gdb/mdebugread.h +++ b/contrib/gdb-7/gdb/mdebugread.h @@ -1,6 +1,6 @@ /* Read a symbol table in ECOFF format (Third-Eye). - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mem-break.c b/contrib/gdb-7/gdb/mem-break.c index 1338dceeba..57c8a2338b 100644 --- a/contrib/gdb-7/gdb/mem-break.c +++ b/contrib/gdb-7/gdb/mem-break.c @@ -1,7 +1,7 @@ /* Simulate breakpoints by patching locations in the target system, for GDB. Copyright (C) 1990, 1991, 1992, 1993, 1995, 1997, 1998, 1999, 2000, 2002, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by John Gilmore. @@ -46,7 +46,6 @@ default_memory_insert_breakpoint (struct gdbarch *gdbarch, { int val; const unsigned char *bp; - int bplen; /* Determine appropriate breakpoint contents and size for this address. */ bp = gdbarch_breakpoint_from_pc diff --git a/contrib/gdb-7/gdb/memattr.c b/contrib/gdb-7/gdb/memattr.c index 0d2fea2c3c..1215ca9a00 100644 --- a/contrib/gdb-7/gdb/memattr.c +++ b/contrib/gdb-7/gdb/memattr.c @@ -1,6 +1,6 @@ /* Memory attributes support, for GDB. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -292,9 +292,6 @@ lookup_mem_region (CORE_ADDR addr) void invalidate_target_mem_regions (void) { - struct mem_region *m; - int ix; - if (!target_mem_regions_valid) return; @@ -443,6 +440,7 @@ mem_info_command (char *args, int from_tty) for (ix = 0; VEC_iterate (mem_region_s, mem_region_list, ix, m); ix++) { char *tmp; + printf_filtered ("%-3d %-3c\t", m->number, m->enabled_p ? 'y' : 'n'); @@ -455,17 +453,17 @@ mem_info_command (char *args, int from_tty) if (gdbarch_addr_bit (target_gdbarch) <= 32) { - if (m->hi == 0) - tmp = "0x100000000"; - else - tmp = hex_string_custom ((unsigned long) m->hi, 8); + if (m->hi == 0) + tmp = "0x100000000"; + else + tmp = hex_string_custom ((unsigned long) m->hi, 8); } else { - if (m->hi == 0) - tmp = "0x10000000000000000"; - else - tmp = hex_string_custom ((unsigned long) m->hi, 16); + if (m->hi == 0) + tmp = "0x10000000000000000"; + else + tmp = hex_string_custom ((unsigned long) m->hi, 16); } printf_filtered ("%s ", tmp); @@ -655,7 +653,7 @@ mem_disable_command (char *args, int from_tty) static void mem_delete (int num) { - struct mem_region *m1, *m; + struct mem_region *m; int ix; if (!mem_region_list) @@ -732,9 +730,9 @@ _initialize_mem (void) Define attributes for memory region or reset memory region handling to\n\ target-based.\n\ Usage: mem auto\n\ - mem [ ], \n\ -where may be rw (read/write), ro (read-only) or wo (write-only), \n\ - may be 8, 16, 32, or 64, and \n\ + mem [ ],\n\ +where may be rw (read/write), ro (read-only) or wo (write-only),\n\ + may be 8, 16, 32, or 64, and\n\ may be cache or nocache")); add_cmd ("mem", class_vars, mem_enable_command, _("\ diff --git a/contrib/gdb-7/gdb/memattr.h b/contrib/gdb-7/gdb/memattr.h index 792b996b7e..739df9480f 100644 --- a/contrib/gdb-7/gdb/memattr.h +++ b/contrib/gdb-7/gdb/memattr.h @@ -1,6 +1,7 @@ /* Memory attributes support, for GDB. - Copyright (C) 2001, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2001, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/memory-map.c b/contrib/gdb-7/gdb/memory-map.c index fe78ed82b7..5c58174037 100644 --- a/contrib/gdb-7/gdb/memory-map.c +++ b/contrib/gdb-7/gdb/memory-map.c @@ -1,6 +1,6 @@ /* Routines for handling XML memory maps provided by target. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/memory-map.h b/contrib/gdb-7/gdb/memory-map.h index 2512f3a657..fc9d5558f7 100644 --- a/contrib/gdb-7/gdb/memory-map.h +++ b/contrib/gdb-7/gdb/memory-map.h @@ -1,6 +1,6 @@ /* Routines for handling XML memory maps provided by target. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mi/gdb-mi.el b/contrib/gdb-7/gdb/mi/gdb-mi.el deleted file mode 100644 index 031de00825..0000000000 --- a/contrib/gdb-7/gdb/mi/gdb-mi.el +++ /dev/null @@ -1,609 +0,0 @@ -;;; gdb-mi.el - -;; Author: Nick Roberts -;; Maintainer: Nick Roberts -;; Keywords: unix, tools - -;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 -;; Free Software Foundation, Inc. - -;; This file is part of GNU GDB. - -;; GNU GDB is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;;; Commentary: - -;; This mode acts as a graphical user interface to GDB and works with Emacs -;; 22.x and the version of GDB with which it is distributed. You can interact -;; with GDB through the GUD buffer in the usual way, but there are also -;; buffers which control the execution and describe the state of your program. -;; It separates the input/output of your program from that of GDB and displays -;; expressions and their current values in their own buffers. It also uses -;; features of Emacs 21 such as the fringe/display margin for breakpoints, and -;; the toolbar (see the GDB Graphical Interface section in the Emacs info -;; manual). - -;; Start the debugger with M-x gdbmi. - -;; This file uses GDB/MI as the primary interface to GDB. It is still under -;; development and is part of a process to migrate Emacs from annotations (as -;; used in gdb-ui.el) to GDB/MI. It runs gdb with GDB/MI (-interp=mi) and -;; access CLI using "-interpreter-exec console cli-command". - -;; This mode acts on top of gdb-ui.el. After the release of 22.1, -;; mainline Emacs in the CVS repository will have a file also called gdb-mi.el -;; which will *replace* gdb-ui.el. If you are interested in developing -;; this mode you should get this version. -;; -;; Known Bugs: -;; -;; 1) To handle program input, if required, and to avoid extra output in the -;; GUD buffer you must not use run, step, next or continue etc but their MI -;; counterparts through gud-run, gud-step etc, e.g clicking on the appropriate -;; icon in the toolbar. -;; 2) Some commands send extra prompts to the GUD buffer. -;; 3) Doesn't list catchpoints in breakpoints buffer. -;; -;; TODO: -;; 1) Prefix MI commands with a token instead of queueing commands. -;; 2) Use MI command -data-read-memory for memory window. -;; 3) Use MI command -data-disassemble for disassembly window. -;; 4) Allow separate buffers for Inferior IO and GDB IO. -;; 5) Watch windows to work with threads. -;; -;;; Code: - -(require 'gud) -(require 'gdb-ui) - -(defvar gdb-last-command nil) -(defvar gdb-prompt-name nil) - -;;;###autoload -(defun gdbmi (command-line) - "Run gdb on program FILE in buffer *gud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger. - -If `gdb-many-windows' is nil (the default value) then gdb just -pops up the GUD buffer unless `gdb-show-main' is t. In this case -it starts with two windows: one displaying the GUD buffer and the -other with the source file with the main routine of the inferior. - -If `gdb-many-windows' is t, regardless of the value of -`gdb-show-main', the layout below will appear. Keybindings are -given in relevant buffer. - -Watch expressions appear in the speedbar/slowbar. - -The following commands help control operation : - -`gdb-many-windows' - Toggle the number of windows gdb uses. -`gdb-restore-windows' - To restore the window layout. - -See Info node `(emacs)GDB Graphical Interface' for a more -detailed description of this mode. - - -+--------------------------------------------------------------+ -| GDB Toolbar | -+-------------------------------+------------------------------+ -| GUD buffer (I/O of GDB) | Locals buffer | -| | | -| | | -| | | -+-------------------------------+------------------------------+ -| Source buffer | -| | -| | -| | -| | -| | -| | -| | -+-------------------------------+------------------------------+ -| Stack buffer | Breakpoints buffer | -| RET gdb-frames-select | SPC gdb-toggle-breakpoint | -| | RET gdb-goto-breakpoint | -| | d gdb-delete-breakpoint | -+-------------------------------+------------------------------+" - ;; - (interactive (list (gud-query-cmdline 'gdbmi))) - ;; - ;; Let's start with a basic gud-gdb buffer and then modify it a bit. - (gdb command-line) - ;; - (setq gdb-debug-ring nil) - (set (make-local-variable 'gud-minor-mode) 'gdbmi) - (set (make-local-variable 'gud-marker-filter) 'gud-gdbmi-marker-filter) - ;; - (gud-def gud-step "-exec-step %p" "\C-s" - "Step one source line with display.") - (gud-def gud-stepi "-exec-step-instruction %p" "\C-i" - "Step one instruction with display.") - (gud-def gud-next "-exec-next %p" "\C-n" - "Step one line (skip functions).") - (gud-def gud-cont "-exec-continue" "\C-r" - "Continue with display.") - (gud-def gud-finish "-exec-finish" "\C-f" - "Finish executing current function.") - (gud-def gud-run "-exec-run" nil "Run the program.") - (gud-def gud-break (if (not (string-equal mode-name "Machine")) - (gud-call "break %f:%l" arg) - (save-excursion - (beginning-of-line) - (forward-char 2) - (gud-call "break *%a" arg))) - "\C-b" "Set breakpoint at current line or address.") - ;; - (gud-def gud-remove (if (not (string-equal mode-name "Machine")) - (gud-call "clear %f:%l" arg) - (save-excursion - (beginning-of-line) - (forward-char 2) - (gud-call "clear *%a" arg))) - "\C-d" "Remove breakpoint at current line or address.") - ;; - (gud-def gud-until (if (not (string-equal mode-name "Machine")) - (gud-call "-exec-until %f:%l" arg) - (save-excursion - (beginning-of-line) - (forward-char 2) - (gud-call "-exec-until *%a" arg))) - "\C-u" "Continue to current line or address.") - - (define-key gud-minor-mode-map [left-margin mouse-1] - 'gdb-mouse-set-clear-breakpoint) - (define-key gud-minor-mode-map [left-fringe mouse-1] - 'gdb-mouse-set-clear-breakpoint) - (define-key gud-minor-mode-map [left-fringe mouse-2] - 'gdb-mouse-until) - (define-key gud-minor-mode-map [left-fringe drag-mouse-1] - 'gdb-mouse-until) - (define-key gud-minor-mode-map [left-margin mouse-3] - 'gdb-mouse-toggle-breakpoint-margin) - (define-key gud-minor-mode-map [left-fringe mouse-3] - 'gdb-mouse-toggle-breakpoint-fringe) - - (setq comint-input-sender 'gdbmi-send) - ;; - ;; (re-)initialise - (setq gdb-pc-address (if gdb-show-main "main" nil) - gdb-previous-frame-address nil - gdb-memory-address "main" - gdb-previous-frame nil - gdb-selected-frame nil - gdb-frame-number nil - gdb-var-list nil - gdb-prompting nil - gdb-input-queue nil - gdb-current-item nil - gdb-pending-triggers nil - gdb-output-sink 'user - gdb-server-prefix nil - gdb-flush-pending-output nil - gdb-location-alist nil - gdb-source-file-list nil - gdb-last-command nil - gdb-prompt-name nil - gdb-buffer-fringe-width (car (window-fringes))) - gdb-debug-ring nil - gdb-source-window nil - gdb-inferior-status nil - gdb-continuation nil - ;; - (setq gdb-buffer-type 'gdbmi) - ;; - ;; FIXME: use tty command to separate io. - ;;(gdb-clear-inferior-io) - ;; - (if (eq window-system 'w32) - (gdb-enqueue-input (list "-gdb-set new-console off\n" 'ignore))) - (gdb-enqueue-input (list "-gdb-set height 0\n" 'ignore)) - ;; find source file and compilation directory here - (gdb-enqueue-input - ; Needs GDB 6.2 onwards. - (list "-file-list-exec-source-files\n" - 'gdb-set-gud-minor-mode-existing-buffers-1)) - (gdb-enqueue-input - ; Needs GDB 6.0 onwards. - (list "-file-list-exec-source-file\n" 'gdb-get-source-file)) - (gdb-enqueue-input - (list "-data-list-register-names\n" 'gdb-get-register-names)) - (gdb-enqueue-input - (list "-gdb-show prompt\n" 'gdb-get-prompt)) - ;; - (setq gdb-locals-font-lock-keywords gdb-locals-font-lock-keywords-2) - (run-hooks 'gdbmi-mode-hook)) - - -(defun gdbmi-send (proc string) - "A comint send filter for gdb." - (if gud-running - (process-send-string proc (concat string "\n")) - (with-current-buffer gud-comint-buffer - (let ((inhibit-read-only t)) - (remove-text-properties (point-min) (point-max) '(face)))) - (setq gdb-output-sink 'user) - (setq gdb-prompting nil) - ;; mimic key to repeat previous command in GDB - (if (not (string-match "^\\s+$" string)) - (setq gdb-last-command string) - (if gdb-last-command (setq string gdb-last-command))) - (if gdb-enable-debug - (push (cons 'mi-send (concat string "\n")) gdb-debug-ring)) - (if (string-match "^-" string) - ;; MI command - (process-send-string proc (concat string "\n")) - ;; CLI command - (if (string-match "\\\\$" string) - (setq gdb-continuation (concat gdb-continuation string "\n")) - (process-send-string proc - (concat "-interpreter-exec console \"" - gdb-continuation string "\"\n")) - (setq gdb-continuation nil))))) - -(defcustom gud-gdbmi-command-name "gdb -interp=mi" - "Default command to execute an executable under the GDB-UI debugger." - :type 'string - :group 'gud) - -(defconst gdb-gdb-regexp "(gdb) \n") - -(defconst gdb-running-regexp (concat "\\^running\n" gdb-gdb-regexp)) - -;; fullname added GDB 6.4+. -;; Probably not needed. -stack-info-frame computes filename and line. -(defconst gdb-stopped-regexp - "\\*stopped,reason=.*?,file=\".*?\"\ -,fullname=\"\\(.*?\\)\",line=\"\\(.*?\\)\"}\n") - -(defconst gdb-error-regexp "\\^error,msg=\\(\".+\"\\)\n") - -(defconst gdb-done-regexp "\\^done,*\n*") - -(defconst gdb-console-regexp "~\\(\".*?[^\\]\"\\)\n") - -(defconst gdb-internals-regexp "&\\(\".*?\\n\"\\)\n") - -(defun gdbmi-prompt1 () - "Queue any GDB commands that the user interface needs." - (unless gdb-pending-triggers - (gdbmi-get-selected-frame) - (gdbmi-invalidate-frames) - (gdbmi-invalidate-breakpoints) - (gdb-get-changed-registers) - (gdb-invalidate-registers-1) - (gdb-invalidate-locals-1) - (if (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) - (gdb-var-update-1)))) - -(defun gdbmi-prompt2 () - "Handle any output and send next GDB command." - (let ((sink gdb-output-sink)) - (when (eq sink 'emacs) - (let ((handler - (car (cdr gdb-current-item)))) - (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer) - (funcall handler))))) - (let ((input (gdb-dequeue-input))) - (if input - (gdb-send-item input) - (progn - (setq gud-running nil) - (setq gdb-prompting t) - (gud-display-frame))))) - -(defun gud-gdbmi-marker-filter (string) - "Filter GDB/MI output." - (if gdb-flush-pending-output - nil - (if gdb-enable-debug (push (cons 'recv (list string gdb-output-sink)) - gdb-debug-ring)) - ;; Recall the left over gud-marker-acc from last time - (setq gud-marker-acc (concat gud-marker-acc string)) - ;; Start accumulating output for the GUD buffer - (let ((output "") running) - - (if (string-match gdb-running-regexp gud-marker-acc) - (setq - gud-marker-acc - (concat (substring gud-marker-acc 0 (match-beginning 0)) - (substring gud-marker-acc (match-end 0))) - running t)) - - (if (string-match gdb-stopped-regexp gud-marker-acc) - (setq - - ;; Extract the frame position from the marker. - gud-last-frame (cons (match-string 1 gud-marker-acc) - (string-to-number - (match-string 2 gud-marker-acc))) - - gud-marker-acc - (concat (substring gud-marker-acc 0 (match-beginning 0)) - (substring gud-marker-acc (match-end 0))))) - - ;; Filter error messages going to GUD buffer and - ;; display in minibuffer. - (when (eq gdb-output-sink 'user) - (while (string-match gdb-error-regexp gud-marker-acc) - (message (read (match-string 1 gud-marker-acc))) - (setq - gud-marker-acc - (concat (substring gud-marker-acc 0 (match-beginning 0)) - (substring gud-marker-acc (match-end 0))))) - - (if (string-match gdb-done-regexp gud-marker-acc) - (setq - gud-marker-acc - (concat (substring gud-marker-acc 0 (match-beginning 0)) - (substring gud-marker-acc (match-end 0)))))) - - (when (string-match gdb-gdb-regexp gud-marker-acc) - (setq - gud-marker-acc - (concat (substring gud-marker-acc 0 (match-beginning 0)) - (substring gud-marker-acc (match-end 0)))) - - ;; Remove the trimmings from the console stream. - (while (string-match gdb-console-regexp gud-marker-acc) - (setq - gud-marker-acc (concat - (substring gud-marker-acc 0 (match-beginning 0)) - (read (match-string 1 gud-marker-acc)) - (substring gud-marker-acc (match-end 0))))) - - ;; Remove the trimmings from log stream containing debugging messages - ;; being produced by GDB's internals and use warning face. - (while (string-match gdb-internals-regexp gud-marker-acc) - (setq - gud-marker-acc - (concat (substring gud-marker-acc 0 (match-beginning 0)) - (let ((error-message - (read (match-string 1 gud-marker-acc)))) - (put-text-property - 0 (length error-message) - 'face font-lock-warning-face - error-message) - error-message) - (substring gud-marker-acc (match-end 0))))) - - (setq output (gdbmi-concat-output output gud-marker-acc)) - (setq gud-marker-acc "") - (gdbmi-prompt1) - (unless gdb-input-queue - (setq output (concat output gdb-prompt-name))) - (gdbmi-prompt2) - (setq gud-running running)) - - (when gud-running - (setq output (gdbmi-concat-output output gud-marker-acc)) - (setq gud-marker-acc "")) - - output))) - -(defun gdbmi-concat-output (so-far new) - (let ((sink gdb-output-sink)) - (cond - ((eq sink 'user) (concat so-far new)) - ((eq sink 'emacs) - (gdb-append-to-partial-output new) - so-far) - ((eq sink 'inferior) - (gdb-append-to-inferior-io new) - so-far)))) - - -;; Breakpoint buffer : This displays the output of `-break-list'. -;; -(def-gdb-auto-update-trigger gdbmi-invalidate-breakpoints - (gdb-get-buffer 'gdb-breakpoints-buffer) - "-break-list\n" - gdb-break-list-handler) - -(defconst gdb-break-list-regexp -"bkpt={.*?number=\"\\(.*?\\)\",.*?type=\"\\(.*?\\)\",.*?disp=\"\\(.*?\\)\",.*?\ -enabled=\"\\(.\\)\",.*?addr=\"\\(.*?\\)\",\\(?:.*?func=\"\\(.*?\\)\",.*?\ -file=\"\\(.*?\\)\",.*?fullname=\".*?\",.*?line=\"\\(.*?\\)\",\ -\\|\\(?:.*?what=\"\\(.*?\\)\",\\)*\\).*?times=\"\\(.*?\\)\".*?}") - -(defun gdb-break-list-handler () - (setq gdb-pending-triggers (delq 'gdbmi-invalidate-breakpoints - gdb-pending-triggers)) - (let ((breakpoint) (breakpoints-list)) - (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer) - (goto-char (point-min)) - (while (re-search-forward gdb-break-list-regexp nil t) - (let ((breakpoint (list (match-string 1) - (match-string 2) - (match-string 3) - (match-string 4) - (match-string 5) - (match-string 6) - (match-string 7) - (match-string 8) - (match-string 9) - (match-string 10)))) - (push breakpoint breakpoints-list)))) - (let ((buf (gdb-get-buffer 'gdb-breakpoints-buffer))) - (and buf (with-current-buffer buf - (let ((p (point)) - (buffer-read-only nil)) - (erase-buffer) - (insert "Num Type Disp Enb Hits Addr What\n") - (dolist (breakpoint breakpoints-list) - (insert - (concat - (nth 0 breakpoint) " " - (nth 1 breakpoint) " " - (nth 2 breakpoint) " " - (nth 3 breakpoint) " " - (nth 9 breakpoint) " " - (nth 4 breakpoint) " " - (if (nth 5 breakpoint) - (concat "in " (nth 5 breakpoint) " at " (nth 6 breakpoint) ":" (nth 7 breakpoint) "\n") - (concat (nth 8 breakpoint) "\n"))))) - (goto-char p)))))) - (gdb-info-breakpoints-custom)) - -(defun gdbmi-get-location (bptno line flag) - "Find the directory containing the relevant source file. -Put in buffer and place breakpoint icon." - (goto-char (point-min)) - (catch 'file-not-found - (if (re-search-forward gdb-source-file-regexp-1 nil t) - (delete (cons bptno "File not found") gdb-location-alist) - (push (cons bptno (match-string 1)) gdb-location-alist) - (gdb-resync) - (unless (assoc bptno gdb-location-alist) - (push (cons bptno "File not found") gdb-location-alist) - (message-box "Cannot find source file for breakpoint location. -Add directory to search path for source files using the GDB command, dir.")) - (throw 'file-not-found nil)) - (with-current-buffer - (find-file-noselect (match-string 1)) - (save-current-buffer - (set (make-local-variable 'gud-minor-mode) 'gdbmi) - (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)) - ;; only want one breakpoint icon at each location - (save-excursion - (goto-line (string-to-number line)) - (gdb-put-breakpoint-icon (eq flag ?y) bptno))))) - -;; Frames buffer. This displays a perpetually correct bactrack trace. -;; -(def-gdb-auto-update-trigger gdbmi-invalidate-frames - (gdb-get-buffer 'gdb-stack-buffer) - "-stack-list-frames\n" - gdb-stack-list-frames-handler) - -(defconst gdb-stack-list-frames-regexp -"{.*?level=\"\\(.*?\\)\",.*?addr=\"\\(.*?\\)\",.*?func=\"\\(.*?\\)\",\ -\\(?:.*?file=\".*?\",.*?fullname=\"\\(.*?\\)\",.*?line=\"\\(.*?\\)\".*?}\\|\ -from=\"\\(.*?\\)\"\\)") - -(defun gdb-stack-list-frames-handler () - (setq gdb-pending-triggers (delq 'gdbmi-invalidate-frames - gdb-pending-triggers)) - (let ((frame nil) - (call-stack nil)) - (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer) - (goto-char (point-min)) - (while (re-search-forward gdb-stack-list-frames-regexp nil t) - (let ((frame (list (match-string 1) - (match-string 2) - (match-string 3) - (match-string 4) - (match-string 5) - (match-string 6)))) - (push frame call-stack)))) - (let ((buf (gdb-get-buffer 'gdb-stack-buffer))) - (and buf (with-current-buffer buf - (let ((p (point)) - (buffer-read-only nil)) - (erase-buffer) - (insert "Level\tAddr\tFunc\tFile:Line\n") - (dolist (frame (nreverse call-stack)) - (insert - (concat - (nth 0 frame) "\t" - (nth 1 frame) "\t" - (propertize (nth 2 frame) - 'face font-lock-function-name-face) "\t" - (if (nth 3 frame) - (concat "at "(nth 3 frame) ":" (nth 4 frame) "\n") - (concat "from " (nth 5 frame) "\n"))))) - (goto-char p)))))) - (gdb-stack-list-frames-custom)) - -(defun gdb-stack-list-frames-custom () - (with-current-buffer (gdb-get-buffer 'gdb-stack-buffer) - (save-excursion - (let ((buffer-read-only nil)) - (goto-char (point-min)) - (forward-line 1) - (while (< (point) (point-max)) - (add-text-properties (point-at-bol) (point-at-eol) - '(mouse-face highlight - help-echo "mouse-2, RET: Select frame")) - (beginning-of-line) - (when (and (looking-at "^[0-9]+\\s-+\\(\\S-+\\)") - (equal (match-string 1) gdb-selected-frame)) - (put-text-property (point-at-bol) (point-at-eol) - 'face '(:inverse-video t))) - (forward-line 1)))))) - - -;; gdb-ui.el uses "info source" to find out if macro information is present. -(defun gdb-get-source-file () - "Find the source file where the program starts and display it with related -buffers, if required." - (goto-char (point-min)) - (if (re-search-forward gdb-source-file-regexp-1 nil t) - (setq gdb-main-file (match-string 1))) - (if gdb-many-windows - (gdb-setup-windows) - (gdb-get-buffer-create 'gdb-breakpoints-buffer) - (if gdb-show-main - (let ((pop-up-windows t)) - (display-buffer (gud-find-file gdb-main-file)))))) - -(defun gdbmi-get-selected-frame () - (if (not (member 'gdbmi-get-selected-frame gdb-pending-triggers)) - (progn - (gdb-enqueue-input - (list "-stack-info-frame\n" 'gdbmi-frame-handler)) - (push 'gdbmi-get-selected-frame - gdb-pending-triggers)))) - -(defun gdbmi-frame-handler () - (setq gdb-pending-triggers - (delq 'gdbmi-get-selected-frame gdb-pending-triggers)) - (with-current-buffer (gdb-get-buffer-create 'gdb-partial-output-buffer) - (goto-char (point-min)) - (when (re-search-forward gdb-stack-list-frames-regexp nil t) - (setq gdb-frame-number (match-string 1)) - (setq gdb-pc-address (match-string 2)) - (setq gdb-selected-frame (match-string 3)) - (when (match-string 4) - (setq gud-last-frame - (cons (match-string 4) (string-to-number (match-string 5)))) - (gud-display-frame) - (if gud-overlay-arrow-position - (let ((buffer (marker-buffer gud-overlay-arrow-position)) - (position (marker-position gud-overlay-arrow-position))) - (when buffer - (with-current-buffer buffer - (setq fringe-indicator-alist - (if (string-equal gdb-frame-number "0") - nil - '((overlay-arrow . hollow-right-triangle)))) - (setq gud-overlay-arrow-position (make-marker)) - (set-marker gud-overlay-arrow-position position)))))) - (if (gdb-get-buffer 'gdb-locals-buffer) - (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer) - (setq mode-name (concat "Locals:" gdb-selected-frame)))) - (if (gdb-get-buffer 'gdb-assembler-buffer) - (with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer) - (setq mode-name (concat "Machine:" gdb-selected-frame))))))) - -(defvar gdb-prompt-name-regexp "value=\"\\(.*?\\)\"") - -(defun gdb-get-prompt () - "Find prompt for GDB session." - (goto-char (point-min)) - (setq gdb-prompt-name nil) - (re-search-forward gdb-prompt-name-regexp nil t) - (setq gdb-prompt-name (match-string 1))) - -(provide 'gdb-mi) -;;; gdbmi.el ends here diff --git a/contrib/gdb-7/gdb/mi/mi-cmd-break.c b/contrib/gdb-7/gdb/mi/mi-cmd-break.c index 9ab8f2df77..34082440a1 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmd-break.c +++ b/contrib/gdb-7/gdb/mi/mi-cmd-break.c @@ -1,5 +1,5 @@ /* MI Command Set - breakpoint and watchpoint commands. - Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -66,20 +66,22 @@ void mi_cmd_break_insert (char *command, char **argv, int argc) { char *address = NULL; - enum bp_type type = REG_BP; + int hardware = 0; int temp_p = 0; int thread = -1; int ignore_count = 0; char *condition = NULL; int pending = 0; int enabled = 1; + int tracepoint = 0; + struct cleanup *back_to; + enum bptype type_wanted; - struct gdb_exception e; - struct gdb_events *old_hooks; enum opt { - HARDWARE_OPT, TEMP_OPT /*, REGEXP_OPT */ , CONDITION_OPT, - IGNORE_COUNT_OPT, THREAD_OPT, PENDING_OPT, DISABLE_OPT + HARDWARE_OPT, TEMP_OPT, CONDITION_OPT, + IGNORE_COUNT_OPT, THREAD_OPT, PENDING_OPT, DISABLE_OPT, + TRACEPOINT_OPT, }; static struct mi_opt opts[] = { @@ -90,6 +92,7 @@ mi_cmd_break_insert (char *command, char **argv, int argc) {"p", THREAD_OPT, 1}, {"f", PENDING_OPT, 0}, {"d", DISABLE_OPT, 0}, + {"a", TRACEPOINT_OPT, 0}, { 0, 0, 0 } }; @@ -97,6 +100,7 @@ mi_cmd_break_insert (char *command, char **argv, int argc) to denote the end of the option list. */ int optind = 0; char *optarg; + while (1) { int opt = mi_getopt ("mi_cmd_break_insert", argc, argv, opts, &optind, &optarg); @@ -108,13 +112,8 @@ mi_cmd_break_insert (char *command, char **argv, int argc) temp_p = 1; break; case HARDWARE_OPT: - type = HW_BP; - break; -#if 0 - case REGEXP_OPT: - type = REGEXP_BP; + hardware = 1; break; -#endif case CONDITION_OPT: condition = optarg; break; @@ -129,6 +128,10 @@ mi_cmd_break_insert (char *command, char **argv, int argc) break; case DISABLE_OPT: enabled = 0; + break; + case TRACEPOINT_OPT: + tracepoint = 1; + break; } } @@ -147,40 +150,28 @@ mi_cmd_break_insert (char *command, char **argv, int argc) mi_breakpoint_observers_installed = 1; } + back_to = make_cleanup_restore_integer (&mi_can_breakpoint_notify); mi_can_breakpoint_notify = 1; - /* Make sure we restore hooks even if exception is thrown. */ - TRY_CATCH (e, RETURN_MASK_ALL) - { - switch (type) - { - case REG_BP: - set_breakpoint (get_current_arch (), address, condition, - 0 /*hardwareflag */ , temp_p, - thread, ignore_count, - pending, enabled); - break; - case HW_BP: - set_breakpoint (get_current_arch (), address, condition, - 1 /*hardwareflag */ , temp_p, - thread, ignore_count, - pending, enabled); - break; -#if 0 - case REGEXP_BP: - if (temp_p) - error (_("mi_cmd_break_insert: Unsupported tempoary regexp breakpoint")); - else - rbreak_command_wrapper (address, FROM_TTY); - break; -#endif - default: - internal_error (__FILE__, __LINE__, - _("mi_cmd_break_insert: Bad switch.")); - } - } - mi_can_breakpoint_notify = 0; - if (e.reason < 0) - throw_exception (e); + + /* Note that to request a fast tracepoint, the client uses the + "hardware" flag, although there's nothing of hardware related to + fast tracepoints -- one can implement slow tracepoints with + hardware breakpoints, but fast tracepoints are always software. + "fast" is a misnomer, actually, "jump" would be more appropriate. + A simulator or an emulator could conceivably implement fast + regular non-jump based tracepoints. */ + type_wanted = (tracepoint + ? (hardware ? bp_fast_tracepoint : bp_tracepoint) + : (hardware ? bp_hardware_breakpoint : bp_breakpoint)); + + create_breakpoint (get_current_arch (), address, condition, thread, + 0 /* condition and thread are valid. */, + temp_p, type_wanted, + ignore_count, + pending ? AUTO_BOOLEAN_TRUE : AUTO_BOOLEAN_FALSE, + NULL, 0, enabled); + do_cleanups (back_to); + } enum wp_type @@ -190,6 +181,31 @@ enum wp_type ACCESS_WP }; +void +mi_cmd_break_passcount (char *command, char **argv, int argc) +{ + int n; + int p; + struct breakpoint *t; + + if (argc != 2) + error (_("Usage: tracepoint-number passcount")); + + n = atoi (argv[0]); + p = atoi (argv[1]); + t = get_tracepoint (n); + + if (t) + { + t->pass_count = p; + observer_notify_tracepoint_modified (n); + } + else + { + error (_("Cound not find tracepoint %d"), n); + } +} + /* Insert a watchpoint. The type of watchpoint is specified by the first argument: -break-watch --> insert a regular wp. @@ -215,9 +231,12 @@ mi_cmd_break_watch (char *command, char **argv, int argc) /* Parse arguments. */ int optind = 0; char *optarg; + while (1) { - int opt = mi_getopt ("mi_cmd_break_watch", argc, argv, opts, &optind, &optarg); + int opt = mi_getopt ("mi_cmd_break_watch", argc, argv, + opts, &optind, &optarg); + if (opt < 0) break; switch ((enum opt) opt) @@ -263,7 +282,7 @@ static int mi_command_line_array_cnt; static int mi_command_line_array_ptr; static char * -mi_read_next_line () +mi_read_next_line (void) { if (mi_command_line_array_ptr == mi_command_line_array_cnt) return NULL; @@ -298,7 +317,12 @@ mi_cmd_break_commands (char *command, char **argv, int argc) mi_command_line_array_ptr = 1; mi_command_line_array_cnt = argc; - break_command = read_command_lines_1 (mi_read_next_line, 0); + if (is_tracepoint (b)) + break_command = read_command_lines_1 (mi_read_next_line, 1, + check_tracepoint_command, b); + else + break_command = read_command_lines_1 (mi_read_next_line, 1, 0, 0); + breakpoint_set_commands (b, break_command); } diff --git a/contrib/gdb-7/gdb/mi/mi-cmd-disas.c b/contrib/gdb-7/gdb/mi/mi-cmd-disas.c index 124f87d370..b543acc6c2 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmd-disas.c +++ b/contrib/gdb-7/gdb/mi/mi-cmd-disas.c @@ -1,5 +1,5 @@ /* MI Command Set - disassemble commands. - Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). diff --git a/contrib/gdb-7/gdb/mi/mi-cmd-env.c b/contrib/gdb-7/gdb/mi/mi-cmd-env.c index 9f7cfc202c..24f6426989 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmd-env.c +++ b/contrib/gdb-7/gdb/mi/mi-cmd-env.c @@ -1,6 +1,6 @@ /* MI Command Set - environment commands. - Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat Inc. @@ -52,6 +52,7 @@ env_execute_cli_command (const char *cmd, const char *args) { struct cleanup *old_cleanups; char *run; + if (args != NULL) run = xstrprintf ("%s %s", cmd, args); else @@ -141,6 +142,7 @@ mi_cmd_env_path (char *command, char **argv, int argc) { int opt = mi_getopt ("mi_cmd_env_path", argc, argv, opts, &optind, &optarg); + if (opt < 0) break; switch ((enum opt) opt) @@ -162,7 +164,7 @@ mi_cmd_env_path (char *command, char **argv, int argc) else { /* Otherwise, get current path to modify. */ - env = get_in_environ (inferior_environ, path_var_name); + env = get_in_environ (current_inferior ()->environment, path_var_name); /* Can be null if path is not set. */ if (!env) @@ -173,9 +175,9 @@ mi_cmd_env_path (char *command, char **argv, int argc) for (i = argc - 1; i >= 0; --i) env_mod_path (argv[i], &exec_path); - set_in_environ (inferior_environ, path_var_name, exec_path); + set_in_environ (current_inferior ()->environment, path_var_name, exec_path); xfree (exec_path); - env = get_in_environ (inferior_environ, path_var_name); + env = get_in_environ (current_inferior ()->environment, path_var_name); ui_out_field_string (uiout, "path", env); } @@ -211,6 +213,7 @@ mi_cmd_env_dir (char *command, char **argv, int argc) { int opt = mi_getopt ("mi_cmd_env_dir", argc, argv, opts, &optind, &optarg); + if (opt < 0) break; switch ((enum opt) opt) @@ -260,10 +263,17 @@ mi_cmd_inferior_tty_show (char *command, char **argv, int argc) void _initialize_mi_cmd_env (void) { + struct gdb_environ *environment; char *env; - /* We want original execution path to reset to, if desired later. */ - env = get_in_environ (inferior_environ, path_var_name); + /* We want original execution path to reset to, if desired later. + At this point, current inferior is not created, so cannot use + current_inferior ()->environment. Also, there's no obvious + place where this code can be moved suchs that it surely run + before any code possibly mangles original PATH. */ + environment = make_environ (); + init_environ (environment); + env = get_in_environ (environment, path_var_name); /* Can be null if path is not set. */ if (!env) diff --git a/contrib/gdb-7/gdb/mi/mi-cmd-file.c b/contrib/gdb-7/gdb/mi/mi-cmd-file.c index 4fdf8c782c..5542eaa8f7 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmd-file.c +++ b/contrib/gdb-7/gdb/mi/mi-cmd-file.c @@ -1,5 +1,5 @@ /* MI Command Set - breakpoint and watchpoint commands. - Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -25,6 +25,7 @@ #include "symtab.h" #include "source.h" #include "objfiles.h" +#include "psymtab.h" /* Return to the client the absolute path and line number of the current file being executed. */ @@ -33,8 +34,6 @@ void mi_cmd_file_list_exec_source_file (char *command, char **argv, int argc) { struct symtab_and_line st; - int optind = 0; - char *optarg; if (!mi_valid_noargs ("mi_cmd_file_list_exec_source_file", argc, argv)) error (_("mi_cmd_file_list_exec_source_file: Usage: No args")); @@ -63,11 +62,25 @@ mi_cmd_file_list_exec_source_file (char *command, char **argv, int argc) ui_out_field_int (uiout, "macro-info", st.symtab->macro_table ? 1 : 0); } +/* A callback for map_partial_symbol_filenames. */ +static void +print_partial_file_name (const char *filename, const char *fullname, + void *ignore) +{ + ui_out_begin (uiout, ui_out_type_tuple, NULL); + + ui_out_field_string (uiout, "file", filename); + + if (fullname) + ui_out_field_string (uiout, "fullname", fullname); + + ui_out_end (uiout, ui_out_type_tuple); +} + void mi_cmd_file_list_exec_source_files (char *command, char **argv, int argc) { struct symtab *s; - struct partial_symtab *ps; struct objfile *objfile; if (!mi_valid_noargs ("mi_cmd_file_list_exec_source_files", argc, argv)) @@ -92,24 +105,7 @@ mi_cmd_file_list_exec_source_files (char *command, char **argv, int argc) ui_out_end (uiout, ui_out_type_tuple); } - /* Look at all of the psymtabs */ - ALL_PSYMTABS (objfile, ps) - { - if (!ps->readin) - { - ui_out_begin (uiout, ui_out_type_tuple, NULL); - - ui_out_field_string (uiout, "file", ps->filename); - - /* Extract the fullname if it is not known yet */ - psymtab_to_fullname (ps); - - if (ps->fullname) - ui_out_field_string (uiout, "fullname", ps->fullname); - - ui_out_end (uiout, ui_out_type_tuple); - } - } + map_partial_symbol_filenames (print_partial_file_name, NULL); ui_out_end (uiout, ui_out_type_list); } diff --git a/contrib/gdb-7/gdb/mi/mi-cmd-stack.c b/contrib/gdb-7/gdb/mi/mi-cmd-stack.c index dd0626940b..67970558c0 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmd-stack.c +++ b/contrib/gdb-7/gdb/mi/mi-cmd-stack.c @@ -1,5 +1,5 @@ /* MI Command Set - stack commands. - Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -32,7 +32,11 @@ #include "language.h" #include "valprint.h" -static void list_args_or_locals (int locals, int values, struct frame_info *fi); + +enum what_to_list { locals, arguments, all }; + +static void list_args_or_locals (enum what_to_list what, + int values, struct frame_info *fi); /* Print a list of the stack frames. Args can be none, in which case we want to print the whole backtrace, or a pair of numbers @@ -134,24 +138,23 @@ parse_print_values (char *name) mi_no_values, mi_all_values, mi_simple_values); } -/* Print a list of the locals for the current frame. With argument of +/* Print a list of the locals for the current frame. With argument of 0, print only the names, with argument of 1 print also the values. */ void mi_cmd_stack_list_locals (char *command, char **argv, int argc) { struct frame_info *frame; - enum print_values print_values; if (argc != 1) error (_("mi_cmd_stack_list_locals: Usage: PRINT_VALUES")); frame = get_selected_frame (NULL); - list_args_or_locals (1, parse_print_values (argv[0]), frame); + list_args_or_locals (locals, parse_print_values (argv[0]), frame); } -/* Print a list of the arguments for the current frame. With argument +/* Print a list of the arguments for the current frame. With argument of 0, print only the names, with argument of 1 print also the values. */ void @@ -201,36 +204,71 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc) i++, fi = get_prev_frame (fi)) { struct cleanup *cleanup_frame; + QUIT; cleanup_frame = make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); ui_out_field_int (uiout, "level", i); - list_args_or_locals (0, print_values, fi); + list_args_or_locals (arguments, print_values, fi); do_cleanups (cleanup_frame); } do_cleanups (cleanup_stack_args); } +/* Print a list of the local variables (including arguments) for the + current frame. ARGC must be 1 and ARGV[0] specify if only the names, + or both names and values of the variables must be printed. See + parse_print_value for possible values. */ +void +mi_cmd_stack_list_variables (char *command, char **argv, int argc) +{ + struct frame_info *frame; + + if (argc != 1) + error (_("Usage: PRINT_VALUES")); + + frame = get_selected_frame (NULL); + + list_args_or_locals (all, parse_print_values (argv[0]), frame); +} + + /* Print a list of the locals or the arguments for the currently selected frame. If the argument passed is 0, printonly the names of the variables, if an argument of 1 is passed, print the values as well. */ static void -list_args_or_locals (int locals, int values, struct frame_info *fi) +list_args_or_locals (enum what_to_list what, int values, struct frame_info *fi) { struct block *block; struct symbol *sym; struct dict_iterator iter; - int nsyms; struct cleanup *cleanup_list; static struct ui_stream *stb = NULL; struct type *type; + char *name_of_result; stb = ui_out_stream_new (uiout); block = get_frame_block (fi, 0); - cleanup_list = make_cleanup_ui_out_list_begin_end (uiout, locals ? "locals" : "args"); + switch (what) + { + case locals: + name_of_result = "locals"; + break; + case arguments: + name_of_result = "args"; + break; + case all: + name_of_result = "variables"; + break; + default: + internal_error (__FILE__, __LINE__, + "unexpected what_to_list: %d", (int) what); + } + + cleanup_list = make_cleanup_ui_out_list_begin_end (uiout, name_of_result); while (block != 0) { @@ -259,8 +297,12 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) case LOC_STATIC: /* static */ case LOC_REGISTER: /* register */ case LOC_COMPUTED: /* computed location */ - if (SYMBOL_IS_ARGUMENT (sym) ? !locals : locals) + if (what == all) print_me = 1; + else if (what == locals) + print_me = !SYMBOL_IS_ARGUMENT (sym); + else + print_me = SYMBOL_IS_ARGUMENT (sym); break; } if (print_me) @@ -268,12 +310,15 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) struct cleanup *cleanup_tuple = NULL; struct symbol *sym2; struct value *val; - if (values != PRINT_NO_VALUES) + + if (values != PRINT_NO_VALUES || what == all) cleanup_tuple = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); ui_out_field_string (uiout, "name", SYMBOL_PRINT_NAME (sym)); + if (what == all && SYMBOL_IS_ARGUMENT (sym)) + ui_out_field_int (uiout, "arg", 1); - if (!locals) + if (SYMBOL_IS_ARGUMENT (sym)) sym2 = lookup_symbol (SYMBOL_NATURAL_NAME (sym), block, VAR_DOMAIN, (int *) NULL); @@ -290,6 +335,7 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) && TYPE_CODE (type) != TYPE_CODE_UNION) { struct value_print_options opts; + val = read_var_value (sym2, fi); get_raw_print_options (&opts); opts.deref_ref = 1; @@ -298,11 +344,11 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) language_def (SYMBOL_LANGUAGE (sym2))); ui_out_field_stream (uiout, "value", stb); } - do_cleanups (cleanup_tuple); break; case PRINT_ALL_VALUES: { struct value_print_options opts; + val = read_var_value (sym2, fi); get_raw_print_options (&opts); opts.deref_ref = 1; @@ -310,10 +356,12 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) (val, stb->stream, 0, &opts, language_def (SYMBOL_LANGUAGE (sym2))); ui_out_field_stream (uiout, "value", stb); - do_cleanups (cleanup_tuple); } break; } + + if (values != PRINT_NO_VALUES || what == all) + do_cleanups (cleanup_tuple); } } if (BLOCK_FUNCTION (block)) diff --git a/contrib/gdb-7/gdb/mi/mi-cmd-target.c b/contrib/gdb-7/gdb/mi/mi-cmd-target.c index 7cab5e109d..0e5df2179e 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmd-target.c +++ b/contrib/gdb-7/gdb/mi/mi-cmd-target.c @@ -1,5 +1,5 @@ /* MI Command Set - target commands. - Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -76,7 +76,7 @@ mi_cmd_target_file_delete (char *command, char **argv, int argc) { int optind = 0; char *optarg; - const char *remote_file, *local_file; + const char *remote_file; static struct mi_opt opts[] = { { 0, 0, 0 } diff --git a/contrib/gdb-7/gdb/mi/mi-cmd-var.c b/contrib/gdb-7/gdb/mi/mi-cmd-var.c index 0baaa8388d..310ade9d03 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmd-var.c +++ b/contrib/gdb-7/gdb/mi/mi-cmd-var.c @@ -1,6 +1,6 @@ /* MI Command Set - varobj commands. - Copyright (C) 2000, 2002, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2002, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -50,7 +50,6 @@ static void print_varobj (struct varobj *var, enum print_values print_values, int print_expression) { - struct type *gdb_type; char *type; int thread_id; char *display_hint; @@ -63,6 +62,7 @@ print_varobj (struct varobj *var, enum print_values print_values, if (mi_print_value_p (var, print_values)) { char *val = varobj_get_value (var); + ui_out_field_string (uiout, "value", val); xfree (val); } @@ -394,7 +394,6 @@ mi_cmd_var_list_children (char *command, char **argv, int argc) struct varobj *var; VEC(varobj_p) *children; struct varobj *child; - int numchild; enum print_values print_values; int ix; int from, to; @@ -437,6 +436,7 @@ mi_cmd_var_list_children (char *command, char **argv, int argc) if (from < to) { struct cleanup *cleanup_children; + if (mi_version (uiout) == 1) cleanup_children = make_cleanup_ui_out_tuple_begin_end (uiout, "children"); @@ -448,6 +448,7 @@ mi_cmd_var_list_children (char *command, char **argv, int argc) ++ix) { struct cleanup *cleanup_child; + cleanup_child = make_cleanup_ui_out_tuple_begin_end (uiout, "child"); print_varobj (child, print_values, 1 /* print expression */); do_cleanups (cleanup_child); @@ -556,7 +557,9 @@ mi_cmd_var_evaluate_expression (char *command, char **argv, int argc) optind = 0; while (1) { - int opt = mi_getopt ("-var-evaluate-expression", argc, argv, opts, &optind, &optarg); + int opt = mi_getopt ("-var-evaluate-expression", argc, argv, + opts, &optind, &optarg); + if (opt < 0) break; switch ((enum opt) opt) @@ -583,12 +586,14 @@ mi_cmd_var_evaluate_expression (char *command, char **argv, int argc) if (formatFound) { char *val = varobj_get_formatted_value (var, format); + ui_out_field_string (uiout, "value", val); xfree (val); } else { char *val = varobj_get_value (var); + ui_out_field_string (uiout, "value", val); xfree (val); } @@ -712,7 +717,6 @@ static void varobj_update_one (struct varobj *var, enum print_values print_values, int explicit) { - struct varobj **cc; struct cleanup *cleanup = NULL; VEC (varobj_update_result) *changes; varobj_update_result *r; @@ -735,6 +739,7 @@ varobj_update_one (struct varobj *var, enum print_values print_values, if (mi_print_value_p (r->varobj, print_values)) { char *val = varobj_get_value (r->varobj); + ui_out_field_string (uiout, "value", val); xfree (val); } @@ -787,6 +792,7 @@ varobj_update_one (struct varobj *var, enum print_values print_values, for (j = 0; VEC_iterate (varobj_p, r->new, j, child); ++j) { struct cleanup *cleanup_child; + cleanup_child = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); print_varobj (child, print_values, 1 /* print_expression */); do_cleanups (cleanup_child); diff --git a/contrib/gdb-7/gdb/mi/mi-cmds.c b/contrib/gdb-7/gdb/mi/mi-cmds.c index 8ba086c62b..8441e178b4 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmds.c +++ b/contrib/gdb-7/gdb/mi/mi-cmds.c @@ -1,6 +1,6 @@ /* MI Command Set for GDB, the GNU debugger. - Copyright (C) 2000, 2001, 2003, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -33,6 +33,7 @@ static void build_table (struct mi_cmd *commands); struct mi_cmd mi_cmds[] = { + { "add-inferior", { NULL, 0 }, mi_cmd_add_inferior }, { "break-after", { "ignore", 1 }, NULL }, { "break-condition", { "cond", 1 }, NULL }, { "break-commands", { NULL, 0 }, mi_cmd_break_commands }, @@ -42,6 +43,7 @@ struct mi_cmd mi_cmds[] = { "break-info", { "info break", 1 }, NULL }, { "break-insert", { NULL, 0 }, mi_cmd_break_insert}, { "break-list", { "info break", }, NULL }, + { "break-passcount", { NULL, 0 }, mi_cmd_break_passcount}, { "break-watch", { NULL, 0 }, mi_cmd_break_watch}, { "data-disassemble", { NULL, 0 }, mi_cmd_disassemble}, { "data-evaluate-expression", { NULL, 0 }, mi_cmd_data_evaluate_expression}, @@ -65,7 +67,7 @@ struct mi_cmd mi_cmds[] = { "exec-next", { NULL, 0 }, mi_cmd_exec_next}, { "exec-next-instruction", { NULL, 0 }, mi_cmd_exec_next_instruction}, { "exec-return", { NULL, 0 }, mi_cmd_exec_return}, - { "exec-run", { "run", 1 }, NULL}, + { "exec-run", { NULL, 0}, mi_cmd_exec_run}, { "exec-step", { NULL, 0 }, mi_cmd_exec_step}, { "exec-step-instruction", { NULL, 0 }, mi_cmd_exec_step_instruction}, { "exec-until", { "until", 1 }, NULL}, @@ -84,11 +86,13 @@ struct mi_cmd mi_cmds[] = { "list-features", { NULL, 0 }, mi_cmd_list_features}, { "list-target-features", { NULL, 0 }, mi_cmd_list_target_features}, { "list-thread-groups", { NULL, 0 }, mi_cmd_list_thread_groups }, + { "remove-inferior", { NULL, 0 }, mi_cmd_remove_inferior }, { "stack-info-depth", { NULL, 0 }, mi_cmd_stack_info_depth}, { "stack-info-frame", { NULL, 0 }, mi_cmd_stack_info_frame}, { "stack-list-arguments", { NULL, 0 }, mi_cmd_stack_list_args}, { "stack-list-frames", { NULL, 0 }, mi_cmd_stack_list_frames}, { "stack-list-locals", { NULL, 0 }, mi_cmd_stack_list_locals}, + { "stack-list-variables", { NULL, 0 }, mi_cmd_stack_list_variables}, { "stack-select-frame", { NULL, 0 }, mi_cmd_stack_select_frame}, { "symbol-list-lines", { NULL, 0 }, mi_cmd_symbol_list_lines}, { "target-attach", { "attach", 1 }, NULL }, @@ -102,6 +106,13 @@ struct mi_cmd mi_cmds[] = { "thread-info", { NULL, 0 }, mi_cmd_thread_info }, { "thread-list-ids", { NULL, 0 }, mi_cmd_thread_list_ids}, { "thread-select", { NULL, 0 }, mi_cmd_thread_select}, + { "trace-define-variable", { NULL, 0 }, mi_cmd_trace_define_variable }, + { "trace-find", { NULL, 0 }, mi_cmd_trace_find }, + { "trace-list-variables", { NULL, 0 }, mi_cmd_trace_list_variables }, + { "trace-save", { NULL, 0 }, mi_cmd_trace_save }, + { "trace-start", { NULL, 0 }, mi_cmd_trace_start }, + { "trace-status", { NULL, 0 }, mi_cmd_trace_status }, + { "trace-stop", { NULL, 0 }, mi_cmd_trace_stop }, { "var-assign", { NULL, 0 }, mi_cmd_var_assign}, { "var-create", { NULL, 0 }, mi_cmd_var_create}, { "var-delete", { NULL, 0 }, mi_cmd_var_delete}, @@ -153,6 +164,7 @@ lookup_table (const char *command) { const char *chp; unsigned int index = 0; + /* compute our hash */ for (chp = command; *chp; chp++) { @@ -192,6 +204,7 @@ build_table (struct mi_cmd *commands) for (command = commands; command->name != 0; command++) { struct mi_cmd **entry = lookup_table (command->name); + if (*entry) internal_error (__FILE__, __LINE__, _("command `%s' appears to be duplicated"), diff --git a/contrib/gdb-7/gdb/mi/mi-cmds.h b/contrib/gdb-7/gdb/mi/mi-cmds.h index dfab411c6d..5954aef182 100644 --- a/contrib/gdb-7/gdb/mi/mi-cmds.h +++ b/contrib/gdb-7/gdb/mi/mi-cmds.h @@ -1,6 +1,6 @@ /* MI Command Set for GDB, the GNU debugger. - Copyright (C) 2000, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -36,8 +36,10 @@ extern const char mi_all_values[]; typedef void (mi_cmd_argv_ftype) (char *command, char **argv, int argc); /* Function implementing each command */ +extern mi_cmd_argv_ftype mi_cmd_add_inferior; extern mi_cmd_argv_ftype mi_cmd_break_insert; extern mi_cmd_argv_ftype mi_cmd_break_commands; +extern mi_cmd_argv_ftype mi_cmd_break_passcount; extern mi_cmd_argv_ftype mi_cmd_break_watch; extern mi_cmd_argv_ftype mi_cmd_disassemble; extern mi_cmd_argv_ftype mi_cmd_data_evaluate_expression; @@ -54,13 +56,14 @@ extern mi_cmd_argv_ftype mi_cmd_env_path; extern mi_cmd_argv_ftype mi_cmd_env_pwd; extern mi_cmd_argv_ftype mi_cmd_exec_continue; extern mi_cmd_argv_ftype mi_cmd_exec_finish; +extern mi_cmd_argv_ftype mi_cmd_exec_interrupt; extern mi_cmd_argv_ftype mi_cmd_exec_jump; extern mi_cmd_argv_ftype mi_cmd_exec_next; extern mi_cmd_argv_ftype mi_cmd_exec_next_instruction; extern mi_cmd_argv_ftype mi_cmd_exec_return; +extern mi_cmd_argv_ftype mi_cmd_exec_run; extern mi_cmd_argv_ftype mi_cmd_exec_step; extern mi_cmd_argv_ftype mi_cmd_exec_step_instruction; -extern mi_cmd_argv_ftype mi_cmd_exec_interrupt; extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file; extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files; extern mi_cmd_argv_ftype mi_cmd_gdb_exit; @@ -70,11 +73,13 @@ extern mi_cmd_argv_ftype mi_cmd_interpreter_exec; extern mi_cmd_argv_ftype mi_cmd_list_features; extern mi_cmd_argv_ftype mi_cmd_list_target_features; extern mi_cmd_argv_ftype mi_cmd_list_thread_groups; +extern mi_cmd_argv_ftype mi_cmd_remove_inferior; extern mi_cmd_argv_ftype mi_cmd_stack_info_depth; extern mi_cmd_argv_ftype mi_cmd_stack_info_frame; extern mi_cmd_argv_ftype mi_cmd_stack_list_args; extern mi_cmd_argv_ftype mi_cmd_stack_list_frames; extern mi_cmd_argv_ftype mi_cmd_stack_list_locals; +extern mi_cmd_argv_ftype mi_cmd_stack_list_variables; extern mi_cmd_argv_ftype mi_cmd_stack_select_frame; extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines; extern mi_cmd_argv_ftype mi_cmd_target_detach; @@ -84,6 +89,13 @@ extern mi_cmd_argv_ftype mi_cmd_target_file_delete; extern mi_cmd_argv_ftype mi_cmd_thread_info; extern mi_cmd_argv_ftype mi_cmd_thread_list_ids; extern mi_cmd_argv_ftype mi_cmd_thread_select; +extern mi_cmd_argv_ftype mi_cmd_trace_define_variable; +extern mi_cmd_argv_ftype mi_cmd_trace_find; +extern mi_cmd_argv_ftype mi_cmd_trace_list_variables; +extern mi_cmd_argv_ftype mi_cmd_trace_save; +extern mi_cmd_argv_ftype mi_cmd_trace_start; +extern mi_cmd_argv_ftype mi_cmd_trace_status; +extern mi_cmd_argv_ftype mi_cmd_trace_stop; extern mi_cmd_argv_ftype mi_cmd_var_assign; extern mi_cmd_argv_ftype mi_cmd_var_create; extern mi_cmd_argv_ftype mi_cmd_var_delete; diff --git a/contrib/gdb-7/gdb/mi/mi-common.c b/contrib/gdb-7/gdb/mi/mi-common.c index 45385270ac..68d66d3265 100644 --- a/contrib/gdb-7/gdb/mi/mi-common.c +++ b/contrib/gdb-7/gdb/mi/mi-common.c @@ -1,5 +1,5 @@ /* Interface for common GDB/MI data - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mi/mi-common.h b/contrib/gdb-7/gdb/mi/mi-common.h index 0cdf1140fe..f9b40503c6 100644 --- a/contrib/gdb-7/gdb/mi/mi-common.h +++ b/contrib/gdb-7/gdb/mi/mi-common.h @@ -1,5 +1,5 @@ /* Interface for common GDB/MI data - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mi/mi-console.c b/contrib/gdb-7/gdb/mi/mi-console.c index 9acfa792d5..eb5d0749d0 100644 --- a/contrib/gdb-7/gdb/mi/mi-console.c +++ b/contrib/gdb-7/gdb/mi/mi-console.c @@ -1,6 +1,6 @@ /* MI Console code. - Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -47,6 +47,7 @@ mi_console_file_new (struct ui_file *raw, { struct ui_file *ui_file = ui_file_new (); struct mi_console_file *mi_console = XMALLOC (struct mi_console_file); + mi_console->magic = &mi_console_file_magic; mi_console->raw = raw; mi_console->buffer = mem_fileopen (); @@ -62,6 +63,7 @@ static void mi_console_file_delete (struct ui_file *file) { struct mi_console_file *mi_console = ui_file_data (file); + if (mi_console->magic != &mi_console_file_magic) internal_error (__FILE__, __LINE__, _("mi_console_file_delete: bad magic number")); @@ -73,6 +75,7 @@ mi_console_file_fputs (const char *buf, struct ui_file *file) { struct mi_console_file *mi_console = ui_file_data (file); + if (mi_console->magic != &mi_console_file_magic) internal_error (__FILE__, __LINE__, "mi_console_file_fputs: bad magic number"); @@ -90,6 +93,7 @@ mi_console_raw_packet (void *data, long length_buf) { struct mi_console_file *mi_console = data; + if (mi_console->magic != &mi_console_file_magic) internal_error (__FILE__, __LINE__, _("mi_console_file_transform: bad magic number")); @@ -116,6 +120,7 @@ static void mi_console_file_flush (struct ui_file *file) { struct mi_console_file *mi_console = ui_file_data (file); + if (mi_console->magic != &mi_console_file_magic) internal_error (__FILE__, __LINE__, _("mi_console_file_flush: bad magic number")); diff --git a/contrib/gdb-7/gdb/mi/mi-console.h b/contrib/gdb-7/gdb/mi/mi-console.h index 7bbcd73eb8..ea14722113 100644 --- a/contrib/gdb-7/gdb/mi/mi-console.h +++ b/contrib/gdb-7/gdb/mi/mi-console.h @@ -1,5 +1,5 @@ /* MI Command Set - MI Console. - Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mi/mi-getopt.c b/contrib/gdb-7/gdb/mi/mi-getopt.c index de165801d9..19a318acf7 100644 --- a/contrib/gdb-7/gdb/mi/mi-getopt.c +++ b/contrib/gdb-7/gdb/mi/mi-getopt.c @@ -1,5 +1,6 @@ /* MI Command Set - MI Option Parser. - Copyright (C) 2000, 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). This file is part of GDB. @@ -29,6 +30,7 @@ mi_getopt (const char *prefix, { char *arg; struct mi_opt *opt; + /* We assume that argv/argc are ok. */ if (*optind > argc || *optind < 0) internal_error (__FILE__, __LINE__, diff --git a/contrib/gdb-7/gdb/mi/mi-getopt.h b/contrib/gdb-7/gdb/mi/mi-getopt.h index cb708acec3..32fa8a6b01 100644 --- a/contrib/gdb-7/gdb/mi/mi-getopt.h +++ b/contrib/gdb-7/gdb/mi/mi-getopt.h @@ -1,5 +1,5 @@ /* MI Option Parser. - Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mi/mi-interp.c b/contrib/gdb-7/gdb/mi/mi-interp.c index 5ad4a51753..f18406bb37 100644 --- a/contrib/gdb-7/gdb/mi/mi-interp.c +++ b/contrib/gdb-7/gdb/mi/mi-interp.c @@ -1,6 +1,6 @@ /* MI Interpreter Definitions and Commands for GDB, the GNU debugger. - Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -44,7 +44,7 @@ static void mi_command_loop (int mi_version); so we can report interesting things that happened "behind the mi's back" in this command */ static int mi_interp_query_hook (const char *ctlstr, va_list ap) - ATTR_FORMAT (printf, 1, 0); + ATTRIBUTE_PRINTF (1, 0); static void mi3_command_loop (void); static void mi2_command_loop (void); @@ -56,13 +56,17 @@ static void mi_on_normal_stop (struct bpstats *bs, int print_frame); static void mi_new_thread (struct thread_info *t); static void mi_thread_exit (struct thread_info *t, int silent); -static void mi_new_inferior (int pid); -static void mi_inferior_exit (int pid); +static void mi_inferior_added (struct inferior *inf); +static void mi_inferior_appeared (struct inferior *inf); +static void mi_inferior_exit (struct inferior *inf); +static void mi_inferior_removed (struct inferior *inf); static void mi_on_resume (ptid_t ptid); static void mi_solib_loaded (struct so_list *solib); static void mi_solib_unloaded (struct so_list *solib); static void mi_about_to_proceed (void); +static int report_initial_inferior (struct inferior *inf, void *closure); + static void * mi_interpreter_init (int top_level) { @@ -86,13 +90,20 @@ mi_interpreter_init (int top_level) { observer_attach_new_thread (mi_new_thread); observer_attach_thread_exit (mi_thread_exit); - observer_attach_new_inferior (mi_new_inferior); + observer_attach_inferior_added (mi_inferior_added); + observer_attach_inferior_appeared (mi_inferior_appeared); observer_attach_inferior_exit (mi_inferior_exit); + observer_attach_inferior_removed (mi_inferior_removed); observer_attach_normal_stop (mi_on_normal_stop); observer_attach_target_resumed (mi_on_resume); observer_attach_solib_loaded (mi_solib_loaded); observer_attach_solib_unloaded (mi_solib_unloaded); observer_attach_about_to_proceed (mi_about_to_proceed); + + /* The initial inferior is created before this function is called, so we + need to report it explicitly. Use iteration in case future version + of GDB creates more than one inferior up-front. */ + iterate_over_inferiors (report_initial_inferior, mi); } return mi; @@ -102,8 +113,8 @@ static int mi_interpreter_resume (void *data) { struct mi_interp *mi = data; - /* As per hack note in mi_interpreter_init, swap in the output channels... */ + /* As per hack note in mi_interpreter_init, swap in the output channels... */ gdb_setup_readline (); /* These overwrite some of the initialization done in @@ -158,8 +169,8 @@ mi_interpreter_suspend (void *data) static struct gdb_exception mi_interpreter_exec (void *data, const char *command) { - static struct gdb_exception ok; char *tmp = alloca (strlen (command) + 1); + strcpy (tmp, command); mi_execute_command_wrapper (tmp); return exception_none; @@ -177,7 +188,6 @@ mi_cmd_interpreter_exec (char *command, char **argv, int argc) { struct interp *interp_to_use; int i; - struct interp_procs *procs; char *mi_error_message = NULL; struct cleanup *old_chain; @@ -204,6 +214,7 @@ mi_cmd_interpreter_exec (char *command, char **argv, int argc) for (i = 1; i < argc; i++) { struct gdb_exception e = interp_exec (interp_to_use, argv[i]); + if (e.reason < 0) { mi_error_message = xstrdup (e.message); @@ -285,10 +296,13 @@ static void mi_new_thread (struct thread_info *t) { struct mi_interp *mi = top_level_interpreter_data (); + struct inferior *inf = find_inferior_pid (ptid_get_pid (t->ptid)); + + gdb_assert (inf); fprintf_unfiltered (mi->event_channel, - "thread-created,id=\"%d\",group-id=\"%d\"", - t->num, t->ptid.pid); + "thread-created,id=\"%d\",group-id=\"i%d\"", + t->num, inf->num); gdb_flush (mi->event_channel); } @@ -296,38 +310,68 @@ static void mi_thread_exit (struct thread_info *t, int silent) { struct mi_interp *mi; + struct inferior *inf; if (silent) return; + inf = find_inferior_pid (ptid_get_pid (t->ptid)); + mi = top_level_interpreter_data (); target_terminal_ours (); fprintf_unfiltered (mi->event_channel, - "thread-exited,id=\"%d\",group-id=\"%d\"", - t->num,t->ptid.pid); + "thread-exited,id=\"%d\",group-id=\"i%d\"", + t->num, inf->num); + gdb_flush (mi->event_channel); +} + +static void +mi_inferior_added (struct inferior *inf) +{ + struct mi_interp *mi = top_level_interpreter_data (); + + target_terminal_ours (); + fprintf_unfiltered (mi->event_channel, + "thread-group-added,id=\"i%d\"", + inf->num); gdb_flush (mi->event_channel); } static void -mi_new_inferior (int pid) +mi_inferior_appeared (struct inferior *inf) { struct mi_interp *mi = top_level_interpreter_data (); + target_terminal_ours (); - fprintf_unfiltered (mi->event_channel, "thread-group-created,id=\"%d\"", - pid); + fprintf_unfiltered (mi->event_channel, + "thread-group-started,id=\"i%d\",pid=\"%d\"", + inf->num, inf->pid); gdb_flush (mi->event_channel); } static void -mi_inferior_exit (int pid) +mi_inferior_exit (struct inferior *inf) { struct mi_interp *mi = top_level_interpreter_data (); + target_terminal_ours (); - fprintf_unfiltered (mi->event_channel, "thread-group-exited,id=\"%d\"", - pid); + fprintf_unfiltered (mi->event_channel, "thread-group-exited,id=\"i%d\"", + inf->num); gdb_flush (mi->event_channel); } +static void +mi_inferior_removed (struct inferior *inf) +{ + struct mi_interp *mi = top_level_interpreter_data (); + + target_terminal_ours (); + fprintf_unfiltered (mi->event_channel, + "thread-group-removed,id=\"i%d\"", + inf->num); + gdb_flush (mi->event_channel); +} + static void mi_on_normal_stop (struct bpstats *bs, int print_frame) { @@ -335,10 +379,11 @@ mi_on_normal_stop (struct bpstats *bs, int print_frame) using cli interpreter, be sure to use MI uiout for output, not the current one. */ struct ui_out *mi_uiout = interp_ui_out (top_level_interpreter ()); - struct mi_interp *mi = top_level_interpreter_data (); if (print_frame) { + int core; + if (uiout != mi_uiout) { /* The normal_stop function has printed frame information into @@ -347,6 +392,7 @@ mi_on_normal_stop (struct bpstats *bs, int print_frame) the frame again. In practice, this can only happen when running a CLI command in MI. */ struct ui_out *saved_uiout = uiout; + uiout = mi_uiout; print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC); uiout = saved_uiout; @@ -358,12 +404,17 @@ mi_on_normal_stop (struct bpstats *bs, int print_frame) { struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (mi_uiout, "stopped-threads"); + ui_out_field_int (mi_uiout, NULL, - pid_to_thread_id (inferior_ptid)); + pid_to_thread_id (inferior_ptid)); do_cleanups (back_to); } else ui_out_field_string (mi_uiout, "stopped-threads", "all"); + + core = target_core_of_thread (inferior_ptid); + if (core != -1) + ui_out_field_int (mi_uiout, "core", core); } fputs_unfiltered ("*stopped", raw_stdout); @@ -382,6 +433,7 @@ mi_about_to_proceed (void) if (!ptid_equal (inferior_ptid, null_ptid)) { struct thread_info *tp = inferior_thread (); + if (tp->in_infcall) return; } @@ -438,9 +490,8 @@ mi_on_resume (ptid_t ptid) In future (MI3), we'll be outputting "^done" here. */ if (!running_result_record_printed && mi_proceeded) { - if (current_token) - fputs_unfiltered (current_token, raw_stdout); - fputs_unfiltered ("^running\n", raw_stdout); + fprintf_unfiltered (raw_stdout, "%s^running\n", + current_token ? current_token : ""); } if (PIDGET (ptid) == -1) @@ -462,6 +513,7 @@ mi_on_resume (ptid_t ptid) else { struct thread_info *ti = find_thread_ptid (ptid); + gdb_assert (ti); fprintf_unfiltered (raw_stdout, "*running,thread-id=\"%d\"\n", ti->num); } @@ -484,11 +536,23 @@ static void mi_solib_loaded (struct so_list *solib) { struct mi_interp *mi = top_level_interpreter_data (); + target_terminal_ours (); - fprintf_unfiltered (mi->event_channel, - "library-loaded,id=\"%s\",target-name=\"%s\",host-name=\"%s\",symbols-loaded=\"%d\"", - solib->so_original_name, solib->so_original_name, - solib->so_name, solib->symbols_loaded); + if (gdbarch_has_global_solist (target_gdbarch)) + fprintf_unfiltered (mi->event_channel, + "library-loaded,id=\"%s\",target-name=\"%s\"," + "host-name=\"%s\",symbols-loaded=\"%d\"", + solib->so_original_name, solib->so_original_name, + solib->so_name, solib->symbols_loaded); + else + fprintf_unfiltered (mi->event_channel, + "library-loaded,id=\"%s\",target-name=\"%s\"," + "host-name=\"%s\",symbols-loaded=\"%d\"," + "thread-group=\"i%d\"", + solib->so_original_name, solib->so_original_name, + solib->so_name, solib->symbols_loaded, + current_inferior ()->num); + gdb_flush (mi->event_channel); } @@ -496,14 +560,40 @@ static void mi_solib_unloaded (struct so_list *solib) { struct mi_interp *mi = top_level_interpreter_data (); + target_terminal_ours (); - fprintf_unfiltered (mi->event_channel, - "library-unloaded,id=\"%s\",target-name=\"%s\",host-name=\"%s\"", - solib->so_original_name, solib->so_original_name, - solib->so_name); + if (gdbarch_has_global_solist (target_gdbarch)) + fprintf_unfiltered (mi->event_channel, + "library-unloaded,id=\"%s\",target-name=\"%s\"," + "host-name=\"%s\"", + solib->so_original_name, solib->so_original_name, + solib->so_name); + else + fprintf_unfiltered (mi->event_channel, + "library-unloaded,id=\"%s\",target-name=\"%s\"," + "host-name=\"%s\",thread-group=\"i%d\"", + solib->so_original_name, solib->so_original_name, + solib->so_name, current_inferior ()->num); + gdb_flush (mi->event_channel); } +static int +report_initial_inferior (struct inferior *inf, void *closure) +{ + /* This function is called from mi_intepreter_init, and since + mi_inferior_added assumes that inferior is fully initialized + and top_level_interpreter_data is set, we cannot call + it here. */ + struct mi_interp *mi = closure; + + target_terminal_ours (); + fprintf_unfiltered (mi->event_channel, + "thread-group-added,id=\"i%d\"", + inf->num); + gdb_flush (mi->event_channel); + return 0; +} extern initialize_file_ftype _initialize_mi_interp; /* -Wmissing-prototypes */ diff --git a/contrib/gdb-7/gdb/mi/mi-main.c b/contrib/gdb-7/gdb/mi/mi-main.c index 857a5d5125..b9964753b6 100644 --- a/contrib/gdb-7/gdb/mi/mi-main.c +++ b/contrib/gdb-7/gdb/mi/mi-main.c @@ -1,6 +1,6 @@ /* MI Command Set. - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -50,6 +50,8 @@ #include "valprint.h" #include "inferior.h" #include "osdata.h" +#include "splay-tree.h" +#include "tracepoint.h" #include #include @@ -77,6 +79,11 @@ static struct mi_timestamp *current_command_ts; static int do_timings = 0; char *current_token; +/* Few commands would like to know if options like --thread-group + were explicitly specified. This variable keeps the current + parsed command including all option, and make it possible. */ +static struct mi_parse *current_context; + int running_result_record_printed = 1; /* Flag indicating that the target has proceeded since the last @@ -111,6 +118,7 @@ mi_cmd_gdb_exit (char *command, char **argv, int argc) fputs_unfiltered (current_token, raw_stdout); fputs_unfiltered ("^exit\n", raw_stdout); mi_out_put (uiout, raw_stdout); + gdb_flush (raw_stdout); /* FIXME: The function called is not yet a formal libgdb function. */ quit_force (NULL, FROM_TTY); } @@ -119,35 +127,50 @@ void mi_cmd_exec_next (char *command, char **argv, int argc) { /* FIXME: Should call a libgdb function, not a cli wrapper. */ - mi_execute_async_cli_command ("next", argv, argc); + if (argc > 0 && strcmp(argv[0], "--reverse") == 0) + mi_execute_async_cli_command ("reverse-next", argv + 1, argc - 1); + else + mi_execute_async_cli_command ("next", argv, argc); } void mi_cmd_exec_next_instruction (char *command, char **argv, int argc) { /* FIXME: Should call a libgdb function, not a cli wrapper. */ - mi_execute_async_cli_command ("nexti", argv, argc); + if (argc > 0 && strcmp(argv[0], "--reverse") == 0) + mi_execute_async_cli_command ("reverse-nexti", argv + 1, argc - 1); + else + mi_execute_async_cli_command ("nexti", argv, argc); } void mi_cmd_exec_step (char *command, char **argv, int argc) { /* FIXME: Should call a libgdb function, not a cli wrapper. */ - mi_execute_async_cli_command ("step", argv, argc); + if (argc > 0 && strcmp(argv[0], "--reverse") == 0) + mi_execute_async_cli_command ("reverse-step", argv + 1, argc - 1); + else + mi_execute_async_cli_command ("step", argv, argc); } void mi_cmd_exec_step_instruction (char *command, char **argv, int argc) { /* FIXME: Should call a libgdb function, not a cli wrapper. */ - mi_execute_async_cli_command ("stepi", argv, argc); + if (argc > 0 && strcmp(argv[0], "--reverse") == 0) + mi_execute_async_cli_command ("reverse-stepi", argv + 1, argc - 1); + else + mi_execute_async_cli_command ("stepi", argv, argc); } void mi_cmd_exec_finish (char *command, char **argv, int argc) { /* FIXME: Should call a libgdb function, not a cli wrapper. */ - mi_execute_async_cli_command ("finish", argv, argc); + if (argc > 0 && strcmp(argv[0], "--reverse") == 0) + mi_execute_async_cli_command ("reverse-finish", argv + 1, argc - 1); + else + mi_execute_async_cli_command ("finish", argv, argc); } void @@ -173,49 +196,115 @@ void mi_cmd_exec_jump (char *args, char **argv, int argc) { /* FIXME: Should call a libgdb function, not a cli wrapper. */ - return mi_execute_async_cli_command ("jump", argv, argc); + mi_execute_async_cli_command ("jump", argv, argc); } -static int -proceed_thread_callback (struct thread_info *thread, void *arg) +static void +proceed_thread (struct thread_info *thread, int pid) { - int pid = *(int *)arg; - if (!is_stopped (thread->ptid)) - return 0; + return; - if (PIDGET (thread->ptid) != pid) - return 0; + if (pid != 0 && PIDGET (thread->ptid) != pid) + return; switch_to_thread (thread->ptid); clear_proceed_status (); proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0); +} + + +static int +proceed_thread_callback (struct thread_info *thread, void *arg) +{ + int pid = *(int *)arg; + + proceed_thread (thread, pid); return 0; } +static void +exec_continue (char **argv, int argc) +{ + if (non_stop) + { + /* In non-stop mode, 'resume' always resumes a single thread. Therefore, + to resume all threads of the current inferior, or all threads in all + inferiors, we need to iterate over threads. + + See comment on infcmd.c:proceed_thread_callback for rationale. */ + if (current_context->all || current_context->thread_group != -1) + { + int pid = 0; + struct cleanup *back_to = make_cleanup_restore_current_thread (); + + if (!current_context->all) + { + struct inferior *inf = find_inferior_id (current_context->thread_group); + pid = inf->pid; + } + iterate_over_threads (proceed_thread_callback, &pid); + do_cleanups (back_to); + } + else + { + continue_1 (0); + } + } + else + { + struct cleanup *back_to = make_cleanup_restore_integer (&sched_multi); + + if (current_context->all) + { + sched_multi = 1; + continue_1 (0); + } + else + { + /* In all-stop mode, -exec-continue traditionally resumed either + all threads, or one thread, depending on the 'scheduler-locking' + variable. Let's continue to do the same. */ + continue_1 (1); + } + do_cleanups (back_to); + } +} + +static void +exec_direction_forward (void *notused) +{ + execution_direction = EXEC_FORWARD; +} + +static void +exec_reverse_continue (char **argv, int argc) +{ + enum exec_direction_kind dir = execution_direction; + struct cleanup *old_chain; + + if (dir == EXEC_ERROR) + error (_("Target %s does not support this command."), target_shortname); + + if (dir == EXEC_REVERSE) + error (_("Already in reverse mode.")); + + if (!target_can_execute_reverse) + error (_("Target %s does not support this command."), target_shortname); + + old_chain = make_cleanup (exec_direction_forward, NULL); + execution_direction = EXEC_REVERSE; + exec_continue (argv, argc); + do_cleanups (old_chain); +} + void mi_cmd_exec_continue (char *command, char **argv, int argc) { - if (argc == 0) - continue_1 (0); - else if (argc == 1 && strcmp (argv[0], "--all") == 0) - continue_1 (1); - else if (argc == 2 && strcmp (argv[0], "--thread-group") == 0) - { - struct cleanup *old_chain; - int pid; - if (argv[1] == NULL || argv[1] == '\0') - error ("Thread group id not specified"); - pid = atoi (argv[1]); - if (!in_inferior_list (pid)) - error ("Invalid thread group id '%s'", argv[1]); - - old_chain = make_cleanup_restore_current_thread (); - iterate_over_threads (proceed_thread_callback, &pid); - do_cleanups (old_chain); - } + if (argc > 0 && strcmp (argv[0], "--reverse") == 0) + exec_reverse_continue (argv + 1, argc - 1); else - error ("Usage: -exec-continue [--all|--thread-group id]"); + exec_continue (argv, argc); } static int @@ -241,42 +330,84 @@ interrupt_thread_callback (struct thread_info *thread, void *arg) void mi_cmd_exec_interrupt (char *command, char **argv, int argc) { - if (argc == 0) + /* In all-stop mode, everything stops, so we don't need to try + anything specific. */ + if (!non_stop) { - if (!is_running (inferior_ptid)) - error ("Current thread is not running."); - interrupt_target_1 (0); + return; } - else if (argc == 1 && strcmp (argv[0], "--all") == 0) + + if (current_context->all) { - if (!any_running ()) - error ("Inferior not running."); - + /* This will interrupt all threads in all inferiors. */ interrupt_target_1 (1); } - else if (argc == 2 && strcmp (argv[0], "--thread-group") == 0) - { - struct cleanup *old_chain; - int pid; - if (argv[1] == NULL || argv[1] == '\0') - error ("Thread group id not specified"); - pid = atoi (argv[1]); - if (!in_inferior_list (pid)) - error ("Invalid thread group id '%s'", argv[1]); - - old_chain = make_cleanup_restore_current_thread (); - iterate_over_threads (interrupt_thread_callback, &pid); - do_cleanups (old_chain); + else if (current_context->thread_group != -1) + { + struct inferior *inf = find_inferior_id (current_context->thread_group); + + iterate_over_threads (interrupt_thread_callback, &inf->pid); + } + else + { + /* Interrupt just the current thread -- either explicitly + specified via --thread or whatever was current before + MI command was sent. */ + interrupt_target_1 (0); + } +} + +static int +run_one_inferior (struct inferior *inf, void *arg) +{ + if (inf->pid != 0) + { + if (inf->pid != ptid_get_pid (inferior_ptid)) + { + struct thread_info *tp; + + tp = any_thread_of_process (inf->pid); + if (!tp) + error (_("Inferior has no threads.")); + + switch_to_thread (tp->ptid); + } + } + else + { + set_current_inferior (inf); + switch_to_thread (null_ptid); + set_current_program_space (inf->pspace); + } + mi_execute_cli_command ("run", target_can_async_p (), + target_can_async_p () ? "&" : NULL); + return 0; +} + +void +mi_cmd_exec_run (char *command, char **argv, int argc) +{ + if (current_context->all) + { + struct cleanup *back_to = save_current_space_and_thread (); + + iterate_over_inferiors (run_one_inferior, NULL); + do_cleanups (back_to); } else - error ("Usage: -exec-interrupt [--all|--thread-group id]"); + { + mi_execute_cli_command ("run", target_can_async_p (), + target_can_async_p () ? "&" : NULL); + } } + static int find_thread_of_process (struct thread_info *ti, void *p) { int pid = *(int *)p; + if (PIDGET (ti->ptid) == pid && !is_exited (ti->ptid)) return 1; @@ -294,6 +425,7 @@ mi_cmd_target_detach (char *command, char **argv, int argc) struct thread_info *tp; char *end = argv[0]; int pid = strtol (argv[0], &end, 10); + if (*end != '\0') error (_("Cannot parse thread group id '%s'"), argv[0]); @@ -359,95 +491,387 @@ mi_cmd_thread_info (char *command, char **argv, int argc) print_thread_info (uiout, thread, -1); } +struct collect_cores_data +{ + int pid; + + VEC (int) *cores; +}; + static int -print_one_inferior (struct inferior *inferior, void *arg) +collect_cores (struct thread_info *ti, void *xdata) { - struct cleanup *back_to = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); + struct collect_cores_data *data = xdata; + + if (ptid_get_pid (ti->ptid) == data->pid) + { + int core = target_core_of_thread (ti->ptid); + + if (core != -1) + VEC_safe_push (int, data->cores, core); + } - ui_out_field_fmt (uiout, "id", "%d", inferior->pid); - ui_out_field_string (uiout, "type", "process"); - ui_out_field_int (uiout, "pid", inferior->pid); - - do_cleanups (back_to); return 0; } -void -mi_cmd_list_thread_groups (char *command, char **argv, int argc) +static int * +unique (int *b, int *e) { - struct cleanup *back_to; - int available = 0; - char *id = NULL; + int *d = b; - if (argc > 0 && strcmp (argv[0], "--available") == 0) - { - ++argv; - --argc; - available = 1; - } + while (++b != e) + if (*d != *b) + *++d = *b; + return ++d; +} - if (argc > 0) - id = argv[0]; +struct print_one_inferior_data +{ + int recurse; + VEC (int) *inferiors; +}; - back_to = make_cleanup (null_cleanup, NULL); +static int +print_one_inferior (struct inferior *inferior, void *xdata) +{ + struct print_one_inferior_data *top_data = xdata; - if (available && id) + if (VEC_empty (int, top_data->inferiors) + || bsearch (&(inferior->pid), VEC_address (int, top_data->inferiors), + VEC_length (int, top_data->inferiors), sizeof (int), + compare_positive_ints)) { - error (_("Can only report top-level available thread groups")); + struct collect_cores_data data; + struct cleanup *back_to + = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); + + ui_out_field_fmt (uiout, "id", "i%d", inferior->num); + ui_out_field_string (uiout, "type", "process"); + if (inferior->pid != 0) + ui_out_field_int (uiout, "pid", inferior->pid); + + if (inferior->pspace->ebfd) + { + ui_out_field_string (uiout, "executable", + bfd_get_filename (inferior->pspace->ebfd)); + } + + data.cores = 0; + if (inferior->pid != 0) + { + data.pid = inferior->pid; + iterate_over_threads (collect_cores, &data); + } + + if (!VEC_empty (int, data.cores)) + { + int *b, *e; + struct cleanup *back_to_2 = + make_cleanup_ui_out_list_begin_end (uiout, "cores"); + + qsort (VEC_address (int, data.cores), + VEC_length (int, data.cores), sizeof (int), + compare_positive_ints); + + b = VEC_address (int, data.cores); + e = b + VEC_length (int, data.cores); + e = unique (b, e); + + for (; b != e; ++b) + ui_out_field_int (uiout, NULL, *b); + + do_cleanups (back_to_2); + } + + if (top_data->recurse) + print_thread_info (uiout, -1, inferior->pid); + + do_cleanups (back_to); } - else if (available) - { - struct osdata *data; - struct osdata_item *item; - int ix_items; - data = get_osdata ("processes"); - make_cleanup_osdata_free (data); + return 0; +} + +/* Output a field named 'cores' with a list as the value. The elements of + the list are obtained by splitting 'cores' on comma. */ - make_cleanup_ui_out_list_begin_end (uiout, "groups"); +static void +output_cores (struct ui_out *uiout, const char *field_name, const char *xcores) +{ + struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout, + field_name); + char *cores = xstrdup (xcores); + char *p = cores; + + make_cleanup (xfree, cores); + + for (p = strtok (p, ","); p; p = strtok (NULL, ",")) + ui_out_field_string (uiout, NULL, p); + + do_cleanups (back_to); +} + +static void +free_vector_of_ints (void *xvector) +{ + VEC (int) **vector = xvector; + + VEC_free (int, *vector); +} + +static void +do_nothing (splay_tree_key k) +{ +} + +static void +free_vector_of_osdata_items (splay_tree_value xvalue) +{ + VEC (osdata_item_s) *value = (VEC (osdata_item_s) *) xvalue; + + /* We don't free the items itself, it will be done separately. */ + VEC_free (osdata_item_s, value); +} + +static int +splay_tree_int_comparator (splay_tree_key xa, splay_tree_key xb) +{ + int a = xa; + int b = xb; + + return a - b; +} + +static void +free_splay_tree (void *xt) +{ + splay_tree t = xt; + splay_tree_delete (t); +} + +static void +list_available_thread_groups (VEC (int) *ids, int recurse) +{ + struct osdata *data; + struct osdata_item *item; + int ix_items; + + /* This keeps a map from integer (pid) to VEC (struct osdata_item *)* + The vector contains information about all threads for the given pid. + This is assigned an initial value to avoid "may be used uninitialized" + warning from gcc. */ + splay_tree tree = NULL; + + /* get_osdata will throw if it cannot return data. */ + data = get_osdata ("processes"); + make_cleanup_osdata_free (data); + + if (recurse) + { + struct osdata *threads = get_osdata ("threads"); + + make_cleanup_osdata_free (threads); + tree = splay_tree_new (splay_tree_int_comparator, + do_nothing, + free_vector_of_osdata_items); + make_cleanup (free_splay_tree, tree); for (ix_items = 0; - VEC_iterate (osdata_item_s, data->items, + VEC_iterate (osdata_item_s, threads->items, ix_items, item); ix_items++) { - struct cleanup *back_to = - make_cleanup_ui_out_tuple_begin_end (uiout, NULL); - const char *pid = get_osdata_column (item, "pid"); - const char *cmd = get_osdata_column (item, "command"); - const char *user = get_osdata_column (item, "user"); + int pid_i = strtoul (pid, NULL, 0); + VEC (osdata_item_s) *vec = 0; + + splay_tree_node n = splay_tree_lookup (tree, pid_i); + if (!n) + { + VEC_safe_push (osdata_item_s, vec, item); + splay_tree_insert (tree, pid_i, (splay_tree_value)vec); + } + else + { + vec = (VEC (osdata_item_s) *) n->value; + VEC_safe_push (osdata_item_s, vec, item); + n->value = (splay_tree_value) vec; + } + } + } - ui_out_field_fmt (uiout, "id", "%s", pid); - ui_out_field_string (uiout, "type", "process"); - if (cmd) - ui_out_field_string (uiout, "description", cmd); - if (user) - ui_out_field_string (uiout, "user", user); + make_cleanup_ui_out_list_begin_end (uiout, "groups"); - do_cleanups (back_to); + for (ix_items = 0; + VEC_iterate (osdata_item_s, data->items, + ix_items, item); + ix_items++) + { + struct cleanup *back_to; + + const char *pid = get_osdata_column (item, "pid"); + const char *cmd = get_osdata_column (item, "command"); + const char *user = get_osdata_column (item, "user"); + const char *cores = get_osdata_column (item, "cores"); + + int pid_i = strtoul (pid, NULL, 0); + + /* At present, the target will return all available processes + and if information about specific ones was required, we filter + undesired processes here. */ + if (ids && bsearch (&pid_i, VEC_address (int, ids), + VEC_length (int, ids), + sizeof (int), compare_positive_ints) == NULL) + continue; + + + back_to = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); + + ui_out_field_fmt (uiout, "id", "%s", pid); + ui_out_field_string (uiout, "type", "process"); + if (cmd) + ui_out_field_string (uiout, "description", cmd); + if (user) + ui_out_field_string (uiout, "user", user); + if (cores) + output_cores (uiout, "cores", cores); + + if (recurse) + { + splay_tree_node n = splay_tree_lookup (tree, pid_i); + if (n) + { + VEC (osdata_item_s) *children = (VEC (osdata_item_s) *) n->value; + struct osdata_item *child; + int ix_child; + + make_cleanup_ui_out_list_begin_end (uiout, "threads"); + + for (ix_child = 0; + VEC_iterate (osdata_item_s, children, ix_child, child); + ++ix_child) + { + struct cleanup *back_to_2 = + make_cleanup_ui_out_tuple_begin_end (uiout, NULL); + const char *tid = get_osdata_column (child, "tid"); + const char *tcore = get_osdata_column (child, "core"); + + ui_out_field_string (uiout, "id", tid); + if (tcore) + ui_out_field_string (uiout, "core", tcore); + + do_cleanups (back_to_2); + } + } } + + do_cleanups (back_to); + } +} + +void +mi_cmd_list_thread_groups (char *command, char **argv, int argc) +{ + struct cleanup *back_to; + int available = 0; + int recurse = 0; + VEC (int) *ids = 0; + + enum opt + { + AVAILABLE_OPT, RECURSE_OPT + }; + static struct mi_opt opts[] = + { + {"-available", AVAILABLE_OPT, 0}, + {"-recurse", RECURSE_OPT, 1}, + { 0, 0, 0 } + }; + + int optind = 0; + char *optarg; + + while (1) + { + int opt = mi_getopt ("-list-thread-groups", argc, argv, opts, + &optind, &optarg); + + if (opt < 0) + break; + switch ((enum opt) opt) + { + case AVAILABLE_OPT: + available = 1; + break; + case RECURSE_OPT: + if (strcmp (optarg, "0") == 0) + ; + else if (strcmp (optarg, "1") == 0) + recurse = 1; + else + error ("only '0' and '1' are valid values for the '--recurse' option"); + break; + } + } + + for (; optind < argc; ++optind) + { + char *end; + int inf; + + if (*(argv[optind]) != 'i') + error ("invalid syntax of group id '%s'", argv[optind]); + + inf = strtoul (argv[optind] + 1, &end, 0); + + if (*end != '\0') + error ("invalid syntax of group id '%s'", argv[optind]); + VEC_safe_push (int, ids, inf); + } + if (VEC_length (int, ids) > 1) + qsort (VEC_address (int, ids), + VEC_length (int, ids), + sizeof (int), compare_positive_ints); + + back_to = make_cleanup (free_vector_of_ints, &ids); + + if (available) + { + list_available_thread_groups (ids, recurse); } - else if (id) + else if (VEC_length (int, ids) == 1) { - int pid = atoi (id); - if (!in_inferior_list (pid)) - error ("Invalid thread group id '%s'", id); - print_thread_info (uiout, -1, pid); + /* Local thread groups, single id. */ + int id = *VEC_address (int, ids); + struct inferior *inf = find_inferior_id (id); + + if (!inf) + error ("Non-existent thread group id '%d'", id); + + print_thread_info (uiout, -1, inf->pid); } else { + struct print_one_inferior_data data; + + data.recurse = recurse; + data.inferiors = ids; + + /* Local thread groups. Either no explicit ids -- and we + print everything, or several explicit ids. In both cases, + we print more than one group, and have to use 'groups' + as the top-level element. */ make_cleanup_ui_out_list_begin_end (uiout, "groups"); - iterate_over_inferiors (print_one_inferior, NULL); + update_thread_list (); + iterate_over_inferiors (print_one_inferior, &data); } - + do_cleanups (back_to); } void mi_cmd_data_list_register_names (char *command, char **argv, int argc) { - struct frame_info *frame; struct gdbarch *gdbarch; int regnum, numregs; int i; @@ -459,8 +883,7 @@ mi_cmd_data_list_register_names (char *command, char **argv, int argc) In this case, some entries of gdbarch_register_name will change depending upon the particular processor being debugged. */ - frame = get_selected_frame (NULL); - gdbarch = get_frame_arch (frame); + gdbarch = get_current_arch (); numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch); cleanup = make_cleanup_ui_out_list_begin_end (uiout, "register-names"); @@ -694,6 +1117,7 @@ get_register (struct frame_info *frame, int regnum, int format) { int idx = gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG ? j : register_size (gdbarch, regnum) - 1 - j; + sprintf (ptr, "%02x", (unsigned char) buffer[idx]); ptr += 2; } @@ -703,10 +1127,11 @@ get_register (struct frame_info *frame, int regnum, int format) else { struct value_print_options opts; + get_formatted_print_options (&opts, format); opts.deref_ref = 1; val_print (register_type (gdbarch, regnum), buffer, 0, 0, - stb->stream, 0, &opts, current_language); + stb->stream, 0, NULL, &opts, current_language); ui_out_field_stream (uiout, "value", stb); ui_out_stream_delete (stb); } @@ -797,9 +1222,7 @@ mi_cmd_data_evaluate_expression (char *command, char **argv, int argc) /* Print the result of the expression evaluation. */ get_user_print_options (&opts); opts.deref_ref = 0; - val_print (value_type (val), value_contents (val), - value_embedded_offset (val), value_address (val), - stb->stream, 0, &opts, current_language); + common_val_print (val, stb->stream, 0, &opts, current_language); ui_out_field_stream (uiout, "value", stb); ui_out_stream_delete (stb); @@ -859,6 +1282,7 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc) { int opt = mi_getopt ("mi_cmd_data_read_memory", argc, argv, opts, &optind, &optarg); + if (opt < 0) break; switch ((enum opt) opt) @@ -951,6 +1375,7 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc) struct cleanup *cleanup_list_memory; int row; int row_byte; + cleanup_list_memory = make_cleanup_ui_out_list_begin_end (uiout, "memory"); for (row = 0, row_byte = 0; row < nr_rows; @@ -987,6 +1412,7 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc) if (aschar) { int byte; + ui_file_rewind (stream->stream); for (byte = row_byte; byte < row_byte + word_size * nr_cols; byte++) { @@ -1057,6 +1483,7 @@ mi_cmd_data_write_memory (char *command, char **argv, int argc) { int opt = mi_getopt ("mi_cmd_data_write_memory", argc, argv, opts, &optind, &optarg); + if (opt < 0) break; switch ((enum opt) opt) @@ -1125,8 +1552,8 @@ mi_cmd_list_features (char *command, char **argv, int argc) if (argc == 0) { struct cleanup *cleanup = NULL; - cleanup = make_cleanup_ui_out_list_begin_end (uiout, "features"); + cleanup = make_cleanup_ui_out_list_begin_end (uiout, "features"); ui_out_field_string (uiout, NULL, "frozen-varobjs"); ui_out_field_string (uiout, NULL, "pending-breakpoints"); ui_out_field_string (uiout, NULL, "thread-info"); @@ -1148,10 +1575,12 @@ mi_cmd_list_target_features (char *command, char **argv, int argc) if (argc == 0) { struct cleanup *cleanup = NULL; - cleanup = make_cleanup_ui_out_list_begin_end (uiout, "features"); + cleanup = make_cleanup_ui_out_list_begin_end (uiout, "features"); if (target_can_async_p ()) ui_out_field_string (uiout, NULL, "async"); + if (target_can_execute_reverse) + ui_out_field_string (uiout, NULL, "reverse"); do_cleanups (cleanup); return; @@ -1160,6 +1589,40 @@ mi_cmd_list_target_features (char *command, char **argv, int argc) error ("-list-target-features should be passed no arguments"); } +void +mi_cmd_add_inferior (char *command, char **argv, int argc) +{ + struct inferior *inf; + + if (argc != 0) + error (_("-add-inferior should be passed no arguments")); + + inf = add_inferior_with_spaces (); + + ui_out_field_fmt (uiout, "inferior", "i%d", inf->num); +} + +void +mi_cmd_remove_inferior (char *command, char **argv, int argc) +{ + int id; + struct inferior *inf; + + if (argc != 1) + error ("-remove-inferior should be passed a single argument"); + + if (sscanf (argv[0], "i%d", &id) != 1) + error ("the thread group id is syntactically invalid"); + + inf = find_inferior_id (id); + if (!inf) + error ("the specified thread group does not exist"); + + delete_inferior_1 (inf, 1 /* silent */); +} + + + /* Execute a command within a safe environment. Return <0 for error; >=0 for ok. @@ -1221,6 +1684,7 @@ captured_mi_execute_command (struct ui_out *uiout, void *data) case CLI_COMMAND: { char *argv[2]; + /* A CLI command was read from the input stream. */ /* This "feature" will be removed as soon as we have a complete set of mi commands. */ @@ -1264,13 +1728,14 @@ void mi_execute_command (char *cmd, int from_tty) { struct mi_parse *command; - struct ui_out *saved_uiout = uiout; /* This is to handle EOF (^D). We just quit gdb. */ /* FIXME: we should call some API function here. */ if (cmd == 0) quit_force (NULL, from_tty); + target_log_command (cmd); + command = mi_parse (cmd); if (command != NULL) @@ -1301,6 +1766,8 @@ mi_execute_command (char *cmd, int from_tty) mi_out_rewind (uiout); } + bpstat_do_actions (); + if (/* The notifications are only output when the top-level interpreter (specified on the command line) is MI. */ ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())) @@ -1324,12 +1791,14 @@ mi_execute_command (char *cmd, int from_tty) else if (!ptid_equal (inferior_ptid, null_ptid)) { struct thread_info *ti = inferior_thread (); + report_change = (ti->num != command->thread); } if (report_change) { struct thread_info *ti = inferior_thread (); + target_terminal_ours (); fprintf_unfiltered (mi->event_channel, "thread-selected,id=\"%d\"", @@ -1351,18 +1820,46 @@ static void mi_cmd_execute (struct mi_parse *parse) { struct cleanup *cleanup; - int i; prepare_execute_command (); cleanup = make_cleanup (null_cleanup, NULL); + if (parse->all && parse->thread_group != -1) + error (_("Cannot specify --thread-group together with --all")); + + if (parse->all && parse->thread != -1) + error (_("Cannot specify --thread together with --all")); + + if (parse->thread_group != -1 && parse->thread != -1) + error (_("Cannot specify --thread together with --thread-group")); + if (parse->frame != -1 && parse->thread == -1) error (_("Cannot specify --frame without --thread")); + if (parse->thread_group != -1) + { + struct inferior *inf = find_inferior_id (parse->thread_group); + struct thread_info *tp = 0; + + if (!inf) + error (_("Invalid thread group for the --thread-group option")); + + set_current_inferior (inf); + /* This behaviour means that if --thread-group option identifies + an inferior with multiple threads, then a random one will be picked. + This is not a problem -- frontend should always provide --thread if + it wishes to operate on a specific thread. */ + if (inf->pid != 0) + tp = any_thread_of_process (inf->pid); + switch_to_thread (tp ? tp->ptid : null_ptid); + set_current_program_space (inf->pspace); + } + if (parse->thread != -1) { struct thread_info *tp = find_thread_id (parse->thread); + if (!tp) error (_("Invalid thread id: %d"), parse->thread); @@ -1376,6 +1873,7 @@ mi_cmd_execute (struct mi_parse *parse) { struct frame_info *fid; int frame = parse->frame; + fid = find_relative_frame (get_current_frame (), &frame); if (frame == 0) /* find_relative_frame was successful */ @@ -1384,6 +1882,8 @@ mi_cmd_execute (struct mi_parse *parse) error (_("Invalid frame id: %d"), frame); } + current_context = parse; + if (parse->cmd->argv_func != NULL) parse->cmd->argv_func (parse->command, parse->argv, parse->argc); else if (parse->cmd->cli.cmd != 0) @@ -1422,6 +1922,7 @@ mi_execute_cli_command (const char *cmd, int args_p, const char *args) { struct cleanup *old_cleanups; char *run; + if (args_p) run = xstrprintf ("%s %s", cmd, args); else @@ -1511,6 +2012,7 @@ mi_load_progress (const char *section_name, if (new_section) { struct cleanup *cleanup_tuple; + xfree (previous_sect_name); previous_sect_name = xstrdup (section_name); @@ -1531,6 +2033,7 @@ mi_load_progress (const char *section_name, delta.tv_usec >= update_threshold.tv_usec) { struct cleanup *cleanup_tuple; + last_update.tv_sec = time_now.tv_sec; last_update.tv_usec = time_now.tv_usec; if (current_token) @@ -1555,7 +2058,6 @@ mi_load_progress (const char *section_name, static void timestamp (struct mi_timestamp *tv) { - long usec; gettimeofday (&tv->wallclock, NULL); #ifdef HAVE_GETRUSAGE getrusage (RUSAGE_SELF, &rusage); @@ -1564,11 +2066,14 @@ timestamp (struct mi_timestamp *tv) tv->stime.tv_sec = rusage.ru_stime.tv_sec; tv->stime.tv_usec = rusage.ru_stime.tv_usec; #else - usec = get_run_time (); - tv->utime.tv_sec = usec/1000000L; - tv->utime.tv_usec = usec - 1000000L*tv->utime.tv_sec; - tv->stime.tv_sec = 0; - tv->stime.tv_usec = 0; + { + long usec = get_run_time (); + + tv->utime.tv_sec = usec/1000000L; + tv->utime.tv_usec = usec - 1000000L*tv->utime.tv_sec; + tv->stime.tv_sec = 0; + tv->stime.tv_usec = 0; + } #endif } @@ -1576,6 +2081,7 @@ static void print_diff_now (struct mi_timestamp *start) { struct mi_timestamp now; + timestamp (&now); print_diff (start, &now); } @@ -1606,3 +2112,180 @@ print_diff (struct mi_timestamp *start, struct mi_timestamp *end) timeval_diff (start->utime, end->utime) / 1000000.0, timeval_diff (start->stime, end->stime) / 1000000.0); } + +void +mi_cmd_trace_define_variable (char *command, char **argv, int argc) +{ + struct expression *expr; + struct cleanup *back_to; + LONGEST initval = 0; + struct trace_state_variable *tsv; + char *name = 0; + + if (argc != 1 && argc != 2) + error (_("Usage: -trace-define-variable VARIABLE [VALUE]")); + + expr = parse_expression (argv[0]); + back_to = make_cleanup (xfree, expr); + + if (expr->nelts == 3 && expr->elts[0].opcode == OP_INTERNALVAR) + { + struct internalvar *intvar = expr->elts[1].internalvar; + + if (intvar) + name = internalvar_name (intvar); + } + + if (!name || *name == '\0') + error (_("Invalid name of trace variable")); + + tsv = find_trace_state_variable (name); + if (!tsv) + tsv = create_trace_state_variable (name); + + if (argc == 2) + initval = value_as_long (parse_and_eval (argv[1])); + + tsv->initial_value = initval; + + do_cleanups (back_to); +} + +void +mi_cmd_trace_list_variables (char *command, char **argv, int argc) +{ + if (argc != 0) + error (_("-trace-list-variables: no arguments are allowed")); + + tvariables_info_1 (); +} + +void +mi_cmd_trace_find (char *command, char **argv, int argc) +{ + char *mode; + + if (argc == 0) + error (_("trace selection mode is required")); + + mode = argv[0]; + + if (strcmp (mode, "none") == 0) + { + tfind_1 (tfind_number, -1, 0, 0, 0); + return; + } + + if (current_trace_status ()->running) + error (_("May not look at trace frames while trace is running.")); + + if (strcmp (mode, "frame-number") == 0) + { + if (argc != 2) + error (_("frame number is required")); + tfind_1 (tfind_number, atoi (argv[1]), 0, 0, 0); + } + else if (strcmp (mode, "tracepoint-number") == 0) + { + if (argc != 2) + error (_("tracepoint number is required")); + tfind_1 (tfind_tp, atoi (argv[1]), 0, 0, 0); + } + else if (strcmp (mode, "pc") == 0) + { + if (argc != 2) + error (_("PC is required")); + tfind_1 (tfind_pc, 0, parse_and_eval_address (argv[1]), 0, 0); + } + else if (strcmp (mode, "pc-inside-range") == 0) + { + if (argc != 3) + error (_("Start and end PC are required")); + tfind_1 (tfind_range, 0, parse_and_eval_address (argv[1]), + parse_and_eval_address (argv[2]), 0); + } + else if (strcmp (mode, "pc-outside-range") == 0) + { + if (argc != 3) + error (_("Start and end PC are required")); + tfind_1 (tfind_outside, 0, parse_and_eval_address (argv[1]), + parse_and_eval_address (argv[2]), 0); + } + else if (strcmp (mode, "line") == 0) + { + struct symtabs_and_lines sals; + struct symtab_and_line sal; + static CORE_ADDR start_pc, end_pc; + struct cleanup *back_to; + + if (argc != 2) + error (_("Line is required")); + + sals = decode_line_spec (argv[1], 1); + back_to = make_cleanup (xfree, sals.sals); + + sal = sals.sals[0]; + + if (sal.symtab == 0) + error (_("Could not find the specified line")); + + if (sal.line > 0 && find_line_pc_range (sal, &start_pc, &end_pc)) + tfind_1 (tfind_range, 0, start_pc, end_pc - 1, 0); + else + error (_("Could not find the specified line")); + + do_cleanups (back_to); + } + else + error (_("Invalid mode '%s'"), mode); + + if (has_stack_frames () || get_traceframe_number () >= 0) + { + print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC); + } +} + +void +mi_cmd_trace_save (char *command, char **argv, int argc) +{ + int target_saves = 0; + char *filename; + + if (argc != 1 && argc != 2) + error (_("Usage: -trace-save [-r] filename")); + + if (argc == 2) + { + filename = argv[1]; + if (strcmp (argv[0], "-r") == 0) + target_saves = 1; + else + error (_("Invalid option: %s"), argv[0]); + } + else + { + filename = argv[0]; + } + + trace_save (filename, target_saves); +} + + +void +mi_cmd_trace_start (char *command, char **argv, int argc) +{ + start_tracing (); +} + +void +mi_cmd_trace_status (char *command, char **argv, int argc) +{ + trace_status_mi (0); +} + +void +mi_cmd_trace_stop (char *command, char **argv, int argc) +{ + stop_tracing (); + trace_status_mi (1); +} diff --git a/contrib/gdb-7/gdb/mi/mi-main.h b/contrib/gdb-7/gdb/mi/mi-main.h index c8e0b7e0a0..da1dfc0593 100644 --- a/contrib/gdb-7/gdb/mi/mi-main.h +++ b/contrib/gdb-7/gdb/mi/mi-main.h @@ -1,6 +1,6 @@ /* MI Internal Functions for GDB, the GNU debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mi/mi-out.c b/contrib/gdb-7/gdb/mi/mi-out.c index 94d00ef3f1..2b6b4a5713 100644 --- a/contrib/gdb-7/gdb/mi/mi-out.c +++ b/contrib/gdb-7/gdb/mi/mi-out.c @@ -1,6 +1,6 @@ /* MI Command Set - output generating routines. - Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -55,12 +55,12 @@ static void mi_field_string (struct ui_out *uiout, int fldno, int width, static void mi_field_fmt (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, const char *format, - va_list args) ATTR_FORMAT (printf, 6, 0); + va_list args) ATTRIBUTE_PRINTF (6, 0); static void mi_spaces (struct ui_out *uiout, int numspaces); static void mi_text (struct ui_out *uiout, const char *string); static void mi_message (struct ui_out *uiout, int verbosity, const char *format, va_list args) - ATTR_FORMAT (printf, 3, 0); + ATTRIBUTE_PRINTF (3, 0); static void mi_wrap_hint (struct ui_out *uiout, char *identstring); static void mi_flush (struct ui_out *uiout); @@ -106,7 +106,6 @@ mi_table_begin (struct ui_out *uiout, int nr_rows, const char *tblid) { - mi_out_data *data = ui_out_data (uiout); mi_open (uiout, tblid, ui_out_type_tuple); mi_field_int (uiout, -1/*fldno*/, -1/*width*/, -1/*alin*/, "nr_rows", nr_rows); @@ -121,6 +120,7 @@ void mi_table_body (struct ui_out *uiout) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; /* close the table header line if there were any headers */ @@ -134,6 +134,7 @@ void mi_table_end (struct ui_out *uiout) { mi_out_data *data = ui_out_data (uiout); + data->suppress_output = 0; mi_close (uiout, ui_out_type_list); /* body */ mi_close (uiout, ui_out_type_tuple); @@ -147,6 +148,7 @@ mi_table_header (struct ui_out *uiout, int width, enum ui_align alignment, const char *colhdr) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; mi_open (uiout, NULL, ui_out_type_tuple); @@ -166,6 +168,7 @@ mi_begin (struct ui_out *uiout, const char *id) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; mi_open (uiout, id, type); @@ -179,6 +182,7 @@ mi_end (struct ui_out *uiout, int level) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; mi_close (uiout, type); @@ -190,8 +194,9 @@ void mi_field_int (struct ui_out *uiout, int fldno, int width, enum ui_align alignment, const char *fldname, int value) { - char buffer[20]; /* FIXME: how many chars long a %d can become? */ + char buffer[20]; /* FIXME: how many chars long a %d can become? */ mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; @@ -206,6 +211,7 @@ mi_field_skip (struct ui_out *uiout, int fldno, int width, enum ui_align alignment, const char *fldname) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; mi_field_string (uiout, fldno, width, alignment, fldname, ""); @@ -223,6 +229,7 @@ mi_field_string (struct ui_out *uiout, const char *string) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; field_separator (uiout); @@ -244,6 +251,7 @@ mi_field_fmt (struct ui_out *uiout, int fldno, va_list args) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_output) return; field_separator (uiout); @@ -282,6 +290,7 @@ void mi_flush (struct ui_out *uiout) { mi_out_data *data = ui_out_data (uiout); + gdb_flush (data->buffer); } @@ -293,6 +302,7 @@ static void field_separator (struct ui_out *uiout) { mi_out_data *data = ui_out_data (uiout); + if (data->suppress_field_separator) data->suppress_field_separator = 0; else @@ -305,6 +315,7 @@ mi_open (struct ui_out *uiout, enum ui_out_type type) { mi_out_data *data = ui_out_data (uiout); + field_separator (uiout); data->suppress_field_separator = 1; if (name) @@ -327,6 +338,7 @@ mi_close (struct ui_out *uiout, enum ui_out_type type) { mi_out_data *data = ui_out_data (uiout); + switch (type) { case ui_out_type_tuple: @@ -347,6 +359,7 @@ void mi_out_buffered (struct ui_out *uiout, char *string) { mi_out_data *data = ui_out_data (uiout); + fprintf_unfiltered (data->buffer, "%s", string); } @@ -356,6 +369,7 @@ void mi_out_rewind (struct ui_out *uiout) { mi_out_data *data = ui_out_data (uiout); + ui_file_rewind (data->buffer); } @@ -372,6 +386,7 @@ mi_out_put (struct ui_out *uiout, struct ui_file *stream) { mi_out_data *data = ui_out_data (uiout); + ui_file_put (data->buffer, do_write, stream); ui_file_rewind (data->buffer); } @@ -382,6 +397,7 @@ int mi_version (struct ui_out *uiout) { mi_out_data *data = ui_out_data (uiout); + return data->mi_version; } @@ -391,6 +407,7 @@ struct ui_out * mi_out_new (int mi_version) { int flags = 0; + mi_out_data *data = XMALLOC (mi_out_data); data->suppress_field_separator = 0; data->suppress_output = 0; diff --git a/contrib/gdb-7/gdb/mi/mi-out.h b/contrib/gdb-7/gdb/mi/mi-out.h index 8f1c3f4c4b..a33741bfc2 100644 --- a/contrib/gdb-7/gdb/mi/mi-out.h +++ b/contrib/gdb-7/gdb/mi/mi-out.h @@ -1,5 +1,5 @@ /* MI Command Set - MI output generating routines for GDB. - Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). This file is part of GDB. diff --git a/contrib/gdb-7/gdb/mi/mi-parse.c b/contrib/gdb-7/gdb/mi/mi-parse.c index 02e1b3e948..a5a4e75b52 100644 --- a/contrib/gdb-7/gdb/mi/mi-parse.c +++ b/contrib/gdb-7/gdb/mi/mi-parse.c @@ -1,6 +1,6 @@ /* MI Command Set - MI parser. - Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -23,20 +23,97 @@ #include "defs.h" #include "mi-cmds.h" #include "mi-parse.h" +#include "charset.h" #include #include "gdb_string.h" +/* Like parse_escape, but leave the results as a host char, not a + target char. */ + +static int +mi_parse_escape (char **string_ptr) +{ + int c = *(*string_ptr)++; + + switch (c) + { + case '\n': + return -2; + case 0: + (*string_ptr)--; + return 0; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + { + int i = host_hex_value (c); + int count = 0; + + while (++count < 3) + { + c = (**string_ptr); + if (isdigit (c) && c != '8' && c != '9') + { + (*string_ptr)++; + i *= 8; + i += host_hex_value (c); + } + else + { + break; + } + } + return i; + } + + case 'a': + c = '\a'; + break; + case 'b': + c = '\b'; + break; + case 'f': + c = '\f'; + break; + case 'n': + c = '\n'; + break; + case 'r': + c = '\r'; + break; + case 't': + c = '\t'; + break; + case 'v': + c = '\v'; + break; + + default: + break; + } + + return c; +} + static void mi_parse_argv (char *args, struct mi_parse *parse) { char *chp = args; int argc = 0; char **argv = xmalloc ((argc + 1) * sizeof (char *)); + argv[argc] = NULL; while (1) { char *arg; + /* skip leading white space */ while (isspace (*chp)) chp++; @@ -52,6 +129,7 @@ mi_parse_argv (char *args, struct mi_parse *parse) /* A quoted string. */ int len; char *start = chp + 1; + /* Determine the buffer size. */ chp = start; len = 0; @@ -60,7 +138,7 @@ mi_parse_argv (char *args, struct mi_parse *parse) if (*chp == '\\') { chp++; - if (parse_escape (&chp) <= 0) + if (mi_parse_escape (&chp) <= 0) { /* Do not allow split lines or "\000" */ freeargv (argv); @@ -93,7 +171,7 @@ mi_parse_argv (char *args, struct mi_parse *parse) if (*chp == '\\') { chp++; - arg[len] = parse_escape (&chp); + arg[len] = mi_parse_escape (&chp); } else arg[len] = *chp++; @@ -109,6 +187,7 @@ mi_parse_argv (char *args, struct mi_parse *parse) characters into a buffer. */ int len; char *start = chp; + while (*chp != '\0' && !isspace (*chp)) { chp++; @@ -150,7 +229,10 @@ mi_parse (char *cmd) { char *chp; struct mi_parse *parse = XMALLOC (struct mi_parse); + memset (parse, 0, sizeof (*parse)); + parse->all = 0; + parse->thread_group = -1; parse->thread = -1; parse->frame = -1; @@ -178,6 +260,7 @@ mi_parse (char *cmd) /* Extract the command. */ { char *tmp = chp + 1; /* discard ``-'' */ + for (; *chp && !isspace (*chp); chp++) ; parse->command = xmalloc ((chp - tmp + 1) * sizeof (char *)); @@ -210,19 +293,43 @@ mi_parse (char *cmd) for (;;) { char *start = chp; + size_t as = sizeof ("--all ") - 1; + size_t tgs = sizeof ("--thread-group ") - 1; size_t ts = sizeof ("--thread ") - 1; size_t fs = sizeof ("--frame ") - 1; + + if (strncmp (chp, "--all ", as) == 0) + { + parse->all = 1; + chp += as; + } + /* See if --all is the last token in the input. */ + if (strcmp (chp, "--all") == 0) + { + parse->all = 1; + chp += strlen (chp); + } + if (strncmp (chp, "--thread-group ", tgs) == 0) + { + if (parse->thread_group != -1) + error (_("Duplicate '--thread-group' option")); + chp += tgs; + if (*chp != 'i') + error (_("Invalid thread group id")); + chp += 1; + parse->thread_group = strtol (chp, &chp, 10); + } if (strncmp (chp, "--thread ", ts) == 0) { if (parse->thread != -1) - error ("Duplicate '--thread' option"); + error (_("Duplicate '--thread' option")); chp += ts; parse->thread = strtol (chp, &chp, 10); } else if (strncmp (chp, "--frame ", fs) == 0) { if (parse->frame != -1) - error ("Duplicate '--frame' option"); + error (_("Duplicate '--frame' option")); chp += fs; parse->frame = strtol (chp, &chp, 10); } @@ -230,7 +337,7 @@ mi_parse (char *cmd) break; if (*chp != '\0' && !isspace (*chp)) - error ("Invalid value for the '%s' option", + error (_("Invalid value for the '%s' option"), start[2] == 't' ? "--thread" : "--frame"); while (isspace (*chp)) chp++; diff --git a/contrib/gdb-7/gdb/mi/mi-parse.h b/contrib/gdb-7/gdb/mi/mi-parse.h index fdb43a97c0..3c6cd9a31e 100644 --- a/contrib/gdb-7/gdb/mi/mi-parse.h +++ b/contrib/gdb-7/gdb/mi/mi-parse.h @@ -1,5 +1,5 @@ /* MI Command Set - MI Command Parser. - Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). This file is part of GDB. @@ -46,6 +46,8 @@ struct mi_parse char *args; char **argv; int argc; + int all; + int thread_group; /* At present, the same as inferior number. */ int thread; int frame; }; diff --git a/contrib/gdb-7/gdb/mi/mi-symbol-cmds.c b/contrib/gdb-7/gdb/mi/mi-symbol-cmds.c index fc03894a67..4fc1acb192 100644 --- a/contrib/gdb-7/gdb/mi/mi-symbol-cmds.c +++ b/contrib/gdb-7/gdb/mi/mi-symbol-cmds.c @@ -1,5 +1,5 @@ /* MI Command Set - symbol commands. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/minsyms.c b/contrib/gdb-7/gdb/minsyms.c index 64d20d2d7c..cb4545c06f 100644 --- a/contrib/gdb-7/gdb/minsyms.c +++ b/contrib/gdb-7/gdb/minsyms.c @@ -1,6 +1,6 @@ /* GDB routines for manipulating the minimal symbol tables. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support, using pieces from other GDB modules. This file is part of GDB. @@ -82,6 +82,7 @@ unsigned int msymbol_hash_iw (const char *string) { unsigned int hash = 0; + while (*string && *string != '(') { while (isspace (*string)) @@ -101,6 +102,7 @@ unsigned int msymbol_hash (const char *string) { unsigned int hash = 0; + for (; *string; ++string) hash = hash * 67 + *string - 113; return hash; @@ -115,6 +117,7 @@ add_minsym_to_hash_table (struct minimal_symbol *sym, { unsigned int hash = msymbol_hash (SYMBOL_LINKAGE_NAME (sym)) % MINIMAL_SYMBOL_HASH_SIZE; + sym->hash_next = table[hash]; table[hash] = sym; } @@ -130,6 +133,7 @@ add_minsym_to_demangled_hash_table (struct minimal_symbol *sym, { unsigned int hash = msymbol_hash_iw (SYMBOL_SEARCH_NAME (sym)) % MINIMAL_SYMBOL_HASH_SIZE; + sym->demangled_hash_next = table[hash]; table[hash] = sym; } @@ -195,6 +199,7 @@ lookup_minimal_symbol (const char *name, const char *sfile, if (sfile != NULL) { char *p = strrchr (sfile, '/'); + if (p != NULL) sfile = p + 1; } @@ -204,6 +209,7 @@ lookup_minimal_symbol (const char *name, const char *sfile, if (current_language->la_language == language_cplus) { char *cname = cp_canonicalize_string (name); + if (cname) { modified_name = cname; @@ -216,7 +222,7 @@ lookup_minimal_symbol (const char *name, const char *sfile, objfile = objfile->next) { if (objf == NULL || objf == objfile - || objf->separate_debug_objfile == objfile) + || objf == objfile->separate_debug_objfile_backlink) { /* Do two passes: the first over the ordinary hash table, and the second over the demangled hash table. */ @@ -324,7 +330,7 @@ lookup_minimal_symbol_text (const char *name, struct objfile *objf) objfile = objfile->next) { if (objf == NULL || objf == objfile - || objf->separate_debug_objfile == objfile) + || objf == objfile->separate_debug_objfile_backlink) { for (msymbol = objfile->msymbol_hash[hash]; msymbol != NULL && found_symbol == NULL; @@ -377,7 +383,7 @@ lookup_minimal_symbol_by_pc_name (CORE_ADDR pc, const char *name, objfile = objfile->next) { if (objf == NULL || objf == objfile - || objf->separate_debug_objfile == objfile) + || objf == objfile->separate_debug_objfile_backlink) { for (msymbol = objfile->msymbol_hash[hash]; msymbol != NULL; @@ -416,7 +422,7 @@ lookup_minimal_symbol_solib_trampoline (const char *name, objfile = objfile->next) { if (objf == NULL || objf == objfile - || objf->separate_debug_objfile == objfile) + || objf == objfile->separate_debug_objfile_backlink) { for (msymbol = objfile->msymbol_hash[hash]; msymbol != NULL && found_symbol == NULL; @@ -473,11 +479,10 @@ lookup_minimal_symbol_by_pc_section_1 (CORE_ADDR pc, no telling which one will have the minimal symbols. */ gdb_assert (section != NULL); - objfile = section->objfile; - if (objfile->separate_debug_objfile) - objfile = objfile->separate_debug_objfile; - for (; objfile != NULL; objfile = objfile->separate_debug_objfile_backlink) + for (objfile = section->objfile; + objfile != NULL; + objfile = objfile_separate_debug_iterate (section->objfile, objfile)) { /* If this objfile has a minimal symbol table, go search it using a binary search. Note that a minimal symbol table always consists @@ -694,6 +699,37 @@ lookup_minimal_symbol_by_pc (CORE_ADDR pc) { return lookup_minimal_symbol_by_pc_section (pc, NULL); } + +/* Find the minimal symbol named NAME, and return both the minsym + struct and its objfile. This only checks the linkage name. Sets + *OBJFILE_P and returns the minimal symbol, if it is found. If it + is not found, returns NULL. */ + +struct minimal_symbol * +lookup_minimal_symbol_and_objfile (const char *name, + struct objfile **objfile_p) +{ + struct objfile *objfile; + unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE; + + ALL_OBJFILES (objfile) + { + struct minimal_symbol *msym; + + for (msym = objfile->msymbol_hash[hash]; + msym != NULL; + msym = msym->hash_next) + { + if (strcmp (SYMBOL_LINKAGE_NAME (msym), name) == 0) + { + *objfile_p = objfile; + return msym; + } + } + } + + return 0; +} /* Return leading symbol character for a BFD. If BFD is NULL, @@ -757,11 +793,12 @@ prim_record_minimal_symbol (const char *name, CORE_ADDR address, newly created. */ struct minimal_symbol * -prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, - enum minimal_symbol_type ms_type, - int section, - asection *bfd_section, - struct objfile *objfile) +prim_record_minimal_symbol_full (const char *name, int name_len, int copy_name, + CORE_ADDR address, + enum minimal_symbol_type ms_type, + int section, + asection *bfd_section, + struct objfile *objfile) { struct obj_section *obj_section; struct msym_bunch *new; @@ -780,7 +817,10 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, /* It's safe to strip the leading char here once, since the name is also stored stripped in the minimal symbol table. */ if (name[0] == get_symbol_leading_char (objfile->obfd)) - ++name; + { + ++name; + --name_len; + } if (ms_type == mst_file_text && strncmp (name, "__gnu_compiled", 14) == 0) return (NULL); @@ -795,7 +835,7 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, msymbol = &msym_bunch->contents[msym_bunch_index]; SYMBOL_INIT_LANGUAGE_SPECIFIC (msymbol, language_unknown); SYMBOL_LANGUAGE (msymbol) = language_auto; - SYMBOL_SET_NAMES (msymbol, (char *)name, strlen (name), objfile); + SYMBOL_SET_NAMES (msymbol, name, name_len, copy_name, objfile); SYMBOL_VALUE_ADDRESS (msymbol) = address; SYMBOL_SECTION (msymbol) = section; @@ -828,6 +868,21 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, return msymbol; } +/* Record a minimal symbol in the msym bunches. Returns the symbol + newly created. */ + +struct minimal_symbol * +prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, + enum minimal_symbol_type ms_type, + int section, + asection *bfd_section, + struct objfile *objfile) +{ + return prim_record_minimal_symbol_full (name, strlen (name), 1, + address, ms_type, section, + bfd_section, objfile); +} + /* Compare two minimal symbols by address and return a signed result based on unsigned comparisons, so that we sort into unsigned numeric order. Within groups with the same address, sort by name. */ @@ -1112,6 +1167,7 @@ install_minimal_symbols (struct objfile *objfile) mixing ABIs then the user will need to "set cp-abi" manually. */ const char *name = SYMBOL_LINKAGE_NAME (&objfile->msymbols[i]); + if (name[0] == '_' && name[1] == 'Z' && SYMBOL_DEMANGLED_NAME (&objfile->msymbols[i]) != NULL) { @@ -1190,6 +1246,7 @@ find_solib_trampoline_target (struct frame_info *frame, CORE_ADDR pc) SYMBOL_LINKAGE_NAME (tsymbol)) == 0) { CORE_ADDR func; + func = gdbarch_convert_from_func_ptr_addr (get_objfile_arch (objfile), SYMBOL_VALUE_ADDRESS (msymbol), diff --git a/contrib/gdb-7/gdb/mipsread.c b/contrib/gdb-7/gdb/mipsread.c index a84003fb90..cb186b1292 100644 --- a/contrib/gdb-7/gdb/mipsread.c +++ b/contrib/gdb-7/gdb/mipsread.c @@ -1,7 +1,7 @@ /* Read a symbol table in MIPS' format (Third-Eye). Copyright (C) 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1998, 1999, 2000, 2001, 2003, 2004, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Alessandro Forin (af@cs.cmu.edu) at CMU. Major work @@ -42,6 +42,8 @@ #include "elf/internal.h" #include "elf/mips.h" +#include "psymtab.h" + static void read_alphacoff_dynamic_symtab (struct section_offsets *, struct objfile *objfile); @@ -67,7 +69,7 @@ mipscoff_symfile_init (struct objfile *objfile) /* Read a symbol file from a file. */ static void -mipscoff_symfile_read (struct objfile *objfile, int mainline) +mipscoff_symfile_read (struct objfile *objfile, int symfile_flags) { bfd *abfd = objfile->obfd; struct cleanup *back_to; @@ -399,6 +401,8 @@ static struct sym_fns ecoff_sym_fns = default_symfile_segments, /* sym_segments: Get segment information from a file. */ NULL, /* sym_read_linetable */ + default_symfile_relocate, /* sym_relocate: Relocate a debug section. */ + &psym_functions, NULL /* next: pointer to next struct sym_fns */ }; diff --git a/contrib/gdb-7/gdb/objc-exp.y b/contrib/gdb-7/gdb/objc-exp.y index 8103de6e07..888bd201e4 100644 --- a/contrib/gdb-7/gdb/objc-exp.y +++ b/contrib/gdb-7/gdb/objc-exp.y @@ -1,7 +1,7 @@ /* YACC parser for C expressions, for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1993, 1994, 2002, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1276,7 +1276,7 @@ yylex () lexptr++; c = *lexptr++; if (c == '\\') - c = parse_escape (&lexptr); + c = parse_escape (parse_gdbarch, &lexptr); else if (c == '\'') error ("Empty character constant."); @@ -1506,7 +1506,7 @@ yylex () break; case '\\': tokptr++; - c = parse_escape (&tokptr); + c = parse_escape (parse_gdbarch, &tokptr); if (c == -1) { continue; diff --git a/contrib/gdb-7/gdb/objc-lang.c b/contrib/gdb-7/gdb/objc-lang.c index 0e4fb71965..d5897c036b 100644 --- a/contrib/gdb-7/gdb/objc-lang.c +++ b/contrib/gdb-7/gdb/objc-lang.c @@ -1,6 +1,6 @@ /* Objective-C language support routines for GDB, the GNU debugger. - Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Apple Computer, Inc. @@ -244,22 +244,24 @@ objc_demangle (const char *mangled, int options) xfree(demangled); /* not mangled name */ return NULL; } - if (cp[1] == '_') { /* easy case: no category name */ - *cp++ = ' '; /* replace two '_' with one ' ' */ - strcpy(cp, mangled + (cp - demangled) + 2); - } - else { - *cp++ = '('; /* less easy case: category name */ - cp = strchr(cp, '_'); - if (!cp) - { - xfree(demangled); /* not mangled name */ - return NULL; - } - *cp++ = ')'; - *cp++ = ' '; /* overwriting 1st char of method name... */ - strcpy(cp, mangled + (cp - demangled)); /* get it back */ - } + if (cp[1] == '_') /* easy case: no category name */ + { + *cp++ = ' '; /* replace two '_' with one ' ' */ + strcpy(cp, mangled + (cp - demangled) + 2); + } + else + { + *cp++ = '('; /* less easy case: category name */ + cp = strchr(cp, '_'); + if (!cp) + { + xfree(demangled); /* not mangled name */ + return NULL; + } + *cp++ = ')'; + *cp++ = ' '; /* overwriting 1st char of method name... */ + strcpy(cp, mangled + (cp - demangled)); /* get it back */ + } while (*cp && *cp == '_') cp++; /* skip any initial underbars in method name */ @@ -283,7 +285,6 @@ objc_demangle (const char *mangled, int options) static void objc_emit_char (int c, struct type *type, struct ui_file *stream, int quoter) { - c &= 0xFF; /* Avoid sign bit follies. */ if (PRINT_LITERAL_FORM (c)) @@ -343,14 +344,13 @@ objc_printchar (int c, struct type *type, struct ui_file *stream) static void objc_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, unsigned int length, - int force_ellipses, + const char *encoding, int force_ellipses, const struct value_print_options *options) { unsigned int i; unsigned int things_printed = 0; int in_quotes = 0; int need_comma = 0; - int width = TYPE_LENGTH (type); /* If the string was not truncated due to `set print elements', and the last byte of it is a null, we don't print that, in @@ -575,28 +575,34 @@ add_msglist(struct stoken *str, int addcolon) char *s, *p; int len, plen; - if (str == 0) { /* Unnamed arg, or... */ - if (addcolon == 0) { /* variable number of args. */ - msglist_len++; - return; + if (str == 0) /* Unnamed arg, or... */ + { + if (addcolon == 0) /* variable number of args. */ + { + msglist_len++; + return; + } + p = ""; + plen = 0; + } + else + { + p = str->ptr; + plen = str->length; } - p = ""; - plen = 0; - } else { - p = str->ptr; - plen = str->length; - } len = plen + strlen(msglist_sel) + 2; s = (char *)xmalloc(len); strcpy(s, msglist_sel); strncat(s, p, plen); xfree(msglist_sel); msglist_sel = s; - if (addcolon) { - s[len-2] = ':'; - s[len-1] = 0; - msglist_len++; - } else + if (addcolon) + { + s[len-2] = ':'; + s[len-1] = 0; + msglist_len++; + } + else s[len-2] = '\0'; } @@ -994,17 +1000,18 @@ parse_selector (char *method, char **selector) nselector = s1; s2 = s1; - for (;;) { - if (isalnum (*s2) || (*s2 == '_') || (*s2 == ':')) - *s1++ = *s2; - else if (isspace (*s2)) - ; - else if ((*s2 == '\0') || (*s2 == '\'')) - break; - else - return NULL; - s2++; - } + for (;;) + { + if (isalnum (*s2) || (*s2 == '_') || (*s2 == ':')) + *s1++ = *s2; + else if (isspace (*s2)) + ; + else if ((*s2 == '\0') || (*s2 == '\'')) + break; + else + return NULL; + s2++; + } *s1++ = '\0'; while (isspace (*s2)) @@ -1088,17 +1095,18 @@ parse_method (char *method, char *type, char **class, nselector = s2; s1 = s2; - for (;;) { - if (isalnum (*s2) || (*s2 == '_') || (*s2 == ':')) - *s1++ = *s2; - else if (isspace (*s2)) - ; - else if (*s2 == ']') - break; - else - return NULL; - s2++; - } + for (;;) + { + if (isalnum (*s2) || (*s2 == '_') || (*s2 == ':')) + *s1++ = *s2; + else if (isspace (*s2)) + ; + else if (*s2 == ']') + break; + else + return NULL; + s2++; + } *s1++ = '\0'; s2++; @@ -1173,19 +1181,13 @@ find_methods (struct symtab *symtab, char type, ALL_OBJFILE_MSYMBOLS (objfile, msymbol) { - QUIT; - - if ((MSYMBOL_TYPE (msymbol) != mst_text) - && (MSYMBOL_TYPE (msymbol) != mst_file_text)) - /* Not a function or method. */ - continue; + struct gdbarch *gdbarch = get_objfile_arch (objfile); + CORE_ADDR pc = SYMBOL_VALUE_ADDRESS (msymbol); - if (symtab) - if ((SYMBOL_VALUE_ADDRESS (msymbol) < BLOCK_START (block)) || - (SYMBOL_VALUE_ADDRESS (msymbol) >= BLOCK_END (block))) - /* Not in the specified symtab. */ - continue; + QUIT; + /* Check the symbol name first as this can be done entirely without + sending any query to the target. */ symname = SYMBOL_NATURAL_NAME (msymbol); if (symname == NULL) continue; @@ -1193,7 +1195,18 @@ find_methods (struct symtab *symtab, char type, if ((symname[0] != '-' && symname[0] != '+') || (symname[1] != '[')) /* Not a method name. */ continue; - + + /* The minimal symbol might point to a function descriptor; + resolve it to the actual code address instead. */ + pc = gdbarch_convert_from_func_ptr_addr (gdbarch, pc, + ¤t_target); + + if (symtab) + if (pc < BLOCK_START (block) || pc >= BLOCK_END (block)) + /* Not in the specified symtab. */ + continue; + + /* Now that thinks are a bit sane, clean up the symname. */ while ((strlen (symname) + 1) >= tmplen) { tmplen = (tmplen == 0) ? 1024 : tmplen * 2; @@ -1221,7 +1234,7 @@ find_methods (struct symtab *symtab, char type, ((nselector == NULL) || (strcmp (selector, nselector) != 0))) continue; - sym = find_pc_function (SYMBOL_VALUE_ADDRESS (msymbol)); + sym = find_pc_function (pc); if (sym != NULL) { const char *newsymname = SYMBOL_NATURAL_NAME (sym); @@ -1304,36 +1317,36 @@ char *find_imps (struct symtab *symtab, struct block *block, strcpy (buf, method); tmp = parse_method (buf, &type, &class, &category, &selector); - if (tmp == NULL) { - - struct symbol *sym = NULL; - struct minimal_symbol *msym = NULL; - - strcpy (buf, method); - tmp = parse_selector (buf, &selector); - - if (tmp == NULL) - return NULL; - - sym = lookup_symbol (selector, block, VAR_DOMAIN, 0); - if (sym != NULL) - { - if (syms) - syms[csym] = sym; - csym++; - cdebug++; - } + if (tmp == NULL) + { + struct symbol *sym = NULL; + struct minimal_symbol *msym = NULL; - if (sym == NULL) - msym = lookup_minimal_symbol (selector, 0, 0); + strcpy (buf, method); + tmp = parse_selector (buf, &selector); - if (msym != NULL) - { - if (syms) - syms[csym] = (struct symbol *)msym; - csym++; - } - } + if (tmp == NULL) + return NULL; + + sym = lookup_symbol (selector, block, VAR_DOMAIN, 0); + if (sym != NULL) + { + if (syms) + syms[csym] = sym; + csym++; + cdebug++; + } + + if (sym == NULL) + msym = lookup_minimal_symbol (selector, 0, 0); + + if (msym != NULL) + { + if (syms) + syms[csym] = (struct symbol *)msym; + csym++; + } + } if (syms != NULL) find_methods (symtab, type, class, category, selector, @@ -1495,26 +1508,29 @@ static void find_objc_msgsend (void) { unsigned int i; - for (i = 0; i < nmethcalls; i++) { - struct minimal_symbol *func; + for (i = 0; i < nmethcalls; i++) + { + struct minimal_symbol *func; - /* Try both with and without underscore. */ - func = lookup_minimal_symbol (methcalls[i].name, NULL, NULL); - if ((func == NULL) && (methcalls[i].name[0] == '_')) { - func = lookup_minimal_symbol (methcalls[i].name + 1, NULL, NULL); - } - if (func == NULL) { - methcalls[i].begin = 0; - methcalls[i].end = 0; - continue; + /* Try both with and without underscore. */ + func = lookup_minimal_symbol (methcalls[i].name, NULL, NULL); + if ((func == NULL) && (methcalls[i].name[0] == '_')) + { + func = lookup_minimal_symbol (methcalls[i].name + 1, NULL, NULL); + } + if (func == NULL) + { + methcalls[i].begin = 0; + methcalls[i].end = 0; + continue; + } + + methcalls[i].begin = SYMBOL_VALUE_ADDRESS (func); + do { + methcalls[i].end = SYMBOL_VALUE_ADDRESS (++func); + } while (methcalls[i].begin == methcalls[i].end); } - - methcalls[i].begin = SYMBOL_VALUE_ADDRESS (func); - do { - methcalls[i].end = SYMBOL_VALUE_ADDRESS (++func); - } while (methcalls[i].begin == methcalls[i].end); - } } /* find_objc_msgcall (replaces pc_off_limits) @@ -1614,6 +1630,7 @@ read_objc_method (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_method *method) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + method->name = read_memory_unsigned_integer (addr + 0, 4, byte_order); method->types = read_memory_unsigned_integer (addr + 4, 4, byte_order); method->imp = read_memory_unsigned_integer (addr + 8, 4, byte_order); @@ -1623,6 +1640,7 @@ static unsigned long read_objc_methlist_nmethods (struct gdbarch *gdbarch, CORE_ADDR addr) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + return read_memory_unsigned_integer (addr + 4, 4, byte_order); } @@ -1639,6 +1657,7 @@ read_objc_object (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_object *object) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + object->isa = read_memory_unsigned_integer (addr, 4, byte_order); } @@ -1647,6 +1666,7 @@ read_objc_super (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_super *super) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + super->receiver = read_memory_unsigned_integer (addr, 4, byte_order); super->class = read_memory_unsigned_integer (addr + 4, 4, byte_order); }; @@ -1656,6 +1676,7 @@ read_objc_class (struct gdbarch *gdbarch, CORE_ADDR addr, struct objc_class *class) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + class->isa = read_memory_unsigned_integer (addr, 4, byte_order); class->super_class = read_memory_unsigned_integer (addr + 4, 4, byte_order); class->name = read_memory_unsigned_integer (addr + 8, 4, byte_order); @@ -1700,8 +1721,8 @@ find_implementation_from_class (struct gdbarch *gdbarch, for (i = 0; i < nmethods; i++) { struct objc_method meth_str; - read_objc_methlist_method (gdbarch, mlist, i, &meth_str); + read_objc_methlist_method (gdbarch, mlist, i, &meth_str); #if 0 fprintf (stderr, "checking method 0x%lx against selector 0x%lx\n", diff --git a/contrib/gdb-7/gdb/objc-lang.h b/contrib/gdb-7/gdb/objc-lang.h index 0d23467c67..97283707df 100644 --- a/contrib/gdb-7/gdb/objc-lang.h +++ b/contrib/gdb-7/gdb/objc-lang.h @@ -1,6 +1,7 @@ /* Objective-C language support definitions for GDB, the GNU debugger. - Copyright (C) 1992, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1992, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Apple Computer, Inc. diff --git a/contrib/gdb-7/gdb/objfiles.c b/contrib/gdb-7/gdb/objfiles.c index 8dcca702a7..953bc88fdc 100644 --- a/contrib/gdb-7/gdb/objfiles.c +++ b/contrib/gdb-7/gdb/objfiles.c @@ -1,7 +1,7 @@ /* GDB routines for manipulating objfiles. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support, using pieces from other GDB modules. @@ -52,6 +52,8 @@ #include "exec.h" #include "observer.h" #include "complaints.h" +#include "psymtab.h" +#include "solist.h" /* Prototypes for local functions */ @@ -61,16 +63,53 @@ static void objfile_free_data (struct objfile *objfile); /* Externally visible variables that are owned by this module. See declarations in objfile.h for more info. */ -struct objfile *object_files; /* Linked list of all objfiles */ struct objfile *current_objfile; /* For symbol file being read in */ -struct objfile *symfile_objfile; /* Main symbol table loaded from */ struct objfile *rt_common_objfile; /* For runtime common symbols */ +struct objfile_pspace_info +{ + int objfiles_changed_p; + struct obj_section **sections; + int num_sections; +}; + +/* Per-program-space data key. */ +static const struct program_space_data *objfiles_pspace_data; + +static void +objfiles_pspace_data_cleanup (struct program_space *pspace, void *arg) +{ + struct objfile_pspace_info *info; + + info = program_space_data (pspace, objfiles_pspace_data); + if (info != NULL) + { + xfree (info->sections); + xfree (info); + } +} + +/* Get the current svr4 data. If none is found yet, add it now. This + function always returns a valid object. */ + +static struct objfile_pspace_info * +get_objfile_pspace_data (struct program_space *pspace) +{ + struct objfile_pspace_info *info; + + info = program_space_data (pspace, objfiles_pspace_data); + if (info == NULL) + { + info = XZALLOC (struct objfile_pspace_info); + set_program_space_data (pspace, objfiles_pspace_data, info); + } + + return info; +} + /* Records whether any objfiles appeared or disappeared since we last updated address to obj section map. */ -static int objfiles_changed_p; - /* Locate all mappable sections of a BFD file. objfile_p_char is a char * to get it through bfd_map_over_sections; we cast it back to its proper type. */ @@ -157,24 +196,16 @@ build_objfile_section_table (struct objfile *objfile) struct objfile * allocate_objfile (bfd *abfd, int flags) { - struct objfile *objfile = NULL; - struct objfile *last_one = NULL; - - /* If we don't support mapped symbol files, didn't ask for the file to be - mapped, or failed to open the mapped file for some reason, then revert - back to an unmapped objfile. */ + struct objfile *objfile; - if (objfile == NULL) - { - objfile = (struct objfile *) xmalloc (sizeof (struct objfile)); - memset (objfile, 0, sizeof (struct objfile)); - objfile->psymbol_cache = bcache_xmalloc (); - objfile->macro_cache = bcache_xmalloc (); - /* We could use obstack_specify_allocation here instead, but - gdb_obstack.h specifies the alloc/dealloc functions. */ - obstack_init (&objfile->objfile_obstack); - terminate_minimal_symbol_table (objfile); - } + objfile = (struct objfile *) xzalloc (sizeof (struct objfile)); + objfile->psymbol_cache = bcache_xmalloc (); + objfile->macro_cache = bcache_xmalloc (); + objfile->filename_cache = bcache_xmalloc (); + /* We could use obstack_specify_allocation here instead, but + gdb_obstack.h specifies the alloc/dealloc functions. */ + obstack_init (&objfile->objfile_obstack); + terminate_minimal_symbol_table (objfile); objfile_alloc_data (objfile); @@ -208,6 +239,8 @@ allocate_objfile (bfd *abfd, int flags) objfile->name = xstrdup ("<>"); } + objfile->pspace = current_program_space; + /* Initialize the section indexes for this objfile, so that we can later detect if they are used w/o being properly assigned to. */ @@ -227,6 +260,8 @@ allocate_objfile (bfd *abfd, int flags) object_files = objfile; else { + struct objfile *last_one; + for (last_one = object_files; last_one->next; last_one = last_one->next); @@ -236,9 +271,10 @@ allocate_objfile (bfd *abfd, int flags) /* Save passed in flag bits. */ objfile->flags |= flags; - objfiles_changed_p = 1; /* Rebuild section map next time we need it. */ + /* Rebuild section map next time we need it. */ + get_objfile_pspace_data (objfile->pspace)->objfiles_changed_p = 1; - return (objfile); + return objfile; } /* Retrieve the gdbarch associated with OBJFILE. */ @@ -261,29 +297,34 @@ init_entry_point_info (struct objfile *objfile) /* Executable file -- record its entry point so we'll recognize the startup file because it contains the entry point. */ objfile->ei.entry_point = bfd_get_start_address (objfile->obfd); + objfile->ei.entry_point_p = 1; } else if (bfd_get_file_flags (objfile->obfd) & DYNAMIC && bfd_get_start_address (objfile->obfd) != 0) - /* Some shared libraries may have entry points set and be - runnable. There's no clear way to indicate this, so just check - for values other than zero. */ - objfile->ei.entry_point = bfd_get_start_address (objfile->obfd); + { + /* Some shared libraries may have entry points set and be + runnable. There's no clear way to indicate this, so just check + for values other than zero. */ + objfile->ei.entry_point = bfd_get_start_address (objfile->obfd); + objfile->ei.entry_point_p = 1; + } else { /* Examination of non-executable.o files. Short-circuit this stuff. */ - objfile->ei.entry_point = INVALID_ENTRY_POINT; + objfile->ei.entry_point_p = 0; } } -/* Get current entry point address. */ +/* If there is a valid and known entry point, function fills *ENTRY_P with it + and returns non-zero; otherwise it returns zero. */ -CORE_ADDR -entry_point_address (void) +int +entry_point_address_query (CORE_ADDR *entry_p) { struct gdbarch *gdbarch; CORE_ADDR entry_point; - if (symfile_objfile == NULL) + if (symfile_objfile == NULL || !symfile_objfile->ei.entry_point_p) return 0; gdbarch = get_objfile_arch (symfile_objfile); @@ -299,7 +340,21 @@ entry_point_address (void) symbol table. */ entry_point = gdbarch_addr_bits_remove (gdbarch, entry_point); - return entry_point; + *entry_p = entry_point; + return 1; +} + +/* Get current entry point address. Call error if it is not known. */ + +CORE_ADDR +entry_point_address (void) +{ + CORE_ADDR retval; + + if (!entry_point_address_query (&retval)) + error (_("Entry point address is not known.")); + + return retval; } /* Create the terminating entry of OBJFILE's minimal symbol table. @@ -325,6 +380,45 @@ terminate_minimal_symbol_table (struct objfile *objfile) } } +/* Iterator on PARENT and every separate debug objfile of PARENT. + The usage pattern is: + for (objfile = parent; + objfile; + objfile = objfile_separate_debug_iterate (parent, objfile)) + ... +*/ + +struct objfile * +objfile_separate_debug_iterate (const struct objfile *parent, + const struct objfile *objfile) +{ + struct objfile *res; + + /* If any, return the first child. */ + res = objfile->separate_debug_objfile; + if (res) + return res; + + /* Common case where there is no separate debug objfile. */ + if (objfile == parent) + return NULL; + + /* Return the brother if any. Note that we don't iterate on brothers of + the parents. */ + res = objfile->separate_debug_objfile_link; + if (res) + return res; + + for (res = objfile->separate_debug_objfile_backlink; + res != parent; + res = res->separate_debug_objfile_backlink) + { + gdb_assert (res != NULL); + if (res->separate_debug_objfile_link) + return res->separate_debug_objfile_link; + } + return NULL; +} /* Put one object file before a specified on in the global list. This can be used to make sure an object file is destroyed before @@ -402,6 +496,41 @@ unlink_objfile (struct objfile *objfile) _("unlink_objfile: objfile already unlinked")); } +/* Add OBJFILE as a separate debug objfile of PARENT. */ + +void +add_separate_debug_objfile (struct objfile *objfile, struct objfile *parent) +{ + gdb_assert (objfile && parent); + + /* Must not be already in a list. */ + gdb_assert (objfile->separate_debug_objfile_backlink == NULL); + gdb_assert (objfile->separate_debug_objfile_link == NULL); + + objfile->separate_debug_objfile_backlink = parent; + objfile->separate_debug_objfile_link = parent->separate_debug_objfile; + parent->separate_debug_objfile = objfile; + + /* Put the separate debug object before the normal one, this is so that + usage of the ALL_OBJFILES_SAFE macro will stay safe. */ + put_objfile_before (objfile, parent); +} + +/* Free all separate debug objfile of OBJFILE, but don't free OBJFILE + itself. */ + +void +free_objfile_separate_debug (struct objfile *objfile) +{ + struct objfile *child; + + for (child = objfile->separate_debug_objfile; child;) + { + struct objfile *next_child = child->separate_debug_objfile_link; + free_objfile (child); + child = next_child; + } +} /* Destroy an objfile and all the symtabs and psymtabs under it. Note that as much as possible is allocated on the objfile_obstack @@ -422,16 +551,38 @@ unlink_objfile (struct objfile *objfile) void free_objfile (struct objfile *objfile) { - if (objfile->separate_debug_objfile) - { - free_objfile (objfile->separate_debug_objfile); - } - + /* Free all separate debug objfiles. */ + free_objfile_separate_debug (objfile); + if (objfile->separate_debug_objfile_backlink) { /* We freed the separate debug file, make sure the base objfile doesn't reference it. */ - objfile->separate_debug_objfile_backlink->separate_debug_objfile = NULL; + struct objfile *child; + + child = objfile->separate_debug_objfile_backlink->separate_debug_objfile; + + if (child == objfile) + { + /* OBJFILE is the first child. */ + objfile->separate_debug_objfile_backlink->separate_debug_objfile = + objfile->separate_debug_objfile_link; + } + else + { + /* Find OBJFILE in the list. */ + while (1) + { + if (child->separate_debug_objfile_link == objfile) + { + child->separate_debug_objfile_link = + objfile->separate_debug_objfile_link; + break; + } + child = child->separate_debug_objfile_link; + gdb_assert (child); + } + } } /* Remove any references to this objfile in the global value @@ -509,12 +660,15 @@ free_objfile (struct objfile *objfile) /* Free the obstacks for non-reusable objfiles */ bcache_xfree (objfile->psymbol_cache); bcache_xfree (objfile->macro_cache); + bcache_xfree (objfile->filename_cache); if (objfile->demangled_names_hash) htab_delete (objfile->demangled_names_hash); obstack_free (&objfile->objfile_obstack, 0); + + /* Rebuild section map next time we need it. */ + get_objfile_pspace_data (objfile->pspace)->objfiles_changed_p = 1; + xfree (objfile); - objfile = NULL; - objfiles_changed_p = 1; /* Rebuild section map next time we need it. */ } static void @@ -535,6 +689,11 @@ void free_all_objfiles (void) { struct objfile *objfile, *temp; + struct so_list *so; + + /* Any objfile referencewould become stale. */ + for (so = master_so_list (); so; so = so->next) + gdb_assert (so->objfile == NULL); ALL_OBJFILES_SAFE (objfile, temp) { @@ -544,28 +703,30 @@ free_all_objfiles (void) } /* Relocate OBJFILE to NEW_OFFSETS. There should be OBJFILE->NUM_SECTIONS - entries in new_offsets. */ -void -objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) + entries in new_offsets. SEPARATE_DEBUG_OBJFILE is not touched here. + Return non-zero iff any change happened. */ + +static int +objfile_relocate1 (struct objfile *objfile, + struct section_offsets *new_offsets) { struct obj_section *s; struct section_offsets *delta = ((struct section_offsets *) alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections))); - { - int i; - int something_changed = 0; - for (i = 0; i < objfile->num_sections; ++i) - { - delta->offsets[i] = - ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i); - if (ANOFFSET (delta, i) != 0) - something_changed = 1; - } - if (!something_changed) - return; - } + int i; + int something_changed = 0; + + for (i = 0; i < objfile->num_sections; ++i) + { + delta->offsets[i] = + ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i); + if (ANOFFSET (delta, i) != 0) + something_changed = 1; + } + if (!something_changed) + return 0; /* OK, get all the symtabs. */ { @@ -624,41 +785,16 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) } } - { - struct partial_symtab *p; - - ALL_OBJFILE_PSYMTABS (objfile, p) - { - p->textlow += ANOFFSET (delta, SECT_OFF_TEXT (objfile)); - p->texthigh += ANOFFSET (delta, SECT_OFF_TEXT (objfile)); - } - } - - { - struct partial_symbol **psym; + if (objfile->psymtabs_addrmap) + addrmap_relocate (objfile->psymtabs_addrmap, + ANOFFSET (delta, SECT_OFF_TEXT (objfile))); - for (psym = objfile->global_psymbols.list; - psym < objfile->global_psymbols.next; - psym++) - { - fixup_psymbol_section (*psym, objfile); - if (SYMBOL_SECTION (*psym) >= 0) - SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta, - SYMBOL_SECTION (*psym)); - } - for (psym = objfile->static_psymbols.list; - psym < objfile->static_psymbols.next; - psym++) - { - fixup_psymbol_section (*psym, objfile); - if (SYMBOL_SECTION (*psym) >= 0) - SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta, - SYMBOL_SECTION (*psym)); - } - } + if (objfile->sf) + objfile->sf->qf->relocate (objfile, new_offsets, delta); { struct minimal_symbol *msym; + ALL_OBJFILE_MSYMBOLS (objfile, msym) if (SYMBOL_SECTION (msym) >= 0) SYMBOL_VALUE_ADDRESS (msym) += ANOFFSET (delta, SYMBOL_SECTION (msym)); @@ -667,7 +803,7 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) to be out of order. */ msymbols_sort (objfile); - if (objfile->ei.entry_point != ~(CORE_ADDR) 0) + if (objfile->ei.entry_point_p) { /* Relocate ei.entry_point with its section offset, use SECT_OFF_TEXT only as a fallback. */ @@ -681,12 +817,13 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) { int i; + for (i = 0; i < objfile->num_sections; ++i) (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i); } /* Rebuild section map next time we need it. */ - objfiles_changed_p = 1; + get_objfile_pspace_data (objfile->pspace)->objfiles_changed_p = 1; /* Update the table in exec_ops, used to read memory. */ ALL_OBJFILE_OSECTIONS (objfile, s) @@ -697,8 +834,60 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) obj_section_addr (s)); } + /* Data changed. */ + return 1; +} + +/* Relocate OBJFILE to NEW_OFFSETS. There should be OBJFILE->NUM_SECTIONS + entries in new_offsets. Process also OBJFILE's SEPARATE_DEBUG_OBJFILEs. + + The number and ordering of sections does differ between the two objfiles. + Only their names match. Also the file offsets will differ (objfile being + possibly prelinked but separate_debug_objfile is probably not prelinked) but + the in-memory absolute address as specified by NEW_OFFSETS must match both + files. */ + +void +objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) +{ + struct objfile *debug_objfile; + int changed = 0; + + changed |= objfile_relocate1 (objfile, new_offsets); + + for (debug_objfile = objfile->separate_debug_objfile; + debug_objfile; + debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile)) + { + struct section_addr_info *objfile_addrs; + struct section_offsets *new_debug_offsets; + struct cleanup *my_cleanups; + + objfile_addrs = build_section_addr_info_from_objfile (objfile); + my_cleanups = make_cleanup (xfree, objfile_addrs); + + /* Here OBJFILE_ADDRS contain the correct absolute addresses, the + relative ones must be already created according to debug_objfile. */ + + addr_info_make_relative (objfile_addrs, debug_objfile->obfd); + + gdb_assert (debug_objfile->num_sections + == bfd_count_sections (debug_objfile->obfd)); + new_debug_offsets = + xmalloc (SIZEOF_N_SECTION_OFFSETS (debug_objfile->num_sections)); + make_cleanup (xfree, new_debug_offsets); + relative_addr_info_to_section_offsets (new_debug_offsets, + debug_objfile->num_sections, + objfile_addrs); + + changed |= objfile_relocate1 (debug_objfile, new_debug_offsets); + + do_cleanups (my_cleanups); + } + /* Relocate breakpoints as necessary, after things are relocated. */ - breakpoint_re_set (); + if (changed) + breakpoint_re_set (); } /* Return non-zero if OBJFILE has partial symbols. */ @@ -706,7 +895,7 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) int objfile_has_partial_symbols (struct objfile *objfile) { - return objfile->psymtabs != NULL; + return objfile->sf ? objfile->sf->qf->has_symbols (objfile) : 0; } /* Return non-zero if OBJFILE has full symbols. */ @@ -717,6 +906,21 @@ objfile_has_full_symbols (struct objfile *objfile) return objfile->symtabs != NULL; } +/* Return non-zero if OBJFILE has full or partial symbols, either directly + or through a separate debug file. */ + +int +objfile_has_symbols (struct objfile *objfile) +{ + struct objfile *o; + + for (o = objfile; o; o = objfile_separate_debug_iterate (objfile, o)) + if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o)) + return 1; + return 0; +} + + /* Many places in gdb want to test just to see if we have any partial symbols available. This function returns zero if none are currently available, nonzero otherwise. */ @@ -807,65 +1011,64 @@ qsort_cmp (const void *a, const void *b) else if (sect1_addr > sect2_addr) return 1; else - { - /* Sections are at the same address. This could happen if - A) we have an objfile and a separate debuginfo. - B) we are confused, and have added sections without proper relocation, - or something like that. */ - - const struct objfile *const objfile1 = sect1->objfile; - const struct objfile *const objfile2 = sect2->objfile; - - if (objfile1->separate_debug_objfile == objfile2 - || objfile2->separate_debug_objfile == objfile1) - { - /* Case A. The ordering doesn't matter: separate debuginfo files - will be filtered out later. */ - - return 0; - } - - /* Case B. Maintain stable sort order, so bugs in GDB are easier to - triage. This section could be slow (since we iterate over all - objfiles in each call to qsort_cmp), but this shouldn't happen - very often (GDB is already in a confused state; one hopes this - doesn't happen at all). If you discover that significant time is - spent in the loops below, do 'set complaints 100' and examine the - resulting complaints. */ - - if (objfile1 == objfile2) - { - /* Both sections came from the same objfile. We are really confused. - Sort on sequence order of sections within the objfile. */ - - const struct obj_section *osect; - - ALL_OBJFILE_OSECTIONS (objfile1, osect) - if (osect == sect1) - return -1; - else if (osect == sect2) - return 1; - - /* We should have found one of the sections before getting here. */ - gdb_assert (0); - } - else - { - /* Sort on sequence number of the objfile in the chain. */ - - const struct objfile *objfile; - - ALL_OBJFILES (objfile) - if (objfile == objfile1) - return -1; - else if (objfile == objfile2) - return 1; - - /* We should have found one of the objfiles before getting here. */ - gdb_assert (0); - } - - } + { + /* Sections are at the same address. This could happen if + A) we have an objfile and a separate debuginfo. + B) we are confused, and have added sections without proper relocation, + or something like that. */ + + const struct objfile *const objfile1 = sect1->objfile; + const struct objfile *const objfile2 = sect2->objfile; + + if (objfile1->separate_debug_objfile == objfile2 + || objfile2->separate_debug_objfile == objfile1) + { + /* Case A. The ordering doesn't matter: separate debuginfo files + will be filtered out later. */ + + return 0; + } + + /* Case B. Maintain stable sort order, so bugs in GDB are easier to + triage. This section could be slow (since we iterate over all + objfiles in each call to qsort_cmp), but this shouldn't happen + very often (GDB is already in a confused state; one hopes this + doesn't happen at all). If you discover that significant time is + spent in the loops below, do 'set complaints 100' and examine the + resulting complaints. */ + + if (objfile1 == objfile2) + { + /* Both sections came from the same objfile. We are really confused. + Sort on sequence order of sections within the objfile. */ + + const struct obj_section *osect; + + ALL_OBJFILE_OSECTIONS (objfile1, osect) + if (osect == sect1) + return -1; + else if (osect == sect2) + return 1; + + /* We should have found one of the sections before getting here. */ + gdb_assert (0); + } + else + { + /* Sort on sequence number of the objfile in the chain. */ + + const struct objfile *objfile; + + ALL_OBJFILES (objfile) + if (objfile == objfile1) + return -1; + else if (objfile == objfile2) + return 1; + + /* We should have found one of the objfiles before getting here. */ + gdb_assert (0); + } + } /* Unreachable. */ gdb_assert (0); @@ -1029,28 +1232,39 @@ filter_overlapping_sections (struct obj_section **map, int map_size) TLS, overlay and overlapping sections. */ static void -update_section_map (struct obj_section ***pmap, int *pmap_size) +update_section_map (struct program_space *pspace, + struct obj_section ***pmap, int *pmap_size) { int alloc_size, map_size, i; struct obj_section *s, **map; struct objfile *objfile; - gdb_assert (objfiles_changed_p != 0); + gdb_assert (get_objfile_pspace_data (pspace)->objfiles_changed_p != 0); map = *pmap; xfree (map); alloc_size = 0; - ALL_OBJSECTIONS (objfile, s) - if (insert_section_p (objfile->obfd, s->the_bfd_section)) - alloc_size += 1; + ALL_PSPACE_OBJFILES (pspace, objfile) + ALL_OBJFILE_OSECTIONS (objfile, s) + if (insert_section_p (objfile->obfd, s->the_bfd_section)) + alloc_size += 1; + + /* This happens on detach/attach (e.g. in gdb.base/attach.exp). */ + if (alloc_size == 0) + { + *pmap = NULL; + *pmap_size = 0; + return; + } map = xmalloc (alloc_size * sizeof (*map)); i = 0; - ALL_OBJSECTIONS (objfile, s) - if (insert_section_p (objfile->obfd, s->the_bfd_section)) - map[i++] = s; + ALL_PSPACE_OBJFILES (pspace, objfile) + ALL_OBJFILE_OSECTIONS (objfile, s) + if (insert_section_p (objfile->obfd, s->the_bfd_section)) + map[i++] = s; qsort (map, alloc_size, sizeof (*map), qsort_cmp); map_size = filter_debuginfo_sections(map, alloc_size); @@ -1086,9 +1300,7 @@ bsearch_cmp (const void *key, const void *elt) struct obj_section * find_pc_section (CORE_ADDR pc) { - static struct obj_section **sections; - static int num_sections; - + struct objfile_pspace_info *pspace_info; struct obj_section *s, **sp; /* Check for mapped overlay section first. */ @@ -1096,17 +1308,31 @@ find_pc_section (CORE_ADDR pc) if (s) return s; - if (objfiles_changed_p != 0) + pspace_info = get_objfile_pspace_data (current_program_space); + if (pspace_info->objfiles_changed_p != 0) { - update_section_map (§ions, &num_sections); + update_section_map (current_program_space, + &pspace_info->sections, + &pspace_info->num_sections); - /* Don't need updates to section map until objfiles are added - or removed. */ - objfiles_changed_p = 0; + /* Don't need updates to section map until objfiles are added, + removed or relocated. */ + pspace_info->objfiles_changed_p = 0; + } + + /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to + bsearch be non-NULL. */ + if (pspace_info->sections == NULL) + { + gdb_assert (pspace_info->num_sections == 0); + return NULL; } - sp = (struct obj_section **) bsearch (&pc, sections, num_sections, - sizeof (*sections), bsearch_cmp); + sp = (struct obj_section **) bsearch (&pc, + pspace_info->sections, + pspace_info->num_sections, + sizeof (*pspace_info->sections), + bsearch_cmp); if (sp != NULL) return *sp; return NULL; @@ -1247,14 +1473,37 @@ objfile_data (struct objfile *objfile, const struct objfile_data *data) void objfiles_changed (void) { - objfiles_changed_p = 1; /* Rebuild section map next time we need it. */ + /* Rebuild section map next time we need it. */ + get_objfile_pspace_data (current_program_space)->objfiles_changed_p = 1; +} + +/* Close ABFD, and warn if that fails. */ + +int +gdb_bfd_close_or_warn (struct bfd *abfd) +{ + int ret; + char *name = bfd_get_filename (abfd); + + ret = bfd_close (abfd); + + if (!ret) + warning (_("cannot close \"%s\": %s"), + name, bfd_errmsg (bfd_get_error ())); + + return ret; } /* Add reference to ABFD. Returns ABFD. */ struct bfd * gdb_bfd_ref (struct bfd *abfd) { - int *p_refcount = bfd_usrdata (abfd); + int *p_refcount; + + if (abfd == NULL) + return NULL; + + p_refcount = bfd_usrdata (abfd); if (p_refcount != NULL) { @@ -1293,8 +1542,16 @@ gdb_bfd_unref (struct bfd *abfd) bfd_usrdata (abfd) = NULL; /* Paranoia. */ name = bfd_get_filename (abfd); - if (!bfd_close (abfd)) - warning (_("cannot close \"%s\": %s"), - name, bfd_errmsg (bfd_get_error ())); + gdb_bfd_close_or_warn (abfd); xfree (name); } + +/* Provide a prototype to silence -Wmissing-prototypes. */ +extern initialize_file_ftype _initialize_objfiles; + +void +_initialize_objfiles (void) +{ + objfiles_pspace_data + = register_program_space_data_with_cleanup (objfiles_pspace_data_cleanup); +} diff --git a/contrib/gdb-7/gdb/objfiles.h b/contrib/gdb-7/gdb/objfiles.h index 62fa498083..76410fd447 100644 --- a/contrib/gdb-7/gdb/objfiles.h +++ b/contrib/gdb-7/gdb/objfiles.h @@ -1,7 +1,7 @@ /* Definitions for symbol file management in GDB. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -23,6 +23,7 @@ #include "gdb_obstack.h" /* For obstack internals. */ #include "symfile.h" /* For struct psymbol_allocation_list */ +#include "progspace.h" struct bcache; struct htab; @@ -99,15 +100,11 @@ struct objfile_data; struct entry_info { - - /* The value we should use for this objects entry point. - The illegal/unknown value needs to be something other than 0, ~0 - for instance, which is much less likely than 0. */ - + /* The relocated value we should use for this objfile entry point. */ CORE_ADDR entry_point; -#define INVALID_ENTRY_POINT (~0) /* ~0 will not be in any file, we hope. */ - + /* Set to 1 iff ENTRY_POINT contains a valid value. */ + unsigned entry_point_p : 1; }; /* Sections in an objfile. The section offsets are stored in the @@ -200,6 +197,10 @@ struct objfile unsigned short flags; + /* The program space associated with this objfile. */ + + struct program_space *pspace; + /* Each objfile points to a linked list of symtabs derived from this file, one symtab structure for each compilation unit (source file). Each link in the symtab list contains a backpointer to this objfile. */ @@ -250,6 +251,7 @@ struct objfile struct bcache *psymbol_cache; /* Byte cache for partial syms */ struct bcache *macro_cache; /* Byte cache for macros */ + struct bcache *filename_cache; /* Byte cache for file names. */ /* Hash table for mapping symbol names to demangled names. Each entry in the hash table is actually two consecutive strings, @@ -361,15 +363,25 @@ struct objfile struct obj_section *sections, *sections_end; - /* Link to objfile that contains the debug symbols for this one. - One is loaded if this file has an debug link to an existing - debug file with the right checksum */ + /* GDB allows to have debug symbols in separate object files. This is + used by .gnu_debuglink, ELF build id note and Mach-O OSO. + Although this is a tree structure, GDB only support one level + (ie a separate debug for a separate debug is not supported). Note that + separate debug object are in the main chain and therefore will be + visited by ALL_OBJFILES & co iterators. Separate debug objfile always + has a non-nul separate_debug_objfile_backlink. */ + + /* Link to the first separate debug object, if any. */ struct objfile *separate_debug_objfile; /* If this is a separate debug object, this is used as a link to the actual executable objfile. */ struct objfile *separate_debug_objfile_backlink; - + + /* If this is a separate debug object, this is a link to the next one + for the same executable objfile. */ + struct objfile *separate_debug_objfile_link; + /* Place to stash various statistics about this objfile */ OBJSTATS; @@ -414,11 +426,6 @@ struct objfile #define OBJF_USERLOADED (1 << 3) /* User loaded */ -/* The object file that the main symbol table was loaded from (e.g. the - argument to the "symbol-file" or "file" command). */ - -extern struct objfile *symfile_objfile; - /* The object file that contains the runtime common minimal symbols for SunOS4. Note that this objfile has no associated BFD. */ @@ -439,11 +446,6 @@ extern struct objfile *rt_common_objfile; extern struct objfile *current_objfile; -/* All known objfiles are kept in a linked list. This points to the - root of this list. */ - -extern struct objfile *object_files; - /* Declarations for functions defined in objfiles.c */ extern struct objfile *allocate_objfile (bfd *, int); @@ -452,20 +454,29 @@ extern struct gdbarch *get_objfile_arch (struct objfile *); extern void init_entry_point_info (struct objfile *); +extern int entry_point_address_query (CORE_ADDR *entry_p); + extern CORE_ADDR entry_point_address (void); extern int build_objfile_section_table (struct objfile *); extern void terminate_minimal_symbol_table (struct objfile *objfile); +extern struct objfile *objfile_separate_debug_iterate (const struct objfile *, + const struct objfile *); + extern void put_objfile_before (struct objfile *, struct objfile *); extern void objfile_to_front (struct objfile *); +extern void add_separate_debug_objfile (struct objfile *, struct objfile *); + extern void unlink_objfile (struct objfile *); extern void free_objfile (struct objfile *); +extern void free_objfile_separate_debug (struct objfile *); + extern struct cleanup *make_cleanup_free_objfile (struct objfile *); extern void free_all_objfiles (void); @@ -476,6 +487,8 @@ extern int objfile_has_partial_symbols (struct objfile *objfile); extern int objfile_has_full_symbols (struct objfile *objfile); +extern int objfile_has_symbols (struct objfile *objfile); + extern int have_partial_symbols (void); extern int have_full_symbols (void); @@ -520,16 +533,30 @@ extern void *objfile_data (struct objfile *objfile, extern struct bfd *gdb_bfd_ref (struct bfd *abfd); extern void gdb_bfd_unref (struct bfd *abfd); +extern int gdb_bfd_close_or_warn (struct bfd *abfd); -/* Traverse all object files. ALL_OBJFILES_SAFE works even if you delete - the objfile during the traversal. */ +/* Traverse all object files in the current program space. + ALL_OBJFILES_SAFE works even if you delete the objfile during the + traversal. */ + +/* Traverse all object files in program space SS. */ + +#define ALL_PSPACE_OBJFILES(ss, obj) \ + for ((obj) = ss->objfiles; (obj) != NULL; (obj) = (obj)->next) \ + +#define ALL_PSPACE_OBJFILES_SAFE(ss, obj, nxt) \ + for ((obj) = ss->objfiles; \ + (obj) != NULL? ((nxt)=(obj)->next,1) :0; \ + (obj) = (nxt)) -#define ALL_OBJFILES(obj) \ - for ((obj) = object_files; (obj) != NULL; (obj) = (obj)->next) +#define ALL_OBJFILES(obj) \ + for ((obj) = current_program_space->objfiles; \ + (obj) != NULL; \ + (obj) = (obj)->next) -#define ALL_OBJFILES_SAFE(obj,nxt) \ - for ((obj) = object_files; \ +#define ALL_OBJFILES_SAFE(obj,nxt) \ + for ((obj) = current_program_space->objfiles; \ (obj) != NULL? ((nxt)=(obj)->next,1) :0; \ (obj) = (nxt)) @@ -538,37 +565,38 @@ extern void gdb_bfd_unref (struct bfd *abfd); #define ALL_OBJFILE_SYMTABS(objfile, s) \ for ((s) = (objfile) -> symtabs; (s) != NULL; (s) = (s) -> next) -/* Traverse all psymtabs in one objfile. */ - -#define ALL_OBJFILE_PSYMTABS(objfile, p) \ - for ((p) = (objfile) -> psymtabs; (p) != NULL; (p) = (p) -> next) - /* Traverse all minimal symbols in one objfile. */ #define ALL_OBJFILE_MSYMBOLS(objfile, m) \ for ((m) = (objfile) -> msymbols; SYMBOL_LINKAGE_NAME(m) != NULL; (m)++) -/* Traverse all symtabs in all objfiles. */ +/* Traverse all symtabs in all objfiles in the current symbol + space. */ #define ALL_SYMTABS(objfile, s) \ ALL_OBJFILES (objfile) \ ALL_OBJFILE_SYMTABS (objfile, s) -/* Traverse all symtabs in all objfiles, skipping included files - (which share a blockvector with their primary symtab). */ +#define ALL_PSPACE_SYMTABS(ss, objfile, s) \ + ALL_PSPACE_OBJFILES (ss, objfile) \ + ALL_OBJFILE_SYMTABS (objfile, s) + +/* Traverse all symtabs in all objfiles in the current program space, + skipping included files (which share a blockvector with their + primary symtab). */ #define ALL_PRIMARY_SYMTABS(objfile, s) \ ALL_OBJFILES (objfile) \ ALL_OBJFILE_SYMTABS (objfile, s) \ if ((s)->primary) -/* Traverse all psymtabs in all objfiles. */ - -#define ALL_PSYMTABS(objfile, p) \ - ALL_OBJFILES (objfile) \ - ALL_OBJFILE_PSYMTABS (objfile, p) +#define ALL_PSPACE_PRIMARY_SYMTABS(pspace, objfile, s) \ + ALL_PSPACE_OBJFILES (ss, objfile) \ + ALL_OBJFILE_SYMTABS (objfile, s) \ + if ((s)->primary) -/* Traverse all minimal symbols in all objfiles. */ +/* Traverse all minimal symbols in all objfiles in the current symbol + space. */ #define ALL_MSYMBOLS(objfile, m) \ ALL_OBJFILES (objfile) \ diff --git a/contrib/gdb-7/gdb/observer.c b/contrib/gdb-7/gdb/observer.c index 106bfcd152..fb9beb1e96 100644 --- a/contrib/gdb-7/gdb/observer.c +++ b/contrib/gdb-7/gdb/observer.c @@ -1,6 +1,7 @@ /* GDB Notifications to Observers. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -90,6 +91,7 @@ static struct observer_list * xalloc_observer_list_node (void) { struct observer_list *node = XMALLOC (struct observer_list); + node->observer = XMALLOC (struct observer); return node; } diff --git a/contrib/gdb-7/gdb/observer.sh b/contrib/gdb-7/gdb/observer.sh index 39de5beac7..2bb1c2dacb 100755 --- a/contrib/gdb-7/gdb/observer.sh +++ b/contrib/gdb-7/gdb/observer.sh @@ -29,7 +29,8 @@ rm -f ${otmp} cat <>${otmp} /* GDB Notifications to Observers. - Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/osabi.c b/contrib/gdb-7/gdb/osabi.c index a8ecc8c482..0fced7b831 100644 --- a/contrib/gdb-7/gdb/osabi.c +++ b/contrib/gdb-7/gdb/osabi.c @@ -1,6 +1,6 @@ /* OS ABI variant handling for GDB. - Copyright (C) 2001, 2002, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -67,13 +67,12 @@ static const char * const gdb_osabi_names[] = "Interix", "HP/UX ELF", "HP/UX SOM", - "QNX Neutrino", - "Cygwin", "AIX", "DICOS", "Darwin", + "Symbian", "" }; @@ -589,6 +588,7 @@ set_osabi (char *args, int from_tty, struct cmd_list_element *c) else { int i; + for (i = 1; i < GDB_OSABI_INVALID; i++) if (strcmp (set_osabi_string, gdbarch_osabi_name (i)) == 0) { @@ -631,8 +631,6 @@ extern initialize_file_ftype _initialize_gdb_osabi; /* -Wmissing-prototype */ void _initialize_gdb_osabi (void) { - struct cmd_list_element *c; - if (strcmp (gdb_osabi_names[GDB_OSABI_INVALID], "") != 0) internal_error (__FILE__, __LINE__, diff --git a/contrib/gdb-7/gdb/osabi.h b/contrib/gdb-7/gdb/osabi.h index 0b4a3826c7..2fb278be63 100644 --- a/contrib/gdb-7/gdb/osabi.h +++ b/contrib/gdb-7/gdb/osabi.h @@ -1,5 +1,5 @@ /* OS ABI variant handling for GDB. - Copyright (C) 2001, 2002, 2003, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/osdata.c b/contrib/gdb-7/gdb/osdata.c index 3d2c23c79f..76143bf8ed 100644 --- a/contrib/gdb-7/gdb/osdata.c +++ b/contrib/gdb-7/gdb/osdata.c @@ -1,6 +1,6 @@ /* Routines for handling XML generic OS data provided by target. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -83,6 +83,7 @@ osdata_start_item (struct gdb_xml_parser *parser, { struct osdata_parsing_data *data = user_data; struct osdata_item item = { NULL }; + VEC_safe_push (osdata_item_s, data->osdata->items, &item); } @@ -95,6 +96,7 @@ osdata_start_column (struct gdb_xml_parser *parser, { struct osdata_parsing_data *data = user_data; const char *name = VEC_index (gdb_xml_value_s, attributes, 0)->value; + data->property_name = xstrdup (name); } @@ -123,6 +125,7 @@ static void clear_parsing_data (void *p) { struct osdata_parsing_data *data = p; + osdata_free (data->osdata); data->osdata = NULL; xfree (data->property_name); @@ -192,6 +195,7 @@ osdata_item_clear (struct osdata_item *item) { struct osdata_column *col; int ix; + for (ix = 0; VEC_iterate (osdata_column_s, item->columns, ix, col); @@ -215,6 +219,7 @@ osdata_free (struct osdata *osdata) { struct osdata_item *item; int ix; + for (ix = 0; VEC_iterate (osdata_item_s, osdata->items, ix, item); @@ -230,6 +235,7 @@ static void osdata_free_cleanup (void *arg) { struct osdata *osdata = arg; + osdata_free (osdata); } @@ -244,12 +250,18 @@ get_osdata (const char *type) { struct osdata *osdata = NULL; char *xml = target_get_osdata (type); + if (xml) { struct cleanup *old_chain = make_cleanup (xfree, xml); if (xml[0] == '\0') - warning (_("Empty data returned by target. Wrong osdata type?")); + { + if (type) + warning (_("Empty data returned by target. Wrong osdata type?")); + else + warning (_("Empty type list returned by target. No type data?")); + } else osdata = osdata_parse (xml); @@ -287,15 +299,14 @@ info_osdata_command (char *type, int from_tty) int ncols; int nprocs; - if (type == 0) - /* TODO: No type could mean "list availables types". */ - error (_("Argument required.")); - osdata = get_osdata (type); old_chain = make_cleanup_osdata_free (osdata); nprocs = VEC_length (osdata_item_s, osdata->items); + if (!type && nprocs == 0) + error (_("Available types of OS data not reported.")); + last = VEC_last (osdata_item_s, osdata->items); if (last && last->columns) ncols = VEC_length (osdata_column_s, last->columns); @@ -309,6 +320,7 @@ info_osdata_command (char *type, int from_tty) { struct osdata_column *col; int ix; + for (ix = 0; VEC_iterate (osdata_column_s, last->columns, ix, col); @@ -323,6 +335,7 @@ info_osdata_command (char *type, int from_tty) { struct osdata_item *item; int ix_items; + for (ix_items = 0; VEC_iterate (osdata_item_s, osdata->items, ix_items, item); diff --git a/contrib/gdb-7/gdb/osdata.h b/contrib/gdb-7/gdb/osdata.h index 4ada454431..105c62c4fc 100644 --- a/contrib/gdb-7/gdb/osdata.h +++ b/contrib/gdb-7/gdb/osdata.h @@ -1,6 +1,6 @@ /* Routines for handling XML generic OS data provided by target. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/p-exp.y b/contrib/gdb-7/gdb/p-exp.y index dff9b97b99..2aec487463 100644 --- a/contrib/gdb-7/gdb/p-exp.y +++ b/contrib/gdb-7/gdb/p-exp.y @@ -1,5 +1,6 @@ /* YACC parser for Pascal expressions, for GDB. - Copyright (C) 2000, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2000, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -524,6 +525,9 @@ exp : SIZEOF '(' type ')' %prec UNARY write_exp_elt_opcode (OP_LONG); } ; +exp : SIZEOF '(' exp ')' %prec UNARY + { write_exp_elt_opcode (UNOP_SIZEOF); } + exp : STRING { /* C strings are converted into array constants with an explicit null byte added at the end. Thus @@ -1084,7 +1088,6 @@ yylex () char *tokstart; char *uptokstart; char *tokptr; - char *p; int explen, tempbufindex; static char *tempbuf; static int tempbufsize; @@ -1137,7 +1140,7 @@ yylex () lexptr++; c = *lexptr++; if (c == '\\') - c = parse_escape (&lexptr); + c = parse_escape (parse_gdbarch, &lexptr); else if (c == '\'') error ("Empty character constant."); @@ -1302,7 +1305,7 @@ yylex () break; case '\\': tokptr++; - c = parse_escape (&tokptr); + c = parse_escape (parse_gdbarch, &tokptr); if (c == -1) { continue; diff --git a/contrib/gdb-7/gdb/p-lang.c b/contrib/gdb-7/gdb/p-lang.c index 1722c0f4e0..08738ac280 100644 --- a/contrib/gdb-7/gdb/p-lang.c +++ b/contrib/gdb-7/gdb/p-lang.c @@ -1,6 +1,6 @@ /* Pascal language support routines for GDB, the GNU debugger. - Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -101,7 +101,7 @@ is_pascal_string_type (struct type *type,int *length_pos, struct type **char_type, char **arrayname) { - if (TYPE_CODE (type) == TYPE_CODE_STRUCT) + if (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT) { /* Old Borland type pascal strings from Free Pascal Compiler. */ /* Two fields: length and st. */ @@ -137,6 +137,7 @@ is_pascal_string_type (struct type *type,int *length_pos, if (char_type) { *char_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 2)); + if (TYPE_CODE (*char_type) == TYPE_CODE_ARRAY) *char_type = TYPE_TARGET_TYPE (*char_type); } @@ -157,10 +158,7 @@ static void pascal_one_char (int, struct ui_file *, int *); static void pascal_one_char (int c, struct ui_file *stream, int *in_quotes) { - - c &= 0xFF; /* Avoid sign bit follies */ - - if ((c == '\'') || (PRINT_LITERAL_FORM (c))) + if (c == '\'' || ((unsigned int) c <= 0xff && (PRINT_LITERAL_FORM (c)))) { if (!(*in_quotes)) fputs_filtered ("'", stream); @@ -192,6 +190,7 @@ static void pascal_emit_char (int c, struct type *type, struct ui_file *stream, int quoter) { int in_quotes = 0; + pascal_one_char (c, stream, &in_quotes); if (in_quotes) fputs_filtered ("'", stream); @@ -201,6 +200,7 @@ void pascal_printchar (int c, struct type *type, struct ui_file *stream) { int in_quotes = 0; + pascal_one_char (c, stream, &in_quotes); if (in_quotes) fputs_filtered ("'", stream); @@ -214,7 +214,7 @@ pascal_printchar (int c, struct type *type, struct ui_file *stream) void pascal_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, unsigned int length, - int force_ellipses, + const char *encoding, int force_ellipses, const struct value_print_options *options) { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); @@ -372,6 +372,7 @@ pascal_language_arch_info (struct gdbarch *gdbarch, struct language_arch_info *lai) { const struct builtin_type *builtin = builtin_type (gdbarch); + lai->string_char_type = builtin->builtin_char; lai->primitive_type_vector = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_pascal_primitive_types + 1, diff --git a/contrib/gdb-7/gdb/p-lang.h b/contrib/gdb-7/gdb/p-lang.h index 2b2eb2d8ef..7e076d5c90 100644 --- a/contrib/gdb-7/gdb/p-lang.h +++ b/contrib/gdb-7/gdb/p-lang.h @@ -1,6 +1,6 @@ /* Pascal language support definitions for GDB, the GNU debugger. - Copyright (C) 2000, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2000, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -30,13 +30,15 @@ extern int pascal_parse (void); /* Defined in p-exp.y */ extern void pascal_error (char *); /* Defined in p-exp.y */ /* Defined in p-typeprint.c */ -extern void pascal_print_type (struct type *, char *, struct ui_file *, int, int); +extern void pascal_print_type (struct type *, const char *, struct ui_file *, + int, int); extern void pascal_print_typedef (struct type *, struct symbol *, struct ui_file *); extern int pascal_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); extern int pascal_value_print (struct value *, struct ui_file *, @@ -54,7 +56,7 @@ extern int extern void pascal_printchar (int, struct type *, struct ui_file *); extern void pascal_printstr (struct ui_file *, struct type *, const gdb_byte *, - unsigned int, int, + unsigned int, const char *, int, const struct value_print_options *); extern struct type **const (pascal_builtin_types[]); @@ -70,6 +72,7 @@ extern void extern void pascal_object_print_value_fields (struct type *, const gdb_byte *, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *, struct type **, int); diff --git a/contrib/gdb-7/gdb/p-typeprint.c b/contrib/gdb-7/gdb/p-typeprint.c index 62f4511f09..c0752b7d78 100644 --- a/contrib/gdb-7/gdb/p-typeprint.c +++ b/contrib/gdb-7/gdb/p-typeprint.c @@ -1,5 +1,5 @@ /* Support for printing Pascal types for GDB, the GNU debugger. - Copyright (C) 2000, 2001, 2002, 2006, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -46,8 +46,8 @@ void pascal_type_print_varspec_prefix (struct type *, struct ui_file *, int, int /* LEVEL is the depth to indent lines by. */ void -pascal_print_type (struct type *type, char *varstring, struct ui_file *stream, - int show, int level) +pascal_print_type (struct type *type, const char *varstring, + struct ui_file *stream, int show, int level) { enum type_code code; int demangled_args; @@ -205,7 +205,6 @@ void pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream, int show, int passed_a_ptr) { - char *name; if (type == 0) return; @@ -267,10 +266,9 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream, fprintf_filtered (stream, "array "); if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0 && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type)) - fprintf_filtered (stream, "[%d..%d] ", - TYPE_ARRAY_LOWER_BOUND_VALUE (type), - TYPE_ARRAY_UPPER_BOUND_VALUE (type) - ); + fprintf_filtered (stream, "[%s..%s] ", + plongest (TYPE_ARRAY_LOWER_BOUND_VALUE (type)), + plongest (TYPE_ARRAY_UPPER_BOUND_VALUE (type))); fprintf_filtered (stream, "of "); break; @@ -290,7 +288,6 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream, case TYPE_CODE_BITSTRING: case TYPE_CODE_COMPLEX: case TYPE_CODE_TYPEDEF: - case TYPE_CODE_TEMPLATE: /* These types need no prefix. They are listed here so that gcc -Wall will reveal any types that haven't been handled. */ break; @@ -304,6 +301,7 @@ static void pascal_print_func_args (struct type *type, struct ui_file *stream) { int i, len = TYPE_NFIELDS (type); + if (len) { fprintf_filtered (stream, "("); @@ -405,7 +403,6 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream, case TYPE_CODE_BITSTRING: case TYPE_CODE_COMPLEX: case TYPE_CODE_TYPEDEF: - case TYPE_CODE_TEMPLATE: /* These types do not need a suffix. They are listed so that gcc -Wall will report types that may not have been considered. */ break; @@ -443,8 +440,8 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show, s_none, s_public, s_private, s_protected } section_type; - QUIT; + QUIT; wrap_here (" "); if (type == NULL) { @@ -621,7 +618,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show, struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i); int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i); char *method_name = TYPE_FN_FIELDLIST_NAME (type, i); - char *name = type_name_no_tag (type); + /* this is GNU C++ specific how can we know constructor/destructor? It might work for GNU pascal */ @@ -761,13 +758,14 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show, break; case TYPE_CODE_ERROR: - fprintf_filtered (stream, ""); + fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type)); break; /* this probably does not work for enums */ case TYPE_CODE_RANGE: { struct type *target = TYPE_TARGET_TYPE (type); + print_type_scalar (target, TYPE_LOW_BOUND (type), stream); fputs_filtered ("..", stream); print_type_scalar (target, TYPE_HIGH_BOUND (type), stream); diff --git a/contrib/gdb-7/gdb/p-valprint.c b/contrib/gdb-7/gdb/p-valprint.c index 50c993f840..4d39bed265 100644 --- a/contrib/gdb-7/gdb/p-valprint.c +++ b/contrib/gdb-7/gdb/p-valprint.c @@ -1,6 +1,6 @@ /* Support for printing Pascal values for GDB, the GNU debugger. - Copyright (C) 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -54,12 +54,14 @@ int pascal_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *original_value, const struct value_print_options *options) { struct gdbarch *gdbarch = get_type_arch (type); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); unsigned int i = 0; /* Number of characters printed */ unsigned len; + LONGEST low_bound, high_bound; struct type *elttype; unsigned eltlen; int length_pos, length_size, string_pos; @@ -71,21 +73,22 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, switch (TYPE_CODE (type)) { case TYPE_CODE_ARRAY: - if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0) + if (get_array_bounds (type, &low_bound, &high_bound)) { + len = high_bound - low_bound + 1; elttype = check_typedef (TYPE_TARGET_TYPE (type)); eltlen = TYPE_LENGTH (elttype); - len = TYPE_LENGTH (type) / eltlen; if (options->prettyprint_arrays) { print_spaces_filtered (2 + 2 * recurse, stream); } - /* For an array of chars, print with string syntax. */ - if ((eltlen == 1 || eltlen == 2 || eltlen == 4) - && ((TYPE_CODE (elttype) == TYPE_CODE_INT) - || ((current_language->la_language == language_pascal) - && (TYPE_CODE (elttype) == TYPE_CODE_CHAR))) - && (options->format == 0 || options->format == 's')) + /* If 's' format is used, try to print out as string. + If no format is given, print as string if element type + is of TYPE_CODE_CHAR and element size is 1,2 or 4. */ + if (options->format == 's' + || ((eltlen == 1 || eltlen == 2 || eltlen == 4) + && TYPE_CODE (elttype) == TYPE_CODE_CHAR + && options->format == 0)) { /* If requested, look for the first null char and only print elements up to it. */ @@ -104,7 +107,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, } LA_PRINT_STRING (stream, TYPE_TARGET_TYPE (type), - valaddr + embedded_offset, len, 0, + valaddr + embedded_offset, len, NULL, 0, options); i = len; } @@ -123,7 +126,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, i = 0; } val_print_array_elements (type, valaddr + embedded_offset, address, stream, - recurse, options, i); + recurse, original_value, options, i); fprintf_filtered (stream, "}"); } break; @@ -151,105 +154,106 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, break; } elttype = check_typedef (TYPE_TARGET_TYPE (type)); + + addr = unpack_pointer (type, valaddr + embedded_offset); + print_unpacked_pointer: + elttype = check_typedef (TYPE_TARGET_TYPE (type)); + + if (TYPE_CODE (elttype) == TYPE_CODE_FUNC) { - addr = unpack_pointer (type, valaddr + embedded_offset); - print_unpacked_pointer: - elttype = check_typedef (TYPE_TARGET_TYPE (type)); + /* Try to print what function it points to. */ + print_address_demangle (gdbarch, addr, stream, demangle); + /* Return value is irrelevant except for string pointers. */ + return (0); + } - if (TYPE_CODE (elttype) == TYPE_CODE_FUNC) - { - /* Try to print what function it points to. */ - print_address_demangle (gdbarch, addr, stream, demangle); - /* Return value is irrelevant except for string pointers. */ - return (0); - } + if (options->addressprint && options->format != 's') + { + fputs_filtered (paddress (gdbarch, addr), stream); + } - if (options->addressprint && options->format != 's') - { - fputs_filtered (paddress (gdbarch, addr), stream); - } + /* For a pointer to char or unsigned char, also print the string + pointed to, unless pointer is null. */ + if (((TYPE_LENGTH (elttype) == 1 + && (TYPE_CODE (elttype) == TYPE_CODE_INT + || TYPE_CODE (elttype) == TYPE_CODE_CHAR)) + || ((TYPE_LENGTH (elttype) == 2 || TYPE_LENGTH (elttype) == 4) + && TYPE_CODE (elttype) == TYPE_CODE_CHAR)) + && (options->format == 0 || options->format == 's') + && addr != 0) + { + /* no wide string yet */ + i = val_print_string (elttype, addr, -1, stream, options); + } + /* also for pointers to pascal strings */ + /* Note: this is Free Pascal specific: + as GDB does not recognize stabs pascal strings + Pascal strings are mapped to records + with lowercase names PM */ + if (is_pascal_string_type (elttype, &length_pos, &length_size, + &string_pos, &char_type, NULL) + && addr != 0) + { + ULONGEST string_length; + void *buffer; - /* For a pointer to char or unsigned char, also print the string - pointed to, unless pointer is null. */ - if (((TYPE_LENGTH (elttype) == 1 - && (TYPE_CODE (elttype) == TYPE_CODE_INT - || TYPE_CODE (elttype) == TYPE_CODE_CHAR)) - || ((TYPE_LENGTH (elttype) == 2 || TYPE_LENGTH (elttype) == 4) - && TYPE_CODE (elttype) == TYPE_CODE_CHAR)) - && (options->format == 0 || options->format == 's') - && addr != 0) - { - /* no wide string yet */ - i = val_print_string (elttype, addr, -1, stream, options); - } - /* also for pointers to pascal strings */ - /* Note: this is Free Pascal specific: - as GDB does not recognize stabs pascal strings - Pascal strings are mapped to records - with lowercase names PM */ - if (is_pascal_string_type (elttype, &length_pos, &length_size, - &string_pos, &char_type, NULL) - && addr != 0) + buffer = xmalloc (length_size); + read_memory (addr + length_pos, buffer, length_size); + string_length = extract_unsigned_integer (buffer, length_size, + byte_order); + xfree (buffer); + i = val_print_string (char_type ,addr + string_pos, string_length, stream, options); + } + else if (pascal_object_is_vtbl_member (type)) + { + /* print vtbl's nicely */ + CORE_ADDR vt_address = unpack_pointer (type, valaddr + embedded_offset); + struct minimal_symbol *msymbol = + lookup_minimal_symbol_by_pc (vt_address); + + if ((msymbol != NULL) + && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol))) { - ULONGEST string_length; - void *buffer; - buffer = xmalloc (length_size); - read_memory (addr + length_pos, buffer, length_size); - string_length = extract_unsigned_integer (buffer, length_size, - byte_order); - xfree (buffer); - i = val_print_string (char_type ,addr + string_pos, string_length, stream, options); + fputs_filtered (" <", stream); + fputs_filtered (SYMBOL_PRINT_NAME (msymbol), stream); + fputs_filtered (">", stream); } - else if (pascal_object_is_vtbl_member (type)) + if (vt_address && options->vtblprint) { - /* print vtbl's nicely */ - CORE_ADDR vt_address = unpack_pointer (type, valaddr + embedded_offset); + struct value *vt_val; + struct symbol *wsym = (struct symbol *) NULL; + struct type *wtype; + struct block *block = (struct block *) NULL; + int is_this_fld; + + if (msymbol != NULL) + wsym = lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol), block, + VAR_DOMAIN, &is_this_fld); - struct minimal_symbol *msymbol = - lookup_minimal_symbol_by_pc (vt_address); - if ((msymbol != NULL) - && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol))) + if (wsym) { - fputs_filtered (" <", stream); - fputs_filtered (SYMBOL_PRINT_NAME (msymbol), stream); - fputs_filtered (">", stream); + wtype = SYMBOL_TYPE (wsym); } - if (vt_address && options->vtblprint) + else { - struct value *vt_val; - struct symbol *wsym = (struct symbol *) NULL; - struct type *wtype; - struct block *block = (struct block *) NULL; - int is_this_fld; - - if (msymbol != NULL) - wsym = lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol), block, - VAR_DOMAIN, &is_this_fld); - - if (wsym) - { - wtype = SYMBOL_TYPE (wsym); - } - else - { - wtype = TYPE_TARGET_TYPE (type); - } - vt_val = value_at (wtype, vt_address); - common_val_print (vt_val, stream, recurse + 1, options, - current_language); - if (options->pretty) - { - fprintf_filtered (stream, "\n"); - print_spaces_filtered (2 + 2 * recurse, stream); - } + wtype = TYPE_TARGET_TYPE (type); + } + vt_val = value_at (wtype, vt_address); + common_val_print (vt_val, stream, recurse + 1, options, + current_language); + if (options->pretty) + { + fprintf_filtered (stream, "\n"); + print_spaces_filtered (2 + 2 * recurse, stream); } } - - /* Return number of characters printed, including the terminating - '\0' if we reached the end. val_print_string takes care including - the terminating '\0' if necessary. */ - return i; } + + /* Return number of characters printed, including the terminating + '\0' if we reached the end. val_print_string takes care including + the terminating '\0' if necessary. */ + return i; + break; case TYPE_CODE_REF: @@ -258,6 +262,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, { CORE_ADDR addr = extract_typed_address (valaddr + embedded_offset, type); + fprintf_filtered (stream, "@"); fputs_filtered (paddress (gdbarch, addr), stream); if (options->deref_ref) @@ -269,9 +274,10 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) { struct value *deref_val = - value_at - (TYPE_TARGET_TYPE (type), - unpack_pointer (type, valaddr + embedded_offset)); + value_at + (TYPE_TARGET_TYPE (type), + unpack_pointer (type, valaddr + embedded_offset)); + common_val_print (deref_val, stream, recurse + 1, options, current_language); } @@ -306,11 +312,13 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, &string_pos, &char_type, NULL)) { len = extract_unsigned_integer (valaddr + embedded_offset + length_pos, length_size, byte_order); - LA_PRINT_STRING (stream, char_type, valaddr + embedded_offset + string_pos, len, 0, options); + LA_PRINT_STRING (stream, char_type, + valaddr + embedded_offset + string_pos, + len, NULL, 0, options); } else pascal_object_print_value_fields (type, valaddr + embedded_offset, address, stream, - recurse, options, NULL, 0); + recurse, original_value, options, NULL, 0); } break; @@ -369,6 +377,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr + embedded_offset, type, @@ -403,6 +412,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr + embedded_offset, type, @@ -418,6 +428,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, if (options->format || options->output_format) { struct value_print_options opts = *options; + opts.format = (options->format ? options->format : options->output_format); print_scalar_formatted (valaddr + embedded_offset, type, @@ -471,6 +482,14 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, fputs_filtered ("[", stream); i = get_discrete_bounds (range, &low_bound, &high_bound); + if (low_bound == 0 && high_bound == -1 && TYPE_LENGTH (type) > 0) + { + /* If we know the size of the set type, we can figure out the + maximum value. */ + i = 0; + high_bound = TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1; + TYPE_HIGH_BOUND (range) = high_bound; + } maybe_bad_bstring: if (i < 0) { @@ -481,6 +500,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, for (i = low_bound; i <= high_bound; i++) { int element = value_bit_index (type, valaddr + embedded_offset, i); + if (element < 0) { i = element; @@ -498,6 +518,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, if (i + 1 <= high_bound && value_bit_index (type, valaddr + embedded_offset, ++i)) { int j = i; + fputs_filtered ("..", stream); while (i + 1 <= high_bound && value_bit_index (type, valaddr + embedded_offset, ++i)) @@ -519,7 +540,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, break; case TYPE_CODE_ERROR: - fprintf_filtered (stream, ""); + fprintf_filtered (stream, "%s", TYPE_ERROR_NAME (type)); break; case TYPE_CODE_UNDEF: @@ -541,6 +562,9 @@ pascal_value_print (struct value *val, struct ui_file *stream, const struct value_print_options *options) { struct type *type = value_type (val); + struct value_print_options opts = *options; + + opts.deref_ref = 1; /* If it is a pointer, indicate what it points to. @@ -567,7 +591,7 @@ pascal_value_print (struct value *val, struct ui_file *stream, fprintf_filtered (stream, ") "); } } - return common_val_print (val, stream, 0, options, current_language); + return common_val_print (val, stream, 0, &opts, current_language); } @@ -588,6 +612,7 @@ static void pascal_object_print_static_field (struct value *, static void pascal_object_print_value (struct type *, const gdb_byte *, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *, struct type **); @@ -645,6 +670,7 @@ void pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, struct type **dont_print_vb, int dont_print_statmem) @@ -662,7 +688,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, duplicates of virtual baseclasses. */ if (n_baseclasses > 0) pascal_object_print_value (type, valaddr, address, stream, - recurse + 1, options, dont_print_vb); + recurse + 1, val, options, dont_print_vb); if (!len && n_baseclasses == 1) fprintf_filtered (stream, ""); @@ -751,9 +777,15 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, { fputs_filtered ("", stream); } + else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i), + TYPE_FIELD_BITSIZE (type, i))) + { + fputs_filtered (_(""), stream); + } else { struct value_print_options opts = *options; + v = value_from_longest (TYPE_FIELD_TYPE (type, i), unpack_field_as_long (type, valaddr, i)); @@ -772,6 +804,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, { /* struct value *v = value_static_field (type, i); v4.17 specific */ struct value *v; + v = value_from_longest (TYPE_FIELD_TYPE (type, i), unpack_field_as_long (type, valaddr, i)); @@ -784,6 +817,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, else { struct value_print_options opts = *options; + opts.deref_ref = 0; /* val_print (TYPE_FIELD_TYPE (type, i), valaddr + TYPE_FIELD_BITPOS (type, i) / 8, @@ -792,7 +826,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, val_print (TYPE_FIELD_TYPE (type, i), valaddr, TYPE_FIELD_BITPOS (type, i) / 8, address + TYPE_FIELD_BITPOS (type, i) / 8, - stream, recurse + 1, &opts, + stream, recurse + 1, val, &opts, current_language); } } @@ -823,11 +857,12 @@ static void pascal_object_print_value (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, struct type **dont_print_vb) { struct type **last_dont_print - = (struct type **) obstack_next_free (&dont_print_vb_obstack); + = (struct type **) obstack_next_free (&dont_print_vb_obstack); struct obstack tmp_obstack = dont_print_vb_obstack; int i, n_baseclasses = TYPE_N_BASECLASSES (type); @@ -850,10 +885,10 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr, if (BASETYPE_VIA_VIRTUAL (type, i)) { struct type **first_dont_print - = (struct type **) obstack_base (&dont_print_vb_obstack); + = (struct type **) obstack_base (&dont_print_vb_obstack); int j = (struct type **) obstack_next_free (&dont_print_vb_obstack) - - first_dont_print; + - first_dont_print; while (--j >= 0) if (baseclass == first_dont_print[j]) @@ -884,6 +919,7 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr, { /* FIXME (alloc): not safe is baseclass is really really big. */ gdb_byte *buf = alloca (TYPE_LENGTH (baseclass)); + base_valaddr = buf; if (target_read_memory (address + boffset, buf, TYPE_LENGTH (baseclass)) != 0) @@ -896,7 +932,7 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr, fprintf_filtered (stream, ""); else pascal_object_print_value_fields (baseclass, base_valaddr, address + boffset, - stream, recurse, options, + stream, recurse, val, options, (struct type **) obstack_base (&dont_print_vb_obstack), 0); fputs_filtered (", ", stream); @@ -960,7 +996,8 @@ pascal_object_print_static_field (struct value *val, CHECK_TYPEDEF (type); pascal_object_print_value_fields (type, value_contents (val), addr, - stream, recurse, options, NULL, 1); + stream, recurse, NULL, options, + NULL, 1); return; } diff --git a/contrib/gdb-7/gdb/parse.c b/contrib/gdb-7/gdb/parse.c index ef938e37d8..c885c6a6d5 100644 --- a/contrib/gdb-7/gdb/parse.c +++ b/contrib/gdb-7/gdb/parse.c @@ -1,7 +1,7 @@ /* Parse expressions for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2004, 2005, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Modified from expread.y by the Department of Computer Science at the @@ -31,9 +31,8 @@ during the process of parsing; the lower levels of the tree always come first in the result. */ -#include - #include "defs.h" +#include #include "arch-utils.h" #include "gdb_string.h" #include "symtab.h" @@ -63,6 +62,7 @@ const struct exp_descriptor exp_descriptor_standard = { print_subexp_standard, operator_length_standard, + operator_check_standard, op_name_standard, dump_subexp_body_standard, evaluate_subexp_standard @@ -110,6 +110,18 @@ show_expressiondebug (struct ui_file *file, int from_tty, fprintf_filtered (file, _("Expression debugging is %s.\n"), value); } + +/* Non-zero if an expression parser should set yydebug. */ +int parser_debug; + +static void +show_parserdebug (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Parser debugging is %s.\n"), value); +} + + static void free_funcalls (void *ignore); static int prefixify_expression (struct expression *); @@ -156,6 +168,7 @@ end_arglist (void) { int val = arglist_len; struct funcall *call = funcall_chain; + funcall_chain = call->next; arglist_len = call->arglist_len; xfree (call); @@ -202,10 +215,9 @@ void write_exp_elt_opcode (enum exp_opcode expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); + memset (&tmp, 0, sizeof (union exp_element)); tmp.opcode = expelt; - write_exp_elt (tmp); } @@ -213,10 +225,9 @@ void write_exp_elt_sym (struct symbol *expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); + memset (&tmp, 0, sizeof (union exp_element)); tmp.symbol = expelt; - write_exp_elt (tmp); } @@ -224,6 +235,7 @@ void write_exp_elt_block (struct block *b) { union exp_element tmp; + memset (&tmp, 0, sizeof (union exp_element)); tmp.block = b; write_exp_elt (tmp); @@ -233,6 +245,7 @@ void write_exp_elt_objfile (struct objfile *objfile) { union exp_element tmp; + memset (&tmp, 0, sizeof (union exp_element)); tmp.objfile = objfile; write_exp_elt (tmp); @@ -242,10 +255,9 @@ void write_exp_elt_longcst (LONGEST expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); + memset (&tmp, 0, sizeof (union exp_element)); tmp.longconst = expelt; - write_exp_elt (tmp); } @@ -253,10 +265,9 @@ void write_exp_elt_dblcst (DOUBLEST expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); + memset (&tmp, 0, sizeof (union exp_element)); tmp.doubleconst = expelt; - write_exp_elt (tmp); } @@ -276,10 +287,9 @@ void write_exp_elt_type (struct type *expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); + memset (&tmp, 0, sizeof (union exp_element)); tmp.type = expelt; - write_exp_elt (tmp); } @@ -287,10 +297,9 @@ void write_exp_elt_intern (struct internalvar *expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); + memset (&tmp, 0, sizeof (union exp_element)); tmp.internalvar = expelt; - write_exp_elt (tmp); } @@ -764,7 +773,7 @@ prefixify_expression (struct expression *expr) int length_of_subexp (struct expression *expr, int endpos) { - int oplen, args, i; + int oplen, args; operator_length (expr, endpos, &oplen, &args); @@ -782,7 +791,8 @@ length_of_subexp (struct expression *expr, int endpos) operator takes. */ void -operator_length (struct expression *expr, int endpos, int *oplenp, int *argsp) +operator_length (const struct expression *expr, int endpos, int *oplenp, + int *argsp) { expr->language_defn->la_exp_desc->operator_length (expr, endpos, oplenp, argsp); @@ -791,7 +801,7 @@ operator_length (struct expression *expr, int endpos, int *oplenp, int *argsp) /* Default value for operator_length in exp_descriptor vectors. */ void -operator_length_standard (struct expression *expr, int endpos, +operator_length_standard (const struct expression *expr, int endpos, int *oplenp, int *argsp) { int oplen = 1; @@ -837,6 +847,11 @@ operator_length_standard (struct expression *expr, int endpos, args = 1 + longest_to_int (expr->elts[endpos - 2].longconst); break; + case TYPE_INSTANCE: + oplen = 4 + longest_to_int (expr->elts[endpos - 2].longconst); + args = 1; + break; + case OP_OBJC_MSGCALL: /* Objective C message (method) call */ oplen = 4; args = 1 + longest_to_int (expr->elts[endpos - 2].longconst); @@ -849,6 +864,8 @@ operator_length_standard (struct expression *expr, int endpos, case BINOP_VAL: case UNOP_CAST: + case UNOP_DYNAMIC_CAST: + case UNOP_REINTERPRET_CAST: case UNOP_MEMVAL: oplen = 3; args = 1; @@ -871,6 +888,13 @@ operator_length_standard (struct expression *expr, int endpos, args = 1; break; + case OP_ADL_FUNC: + oplen = longest_to_int (expr->elts[endpos - 2].longconst); + oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1); + oplen++; + oplen++; + break; + case OP_LABELED: case STRUCTOP_STRUCT: case STRUCTOP_PTR: @@ -965,7 +989,6 @@ prefixify_subexp (struct expression *inexpr, int args; int i; int *arglens; - enum exp_opcode opcode; int result = -1; operator_length (inexpr, inend, &oplen, &args); @@ -998,6 +1021,7 @@ prefixify_subexp (struct expression *inexpr, for (i = 0; i < args; i++) { int r; + oplen = arglens[i]; inend += oplen; r = prefixify_subexp (inexpr, outexpr, inend, outbeg); @@ -1045,6 +1069,7 @@ parse_exp_in_context (char **stringptr, struct block *block, int comma, { volatile struct gdb_exception except; struct cleanup *old_chain; + const struct language_defn *lang = NULL; int subexp; lexptr = *stringptr; @@ -1082,17 +1107,43 @@ parse_exp_in_context (char **stringptr, struct block *block, int comma, expression_context_pc = BLOCK_START (expression_context_block); } + if (language_mode == language_mode_auto && block != NULL) + { + /* Find the language associated to the given context block. + Default to the current language if it can not be determined. + + Note that using the language corresponding to the current frame + can sometimes give unexpected results. For instance, this + routine is often called several times during the inferior + startup phase to re-parse breakpoint expressions after + a new shared library has been loaded. The language associated + to the current frame at this moment is not relevant for + the breakpoint. Using it would therefore be silly, so it seems + better to rely on the current language rather than relying on + the current frame language to parse the expression. That's why + we do the following language detection only if the context block + has been specifically provided. */ + struct symbol *func = block_linkage_function (block); + + if (func != NULL) + lang = language_def (SYMBOL_LANGUAGE (func)); + if (lang == NULL || lang->la_language == language_unknown) + lang = current_language; + } + else + lang = current_language; + expout_size = 10; expout_ptr = 0; expout = (struct expression *) xmalloc (sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_size)); - expout->language_defn = current_language; + expout->language_defn = lang; expout->gdbarch = get_current_arch (); TRY_CATCH (except, RETURN_MASK_ALL) { - if (current_language->la_parser ()) - current_language->la_error (NULL); + if (lang->la_parser ()) + lang->la_error (NULL); } if (except.reason < 0) { @@ -1125,7 +1176,7 @@ parse_exp_in_context (char **stringptr, struct block *block, int comma, if (out_subexp) *out_subexp = subexp; - current_language->la_post_parser (&expout, void_context_p); + lang->la_post_parser (&expout, void_context_p); if (expressiondebug) dump_prefix_expression (expout, gdb_stdlog); @@ -1141,6 +1192,7 @@ struct expression * parse_expression (char *string) { struct expression *exp; + exp = parse_exp_1 (&string, 0, 0); if (*string) error (_("Junk after end of expression.")); @@ -1344,6 +1396,7 @@ void parser_fprintf (FILE *x, const char *y, ...) { va_list args; + va_start (args, y); if (x == stderr) vfprintf_unfiltered (gdb_stderr, y, args); @@ -1355,6 +1408,148 @@ parser_fprintf (FILE *x, const char *y, ...) va_end (args); } +/* Implementation of the exp_descriptor method operator_check. */ + +int +operator_check_standard (struct expression *exp, int pos, + int (*objfile_func) (struct objfile *objfile, + void *data), + void *data) +{ + const union exp_element *const elts = exp->elts; + struct type *type = NULL; + struct objfile *objfile = NULL; + + /* Extended operators should have been already handled by exp_descriptor + iterate method of its specific language. */ + gdb_assert (elts[pos].opcode < OP_EXTENDED0); + + /* Track the callers of write_exp_elt_type for this table. */ + + switch (elts[pos].opcode) + { + case BINOP_VAL: + case OP_COMPLEX: + case OP_DECFLOAT: + case OP_DOUBLE: + case OP_LONG: + case OP_SCOPE: + case OP_TYPE: + case UNOP_CAST: + case UNOP_DYNAMIC_CAST: + case UNOP_REINTERPRET_CAST: + case UNOP_MAX: + case UNOP_MEMVAL: + case UNOP_MIN: + type = elts[pos + 1].type; + break; + + case TYPE_INSTANCE: + { + LONGEST arg, nargs = elts[pos + 1].longconst; + + for (arg = 0; arg < nargs; arg++) + { + struct type *type = elts[pos + 2 + arg].type; + struct objfile *objfile = TYPE_OBJFILE (type); + + if (objfile && (*objfile_func) (objfile, data)) + return 1; + } + } + break; + + case UNOP_MEMVAL_TLS: + objfile = elts[pos + 1].objfile; + type = elts[pos + 2].type; + break; + + case OP_VAR_VALUE: + { + const struct block *const block = elts[pos + 1].block; + const struct symbol *const symbol = elts[pos + 2].symbol; + + /* Check objfile where the variable itself is placed. + SYMBOL_OBJ_SECTION (symbol) may be NULL. */ + if ((*objfile_func) (SYMBOL_SYMTAB (symbol)->objfile, data)) + return 1; + + /* Check objfile where is placed the code touching the variable. */ + objfile = lookup_objfile_from_block (block); + + type = SYMBOL_TYPE (symbol); + } + break; + } + + /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL. */ + + if (type && TYPE_OBJFILE (type) + && (*objfile_func) (TYPE_OBJFILE (type), data)) + return 1; + if (objfile && (*objfile_func) (objfile, data)) + return 1; + + return 0; +} + +/* Call OBJFILE_FUNC for any TYPE and OBJFILE found being referenced by EXP. + The functions are never called with NULL OBJFILE. Functions get passed an + arbitrary caller supplied DATA pointer. If any of the functions returns + non-zero value then (any other) non-zero value is immediately returned to + the caller. Otherwise zero is returned after iterating through whole EXP. + */ + +static int +exp_iterate (struct expression *exp, + int (*objfile_func) (struct objfile *objfile, void *data), + void *data) +{ + int endpos; + + for (endpos = exp->nelts; endpos > 0; ) + { + int pos, args, oplen = 0; + + operator_length (exp, endpos, &oplen, &args); + gdb_assert (oplen > 0); + + pos = endpos - oplen; + if (exp->language_defn->la_exp_desc->operator_check (exp, pos, + objfile_func, data)) + return 1; + + endpos = pos; + } + + return 0; +} + +/* Helper for exp_uses_objfile. */ + +static int +exp_uses_objfile_iter (struct objfile *exp_objfile, void *objfile_voidp) +{ + struct objfile *objfile = objfile_voidp; + + if (exp_objfile->separate_debug_objfile_backlink) + exp_objfile = exp_objfile->separate_debug_objfile_backlink; + + return exp_objfile == objfile; +} + +/* Return 1 if EXP uses OBJFILE (and will become dangling when OBJFILE + is unloaded), otherwise return 0. OBJFILE must not be a separate debug info + file. */ + +int +exp_uses_objfile (struct expression *exp, struct objfile *objfile) +{ + gdb_assert (objfile->separate_debug_objfile_backlink == NULL); + + return exp_iterate (exp, exp_uses_objfile_iter, objfile); +} + void _initialize_parse (void) { @@ -1371,4 +1566,12 @@ When non-zero, the internal representation of expressions will be printed."), NULL, show_expressiondebug, &setdebuglist, &showdebuglist); + add_setshow_boolean_cmd ("parser", class_maintenance, + &parser_debug, _("\ +Set parser debugging."), _("\ +Show parser debugging."), _("\ +When non-zero, expression parser tracing will be enabled."), + NULL, + show_parserdebug, + &setdebuglist, &showdebuglist); } diff --git a/contrib/gdb-7/gdb/parser-defs.h b/contrib/gdb-7/gdb/parser-defs.h index cbda9c35cf..bb79ae1391 100644 --- a/contrib/gdb-7/gdb/parser-defs.h +++ b/contrib/gdb-7/gdb/parser-defs.h @@ -1,7 +1,8 @@ /* Parser definitions for GDB. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + 1998, 1999, 2000, 2002, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Modified from expread.y by the Department of Computer Science at the State University of New York at Buffalo. @@ -28,6 +29,8 @@ struct block; +extern int parser_debug; + extern struct expression *expout; extern int expout_size; extern int expout_ptr; @@ -185,9 +188,15 @@ extern int dump_subexp (struct expression *, struct ui_file *, int); extern int dump_subexp_body_standard (struct expression *, struct ui_file *, int); -extern void operator_length (struct expression *, int, int *, int *); +extern void operator_length (const struct expression *, int, int *, int *); + +extern void operator_length_standard (const struct expression *, int, int *, + int *); -extern void operator_length_standard (struct expression *, int, int *, int *); +extern int operator_check_standard (struct expression *exp, int pos, + int (*objfile_func) + (struct objfile *objfile, void *data), + void *data); extern char *op_name_standard (enum exp_opcode); @@ -265,7 +274,20 @@ struct exp_descriptor /* Returns number of exp_elements needed to represent an operator and the number of subexpressions it takes. */ - void (*operator_length) (struct expression*, int, int*, int *); + void (*operator_length) (const struct expression*, int, int*, int *); + + /* Call TYPE_FUNC and OBJFILE_FUNC for any TYPE and OBJFILE found being + referenced by the single operator of EXP at position POS. Operator + parameters are located at positive (POS + number) offsets in EXP. + The functions should never be called with NULL TYPE or NULL OBJFILE. + Functions should get passed an arbitrary caller supplied DATA pointer. + If any of the functions returns non-zero value then (any other) non-zero + value should be immediately returned to the caller. Otherwise zero + should be returned. */ + int (*operator_check) (struct expression *exp, int pos, + int (*objfile_func) (struct objfile *objfile, + void *data), + void *data); /* Name of this operator for dumping purposes. */ char *(*op_name) (enum exp_opcode); @@ -297,6 +319,8 @@ extern void print_subexp_standard (struct expression *, int *, /* Function used to avoid direct calls to fprintf in the code generated by the bison parser. */ -extern void parser_fprintf (FILE *, const char *, ...) ATTR_FORMAT (printf, 2 ,3); +extern void parser_fprintf (FILE *, const char *, ...) ATTRIBUTE_PRINTF (2, 3); + +extern int exp_uses_objfile (struct expression *exp, struct objfile *objfile); #endif /* PARSER_DEFS_H */ diff --git a/contrib/gdb-7/gdb/posix-hdep.c b/contrib/gdb-7/gdb/posix-hdep.c index 0c8952dbc8..bcc1dee02e 100644 --- a/contrib/gdb-7/gdb/posix-hdep.c +++ b/contrib/gdb-7/gdb/posix-hdep.c @@ -1,6 +1,6 @@ /* Host support routines for MinGW, for GDB, the GNU debugger. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -37,6 +37,7 @@ safe_strerror (int errnum) if (msg == NULL) { static char buf[32]; + xsnprintf (buf, sizeof buf, "(undocumented errno %d)", errnum); msg = buf; } diff --git a/contrib/gdb-7/gdb/printcmd.c b/contrib/gdb-7/gdb/printcmd.c index 5d8b936a6c..5ffa099d87 100644 --- a/contrib/gdb-7/gdb/printcmd.c +++ b/contrib/gdb-7/gdb/printcmd.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -46,9 +46,9 @@ #include "exceptions.h" #include "observer.h" #include "solist.h" -#include "solib.h" #include "parser-defs.h" #include "charset.h" +#include "arch-utils.h" #ifdef TUI #include "tui/tui.h" /* For tui_active et.al. */ @@ -135,16 +135,25 @@ struct display { /* Chain link to next auto-display item. */ struct display *next; + /* The expression as the user typed it. */ char *exp_string; + /* Expression to be evaluated and displayed. */ struct expression *exp; + /* Item number of this auto-display item. */ int number; + /* Display format specified. */ struct format_data format; + + /* Program space associated with `block'. */ + struct program_space *pspace; + /* Innermost block required by this expression when evaluated */ struct block *block; + /* Status of this display (enabled or disabled) */ int enabled_p; }; @@ -250,6 +259,11 @@ decode_format (char **string_ptr, int oformat, int osize) /* Characters default to one byte. */ val.size = osize ? 'b' : osize; break; + case 's': + /* Display strings with byte size chars unless explicitly specified. */ + val.size = '\0'; + break; + default: /* The default is the size most recently specified. */ val.size = osize; @@ -282,10 +296,11 @@ print_formatted (struct value *val, int size, case 's': { struct type *elttype = value_type (val); + next_address = (value_address (val) + val_print_string (elttype, value_address (val), -1, - stream, options)); + stream, options) * len); } return; @@ -359,7 +374,7 @@ print_scalar_formatted (const void *valaddr, struct type *type, struct value_print_options opts = *options; opts.format = 0; opts.deref_ref = 0; - val_print (type, valaddr, 0, 0, stream, 0, &opts, + val_print (type, valaddr, 0, 0, stream, 0, NULL, &opts, current_language); return; } @@ -449,6 +464,7 @@ print_scalar_formatted (const void *valaddr, struct type *type, case 'a': { CORE_ADDR addr = unpack_pointer (type, valaddr); + print_address (gdbarch, addr, stream); } break; @@ -456,8 +472,8 @@ print_scalar_formatted (const void *valaddr, struct type *type, case 'c': { struct value_print_options opts = *options; - opts.format = 0; + opts.format = 0; if (TYPE_UNSIGNED (type)) type = builtin_type (gdbarch)->builtin_true_unsigned_char; else @@ -553,7 +569,8 @@ set_next_address (struct gdbarch *gdbarch, CORE_ADDR addr) settings of the demangle and asm_demangle variables. */ void -print_address_symbolic (CORE_ADDR addr, struct ui_file *stream, +print_address_symbolic (struct gdbarch *gdbarch, CORE_ADDR addr, + struct ui_file *stream, int do_demangle, char *leadin) { char *name = NULL; @@ -566,7 +583,7 @@ print_address_symbolic (CORE_ADDR addr, struct ui_file *stream, struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &name); make_cleanup (free_current_contents, &filename); - if (build_address_symbolic (addr, do_demangle, &name, &offset, + if (build_address_symbolic (gdbarch, addr, do_demangle, &name, &offset, &filename, &line, &unmapped)) { do_cleanups (cleanup_chain); @@ -606,7 +623,8 @@ print_address_symbolic (CORE_ADDR addr, struct ui_file *stream, success, when all the info in the OUT paramters is valid. Return 1 otherwise. */ int -build_address_symbolic (CORE_ADDR addr, /* IN */ +build_address_symbolic (struct gdbarch *gdbarch, + CORE_ADDR addr, /* IN */ int do_demangle, /* IN */ char **name, /* OUT */ int *offset, /* OUT */ @@ -649,6 +667,13 @@ build_address_symbolic (CORE_ADDR addr, /* IN */ if (symbol) { + /* If this is a function (i.e. a code address), strip out any + non-address bits. For instance, display a pointer to the + first instruction of a Thumb function as ; the + second instruction will be , even though the + pointer is . This matches the ISA behavior. */ + addr = gdbarch_addr_bits_remove (gdbarch, addr); + name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol)); if (do_demangle || asm_demangle) name_temp = SYMBOL_PRINT_NAME (symbol); @@ -713,7 +738,27 @@ print_address (struct gdbarch *gdbarch, CORE_ADDR addr, struct ui_file *stream) { fputs_filtered (paddress (gdbarch, addr), stream); - print_address_symbolic (addr, stream, asm_demangle, " "); + print_address_symbolic (gdbarch, addr, stream, asm_demangle, " "); +} + +/* Return a prefix for instruction address: + "=> " for current instruction, else " ". */ + +const char * +pc_prefix (CORE_ADDR addr) +{ + if (has_stack_frames ()) + { + struct frame_info *frame; + CORE_ADDR pc; + + frame = get_selected_frame (NULL); + pc = get_frame_pc (frame); + + if (pc == addr) + return "=> "; + } + return " "; } /* Print address ADDR symbolically on STREAM. Parameter DEMANGLE @@ -726,6 +771,7 @@ print_address_demangle (struct gdbarch *gdbarch, CORE_ADDR addr, struct ui_file *stream, int do_demangle) { struct value_print_options opts; + get_user_print_options (&opts); if (addr == 0) { @@ -734,11 +780,11 @@ print_address_demangle (struct gdbarch *gdbarch, CORE_ADDR addr, else if (opts.addressprint) { fputs_filtered (paddress (gdbarch, addr), stream); - print_address_symbolic (addr, stream, do_demangle, " "); + print_address_symbolic (gdbarch, addr, stream, do_demangle, " "); } else { - print_address_symbolic (addr, stream, do_demangle, ""); + print_address_symbolic (gdbarch, addr, stream, do_demangle, ""); } } @@ -763,9 +809,11 @@ do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr) next_gdbarch = gdbarch; next_address = addr; - /* String or instruction format implies fetch single bytes - regardless of the specified size. */ - if (format == 's' || format == 'i') + /* Instruction format implies fetch single bytes + regardless of the specified size. + The case of strings is handled in decode_format, only explicit + size operator are not changed to 'b'. */ + if (format == 'i') size = 'b'; if (size == 'a') @@ -792,6 +840,28 @@ do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr) else if (size == 'g') val_type = builtin_type (next_gdbarch)->builtin_int64; + if (format == 's') + { + struct type *char_type = NULL; + + /* Search for "char16_t" or "char32_t" types or fall back to 8-bit char + if type is not found. */ + if (size == 'h') + char_type = builtin_type (next_gdbarch)->builtin_char16; + else if (size == 'w') + char_type = builtin_type (next_gdbarch)->builtin_char32; + if (char_type) + val_type = char_type; + else + { + if (size != '\0' && size != 'b') + warning (_("Unable to display strings with size '%c', using 'b' \ +instead."), size); + size = 'b'; + val_type = builtin_type (next_gdbarch)->builtin_int8; + } + } + maxelts = 8; if (size == 'w') maxelts = 4; @@ -808,6 +878,8 @@ do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr) while (count > 0) { QUIT; + if (format == 'i') + fputs_filtered (pc_prefix (next_address), gdb_stdout); print_address (next_gdbarch, next_address, gdb_stdout); printf_filtered (":"); for (i = maxelts; @@ -891,7 +963,6 @@ print_command_1 (char *exp, int inspect, int voidprint) if (exp && *exp) { - struct type *type; expr = parse_expression (exp); old_chain = make_cleanup (free_current_contents, &expr); cleanup = 1; @@ -1008,6 +1079,7 @@ set_command (char *exp, int from_tty) struct expression *expr = parse_expression (exp); struct cleanup *old_chain = make_cleanup (free_current_contents, &expr); + evaluate_expression (expr); do_cleanups (old_chain); } @@ -1113,14 +1185,14 @@ address_info (char *exp, int from_tty) struct minimal_symbol *msymbol; long val; struct obj_section *section; - CORE_ADDR load_addr; + CORE_ADDR load_addr, context_pc = 0; int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero if exp is a field of `this'. */ if (exp == 0) error (_("Argument required.")); - sym = lookup_symbol (exp, get_selected_block (0), VAR_DOMAIN, + sym = lookup_symbol (exp, get_selected_block (&context_pc), VAR_DOMAIN, &is_a_field_of_this); if (sym == NULL) { @@ -1201,7 +1273,7 @@ address_info (char *exp, int from_tty) Unfortunately DWARF 2 stores the frame-base (instead of the function) location in a function's symbol. Oops! For the moment enable this when/where applicable. */ - SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, gdb_stdout); + SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, context_pc, gdb_stdout); break; case LOC_REGISTER: @@ -1351,7 +1423,7 @@ x_command (char *exp, int from_tty) old_chain = make_cleanup (free_current_contents, &expr); val = evaluate_expression (expr); if (TYPE_CODE (value_type (val)) == TYPE_CODE_REF) - val = value_ind (val); + val = coerce_ref (val); /* In rvalue contexts, such as this, functions are coerced into pointers to functions. This makes "x/i main" work. */ if (/* last_format == 'i' && */ @@ -1371,8 +1443,11 @@ x_command (char *exp, int from_tty) do_examine (fmt, next_gdbarch, next_address); /* If the examine succeeds, we remember its size and format for next - time. */ - last_size = fmt.size; + time. Set last_size to 'b' for strings. */ + if (fmt.format == 's') + last_size = 'b'; + else + last_size = fmt.size; last_format = fmt.format; /* Set a couple of internal variables if appropriate. */ @@ -1449,6 +1524,7 @@ display_command (char *exp, int from_tty) new->exp_string = xstrdup (exp); new->exp = expr; new->block = innermost_block; + new->pspace = current_program_space; new->next = display_chain; new->number = ++display_number; new->format = fmt; @@ -1565,9 +1641,24 @@ do_one_display (struct display *d) if (d->enabled_p == 0) return; + /* The expression carries the architecture that was used at parse time. + This is a problem if the expression depends on architecture features + (e.g. register numbers), and the current architecture is now different. + For example, a display statement like "display/i $pc" is expected to + display the PC register of the current architecture, not the arch at + the time the display command was given. Therefore, we re-parse the + expression if the current architecture has changed. */ + if (d->exp != NULL && d->exp->gdbarch != get_current_arch ()) + { + xfree (d->exp); + d->exp = NULL; + d->block = NULL; + } + if (d->exp == NULL) { volatile struct gdb_exception ex; + TRY_CATCH (ex, RETURN_MASK_ALL) { innermost_block = NULL; @@ -1585,7 +1676,12 @@ do_one_display (struct display *d) } if (d->block) - within_current_scope = contained_in (get_selected_block (0), d->block); + { + if (d->pspace == current_program_space) + within_current_scope = contained_in (get_selected_block (0), d->block); + else + within_current_scope = 0; + } else within_current_scope = 1; if (!within_current_scope) @@ -1798,50 +1894,6 @@ disable_display_command (char *args, int from_tty) } } -/* Return 1 if D uses SOLIB (and will become dangling when SOLIB - is unloaded), otherwise return 0. */ - -static int -display_uses_solib_p (const struct display *d, - const struct so_list *solib) -{ - int endpos; - struct expression *const exp = d->exp; - const union exp_element *const elts = exp->elts; - - if (d->block != NULL - && solib_contains_address_p (solib, d->block->startaddr)) - return 1; - - for (endpos = exp->nelts; endpos > 0; ) - { - int i, args, oplen = 0; - - exp->language_defn->la_exp_desc->operator_length (exp, endpos, - &oplen, &args); - gdb_assert (oplen > 0); - - i = endpos - oplen; - if (elts[i].opcode == OP_VAR_VALUE) - { - const struct block *const block = elts[i + 1].block; - const struct symbol *const symbol = elts[i + 2].symbol; - const struct obj_section *const section = - SYMBOL_OBJ_SECTION (symbol); - - if (block != NULL - && solib_contains_address_p (solib, block->startaddr)) - return 1; - - if (section && section->objfile == solib->objfile) - return 1; - } - endpos -= oplen; - } - - return 0; -} - /* display_chain items point to blocks and expressions. Some expressions in turn may point to symbols. Both symbols and blocks are obstack_alloc'd on objfile_stack, and are @@ -1853,17 +1905,28 @@ display_uses_solib_p (const struct display *d, static void clear_dangling_display_expressions (struct so_list *solib) { + struct objfile *objfile = solib->objfile; struct display *d; - struct objfile *objfile = NULL; - for (d = display_chain; d; d = d->next) + /* With no symbol file we cannot have a block or expression from it. */ + if (objfile == NULL) + return; + if (objfile->separate_debug_objfile_backlink) + objfile = objfile->separate_debug_objfile_backlink; + gdb_assert (objfile->pspace == solib->pspace); + + for (d = display_chain; d != NULL; d = d->next) { - if (d->exp && display_uses_solib_p (d, solib)) - { - xfree (d->exp); - d->exp = NULL; - d->block = NULL; - } + if (d->pspace != solib->pspace) + continue; + + if (lookup_objfile_from_block (d->block) == objfile + || (d->exp && exp_uses_objfile (d->exp, objfile))) + { + xfree (d->exp); + d->exp = NULL; + d->block = NULL; + } } } @@ -1879,22 +1942,31 @@ print_variable_and_value (const char *name, struct symbol *var, struct frame_info *frame, struct ui_file *stream, int indent) { - struct value *val; - struct value_print_options opts; + volatile struct gdb_exception except; if (!name) name = SYMBOL_PRINT_NAME (var); fprintf_filtered (stream, "%s%s = ", n_spaces (2 * indent), name); + TRY_CATCH (except, RETURN_MASK_ERROR) + { + struct value *val; + struct value_print_options opts; - val = read_var_value (var, frame); - get_user_print_options (&opts); - common_val_print (val, stream, indent, &opts, current_language); + val = read_var_value (var, frame); + get_user_print_options (&opts); + common_val_print (val, stream, indent, &opts, current_language); + } + if (except.reason < 0) + fprintf_filtered(stream, "", name, + except.message); fprintf_filtered (stream, "\n"); } +/* printf "printf format string" ARG to STREAM. */ + static void -printf_command (char *arg, int from_tty) +ui_printf (char *arg, struct ui_file *stream) { char *f = NULL; char *s = arg; @@ -2196,6 +2268,7 @@ printf_command (char *arg, int from_tty) /* Windows' printf does support long long, but not the usual way. Convert %lld to %I64d. */ int length_before_ll = f - last_arg - 1 - lcount; + strncpy (current_substring, last_arg, length_before_ll); strcpy (current_substring + length_before_ll, "I64"); current_substring[length_before_ll + 3] = @@ -2207,6 +2280,7 @@ printf_command (char *arg, int from_tty) { /* Convert %ls or %lc to %s. */ int length_before_ls = f - last_arg - 2; + strncpy (current_substring, last_arg, length_before_ls); strcpy (current_substring + length_before_ls, "s"); current_substring += length_before_ls + 2; @@ -2227,6 +2301,7 @@ printf_command (char *arg, int from_tty) while (*s != '\0') { char *s1; + if (nargs == allocated_args) val_args = (struct value **) xrealloc ((char *) val_args, (allocated_args *= 2) @@ -2254,12 +2329,14 @@ printf_command (char *arg, int from_tty) gdb_byte *str; CORE_ADDR tem; int j; + tem = value_as_address (val_args[i]); /* This is a %s argument. Find the length of the string. */ for (j = 0;; j++) { gdb_byte c; + QUIT; read_memory (tem + j, &c, 1); if (c == 0) @@ -2272,7 +2349,7 @@ printf_command (char *arg, int from_tty) read_memory (tem, str, j); str[j] = 0; - printf_filtered (current_substring, (char *) str); + fprintf_filtered (stream, current_substring, (char *) str); } break; case wide_string_arg: @@ -2310,13 +2387,14 @@ printf_command (char *arg, int from_tty) obstack_init (&output); inner_cleanup = make_cleanup_obstack_free (&output); - convert_between_encodings (target_wide_charset (byte_order), + convert_between_encodings (target_wide_charset (gdbarch), host_charset (), str, j, wcwidth, &output, translit_char); obstack_grow_str0 (&output, ""); - printf_filtered (current_substring, obstack_base (&output)); + fprintf_filtered (stream, current_substring, + obstack_base (&output)); do_cleanups (inner_cleanup); } break; @@ -2324,7 +2402,6 @@ printf_command (char *arg, int from_tty) { struct gdbarch *gdbarch = get_type_arch (value_type (val_args[i])); - enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); struct type *wctype = lookup_typename (current_language, gdbarch, "wchar_t", NULL, 0); struct type *valtype; @@ -2342,14 +2419,15 @@ printf_command (char *arg, int from_tty) obstack_init (&output); inner_cleanup = make_cleanup_obstack_free (&output); - convert_between_encodings (target_wide_charset (byte_order), + convert_between_encodings (target_wide_charset (gdbarch), host_charset (), bytes, TYPE_LENGTH (valtype), TYPE_LENGTH (valtype), &output, translit_char); obstack_grow_str0 (&output, ""); - printf_filtered (current_substring, obstack_base (&output)); + fprintf_filtered (stream, current_substring, + obstack_base (&output)); do_cleanups (inner_cleanup); } break; @@ -2366,7 +2444,7 @@ printf_command (char *arg, int from_tty) if (inv) error (_("Invalid floating value found in program.")); - printf_filtered (current_substring, (double) val); + fprintf_filtered (stream, current_substring, (double) val); break; } case long_double_arg: @@ -2383,7 +2461,8 @@ printf_command (char *arg, int from_tty) if (inv) error (_("Invalid floating value found in program.")); - printf_filtered (current_substring, (long double) val); + fprintf_filtered (stream, current_substring, + (long double) val); break; } #else @@ -2393,7 +2472,8 @@ printf_command (char *arg, int from_tty) #if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG) { long long val = value_as_long (val_args[i]); - printf_filtered (current_substring, val); + + fprintf_filtered (stream, current_substring, val); break; } #else @@ -2402,13 +2482,15 @@ printf_command (char *arg, int from_tty) case int_arg: { int val = value_as_long (val_args[i]); - printf_filtered (current_substring, val); + + fprintf_filtered (stream, current_substring, val); break; } case long_arg: { long val = value_as_long (val_args[i]); - printf_filtered (current_substring, val); + + fprintf_filtered (stream, current_substring, val); break; } @@ -2416,10 +2498,11 @@ printf_command (char *arg, int from_tty) case decfloat_arg: { const gdb_byte *param_ptr = value_contents (val_args[i]); + #if defined (PRINTF_HAS_DECFLOAT) /* If we have native support for Decimal floating printing, handle it here. */ - printf_filtered (current_substring, param_ptr); + fprintf_filtered (stream, current_substring, param_ptr); #else /* As a workaround until vasprintf has native support for DFP @@ -2508,7 +2591,7 @@ printf_command (char *arg, int from_tty) decimal_to_string (dfp_ptr, dfp_len, byte_order, decstr); /* Print the DFP value. */ - printf_filtered (current_substring, decstr); + fprintf_filtered (stream, current_substring, decstr); break; #endif @@ -2536,6 +2619,7 @@ printf_command (char *arg, int from_tty) while (*p) { int is_percent = (*p == '%'); + *fmt_p++ = *p++; if (is_percent) { @@ -2562,13 +2646,13 @@ printf_command (char *arg, int from_tty) *fmt_p++ = 'l'; *fmt_p++ = 'x'; *fmt_p++ = '\0'; - printf_filtered (fmt, val); + fprintf_filtered (stream, fmt, val); } else { *fmt_p++ = 's'; *fmt_p++ = '\0'; - printf_filtered (fmt, "(nil)"); + fprintf_filtered (stream, fmt, "(nil)"); } break; @@ -2580,12 +2664,44 @@ printf_command (char *arg, int from_tty) /* Skip to the next substring. */ current_substring += strlen (current_substring) + 1; } - /* Print the portion of the format string after the last argument. */ - puts_filtered (last_arg); + /* Print the portion of the format string after the last argument. + Note that this will not include any ordinary %-specs, but it + might include "%%". That is why we use printf_filtered and not + puts_filtered here. Also, we pass a dummy argument because + some platforms have modified GCC to include -Wformat-security + by default, which will warn here if there is no argument. */ + fprintf_filtered (stream, last_arg, 0); } do_cleanups (old_cleanups); } +/* Implement the "printf" command. */ + +static void +printf_command (char *arg, int from_tty) +{ + ui_printf (arg, gdb_stdout); +} + +/* Implement the "eval" command. */ + +static void +eval_command (char *arg, int from_tty) +{ + struct ui_file *ui_out = mem_fileopen (); + struct cleanup *cleanups = make_cleanup_ui_file_delete (ui_out); + char *expanded; + + ui_printf (arg, ui_out); + + expanded = ui_file_xstrdup (ui_out, NULL); + make_cleanup (xfree, expanded); + + execute_command (expanded, from_tty); + + do_cleanups (cleanups); +} + void _initialize_printcmd (void) { @@ -2749,4 +2865,8 @@ Show printing of source filename and line number with ."), NULL, NULL, show_print_symbol_filename, &setprintlist, &showprintlist); + + add_com ("eval", no_class, eval_command, _("\ +Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\ +a command line, and call it.")); } diff --git a/contrib/gdb-7/gdb/cli-out.h b/contrib/gdb-7/gdb/proc-service.list similarity index 62% copy from contrib/gdb-7/gdb/cli-out.h copy to contrib/gdb-7/gdb/proc-service.list index c03a92b273..9b3eb43327 100644 --- a/contrib/gdb-7/gdb/cli-out.h +++ b/contrib/gdb-7/gdb/proc-service.list @@ -1,6 +1,6 @@ -/* Output generating routines for GDB CLI. - Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. - Contributed by Cygnus Solutions. +/* -Wl,--dynamic-list symbols exported for libthread_db. + + Copyright (C) 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -17,14 +17,24 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef CLI_OUT_H -#define CLI_OUT_H - -struct ui_file; - -extern struct ui_out *cli_out_new (struct ui_file *stream); - -extern struct ui_file *cli_out_set_stream (struct ui_out *uiout, - struct ui_file *stream); - -#endif +{ + ps_get_thread_area; + ps_getpid; + ps_lcontinue; + ps_lgetfpregs; + ps_lgetregs; + ps_lgetxregs; + ps_lgetxregsize; + ps_lsetfpregs; + ps_lsetregs; + ps_lsetxregs; + ps_lstop; + ps_pcontinue; + ps_pdread; + ps_pdwrite; + ps_pglobal_lookup; + ps_plog; + ps_pstop; + ps_ptread; + ps_ptwrite; +}; diff --git a/contrib/gdb-7/gdb/progspace.c b/contrib/gdb-7/gdb/progspace.c new file mode 100644 index 0000000000..b1abcf929e --- /dev/null +++ b/contrib/gdb-7/gdb/progspace.c @@ -0,0 +1,623 @@ +/* Program and address space management, for GDB, the GNU debugger. + + Copyright (C) 2009, 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#include "defs.h" +#include "gdbcmd.h" +#include "objfiles.h" +#include "arch-utils.h" +#include "gdbcore.h" +#include "solib.h" +#include "gdbthread.h" + +/* The last program space number assigned. */ +int last_program_space_num = 0; + +/* The head of the program spaces list. */ +struct program_space *program_spaces; + +/* Pointer to the current program space. */ +struct program_space *current_program_space; + +/* The last address space number assigned. */ +static int highest_address_space_num; + +/* Prototypes for local functions */ + +static void program_space_alloc_data (struct program_space *); +static void program_space_free_data (struct program_space *); + + +/* An address space. Currently this is not used for much other than + for comparing if pspaces/inferior/threads see the same address + space. */ + +struct address_space +{ + int num; +}; + +/* Create a new address space object, and add it to the list. */ + +struct address_space * +new_address_space (void) +{ + struct address_space *aspace; + + aspace = XZALLOC (struct address_space); + aspace->num = ++highest_address_space_num; + + return aspace; +} + +/* Maybe create a new address space object, and add it to the list, or + return a pointer to an existing address space, in case inferiors + share an address space on this target system. */ + +struct address_space * +maybe_new_address_space (void) +{ + int shared_aspace = gdbarch_has_shared_address_space (target_gdbarch); + + if (shared_aspace) + { + /* Just return the first in the list. */ + return program_spaces->aspace; + } + + return new_address_space (); +} + +static void +free_address_space (struct address_space *aspace) +{ + xfree (aspace); +} + +int +address_space_num (struct address_space *aspace) +{ + return aspace->num; +} + +/* Start counting over from scratch. */ + +static void +init_address_spaces (void) +{ + highest_address_space_num = 0; +} + + + +/* Adds a new empty program space to the program space list, and binds + it to ASPACE. Returns the pointer to the new object. */ + +struct program_space * +add_program_space (struct address_space *aspace) +{ + struct program_space *pspace; + + pspace = XZALLOC (struct program_space); + + pspace->num = ++last_program_space_num; + pspace->aspace = aspace; + + program_space_alloc_data (pspace); + + pspace->next = program_spaces; + program_spaces = pspace; + + return pspace; +} + +/* Releases program space PSPACE, and all its contents (shared + libraries, objfiles, and any other references to the PSPACE in + other modules). It is an internal error to call this when PSPACE + is the current program space, since there should always be a + program space. */ + +static void +release_program_space (struct program_space *pspace) +{ + struct cleanup *old_chain = save_current_program_space (); + + gdb_assert (pspace != current_program_space); + + set_current_program_space (pspace); + + breakpoint_program_space_exit (pspace); + no_shared_libraries (NULL, 0); + exec_close (); + free_all_objfiles (); + if (!gdbarch_has_shared_address_space (target_gdbarch)) + free_address_space (pspace->aspace); + resize_section_table (&pspace->target_sections, + -resize_section_table (&pspace->target_sections, 0)); + /* Discard any data modules have associated with the PSPACE. */ + program_space_free_data (pspace); + xfree (pspace); + + do_cleanups (old_chain); +} + +/* Unlinks PSPACE from the pspace list, and releases it. */ + +void +remove_program_space (struct program_space *pspace) +{ + struct program_space *ss, **ss_link; + + ss = program_spaces; + ss_link = &program_spaces; + while (ss) + { + if (ss != pspace) + { + ss_link = &ss->next; + ss = *ss_link; + continue; + } + + *ss_link = ss->next; + release_program_space (ss); + ss = *ss_link; + } +} + +/* Copies program space SRC to DEST. Copies the main executable file, + and the main symbol file. Returns DEST. */ + +struct program_space * +clone_program_space (struct program_space *dest, struct program_space *src) +{ + struct cleanup *old_chain; + + old_chain = save_current_program_space (); + + set_current_program_space (dest); + + if (src->ebfd != NULL) + exec_file_attach (bfd_get_filename (src->ebfd), 0); + + if (src->symfile_object_file != NULL) + symbol_file_add_main (src->symfile_object_file->name, 0); + + do_cleanups (old_chain); + return dest; +} + +/* Sets PSPACE as the current program space. It is the caller's + responsibility to make sure that the currently selected + inferior/thread matches the selected program space. */ + +void +set_current_program_space (struct program_space *pspace) +{ + if (current_program_space == pspace) + return; + + gdb_assert (pspace != NULL); + + current_program_space = pspace; + + /* Different symbols change our view of the frame chain. */ + reinit_frame_cache (); +} + +/* A cleanups callback, helper for save_current_program_space + below. */ + +static void +restore_program_space (void *arg) +{ + struct program_space *saved_pspace = arg; + + set_current_program_space (saved_pspace); +} + +/* Save the current program space so that it may be restored by a later + call to do_cleanups. Returns the struct cleanup pointer needed for + later doing the cleanup. */ + +struct cleanup * +save_current_program_space (void) +{ + struct cleanup *old_chain = make_cleanup (restore_program_space, + current_program_space); + + return old_chain; +} + +/* Returns true iff there's no inferior bound to PSPACE. */ + +static int +pspace_empty_p (struct program_space *pspace) +{ + if (find_inferior_for_program_space (pspace) != NULL) + return 0; + + return 1; +} + +/* Prune away automatically added program spaces that aren't required + anymore. */ + +void +prune_program_spaces (void) +{ + struct program_space *ss, **ss_link; + struct program_space *current = current_program_space; + + ss = program_spaces; + ss_link = &program_spaces; + while (ss) + { + if (ss == current || !pspace_empty_p (ss)) + { + ss_link = &ss->next; + ss = *ss_link; + continue; + } + + *ss_link = ss->next; + release_program_space (ss); + ss = *ss_link; + } +} + +/* Prints the list of program spaces and their details on UIOUT. If + REQUESTED is not -1, it's the ID of the pspace that should be + printed. Otherwise, all spaces are printed. */ + +static void +print_program_space (struct ui_out *uiout, int requested) +{ + struct program_space *pspace; + int count = 0; + struct cleanup *old_chain; + + /* Might as well prune away unneeded ones, so the user doesn't even + seem them. */ + prune_program_spaces (); + + /* Compute number of pspaces we will print. */ + ALL_PSPACES (pspace) + { + if (requested != -1 && pspace->num != requested) + continue; + + ++count; + } + + /* There should always be at least one. */ + gdb_assert (count > 0); + + old_chain = make_cleanup_ui_out_table_begin_end (uiout, 3, count, "pspaces"); + ui_out_table_header (uiout, 1, ui_left, "current", ""); + ui_out_table_header (uiout, 4, ui_left, "id", "Id"); + ui_out_table_header (uiout, 17, ui_left, "exec", "Executable"); + ui_out_table_body (uiout); + + ALL_PSPACES (pspace) + { + struct cleanup *chain2; + struct inferior *inf; + int printed_header; + + if (requested != -1 && requested != pspace->num) + continue; + + chain2 = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); + + if (pspace == current_program_space) + ui_out_field_string (uiout, "current", "*"); + else + ui_out_field_skip (uiout, "current"); + + ui_out_field_int (uiout, "id", pspace->num); + + if (pspace->ebfd) + ui_out_field_string (uiout, "exec", + bfd_get_filename (pspace->ebfd)); + else + ui_out_field_skip (uiout, "exec"); + + /* Print extra info that doesn't really fit in tabular form. + Currently, we print the list of inferiors bound to a pspace. + There can be more than one inferior bound to the same pspace, + e.g., both parent/child inferiors in a vfork, or, on targets + that share pspaces between inferiors. */ + printed_header = 0; + for (inf = inferior_list; inf; inf = inf->next) + if (inf->pspace == pspace) + { + if (!printed_header) + { + printed_header = 1; + printf_filtered ("\n\tBound inferiors: ID %d (%s)", + inf->num, + target_pid_to_str (pid_to_ptid (inf->pid))); + } + else + printf_filtered (", ID %d (%s)", + inf->num, + target_pid_to_str (pid_to_ptid (inf->pid))); + } + + ui_out_text (uiout, "\n"); + do_cleanups (chain2); + } + + do_cleanups (old_chain); +} + +/* Boolean test for an already-known program space id. */ + +static int +valid_program_space_id (int num) +{ + struct program_space *pspace; + + ALL_PSPACES (pspace) + if (pspace->num == num) + return 1; + + return 0; +} + +/* If ARGS is NULL or empty, print information about all program + spaces. Otherwise, ARGS is a text representation of a LONG + indicating which the program space to print information about. */ + +static void +maintenance_info_program_spaces_command (char *args, int from_tty) +{ + int requested = -1; + + if (args && *args) + { + requested = parse_and_eval_long (args); + if (!valid_program_space_id (requested)) + error (_("program space ID %d not known."), requested); + } + + print_program_space (uiout, requested); +} + +/* Simply returns the count of program spaces. */ + +int +number_of_program_spaces (void) +{ + struct program_space *pspace; + int count = 0; + + ALL_PSPACES (pspace) + count++; + + return count; +} + +/* Update all program spaces matching to address spaces. The user may + have created several program spaces, and loaded executables into + them before connecting to the target interface that will create the + inferiors. All that happens before GDB has a chance to know if the + inferiors will share an address space or not. Call this after + having connected to the target interface and having fetched the + target description, to fixup the program/address spaces mappings. + + It is assumed that there are no bound inferiors yet, otherwise, + they'd be left with stale referenced to released aspaces. */ + +void +update_address_spaces (void) +{ + int shared_aspace = gdbarch_has_shared_address_space (target_gdbarch); + struct program_space *pspace; + struct inferior *inf; + + init_address_spaces (); + + if (shared_aspace) + { + struct address_space *aspace = new_address_space (); + + free_address_space (current_program_space->aspace); + ALL_PSPACES (pspace) + pspace->aspace = aspace; + } + else + ALL_PSPACES (pspace) + { + free_address_space (pspace->aspace); + pspace->aspace = new_address_space (); + } + + for (inf = inferior_list; inf; inf = inf->next) + if (gdbarch_has_global_solist (target_gdbarch)) + inf->aspace = maybe_new_address_space (); + else + inf->aspace = inf->pspace->aspace; +} + +/* Save the current program space so that it may be restored by a later + call to do_cleanups. Returns the struct cleanup pointer needed for + later doing the cleanup. */ + +struct cleanup * +save_current_space_and_thread (void) +{ + struct cleanup *old_chain; + + /* If restoring to null thread, we need to restore the pspace as + well, hence, we need to save the current program space first. */ + old_chain = save_current_program_space (); + save_current_inferior (); + make_cleanup_restore_current_thread (); + + return old_chain; +} + +/* Switches full context to program space PSPACE. Switches to the + first thread found bound to PSPACE. */ + +void +switch_to_program_space_and_thread (struct program_space *pspace) +{ + struct inferior *inf; + + inf = find_inferior_for_program_space (pspace); + if (inf != NULL) + { + struct thread_info *tp; + + tp = any_live_thread_of_process (inf->pid); + if (tp != NULL) + { + switch_to_thread (tp->ptid); + /* Switching thread switches pspace implicitly. We're + done. */ + return; + } + } + + switch_to_thread (null_ptid); + set_current_program_space (pspace); +} + + + +/* Keep a registry of per-program_space data-pointers required by other GDB + modules. */ + +struct program_space_data +{ + unsigned index; + void (*cleanup) (struct program_space *, void *); +}; + +struct program_space_data_registration +{ + struct program_space_data *data; + struct program_space_data_registration *next; +}; + +struct program_space_data_registry +{ + struct program_space_data_registration *registrations; + unsigned num_registrations; +}; + +static struct program_space_data_registry program_space_data_registry + = { NULL, 0 }; + +const struct program_space_data * +register_program_space_data_with_cleanup + (void (*cleanup) (struct program_space *, void *)) +{ + struct program_space_data_registration **curr; + + /* Append new registration. */ + for (curr = &program_space_data_registry.registrations; + *curr != NULL; curr = &(*curr)->next); + + *curr = XMALLOC (struct program_space_data_registration); + (*curr)->next = NULL; + (*curr)->data = XMALLOC (struct program_space_data); + (*curr)->data->index = program_space_data_registry.num_registrations++; + (*curr)->data->cleanup = cleanup; + + return (*curr)->data; +} + +const struct program_space_data * +register_program_space_data (void) +{ + return register_program_space_data_with_cleanup (NULL); +} + +static void +program_space_alloc_data (struct program_space *pspace) +{ + gdb_assert (pspace->data == NULL); + pspace->num_data = program_space_data_registry.num_registrations; + pspace->data = XCALLOC (pspace->num_data, void *); +} + +static void +program_space_free_data (struct program_space *pspace) +{ + gdb_assert (pspace->data != NULL); + clear_program_space_data (pspace); + xfree (pspace->data); + pspace->data = NULL; +} + +void +clear_program_space_data (struct program_space *pspace) +{ + struct program_space_data_registration *registration; + int i; + + gdb_assert (pspace->data != NULL); + + for (registration = program_space_data_registry.registrations, i = 0; + i < pspace->num_data; + registration = registration->next, i++) + if (pspace->data[i] != NULL && registration->data->cleanup) + registration->data->cleanup (pspace, pspace->data[i]); + + memset (pspace->data, 0, pspace->num_data * sizeof (void *)); +} + +void +set_program_space_data (struct program_space *pspace, + const struct program_space_data *data, + void *value) +{ + gdb_assert (data->index < pspace->num_data); + pspace->data[data->index] = value; +} + +void * +program_space_data (struct program_space *pspace, const struct program_space_data *data) +{ + gdb_assert (data->index < pspace->num_data); + return pspace->data[data->index]; +} + + + +void +initialize_progspace (void) +{ + add_cmd ("program-spaces", class_maintenance, + maintenance_info_program_spaces_command, _("\ +Info about currently known program spaces."), + &maintenanceinfolist); + + /* There's always one program space. Note that this function isn't + an automatic _initialize_foo function, since other + _initialize_foo routines may need to install their per-pspace + data keys. We can only allocate a progspace when all those + modules have done that. Do this before + initialize_current_architecture, because that accesses exec_bfd, + which in turn dereferences current_program_space. */ + current_program_space = add_program_space (new_address_space ()); +} diff --git a/contrib/gdb-7/gdb/progspace.h b/contrib/gdb-7/gdb/progspace.h new file mode 100644 index 0000000000..8a6466a57e --- /dev/null +++ b/contrib/gdb-7/gdb/progspace.h @@ -0,0 +1,290 @@ +/* Program and address space management, for GDB, the GNU debugger. + + Copyright (C) 2009, 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + + +#ifndef PROGSPACE_H +#define PROGSPACE_H + +#include "target.h" +#include "vec.h" + +struct target_ops; +struct bfd; +struct objfile; +struct inferior; +struct exec; +struct address_space; +struct program_space_data; + +/* A program space represents a symbolic view of an address space. + Roughly speaking, it holds all the data associated with a + non-running-yet program (main executable, main symbols), and when + an inferior is running and is bound to it, includes the list of its + mapped in shared libraries. + + In the traditional debugging scenario, there's a 1-1 correspondence + among program spaces, inferiors and address spaces, like so: + + pspace1 (prog1) <--> inf1(pid1) <--> aspace1 + + In the case of debugging more than one traditional unix process or + program, we still have: + + |-----------------+------------+---------| + | pspace1 (prog1) | inf1(pid1) | aspace1 | + |----------------------------------------| + | pspace2 (prog1) | no inf yet | aspace2 | + |-----------------+------------+---------| + | pspace3 (prog2) | inf2(pid2) | aspace3 | + |-----------------+------------+---------| + + In the former example, if inf1 forks (and GDB stays attached to + both processes), the new child will have its own program and + address spaces. Like so: + + |-----------------+------------+---------| + | pspace1 (prog1) | inf1(pid1) | aspace1 | + |-----------------+------------+---------| + | pspace2 (prog1) | inf2(pid2) | aspace2 | + |-----------------+------------+---------| + + However, had inf1 from the latter case vforked instead, it would + share the program and address spaces with its parent, until it + execs or exits, like so: + + |-----------------+------------+---------| + | pspace1 (prog1) | inf1(pid1) | aspace1 | + | | inf2(pid2) | | + |-----------------+------------+---------| + + When the vfork child execs, it is finally given new program and + address spaces. + + |-----------------+------------+---------| + | pspace1 (prog1) | inf1(pid1) | aspace1 | + |-----------------+------------+---------| + | pspace2 (prog1) | inf2(pid2) | aspace2 | + |-----------------+------------+---------| + + There are targets where the OS (if any) doesn't provide memory + management or VM protection, where all inferiors share the same + address space --- e.g. uClinux. GDB models this by having all + inferiors share the same address space, but, giving each its own + program space, like so: + + |-----------------+------------+---------| + | pspace1 (prog1) | inf1(pid1) | | + |-----------------+------------+ | + | pspace2 (prog1) | inf2(pid2) | aspace1 | + |-----------------+------------+ | + | pspace3 (prog2) | inf3(pid3) | | + |-----------------+------------+---------| + + The address space sharing matters for run control and breakpoints + management. E.g., did we just hit a known breakpoint that we need + to step over? Is this breakpoint a duplicate of this other one, or + do I need to insert a trap? + + Then, there are targets where all symbols look the same for all + inferiors, although each has its own address space, as e.g., + Ericsson DICOS. In such case, the model is: + + |---------+------------+---------| + | | inf1(pid1) | aspace1 | + | +------------+---------| + | pspace | inf2(pid2) | aspace2 | + | +------------+---------| + | | inf3(pid3) | aspace3 | + |---------+------------+---------| + + Note however, that the DICOS debug API takes care of making GDB + believe that breakpoints are "global". That is, although each + process does have its own private copy of data symbols (just like a + bunch of forks), to the breakpoints module, all processes share a + single address space, so all breakpoints set at the same address + are duplicates of each other, even breakpoints set in the data + space (e.g., call dummy breakpoints placed on stack). This allows + a simplification in the spaces implementation: we avoid caring for + a many-many links between address and program spaces. Either + there's a single address space bound to the program space + (traditional unix/uClinux), or, in the DICOS case, the address + space bound to the program space is mostly ignored. */ + +/* The program space structure. */ + +struct program_space + { + /* Pointer to next in linked list. */ + struct program_space *next; + + /* Unique ID number. */ + int num; + + /* The main executable loaded into this program space. This is + managed by the exec target. */ + + /* The BFD handle for the main executable. */ + bfd *ebfd; + /* The last-modified time, from when the exec was brought in. */ + long ebfd_mtime; + + /* The address space attached to this program space. More than one + program space may be bound to the same address space. In the + traditional unix-like debugging scenario, this will usually + match the address space bound to the inferior, and is mostly + used by the breakpoints module for address matches. If the + target shares a program space for all inferiors and breakpoints + are global, then this field is ignored (we don't currently + support inferiors sharing a program space if the target doesn't + make breakpoints global). */ + struct address_space *aspace; + + /* True if this program space's section offsets don't yet represent + the final offsets of the "live" address space (that is, the + section addresses still require the relocation offsets to be + applied, and hence we can't trust the section addresses for + anything that pokes at live memory). E.g., for qOffsets + targets, or for PIE executables, until we connect and ask the + target for the final relocation offsets, the symbols we've used + to set breakpoints point at the wrong addresses. */ + int executing_startup; + + /* True if no breakpoints should be inserted in this program + space. */ + int breakpoints_not_allowed; + + /* The object file that the main symbol table was loaded from + (e.g. the argument to the "symbol-file" or "file" command). */ + struct objfile *symfile_object_file; + + /* All known objfiles are kept in a linked list. This points to + the head of this list. */ + struct objfile *objfiles; + + /* The set of target sections matching the sections mapped into + this program space. Managed by both exec_ops and solib.c. */ + struct target_section_table target_sections; + + /* List of shared objects mapped into this space. Managed by + solib.c. */ + struct so_list *so_list; + + /* Per pspace data-pointers required by other GDB modules. */ + void **data; + unsigned num_data; + }; + +/* The object file that the main symbol table was loaded from (e.g. the + argument to the "symbol-file" or "file" command). */ + +#define symfile_objfile current_program_space->symfile_object_file + +/* All known objfiles are kept in a linked list. This points to the + root of this list. */ +#define object_files current_program_space->objfiles + +/* The set of target sections matching the sections mapped into the + current program space. */ +#define current_target_sections (¤t_program_space->target_sections) + +/* The list of all program spaces. There's always at least one. */ +extern struct program_space *program_spaces; + +/* The current program space. This is always non-null. */ +extern struct program_space *current_program_space; + +#define ALL_PSPACES(pspace) \ + for ((pspace) = program_spaces; (pspace) != NULL; (pspace) = (pspace)->next) + +/* Add a new empty program space, and assign ASPACE to it. Returns the + pointer to the new object. */ +extern struct program_space *add_program_space (struct address_space *aspace); + +/* Release PSPACE and removes it from the pspace list. */ +extern void remove_program_space (struct program_space *pspace); + +/* Returns the number of program spaces listed. */ +extern int number_of_program_spaces (void); + +/* Copies program space SRC to DEST. Copies the main executable file, + and the main symbol file. Returns DEST. */ +extern struct program_space *clone_program_space (struct program_space *dest, + struct program_space *src); + +/* Save the current program space so that it may be restored by a later + call to do_cleanups. Returns the struct cleanup pointer needed for + later doing the cleanup. */ +extern struct cleanup *save_current_program_space (void); + +/* Sets PSPACE as the current program space. This is usually used + instead of set_current_space_and_thread when the current + thread/inferior is not important for the operations that follow. + E.g., when accessing the raw symbol tables. If memory access is + required, then you should use switch_to_program_space_and_thread. + Otherwise, it is the caller's responsibility to make sure that the + currently selected inferior/thread matches the selected program + space. */ +extern void set_current_program_space (struct program_space *pspace); + +/* Saves the current thread (may be null), frame and program space in + the current cleanup chain. */ +extern struct cleanup *save_current_space_and_thread (void); + +/* Switches full context to program space PSPACE. Switches to the + first thread found bound to PSPACE. */ +extern void switch_to_program_space_and_thread (struct program_space *pspace); + +/* Create a new address space object, and add it to the list. */ +extern struct address_space *new_address_space (void); + +/* Maybe create a new address space object, and add it to the list, or + return a pointer to an existing address space, in case inferiors + share an address space. */ +extern struct address_space *maybe_new_address_space (void); + +/* Returns the integer address space id of ASPACE. */ +extern int address_space_num (struct address_space *aspace); + +/* Update all program spaces matching to address spaces. The user may + have created several program spaces, and loaded executables into + them before connecting to the target interface that will create the + inferiors. All that happens before GDB has a chance to know if the + inferiors will share an address space or not. Call this after + having connected to the target interface and having fetched the + target description, to fixup the program/address spaces + mappings. */ +extern void update_address_spaces (void); + +/* Prune away automatically added program spaces that aren't required + anymore. */ +extern void prune_program_spaces (void); + +/* Keep a registry of per-pspace data-pointers required by other GDB + modules. */ + +extern const struct program_space_data *register_program_space_data (void); +extern const struct program_space_data *register_program_space_data_with_cleanup + (void (*cleanup) (struct program_space *, void *)); +extern void clear_program_space_data (struct program_space *pspace); +extern void set_program_space_data (struct program_space *pspace, + const struct program_space_data *data, void *value); +extern void *program_space_data (struct program_space *pspace, + const struct program_space_data *data); + +#endif diff --git a/contrib/gdb-7/gdb/prologue-value.c b/contrib/gdb-7/gdb/prologue-value.c index e4282e648d..4ff5a0c7f6 100644 --- a/contrib/gdb-7/gdb/prologue-value.c +++ b/contrib/gdb-7/gdb/prologue-value.c @@ -1,5 +1,6 @@ /* Prologue value handling for GDB. - Copyright 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2003, 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -345,6 +346,7 @@ clear_entries (struct pv_area *area) do { struct area_entry *next = e->next; + xfree (e); e = next; } @@ -467,6 +469,7 @@ pv_area_store (struct pv_area *area, while (e && overlaps (area, e, offset, size)) { struct area_entry *next = (e->next == e) ? 0 : e->next; + e->prev->next = e->next; e->next->prev = e->prev; @@ -491,6 +494,7 @@ pv_area_store (struct pv_area *area, { CORE_ADDR offset = addr.k; struct area_entry *e = (struct area_entry *) xmalloc (sizeof (*e)); + e->offset = offset; e->size = size; e->value = value; diff --git a/contrib/gdb-7/gdb/prologue-value.h b/contrib/gdb-7/gdb/prologue-value.h index efbdfcf1ce..a1706b283c 100644 --- a/contrib/gdb-7/gdb/prologue-value.h +++ b/contrib/gdb-7/gdb/prologue-value.h @@ -1,5 +1,6 @@ /* Interface to prologue value handling for GDB. - Copyright 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2003, 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/psympriv.h b/contrib/gdb-7/gdb/psympriv.h new file mode 100644 index 0000000000..52f6e03c69 --- /dev/null +++ b/contrib/gdb-7/gdb/psympriv.h @@ -0,0 +1,165 @@ +/* Private partial symbol table definitions. + + Copyright (C) 2009 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#ifndef PSYMPRIV_H +#define PSYMPRIV_H + +#include "psymtab.h" + +/* A partial_symbol records the name, domain, and address class of + symbols whose types we have not parsed yet. For functions, it also + contains their memory address, so we can find them from a PC value. + Each partial_symbol sits in a partial_symtab, all of which are chained + on a partial symtab list and which points to the corresponding + normal symtab once the partial_symtab has been referenced. */ + +/* This structure is space critical. See space comments at the top of + symtab.h. */ + +struct partial_symbol +{ + + /* The general symbol info required for all types of symbols. */ + + struct general_symbol_info ginfo; + + /* Name space code. */ + + ENUM_BITFIELD(domain_enum_tag) domain : 6; + + /* Address class (for info_symbols) */ + + ENUM_BITFIELD(address_class) aclass : 6; + +}; + +#define PSYMBOL_DOMAIN(psymbol) (psymbol)->domain +#define PSYMBOL_CLASS(psymbol) (psymbol)->aclass + +/* Each source file that has not been fully read in is represented by + a partial_symtab. This contains the information on where in the + executable the debugging symbols for a specific file are, and a + list of names of global symbols which are located in this file. + They are all chained on partial symtab lists. + + Even after the source file has been read into a symtab, the + partial_symtab remains around. They are allocated on an obstack, + objfile_obstack. */ + +struct partial_symtab +{ + + /* Chain of all existing partial symtabs. */ + + struct partial_symtab *next; + + /* Name of the source file which this partial_symtab defines */ + + char *filename; + + /* Full path of the source file. NULL if not known. */ + + char *fullname; + + /* Directory in which it was compiled, or NULL if we don't know. */ + + char *dirname; + + /* Information about the object file from which symbols should be read. */ + + struct objfile *objfile; + + /* Set of relocation offsets to apply to each section. */ + + struct section_offsets *section_offsets; + + /* Range of text addresses covered by this file; texthigh is the + beginning of the next section. */ + + CORE_ADDR textlow; + CORE_ADDR texthigh; + + /* Array of pointers to all of the partial_symtab's which this one + depends on. Since this array can only be set to previous or + the current (?) psymtab, this dependency tree is guaranteed not + to have any loops. "depends on" means that symbols must be read + for the dependencies before being read for this psymtab; this is + for type references in stabs, where if foo.c includes foo.h, declarations + in foo.h may use type numbers defined in foo.c. For other debugging + formats there may be no need to use dependencies. */ + + struct partial_symtab **dependencies; + + int number_of_dependencies; + + /* Global symbol list. This list will be sorted after readin to + improve access. Binary search will be the usual method of + finding a symbol within it. globals_offset is an integer offset + within global_psymbols[]. */ + + int globals_offset; + int n_global_syms; + + /* Static symbol list. This list will *not* be sorted after readin; + to find a symbol in it, exhaustive search must be used. This is + reasonable because searches through this list will eventually + lead to either the read in of a files symbols for real (assumed + to take a *lot* of time; check) or an error (and we don't care + how long errors take). This is an offset and size within + static_psymbols[]. */ + + int statics_offset; + int n_static_syms; + + /* Pointer to symtab eventually allocated for this source file, 0 if + !readin or if we haven't looked for the symtab after it was readin. */ + + struct symtab *symtab; + + /* Pointer to function which will read in the symtab corresponding to + this psymtab. */ + + void (*read_symtab) (struct partial_symtab *); + + /* Information that lets read_symtab() locate the part of the symbol table + that this psymtab corresponds to. This information is private to the + format-dependent symbol reading routines. For further detail examine + the various symbol reading modules. */ + + void *read_symtab_private; + + /* Non-zero if the symtab corresponding to this psymtab has been readin */ + + unsigned char readin; +}; + +extern void sort_pst_symbols (struct partial_symtab *); + +/* Traverse all psymtabs in one objfile. */ + +#define ALL_OBJFILE_PSYMTABS(objfile, p) \ + for ((p) = (objfile) -> psymtabs; (p) != NULL; (p) = (p) -> next) + +/* Traverse all psymtabs in all objfiles. */ + +#define ALL_PSYMTABS(objfile, p) \ + ALL_OBJFILES (objfile) \ + ALL_OBJFILE_PSYMTABS (objfile, p) + +#endif /* PSYMPRIV_H */ diff --git a/contrib/gdb-7/gdb/psymtab.c b/contrib/gdb-7/gdb/psymtab.c new file mode 100644 index 0000000000..97a4eecd41 --- /dev/null +++ b/contrib/gdb-7/gdb/psymtab.c @@ -0,0 +1,1750 @@ +/* Partial symbol tables. + + Copyright (C) 2009, 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#include "defs.h" +#include "symtab.h" +#include "psympriv.h" +#include "objfiles.h" +#include "gdb_assert.h" +#include "block.h" +#include "filenames.h" +#include "source.h" +#include "addrmap.h" +#include "gdbtypes.h" +#include "bcache.h" +#include "ui-out.h" +#include "command.h" +#include "readline/readline.h" +#include "gdb_regex.h" + +#ifndef DEV_TTY +#define DEV_TTY "/dev/tty" +#endif + +/* A fast way to get from a psymtab to its symtab (after the first time). */ +#define PSYMTAB_TO_SYMTAB(pst) \ + ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst)) + +/* Lookup a partial symbol. */ +static struct partial_symbol *lookup_partial_symbol (struct partial_symtab *, + const char *, int, + domain_enum); + +static char *psymtab_to_fullname (struct partial_symtab *ps); + +static struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *, + CORE_ADDR, + struct obj_section *); + +static struct partial_symbol *fixup_psymbol_section (struct partial_symbol + *psym, + struct objfile *objfile); + +static struct symtab *psymtab_to_symtab (struct partial_symtab *pst); + +/* Lookup the partial symbol table of a source file named NAME. + *If* there is no '/' in the name, a match after a '/' + in the psymtab filename will also work. */ + +static struct partial_symtab * +lookup_partial_symtab (struct objfile *objfile, const char *name, + const char *full_path, const char *real_path) +{ + struct partial_symtab *pst; + + ALL_OBJFILE_PSYMTABS (objfile, pst) + { + if (FILENAME_CMP (name, pst->filename) == 0) + { + return (pst); + } + + /* If the user gave us an absolute path, try to find the file in + this symtab and use its absolute path. */ + if (full_path != NULL) + { + psymtab_to_fullname (pst); + if (pst->fullname != NULL + && FILENAME_CMP (full_path, pst->fullname) == 0) + { + return pst; + } + } + + if (real_path != NULL) + { + char *rp = NULL; + psymtab_to_fullname (pst); + if (pst->fullname != NULL) + { + rp = gdb_realpath (pst->fullname); + make_cleanup (xfree, rp); + } + if (rp != NULL && FILENAME_CMP (real_path, rp) == 0) + { + return pst; + } + } + } + + /* Now, search for a matching tail (only if name doesn't have any dirs) */ + + if (lbasename (name) == name) + ALL_OBJFILE_PSYMTABS (objfile, pst) + { + if (FILENAME_CMP (lbasename (pst->filename), name) == 0) + return (pst); + } + + return (NULL); +} + +static int +lookup_symtab_via_partial_symtab (struct objfile *objfile, const char *name, + const char *full_path, const char *real_path, + struct symtab **result) +{ + struct partial_symtab *ps; + + ps = lookup_partial_symtab (objfile, name, full_path, real_path); + if (!ps) + return 0; + + if (ps->readin) + error (_("Internal: readin %s pst for `%s' found when no symtab found."), + ps->filename, name); + + *result = PSYMTAB_TO_SYMTAB (ps); + return 1; +} + +/* Find which partial symtab contains PC and SECTION starting at psymtab PST. + We may find a different psymtab than PST. See FIND_PC_SECT_PSYMTAB. */ + +static struct partial_symtab * +find_pc_sect_psymtab_closer (CORE_ADDR pc, struct obj_section *section, + struct partial_symtab *pst, + struct minimal_symbol *msymbol) +{ + struct objfile *objfile = pst->objfile; + struct partial_symtab *tpst; + struct partial_symtab *best_pst = pst; + CORE_ADDR best_addr = pst->textlow; + + /* An objfile that has its functions reordered might have + many partial symbol tables containing the PC, but + we want the partial symbol table that contains the + function containing the PC. */ + if (!(objfile->flags & OBJF_REORDERED) && + section == 0) /* can't validate section this way */ + return pst; + + if (msymbol == NULL) + return (pst); + + /* The code range of partial symtabs sometimes overlap, so, in + the loop below, we need to check all partial symtabs and + find the one that fits better for the given PC address. We + select the partial symtab that contains a symbol whose + address is closest to the PC address. By closest we mean + that find_pc_sect_symbol returns the symbol with address + that is closest and still less than the given PC. */ + for (tpst = pst; tpst != NULL; tpst = tpst->next) + { + if (pc >= tpst->textlow && pc < tpst->texthigh) + { + struct partial_symbol *p; + CORE_ADDR this_addr; + + /* NOTE: This assumes that every psymbol has a + corresponding msymbol, which is not necessarily + true; the debug info might be much richer than the + object's symbol table. */ + p = find_pc_sect_psymbol (tpst, pc, section); + if (p != NULL + && SYMBOL_VALUE_ADDRESS (p) + == SYMBOL_VALUE_ADDRESS (msymbol)) + return tpst; + + /* Also accept the textlow value of a psymtab as a + "symbol", to provide some support for partial + symbol tables with line information but no debug + symbols (e.g. those produced by an assembler). */ + if (p != NULL) + this_addr = SYMBOL_VALUE_ADDRESS (p); + else + this_addr = tpst->textlow; + + /* Check whether it is closer than our current + BEST_ADDR. Since this symbol address is + necessarily lower or equal to PC, the symbol closer + to PC is the symbol which address is the highest. + This way we return the psymtab which contains such + best match symbol. This can help in cases where the + symbol information/debuginfo is not complete, like + for instance on IRIX6 with gcc, where no debug info + is emitted for statics. (See also the nodebug.exp + testcase.) */ + if (this_addr > best_addr) + { + best_addr = this_addr; + best_pst = tpst; + } + } + } + return best_pst; +} + +/* Find which partial symtab contains PC and SECTION. Return 0 if + none. We return the psymtab that contains a symbol whose address + exactly matches PC, or, if we cannot find an exact match, the + psymtab that contains a symbol whose address is closest to PC. */ +static struct partial_symtab * +find_pc_sect_psymtab (struct objfile *objfile, CORE_ADDR pc, + struct obj_section *section, + struct minimal_symbol *msymbol) +{ + struct partial_symtab *pst; + + /* Try just the PSYMTABS_ADDRMAP mapping first as it has better granularity + than the later used TEXTLOW/TEXTHIGH one. */ + + if (objfile->psymtabs_addrmap != NULL) + { + pst = addrmap_find (objfile->psymtabs_addrmap, pc); + if (pst != NULL) + { + /* FIXME: addrmaps currently do not handle overlayed sections, + so fall back to the non-addrmap case if we're debugging + overlays and the addrmap returned the wrong section. */ + if (overlay_debugging && msymbol && section) + { + struct partial_symbol *p; + + /* NOTE: This assumes that every psymbol has a + corresponding msymbol, which is not necessarily + true; the debug info might be much richer than the + object's symbol table. */ + p = find_pc_sect_psymbol (pst, pc, section); + if (!p + || SYMBOL_VALUE_ADDRESS (p) + != SYMBOL_VALUE_ADDRESS (msymbol)) + goto next; + } + + /* We do not try to call FIND_PC_SECT_PSYMTAB_CLOSER as + PSYMTABS_ADDRMAP we used has already the best 1-byte + granularity and FIND_PC_SECT_PSYMTAB_CLOSER may mislead us into + a worse chosen section due to the TEXTLOW/TEXTHIGH ranges + overlap. */ + + return pst; + } + } + + next: + + /* Existing PSYMTABS_ADDRMAP mapping is present even for PARTIAL_SYMTABs + which still have no corresponding full SYMTABs read. But it is not + present for non-DWARF2 debug infos not supporting PSYMTABS_ADDRMAP in GDB + so far. */ + + /* Check even OBJFILE with non-zero PSYMTABS_ADDRMAP as only several of + its CUs may be missing in PSYMTABS_ADDRMAP as they may be varying + debug info type in single OBJFILE. */ + + ALL_OBJFILE_PSYMTABS (objfile, pst) + if (pc >= pst->textlow && pc < pst->texthigh) + { + struct partial_symtab *best_pst; + + best_pst = find_pc_sect_psymtab_closer (pc, section, pst, msymbol); + if (best_pst != NULL) + return best_pst; + } + + return NULL; +} + +static struct symtab * +find_pc_sect_symtab_from_partial (struct objfile *objfile, + struct minimal_symbol *msymbol, + CORE_ADDR pc, struct obj_section *section, + int warn_if_readin) +{ + struct partial_symtab *ps = find_pc_sect_psymtab (objfile, pc, section, + msymbol); + if (ps) + { + if (warn_if_readin && ps->readin) + /* Might want to error() here (in case symtab is corrupt and + will cause a core dump), but maybe we can successfully + continue, so let's not. */ + warning (_("\ +(Internal error: pc %s in read in psymtab, but not in symtab.)\n"), + paddress (get_objfile_arch (ps->objfile), pc)); + return PSYMTAB_TO_SYMTAB (ps); + } + return NULL; +} + +/* Find which partial symbol within a psymtab matches PC and SECTION. + Return 0 if none. */ + +static struct partial_symbol * +find_pc_sect_psymbol (struct partial_symtab *psymtab, CORE_ADDR pc, + struct obj_section *section) +{ + struct partial_symbol *best = NULL, *p, **pp; + CORE_ADDR best_pc; + + gdb_assert (psymtab != NULL); + + /* Cope with programs that start at address 0 */ + best_pc = (psymtab->textlow != 0) ? psymtab->textlow - 1 : 0; + + /* Search the global symbols as well as the static symbols, so that + find_pc_partial_function doesn't use a minimal symbol and thus + cache a bad endaddr. */ + for (pp = psymtab->objfile->global_psymbols.list + psymtab->globals_offset; + (pp - (psymtab->objfile->global_psymbols.list + psymtab->globals_offset) + < psymtab->n_global_syms); + pp++) + { + p = *pp; + if (SYMBOL_DOMAIN (p) == VAR_DOMAIN + && SYMBOL_CLASS (p) == LOC_BLOCK + && pc >= SYMBOL_VALUE_ADDRESS (p) + && (SYMBOL_VALUE_ADDRESS (p) > best_pc + || (psymtab->textlow == 0 + && best_pc == 0 && SYMBOL_VALUE_ADDRESS (p) == 0))) + { + if (section) /* match on a specific section */ + { + fixup_psymbol_section (p, psymtab->objfile); + if (!matching_obj_sections (SYMBOL_OBJ_SECTION (p), section)) + continue; + } + best_pc = SYMBOL_VALUE_ADDRESS (p); + best = p; + } + } + + for (pp = psymtab->objfile->static_psymbols.list + psymtab->statics_offset; + (pp - (psymtab->objfile->static_psymbols.list + psymtab->statics_offset) + < psymtab->n_static_syms); + pp++) + { + p = *pp; + if (SYMBOL_DOMAIN (p) == VAR_DOMAIN + && SYMBOL_CLASS (p) == LOC_BLOCK + && pc >= SYMBOL_VALUE_ADDRESS (p) + && (SYMBOL_VALUE_ADDRESS (p) > best_pc + || (psymtab->textlow == 0 + && best_pc == 0 && SYMBOL_VALUE_ADDRESS (p) == 0))) + { + if (section) /* match on a specific section */ + { + fixup_psymbol_section (p, psymtab->objfile); + if (!matching_obj_sections (SYMBOL_OBJ_SECTION (p), section)) + continue; + } + best_pc = SYMBOL_VALUE_ADDRESS (p); + best = p; + } + } + + return best; +} + +static struct partial_symbol * +fixup_psymbol_section (struct partial_symbol *psym, struct objfile *objfile) +{ + CORE_ADDR addr; + + if (!psym) + return NULL; + + if (SYMBOL_OBJ_SECTION (psym)) + return psym; + + gdb_assert (objfile); + + switch (SYMBOL_CLASS (psym)) + { + case LOC_STATIC: + case LOC_LABEL: + case LOC_BLOCK: + addr = SYMBOL_VALUE_ADDRESS (psym); + break; + default: + /* Nothing else will be listed in the minsyms -- no use looking + it up. */ + return psym; + } + + fixup_section (&psym->ginfo, addr, objfile); + + return psym; +} + +static struct symtab * +lookup_symbol_aux_psymtabs (struct objfile *objfile, + int block_index, const char *name, + const domain_enum domain) +{ + struct partial_symtab *ps; + const int psymtab_index = (block_index == GLOBAL_BLOCK ? 1 : 0); + + ALL_OBJFILE_PSYMTABS (objfile, ps) + { + if (!ps->readin && lookup_partial_symbol (ps, name, psymtab_index, domain)) + return PSYMTAB_TO_SYMTAB (ps); + } + + return NULL; +} + +/* Look, in partial_symtab PST, for symbol whose natural name is NAME. + Check the global symbols if GLOBAL, the static symbols if not. */ + +static struct partial_symbol * +lookup_partial_symbol (struct partial_symtab *pst, const char *name, + int global, domain_enum domain) +{ + struct partial_symbol **start, **psym; + struct partial_symbol **top, **real_top, **bottom, **center; + int length = (global ? pst->n_global_syms : pst->n_static_syms); + int do_linear_search = 1; + + if (length == 0) + { + return (NULL); + } + start = (global ? + pst->objfile->global_psymbols.list + pst->globals_offset : + pst->objfile->static_psymbols.list + pst->statics_offset); + + if (global) /* This means we can use a binary search. */ + { + do_linear_search = 0; + + /* Binary search. This search is guaranteed to end with center + pointing at the earliest partial symbol whose name might be + correct. At that point *all* partial symbols with an + appropriate name will be checked against the correct + domain. */ + + bottom = start; + top = start + length - 1; + real_top = top; + while (top > bottom) + { + center = bottom + (top - bottom) / 2; + if (!(center < top)) + internal_error (__FILE__, __LINE__, _("failed internal consistency check")); + if (!do_linear_search + && (SYMBOL_LANGUAGE (*center) == language_java)) + { + do_linear_search = 1; + } + if (strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*center), name) >= 0) + { + top = center; + } + else + { + bottom = center + 1; + } + } + if (!(top == bottom)) + internal_error (__FILE__, __LINE__, _("failed internal consistency check")); + + while (top <= real_top + && SYMBOL_MATCHES_SEARCH_NAME (*top, name)) + { + if (symbol_matches_domain (SYMBOL_LANGUAGE (*top), + SYMBOL_DOMAIN (*top), domain)) + return (*top); + top++; + } + } + + /* Can't use a binary search or else we found during the binary search that + we should also do a linear search. */ + + if (do_linear_search) + { + for (psym = start; psym < start + length; psym++) + { + if (symbol_matches_domain (SYMBOL_LANGUAGE (*psym), + SYMBOL_DOMAIN (*psym), domain) + && SYMBOL_MATCHES_SEARCH_NAME (*psym, name)) + return (*psym); + } + } + + return (NULL); +} + +/* Get the symbol table that corresponds to a partial_symtab. + This is fast after the first time you do it. In fact, there + is an even faster macro PSYMTAB_TO_SYMTAB that does the fast + case inline. */ + +static struct symtab * +psymtab_to_symtab (struct partial_symtab *pst) +{ + /* If it's been looked up before, return it. */ + if (pst->symtab) + return pst->symtab; + + /* If it has not yet been read in, read it. */ + if (!pst->readin) + { + struct cleanup *back_to = increment_reading_symtab (); + + (*pst->read_symtab) (pst); + do_cleanups (back_to); + } + + return pst->symtab; +} + +static void +relocate_psymtabs (struct objfile *objfile, + struct section_offsets *new_offsets, + struct section_offsets *delta) +{ + struct partial_symbol **psym; + struct partial_symtab *p; + + ALL_OBJFILE_PSYMTABS (objfile, p) + { + p->textlow += ANOFFSET (delta, SECT_OFF_TEXT (objfile)); + p->texthigh += ANOFFSET (delta, SECT_OFF_TEXT (objfile)); + } + + for (psym = objfile->global_psymbols.list; + psym < objfile->global_psymbols.next; + psym++) + { + fixup_psymbol_section (*psym, objfile); + if (SYMBOL_SECTION (*psym) >= 0) + SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta, + SYMBOL_SECTION (*psym)); + } + for (psym = objfile->static_psymbols.list; + psym < objfile->static_psymbols.next; + psym++) + { + fixup_psymbol_section (*psym, objfile); + if (SYMBOL_SECTION (*psym) >= 0) + SYMBOL_VALUE_ADDRESS (*psym) += ANOFFSET (delta, + SYMBOL_SECTION (*psym)); + } +} + +static struct symtab * +find_last_source_symtab_from_partial (struct objfile *ofp) +{ + struct partial_symtab *ps; + struct partial_symtab *cs_pst = 0; + + ALL_OBJFILE_PSYMTABS (ofp, ps) + { + const char *name = ps->filename; + int len = strlen (name); + + if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0 + || strcmp (name, "<>") == 0))) + cs_pst = ps; + } + + if (cs_pst) + { + if (cs_pst->readin) + { + internal_error (__FILE__, __LINE__, + _("select_source_symtab: " + "readin pst found and no symtabs.")); + } + else + return PSYMTAB_TO_SYMTAB (cs_pst); + } + return NULL; +} + +static void +forget_cached_source_info_partial (struct objfile *objfile) +{ + struct partial_symtab *pst; + + ALL_OBJFILE_PSYMTABS (objfile, pst) + { + if (pst->fullname != NULL) + { + xfree (pst->fullname); + pst->fullname = NULL; + } + } +} + +static void +print_partial_symbols (struct gdbarch *gdbarch, + struct partial_symbol **p, int count, char *what, + struct ui_file *outfile) +{ + fprintf_filtered (outfile, " %s partial symbols:\n", what); + while (count-- > 0) + { + fprintf_filtered (outfile, " `%s'", SYMBOL_LINKAGE_NAME (*p)); + if (SYMBOL_DEMANGLED_NAME (*p) != NULL) + { + fprintf_filtered (outfile, " `%s'", SYMBOL_DEMANGLED_NAME (*p)); + } + fputs_filtered (", ", outfile); + switch (SYMBOL_DOMAIN (*p)) + { + case UNDEF_DOMAIN: + fputs_filtered ("undefined domain, ", outfile); + break; + case VAR_DOMAIN: + /* This is the usual thing -- don't print it */ + break; + case STRUCT_DOMAIN: + fputs_filtered ("struct domain, ", outfile); + break; + case LABEL_DOMAIN: + fputs_filtered ("label domain, ", outfile); + break; + default: + fputs_filtered (", ", outfile); + break; + } + switch (SYMBOL_CLASS (*p)) + { + case LOC_UNDEF: + fputs_filtered ("undefined", outfile); + break; + case LOC_CONST: + fputs_filtered ("constant int", outfile); + break; + case LOC_STATIC: + fputs_filtered ("static", outfile); + break; + case LOC_REGISTER: + fputs_filtered ("register", outfile); + break; + case LOC_ARG: + fputs_filtered ("pass by value", outfile); + break; + case LOC_REF_ARG: + fputs_filtered ("pass by reference", outfile); + break; + case LOC_REGPARM_ADDR: + fputs_filtered ("register address parameter", outfile); + break; + case LOC_LOCAL: + fputs_filtered ("stack parameter", outfile); + break; + case LOC_TYPEDEF: + fputs_filtered ("type", outfile); + break; + case LOC_LABEL: + fputs_filtered ("label", outfile); + break; + case LOC_BLOCK: + fputs_filtered ("function", outfile); + break; + case LOC_CONST_BYTES: + fputs_filtered ("constant bytes", outfile); + break; + case LOC_UNRESOLVED: + fputs_filtered ("unresolved", outfile); + break; + case LOC_OPTIMIZED_OUT: + fputs_filtered ("optimized out", outfile); + break; + case LOC_COMPUTED: + fputs_filtered ("computed at runtime", outfile); + break; + default: + fputs_filtered ("", outfile); + break; + } + fputs_filtered (", ", outfile); + fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (*p)), outfile); + fprintf_filtered (outfile, "\n"); + p++; + } +} + +static void +dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab, + struct ui_file *outfile) +{ + struct gdbarch *gdbarch = get_objfile_arch (objfile); + int i; + + fprintf_filtered (outfile, "\nPartial symtab for source file %s ", + psymtab->filename); + fprintf_filtered (outfile, "(object "); + gdb_print_host_address (psymtab, outfile); + fprintf_filtered (outfile, ")\n\n"); + fprintf_unfiltered (outfile, " Read from object file %s (", + objfile->name); + gdb_print_host_address (objfile, outfile); + fprintf_unfiltered (outfile, ")\n"); + + if (psymtab->readin) + { + fprintf_filtered (outfile, + " Full symtab was read (at "); + gdb_print_host_address (psymtab->symtab, outfile); + fprintf_filtered (outfile, " by function at "); + gdb_print_host_address (psymtab->read_symtab, outfile); + fprintf_filtered (outfile, ")\n"); + } + + fprintf_filtered (outfile, " Relocate symbols by "); + for (i = 0; i < psymtab->objfile->num_sections; ++i) + { + if (i != 0) + fprintf_filtered (outfile, ", "); + wrap_here (" "); + fputs_filtered (paddress (gdbarch, + ANOFFSET (psymtab->section_offsets, i)), + outfile); + } + fprintf_filtered (outfile, "\n"); + + fprintf_filtered (outfile, " Symbols cover text addresses "); + fputs_filtered (paddress (gdbarch, psymtab->textlow), outfile); + fprintf_filtered (outfile, "-"); + fputs_filtered (paddress (gdbarch, psymtab->texthigh), outfile); + fprintf_filtered (outfile, "\n"); + fprintf_filtered (outfile, " Depends on %d other partial symtabs.\n", + psymtab->number_of_dependencies); + for (i = 0; i < psymtab->number_of_dependencies; i++) + { + fprintf_filtered (outfile, " %d ", i); + gdb_print_host_address (psymtab->dependencies[i], outfile); + fprintf_filtered (outfile, " %s\n", + psymtab->dependencies[i]->filename); + } + if (psymtab->n_global_syms > 0) + { + print_partial_symbols (gdbarch, + objfile->global_psymbols.list + + psymtab->globals_offset, + psymtab->n_global_syms, "Global", outfile); + } + if (psymtab->n_static_syms > 0) + { + print_partial_symbols (gdbarch, + objfile->static_psymbols.list + + psymtab->statics_offset, + psymtab->n_static_syms, "Static", outfile); + } + fprintf_filtered (outfile, "\n"); +} + +static void +print_psymtab_stats_for_objfile (struct objfile *objfile) +{ + int i; + struct partial_symtab *ps; + + i = 0; + ALL_OBJFILE_PSYMTABS (objfile, ps) + { + if (ps->readin == 0) + i++; + } + printf_filtered (_(" Number of psym tables (not yet expanded): %d\n"), i); +} + +static void +dump_psymtabs_for_objfile (struct objfile *objfile) +{ + struct partial_symtab *psymtab; + + if (objfile->psymtabs) + { + printf_filtered ("Psymtabs:\n"); + for (psymtab = objfile->psymtabs; + psymtab != NULL; + psymtab = psymtab->next) + { + printf_filtered ("%s at ", + psymtab->filename); + gdb_print_host_address (psymtab, gdb_stdout); + printf_filtered (", "); + if (psymtab->objfile != objfile) + { + printf_filtered ("NOT ON CHAIN! "); + } + wrap_here (" "); + } + printf_filtered ("\n\n"); + } +} + +/* Look through the partial symtabs for all symbols which begin + by matching FUNC_NAME. Make sure we read that symbol table in. */ + +static void +read_symtabs_for_function (struct objfile *objfile, const char *func_name) +{ + struct partial_symtab *ps; + + ALL_OBJFILE_PSYMTABS (objfile, ps) + { + if (ps->readin) + continue; + + if ((lookup_partial_symbol (ps, func_name, 1, VAR_DOMAIN) + != NULL) + || (lookup_partial_symbol (ps, func_name, 0, VAR_DOMAIN) + != NULL)) + psymtab_to_symtab (ps); + } +} + +static void +expand_partial_symbol_tables (struct objfile *objfile) +{ + struct partial_symtab *psymtab; + + for (psymtab = objfile->psymtabs; + psymtab != NULL; + psymtab = psymtab->next) + { + psymtab_to_symtab (psymtab); + } +} + +static void +read_psymtabs_with_filename (struct objfile *objfile, const char *filename) +{ + struct partial_symtab *p; + + ALL_OBJFILE_PSYMTABS (objfile, p) + { + if (strcmp (filename, p->filename) == 0) + PSYMTAB_TO_SYMTAB (p); + } +} + +static void +map_symbol_names_psymtab (struct objfile *objfile, + void (*fun) (const char *, void *), void *data) +{ + struct partial_symtab *ps; + + ALL_OBJFILE_PSYMTABS (objfile, ps) + { + struct partial_symbol **psym; + + /* If the psymtab's been read in we'll get it when we search + through the blockvector. */ + if (ps->readin) + continue; + + for (psym = objfile->global_psymbols.list + ps->globals_offset; + psym < (objfile->global_psymbols.list + ps->globals_offset + + ps->n_global_syms); + psym++) + { + /* If interrupted, then quit. */ + QUIT; + (*fun) (SYMBOL_NATURAL_NAME (*psym), data); + } + + for (psym = objfile->static_psymbols.list + ps->statics_offset; + psym < (objfile->static_psymbols.list + ps->statics_offset + + ps->n_static_syms); + psym++) + { + QUIT; + (*fun) (SYMBOL_NATURAL_NAME (*psym), data); + } + } +} + +static void +map_symbol_filenames_psymtab (struct objfile *objfile, + void (*fun) (const char *, const char *, + void *), + void *data) +{ + struct partial_symtab *ps; + + ALL_OBJFILE_PSYMTABS (objfile, ps) + { + const char *fullname; + + if (ps->readin) + continue; + + fullname = psymtab_to_fullname (ps); + (*fun) (ps->filename, fullname, data); + } +} + +int find_and_open_source (const char *filename, + const char *dirname, + char **fullname); + +/* Finds the fullname that a partial_symtab represents. + + If this functions finds the fullname, it will save it in ps->fullname + and it will also return the value. + + If this function fails to find the file that this partial_symtab represents, + NULL will be returned and ps->fullname will be set to NULL. */ +static char * +psymtab_to_fullname (struct partial_symtab *ps) +{ + int r; + + if (!ps) + return NULL; + + /* Don't check ps->fullname here, the file could have been + deleted/moved/..., look for it again */ + r = find_and_open_source (ps->filename, ps->dirname, &ps->fullname); + + if (r >= 0) + { + close (r); + return ps->fullname; + } + + return NULL; +} + +static char * +find_symbol_file_from_partial (struct objfile *objfile, const char *name) +{ + struct partial_symtab *pst; + + ALL_OBJFILE_PSYMTABS (objfile, pst) + { + if (lookup_partial_symbol (pst, name, 1, VAR_DOMAIN)) + return pst->filename; + } + return NULL; +} + +/* Look, in partial_symtab PST, for symbol NAME in given namespace. + Check the global symbols if GLOBAL, the static symbols if not. + Do wild-card match if WILD. */ + +static struct partial_symbol * +ada_lookup_partial_symbol (struct partial_symtab *pst, const char *name, + int global, domain_enum namespace, int wild, + int (*wild_match) (const char *, int, const char *), + int (*is_name_suffix) (const char *)) +{ + struct partial_symbol **start; + int name_len = strlen (name); + int length = (global ? pst->n_global_syms : pst->n_static_syms); + int i; + + if (length == 0) + { + return (NULL); + } + + start = (global ? + pst->objfile->global_psymbols.list + pst->globals_offset : + pst->objfile->static_psymbols.list + pst->statics_offset); + + if (wild) + { + for (i = 0; i < length; i += 1) + { + struct partial_symbol *psym = start[i]; + + if (symbol_matches_domain (SYMBOL_LANGUAGE (psym), + SYMBOL_DOMAIN (psym), namespace) + && (*wild_match) (name, name_len, SYMBOL_LINKAGE_NAME (psym))) + return psym; + } + return NULL; + } + else + { + if (global) + { + int U; + + i = 0; + U = length - 1; + while (U - i > 4) + { + int M = (U + i) >> 1; + struct partial_symbol *psym = start[M]; + + if (SYMBOL_LINKAGE_NAME (psym)[0] < name[0]) + i = M + 1; + else if (SYMBOL_LINKAGE_NAME (psym)[0] > name[0]) + U = M - 1; + else if (strcmp (SYMBOL_LINKAGE_NAME (psym), name) < 0) + i = M + 1; + else + U = M; + } + } + else + i = 0; + + while (i < length) + { + struct partial_symbol *psym = start[i]; + + if (symbol_matches_domain (SYMBOL_LANGUAGE (psym), + SYMBOL_DOMAIN (psym), namespace)) + { + int cmp = strncmp (name, SYMBOL_LINKAGE_NAME (psym), name_len); + + if (cmp < 0) + { + if (global) + break; + } + else if (cmp == 0 + && (*is_name_suffix) (SYMBOL_LINKAGE_NAME (psym) + + name_len)) + return psym; + } + i += 1; + } + + if (global) + { + int U; + + i = 0; + U = length - 1; + while (U - i > 4) + { + int M = (U + i) >> 1; + struct partial_symbol *psym = start[M]; + + if (SYMBOL_LINKAGE_NAME (psym)[0] < '_') + i = M + 1; + else if (SYMBOL_LINKAGE_NAME (psym)[0] > '_') + U = M - 1; + else if (strcmp (SYMBOL_LINKAGE_NAME (psym), "_ada_") < 0) + i = M + 1; + else + U = M; + } + } + else + i = 0; + + while (i < length) + { + struct partial_symbol *psym = start[i]; + + if (symbol_matches_domain (SYMBOL_LANGUAGE (psym), + SYMBOL_DOMAIN (psym), namespace)) + { + int cmp; + + cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (psym)[0]; + if (cmp == 0) + { + cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (psym), 5); + if (cmp == 0) + cmp = strncmp (name, SYMBOL_LINKAGE_NAME (psym) + 5, + name_len); + } + + if (cmp < 0) + { + if (global) + break; + } + else if (cmp == 0 + && (*is_name_suffix) (SYMBOL_LINKAGE_NAME (psym) + + name_len + 5)) + return psym; + } + i += 1; + } + } + return NULL; +} + +static void +map_ada_symtabs (struct objfile *objfile, + int (*wild_match) (const char *, int, const char *), + int (*is_name_suffix) (const char *), + void (*callback) (struct objfile *, struct symtab *, void *), + const char *name, int global, domain_enum namespace, int wild, + void *data) +{ + struct partial_symtab *ps; + + ALL_OBJFILE_PSYMTABS (objfile, ps) + { + QUIT; + if (ps->readin + || ada_lookup_partial_symbol (ps, name, global, namespace, wild, + wild_match, is_name_suffix)) + { + struct symtab *s = PSYMTAB_TO_SYMTAB (ps); + + if (s == NULL || !s->primary) + continue; + (*callback) (objfile, s, data); + } + } +} + +static void +expand_symtabs_matching_via_partial (struct objfile *objfile, + int (*file_matcher) (const char *, void *), + int (*name_matcher) (const char *, void *), + domain_enum kind, + void *data) +{ + struct partial_symtab *ps; + + ALL_OBJFILE_PSYMTABS (objfile, ps) + { + struct partial_symbol **psym; + struct partial_symbol **bound, **gbound, **sbound; + int keep_going = 1; + + if (ps->readin) + continue; + + if (! (*file_matcher) (ps->filename, data)) + continue; + + gbound = objfile->global_psymbols.list + ps->globals_offset + ps->n_global_syms; + sbound = objfile->static_psymbols.list + ps->statics_offset + ps->n_static_syms; + bound = gbound; + + /* Go through all of the symbols stored in a partial + symtab in one loop. */ + psym = objfile->global_psymbols.list + ps->globals_offset; + while (keep_going) + { + if (psym >= bound) + { + if (bound == gbound && ps->n_static_syms != 0) + { + psym = objfile->static_psymbols.list + ps->statics_offset; + bound = sbound; + } + else + keep_going = 0; + continue; + } + else + { + QUIT; + + if ((*name_matcher) (SYMBOL_NATURAL_NAME (*psym), data) + && ((kind == VARIABLES_DOMAIN + && SYMBOL_CLASS (*psym) != LOC_TYPEDEF + && SYMBOL_CLASS (*psym) != LOC_BLOCK) + || (kind == FUNCTIONS_DOMAIN + && SYMBOL_CLASS (*psym) == LOC_BLOCK) + || (kind == TYPES_DOMAIN + && SYMBOL_CLASS (*psym) == LOC_TYPEDEF))) + { + PSYMTAB_TO_SYMTAB (ps); + keep_going = 0; + } + } + psym++; + } + } +} + +static int +objfile_has_psyms (struct objfile *objfile) +{ + return objfile->psymtabs != NULL; +} + +const struct quick_symbol_functions psym_functions = +{ + objfile_has_psyms, + find_last_source_symtab_from_partial, + forget_cached_source_info_partial, + lookup_symtab_via_partial_symtab, + lookup_symbol_aux_psymtabs, + print_psymtab_stats_for_objfile, + dump_psymtabs_for_objfile, + relocate_psymtabs, + read_symtabs_for_function, + expand_partial_symbol_tables, + read_psymtabs_with_filename, + find_symbol_file_from_partial, + map_ada_symtabs, + expand_symtabs_matching_via_partial, + find_pc_sect_symtab_from_partial, + map_symbol_names_psymtab, + map_symbol_filenames_psymtab +}; + + + +/* This compares two partial symbols by names, using strcmp_iw_ordered + for the comparison. */ + +static int +compare_psymbols (const void *s1p, const void *s2p) +{ + struct partial_symbol *const *s1 = s1p; + struct partial_symbol *const *s2 = s2p; + + return strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*s1), + SYMBOL_SEARCH_NAME (*s2)); +} + +void +sort_pst_symbols (struct partial_symtab *pst) +{ + /* Sort the global list; don't sort the static list */ + + qsort (pst->objfile->global_psymbols.list + pst->globals_offset, + pst->n_global_syms, sizeof (struct partial_symbol *), + compare_psymbols); +} + +/* Allocate and partially fill a partial symtab. It will be + completely filled at the end of the symbol list. + + FILENAME is the name of the symbol-file we are reading from. */ + +struct partial_symtab * +start_psymtab_common (struct objfile *objfile, + struct section_offsets *section_offsets, + const char *filename, + CORE_ADDR textlow, struct partial_symbol **global_syms, + struct partial_symbol **static_syms) +{ + struct partial_symtab *psymtab; + + psymtab = allocate_psymtab (filename, objfile); + psymtab->section_offsets = section_offsets; + psymtab->textlow = textlow; + psymtab->texthigh = psymtab->textlow; /* default */ + psymtab->globals_offset = global_syms - objfile->global_psymbols.list; + psymtab->statics_offset = static_syms - objfile->static_psymbols.list; + return (psymtab); +} + +/* Helper function, initialises partial symbol structure and stashes + it into objfile's bcache. Note that our caching mechanism will + use all fields of struct partial_symbol to determine hash value of the + structure. In other words, having two symbols with the same name but + different domain (or address) is possible and correct. */ + +static const struct partial_symbol * +add_psymbol_to_bcache (char *name, int namelength, int copy_name, + domain_enum domain, + enum address_class class, + long val, /* Value as a long */ + CORE_ADDR coreaddr, /* Value as a CORE_ADDR */ + enum language language, struct objfile *objfile, + int *added) +{ + /* psymbol is static so that there will be no uninitialized gaps in the + structure which might contain random data, causing cache misses in + bcache. */ + static struct partial_symbol psymbol; + + /* However, we must ensure that the entire 'value' field has been + zeroed before assigning to it, because an assignment may not + write the entire field. */ + memset (&psymbol.ginfo.value, 0, sizeof (psymbol.ginfo.value)); + /* val and coreaddr are mutually exclusive, one of them *will* be zero */ + if (val != 0) + { + SYMBOL_VALUE (&psymbol) = val; + } + else + { + SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr; + } + SYMBOL_SECTION (&psymbol) = 0; + SYMBOL_LANGUAGE (&psymbol) = language; + PSYMBOL_DOMAIN (&psymbol) = domain; + PSYMBOL_CLASS (&psymbol) = class; + + SYMBOL_SET_NAMES (&psymbol, name, namelength, copy_name, objfile); + + /* Stash the partial symbol away in the cache */ + return bcache_full (&psymbol, sizeof (struct partial_symbol), + objfile->psymbol_cache, added); +} + +/* Helper function, adds partial symbol to the given partial symbol + list. */ + +static void +append_psymbol_to_list (struct psymbol_allocation_list *list, + const struct partial_symbol *psym, + struct objfile *objfile) +{ + if (list->next >= list->list + list->size) + extend_psymbol_list (list, objfile); + *list->next++ = (struct partial_symbol *) psym; + OBJSTAT (objfile, n_psyms++); +} + +/* Add a symbol with a long value to a psymtab. + Since one arg is a struct, we pass in a ptr and deref it (sigh). + Return the partial symbol that has been added. */ + +/* NOTE: carlton/2003-09-11: The reason why we return the partial + symbol is so that callers can get access to the symbol's demangled + name, which they don't have any cheap way to determine otherwise. + (Currenly, dwarf2read.c is the only file who uses that information, + though it's possible that other readers might in the future.) + Elena wasn't thrilled about that, and I don't blame her, but we + couldn't come up with a better way to get that information. If + it's needed in other situations, we could consider breaking up + SYMBOL_SET_NAMES to provide access to the demangled name lookup + cache. */ + +const struct partial_symbol * +add_psymbol_to_list (char *name, int namelength, int copy_name, + domain_enum domain, + enum address_class class, + struct psymbol_allocation_list *list, + long val, /* Value as a long */ + CORE_ADDR coreaddr, /* Value as a CORE_ADDR */ + enum language language, struct objfile *objfile) +{ + const struct partial_symbol *psym; + + int added; + + /* Stash the partial symbol away in the cache */ + psym = add_psymbol_to_bcache (name, namelength, copy_name, domain, class, + val, coreaddr, language, objfile, &added); + + /* Do not duplicate global partial symbols. */ + if (list == &objfile->global_psymbols + && !added) + return psym; + + /* Save pointer to partial symbol in psymtab, growing symtab if needed. */ + append_psymbol_to_list (list, psym, objfile); + return psym; +} + +/* Initialize storage for partial symbols. */ + +void +init_psymbol_list (struct objfile *objfile, int total_symbols) +{ + /* Free any previously allocated psymbol lists. */ + + if (objfile->global_psymbols.list) + { + xfree (objfile->global_psymbols.list); + } + if (objfile->static_psymbols.list) + { + xfree (objfile->static_psymbols.list); + } + + /* Current best guess is that approximately a twentieth + of the total symbols (in a debugging file) are global or static + oriented symbols */ + + objfile->global_psymbols.size = total_symbols / 10; + objfile->static_psymbols.size = total_symbols / 10; + + if (objfile->global_psymbols.size > 0) + { + objfile->global_psymbols.next = + objfile->global_psymbols.list = (struct partial_symbol **) + xmalloc ((objfile->global_psymbols.size + * sizeof (struct partial_symbol *))); + } + if (objfile->static_psymbols.size > 0) + { + objfile->static_psymbols.next = + objfile->static_psymbols.list = (struct partial_symbol **) + xmalloc ((objfile->static_psymbols.size + * sizeof (struct partial_symbol *))); + } +} + +struct partial_symtab * +allocate_psymtab (const char *filename, struct objfile *objfile) +{ + struct partial_symtab *psymtab; + + if (objfile->free_psymtabs) + { + psymtab = objfile->free_psymtabs; + objfile->free_psymtabs = psymtab->next; + } + else + psymtab = (struct partial_symtab *) + obstack_alloc (&objfile->objfile_obstack, + sizeof (struct partial_symtab)); + + memset (psymtab, 0, sizeof (struct partial_symtab)); + psymtab->filename = obsavestring (filename, strlen (filename), + &objfile->objfile_obstack); + psymtab->symtab = NULL; + + /* Prepend it to the psymtab list for the objfile it belongs to. + Psymtabs are searched in most recent inserted -> least recent + inserted order. */ + + psymtab->objfile = objfile; + psymtab->next = objfile->psymtabs; + objfile->psymtabs = psymtab; + + return (psymtab); +} + +void +discard_psymtab (struct partial_symtab *pst) +{ + struct partial_symtab **prev_pst; + + /* From dbxread.c: + Empty psymtabs happen as a result of header files which don't + have any symbols in them. There can be a lot of them. But this + check is wrong, in that a psymtab with N_SLINE entries but + nothing else is not empty, but we don't realize that. Fixing + that without slowing things down might be tricky. */ + + /* First, snip it out of the psymtab chain */ + + prev_pst = &(pst->objfile->psymtabs); + while ((*prev_pst) != pst) + prev_pst = &((*prev_pst)->next); + (*prev_pst) = pst->next; + + /* Next, put it on a free list for recycling */ + + pst->next = pst->objfile->free_psymtabs; + pst->objfile->free_psymtabs = pst; +} + +/* Increase the space allocated for LISTP, which is probably + global_psymbols or static_psymbols. This space will eventually + be freed in free_objfile(). */ + +void +extend_psymbol_list (struct psymbol_allocation_list *listp, + struct objfile *objfile) +{ + int new_size; + + if (listp->size == 0) + { + new_size = 255; + listp->list = (struct partial_symbol **) + xmalloc (new_size * sizeof (struct partial_symbol *)); + } + else + { + new_size = listp->size * 2; + listp->list = (struct partial_symbol **) + xrealloc ((char *) listp->list, + new_size * sizeof (struct partial_symbol *)); + } + /* Next assumes we only went one over. Should be good if + program works correctly */ + listp->next = listp->list + listp->size; + listp->size = new_size; +} + + + +void +maintenance_print_psymbols (char *args, int from_tty) +{ + char **argv; + struct ui_file *outfile; + struct cleanup *cleanups; + char *symname = NULL; + char *filename = DEV_TTY; + struct objfile *objfile; + struct partial_symtab *ps; + + dont_repeat (); + + if (args == NULL) + { + error (_("print-psymbols takes an output file name and optional symbol file name")); + } + argv = gdb_buildargv (args); + cleanups = make_cleanup_freeargv (argv); + + if (argv[0] != NULL) + { + filename = argv[0]; + /* If a second arg is supplied, it is a source file name to match on */ + if (argv[1] != NULL) + { + symname = argv[1]; + } + } + + filename = tilde_expand (filename); + make_cleanup (xfree, filename); + + outfile = gdb_fopen (filename, FOPEN_WT); + if (outfile == 0) + perror_with_name (filename); + make_cleanup_ui_file_delete (outfile); + + immediate_quit++; + ALL_PSYMTABS (objfile, ps) + if (symname == NULL || strcmp (symname, ps->filename) == 0) + dump_psymtab (objfile, ps, outfile); + immediate_quit--; + do_cleanups (cleanups); +} + +/* List all the partial symbol tables whose names match REGEXP (optional). */ +void +maintenance_info_psymtabs (char *regexp, int from_tty) +{ + struct program_space *pspace; + struct objfile *objfile; + + if (regexp) + re_comp (regexp); + + ALL_PSPACES (pspace) + ALL_PSPACE_OBJFILES (pspace, objfile) + { + struct gdbarch *gdbarch = get_objfile_arch (objfile); + struct partial_symtab *psymtab; + + /* We don't want to print anything for this objfile until we + actually find a symtab whose name matches. */ + int printed_objfile_start = 0; + + ALL_OBJFILE_PSYMTABS (objfile, psymtab) + { + QUIT; + + if (! regexp + || re_exec (psymtab->filename)) + { + if (! printed_objfile_start) + { + printf_filtered ("{ objfile %s ", objfile->name); + wrap_here (" "); + printf_filtered ("((struct objfile *) %s)\n", + host_address_to_string (objfile)); + printed_objfile_start = 1; + } + + printf_filtered (" { psymtab %s ", psymtab->filename); + wrap_here (" "); + printf_filtered ("((struct partial_symtab *) %s)\n", + host_address_to_string (psymtab)); + + printf_filtered (" readin %s\n", + psymtab->readin ? "yes" : "no"); + printf_filtered (" fullname %s\n", + psymtab->fullname ? psymtab->fullname : "(null)"); + printf_filtered (" text addresses "); + fputs_filtered (paddress (gdbarch, psymtab->textlow), + gdb_stdout); + printf_filtered (" -- "); + fputs_filtered (paddress (gdbarch, psymtab->texthigh), + gdb_stdout); + printf_filtered ("\n"); + printf_filtered (" globals "); + if (psymtab->n_global_syms) + { + printf_filtered ("(* (struct partial_symbol **) %s @ %d)\n", + host_address_to_string (psymtab->objfile->global_psymbols.list + + psymtab->globals_offset), + psymtab->n_global_syms); + } + else + printf_filtered ("(none)\n"); + printf_filtered (" statics "); + if (psymtab->n_static_syms) + { + printf_filtered ("(* (struct partial_symbol **) %s @ %d)\n", + host_address_to_string (psymtab->objfile->static_psymbols.list + + psymtab->statics_offset), + psymtab->n_static_syms); + } + else + printf_filtered ("(none)\n"); + printf_filtered (" dependencies "); + if (psymtab->number_of_dependencies) + { + int i; + + printf_filtered ("{\n"); + for (i = 0; i < psymtab->number_of_dependencies; i++) + { + struct partial_symtab *dep = psymtab->dependencies[i]; + + /* Note the string concatenation there --- no comma. */ + printf_filtered (" psymtab %s " + "((struct partial_symtab *) %s)\n", + dep->filename, + host_address_to_string (dep)); + } + printf_filtered (" }\n"); + } + else + printf_filtered ("(none)\n"); + printf_filtered (" }\n"); + } + } + + if (printed_objfile_start) + printf_filtered ("}\n"); + } +} + +/* Check consistency of psymtabs and symtabs. */ + +void +maintenance_check_symtabs (char *ignore, int from_tty) +{ + struct symbol *sym; + struct partial_symbol **psym; + struct symtab *s = NULL; + struct partial_symtab *ps; + struct blockvector *bv; + struct objfile *objfile; + struct block *b; + int length; + + ALL_PSYMTABS (objfile, ps) + { + struct gdbarch *gdbarch = get_objfile_arch (objfile); + + s = PSYMTAB_TO_SYMTAB (ps); + if (s == NULL) + continue; + bv = BLOCKVECTOR (s); + b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK); + psym = ps->objfile->static_psymbols.list + ps->statics_offset; + length = ps->n_static_syms; + while (length--) + { + sym = lookup_block_symbol (b, SYMBOL_LINKAGE_NAME (*psym), + SYMBOL_DOMAIN (*psym)); + if (!sym) + { + printf_filtered ("Static symbol `"); + puts_filtered (SYMBOL_LINKAGE_NAME (*psym)); + printf_filtered ("' only found in "); + puts_filtered (ps->filename); + printf_filtered (" psymtab\n"); + } + psym++; + } + b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); + psym = ps->objfile->global_psymbols.list + ps->globals_offset; + length = ps->n_global_syms; + while (length--) + { + sym = lookup_block_symbol (b, SYMBOL_LINKAGE_NAME (*psym), + SYMBOL_DOMAIN (*psym)); + if (!sym) + { + printf_filtered ("Global symbol `"); + puts_filtered (SYMBOL_LINKAGE_NAME (*psym)); + printf_filtered ("' only found in "); + puts_filtered (ps->filename); + printf_filtered (" psymtab\n"); + } + psym++; + } + if (ps->texthigh < ps->textlow) + { + printf_filtered ("Psymtab "); + puts_filtered (ps->filename); + printf_filtered (" covers bad range "); + fputs_filtered (paddress (gdbarch, ps->textlow), gdb_stdout); + printf_filtered (" - "); + fputs_filtered (paddress (gdbarch, ps->texthigh), gdb_stdout); + printf_filtered ("\n"); + continue; + } + if (ps->texthigh == 0) + continue; + if (ps->textlow < BLOCK_START (b) || ps->texthigh > BLOCK_END (b)) + { + printf_filtered ("Psymtab "); + puts_filtered (ps->filename); + printf_filtered (" covers "); + fputs_filtered (paddress (gdbarch, ps->textlow), gdb_stdout); + printf_filtered (" - "); + fputs_filtered (paddress (gdbarch, ps->texthigh), gdb_stdout); + printf_filtered (" but symtab covers only "); + fputs_filtered (paddress (gdbarch, BLOCK_START (b)), gdb_stdout); + printf_filtered (" - "); + fputs_filtered (paddress (gdbarch, BLOCK_END (b)), gdb_stdout); + printf_filtered ("\n"); + } + } +} + + + +void +map_partial_symbol_names (void (*fun) (const char *, void *), void *data) +{ + struct objfile *objfile; + + ALL_OBJFILES (objfile) + { + if (objfile->sf) + objfile->sf->qf->map_symbol_names (objfile, fun, data); + } +} + +void +map_partial_symbol_filenames (void (*fun) (const char *, const char *, + void *), + void *data) +{ + struct objfile *objfile; + + ALL_OBJFILES (objfile) + { + if (objfile->sf) + objfile->sf->qf->map_symbol_filenames (objfile, fun, data); + } +} diff --git a/contrib/gdb-7/gdb/cli-out.h b/contrib/gdb-7/gdb/psymtab.h similarity index 63% copy from contrib/gdb-7/gdb/cli-out.h copy to contrib/gdb-7/gdb/psymtab.h index c03a92b273..9b8c8dfc31 100644 --- a/contrib/gdb-7/gdb/cli-out.h +++ b/contrib/gdb-7/gdb/psymtab.h @@ -1,6 +1,6 @@ -/* Output generating routines for GDB CLI. - Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. - Contributed by Cygnus Solutions. +/* Public partial symbol table definitions. + + Copyright (C) 2009 Free Software Foundation, Inc. This file is part of GDB. @@ -17,14 +17,15 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef CLI_OUT_H -#define CLI_OUT_H +#ifndef PSYMTAB_H +#define PSYMTAB_H -struct ui_file; +void map_partial_symbol_names (void (*) (const char *, void *), void *); -extern struct ui_out *cli_out_new (struct ui_file *stream); +void map_partial_symbol_filenames (void (*) (const char *, const char *, + void *), + void *); -extern struct ui_file *cli_out_set_stream (struct ui_out *uiout, - struct ui_file *stream); +extern const struct quick_symbol_functions psym_functions; -#endif +#endif /* PSYMTAB_H */ diff --git a/contrib/gdb-7/gdb/python/py-auto-load.c b/contrib/gdb-7/gdb/python/py-auto-load.c new file mode 100644 index 0000000000..044d968b57 --- /dev/null +++ b/contrib/gdb-7/gdb/python/py-auto-load.c @@ -0,0 +1,497 @@ +/* GDB routines for supporting auto-loaded scripts. + + Copyright (C) 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#include "defs.h" +#include "gdb_string.h" +#include "gdb_regex.h" +#include "top.h" +#include "exceptions.h" +#include "command.h" +#include "gdbcmd.h" +#include "observer.h" +#include "progspace.h" +#include "objfiles.h" +#include "python.h" +#include "cli/cli-cmds.h" + +/* Internal-use flag to enable/disable auto-loading. + This is true if we should auto-load python code when an objfile is opened, + false otherwise. + + Both gdbpy_auto_load && gdbpy_global_auto_load must be true to enable + auto-loading. + + This flag exists to facilitate deferring auto-loading during start-up + until after ./.gdbinit has been read; it may augment the search directories + used to find the scripts. */ +int gdbpy_global_auto_load = 1; + +#ifdef HAVE_PYTHON + +#include "python-internal.h" + +/* NOTE: It's trivial to also support auto-loading normal gdb scripts. + There has yet to be a need so it's not implemented. */ + +/* The suffix of per-objfile scripts to auto-load. + E.g. When the program loads libfoo.so, look for libfoo-gdb.py. */ +#define GDBPY_AUTO_FILE_NAME "-gdb.py" + +/* The section to look for scripts (in file formats that support sections). + Each entry in this section is a byte of value 1, and then the nul-terminated + name of the script. The script name may include a directory. + The leading byte is to allow upward compatible extensions. */ +#define GDBPY_AUTO_SECTION_NAME ".debug_gdb_scripts" + +/* For scripts specified in .debug_gdb_scripts, multiple objfiles may load + the same script. There's no point in loading the script multiple times, + and there can be a lot of objfiles and scripts, so we keep track of scripts + loaded this way. */ + +struct auto_load_pspace_info +{ + /* For each program space we keep track of loaded scripts. */ + struct htab *loaded_scripts; +}; + +/* Objects of this type are stored in the loaded script hash table. */ + +struct loaded_script_entry +{ + /* Name as provided by the objfile. */ + const char *name; + /* Full path name or NULL if script wasn't found (or was otherwise + inaccessible). */ + const char *full_path; +}; + +/* User-settable option to enable/disable auto-loading: + maint set python auto-load on|off + This is true if we should auto-load python code when an objfile is opened, + false otherwise. */ +static int gdbpy_auto_load = 1; + +/* Per-program-space data key. */ +static const struct program_space_data *auto_load_pspace_data; + +static void +auto_load_pspace_data_cleanup (struct program_space *pspace, void *arg) +{ + struct auto_load_pspace_info *info; + + info = program_space_data (pspace, auto_load_pspace_data); + if (info != NULL) + { + if (info->loaded_scripts) + htab_delete (info->loaded_scripts); + xfree (info); + } +} + +/* Get the current autoload data. If none is found yet, add it now. This + function always returns a valid object. */ + +static struct auto_load_pspace_info * +get_auto_load_pspace_data (struct program_space *pspace) +{ + struct auto_load_pspace_info *info; + + info = program_space_data (pspace, auto_load_pspace_data); + if (info == NULL) + { + info = XZALLOC (struct auto_load_pspace_info); + set_program_space_data (pspace, auto_load_pspace_data, info); + } + + return info; +} + +/* Hash function for the loaded script hash. */ + +static hashval_t +hash_loaded_script_entry (const void *data) +{ + const struct loaded_script_entry *e = data; + + return htab_hash_string (e->name); +} + +/* Equality function for the loaded script hash. */ + +static int +eq_loaded_script_entry (const void *a, const void *b) +{ + const struct loaded_script_entry *ea = a; + const struct loaded_script_entry *eb = b; + + return strcmp (ea->name, eb->name) == 0; +} + +/* Create the hash table used for loaded scripts. + Each entry is hashed by the full path name. */ + +static void +create_loaded_scripts_hash (struct auto_load_pspace_info *pspace_info) +{ + /* Choose 31 as the starting size of the hash table, somewhat arbitrarily. + Space for each entry is obtained with one malloc so we can free them + easily. */ + + pspace_info->loaded_scripts = htab_create (31, + hash_loaded_script_entry, + eq_loaded_script_entry, + xfree); +} + +/* Load scripts specified in OBJFILE. + START,END delimit a buffer containing a list of nul-terminated + file names. + SOURCE_NAME is used in error messages. + + Scripts are found per normal "source -s" command processing. + First the script is looked for in $cwd. If not found there the + source search path is used. + + The section contains a list of path names of files containing + python code to load. Each path is null-terminated. */ + +static void +source_section_scripts (struct objfile *objfile, const char *source_name, + const char *start, const char *end) +{ + const char *p; + struct auto_load_pspace_info *pspace_info; + struct loaded_script_entry **slot, entry; + + pspace_info = get_auto_load_pspace_data (current_program_space); + if (pspace_info->loaded_scripts == NULL) + create_loaded_scripts_hash (pspace_info); + + for (p = start; p < end; ++p) + { + const char *file; + FILE *stream; + char *full_path; + int opened, in_hash_table; + + if (*p != 1) + { + warning (_("Invalid entry in %s section"), GDBPY_AUTO_SECTION_NAME); + /* We could try various heuristics to find the next valid entry, + but it's safer to just punt. */ + break; + } + file = ++p; + + while (p < end && *p != '\0') + ++p; + if (p == end) + { + char *buf = alloca (p - file + 1); + + memcpy (buf, file, p - file); + buf[p - file] = '\0'; + warning (_("Non-null-terminated path in %s: %s"), + source_name, buf); + /* Don't load it. */ + break; + } + if (p == file) + { + warning (_("Empty path in %s"), source_name); + continue; + } + + opened = find_and_open_script (file, 1 /*search_path*/, + &stream, &full_path); + + /* If the file is not found, we still record the file in the hash table, + we only want to print an error message once. + IWBN if complaints.c were more general-purpose. */ + + entry.name = file; + if (opened) + entry.full_path = full_path; + else + entry.full_path = NULL; + slot = ((struct loaded_script_entry **) + htab_find_slot (pspace_info->loaded_scripts, + &entry, INSERT)); + in_hash_table = *slot != NULL; + + /* If this file is not in the hash table, add it. */ + if (! in_hash_table) + { + char *p; + + *slot = xmalloc (sizeof (**slot) + + strlen (file) + 1 + + (opened ? (strlen (full_path) + 1) : 0)); + p = ((char*) *slot) + sizeof (**slot); + strcpy (p, file); + (*slot)->name = p; + if (opened) + { + p += strlen (p) + 1; + strcpy (p, full_path); + (*slot)->full_path = p; + } + else + (*slot)->full_path = NULL; + } + + if (opened) + free (full_path); + + if (! opened) + { + /* We don't throw an error, the program is still debuggable. + Check in_hash_table to only print the warning once. */ + if (! in_hash_table) + warning (_("%s (referenced in %s): %s"), + file, GDBPY_AUTO_SECTION_NAME, safe_strerror (errno)); + continue; + } + + /* If this file is not currently loaded, load it. */ + if (! in_hash_table) + source_python_script_for_objfile (objfile, stream, file); + } +} + +/* Load scripts specified in section SECTION_NAME of OBJFILE. */ + +static void +auto_load_section_scripts (struct objfile *objfile, const char *section_name) +{ + bfd *abfd = objfile->obfd; + asection *scripts_sect; + bfd_size_type size; + char *p; + struct cleanup *cleanups; + + scripts_sect = bfd_get_section_by_name (abfd, section_name); + if (scripts_sect == NULL) + return; + + size = bfd_get_section_size (scripts_sect); + p = xmalloc (size); + + cleanups = make_cleanup (xfree, p); + + if (bfd_get_section_contents (abfd, scripts_sect, p, (file_ptr) 0, size)) + source_section_scripts (objfile, section_name, p, p + size); + else + warning (_("Couldn't read %s section of %s"), + section_name, bfd_get_filename (abfd)); + + do_cleanups (cleanups); +} + +/* Clear the table of loaded section scripts. */ + +static void +clear_section_scripts (void) +{ + struct program_space *pspace = current_program_space; + struct auto_load_pspace_info *info; + + info = program_space_data (pspace, auto_load_pspace_data); + if (info != NULL && info->loaded_scripts != NULL) + { + htab_delete (info->loaded_scripts); + info->loaded_scripts = NULL; + } +} + +/* Look for the auto-load script associated with OBJFILE and load it. */ + +static void +auto_load_objfile_script (struct objfile *objfile, const char *suffix) +{ + char *realname; + char *filename, *debugfile; + int len; + FILE *input; + struct cleanup *cleanups; + + realname = gdb_realpath (objfile->name); + len = strlen (realname); + filename = xmalloc (len + strlen (suffix) + 1); + memcpy (filename, realname, len); + strcpy (filename + len, suffix); + + cleanups = make_cleanup (xfree, filename); + make_cleanup (xfree, realname); + + input = fopen (filename, "r"); + debugfile = filename; + + if (!input && debug_file_directory) + { + /* Also try the same file in the separate debug info directory. */ + debugfile = xmalloc (strlen (filename) + + strlen (debug_file_directory) + 1); + strcpy (debugfile, debug_file_directory); + /* FILENAME is absolute, so we don't need a "/" here. */ + strcat (debugfile, filename); + + make_cleanup (xfree, debugfile); + input = fopen (debugfile, "r"); + } + + if (!input && gdb_datadir) + { + /* Also try the same file in a subdirectory of gdb's data + directory. */ + debugfile = xmalloc (strlen (gdb_datadir) + strlen (filename) + + strlen ("/auto-load") + 1); + strcpy (debugfile, gdb_datadir); + strcat (debugfile, "/auto-load"); + /* FILENAME is absolute, so we don't need a "/" here. */ + strcat (debugfile, filename); + + make_cleanup (xfree, debugfile); + input = fopen (debugfile, "r"); + } + + if (input) + { + source_python_script_for_objfile (objfile, input, debugfile); + fclose (input); + } + + do_cleanups (cleanups); +} + +/* This is a new_objfile observer callback to auto-load scripts. + + Two flavors of auto-loaded scripts are supported. + 1) based on the path to the objfile + 2) from .debug_gdb_scripts section */ + +static void +auto_load_new_objfile (struct objfile *objfile) +{ + if (!objfile) + { + /* OBJFILE is NULL when loading a new "main" symbol-file. */ + clear_section_scripts (); + return; + } + if (!objfile->name) + return; + + load_auto_scripts_for_objfile (objfile); +} + +/* Load any auto-loaded scripts for OBJFILE. */ + +void +load_auto_scripts_for_objfile (struct objfile *objfile) +{ + if (gdbpy_auto_load && gdbpy_global_auto_load) + { + auto_load_objfile_script (objfile, GDBPY_AUTO_FILE_NAME); + auto_load_section_scripts (objfile, GDBPY_AUTO_SECTION_NAME); + } +} + +/* Traversal function for htab_traverse. + Print the entry if specified in the regex. */ + +static int +maybe_print_section_script (void **slot, void *info) +{ + struct loaded_script_entry *entry = *slot; + + if (re_exec (entry->name)) + { + printf_filtered (_("Script name: %s\n"), entry->name); + printf_filtered (_(" Full name: %s\n"), + entry->full_path ? entry->full_path : _("unknown")); + } + + return 1; +} + +/* "maint print section-scripts" command. */ + +static void +maintenance_print_section_scripts (char *pattern, int from_tty) +{ + struct auto_load_pspace_info *pspace_info; + + dont_repeat (); + + if (pattern && *pattern) + { + char *re_err = re_comp (pattern); + + if (re_err) + error (_("Invalid regexp: %s"), re_err); + + printf_filtered (_("Objfile scripts matching %s:\n"), pattern); + } + else + { + re_comp (""); + printf_filtered (_("Objfile scripts:\n")); + } + + pspace_info = get_auto_load_pspace_data (current_program_space); + if (pspace_info == NULL || pspace_info->loaded_scripts == NULL) + return; + + immediate_quit++; + htab_traverse_noresize (pspace_info->loaded_scripts, + maybe_print_section_script, NULL); + immediate_quit--; +} + +void +gdbpy_initialize_auto_load (void) +{ + auto_load_pspace_data + = register_program_space_data_with_cleanup (auto_load_pspace_data_cleanup); + + observer_attach_new_objfile (auto_load_new_objfile); + + add_setshow_boolean_cmd ("auto-load", class_maintenance, + &gdbpy_auto_load, _("\ +Enable or disable auto-loading of Python code when an object is opened."), _("\ +Show whether Python code will be auto-loaded when an object is opened."), _("\ +Enables or disables auto-loading of Python code when an object is opened."), + NULL, NULL, + &set_python_list, + &show_python_list); + + add_cmd ("section-scripts", class_maintenance, maintenance_print_section_scripts, + _("Print dump of auto-loaded section scripts matching REGEXP."), + &maintenanceprintlist); +} + +#else /* ! HAVE_PYTHON */ + +void +load_auto_scripts_for_objfile (struct objfile *objfile) +{ +} + +#endif /* ! HAVE_PYTHON */ diff --git a/contrib/gdb-7/gdb/python/py-cmd.c b/contrib/gdb-7/gdb/python/py-cmd.c deleted file mode 100644 index 528aca6ffd..0000000000 --- a/contrib/gdb-7/gdb/python/py-cmd.c +++ /dev/null @@ -1,585 +0,0 @@ -/* gdb commands implemented in Python - - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - - -#include "defs.h" -#include "arch-utils.h" -#include "value.h" -#include "exceptions.h" -#include "python-internal.h" -#include "charset.h" -#include "gdbcmd.h" -#include "cli/cli-decode.h" -#include "completer.h" -#include "language.h" - -/* Struct representing built-in completion types. */ -struct cmdpy_completer -{ - /* Python symbol name. */ - char *name; - /* Completion function. */ - char **(*completer) (struct cmd_list_element *, char *, char *); -}; - -static struct cmdpy_completer completers[] = -{ - { "COMPLETE_NONE", noop_completer }, - { "COMPLETE_FILENAME", filename_completer }, - { "COMPLETE_LOCATION", location_completer }, - { "COMPLETE_COMMAND", command_completer }, - { "COMPLETE_SYMBOL", make_symbol_completion_list_fn }, -}; - -#define N_COMPLETERS (sizeof (completers) / sizeof (completers[0])) - -/* A gdb command. For the time being only ordinary commands (not - set/show commands) are allowed. */ -struct cmdpy_object -{ - PyObject_HEAD - - /* The corresponding gdb command object, or NULL if the command is - no longer installed. */ - struct cmd_list_element *command; - - /* A prefix command requires storage for a list of its sub-commands. - A pointer to this is passed to add_prefix_command, and to add_cmd - for sub-commands of that prefix. If this Command is not a prefix - command, then this field is unused. */ - struct cmd_list_element *sub_list; -}; - -typedef struct cmdpy_object cmdpy_object; - -static PyTypeObject cmdpy_object_type; - - -/* Constants used by this module. */ -static PyObject *invoke_cst; -static PyObject *complete_cst; - - - -/* Python function which wraps dont_repeat. */ -static PyObject * -cmdpy_dont_repeat (PyObject *self, PyObject *args) -{ - dont_repeat (); - Py_RETURN_NONE; -} - - - -/* Called if the gdb cmd_list_element is destroyed. */ -static void -cmdpy_destroyer (struct cmd_list_element *self, void *context) -{ - cmdpy_object *cmd; - struct cleanup *cleanup; - - cleanup = ensure_python_env (get_current_arch (), current_language); - - /* Release our hold on the command object. */ - cmd = (cmdpy_object *) context; - cmd->command = NULL; - Py_DECREF (cmd); - - /* We allocated the name, doc string, and perhaps the prefix - name. */ - xfree (self->name); - xfree (self->doc); - xfree (self->prefixname); - - do_cleanups (cleanup); -} - -/* Called by gdb to invoke the command. */ -static void -cmdpy_function (struct cmd_list_element *command, char *args, int from_tty) -{ - cmdpy_object *obj = (cmdpy_object *) get_cmd_context (command); - PyObject *argobj, *ttyobj, *result; - struct cleanup *cleanup; - - cleanup = ensure_python_env (get_current_arch (), current_language); - - if (! obj) - error (_("Invalid invocation of Python command object.")); - if (! PyObject_HasAttr ((PyObject *) obj, invoke_cst)) - { - if (obj->command->prefixname) - { - /* A prefix command does not need an invoke method. */ - do_cleanups (cleanup); - return; - } - error (_("Python command object missing 'invoke' method.")); - } - - if (! args) - args = ""; - argobj = PyUnicode_Decode (args, strlen (args), host_charset (), NULL); - if (! argobj) - error (_("Could not convert arguments to Python string.")); - - ttyobj = from_tty ? Py_True : Py_False; - Py_INCREF (ttyobj); - result = PyObject_CallMethodObjArgs ((PyObject *) obj, invoke_cst, argobj, - ttyobj, NULL); - Py_DECREF (argobj); - Py_DECREF (ttyobj); - if (! result) - { - PyObject *ptype, *pvalue, *ptraceback; - char *s, *str; - - PyErr_Fetch (&ptype, &pvalue, &ptraceback); - - if (pvalue && PyString_Check (pvalue)) - { - /* Make a temporary copy of the string data. */ - char *s = PyString_AsString (pvalue); - char *copy = alloca (strlen (s) + 1); - strcpy (copy, s); - - PyErr_Restore (ptype, pvalue, ptraceback); - gdbpy_print_stack (); - error (_("Error occurred in Python command: %s"), copy); - } - else - { - PyErr_Restore (ptype, pvalue, ptraceback); - gdbpy_print_stack (); - error (_("Error occurred in Python command.")); - } - } - Py_DECREF (result); - do_cleanups (cleanup); -} - -/* Called by gdb for command completion. */ -static char ** -cmdpy_completer (struct cmd_list_element *command, char *text, char *word) -{ - cmdpy_object *obj = (cmdpy_object *) get_cmd_context (command); - PyObject *textobj, *wordobj, *resultobj = NULL; - char **result = NULL; - struct cleanup *cleanup; - - cleanup = ensure_python_env (get_current_arch (), current_language); - - if (! obj) - error (_("Invalid invocation of Python command object.")); - if (! PyObject_HasAttr ((PyObject *) obj, complete_cst)) - { - /* If there is no complete method, don't error -- instead, just - say that there are no completions. */ - goto done; - } - - textobj = PyUnicode_Decode (text, strlen (text), host_charset (), NULL); - if (! textobj) - error (_("Could not convert argument to Python string.")); - wordobj = PyUnicode_Decode (word, strlen (word), host_charset (), NULL); - if (! wordobj) - error (_("Could not convert argument to Python string.")); - - resultobj = PyObject_CallMethodObjArgs ((PyObject *) obj, complete_cst, - textobj, wordobj, NULL); - Py_DECREF (textobj); - Py_DECREF (wordobj); - if (! resultobj) - { - /* Just swallow errors here. */ - PyErr_Clear (); - goto done; - } - make_cleanup_py_decref (resultobj); - - result = NULL; - if (PySequence_Check (resultobj)) - { - Py_ssize_t i, len = PySequence_Size (resultobj); - Py_ssize_t out; - if (len < 0) - goto done; - - result = (char **) xmalloc ((len + 1) * sizeof (char *)); - for (i = out = 0; i < len; ++i) - { - int l; - PyObject *elt = PySequence_GetItem (resultobj, i); - if (elt == NULL || ! gdbpy_is_string (elt)) - { - /* Skip problem elements. */ - PyErr_Clear (); - continue; - } - result[out] = python_string_to_host_string (elt); - ++out; - } - result[out] = NULL; - } - else if (PyInt_Check (resultobj)) - { - /* User code may also return one of the completion constants, - thus requesting that sort of completion. */ - long value = PyInt_AsLong (resultobj); - if (value >= 0 && value < (long) N_COMPLETERS) - result = completers[value].completer (command, text, word); - } - - done: - - do_cleanups (cleanup); - - return result; -} - -/* Helper for cmdpy_init which locates the command list to use and - pulls out the command name. - - TEXT is the command name list. The final word in the list is the - name of the new command. All earlier words must be existing prefix - commands. - - *BASE_LIST is set to the final prefix command's list of - *sub-commands. - - This function returns the xmalloc()d name of the new command. On - error sets the Python error and returns NULL. */ -static char * -parse_command_name (char *text, struct cmd_list_element ***base_list) -{ - struct cmd_list_element *elt; - int len = strlen (text); - int i, lastchar; - char *prefix_text; - char *result; - - /* Skip trailing whitespace. */ - for (i = len - 1; i >= 0 && (text[i] == ' ' || text[i] == '\t'); --i) - ; - if (i < 0) - { - PyErr_SetString (PyExc_RuntimeError, _("no command name found")); - return NULL; - } - lastchar = i; - - /* Find first character of the final word. */ - for (; i > 0 && (isalnum (text[i - 1]) - || text[i - 1] == '-' - || text[i - 1] == '_'); - --i) - ; - result = xmalloc (lastchar - i + 2); - memcpy (result, &text[i], lastchar - i + 1); - result[lastchar - i + 1] = '\0'; - - /* Skip whitespace again. */ - for (--i; i >= 0 && (text[i] == ' ' || text[i] == '\t'); --i) - ; - if (i < 0) - { - *base_list = &cmdlist; - return result; - } - - prefix_text = xmalloc (i + 2); - memcpy (prefix_text, text, i + 1); - prefix_text[i + 1] = '\0'; - - text = prefix_text; - elt = lookup_cmd_1 (&text, cmdlist, NULL, 1); - if (!elt || elt == (struct cmd_list_element *) -1) - { - PyErr_Format (PyExc_RuntimeError, _("could not find command prefix %s"), - prefix_text); - xfree (prefix_text); - xfree (result); - return NULL; - } - - if (elt->prefixlist) - { - xfree (prefix_text); - *base_list = elt->prefixlist; - return result; - } - - PyErr_Format (PyExc_RuntimeError, _("'%s' is not a prefix command"), - prefix_text); - xfree (prefix_text); - xfree (result); - return NULL; -} - -/* Object initializer; sets up gdb-side structures for command. - - Use: __init__(NAME, COMMAND_CLASS [, COMPLETER_CLASS][, PREFIX]]). - - NAME is the name of the command. It may consist of multiple words, - in which case the final word is the name of the new command, and - earlier words must be prefix commands. - - COMMAND_CLASS is the kind of command. It should be one of the COMMAND_* - constants defined in the gdb module. - - COMPLETER_CLASS is the kind of completer. If not given, the - "complete" method will be used. Otherwise, it should be one of the - COMPLETE_* constants defined in the gdb module. - - If PREFIX is True, then this command is a prefix command. - - The documentation for the command is taken from the doc string for - the python class. - -*/ -static int -cmdpy_init (PyObject *self, PyObject *args, PyObject *kw) -{ - cmdpy_object *obj = (cmdpy_object *) self; - char *name; - int cmdtype; - int completetype = -1; - char *docstring = NULL; - volatile struct gdb_exception except; - struct cmd_list_element **cmd_list; - char *cmd_name, *pfx_name; - static char *keywords[] = { "name", "command_class", "completer_class", - "prefix", NULL }; - PyObject *is_prefix = NULL; - int cmp; - - if (obj->command) - { - /* Note: this is apparently not documented in Python. We return - 0 for success, -1 for failure. */ - PyErr_Format (PyExc_RuntimeError, - _("command object already initialized")); - return -1; - } - - if (! PyArg_ParseTupleAndKeywords (args, kw, "si|iO", keywords, &name, &cmdtype, - &completetype, &is_prefix)) - return -1; - - if (cmdtype != no_class && cmdtype != class_run - && cmdtype != class_vars && cmdtype != class_stack - && cmdtype != class_files && cmdtype != class_support - && cmdtype != class_info && cmdtype != class_breakpoint - && cmdtype != class_trace && cmdtype != class_obscure - && cmdtype != class_maintenance) - { - PyErr_Format (PyExc_RuntimeError, _("invalid command class argument")); - return -1; - } - - if (completetype < -1 || completetype >= (int) N_COMPLETERS) - { - PyErr_Format (PyExc_RuntimeError, _("invalid completion type argument")); - return -1; - } - - cmd_name = parse_command_name (name, &cmd_list); - if (! cmd_name) - return -1; - - pfx_name = NULL; - if (is_prefix != NULL) - { - cmp = PyObject_IsTrue (is_prefix); - if (cmp == 1) - { - int i, out; - - /* Make a normalized form of the command name. */ - pfx_name = xmalloc (strlen (name) + 2); - - i = 0; - out = 0; - while (name[i]) - { - /* Skip whitespace. */ - while (name[i] == ' ' || name[i] == '\t') - ++i; - /* Copy non-whitespace characters. */ - while (name[i] && name[i] != ' ' && name[i] != '\t') - pfx_name[out++] = name[i++]; - /* Add a single space after each word -- including the final - word. */ - pfx_name[out++] = ' '; - } - pfx_name[out] = '\0'; - } - else if (cmp < 0) - return -1; - } - if (PyObject_HasAttr (self, gdbpy_doc_cst)) - { - PyObject *ds_obj = PyObject_GetAttr (self, gdbpy_doc_cst); - if (ds_obj && gdbpy_is_string (ds_obj)) - docstring = python_string_to_host_string (ds_obj); - } - if (! docstring) - docstring = xstrdup (_("This command is not documented.")); - - Py_INCREF (self); - - TRY_CATCH (except, RETURN_MASK_ALL) - { - struct cmd_list_element *cmd; - - if (pfx_name) - { - int allow_unknown; - - /* If we have our own "invoke" method, then allow unknown - sub-commands. */ - allow_unknown = PyObject_HasAttr (self, invoke_cst); - cmd = add_prefix_cmd (cmd_name, (enum command_class) cmdtype, - NULL, docstring, &obj->sub_list, - pfx_name, allow_unknown, cmd_list); - } - else - cmd = add_cmd (cmd_name, (enum command_class) cmdtype, NULL, - docstring, cmd_list); - - /* There appears to be no API to set this. */ - cmd->func = cmdpy_function; - cmd->destroyer = cmdpy_destroyer; - - obj->command = cmd; - set_cmd_context (cmd, self); - set_cmd_completer (cmd, ((completetype == -1) ? cmdpy_completer - : completers[completetype].completer)); - } - if (except.reason < 0) - { - xfree (cmd_name); - xfree (docstring); - xfree (pfx_name); - Py_DECREF (self); - PyErr_Format (except.reason == RETURN_QUIT - ? PyExc_KeyboardInterrupt : PyExc_RuntimeError, - "%s", except.message); - return -1; - } - return 0; -} - - - -/* Initialize the 'commands' code. */ -void -gdbpy_initialize_commands (void) -{ - int i; - - if (PyType_Ready (&cmdpy_object_type) < 0) - return; - - /* Note: alias and user are special; pseudo appears to be unused, - and there is no reason to expose tui or xdb, I think. */ - if (PyModule_AddIntConstant (gdb_module, "COMMAND_NONE", no_class) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_RUNNING", class_run) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_DATA", class_vars) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_STACK", class_stack) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_FILES", class_files) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_SUPPORT", - class_support) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_STATUS", class_info) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_BREAKPOINTS", - class_breakpoint) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_TRACEPOINTS", - class_trace) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_OBSCURE", - class_obscure) < 0 - || PyModule_AddIntConstant (gdb_module, "COMMAND_MAINTENANCE", - class_maintenance) < 0) - return; - - for (i = 0; i < N_COMPLETERS; ++i) - { - if (PyModule_AddIntConstant (gdb_module, completers[i].name, i) < 0) - return; - } - - Py_INCREF (&cmdpy_object_type); - PyModule_AddObject (gdb_module, "Command", - (PyObject *) &cmdpy_object_type); - - invoke_cst = PyString_FromString ("invoke"); - complete_cst = PyString_FromString ("complete"); -} - - - -static PyMethodDef cmdpy_object_methods[] = -{ - { "dont_repeat", cmdpy_dont_repeat, METH_NOARGS, - "Prevent command repetition when user enters empty line." }, - - { 0 } -}; - -static PyTypeObject cmdpy_object_type = -{ - PyObject_HEAD_INIT (NULL) - 0, /*ob_size*/ - "gdb.Command", /*tp_name*/ - sizeof (cmdpy_object), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - 0, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "GDB command object", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - cmdpy_object_methods, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - cmdpy_init, /* tp_init */ - 0, /* tp_alloc */ - PyType_GenericNew /* tp_new */ -}; diff --git a/contrib/gdb-7/gdb/python/py-frame.c b/contrib/gdb-7/gdb/python/py-frame.c deleted file mode 100644 index 279415c6ee..0000000000 --- a/contrib/gdb-7/gdb/python/py-frame.c +++ /dev/null @@ -1,539 +0,0 @@ -/* Python interface to stack frames - - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - -#include "defs.h" -#include "charset.h" -#include "block.h" -#include "frame.h" -#include "exceptions.h" -#include "symtab.h" -#include "stack.h" -#include "value.h" -#include "python-internal.h" - -typedef struct { - PyObject_HEAD - struct frame_id frame_id; - struct gdbarch *gdbarch; - - /* Marks that the FRAME_ID member actually holds the ID of the frame next - to this, and not this frames' ID itself. This is a hack to permit Python - frame objects which represent invalid frames (i.e., the last frame_info - in a corrupt stack). The problem arises from the fact that this code - relies on FRAME_ID to uniquely identify a frame, which is not always true - for the last "frame" in a corrupt stack (it can have a null ID, or the same - ID as the previous frame). Whenever get_prev_frame returns NULL, we - record the frame_id of the next frame and set FRAME_ID_IS_NEXT to 1. */ - int frame_id_is_next; -} frame_object; - -/* Require a valid frame. This must be called inside a TRY_CATCH, or - another context in which a gdb exception is allowed. */ -#define FRAPY_REQUIRE_VALID(frame_obj, frame) \ - do { \ - frame = frame_object_to_frame_info (frame_obj); \ - if (frame == NULL) \ - error ("Frame is invalid."); \ - } while (0) - -static PyTypeObject frame_object_type; - -/* Returns the frame_info object corresponding to the given Python Frame - object. If the frame doesn't exist anymore (the frame id doesn't - correspond to any frame in the inferior), returns NULL. */ - -static struct frame_info * -frame_object_to_frame_info (frame_object *frame_obj) -{ - struct frame_info *frame; - - frame = frame_find_by_id (frame_obj->frame_id); - if (frame == NULL) - return NULL; - - if (frame_obj->frame_id_is_next) - frame = get_prev_frame (frame); - - return frame; -} - -/* Called by the Python interpreter to obtain string representation - of the object. */ - -static PyObject * -frapy_str (PyObject *self) -{ - char *s; - PyObject *result; - struct ui_file *strfile; - - strfile = mem_fileopen (); - fprint_frame_id (strfile, ((frame_object *) self)->frame_id); - s = ui_file_xstrdup (strfile, NULL); - result = PyString_FromString (s); - xfree (s); - - return result; -} - -/* Implementation of gdb.Frame.is_valid (self) -> Boolean. - Returns True if the frame corresponding to the frame_id of this - object still exists in the inferior. */ - -static PyObject * -frapy_is_valid (PyObject *self, PyObject *args) -{ - struct frame_info *frame; - - frame = frame_object_to_frame_info ((frame_object *) self); - if (frame == NULL) - Py_RETURN_FALSE; - - Py_RETURN_TRUE; -} - -/* Implementation of gdb.Frame.name (self) -> String. - Returns the name of the function corresponding to this frame. */ - -static PyObject * -frapy_name (PyObject *self, PyObject *args) -{ - struct frame_info *frame; - char *name; - enum language lang; - PyObject *result; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - - find_frame_funname (frame, &name, &lang); - } - GDB_PY_HANDLE_EXCEPTION (except); - - if (name) - result = PyUnicode_Decode (name, strlen (name), host_charset (), NULL); - else - { - result = Py_None; - Py_INCREF (Py_None); - } - - return result; -} - -/* Implementation of gdb.Frame.type (self) -> Integer. - Returns the frame type, namely one of the gdb.*_FRAME constants. */ - -static PyObject * -frapy_type (PyObject *self, PyObject *args) -{ - struct frame_info *frame; - enum frame_type type = NORMAL_FRAME;/* Initialize to appease gcc warning. */ - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - - type = get_frame_type (frame); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return PyInt_FromLong (type); -} - -/* Implementation of gdb.Frame.unwind_stop_reason (self) -> Integer. - Returns one of the gdb.FRAME_UNWIND_* constants. */ - -static PyObject * -frapy_unwind_stop_reason (PyObject *self, PyObject *args) -{ - struct frame_info *frame = NULL; /* Initialize to appease gcc warning. */ - volatile struct gdb_exception except; - enum unwind_stop_reason stop_reason; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - } - GDB_PY_HANDLE_EXCEPTION (except); - - stop_reason = get_frame_unwind_stop_reason (frame); - - return PyInt_FromLong (stop_reason); -} - -/* Implementation of gdb.Frame.pc (self) -> Long. - Returns the frame's resume address. */ - -static PyObject * -frapy_pc (PyObject *self, PyObject *args) -{ - CORE_ADDR pc = 0; /* Initialize to appease gcc warning. */ - struct frame_info *frame; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - - pc = get_frame_pc (frame); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return PyLong_FromUnsignedLongLong (pc); -} - -/* Convert a frame_info struct to a Python Frame object. - Sets a Python exception and returns NULL on error. */ - -static frame_object * -frame_info_to_frame_object (struct frame_info *frame) -{ - frame_object *frame_obj; - - frame_obj = PyObject_New (frame_object, &frame_object_type); - if (frame_obj == NULL) - { - PyErr_SetString (PyExc_MemoryError, "Could not allocate frame object."); - return NULL; - } - - /* Try to get the previous frame, to determine if this is the last frame - in a corrupt stack. If so, we need to store the frame_id of the next - frame and not of this one (which is possibly invalid). */ - if (get_prev_frame (frame) == NULL - && get_frame_unwind_stop_reason (frame) != UNWIND_NO_REASON - && get_next_frame (frame) != NULL) - { - frame_obj->frame_id = get_frame_id (get_next_frame (frame)); - frame_obj->frame_id_is_next = 1; - } - else - { - frame_obj->frame_id = get_frame_id (frame); - frame_obj->frame_id_is_next = 0; - } - - frame_obj->gdbarch = get_frame_arch (frame); - - return frame_obj; -} - -/* Implementation of gdb.Frame.older (self) -> gdb.Frame. - Returns the frame immediately older (outer) to this frame, or None if - there isn't one. */ - -static PyObject * -frapy_older (PyObject *self, PyObject *args) -{ - struct frame_info *frame, *prev; - volatile struct gdb_exception except; - PyObject *prev_obj = NULL; /* Initialize to appease gcc warning. */ - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - - prev = get_prev_frame (frame); - if (prev) - prev_obj = (PyObject *) frame_info_to_frame_object (prev); - else - { - Py_INCREF (Py_None); - prev_obj = Py_None; - } - } - GDB_PY_HANDLE_EXCEPTION (except); - - return prev_obj; -} - -/* Implementation of gdb.Frame.newer (self) -> gdb.Frame. - Returns the frame immediately newer (inner) to this frame, or None if - there isn't one. */ - -static PyObject * -frapy_newer (PyObject *self, PyObject *args) -{ - struct frame_info *frame, *next; - volatile struct gdb_exception except; - PyObject *next_obj = NULL; /* Initialize to appease gcc warning. */ - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - - next = get_next_frame (frame); - if (next) - next_obj = (PyObject *) frame_info_to_frame_object (next); - else - { - Py_INCREF (Py_None); - next_obj = Py_None; - } - } - GDB_PY_HANDLE_EXCEPTION (except); - - return next_obj; -} - -/* Implementation of gdb.Frame.read_var_value (self, variable) -> gdb.Value. - Returns the value of the given variable in this frame. The argument must be - a string. Returns None if GDB can't find the specified variable. */ - -static PyObject * -frapy_read_var (PyObject *self, PyObject *args) -{ - struct frame_info *frame; - PyObject *sym_obj; - struct symbol *var = NULL; /* gcc-4.3.2 false warning. */ - struct value *val = NULL; - volatile struct gdb_exception except; - - if (!PyArg_ParseTuple (args, "O", &sym_obj)) - return NULL; - - if (gdbpy_is_string (sym_obj)) - { - char *var_name; - struct block *block = NULL; - struct cleanup *cleanup; - volatile struct gdb_exception except; - - var_name = python_string_to_target_string (sym_obj); - if (!var_name) - return NULL; - cleanup = make_cleanup (xfree, var_name); - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - - block = block_for_pc (get_frame_address_in_block (frame)); - var = lookup_symbol (var_name, block, VAR_DOMAIN, NULL); - } - GDB_PY_HANDLE_EXCEPTION (except); - - if (!var) - { - PyErr_Format (PyExc_ValueError, - _("variable '%s' not found"), var_name); - do_cleanups (cleanup); - - return NULL; - } - - do_cleanups (cleanup); - } - else - { - PyErr_SetString (PyExc_TypeError, - _("argument must be a symbol or string")); - return NULL; - } - - TRY_CATCH (except, RETURN_MASK_ALL) - { - FRAPY_REQUIRE_VALID ((frame_object *) self, frame); - - val = read_var_value (var, frame); - } - GDB_PY_HANDLE_EXCEPTION (except); - - if (val) - return value_to_value_object (val); - - Py_RETURN_NONE; -} - -/* Implementation of gdb.selected_frame () -> gdb.Frame. - Returns the selected frame object. */ - -PyObject * -gdbpy_selected_frame (PyObject *self, PyObject *args) -{ - struct frame_info *frame; - frame_object *frame_obj = NULL; /* Initialize to appease gcc warning. */ - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - frame = get_selected_frame ("No frame is currently selected."); - frame_obj = frame_info_to_frame_object (frame); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return (PyObject *) frame_obj; -} - -/* Implementation of gdb.stop_reason_string (Integer) -> String. - Return a string explaining the unwind stop reason. */ - -PyObject * -gdbpy_frame_stop_reason_string (PyObject *self, PyObject *args) -{ - int reason; - const char *str; - - if (!PyArg_ParseTuple (args, "i", &reason)) - return NULL; - - if (reason < 0 || reason > UNWIND_NO_SAVED_PC) - { - PyErr_SetString (PyExc_ValueError, "Invalid frame stop reason."); - return NULL; - } - - str = frame_stop_reason_string (reason); - return PyUnicode_Decode (str, strlen (str), host_charset (), NULL); -} - -/* Implements the equality comparison for Frame objects. - All other comparison operators will throw a TypeError Python exception, - as they aren't valid for frames. */ - -static PyObject * -frapy_richcompare (PyObject *self, PyObject *other, int op) -{ - int result; - - if (!PyObject_TypeCheck (other, &frame_object_type) - || (op != Py_EQ && op != Py_NE)) - { - Py_INCREF (Py_NotImplemented); - return Py_NotImplemented; - } - - if (frame_id_eq (((frame_object *) self)->frame_id, - ((frame_object *) other)->frame_id)) - result = Py_EQ; - else - result = Py_NE; - - if (op == result) - Py_RETURN_TRUE; - Py_RETURN_FALSE; -} - -/* Sets up the Frame API in the gdb module. */ - -void -gdbpy_initialize_frames (void) -{ - if (PyType_Ready (&frame_object_type) < 0) - return; - - /* Note: These would probably be best exposed as class attributes of Frame, - but I don't know how to do it except by messing with the type's dictionary. - That seems too messy. */ - PyModule_AddIntConstant (gdb_module, "NORMAL_FRAME", NORMAL_FRAME); - PyModule_AddIntConstant (gdb_module, "DUMMY_FRAME", DUMMY_FRAME); - PyModule_AddIntConstant (gdb_module, "SIGTRAMP_FRAME", SIGTRAMP_FRAME); - PyModule_AddIntConstant (gdb_module, "SENTINEL_FRAME", SENTINEL_FRAME); - PyModule_AddIntConstant (gdb_module, - "FRAME_UNWIND_NO_REASON", UNWIND_NO_REASON); - PyModule_AddIntConstant (gdb_module, - "FRAME_UNWIND_NULL_ID", UNWIND_NULL_ID); - PyModule_AddIntConstant (gdb_module, - "FRAME_UNWIND_FIRST_ERROR", UNWIND_FIRST_ERROR); - PyModule_AddIntConstant (gdb_module, - "FRAME_UNWIND_INNER_ID", UNWIND_INNER_ID); - PyModule_AddIntConstant (gdb_module, - "FRAME_UNWIND_SAME_ID", UNWIND_SAME_ID); - PyModule_AddIntConstant (gdb_module, - "FRAME_UNWIND_NO_SAVED_PC", UNWIND_NO_SAVED_PC); - - Py_INCREF (&frame_object_type); - PyModule_AddObject (gdb_module, "Frame", (PyObject *) &frame_object_type); -} - - - -static PyMethodDef frame_object_methods[] = { - { "is_valid", frapy_is_valid, METH_NOARGS, - "is_valid () -> Boolean.\n\ -Return true if this frame is valid, false if not." }, - { "name", frapy_name, METH_NOARGS, - "name () -> String.\n\ -Return the function name of the frame, or None if it can't be determined." }, - { "type", frapy_type, METH_NOARGS, - "type () -> Integer.\n\ -Return the type of the frame." }, - { "unwind_stop_reason", frapy_unwind_stop_reason, METH_NOARGS, - "unwind_stop_reason () -> Integer.\n\ -Return the reason why it's not possible to find frames older than this." }, - { "pc", frapy_pc, METH_NOARGS, - "pc () -> Long.\n\ -Return the frame's resume address." }, - { "older", frapy_older, METH_NOARGS, - "older () -> gdb.Frame.\n\ -Return the frame that called this frame." }, - { "newer", frapy_newer, METH_NOARGS, - "newer () -> gdb.Frame.\n\ -Return the frame called by this frame." }, - { "read_var", frapy_read_var, METH_VARARGS, - "read_var (variable) -> gdb.Value.\n\ -Return the value of the variable in this frame." }, - {NULL} /* Sentinel */ -}; - -static PyTypeObject frame_object_type = { - PyObject_HEAD_INIT (NULL) - 0, /* ob_size */ - "gdb.Frame", /* tp_name */ - sizeof (frame_object), /* tp_basicsize */ - 0, /* tp_itemsize */ - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - frapy_str, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - "GDB frame object", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - frapy_richcompare, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - frame_object_methods, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - PyType_GenericNew /* tp_new */ -}; diff --git a/contrib/gdb-7/gdb/python/py-function.c b/contrib/gdb-7/gdb/python/py-function.c deleted file mode 100644 index 58fb367e1d..0000000000 --- a/contrib/gdb-7/gdb/python/py-function.c +++ /dev/null @@ -1,179 +0,0 @@ -/* Convenience functions implemented in Python. - - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - - -#include "defs.h" -#include "value.h" -#include "exceptions.h" -#include "python-internal.h" -#include "charset.h" -#include "gdbcmd.h" -#include "cli/cli-decode.h" -#include "completer.h" -#include "expression.h" -#include "language.h" - -static PyTypeObject fnpy_object_type; - - - -static PyObject * -convert_values_to_python (int argc, struct value **argv) -{ - int i; - PyObject *result = PyTuple_New (argc); - for (i = 0; i < argc; ++i) - { - PyObject *elt = value_to_value_object (argv[i]); - if (! elt) - { - Py_DECREF (result); - error (_("Could not convert value to Python object.")); - } - PyTuple_SetItem (result, i, elt); - } - return result; -} - -/* Call a Python function object's invoke method. */ - -static struct value * -fnpy_call (struct gdbarch *gdbarch, const struct language_defn *language, - void *cookie, int argc, struct value **argv) -{ - int i; - struct value *value = NULL; - PyObject *result, *callable, *args; - struct cleanup *cleanup; - - cleanup = ensure_python_env (gdbarch, language); - - args = convert_values_to_python (argc, argv); - - callable = PyObject_GetAttrString ((PyObject *) cookie, "invoke"); - if (! callable) - { - Py_DECREF (args); - error (_("No method named 'invoke' in object.")); - } - - result = PyObject_Call (callable, args, NULL); - Py_DECREF (callable); - Py_DECREF (args); - - if (!result) - { - gdbpy_print_stack (); - error (_("Error while executing Python code.")); - } - - value = convert_value_from_python (result); - if (value == NULL) - { - Py_DECREF (result); - gdbpy_print_stack (); - error (_("Error while executing Python code.")); - } - - Py_DECREF (result); - do_cleanups (cleanup); - - return value; -} - -/* Initializer for a Function object. It takes one argument, the name - of the function. */ - -static int -fnpy_init (PyObject *self, PyObject *args, PyObject *kwds) -{ - char *name, *docstring = NULL; - if (! PyArg_ParseTuple (args, "s", &name)) - return -1; - Py_INCREF (self); - - if (PyObject_HasAttrString (self, "__doc__")) - { - PyObject *ds_obj = PyObject_GetAttrString (self, "__doc__"); - if (ds_obj && gdbpy_is_string (ds_obj)) - docstring = python_string_to_host_string (ds_obj); - } - if (! docstring) - docstring = xstrdup (_("This function is not documented.")); - - add_internal_function (name, docstring, fnpy_call, self); - return 0; -} - -/* Initialize internal function support. */ - -void -gdbpy_initialize_functions (void) -{ - if (PyType_Ready (&fnpy_object_type) < 0) - return; - - Py_INCREF (&fnpy_object_type); - PyModule_AddObject (gdb_module, "Function", (PyObject *) &fnpy_object_type); -} - - - -static PyTypeObject fnpy_object_type = -{ - PyObject_HEAD_INIT (NULL) - 0, /*ob_size*/ - "gdb.Function", /*tp_name*/ - sizeof (PyObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - 0, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "GDB function object", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - fnpy_init, /* tp_init */ - 0, /* tp_alloc */ - PyType_GenericNew /* tp_new */ -}; diff --git a/contrib/gdb-7/gdb/python/py-objfile.c b/contrib/gdb-7/gdb/python/py-objfile.c deleted file mode 100644 index a06a865f7b..0000000000 --- a/contrib/gdb-7/gdb/python/py-objfile.c +++ /dev/null @@ -1,230 +0,0 @@ -/* Python interface to objfiles. - - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - -#include "defs.h" -#include "python-internal.h" -#include "charset.h" -#include "objfiles.h" -#include "language.h" - -typedef struct -{ - PyObject_HEAD - - /* The corresponding objfile. */ - struct objfile *objfile; - - /* The pretty-printer list of functions. */ - PyObject *printers; -} objfile_object; - -static PyTypeObject objfile_object_type; - -static const struct objfile_data *objfpy_objfile_data_key; - - - -/* An Objfile method which returns the objfile's file name, or None. */ -static PyObject * -objfpy_get_filename (PyObject *self, void *closure) -{ - objfile_object *obj = (objfile_object *) self; - if (obj->objfile && obj->objfile->name) - return PyString_Decode (obj->objfile->name, strlen (obj->objfile->name), - host_charset (), NULL); - Py_RETURN_NONE; -} - -static void -objfpy_dealloc (PyObject *o) -{ - objfile_object *self = (objfile_object *) o; - Py_XDECREF (self->printers); - self->ob_type->tp_free ((PyObject *) self); -} - -static PyObject * -objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords) -{ - objfile_object *self = (objfile_object *) type->tp_alloc (type, 0); - if (self) - { - self->objfile = NULL; - - self->printers = PyList_New (0); - if (!self->printers) - { - Py_DECREF (self); - return NULL; - } - } - return (PyObject *) self; -} - -PyObject * -objfpy_get_printers (PyObject *o, void *ignore) -{ - objfile_object *self = (objfile_object *) o; - Py_INCREF (self->printers); - return self->printers; -} - -static int -objfpy_set_printers (PyObject *o, PyObject *value, void *ignore) -{ - PyObject *tmp; - objfile_object *self = (objfile_object *) o; - if (! value) - { - PyErr_SetString (PyExc_TypeError, - "cannot delete the pretty_printers attribute"); - return -1; - } - - if (! PyList_Check (value)) - { - PyErr_SetString (PyExc_TypeError, - "the pretty_printers attribute must be a list"); - return -1; - } - - /* Take care in case the LHS and RHS are related somehow. */ - tmp = self->printers; - Py_INCREF (value); - self->printers = value; - Py_XDECREF (tmp); - - return 0; -} - - - -/* Clear the OBJFILE pointer in an Objfile object and remove the - reference. */ -static void -py_free_objfile (struct objfile *objfile, void *datum) -{ - struct cleanup *cleanup; - objfile_object *object = datum; - - cleanup = ensure_python_env (get_objfile_arch (objfile), current_language); - object->objfile = NULL; - Py_DECREF ((PyObject *) object); - do_cleanups (cleanup); -} - -/* Return a borrowed reference to the Python object of type Objfile - representing OBJFILE. If the object has already been created, - return it. Otherwise, create it. Return NULL and set the Python - error on failure. */ -PyObject * -objfile_to_objfile_object (struct objfile *objfile) -{ - objfile_object *object; - - object = objfile_data (objfile, objfpy_objfile_data_key); - if (!object) - { - object = PyObject_New (objfile_object, &objfile_object_type); - if (object) - { - PyObject *dict; - - object->objfile = objfile; - - object->printers = PyList_New (0); - if (!object->printers) - { - Py_DECREF (object); - return NULL; - } - - set_objfile_data (objfile, objfpy_objfile_data_key, object); - } - } - - return (PyObject *) object; -} - -void -gdbpy_initialize_objfile (void) -{ - objfpy_objfile_data_key - = register_objfile_data_with_cleanup (NULL, py_free_objfile); - - if (PyType_Ready (&objfile_object_type) < 0) - return; - - Py_INCREF (&objfile_object_type); - PyModule_AddObject (gdb_module, "Objfile", (PyObject *) &objfile_object_type); -} - - - -static PyGetSetDef objfile_getset[] = -{ - { "filename", objfpy_get_filename, NULL, - "The objfile's filename, or None.", NULL }, - { "pretty_printers", objfpy_get_printers, objfpy_set_printers, - "Pretty printers.", NULL }, - { NULL } -}; - -static PyTypeObject objfile_object_type = -{ - PyObject_HEAD_INIT (NULL) - 0, /*ob_size*/ - "gdb.Objfile", /*tp_name*/ - sizeof (objfile_object), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - objfpy_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /*tp_flags*/ - "GDB objfile object", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - objfile_getset, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - objfpy_new, /* tp_new */ -}; diff --git a/contrib/gdb-7/gdb/python/py-prettyprint.c b/contrib/gdb-7/gdb/python/py-prettyprint.c index 5d696c86d3..434c8a593d 100644 --- a/contrib/gdb-7/gdb/python/py-prettyprint.c +++ b/contrib/gdb-7/gdb/python/py-prettyprint.c @@ -1,6 +1,6 @@ /* Python pretty-printing - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -29,12 +29,12 @@ #ifdef HAVE_PYTHON #include "python-internal.h" - /* Helper function for find_pretty_printer which iterates over a list, calls each function and inspects output. This will return a printer object if one recognizes VALUE. If no printer is found, it will return None. On error, it will set the Python error and return NULL. */ + static PyObject * search_pp_list (PyObject *list, PyObject *value) { @@ -48,6 +48,11 @@ search_pp_list (PyObject *list, PyObject *value) if (! function) return NULL; + /* Skip if disabled. */ + if (PyObject_HasAttr (function, gdbpy_enabled_cst) + && ! PyObject_IsTrue (PyObject_GetAttr (function, gdbpy_enabled_cst))) + continue; + printer = PyObject_CallFunctionObjArgs (function, value, NULL); if (! printer) return NULL; @@ -60,18 +65,19 @@ search_pp_list (PyObject *list, PyObject *value) Py_RETURN_NONE; } -/* Find the pretty-printing constructor function for VALUE. If no - pretty-printer exists, return None. If one exists, return a new - reference. On error, set the Python error and return NULL. */ +/* Subroutine of find_pretty_printer to simplify it. + Look for a pretty-printer to print VALUE in all objfiles. + The result is NULL if there's an error and the search should be terminated. + The result is Py_None, suitably inc-ref'd, if no pretty-printer was found. + Otherwise the result is the pretty-printer function, suitably inc-ref'd. */ + static PyObject * -find_pretty_printer (PyObject *value) +find_pretty_printer_from_objfiles (PyObject *value) { - PyObject *pp_list = NULL; - PyObject *function = NULL; + PyObject *pp_list; + PyObject *function; struct objfile *obj; - volatile struct gdb_exception except; - /* Look at the pretty-printer dictionary for each objfile. */ ALL_OBJFILES (obj) { PyObject *objf = objfile_to_objfile_object (obj); @@ -84,48 +90,104 @@ find_pretty_printer (PyObject *value) pp_list = objfpy_get_printers (objf, NULL); function = search_pp_list (pp_list, value); + Py_XDECREF (pp_list); - /* If there is an error in any objfile list, abort the search and - exit. */ + /* If there is an error in any objfile list, abort the search and exit. */ if (! function) - { - Py_XDECREF (pp_list); - return NULL; - } + return NULL; if (function != Py_None) - goto done; + return function; Py_DECREF (function); - Py_XDECREF (pp_list); } - pp_list = NULL; + Py_RETURN_NONE; +} + +/* Subroutine of find_pretty_printer to simplify it. + Look for a pretty-printer to print VALUE in the current program space. + The result is NULL if there's an error and the search should be terminated. + The result is Py_None, suitably inc-ref'd, if no pretty-printer was found. + Otherwise the result is the pretty-printer function, suitably inc-ref'd. */ + +static PyObject * +find_pretty_printer_from_progspace (PyObject *value) +{ + PyObject *pp_list; + PyObject *function; + PyObject *obj = pspace_to_pspace_object (current_program_space); + + if (!obj) + return NULL; + pp_list = pspy_get_printers (obj, NULL); + function = search_pp_list (pp_list, value); + Py_XDECREF (pp_list); + return function; +} + +/* Subroutine of find_pretty_printer to simplify it. + Look for a pretty-printer to print VALUE in the gdb module. + The result is NULL if there's an error and the search should be terminated. + The result is Py_None, suitably inc-ref'd, if no pretty-printer was found. + Otherwise the result is the pretty-printer function, suitably inc-ref'd. */ + +static PyObject * +find_pretty_printer_from_gdb (PyObject *value) +{ + PyObject *pp_list; + PyObject *function; + /* Fetch the global pretty printer dictionary. */ if (! PyObject_HasAttrString (gdb_module, "pretty_printers")) + Py_RETURN_NONE; + pp_list = PyObject_GetAttrString (gdb_module, "pretty_printers"); + if (pp_list == NULL || ! PyList_Check (pp_list)) { - function = Py_None; - Py_INCREF (function); - goto done; + Py_XDECREF (pp_list); + Py_RETURN_NONE; } - pp_list = PyObject_GetAttrString (gdb_module, "pretty_printers"); - if (! pp_list) - goto done; - if (! PyList_Check (pp_list)) - goto done; function = search_pp_list (pp_list, value); - - done: Py_XDECREF (pp_list); - return function; } + +/* Find the pretty-printing constructor function for VALUE. If no + pretty-printer exists, return None. If one exists, return a new + reference. On error, set the Python error and return NULL. */ + +static PyObject * +find_pretty_printer (PyObject *value) +{ + PyObject *function; + + /* Look at the pretty-printer dictionary for each objfile + in the current program-space. */ + function = find_pretty_printer_from_objfiles (value); + if (function == NULL || function != Py_None) + return function; + Py_DECREF (function); + + /* Look at the pretty-printer dictionary for the current program-space. */ + function = find_pretty_printer_from_progspace (value); + if (function == NULL || function != Py_None) + return function; + Py_DECREF (function); + + /* Look at the pretty-printer dictionary in the gdb module. */ + function = find_pretty_printer_from_gdb (value); + return function; +} + /* Pretty-print a single value, via the printer object PRINTER. If the function returns a string, a PyObject containing the string - is returned. Otherwise, if the function returns a value, - *OUT_VALUE is set to the value, and NULL is returned. On error, - *OUT_VALUE is set to NULL, and NULL is returned. */ + is returned. If the function returns Py_NONE that means the pretty + printer returned the Python None as a value. Otherwise, if the + function returns a value, *OUT_VALUE is set to the value, and NULL + is returned. On error, *OUT_VALUE is set to NULL, and NULL is + returned. */ + static PyObject * pretty_print_one_value (PyObject *printer, struct value **out_value) { @@ -138,7 +200,8 @@ pretty_print_one_value (PyObject *printer, struct value **out_value) result = PyObject_CallMethodObjArgs (printer, gdbpy_to_string_cst, NULL); if (result) { - if (! gdbpy_is_string (result)) + if (! gdbpy_is_string (result) && ! gdbpy_is_lazy_string (result) + && result != Py_None) { *out_value = convert_value_from_python (result); if (PyErr_Occurred ()) @@ -166,10 +229,12 @@ gdbpy_get_display_hint (PyObject *printer) return NULL; hint = PyObject_CallMethodObjArgs (printer, gdbpy_display_hint_cst, NULL); - if (gdbpy_is_string (hint)) - result = python_string_to_host_string (hint); if (hint) - Py_DECREF (hint); + { + if (gdbpy_is_string (hint)) + result = python_string_to_host_string (hint); + Py_DECREF (hint); + } else gdbpy_print_stack (); @@ -177,8 +242,11 @@ gdbpy_get_display_hint (PyObject *printer) } /* Helper for apply_val_pretty_printer which calls to_string and - formats the result. */ -static void + formats the result. If the value returnd is Py_None, nothing is + printed and the function returns a 1; in all other cases data is + printed as given by the pretty printer and the function returns 0. +*/ +static int print_string_repr (PyObject *printer, const char *hint, struct ui_file *stream, int recurse, const struct value_print_options *options, @@ -187,31 +255,70 @@ print_string_repr (PyObject *printer, const char *hint, { struct value *replacement = NULL; PyObject *py_str = NULL; + int is_py_none = 0; py_str = pretty_print_one_value (printer, &replacement); if (py_str) { - PyObject *string = python_string_to_target_python_string (py_str); - if (string) + if (py_str == Py_None) + is_py_none = 1; + else { - gdb_byte *output = PyString_AsString (string); - int len = PyString_Size (string); + gdb_byte *output = NULL; + long length; + struct type *type; + char *encoding = NULL; + PyObject *string = NULL; + int is_lazy; + + is_lazy = gdbpy_is_lazy_string (py_str); + if (is_lazy) + output = gdbpy_extract_lazy_string (py_str, &type, &length, &encoding); + else + { + string = python_string_to_target_python_string (py_str); + if (string) + { + output = PyString_AsString (string); + length = PyString_Size (string); + type = builtin_type (gdbarch)->builtin_char; + } + else + gdbpy_print_stack (); + + } + + if (output) + { + if (is_lazy || (hint && !strcmp (hint, "string"))) + LA_PRINT_STRING (stream, type, output, length, encoding, + 0, options); + else + fputs_filtered (output, stream); + } + else + gdbpy_print_stack (); - if (hint && !strcmp (hint, "string")) - LA_PRINT_STRING (stream, builtin_type (gdbarch)->builtin_char, - output, len, 0, options); + if (string) + Py_DECREF (string); else - fputs_filtered (output, stream); - Py_DECREF (string); + xfree (output); + + xfree (encoding); + Py_DECREF (py_str); } - else - gdbpy_print_stack (); - Py_DECREF (py_str); } else if (replacement) - common_val_print (replacement, stream, recurse, options, language); + { + struct value_print_options opts = *options; + + opts.addressprint = 0; + common_val_print (replacement, stream, recurse, &opts, language); + } else gdbpy_print_stack (); + + return is_py_none; } static void @@ -219,6 +326,7 @@ py_restore_tstate (void *p) { PyFrameObject *frame = p; PyThreadState *tstate = PyThreadState_GET (); + tstate->frame = frame; } @@ -290,12 +398,14 @@ push_dummy_python_frame () } /* Helper for apply_val_pretty_printer that formats children of the - printer, if any exist. */ + printer, if any exist. If is_py_none is true, then nothing has + been printed by to_string, and format output accordingly. */ static void print_children (PyObject *printer, const char *hint, struct ui_file *stream, int recurse, const struct value_print_options *options, - const struct language_defn *language) + const struct language_defn *language, + int is_py_none) { int is_map, is_array, done_flag, pretty; unsigned int i; @@ -375,7 +485,13 @@ print_children (PyObject *printer, const char *hint, 2. Arrays. Always print a ",". 3. Other. Always print a ",". */ if (i == 0) - fputs_filtered (" = {", stream); + { + if (is_py_none) + fputs_filtered ("{", stream); + else + fputs_filtered (" = {", stream); + } + else if (! is_map || i % 2 == 0) fputs_filtered (pretty ? "," : ", ", stream); @@ -417,15 +533,30 @@ print_children (PyObject *printer, const char *hint, fputs_filtered (" = ", stream); } - if (gdbpy_is_string (py_v)) + if (gdbpy_is_lazy_string (py_v) || gdbpy_is_string (py_v)) { - char *text = python_string_to_host_string (py_v); - if (! text) - gdbpy_print_stack (); + gdb_byte *output = NULL; + + if (gdbpy_is_lazy_string (py_v)) + { + struct type *type; + long length; + char *encoding = NULL; + + output = gdbpy_extract_lazy_string (py_v, &type, + &length, &encoding); + if (!output) + gdbpy_print_stack (); + LA_PRINT_STRING (stream, type, output, length, encoding, + 0, options); + xfree (encoding); + xfree (output); + } else { - fputs_filtered (text, stream); - xfree (text); + output = python_string_to_host_string (py_v); + fputs_filtered (output, stream); + xfree (output); } } else @@ -474,6 +605,7 @@ int apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, const struct language_defn *language) { @@ -484,13 +616,24 @@ apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr, char *hint = NULL; struct cleanup *cleanups; int result = 0; - + int is_py_none = 0; cleanups = ensure_python_env (gdbarch, language); /* Instantiate the printer. */ if (valaddr) valaddr += embedded_offset; - value = value_from_contents_and_address (type, valaddr, address); + value = value_from_contents_and_address (type, valaddr, + address + embedded_offset); + if (val != NULL) + { + set_value_component_location (value, val); + /* set_value_component_location resets the address, so we may + need to set it again. */ + if (VALUE_LVAL (value) != lval_internalvar + && VALUE_LVAL (value) != lval_internalvar_component + && VALUE_LVAL (value) != lval_computed) + set_value_address (value, address + embedded_offset); + } val_obj = value_to_value_object (value); if (! val_obj) @@ -508,9 +651,11 @@ apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr, make_cleanup (free_current_contents, &hint); /* Print the section */ - print_string_repr (printer, hint, stream, recurse, options, language, - gdbarch); - print_children (printer, hint, stream, recurse, options, language); + is_py_none = print_string_repr (printer, hint, stream, recurse, + options, language, gdbarch); + print_children (printer, hint, stream, recurse, options, language, + is_py_none); + result = 1; @@ -535,7 +680,6 @@ PyObject * apply_varobj_pretty_printer (PyObject *printer_obj, struct value **replacement) { - int size = 0; PyObject *py_str = NULL; *replacement = NULL; @@ -581,7 +725,7 @@ PyObject * gdbpy_default_visualizer (PyObject *self, PyObject *args) { PyObject *val_obj; - PyObject *cons, *printer = NULL; + PyObject *cons; struct value *value; if (! PyArg_ParseTuple (args, "O", &val_obj)) @@ -589,7 +733,8 @@ gdbpy_default_visualizer (PyObject *self, PyObject *args) value = value_object_to_value (val_obj); if (! value) { - PyErr_SetString (PyExc_TypeError, "argument must be a gdb.Value"); + PyErr_SetString (PyExc_TypeError, + _("Argument must be a gdb.Value.")); return NULL; } @@ -603,6 +748,7 @@ int apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, const struct language_defn *language) { diff --git a/contrib/gdb-7/gdb/python/py-type.c b/contrib/gdb-7/gdb/python/py-type.c deleted file mode 100644 index 590d90a908..0000000000 --- a/contrib/gdb-7/gdb/python/py-type.c +++ /dev/null @@ -1,799 +0,0 @@ -/* Python interface to types. - - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - -#include "defs.h" -#include "value.h" -#include "exceptions.h" -#include "python-internal.h" -#include "charset.h" -#include "gdbtypes.h" -#include "cp-support.h" -#include "demangle.h" -#include "objfiles.h" -#include "language.h" - -typedef struct pyty_type_object -{ - PyObject_HEAD - struct type *type; - - /* If a Type object is associated with an objfile, it is kept on a - doubly-linked list, rooted in the objfile. This lets us copy the - underlying struct type when the objfile is deleted. */ - struct pyty_type_object *prev; - struct pyty_type_object *next; -} type_object; - -static PyTypeObject type_object_type; - -/* A Field object. */ -typedef struct pyty_field_object -{ - PyObject_HEAD - - /* Dictionary holding our attributes. */ - PyObject *dict; -} field_object; - -static PyTypeObject field_object_type; - -/* This is used to initialize various gdb.TYPE_ constants. */ -struct pyty_code -{ - /* The code. */ - enum type_code code; - /* The name. */ - const char *name; -}; - -#define ENTRY(X) { X, #X } - -static struct pyty_code pyty_codes[] = -{ - ENTRY (TYPE_CODE_PTR), - ENTRY (TYPE_CODE_ARRAY), - ENTRY (TYPE_CODE_STRUCT), - ENTRY (TYPE_CODE_UNION), - ENTRY (TYPE_CODE_ENUM), - ENTRY (TYPE_CODE_FLAGS), - ENTRY (TYPE_CODE_FUNC), - ENTRY (TYPE_CODE_INT), - ENTRY (TYPE_CODE_FLT), - ENTRY (TYPE_CODE_VOID), - ENTRY (TYPE_CODE_SET), - ENTRY (TYPE_CODE_RANGE), - ENTRY (TYPE_CODE_STRING), - ENTRY (TYPE_CODE_BITSTRING), - ENTRY (TYPE_CODE_ERROR), - ENTRY (TYPE_CODE_METHOD), - ENTRY (TYPE_CODE_METHODPTR), - ENTRY (TYPE_CODE_MEMBERPTR), - ENTRY (TYPE_CODE_REF), - ENTRY (TYPE_CODE_CHAR), - ENTRY (TYPE_CODE_BOOL), - ENTRY (TYPE_CODE_COMPLEX), - ENTRY (TYPE_CODE_TYPEDEF), - ENTRY (TYPE_CODE_NAMESPACE), - ENTRY (TYPE_CODE_DECFLOAT), - ENTRY (TYPE_CODE_INTERNAL_FUNCTION), - { TYPE_CODE_UNDEF, NULL } -}; - - - -static void -field_dealloc (PyObject *obj) -{ - field_object *f = (field_object *) obj; - Py_XDECREF (f->dict); - f->ob_type->tp_free (obj); -} - -static PyObject * -field_new (void) -{ - field_object *result = PyObject_New (field_object, &field_object_type); - if (result) - { - result->dict = PyDict_New (); - if (!result->dict) - { - Py_DECREF (result); - result = NULL; - } - } - return (PyObject *) result; -} - - - -/* Return the code for this type. */ -static PyObject * -typy_get_code (PyObject *self, void *closure) -{ - struct type *type = ((type_object *) self)->type; - return PyInt_FromLong (TYPE_CODE (type)); -} - -/* Helper function for typy_fields which converts a single field to a - dictionary. Returns NULL on error. */ -static PyObject * -convert_field (struct type *type, int field) -{ - PyObject *result = field_new (); - PyObject *arg; - - if (!result) - return NULL; - - if (!field_is_static (&TYPE_FIELD (type, field))) - { - arg = PyLong_FromLong (TYPE_FIELD_BITPOS (type, field)); - if (!arg) - goto fail; - - if (PyObject_SetAttrString (result, "bitpos", arg) < 0) - goto failarg; - } - - if (TYPE_FIELD_NAME (type, field)) - arg = PyString_FromString (TYPE_FIELD_NAME (type, field)); - else - { - arg = Py_None; - Py_INCREF (arg); - } - if (!arg) - goto fail; - if (PyObject_SetAttrString (result, "name", arg) < 0) - goto failarg; - - arg = TYPE_FIELD_ARTIFICIAL (type, field) ? Py_True : Py_False; - Py_INCREF (arg); - if (PyObject_SetAttrString (result, "artificial", arg) < 0) - goto failarg; - - arg = PyLong_FromLong (TYPE_FIELD_BITSIZE (type, field)); - if (!arg) - goto fail; - if (PyObject_SetAttrString (result, "bitsize", arg) < 0) - goto failarg; - - /* A field can have a NULL type in some situations. */ - if (TYPE_FIELD_TYPE (type, field) == NULL) - { - arg = Py_None; - Py_INCREF (arg); - } - else - arg = type_to_type_object (TYPE_FIELD_TYPE (type, field)); - if (!arg) - goto fail; - if (PyObject_SetAttrString (result, "type", arg) < 0) - goto failarg; - - return result; - - failarg: - Py_DECREF (arg); - fail: - Py_DECREF (result); - return NULL; -} - -/* Return a sequence of all fields. Each field is a dictionary with - some pre-defined keys. */ -static PyObject * -typy_fields (PyObject *self, PyObject *args) -{ - PyObject *result; - int i; - struct type *type = ((type_object *) self)->type; - - /* We would like to make a tuple here, make fields immutable, and - then memoize the result (and perhaps make Field.type() lazy). - However, that can lead to cycles. */ - result = PyList_New (0); - - for (i = 0; i < TYPE_NFIELDS (type); ++i) - { - PyObject *dict = convert_field (type, i); - if (!dict) - { - Py_DECREF (result); - return NULL; - } - if (PyList_Append (result, dict)) - { - Py_DECREF (dict); - Py_DECREF (result); - return NULL; - } - } - - return result; -} - -/* Return the type's tag, or None. */ -static PyObject * -typy_get_tag (PyObject *self, void *closure) -{ - struct type *type = ((type_object *) self)->type; - if (!TYPE_TAG_NAME (type)) - Py_RETURN_NONE; - return PyString_FromString (TYPE_TAG_NAME (type)); -} - -/* Return the type, stripped of typedefs. */ -static PyObject * -typy_strip_typedefs (PyObject *self, PyObject *args) -{ - struct type *type = ((type_object *) self)->type; - - return type_to_type_object (check_typedef (type)); -} - -/* Return a Type object which represents a pointer to SELF. */ -static PyObject * -typy_pointer (PyObject *self, PyObject *args) -{ - struct type *type = ((type_object *) self)->type; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - type = lookup_pointer_type (type); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return type_to_type_object (type); -} - -/* Return a Type object which represents a reference to SELF. */ -static PyObject * -typy_reference (PyObject *self, PyObject *args) -{ - struct type *type = ((type_object *) self)->type; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - type = lookup_reference_type (type); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return type_to_type_object (type); -} - -/* Return a Type object which represents the target type of SELF. */ -static PyObject * -typy_target (PyObject *self, PyObject *args) -{ - struct type *type = ((type_object *) self)->type; - - if (!TYPE_TARGET_TYPE (type)) - { - PyErr_SetString (PyExc_RuntimeError, "type does not have a target"); - return NULL; - } - - return type_to_type_object (TYPE_TARGET_TYPE (type)); -} - -/* Return a const-qualified type variant. */ -static PyObject * -typy_const (PyObject *self, PyObject *args) -{ - struct type *type = ((type_object *) self)->type; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - type = make_cv_type (1, 0, type, NULL); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return type_to_type_object (type); -} - -/* Return a volatile-qualified type variant. */ -static PyObject * -typy_volatile (PyObject *self, PyObject *args) -{ - struct type *type = ((type_object *) self)->type; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - type = make_cv_type (0, 1, type, NULL); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return type_to_type_object (type); -} - -/* Return an unqualified type variant. */ -static PyObject * -typy_unqualified (PyObject *self, PyObject *args) -{ - struct type *type = ((type_object *) self)->type; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - type = make_cv_type (0, 0, type, NULL); - } - GDB_PY_HANDLE_EXCEPTION (except); - - return type_to_type_object (type); -} - -/* Return the size of the type represented by SELF, in bytes. */ -static PyObject * -typy_get_sizeof (PyObject *self, void *closure) -{ - struct type *type = ((type_object *) self)->type; - volatile struct gdb_exception except; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - check_typedef (type); - } - /* Ignore exceptions. */ - - return PyLong_FromLong (TYPE_LENGTH (type)); -} - -static struct type * -typy_lookup_typename (char *type_name) -{ - struct type *type = NULL; - volatile struct gdb_exception except; - TRY_CATCH (except, RETURN_MASK_ALL) - { - if (!strncmp (type_name, "struct ", 7)) - type = lookup_struct (type_name + 7, NULL); - else if (!strncmp (type_name, "union ", 6)) - type = lookup_union (type_name + 6, NULL); - else if (!strncmp (type_name, "enum ", 5)) - type = lookup_enum (type_name + 5, NULL); - else - type = lookup_typename (python_language, python_gdbarch, - type_name, NULL, 0); - } - if (except.reason < 0) - { - PyErr_Format (except.reason == RETURN_QUIT - ? PyExc_KeyboardInterrupt : PyExc_RuntimeError, - "%s", except.message); - return NULL; - } - - return type; -} - -static struct type * -typy_lookup_type (struct demangle_component *demangled) -{ - struct type *type; - char *type_name; - enum demangle_component_type demangled_type; - - /* Save the type: typy_lookup_type() may (indirectly) overwrite - memory pointed by demangled. */ - demangled_type = demangled->type; - - if (demangled_type == DEMANGLE_COMPONENT_POINTER - || demangled_type == DEMANGLE_COMPONENT_REFERENCE - || demangled_type == DEMANGLE_COMPONENT_CONST - || demangled_type == DEMANGLE_COMPONENT_VOLATILE) - { - type = typy_lookup_type (demangled->u.s_binary.left); - if (! type) - return NULL; - - switch (demangled_type) - { - case DEMANGLE_COMPONENT_REFERENCE: - return lookup_reference_type (type); - case DEMANGLE_COMPONENT_POINTER: - return lookup_pointer_type (type); - case DEMANGLE_COMPONENT_CONST: - return make_cv_type (1, 0, type, NULL); - case DEMANGLE_COMPONENT_VOLATILE: - return make_cv_type (0, 1, type, NULL); - } - } - - type_name = cp_comp_to_string (demangled, 10); - type = typy_lookup_typename (type_name); - xfree (type_name); - - return type; -} - -static PyObject * -typy_template_argument (PyObject *self, PyObject *args) -{ - int i, argno, n_pointers; - struct type *type = ((type_object *) self)->type; - struct demangle_component *demangled; - const char *err; - struct type *argtype; - - if (! PyArg_ParseTuple (args, "i", &argno)) - return NULL; - - type = check_typedef (type); - if (TYPE_CODE (type) == TYPE_CODE_REF) - type = check_typedef (TYPE_TARGET_TYPE (type)); - - if (TYPE_NAME (type) == NULL) - { - PyErr_SetString (PyExc_RuntimeError, "null type name"); - return NULL; - } - - /* Note -- this is not thread-safe. */ - demangled = cp_demangled_name_to_comp (TYPE_NAME (type), &err); - if (! demangled) - { - PyErr_SetString (PyExc_RuntimeError, err); - return NULL; - } - - /* Strip off component names. */ - while (demangled->type == DEMANGLE_COMPONENT_QUAL_NAME - || demangled->type == DEMANGLE_COMPONENT_LOCAL_NAME) - demangled = demangled->u.s_binary.right; - - if (demangled->type != DEMANGLE_COMPONENT_TEMPLATE) - { - PyErr_SetString (PyExc_RuntimeError, "type is not a template"); - return NULL; - } - - /* Skip from the template to the arguments. */ - demangled = demangled->u.s_binary.right; - - for (i = 0; demangled && i < argno; ++i) - demangled = demangled->u.s_binary.right; - - if (! demangled) - { - PyErr_Format (PyExc_RuntimeError, "no argument %d in template", - argno); - return NULL; - } - - argtype = typy_lookup_type (demangled->u.s_binary.left); - if (! argtype) - return NULL; - - return type_to_type_object (argtype); -} - -static PyObject * -typy_str (PyObject *self) -{ - volatile struct gdb_exception except; - char *thetype = NULL; - long length = 0; - PyObject *result; - - TRY_CATCH (except, RETURN_MASK_ALL) - { - struct cleanup *old_chain; - struct ui_file *stb; - - stb = mem_fileopen (); - old_chain = make_cleanup_ui_file_delete (stb); - - type_print (type_object_to_type (self), "", stb, -1); - - thetype = ui_file_xstrdup (stb, &length); - do_cleanups (old_chain); - } - if (except.reason < 0) - { - xfree (thetype); - GDB_PY_HANDLE_EXCEPTION (except); - } - - result = PyUnicode_Decode (thetype, length, host_charset (), NULL); - xfree (thetype); - - return result; -} - - - -static const struct objfile_data *typy_objfile_data_key; - -static void -save_objfile_types (struct objfile *objfile, void *datum) -{ - type_object *obj = datum; - htab_t copied_types; - struct cleanup *cleanup; - - /* This prevents another thread from freeing the objects we're - operating on. */ - cleanup = ensure_python_env (get_objfile_arch (objfile), current_language); - - copied_types = create_copied_types_hash (objfile); - - while (obj) - { - type_object *next = obj->next; - - htab_empty (copied_types); - - obj->type = copy_type_recursive (objfile, obj->type, copied_types); - - obj->next = NULL; - obj->prev = NULL; - - obj = next; - } - - htab_delete (copied_types); - - do_cleanups (cleanup); -} - -static void -set_type (type_object *obj, struct type *type) -{ - obj->type = type; - obj->prev = NULL; - if (type && TYPE_OBJFILE (type)) - { - struct objfile *objfile = TYPE_OBJFILE (type); - - obj->next = objfile_data (objfile, typy_objfile_data_key); - if (obj->next) - obj->next->prev = obj; - set_objfile_data (objfile, typy_objfile_data_key, obj); - } - else - obj->next = NULL; -} - -static void -typy_dealloc (PyObject *obj) -{ - type_object *type = (type_object *) obj; - - if (type->prev) - type->prev->next = type->next; - else if (type->type && TYPE_OBJFILE (type->type)) - { - /* Must reset head of list. */ - struct objfile *objfile = TYPE_OBJFILE (type->type); - if (objfile) - set_objfile_data (objfile, typy_objfile_data_key, type->next); - } - if (type->next) - type->next->prev = type->prev; - - type->ob_type->tp_free (type); -} - -/* Create a new Type referring to TYPE. */ -PyObject * -type_to_type_object (struct type *type) -{ - type_object *type_obj; - - type_obj = PyObject_New (type_object, &type_object_type); - if (type_obj) - set_type (type_obj, type); - - return (PyObject *) type_obj; -} - -struct type * -type_object_to_type (PyObject *obj) -{ - if (! PyObject_TypeCheck (obj, &type_object_type)) - return NULL; - return ((type_object *) obj)->type; -} - - - -/* Implementation of gdb.lookup_type. */ -PyObject * -gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw) -{ - static char *keywords[] = { "name", NULL }; - char *type_name = NULL; - struct type *type = NULL; - - if (! PyArg_ParseTupleAndKeywords (args, kw, "s", keywords, &type_name)) - return NULL; - - type = typy_lookup_typename (type_name); - if (! type) - return NULL; - - return (PyObject *) type_to_type_object (type); -} - -void -gdbpy_initialize_types (void) -{ - int i; - - typy_objfile_data_key - = register_objfile_data_with_cleanup (save_objfile_types, NULL); - - if (PyType_Ready (&type_object_type) < 0) - return; - if (PyType_Ready (&field_object_type) < 0) - return; - - for (i = 0; pyty_codes[i].name; ++i) - { - if (PyModule_AddIntConstant (gdb_module, - /* Cast needed for Python 2.4. */ - (char *) pyty_codes[i].name, - pyty_codes[i].code) < 0) - return; - } - - Py_INCREF (&type_object_type); - PyModule_AddObject (gdb_module, "Type", (PyObject *) &type_object_type); - - Py_INCREF (&field_object_type); - PyModule_AddObject (gdb_module, "Field", (PyObject *) &field_object_type); -} - - - -static PyGetSetDef type_object_getset[] = -{ - { "code", typy_get_code, NULL, - "The code for this type.", NULL }, - { "sizeof", typy_get_sizeof, NULL, - "The size of this type, in bytes.", NULL }, - { "tag", typy_get_tag, NULL, - "The tag name for this type, or None.", NULL }, - { NULL } -}; - -static PyMethodDef type_object_methods[] = -{ - { "const", typy_const, METH_NOARGS, - "const () -> Type\n\ -Return a const variant of this type." }, - { "fields", typy_fields, METH_NOARGS, - "field () -> list\n\ -Return a sequence holding all the fields of this type.\n\ -Each field is a dictionary." }, - { "pointer", typy_pointer, METH_NOARGS, - "pointer () -> Type\n\ -Return a type of pointer to this type." }, - { "reference", typy_reference, METH_NOARGS, - "reference () -> Type\n\ -Return a type of reference to this type." }, - { "strip_typedefs", typy_strip_typedefs, METH_NOARGS, - "strip_typedefs () -> Type\n\ -Return a type formed by stripping this type of all typedefs."}, - { "target", typy_target, METH_NOARGS, - "target () -> Type\n\ -Return the target type of this type." }, - { "template_argument", typy_template_argument, METH_VARARGS, - "template_argument (arg) -> Type\n\ -Return the type of a template argument." }, - { "unqualified", typy_unqualified, METH_NOARGS, - "unqualified () -> Type\n\ -Return a variant of this type without const or volatile attributes." }, - { "volatile", typy_volatile, METH_NOARGS, - "volatile () -> Type\n\ -Return a volatile variant of this type" }, - { NULL } -}; - -static PyTypeObject type_object_type = -{ - PyObject_HEAD_INIT (NULL) - 0, /*ob_size*/ - "gdb.Type", /*tp_name*/ - sizeof (type_object), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - typy_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - typy_str, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER, /*tp_flags*/ - "GDB type object", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - type_object_methods, /* tp_methods */ - 0, /* tp_members */ - type_object_getset, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ -}; - -static PyTypeObject field_object_type = -{ - PyObject_HEAD_INIT (NULL) - 0, /*ob_size*/ - "gdb.Field", /*tp_name*/ - sizeof (field_object), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - field_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER, /*tp_flags*/ - "GDB field object", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - offsetof (field_object, dict), /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ -}; diff --git a/contrib/gdb-7/gdb/python/py-utils.c b/contrib/gdb-7/gdb/python/py-utils.c deleted file mode 100644 index 49c0437c13..0000000000 --- a/contrib/gdb-7/gdb/python/py-utils.c +++ /dev/null @@ -1,221 +0,0 @@ -/* General utility routines for GDB/Python. - - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - -#include "defs.h" -#include "charset.h" -#include "python-internal.h" - - -/* This is a cleanup function which decrements the refcount on a - Python object. */ - -static void -py_decref (void *p) -{ - PyObject *py = p; - /* Note that we need the extra braces in this 'if' to avoid a - warning from gcc. */ - if (py) - { - Py_DECREF (py); - } -} - -/* Return a new cleanup which will decrement the Python object's - refcount when run. */ - -struct cleanup * -make_cleanup_py_decref (PyObject *py) -{ - return make_cleanup (py_decref, (void *) py); -} - -/* Converts a Python 8-bit string to a unicode string object. Assumes the - 8-bit string is in the host charset. If an error occurs during conversion, - returns NULL with a python exception set. - - As an added bonus, the functions accepts a unicode string and returns it - right away, so callers don't need to check which kind of string they've - got. - - If the given object is not one of the mentioned string types, NULL is - returned, with the TypeError python exception set. */ -PyObject * -python_string_to_unicode (PyObject *obj) -{ - PyObject *unicode_str; - - /* If obj is already a unicode string, just return it. - I wish life was always that simple... */ - if (PyUnicode_Check (obj)) - { - unicode_str = obj; - Py_INCREF (obj); - } - - else if (PyString_Check (obj)) - unicode_str = PyUnicode_FromEncodedObject (obj, host_charset (), NULL); - else - { - PyErr_SetString (PyExc_TypeError, - _("Expected a string or unicode object.")); - unicode_str = NULL; - } - - return unicode_str; -} - -/* Returns a newly allocated string with the contents of the given unicode - string object converted to CHARSET. If an error occurs during the - conversion, NULL will be returned and a python exception will be set. - - The caller is responsible for xfree'ing the string. */ -static char * -unicode_to_encoded_string (PyObject *unicode_str, const char *charset) -{ - char *result; - PyObject *string; - - /* Translate string to named charset. */ - string = PyUnicode_AsEncodedString (unicode_str, charset, NULL); - if (string == NULL) - return NULL; - - result = xstrdup (PyString_AsString (string)); - - Py_DECREF (string); - - return result; -} - -/* Returns a PyObject with the contents of the given unicode string - object converted to a named charset. If an error occurs during - the conversion, NULL will be returned and a python exception will - be set. */ -static PyObject * -unicode_to_encoded_python_string (PyObject *unicode_str, const char *charset) -{ - PyObject *string; - - /* Translate string to named charset. */ - string = PyUnicode_AsEncodedString (unicode_str, charset, NULL); - if (string == NULL) - return NULL; - - return string; -} - -/* Returns a newly allocated string with the contents of the given unicode - string object converted to the target's charset. If an error occurs during - the conversion, NULL will be returned and a python exception will be set. - - The caller is responsible for xfree'ing the string. */ -char * -unicode_to_target_string (PyObject *unicode_str) -{ - return unicode_to_encoded_string (unicode_str, target_charset ()); -} - -/* Returns a PyObject with the contents of the given unicode string - object converted to the target's charset. If an error occurs - during the conversion, NULL will be returned and a python exception - will be set. */ -PyObject * -unicode_to_target_python_string (PyObject *unicode_str) -{ - return unicode_to_encoded_python_string (unicode_str, target_charset ()); -} - -/* Converts a python string (8-bit or unicode) to a target string in - the target's charset. Returns NULL on error, with a python exception set. - - The caller is responsible for xfree'ing the string. */ -char * -python_string_to_target_string (PyObject *obj) -{ - PyObject *str; - char *result; - - str = python_string_to_unicode (obj); - if (str == NULL) - return NULL; - - result = unicode_to_target_string (str); - Py_DECREF (str); - return result; -} - -/* Converts a python string (8-bit or unicode) to a target string in the - target's charset. Returns NULL on error, with a python exception - set. */ -PyObject * -python_string_to_target_python_string (PyObject *obj) -{ - PyObject *str; - PyObject *result; - - str = python_string_to_unicode (obj); - if (str == NULL) - return NULL; - - result = unicode_to_target_python_string (str); - Py_DECREF (str); - return result; -} - -/* Converts a python string (8-bit or unicode) to a target string in - the host's charset. Returns NULL on error, with a python exception set. - - The caller is responsible for xfree'ing the string. */ -char * -python_string_to_host_string (PyObject *obj) -{ - PyObject *str; - char *result; - - str = python_string_to_unicode (obj); - if (str == NULL) - return NULL; - - result = unicode_to_encoded_string (str, host_charset ()); - Py_DECREF (str); - return result; -} - -/* Converts a target string of LENGTH bytes in the target's charset to a - Python Unicode string. If LENGTH is -1, convert until a null byte is found. - - Returns NULL on error, with a python exception set. */ -PyObject * -target_string_to_unicode (const gdb_byte *str, int length) -{ - if (length == -1) - length = strlen (str); - - return PyUnicode_Decode (str, length, target_charset (), NULL); -} - -/* Return true if OBJ is a Python string or unicode object, false - otherwise. */ - -int -gdbpy_is_string (PyObject *obj) -{ - return PyString_Check (obj) || PyUnicode_Check (obj); -} diff --git a/contrib/gdb-7/gdb/python/py-value.c b/contrib/gdb-7/gdb/python/py-value.c index 014659327f..2024021ac1 100644 --- a/contrib/gdb-7/gdb/python/py-value.c +++ b/contrib/gdb-7/gdb/python/py-value.c @@ -1,6 +1,6 @@ /* Python interface to values. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -43,6 +43,10 @@ /* Python's long type corresponds to C's long long type. */ #define builtin_type_pylong builtin_type (python_gdbarch)->builtin_long_long +/* Python's long type corresponds to C's long long type. Unsigned version. */ +#define builtin_type_upylong builtin_type \ + (python_gdbarch)->builtin_unsigned_long_long + #define builtin_type_pybool \ language_bool_type (python_language, python_gdbarch) @@ -207,6 +211,7 @@ static PyObject * valpy_get_type (PyObject *self, void *closure) { value_object *obj = (value_object *) self; + if (!obj->type) { obj->type = type_to_type_object (value_type (obj->value)); @@ -220,6 +225,36 @@ valpy_get_type (PyObject *self, void *closure) return obj->type; } +/* Implementation of gdb.Value.lazy_string ([encoding] [, length]) -> + string. Return a PyObject representing a lazy_string_object type. + A lazy string is a pointer to a string with an optional encoding and + length. If ENCODING is not given, encoding is set to None. If an + ENCODING is provided the encoding parameter is set to ENCODING, but + the string is not encoded. If LENGTH is provided then the length + parameter is set to LENGTH, otherwise length will be set to -1 (first + null of appropriate with). */ +static PyObject * +valpy_lazy_string (PyObject *self, PyObject *args, PyObject *kw) +{ + int length = -1; + struct value *value = ((value_object *) self)->value; + const char *user_encoding = NULL; + static char *keywords[] = { "encoding", "length", NULL }; + PyObject *str_obj; + + if (!PyArg_ParseTupleAndKeywords (args, kw, "|si", keywords, + &user_encoding, &length)) + return NULL; + + if (TYPE_CODE (value_type (value)) == TYPE_CODE_PTR) + value = value_ind (value); + + str_obj = gdbpy_create_lazy_string_object (value_address (value), length, + user_encoding, value_type (value)); + + return (PyObject *) str_obj; +} + /* Implementation of gdb.Value.string ([encoding] [, errors] [, length]) -> string. Return Unicode string with value contents. If ENCODING is not given, the string is assumed to be encoded in @@ -229,7 +264,7 @@ valpy_get_type (PyObject *self, void *closure) static PyObject * valpy_string (PyObject *self, PyObject *args, PyObject *kw) { - int length = -1, ret = 0; + int length = -1; gdb_byte *buffer; struct value *value = ((value_object *) self)->value; volatile struct gdb_exception except; @@ -238,6 +273,7 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw) const char *errors = NULL; const char *user_encoding = NULL; const char *la_encoding = NULL; + struct type *char_type; static char *keywords[] = { "encoding", "errors", "length", NULL }; if (!PyArg_ParseTupleAndKeywords (args, kw, "|ssi", keywords, @@ -246,12 +282,13 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw) TRY_CATCH (except, RETURN_MASK_ALL) { - LA_GET_STRING (value, &buffer, &length, &la_encoding); + LA_GET_STRING (value, &buffer, &length, &char_type, &la_encoding); } GDB_PY_HANDLE_EXCEPTION (except); encoding = (user_encoding && *user_encoding) ? user_encoding : la_encoding; - unicode = PyUnicode_Decode (buffer, length, encoding, errors); + unicode = PyUnicode_Decode (buffer, length * TYPE_LENGTH (char_type), + encoding, errors); xfree (buffer); return unicode; @@ -272,7 +309,8 @@ valpy_cast (PyObject *self, PyObject *args) type = type_object_to_type (type_obj); if (! type) { - PyErr_SetString (PyExc_RuntimeError, "argument must be a Type"); + PyErr_SetString (PyExc_RuntimeError, + _("Argument must be a type.")); return NULL; } @@ -290,7 +328,7 @@ valpy_length (PyObject *self) { /* We don't support getting the number of elements in a struct / class. */ PyErr_SetString (PyExc_NotImplementedError, - "Invalid operation on gdb.Value."); + _("Invalid operation on gdb.Value.")); return -1; } @@ -323,16 +361,18 @@ valpy_getitem (PyObject *self, PyObject *key) value code throw an exception if the index has an invalid type. */ struct value *idx = convert_value_from_python (key); + if (idx != NULL) { /* Check the value's type is something that can be accessed via a subscript. */ struct type *type; + tmp = coerce_ref (tmp); type = check_typedef (value_type (tmp)); if (TYPE_CODE (type) != TYPE_CODE_ARRAY && TYPE_CODE (type) != TYPE_CODE_PTR) - error( _("Cannot subscript requested type")); + error( _("Cannot subscript requested type.")); else res_val = value_subscript (tmp, value_as_long (idx)); } @@ -399,6 +439,14 @@ valpy_get_is_optimized_out (PyObject *self, void *closure) Py_RETURN_FALSE; } +/* Calculate and return the address of the PyObject as the value of + the builtin __hash__ call. */ +static long +valpy_hash (PyObject *self) +{ + return (long) (intptr_t) self; +} + enum valpy_opcode { VALPY_ADD, @@ -591,6 +639,7 @@ static PyObject * valpy_absolute (PyObject *self) { struct value *value = ((value_object *) self)->value; + if (value_less (value, value_zero (value_type (value), not_lval))) return valpy_negative (self); else @@ -696,7 +745,7 @@ valpy_richcompare (PyObject *self, PyObject *other, int op) default: /* Can't happen. */ PyErr_SetString (PyExc_NotImplementedError, - "Invalid operation on gdb.Value."); + _("Invalid operation on gdb.Value.")); return NULL; } @@ -733,7 +782,7 @@ valpy_richcompare (PyObject *self, PyObject *other, int op) default: /* Can't happen. */ PyErr_SetString (PyExc_NotImplementedError, - "Invalid operation on gdb.Value."); + _("Invalid operation on gdb.Value.")); result = -1; break; } @@ -774,7 +823,8 @@ valpy_int (PyObject *self) CHECK_TYPEDEF (type); if (!is_intlike (type, 0)) { - PyErr_SetString (PyExc_RuntimeError, "cannot convert value to int"); + PyErr_SetString (PyExc_RuntimeError, + _("Cannot convert value to int.")); return NULL; } @@ -805,7 +855,8 @@ valpy_long (PyObject *self) if (!is_intlike (type, 1)) { - PyErr_SetString (PyExc_RuntimeError, "cannot convert value to long"); + PyErr_SetString (PyExc_RuntimeError, + _("Cannot convert value to long.")); return NULL; } @@ -834,7 +885,8 @@ valpy_float (PyObject *self) CHECK_TYPEDEF (type); if (TYPE_CODE (type) != TYPE_CODE_FLT) { - PyErr_SetString (PyExc_RuntimeError, "cannot convert value to float"); + PyErr_SetString (PyExc_RuntimeError, + _("Cannot convert value to float.")); return NULL; } @@ -873,6 +925,7 @@ struct value * value_object_to_value (PyObject *self) { value_object *real; + if (! PyObject_TypeCheck (self, &value_object_type)) return NULL; real = (value_object *) self; @@ -887,7 +940,6 @@ struct value * convert_value_from_python (PyObject *obj) { struct value *value = NULL; /* -Wall */ - PyObject *target_str, *unicode_str; struct cleanup *old; volatile struct gdb_exception except; int cmp; @@ -913,7 +965,34 @@ convert_value_from_python (PyObject *obj) { LONGEST l = PyLong_AsLongLong (obj); - if (! PyErr_Occurred ()) + if (PyErr_Occurred ()) + { + /* If the error was an overflow, we can try converting to + ULONGEST instead. */ + if (PyErr_ExceptionMatches (PyExc_OverflowError)) + { + PyObject *etype, *evalue, *etraceback, *zero; + + PyErr_Fetch (&etype, &evalue, &etraceback); + zero = PyInt_FromLong (0); + + /* Check whether obj is positive. */ + if (PyObject_RichCompareBool (obj, zero, Py_GT) > 0) + { + ULONGEST ul; + + ul = PyLong_AsUnsignedLongLong (obj); + if (! PyErr_Occurred ()) + value = value_from_ulongest (builtin_type_upylong, ul); + } + else + /* There's nothing we can do. */ + PyErr_Restore (etype, evalue, etraceback); + + Py_DECREF (zero); + } + } + else value = value_from_longest (builtin_type_pylong, l); } else if (PyFloat_Check (obj)) @@ -937,8 +1016,16 @@ convert_value_from_python (PyObject *obj) } else if (PyObject_TypeCheck (obj, &value_object_type)) value = value_copy (((value_object *) obj)->value); + else if (gdbpy_is_lazy_string (obj)) + { + PyObject *result; + PyObject *function = PyString_FromString ("value"); + + result = PyObject_CallMethodObjArgs (obj, function, NULL); + value = value_copy (((value_object *) result)->value); + } else - PyErr_Format (PyExc_TypeError, _("Could not convert Python object: %s"), + PyErr_Format (PyExc_TypeError, _("Could not convert Python object: %s."), PyString_AsString (PyObject_Str (obj))); } if (except.reason < 0) @@ -972,6 +1059,14 @@ gdbpy_history (PyObject *self, PyObject *args) return value_to_value_object (res_val); } +/* Returns 1 in OBJ is a gdb.Value object, 0 otherwise. */ + +int +gdbpy_is_value_object (PyObject *obj) +{ + return PyObject_TypeCheck (obj, &value_object_type); +} + void gdbpy_initialize_values (void) { @@ -999,6 +1094,9 @@ static PyGetSetDef value_object_getset[] = { static PyMethodDef value_object_methods[] = { { "cast", valpy_cast, METH_VARARGS, "Cast the value to the supplied type." }, { "dereference", valpy_dereference, METH_NOARGS, "Dereferences the value." }, + { "lazy_string", (PyCFunction) valpy_lazy_string, METH_VARARGS | METH_KEYWORDS, + "lazy_string ([encoding] [, length]) -> lazy_string\n\ +Return a lazy string representation of the value." }, { "string", (PyCFunction) valpy_string, METH_VARARGS | METH_KEYWORDS, "string ([encoding] [, errors] [, length]) -> string\n\ Return Unicode string representation of the value." }, @@ -1052,7 +1150,7 @@ PyTypeObject value_object_type = { &value_object_as_number, /*tp_as_number*/ 0, /*tp_as_sequence*/ &value_object_as_mapping, /*tp_as_mapping*/ - 0, /*tp_hash */ + valpy_hash, /*tp_hash*/ 0, /*tp_call*/ valpy_str, /*tp_str*/ 0, /*tp_getattro*/ diff --git a/contrib/gdb-7/gdb/python/python-internal.h b/contrib/gdb-7/gdb/python/python-internal.h deleted file mode 100644 index 67a78af083..0000000000 --- a/contrib/gdb-7/gdb/python/python-internal.h +++ /dev/null @@ -1,134 +0,0 @@ -/* Gdb/Python header for private use by Python module. - - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - -#ifndef GDB_PYTHON_INTERNAL_H -#define GDB_PYTHON_INTERNAL_H - -/* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t - needed by pyport.h. */ -#include - -/* /usr/include/features.h on linux systems will define _POSIX_C_SOURCE - if it sees _GNU_SOURCE (which config.h will define). - pyconfig.h defines _POSIX_C_SOURCE to a different value than - /usr/include/features.h does causing compilation to fail. - To work around this, undef _POSIX_C_SOURCE before we include Python.h. */ -#undef _POSIX_C_SOURCE - -#if HAVE_LIBPYTHON2_4 -#include "python2.4/Python.h" -#include "python2.4/frameobject.h" -/* Py_ssize_t is not defined until 2.5. - Logical type for Py_ssize_t is Py_intptr_t, but that fails in 64-bit - compilation due to several apparent mistakes in python2.4 API, so we - use 'int' instead. */ -typedef int Py_ssize_t; -#elif HAVE_LIBPYTHON2_5 -#include "python2.5/Python.h" -#include "python2.5/frameobject.h" -#elif HAVE_LIBPYTHON2_6 -#include "python2.6/Python.h" -#include "python2.6/frameobject.h" -#else -#error "Unable to find usable Python.h" -#endif - -/* If Python.h does not define WITH_THREAD, then the various - GIL-related functions will not be defined. However, - PyGILState_STATE will be. */ -#ifndef WITH_THREAD -#define PyGILState_Ensure() ((PyGILState_STATE) 0) -#define PyGILState_Release(ARG) (ARG) -#define PyEval_InitThreads() 0 -#define PyThreadState_Swap(ARG) (ARG) -#define PyEval_InitThreads() 0 -#define PyEval_ReleaseLock() 0 -#endif - -struct value; -struct language_defn; - -extern PyObject *gdb_module; -extern PyTypeObject value_object_type; - -PyObject *gdbpy_history (PyObject *self, PyObject *args); -PyObject *gdbpy_frame_stop_reason_string (PyObject *, PyObject *); -PyObject *gdbpy_selected_frame (PyObject *self, PyObject *args); -PyObject *gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw); - -PyObject *value_to_value_object (struct value *v); -PyObject *type_to_type_object (struct type *); -PyObject *objfile_to_objfile_object (struct objfile *); - -PyObject *objfpy_get_printers (PyObject *, void *); - -struct value *value_object_to_value (PyObject *self); -struct value *convert_value_from_python (PyObject *obj); -struct type *type_object_to_type (PyObject *obj); - -void gdbpy_initialize_values (void); -void gdbpy_initialize_frames (void); -void gdbpy_initialize_commands (void); -void gdbpy_initialize_types (void); -void gdbpy_initialize_functions (void); -void gdbpy_initialize_objfile (void); - -struct cleanup *make_cleanup_py_decref (PyObject *py); - -struct cleanup *ensure_python_env (struct gdbarch *gdbarch, - const struct language_defn *language); - -extern struct gdbarch *python_gdbarch; -extern const struct language_defn *python_language; - -/* Use this after a TRY_EXCEPT to throw the appropriate Python - exception. */ -#define GDB_PY_HANDLE_EXCEPTION(Exception) \ - do { \ - if (Exception.reason < 0) \ - return PyErr_Format (Exception.reason == RETURN_QUIT \ - ? PyExc_KeyboardInterrupt : PyExc_RuntimeError, \ - "%s", Exception.message); \ - } while (0) - - -void gdbpy_print_stack (void); - -PyObject *python_string_to_unicode (PyObject *obj); -char *unicode_to_target_string (PyObject *unicode_str); -char *python_string_to_target_string (PyObject *obj); -PyObject *python_string_to_target_python_string (PyObject *obj); -char *python_string_to_host_string (PyObject *obj); -PyObject *target_string_to_unicode (const gdb_byte *str, int length); -int gdbpy_is_string (PyObject *obj); - -/* Note that these are declared here, and not in python.h with the - other pretty-printer functions, because they refer to PyObject. */ -PyObject *apply_varobj_pretty_printer (PyObject *print_obj, - struct value **replacement); -PyObject *gdbpy_get_varobj_pretty_printer (struct value *value); -char *gdbpy_get_display_hint (PyObject *printer); -PyObject *gdbpy_default_visualizer (PyObject *self, PyObject *args); - -extern PyObject *gdbpy_doc_cst; -extern PyObject *gdbpy_children_cst; -extern PyObject *gdbpy_to_string_cst; -extern PyObject *gdbpy_display_hint_cst; - -#endif /* GDB_PYTHON_INTERNAL_H */ diff --git a/contrib/gdb-7/gdb/python/python.c b/contrib/gdb-7/gdb/python/python.c index 254bd280a1..7346fbaaef 100644 --- a/contrib/gdb-7/gdb/python/python.c +++ b/contrib/gdb-7/gdb/python/python.c @@ -1,6 +1,6 @@ /* General python/gdb code - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -23,10 +23,11 @@ #include "ui-out.h" #include "cli/cli-script.h" #include "gdbcmd.h" +#include "progspace.h" #include "objfiles.h" -#include "observer.h" #include "value.h" #include "language.h" +#include "exceptions.h" #include @@ -34,10 +35,6 @@ false otherwise. */ static int gdbpy_should_print_stack = 1; -/* This is true if we should auto-load python code when an objfile is - opened, false otherwise. */ -static int gdbpy_auto_load = 1; - #ifdef HAVE_PYTHON #include "python.h" @@ -45,7 +42,6 @@ static int gdbpy_auto_load = 1; #include "cli/cli-decode.h" #include "charset.h" #include "top.h" -#include "exceptions.h" #include "python-internal.h" #include "version.h" #include "target.h" @@ -60,7 +56,10 @@ PyObject *gdbpy_to_string_cst; PyObject *gdbpy_children_cst; PyObject *gdbpy_display_hint_cst; PyObject *gdbpy_doc_cst; +PyObject *gdbpy_enabled_cst; +/* The GdbError exception. */ +PyObject *gdbpy_gdberror_exc; /* Architecture and language to be used in callbacks from the Python interpreter. */ @@ -81,6 +80,7 @@ static void restore_python_env (void *p) { struct python_env *env = (struct python_env *)p; + PyGILState_Release (env->state); python_gdbarch = env->gdbarch; python_language = env->language; @@ -128,6 +128,7 @@ compute_python_string (struct command_line *l) for (iter = l; iter; iter = iter->next) { int len = strlen (iter->line); + strcpy (&script[here], iter->line); here += len; script[here++] = '\n'; @@ -169,8 +170,8 @@ static void python_command (char *arg, int from_tty) { struct cleanup *cleanup; - cleanup = ensure_python_env (get_current_arch (), current_language); + cleanup = ensure_python_env (get_current_arch (), current_language); while (arg && *arg && isspace (*arg)) ++arg; if (arg && *arg) @@ -184,6 +185,7 @@ python_command (char *arg, int from_tty) else { struct command_line *l = get_command_line (python_control, ""); + make_cleanup_free_command_lines (&l); execute_control_command_untraced (l); } @@ -196,11 +198,10 @@ python_command (char *arg, int from_tty) /* Transform a gdb parameters's value into a Python value. May return NULL (and set a Python exception) on error. Helper function for get_parameter. */ - -static PyObject * -parameter_to_python (struct cmd_list_element *cmd) +PyObject * +gdbpy_parameter_value (enum var_types type, void *var) { - switch (cmd->var_type) + switch (type) { case var_string: case var_string_noescape: @@ -208,7 +209,8 @@ parameter_to_python (struct cmd_list_element *cmd) case var_filename: case var_enum: { - char *str = * (char **) cmd->var; + char *str = * (char **) var; + if (! str) str = ""; return PyString_Decode (str, strlen (str), host_charset (), NULL); @@ -216,7 +218,7 @@ parameter_to_python (struct cmd_list_element *cmd) case var_boolean: { - if (* (int *) cmd->var) + if (* (int *) var) Py_RETURN_TRUE; else Py_RETURN_FALSE; @@ -224,7 +226,8 @@ parameter_to_python (struct cmd_list_element *cmd) case var_auto_boolean: { - enum auto_boolean ab = * (enum auto_boolean *) cmd->var; + enum auto_boolean ab = * (enum auto_boolean *) var; + if (ab == AUTO_BOOLEAN_TRUE) Py_RETURN_TRUE; else if (ab == AUTO_BOOLEAN_FALSE) @@ -234,28 +237,30 @@ parameter_to_python (struct cmd_list_element *cmd) } case var_integer: - if ((* (int *) cmd->var) == INT_MAX) + if ((* (int *) var) == INT_MAX) Py_RETURN_NONE; /* Fall through. */ case var_zinteger: - return PyLong_FromLong (* (int *) cmd->var); + return PyLong_FromLong (* (int *) var); case var_uinteger: { - unsigned int val = * (unsigned int *) cmd->var; + unsigned int val = * (unsigned int *) var; + if (val == UINT_MAX) Py_RETURN_NONE; return PyLong_FromUnsignedLong (val); } } - return PyErr_Format (PyExc_RuntimeError, "programmer error: unhandled type"); + return PyErr_Format (PyExc_RuntimeError, + _("Programmer error: unhandled type.")); } /* A Python function which returns a gdb parameter's value as a Python value. */ -static PyObject * +PyObject * gdbpy_parameter (PyObject *self, PyObject *args) { struct cmd_list_element *alias, *prefix, *cmd; @@ -276,49 +281,137 @@ gdbpy_parameter (PyObject *self, PyObject *args) GDB_PY_HANDLE_EXCEPTION (except); if (!found) return PyErr_Format (PyExc_RuntimeError, - "could not find parameter `%s'", arg); + _("Could not find parameter `%s'."), arg); if (! cmd->var) - return PyErr_Format (PyExc_RuntimeError, "`%s' is not a parameter", arg); - return parameter_to_python (cmd); + return PyErr_Format (PyExc_RuntimeError, + _("`%s' is not a parameter."), arg); + return gdbpy_parameter_value (cmd->var_type, cmd->var); +} + +/* Wrapper for target_charset. */ + +static PyObject * +gdbpy_target_charset (PyObject *self, PyObject *args) +{ + const char *cset = target_charset (python_gdbarch); + + return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL); +} + +/* Wrapper for target_wide_charset. */ + +static PyObject * +gdbpy_target_wide_charset (PyObject *self, PyObject *args) +{ + const char *cset = target_wide_charset (python_gdbarch); + + return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL); } /* A Python function which evaluates a string using the gdb CLI. */ static PyObject * -execute_gdb_command (PyObject *self, PyObject *args) +execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw) { - struct cmd_list_element *alias, *prefix, *cmd; - char *arg, *newarg; - PyObject *from_tty_obj = NULL; - int from_tty; - int cmp; + char *arg; + PyObject *from_tty_obj = NULL, *to_string_obj = NULL; + int from_tty, to_string; volatile struct gdb_exception except; + static char *keywords[] = {"command", "from_tty", "to_string", NULL }; + char *result = NULL; - if (! PyArg_ParseTuple (args, "s|O!", &arg, &PyBool_Type, &from_tty_obj)) + if (! PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg, + &PyBool_Type, &from_tty_obj, + &PyBool_Type, &to_string_obj)) return NULL; from_tty = 0; if (from_tty_obj) { - cmp = PyObject_IsTrue (from_tty_obj); + int cmp = PyObject_IsTrue (from_tty_obj); if (cmp < 0) - return NULL; + return NULL; from_tty = cmp; } + to_string = 0; + if (to_string_obj) + { + int cmp = PyObject_IsTrue (to_string_obj); + if (cmp < 0) + return NULL; + to_string = cmp; + } + TRY_CATCH (except, RETURN_MASK_ALL) { - execute_command (arg, from_tty); + /* Copy the argument text in case the command modifies it. */ + char *copy = xstrdup (arg); + struct cleanup *cleanup = make_cleanup (xfree, copy); + + if (to_string) + result = execute_command_to_string (copy, from_tty); + else + { + result = NULL; + execute_command (copy, from_tty); + } + + do_cleanups (cleanup); } GDB_PY_HANDLE_EXCEPTION (except); /* Do any commands attached to breakpoint we stopped at. */ bpstat_do_actions (); + if (result) + { + PyObject *r = PyString_FromString (result); + xfree (result); + return r; + } Py_RETURN_NONE; } +/* Parse a string and evaluate it as an expression. */ +static PyObject * +gdbpy_parse_and_eval (PyObject *self, PyObject *args) +{ + char *expr_str; + struct value *result = NULL; + volatile struct gdb_exception except; + + if (!PyArg_ParseTuple (args, "s", &expr_str)) + return NULL; + + TRY_CATCH (except, RETURN_MASK_ALL) + { + result = parse_and_eval (expr_str); + } + GDB_PY_HANDLE_EXCEPTION (except); + + return value_to_value_object (result); +} + +/* Read a file as Python code. STREAM is the input file; FILE is the + name of the file. + STREAM is not closed, that is the caller's responsibility. */ + +void +source_python_script (FILE *stream, const char *file) +{ + struct cleanup *cleanup; + + cleanup = ensure_python_env (get_current_arch (), current_language); + + /* Note: If an exception occurs python will print the traceback and + clear the error indicator. */ + PyRun_SimpleFile (stream, file); + + do_cleanups (cleanup); +} + /* Printing. */ @@ -329,6 +422,7 @@ static PyObject * gdbpy_write (PyObject *self, PyObject *args) { char *arg; + if (! PyArg_ParseTuple (args, "s", &arg)) return NULL; printf_filtered ("%s", arg); @@ -350,93 +444,88 @@ void gdbpy_print_stack (void) { if (gdbpy_should_print_stack) - PyErr_Print (); + { + PyErr_Print (); + /* PyErr_Print doesn't necessarily end output with a newline. + This works because Python's stdout/stderr is fed through + printf_filtered. */ + begin_line (); + } else PyErr_Clear (); } -/* The "current" objfile. This is set when gdb detects that a new - objfile has been loaded. It is only set for the duration of a call - to gdbpy_new_objfile; it is NULL at other times. */ -static struct objfile *gdbpy_current_objfile; +/* Return the current Progspace. + There always is one. */ -/* The file name we attempt to read. */ -#define GDBPY_AUTO_FILENAME "-gdb.py" +static PyObject * +gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2) +{ + PyObject *result; -/* This is a new_objfile observer callback which loads python code - based on the path to the objfile. */ -static void -gdbpy_new_objfile (struct objfile *objfile) + result = pspace_to_pspace_object (current_program_space); + if (result) + Py_INCREF (result); + return result; +} + +/* Return a sequence holding all the Progspaces. */ + +static PyObject * +gdbpy_progspaces (PyObject *unused1, PyObject *unused2) { - char *realname; - char *filename, *debugfile; - int len; - FILE *input; - struct cleanup *cleanups; + struct program_space *ps; + PyObject *list; - if (!gdbpy_auto_load || !objfile || !objfile->name) - return; + list = PyList_New (0); + if (!list) + return NULL; - cleanups = ensure_python_env (get_objfile_arch (objfile), current_language); + ALL_PSPACES (ps) + { + PyObject *item = pspace_to_pspace_object (ps); - gdbpy_current_objfile = objfile; + if (!item || PyList_Append (list, item) == -1) + { + Py_DECREF (list); + return NULL; + } + } - realname = gdb_realpath (objfile->name); - len = strlen (realname); - filename = xmalloc (len + sizeof (GDBPY_AUTO_FILENAME)); - memcpy (filename, realname, len); - strcpy (filename + len, GDBPY_AUTO_FILENAME); + return list; +} - input = fopen (filename, "r"); - debugfile = filename; + - make_cleanup (xfree, filename); - make_cleanup (xfree, realname); +/* The "current" objfile. This is set when gdb detects that a new + objfile has been loaded. It is only set for the duration of a call to + source_python_script_for_objfile; it is NULL at other times. */ +static struct objfile *gdbpy_current_objfile; - if (!input && debug_file_directory) - { - /* Also try the same file in the separate debug info directory. */ - debugfile = xmalloc (strlen (filename) - + strlen (debug_file_directory) + 1); - strcpy (debugfile, debug_file_directory); - /* FILENAME is absolute, so we don't need a "/" here. */ - strcat (debugfile, filename); - - make_cleanup (xfree, debugfile); - input = fopen (debugfile, "r"); - } +/* Set the current objfile to OBJFILE and then read STREAM,FILE as + Python code. */ - if (!input && gdb_datadir) - { - /* Also try the same file in a subdirectory of gdb's data - directory. */ - debugfile = xmalloc (strlen (gdb_datadir) + strlen (filename) - + strlen ("/auto-load") + 1); - strcpy (debugfile, gdb_datadir); - strcat (debugfile, "/auto-load"); - /* FILENAME is absolute, so we don't need a "/" here. */ - strcat (debugfile, filename); - - make_cleanup (xfree, debugfile); - input = fopen (debugfile, "r"); - } +void +source_python_script_for_objfile (struct objfile *objfile, + FILE *stream, const char *file) +{ + struct cleanup *cleanups; - if (input) - { - /* We don't want to throw an exception here -- but the user - would like to know that something went wrong. */ - if (PyRun_SimpleFile (input, debugfile)) - gdbpy_print_stack (); - fclose (input); - } + cleanups = ensure_python_env (get_objfile_arch (objfile), current_language); + gdbpy_current_objfile = objfile; + + /* Note: If an exception occurs python will print the traceback and + clear the error indicator. */ + PyRun_SimpleFile (stream, file); do_cleanups (cleanups); gdbpy_current_objfile = NULL; } /* Return the current Objfile, or None if there isn't one. */ + static PyObject * gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2) { @@ -452,6 +541,7 @@ gdbpy_get_current_objfile (PyObject *unused1, PyObject *unused2) } /* Return a sequence holding all the Objfiles. */ + static PyObject * gdbpy_objfiles (PyObject *unused1, PyObject *unused2) { @@ -465,6 +555,7 @@ gdbpy_objfiles (PyObject *unused1, PyObject *unused2) ALL_OBJFILES (objf) { PyObject *item = objfile_to_objfile_object (objf); + if (!item || PyList_Append (list, item) == -1) { Py_DECREF (list); @@ -490,6 +581,7 @@ python_command (char *arg, int from_tty) { struct command_line *l = get_command_line (python_control, ""); struct cleanup *cleanups = make_cleanup_free_command_lines (&l); + execute_control_command_untraced (l); do_cleanups (cleanups); } @@ -501,14 +593,21 @@ eval_python_from_control_command (struct command_line *cmd) error (_("Python scripting is not supported in this copy of GDB.")); } +void +source_python_script (FILE *stream, const char *file) +{ + throw_error (UNSUPPORTED_ERROR, + _("Python scripting is not supported in this copy of GDB.")); +} + #endif /* HAVE_PYTHON */ /* Lists for 'maint set python' commands. */ -static struct cmd_list_element *set_python_list; -static struct cmd_list_element *show_python_list; +struct cmd_list_element *set_python_list; +struct cmd_list_element *show_python_list; /* Function for use by 'maint set python' prefix command. */ @@ -573,16 +672,18 @@ Enables or disables printing of Python stack traces."), &set_python_list, &show_python_list); - add_setshow_boolean_cmd ("auto-load", class_maintenance, - &gdbpy_auto_load, _("\ -Enable or disable auto-loading of Python code when an object is opened."), _("\ -Show whether Python code will be auto-loaded when an object is opened."), _("\ -Enables or disables auto-loading of Python code when an object is opened."), - NULL, NULL, - &set_python_list, - &show_python_list); - #ifdef HAVE_PYTHON +#ifdef WITH_PYTHON_PATH + /* Work around problem where python gets confused about where it is, + and then can't find its libraries, etc. + NOTE: Python assumes the following layout: + /foo/bin/python + /foo/lib/pythonX.Y/... + This must be done before calling Py_Initialize. */ + Py_SetProgramName (concat (ldirname (python_libdir), SLASH_STRING, "bin", + SLASH_STRING, "python", NULL)); +#endif + Py_Initialize (); PyEval_InitThreads (); @@ -592,23 +693,42 @@ Enables or disables auto-loading of Python code when an object is opened."), PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version); PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", (char*) host_name); PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG", (char*) target_name); + { + char *gdb_pythondir; + + gdb_pythondir = concat (gdb_datadir, SLASH_STRING, "python", NULL); + PyModule_AddStringConstant (gdb_module, "PYTHONDIR", gdb_pythondir); + xfree (gdb_pythondir); + } + gdbpy_gdberror_exc = PyErr_NewException ("gdb.GdbError", NULL, NULL); + PyModule_AddObject (gdb_module, "GdbError", gdbpy_gdberror_exc); + + gdbpy_initialize_auto_load (); gdbpy_initialize_values (); gdbpy_initialize_frames (); gdbpy_initialize_commands (); + gdbpy_initialize_symbols (); + gdbpy_initialize_symtabs (); + gdbpy_initialize_blocks (); gdbpy_initialize_functions (); + gdbpy_initialize_parameters (); gdbpy_initialize_types (); + gdbpy_initialize_pspace (); gdbpy_initialize_objfile (); + gdbpy_initialize_breakpoints (); + gdbpy_initialize_lazy_string (); + gdbpy_initialize_thread (); + gdbpy_initialize_inferior (); PyRun_SimpleString ("import gdb"); PyRun_SimpleString ("gdb.pretty_printers = []"); - observer_attach_new_objfile (gdbpy_new_objfile); - gdbpy_to_string_cst = PyString_FromString ("to_string"); gdbpy_children_cst = PyString_FromString ("children"); gdbpy_display_hint_cst = PyString_FromString ("display_hint"); gdbpy_doc_cst = PyString_FromString ("__doc__"); + gdbpy_enabled_cst = PyString_FromString ("enabled"); /* Create a couple objects which are used for Python's stdout and stderr. */ @@ -634,6 +754,20 @@ class GdbOutputFile:\n\ \n\ sys.stderr = GdbOutputFile()\n\ sys.stdout = GdbOutputFile()\n\ +\n\ +# GDB's python scripts are stored inside gdb.PYTHONDIR. So insert\n\ +# that directory name at the start of sys.path to allow the Python\n\ +# interpreter to find them.\n\ +sys.path.insert(0, gdb.PYTHONDIR)\n\ +\n\ +# The gdb module is implemented in C rather than in Python. As a result,\n\ +# the associated __init.py__ script is not not executed by default when\n\ +# the gdb module gets imported. Execute that script manually if it exists.\n\ +gdb.__path__ = [gdb.PYTHONDIR + '/gdb']\n\ +from os.path import exists\n\ +ipy = gdb.PYTHONDIR + '/gdb/__init__.py'\n\ +if exists (ipy):\n\ + execfile (ipy)\n\ "); /* Release the GIL while gdb runs. */ @@ -651,14 +785,22 @@ static PyMethodDef GdbMethods[] = { { "history", gdbpy_history, METH_VARARGS, "Get a value from history" }, - { "execute", execute_gdb_command, METH_VARARGS, + { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS, "Execute a gdb command" }, { "parameter", gdbpy_parameter, METH_VARARGS, "Return a gdb parameter's value" }, + { "breakpoints", gdbpy_breakpoints, METH_NOARGS, + "Return a tuple of all breakpoint objects" }, + { "default_visualizer", gdbpy_default_visualizer, METH_VARARGS, "Find the default visualizer for a Value." }, + { "current_progspace", gdbpy_get_current_progspace, METH_NOARGS, + "Return the current Progspace." }, + { "progspaces", gdbpy_progspaces, METH_NOARGS, + "Return a sequence of all progspaces." }, + { "current_objfile", gdbpy_get_current_objfile, METH_NOARGS, "Return the current Objfile being loaded, or None." }, { "objfiles", gdbpy_objfiles, METH_NOARGS, @@ -675,12 +817,42 @@ Return a string explaining unwind stop reason." }, METH_VARARGS | METH_KEYWORDS, "lookup_type (name [, block]) -> type\n\ Return a Type corresponding to the given name." }, + { "lookup_symbol", (PyCFunction) gdbpy_lookup_symbol, + METH_VARARGS | METH_KEYWORDS, + "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\ +Return a tuple with the symbol corresponding to the given name (or None) and\n\ +a boolean indicating if name is a field of the current implied argument\n\ +`this' (when the current language is object-oriented)." }, + { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS, + "Return the block containing the given pc value, or None." }, + { "parse_and_eval", gdbpy_parse_and_eval, METH_VARARGS, + "parse_and_eval (String) -> Value.\n\ +Parse String as an expression, evaluate it, and return the result as a Value." + }, + + { "target_charset", gdbpy_target_charset, METH_NOARGS, + "target_charset () -> string.\n\ +Return the name of the current target charset." }, + { "target_wide_charset", gdbpy_target_wide_charset, METH_NOARGS, + "target_wide_charset () -> string.\n\ +Return the name of the current target wide charset." }, + + { "string_to_argv", gdbpy_string_to_argv, METH_VARARGS, + "string_to_argv (String) -> Array.\n\ +Parse String and return an argv-like array.\n\ +Arguments are separate by spaces and may be quoted." + }, { "write", gdbpy_write, METH_VARARGS, "Write a string using gdb's filtered stream." }, { "flush", gdbpy_flush, METH_NOARGS, "Flush gdb's filtered stdout stream." }, - + { "selected_thread", gdbpy_selected_thread, METH_NOARGS, + "selected_thread () -> gdb.InferiorThread.\n\ +Return the selected thread object." }, + { "inferiors", gdbpy_inferiors, METH_NOARGS, + "inferiors () -> (gdb.Inferior, ...).\n\ +Return a tuple containing all inferiors." }, {NULL, NULL, 0, NULL} }; diff --git a/contrib/gdb-7/gdb/python/python.h b/contrib/gdb-7/gdb/python/python.h index e97018090c..affd4a4384 100644 --- a/contrib/gdb-7/gdb/python/python.h +++ b/contrib/gdb-7/gdb/python/python.h @@ -1,6 +1,6 @@ /* Python/gdb header for generic use in gdb - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -22,14 +22,21 @@ #include "value.h" +extern int gdbpy_global_auto_load; + void eval_python_from_control_command (struct command_line *); +void source_python_script (FILE *stream, const char *file); + int apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, const struct language_defn *language); void preserve_python_values (struct objfile *objfile, htab_t copied_types); +void load_auto_scripts_for_objfile (struct objfile *objfile); + #endif /* GDB_PYTHON_H */ diff --git a/contrib/gdb-7/gdb/record.c b/contrib/gdb-7/gdb/record.c index f71f3fffd0..3698b586ea 100644 --- a/contrib/gdb-7/gdb/record.c +++ b/contrib/gdb-7/gdb/record.c @@ -1,6 +1,6 @@ /* Process record and replay target for GDB, the GNU debugger. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -23,15 +23,43 @@ #include "gdbthread.h" #include "event-top.h" #include "exceptions.h" +#include "completer.h" +#include "arch-utils.h" +#include "gdbcore.h" +#include "exec.h" #include "record.h" +#include "elf-bfd.h" +#include "gcore.h" #include +/* This module implements "target record", also known as "process + record and replay". This target sits on top of a "normal" target + (a target that "has execution"), and provides a record and replay + functionality, including reverse debugging. + + Target record has two modes: recording, and replaying. + + In record mode, we intercept the to_resume and to_wait methods. + Whenever gdb resumes the target, we run the target in single step + mode, and we build up an execution log in which, for each executed + instruction, we record all changes in memory and register state. + This is invisible to the user, to whom it just looks like an + ordinary debugging session (except for performance degredation). + + In replay mode, instead of actually letting the inferior run as a + process, we simulate its execution by playing back the recorded + execution log. For each instruction in the log, we simulate the + instruction's side effects by duplicating the changes that it would + have made on memory and registers. */ + #define DEFAULT_RECORD_INSN_MAX_NUM 200000 #define RECORD_IS_REPLAY \ (record_list->next || execution_direction == EXEC_REVERSE) +#define RECORD_FILE_MAGIC netorder32(0x20091016) + /* These are the core structs of the process record functionality. A record_entry is a record of the value change of a register @@ -43,12 +71,6 @@ Each struct record_entry is linked to "record_list" by "prev" and "next" pointers. */ -struct record_reg_entry -{ - int num; - gdb_byte *val; -}; - struct record_mem_entry { CORE_ADDR addr; @@ -56,12 +78,28 @@ struct record_mem_entry /* Set this flag if target memory for this entry can no longer be accessed. */ int mem_entry_not_accessible; - gdb_byte *val; + union + { + gdb_byte *ptr; + gdb_byte buf[sizeof (gdb_byte *)]; + } u; +}; + +struct record_reg_entry +{ + unsigned short num; + unsigned short len; + union + { + gdb_byte *ptr; + gdb_byte buf[2 * sizeof (gdb_byte *)]; + } u; }; struct record_end_entry { enum target_signal sigval; + ULONGEST insn_num; }; enum record_type @@ -71,6 +109,30 @@ enum record_type record_mem }; +/* This is the data structure that makes up the execution log. + + The execution log consists of a single linked list of entries + of type "struct record_entry". It is doubly linked so that it + can be traversed in either direction. + + The start of the list is anchored by a struct called + "record_first". The pointer "record_list" either points to the + last entry that was added to the list (in record mode), or to the + next entry in the list that will be executed (in replay mode). + + Each list element (struct record_entry), in addition to next and + prev pointers, consists of a union of three entry types: mem, reg, + and end. A field called "type" determines which entry type is + represented by a given list element. + + Each instruction that is added to the execution log is represented + by a variable number of list elements ('entries'). The instruction + will have one "reg" entry for each register that is changed by + executing the instruction (including the PC in every case). It + will also have one "mem" entry for each memory change. Finally, + each instruction will have an "end" entry that separates it from + the changes associated with the next instruction. */ + struct record_entry { struct record_entry *prev; @@ -90,7 +152,39 @@ struct record_entry /* This is the debug switch for process record. */ int record_debug = 0; -/* These list is for execution log. */ +/* If true, query if PREC cannot record memory + change of next instruction. */ +int record_memory_query = 0; + +struct record_core_buf_entry +{ + struct record_core_buf_entry *prev; + struct target_section *p; + bfd_byte *buf; +}; + +/* Record buf with core target. */ +static gdb_byte *record_core_regbuf = NULL; +static struct target_section *record_core_start; +static struct target_section *record_core_end; +static struct record_core_buf_entry *record_core_buf_list = NULL; + +/* The following variables are used for managing the linked list that + represents the execution log. + + record_first is the anchor that holds down the beginning of the list. + + record_list serves two functions: + 1) In record mode, it anchors the end of the list. + 2) In replay mode, it traverses the list and points to + the next instruction that must be emulated. + + record_arch_list_head and record_arch_list_tail are used to manage + a separate list, which is used to build up the change elements of + the currently executing instruction during record mode. When this + instruction has been completely annotated in the "arch list", it + will be appended to the main execution log. */ + static struct record_entry record_first; static struct record_entry *record_list = &record_first; static struct record_entry *record_arch_list_head = NULL; @@ -98,11 +192,17 @@ static struct record_entry *record_arch_list_tail = NULL; /* 1 ask user. 0 auto delete the last struct record_entry. */ static int record_stop_at_limit = 1; -static int record_insn_max_num = DEFAULT_RECORD_INSN_MAX_NUM; +/* Maximum allowed number of insns in execution log. */ +static unsigned int record_insn_max_num = DEFAULT_RECORD_INSN_MAX_NUM; +/* Actual count of insns presently in execution log. */ static int record_insn_num = 0; +/* Count of insns logged so far (may be larger + than count of insns presently in execution log). */ +static ULONGEST record_insn_count; /* The target_ops of process record. */ static struct target_ops record_ops; +static struct target_ops record_core_ops; /* The beneath function pointers. */ static struct target_ops *record_beneath_to_resume_ops; @@ -128,89 +228,190 @@ static int (*record_beneath_to_insert_breakpoint) (struct gdbarch *, struct bp_target_info *); static int (*record_beneath_to_remove_breakpoint) (struct gdbarch *, struct bp_target_info *); +static int (*record_beneath_to_stopped_by_watchpoint) (void); +static int (*record_beneath_to_stopped_data_address) (struct target_ops *, + CORE_ADDR *); + +/* Alloc and free functions for record_reg, record_mem, and record_end + entries. */ + +/* Alloc a record_reg record entry. */ + +static inline struct record_entry * +record_reg_alloc (struct regcache *regcache, int regnum) +{ + struct record_entry *rec; + struct gdbarch *gdbarch = get_regcache_arch (regcache); + + rec = (struct record_entry *) xcalloc (1, sizeof (struct record_entry)); + rec->type = record_reg; + rec->u.reg.num = regnum; + rec->u.reg.len = register_size (gdbarch, regnum); + if (rec->u.reg.len > sizeof (rec->u.reg.u.buf)) + rec->u.reg.u.ptr = (gdb_byte *) xmalloc (rec->u.reg.len); + + return rec; +} + +/* Free a record_reg record entry. */ + +static inline void +record_reg_release (struct record_entry *rec) +{ + gdb_assert (rec->type == record_reg); + if (rec->u.reg.len > sizeof (rec->u.reg.u.buf)) + xfree (rec->u.reg.u.ptr); + xfree (rec); +} + +/* Alloc a record_mem record entry. */ + +static inline struct record_entry * +record_mem_alloc (CORE_ADDR addr, int len) +{ + struct record_entry *rec; + + rec = (struct record_entry *) xcalloc (1, sizeof (struct record_entry)); + rec->type = record_mem; + rec->u.mem.addr = addr; + rec->u.mem.len = len; + if (rec->u.mem.len > sizeof (rec->u.mem.u.buf)) + rec->u.mem.u.ptr = (gdb_byte *) xmalloc (len); + + return rec; +} + +/* Free a record_mem record entry. */ + +static inline void +record_mem_release (struct record_entry *rec) +{ + gdb_assert (rec->type == record_mem); + if (rec->u.mem.len > sizeof (rec->u.mem.u.buf)) + xfree (rec->u.mem.u.ptr); + xfree (rec); +} + +/* Alloc a record_end record entry. */ + +static inline struct record_entry * +record_end_alloc (void) +{ + struct record_entry *rec; + + rec = (struct record_entry *) xcalloc (1, sizeof (struct record_entry)); + rec->type = record_end; + + return rec; +} + +/* Free a record_end record entry. */ + +static inline void +record_end_release (struct record_entry *rec) +{ + xfree (rec); +} + +/* Free one record entry, any type. + Return entry->type, in case caller wants to know. */ + +static inline enum record_type +record_entry_release (struct record_entry *rec) +{ + enum record_type type = rec->type; + + switch (type) { + case record_reg: + record_reg_release (rec); + break; + case record_mem: + record_mem_release (rec); + break; + case record_end: + record_end_release (rec); + break; + } + return type; +} + +/* Free all record entries in list pointed to by REC. */ static void record_list_release (struct record_entry *rec) { - struct record_entry *tmp; - if (!rec) return; while (rec->next) - { - rec = rec->next; - } + rec = rec->next; while (rec->prev) { - tmp = rec; rec = rec->prev; - if (tmp->type == record_reg) - xfree (tmp->u.reg.val); - else if (tmp->type == record_mem) - xfree (tmp->u.mem.val); - xfree (tmp); + record_entry_release (rec->next); } - if (rec != &record_first) - xfree (rec); + if (rec == &record_first) + { + record_insn_num = 0; + record_first.next = NULL; + } + else + record_entry_release (rec); } +/* Free all record entries forward of the given list position. */ + static void -record_list_release_next (void) +record_list_release_following (struct record_entry *rec) { - struct record_entry *rec = record_list; struct record_entry *tmp = rec->next; + rec->next = NULL; while (tmp) { rec = tmp->next; - if (tmp->type == record_end) - record_insn_num--; - else if (tmp->type == record_reg) - xfree (tmp->u.reg.val); - else if (tmp->type == record_mem) - xfree (tmp->u.mem.val); - xfree (tmp); + if (record_entry_release (tmp) == record_end) + { + record_insn_num--; + record_insn_count--; + } tmp = rec; } } +/* Delete the first instruction from the beginning of the log, to make + room for adding a new instruction at the end of the log. + + Note -- this function does not modify record_insn_num. */ + static void record_list_release_first (void) { - struct record_entry *tmp = NULL; - enum record_type type; + struct record_entry *tmp; if (!record_first.next) return; + /* Loop until a record_end. */ while (1) { - type = record_first.next->type; - - if (type == record_reg) - xfree (record_first.next->u.reg.val); - else if (type == record_mem) - xfree (record_first.next->u.mem.val); + /* Cut record_first.next out of the linked list. */ tmp = record_first.next; record_first.next = tmp->next; - xfree (tmp); + tmp->next->prev = &record_first; + + /* tmp is now isolated, and can be deleted. */ + if (record_entry_release (tmp) == record_end) + break; /* End loop at first record_end. */ if (!record_first.next) { gdb_assert (record_insn_num == 1); - break; + break; /* End loop when list is empty. */ } - - record_first.next->prev = &record_first; - - if (type == record_end) - break; } - - record_insn_num--; } /* Add a struct record_entry to record_arch_list. */ @@ -236,10 +437,32 @@ record_arch_list_add (struct record_entry *rec) } } +/* Return the value storage location of a record entry. */ +static inline gdb_byte * +record_get_loc (struct record_entry *rec) +{ + switch (rec->type) { + case record_mem: + if (rec->u.mem.len > sizeof (rec->u.mem.u.buf)) + return rec->u.mem.u.ptr; + else + return rec->u.mem.u.buf; + case record_reg: + if (rec->u.reg.len > sizeof (rec->u.reg.u.buf)) + return rec->u.reg.u.ptr; + else + return rec->u.reg.u.buf; + case record_end: + default: + gdb_assert (0); + return NULL; + } +} + /* Record the value of a register NUM to record_arch_list. */ int -record_arch_list_add_reg (struct regcache *regcache, int num) +record_arch_list_add_reg (struct regcache *regcache, int regnum) { struct record_entry *rec; @@ -247,16 +470,11 @@ record_arch_list_add_reg (struct regcache *regcache, int num) fprintf_unfiltered (gdb_stdlog, "Process record: add register num = %d to " "record list.\n", - num); + regnum); - rec = (struct record_entry *) xmalloc (sizeof (struct record_entry)); - rec->u.reg.val = (gdb_byte *) xmalloc (MAX_REGISTER_SIZE); - rec->prev = NULL; - rec->next = NULL; - rec->type = record_reg; - rec->u.reg.num = num; + rec = record_reg_alloc (regcache, regnum); - regcache_raw_read (regcache, num, rec->u.reg.val); + regcache_raw_read (regcache, regnum, record_get_loc (rec)); record_arch_list_add (rec); @@ -277,27 +495,19 @@ record_arch_list_add_mem (CORE_ADDR addr, int len) "record list.\n", paddress (target_gdbarch, addr), len); - if (!addr) + if (!addr) /* FIXME: Why? Some arch must permit it... */ return 0; - rec = (struct record_entry *) xmalloc (sizeof (struct record_entry)); - rec->u.mem.val = (gdb_byte *) xmalloc (len); - rec->prev = NULL; - rec->next = NULL; - rec->type = record_mem; - rec->u.mem.addr = addr; - rec->u.mem.len = len; - rec->u.mem.mem_entry_not_accessible = 0; + rec = record_mem_alloc (addr, len); - if (target_read_memory (addr, rec->u.mem.val, len)) + if (target_read_memory (addr, record_get_loc (rec), len)) { if (record_debug) fprintf_unfiltered (gdb_stdlog, "Process record: error reading memory at " "addr = %s len = %d.\n", paddress (target_gdbarch, addr), len); - xfree (rec->u.mem.val); - xfree (rec); + record_mem_release (rec); return -1; } @@ -317,11 +527,9 @@ record_arch_list_add_end (void) fprintf_unfiltered (gdb_stdlog, "Process record: add end to arch list.\n"); - rec = (struct record_entry *) xmalloc (sizeof (struct record_entry)); - rec->prev = NULL; - rec->next = NULL; - rec->type = record_end; + rec = record_end_alloc (); rec->u.end.sigval = TARGET_SIGNAL_0; + rec->u.end.insn_num = ++record_insn_count; record_arch_list_add (rec); @@ -340,6 +548,7 @@ record_check_insn_num (int set_terminal) if (record_stop_at_limit) { int q; + if (set_terminal) target_terminal_ours (); q = yquery (_("Do you want to auto delete previous execution " @@ -350,36 +559,30 @@ record_check_insn_num (int set_terminal) if (q) record_stop_at_limit = 0; else - error (_("Process record: inferior program stopped.")); + error (_("Process record: stopped by user.")); } } } } -/* Before inferior step (when GDB record the running message, inferior - only can step), GDB will call this function to record the values to - record_list. This function will call gdbarch_process_record to - record the running message of inferior and set them to - record_arch_list, and add it to record_list. */ - static void -record_message_cleanups (void *ignore) +record_arch_list_cleanups (void *ignore) { record_list_release (record_arch_list_tail); } -struct record_message_args { - struct regcache *regcache; - enum target_signal signal; -}; +/* Before inferior step (when GDB record the running message, inferior + only can step), GDB will call this function to record the values to + record_list. This function will call gdbarch_process_record to + record the running message of inferior and set them to + record_arch_list, and add it to record_list. */ static int -record_message (void *args) +record_message (struct regcache *regcache, enum target_signal signal) { int ret; - struct record_message_args *myargs = args; - struct gdbarch *gdbarch = get_regcache_arch (myargs->regcache); - struct cleanup *old_cleanups = make_cleanup (record_message_cleanups, 0); + struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct cleanup *old_cleanups = make_cleanup (record_arch_list_cleanups, 0); record_arch_list_head = NULL; record_arch_list_tail = NULL; @@ -412,18 +615,18 @@ record_message (void *args) if (record_list != &record_first) /* FIXME better way to check */ { gdb_assert (record_list->type == record_end); - record_list->u.end.sigval = myargs->signal; + record_list->u.end.sigval = signal; } - if (myargs->signal == TARGET_SIGNAL_0 + if (signal == TARGET_SIGNAL_0 || !gdbarch_process_record_signal_p (gdbarch)) ret = gdbarch_process_record (gdbarch, - myargs->regcache, - regcache_read_pc (myargs->regcache)); + regcache, + regcache_read_pc (regcache)); else ret = gdbarch_process_record_signal (gdbarch, - myargs->regcache, - myargs->signal); + regcache, + signal); if (ret > 0) error (_("Process record: inferior program stopped.")); @@ -444,15 +647,29 @@ record_message (void *args) return 1; } +struct record_message_args { + struct regcache *regcache; + enum target_signal signal; +}; + +static int +record_message_wrapper (void *args) +{ + struct record_message_args *record_args = args; + + return record_message (record_args->regcache, record_args->signal); +} + static int -do_record_message (struct regcache *regcache, - enum target_signal signal) +record_message_wrapper_safe (struct regcache *regcache, + enum target_signal signal) { struct record_message_args args; args.regcache = regcache; args.signal = signal; - return catch_errors (record_message, &args, NULL, RETURN_MASK_ALL); + + return catch_errors (record_message_wrapper, &args, NULL, RETURN_MASK_ALL); } /* Set to 1 if record_store_registers and record_xfer_partial @@ -472,11 +689,160 @@ record_gdb_operation_disable_set (void) return old_cleanups; } +/* Flag set to TRUE for target_stopped_by_watchpoint. */ +static int record_hw_watchpoint = 0; + +/* Execute one instruction from the record log. Each instruction in + the log will be represented by an arbitrary sequence of register + entries and memory entries, followed by an 'end' entry. */ + +static inline void +record_exec_insn (struct regcache *regcache, struct gdbarch *gdbarch, + struct record_entry *entry) +{ + switch (entry->type) + { + case record_reg: /* reg */ + { + gdb_byte reg[MAX_REGISTER_SIZE]; + + if (record_debug > 1) + fprintf_unfiltered (gdb_stdlog, + "Process record: record_reg %s to " + "inferior num = %d.\n", + host_address_to_string (entry), + entry->u.reg.num); + + regcache_cooked_read (regcache, entry->u.reg.num, reg); + regcache_cooked_write (regcache, entry->u.reg.num, + record_get_loc (entry)); + memcpy (record_get_loc (entry), reg, entry->u.reg.len); + } + break; + + case record_mem: /* mem */ + { + /* Nothing to do if the entry is flagged not_accessible. */ + if (!entry->u.mem.mem_entry_not_accessible) + { + gdb_byte *mem = alloca (entry->u.mem.len); + + if (record_debug > 1) + fprintf_unfiltered (gdb_stdlog, + "Process record: record_mem %s to " + "inferior addr = %s len = %d.\n", + host_address_to_string (entry), + paddress (gdbarch, entry->u.mem.addr), + entry->u.mem.len); + + if (target_read_memory (entry->u.mem.addr, mem, entry->u.mem.len)) + { + entry->u.mem.mem_entry_not_accessible = 1; + if (record_debug) + warning ("Process record: error reading memory at " + "addr = %s len = %d.", + paddress (gdbarch, entry->u.mem.addr), + entry->u.mem.len); + } + else + { + if (target_write_memory (entry->u.mem.addr, + record_get_loc (entry), + entry->u.mem.len)) + { + entry->u.mem.mem_entry_not_accessible = 1; + if (record_debug) + warning ("Process record: error writing memory at " + "addr = %s len = %d.", + paddress (gdbarch, entry->u.mem.addr), + entry->u.mem.len); + } + else + { + memcpy (record_get_loc (entry), mem, entry->u.mem.len); + + /* We've changed memory --- check if a hardware + watchpoint should trap. Note that this + presently assumes the target beneath supports + continuable watchpoints. On non-continuable + watchpoints target, we'll want to check this + _before_ actually doing the memory change, and + not doing the change at all if the watchpoint + traps. */ + if (hardware_watchpoint_inserted_in_range + (get_regcache_aspace (regcache), + entry->u.mem.addr, entry->u.mem.len)) + record_hw_watchpoint = 1; + } + } + } + } + break; + } +} + +static struct target_ops *tmp_to_resume_ops; +static void (*tmp_to_resume) (struct target_ops *, ptid_t, int, + enum target_signal); +static struct target_ops *tmp_to_wait_ops; +static ptid_t (*tmp_to_wait) (struct target_ops *, ptid_t, + struct target_waitstatus *, + int); +static struct target_ops *tmp_to_store_registers_ops; +static void (*tmp_to_store_registers) (struct target_ops *, + struct regcache *, + int regno); +static struct target_ops *tmp_to_xfer_partial_ops; +static LONGEST (*tmp_to_xfer_partial) (struct target_ops *ops, + enum target_object object, + const char *annex, + gdb_byte *readbuf, + const gdb_byte *writebuf, + ULONGEST offset, + LONGEST len); +static int (*tmp_to_insert_breakpoint) (struct gdbarch *, + struct bp_target_info *); +static int (*tmp_to_remove_breakpoint) (struct gdbarch *, + struct bp_target_info *); +static int (*tmp_to_stopped_by_watchpoint) (void); +static int (*tmp_to_stopped_data_address) (struct target_ops *, CORE_ADDR *); + +static void record_restore (void); + +/* Open the process record target. */ + static void -record_open (char *name, int from_tty) +record_core_open_1 (char *name, int from_tty) { - struct target_ops *t; + struct regcache *regcache = get_current_regcache (); + int regnum = gdbarch_num_regs (get_regcache_arch (regcache)); + int i; + + /* Get record_core_regbuf. */ + target_fetch_registers (regcache, -1); + record_core_regbuf = xmalloc (MAX_REGISTER_SIZE * regnum); + for (i = 0; i < regnum; i ++) + regcache_raw_collect (regcache, i, + record_core_regbuf + MAX_REGISTER_SIZE * i); + + /* Get record_core_start and record_core_end. */ + if (build_section_table (core_bfd, &record_core_start, &record_core_end)) + { + xfree (record_core_regbuf); + record_core_regbuf = NULL; + error (_("\"%s\": Can't find sections: %s"), + bfd_get_filename (core_bfd), bfd_errmsg (bfd_get_error ())); + } + + push_target (&record_core_ops); + record_restore (); +} + +/* "to_open" target method for 'live' processes. */ +static void +record_open_1 (char *name, int from_tty) +{ if (record_debug) fprintf_unfiltered (gdb_stdlog, "Process record: record_open\n"); @@ -494,79 +860,148 @@ record_open (char *name, int from_tty) error (_("Process record: the current architecture doesn't support " "record function.")); + if (!tmp_to_resume) + error (_("Could not find 'to_resume' method on the target stack.")); + if (!tmp_to_wait) + error (_("Could not find 'to_wait' method on the target stack.")); + if (!tmp_to_store_registers) + error (_("Could not find 'to_store_registers' method on the target stack.")); + if (!tmp_to_insert_breakpoint) + error (_("Could not find 'to_insert_breakpoint' method on the target stack.")); + if (!tmp_to_remove_breakpoint) + error (_("Could not find 'to_remove_breakpoint' method on the target stack.")); + if (!tmp_to_stopped_by_watchpoint) + error (_("Could not find 'to_stopped_by_watchpoint' method on the target stack.")); + if (!tmp_to_stopped_data_address) + error (_("Could not find 'to_stopped_data_address' method on the target stack.")); + + push_target (&record_ops); +} + +/* "to_open" target method. Open the process record target. */ + +static void +record_open (char *name, int from_tty) +{ + struct target_ops *t; + + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "Process record: record_open\n"); + /* Check if record target is already running. */ if (current_target.to_stratum == record_stratum) - error (_("Process record target already running. Use \"record stop\" to " - "stop record target first.")); - - /*Reset the beneath function pointers. */ - record_beneath_to_resume = NULL; - record_beneath_to_wait = NULL; - record_beneath_to_store_registers = NULL; - record_beneath_to_xfer_partial = NULL; - record_beneath_to_insert_breakpoint = NULL; - record_beneath_to_remove_breakpoint = NULL; + error (_("Process record target already running. Use \"record stop\" to " + "stop record target first.")); + + /* Reset the tmp beneath pointers. */ + tmp_to_resume_ops = NULL; + tmp_to_resume = NULL; + tmp_to_wait_ops = NULL; + tmp_to_wait = NULL; + tmp_to_store_registers_ops = NULL; + tmp_to_store_registers = NULL; + tmp_to_xfer_partial_ops = NULL; + tmp_to_xfer_partial = NULL; + tmp_to_insert_breakpoint = NULL; + tmp_to_remove_breakpoint = NULL; + tmp_to_stopped_by_watchpoint = NULL; + tmp_to_stopped_data_address = NULL; /* Set the beneath function pointers. */ for (t = current_target.beneath; t != NULL; t = t->beneath) { - if (!record_beneath_to_resume) + if (!tmp_to_resume) { - record_beneath_to_resume = t->to_resume; - record_beneath_to_resume_ops = t; + tmp_to_resume = t->to_resume; + tmp_to_resume_ops = t; } - if (!record_beneath_to_wait) + if (!tmp_to_wait) { - record_beneath_to_wait = t->to_wait; - record_beneath_to_wait_ops = t; + tmp_to_wait = t->to_wait; + tmp_to_wait_ops = t; } - if (!record_beneath_to_store_registers) + if (!tmp_to_store_registers) { - record_beneath_to_store_registers = t->to_store_registers; - record_beneath_to_store_registers_ops = t; + tmp_to_store_registers = t->to_store_registers; + tmp_to_store_registers_ops = t; } - if (!record_beneath_to_xfer_partial) + if (!tmp_to_xfer_partial) { - record_beneath_to_xfer_partial = t->to_xfer_partial; - record_beneath_to_xfer_partial_ops = t; + tmp_to_xfer_partial = t->to_xfer_partial; + tmp_to_xfer_partial_ops = t; } - if (!record_beneath_to_insert_breakpoint) - record_beneath_to_insert_breakpoint = t->to_insert_breakpoint; - if (!record_beneath_to_remove_breakpoint) - record_beneath_to_remove_breakpoint = t->to_remove_breakpoint; + if (!tmp_to_insert_breakpoint) + tmp_to_insert_breakpoint = t->to_insert_breakpoint; + if (!tmp_to_remove_breakpoint) + tmp_to_remove_breakpoint = t->to_remove_breakpoint; + if (!tmp_to_stopped_by_watchpoint) + tmp_to_stopped_by_watchpoint = t->to_stopped_by_watchpoint; + if (!tmp_to_stopped_data_address) + tmp_to_stopped_data_address = t->to_stopped_data_address; } - if (!record_beneath_to_resume) - error (_("Process record can't get to_resume.")); - if (!record_beneath_to_wait) - error (_("Process record can't get to_wait.")); - if (!record_beneath_to_store_registers) - error (_("Process record can't get to_store_registers.")); - if (!record_beneath_to_xfer_partial) - error (_("Process record can't get to_xfer_partial.")); - if (!record_beneath_to_insert_breakpoint) - error (_("Process record can't get to_insert_breakpoint.")); - if (!record_beneath_to_remove_breakpoint) - error (_("Process record can't get to_remove_breakpoint.")); - - push_target (&record_ops); + if (!tmp_to_xfer_partial) + error (_("Could not find 'to_xfer_partial' method on the target stack.")); /* Reset */ record_insn_num = 0; + record_insn_count = 0; record_list = &record_first; record_list->next = NULL; + + /* Set the tmp beneath pointers to beneath pointers. */ + record_beneath_to_resume_ops = tmp_to_resume_ops; + record_beneath_to_resume = tmp_to_resume; + record_beneath_to_wait_ops = tmp_to_wait_ops; + record_beneath_to_wait = tmp_to_wait; + record_beneath_to_store_registers_ops = tmp_to_store_registers_ops; + record_beneath_to_store_registers = tmp_to_store_registers; + record_beneath_to_xfer_partial_ops = tmp_to_xfer_partial_ops; + record_beneath_to_xfer_partial = tmp_to_xfer_partial; + record_beneath_to_insert_breakpoint = tmp_to_insert_breakpoint; + record_beneath_to_remove_breakpoint = tmp_to_remove_breakpoint; + record_beneath_to_stopped_by_watchpoint = tmp_to_stopped_by_watchpoint; + record_beneath_to_stopped_data_address = tmp_to_stopped_data_address; + + if (current_target.to_stratum == core_stratum) + record_core_open_1 (name, from_tty); + else + record_open_1 (name, from_tty); } +/* "to_close" target method. Close the process record target. */ + static void record_close (int quitting) { + struct record_core_buf_entry *entry; + if (record_debug) fprintf_unfiltered (gdb_stdlog, "Process record: record_close\n"); record_list_release (record_list); + + /* Release record_core_regbuf. */ + if (record_core_regbuf) + { + xfree (record_core_regbuf); + record_core_regbuf = NULL; + } + + /* Release record_core_buf_list. */ + if (record_core_buf_list) + { + for (entry = record_core_buf_list->prev; entry; entry = entry->prev) + { + xfree (record_core_buf_list); + record_core_buf_list = entry; + } + record_core_buf_list = NULL; + } } static int record_resume_step = 0; -static int record_resume_error; + +/* "to_resume" target method. Resume the process record target. */ static void record_resume (struct target_ops *ops, ptid_t ptid, int step, @@ -576,15 +1011,7 @@ record_resume (struct target_ops *ops, ptid_t ptid, int step, if (!RECORD_IS_REPLAY) { - if (do_record_message (get_current_regcache (), signal)) - { - record_resume_error = 0; - } - else - { - record_resume_error = 1; - return; - } + record_message (get_current_regcache (), signal); record_beneath_to_resume (record_beneath_to_resume_ops, ptid, 1, signal); } @@ -592,6 +1019,8 @@ record_resume (struct target_ops *ops, ptid_t ptid, int step, static int record_get_sig = 0; +/* SIGINT signal handler, registered by "to_wait" method. */ + static void record_sig_handler (int signo) { @@ -618,8 +1047,18 @@ record_wait_cleanups (void *ignore) record_list = record_list->prev; } -/* In replay mode, this function examines the recorded log and - determines where to stop. */ +/* "to_wait" target method for process record target. + + In record mode, the target is always run in singlestep mode + (even when gdb says to continue). The to_wait method intercepts + the stop events and determines which ones are to be passed on to + gdb. Most stop events are just singlestep events that gdb is not + to know about, so the to_wait method just records them and keeps + singlestepping. + + In replay mode, this function emulates the recorded execution log, + one instruction at a time (forward or backward), and determines + where to stop. */ static ptid_t record_wait (struct target_ops *ops, @@ -634,16 +1073,11 @@ record_wait (struct target_ops *ops, "record_resume_step = %d\n", record_resume_step); - if (!RECORD_IS_REPLAY) - { - if (record_resume_error) - { - /* If record_resume get error, return directly. */ - status->kind = TARGET_WAITKIND_STOPPED; - status->value.sig = TARGET_SIGNAL_ABRT; - return inferior_ptid; - } + record_get_sig = 0; + signal (SIGINT, record_sig_handler); + if (!RECORD_IS_REPLAY && ops != &record_core_ops) + { if (record_resume_step) { /* This is a single step. */ @@ -661,36 +1095,55 @@ record_wait (struct target_ops *ops, ret = record_beneath_to_wait (record_beneath_to_wait_ops, ptid, status, options); + if (record_resume_step) + return ret; + /* Is this a SIGTRAP? */ if (status->kind == TARGET_WAITKIND_STOPPED && status->value.sig == TARGET_SIGNAL_TRAP) { - /* Yes -- check if there is a breakpoint. */ + struct regcache *regcache; + struct address_space *aspace; + + /* Yes -- this is likely our single-step finishing, + but check if there's any reason the core would be + interested in the event. */ + registers_changed (); - tmp_pc = regcache_read_pc (get_current_regcache ()); - if (breakpoint_inserted_here_p (tmp_pc)) + regcache = get_current_regcache (); + tmp_pc = regcache_read_pc (regcache); + aspace = get_regcache_aspace (regcache); + + if (target_stopped_by_watchpoint ()) + { + /* Always interested in watchpoints. */ + } + else if (breakpoint_inserted_here_p (aspace, tmp_pc)) { - /* There is a breakpoint. GDB will want to stop. */ - CORE_ADDR decr_pc_after_break = - gdbarch_decr_pc_after_break - (get_regcache_arch (get_current_regcache ())); - if (decr_pc_after_break) + /* There is a breakpoint here. Let the core + handle it. */ + if (software_breakpoint_inserted_here_p (aspace, tmp_pc)) { - regcache_write_pc (get_thread_regcache (ret), - tmp_pc + decr_pc_after_break); + struct gdbarch *gdbarch = get_regcache_arch (regcache); + CORE_ADDR decr_pc_after_break + = gdbarch_decr_pc_after_break (gdbarch); + if (decr_pc_after_break) + regcache_write_pc (regcache, + tmp_pc + decr_pc_after_break); } } else { - /* There is not a breakpoint, and gdb is not - stepping, therefore gdb will not stop. - Therefore we will not return to gdb. - Record the insn and resume. */ - if (!do_record_message (get_current_regcache (), - TARGET_SIGNAL_0)) - { - break; - } + /* This must be a single-step trap. Record the + insn and issue another step. */ + if (!record_message_wrapper_safe (regcache, + TARGET_SIGNAL_0)) + { + status->kind = TARGET_WAITKIND_STOPPED; + status->value.sig = TARGET_SIGNAL_0; + break; + } + record_beneath_to_resume (record_beneath_to_resume_ops, ptid, 1, TARGET_SIGNAL_0); @@ -709,34 +1162,37 @@ record_wait (struct target_ops *ops, { struct regcache *regcache = get_current_regcache (); struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct address_space *aspace = get_regcache_aspace (regcache); int continue_flag = 1; int first_record_end = 1; struct cleanup *old_cleanups = make_cleanup (record_wait_cleanups, 0); CORE_ADDR tmp_pc; + record_hw_watchpoint = 0; status->kind = TARGET_WAITKIND_STOPPED; /* Check breakpoint when forward execute. */ if (execution_direction == EXEC_FORWARD) { tmp_pc = regcache_read_pc (regcache); - if (breakpoint_inserted_here_p (tmp_pc)) + if (breakpoint_inserted_here_p (aspace, tmp_pc)) { + int decr_pc_after_break = gdbarch_decr_pc_after_break (gdbarch); + if (record_debug) fprintf_unfiltered (gdb_stdlog, "Process record: break at %s.\n", paddress (gdbarch, tmp_pc)); - if (gdbarch_decr_pc_after_break (gdbarch) - && !record_resume_step) + + if (decr_pc_after_break + && !record_resume_step + && software_breakpoint_inserted_here_p (aspace, tmp_pc)) regcache_write_pc (regcache, - tmp_pc + - gdbarch_decr_pc_after_break (gdbarch)); + tmp_pc + decr_pc_after_break); goto replay_out; } } - record_get_sig = 0; - signal (SIGINT, record_sig_handler); /* If GDB is in terminal_inferior mode, it will not get the signal. And in GDB replay mode, GDB doesn't need to be in terminal_inferior mode, because inferior will not executed. @@ -767,76 +1223,9 @@ record_wait (struct target_ops *ops, break; } - /* Set ptid, register and memory according to record_list. */ - if (record_list->type == record_reg) - { - /* reg */ - gdb_byte reg[MAX_REGISTER_SIZE]; - if (record_debug > 1) - fprintf_unfiltered (gdb_stdlog, - "Process record: record_reg %s to " - "inferior num = %d.\n", - host_address_to_string (record_list), - record_list->u.reg.num); - regcache_cooked_read (regcache, record_list->u.reg.num, reg); - regcache_cooked_write (regcache, record_list->u.reg.num, - record_list->u.reg.val); - memcpy (record_list->u.reg.val, reg, MAX_REGISTER_SIZE); - } - else if (record_list->type == record_mem) - { - /* mem */ - /* Nothing to do if the entry is flagged not_accessible. */ - if (!record_list->u.mem.mem_entry_not_accessible) - { - gdb_byte *mem = alloca (record_list->u.mem.len); - if (record_debug > 1) - fprintf_unfiltered (gdb_stdlog, - "Process record: record_mem %s to " - "inferior addr = %s len = %d.\n", - host_address_to_string (record_list), - paddress (gdbarch, - record_list->u.mem.addr), - record_list->u.mem.len); - - if (target_read_memory (record_list->u.mem.addr, mem, - record_list->u.mem.len)) - { - if (execution_direction != EXEC_REVERSE) - error (_("Process record: error reading memory at " - "addr = %s len = %d."), - paddress (gdbarch, record_list->u.mem.addr), - record_list->u.mem.len); - else - /* Read failed -- - flag entry as not_accessible. */ - record_list->u.mem.mem_entry_not_accessible = 1; - } - else - { - if (target_write_memory (record_list->u.mem.addr, - record_list->u.mem.val, - record_list->u.mem.len)) - { - if (execution_direction != EXEC_REVERSE) - error (_("Process record: error writing memory at " - "addr = %s len = %d."), - paddress (gdbarch, record_list->u.mem.addr), - record_list->u.mem.len); - else - /* Write failed -- - flag entry as not_accessible. */ - record_list->u.mem.mem_entry_not_accessible = 1; - } - else - { - memcpy (record_list->u.mem.val, mem, - record_list->u.mem.len); - } - } - } - } - else + record_exec_insn (regcache, gdbarch, record_list); + + if (record_list->type == record_end) { if (record_debug > 1) fprintf_unfiltered (gdb_stdlog, @@ -867,19 +1256,31 @@ record_wait (struct target_ops *ops, /* check breakpoint */ tmp_pc = regcache_read_pc (regcache); - if (breakpoint_inserted_here_p (tmp_pc)) + if (breakpoint_inserted_here_p (aspace, tmp_pc)) { + int decr_pc_after_break + = gdbarch_decr_pc_after_break (gdbarch); + if (record_debug) fprintf_unfiltered (gdb_stdlog, "Process record: break " "at %s.\n", paddress (gdbarch, tmp_pc)); - if (gdbarch_decr_pc_after_break (gdbarch) + if (decr_pc_after_break && execution_direction == EXEC_FORWARD - && !record_resume_step) + && !record_resume_step + && software_breakpoint_inserted_here_p (aspace, + tmp_pc)) regcache_write_pc (regcache, - tmp_pc + - gdbarch_decr_pc_after_break (gdbarch)); + tmp_pc + decr_pc_after_break); + continue_flag = 0; + } + + if (record_hw_watchpoint) + { + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ +Process record: hit hw watchpoint.\n"); continue_flag = 0; } /* Check target signal */ @@ -905,8 +1306,6 @@ record_wait (struct target_ops *ops, } while (continue_flag); - signal (SIGINT, handle_sigint); - replay_out: if (record_get_sig) status->value.sig = TARGET_SIGNAL_INT; @@ -919,10 +1318,32 @@ replay_out: discard_cleanups (old_cleanups); } + signal (SIGINT, handle_sigint); + do_cleanups (set_cleanups); return inferior_ptid; } +static int +record_stopped_by_watchpoint (void) +{ + if (RECORD_IS_REPLAY) + return record_hw_watchpoint; + else + return record_beneath_to_stopped_by_watchpoint (); +} + +static int +record_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p) +{ + if (RECORD_IS_REPLAY) + return 0; + else + return record_beneath_to_stopped_data_address (ops, addr_p); +} + +/* "to_disconnect" method for process record target. */ + static void record_disconnect (struct target_ops *target, char *args, int from_tty) { @@ -933,6 +1354,8 @@ record_disconnect (struct target_ops *target, char *args, int from_tty) target_disconnect (args, from_tty); } +/* "to_detach" method for process record target. */ + static void record_detach (struct target_ops *ops, char *args, int from_tty) { @@ -943,6 +1366,8 @@ record_detach (struct target_ops *ops, char *args, int from_tty) target_detach (args, from_tty); } +/* "to_mourn_inferior" method for process record target. */ + static void record_mourn_inferior (struct target_ops *ops) { @@ -980,6 +1405,7 @@ record_registers_change (struct regcache *regcache, int regnum) if (regnum < 0) { int i; + for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++) { if (record_arch_list_add_reg (regcache, i)) @@ -1012,6 +1438,8 @@ record_registers_change (struct regcache *regcache, int regnum) record_insn_num++; } +/* "to_store_registers" method for process record target. */ + static void record_store_registers (struct target_ops *ops, struct regcache *regcache, int regno) @@ -1044,6 +1472,7 @@ record_store_registers (struct target_ops *ops, struct regcache *regcache, if (regno < 0) { int i; + for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++) @@ -1056,7 +1485,7 @@ record_store_registers (struct target_ops *ops, struct regcache *regcache, } /* Destroy the record from here forward. */ - record_list_release_next (); + record_list_release_following (record_list); } record_registers_change (regcache, regno); @@ -1065,7 +1494,7 @@ record_store_registers (struct target_ops *ops, struct regcache *regcache, regcache, regno); } -/* Behavior is conditional on RECORD_IS_REPLAY. +/* "to_xfer_partial" method. Behavior is conditional on RECORD_IS_REPLAY. In replay mode, we cannot write memory unles we are willing to invalidate the record/replay log from this point forward. */ @@ -1088,7 +1517,7 @@ record_xfer_partial (struct target_ops *ops, enum target_object object, error (_("Process record canceled the operation.")); /* Destroy the record from here forward. */ - record_list_release_next (); + record_list_release_following (record_list); } /* Check record_insn_num */ @@ -1102,8 +1531,8 @@ record_xfer_partial (struct target_ops *ops, enum target_object object, record_list_release (record_arch_list_tail); if (record_debug) fprintf_unfiltered (gdb_stdlog, - _("Process record: failed to record " - "execution log.")); + "Process record: failed to record " + "execution log."); return -1; } if (record_arch_list_add_end ()) @@ -1111,8 +1540,8 @@ record_xfer_partial (struct target_ops *ops, enum target_object object, record_list_release (record_arch_list_tail); if (record_debug) fprintf_unfiltered (gdb_stdlog, - _("Process record: failed to record " - "execution log.")); + "Process record: failed to record " + "execution log."); return -1; } record_list->next = record_arch_list_head; @@ -1151,6 +1580,8 @@ record_insert_breakpoint (struct gdbarch *gdbarch, return 0; } +/* "to_remove_breakpoint" method for process record target. */ + static int record_remove_breakpoint (struct gdbarch *gdbarch, struct bp_target_info *bp_tgt) @@ -1168,16 +1599,69 @@ record_remove_breakpoint (struct gdbarch *gdbarch, return 0; } +/* "to_can_execute_reverse" method for process record target. */ + static int record_can_execute_reverse (void) { return 1; } -static void -init_record_ops (void) +/* "to_get_bookmark" method for process record and prec over core. */ + +static gdb_byte * +record_get_bookmark (char *args, int from_tty) { - record_ops.to_shortname = "record"; + gdb_byte *ret = NULL; + + /* Return stringified form of instruction count. */ + if (record_list && record_list->type == record_end) + ret = xstrdup (pulongest (record_list->u.end.insn_num)); + + if (record_debug) + { + if (ret) + fprintf_unfiltered (gdb_stdlog, + "record_get_bookmark returns %s\n", ret); + else + fprintf_unfiltered (gdb_stdlog, + "record_get_bookmark returns NULL\n"); + } + return ret; +} + +/* The implementation of the command "record goto". */ +static void cmd_record_goto (char *, int); + +/* "to_goto_bookmark" method for process record and prec over core. */ + +static void +record_goto_bookmark (gdb_byte *bookmark, int from_tty) +{ + if (record_debug) + fprintf_unfiltered (gdb_stdlog, + "record_goto_bookmark receives %s\n", bookmark); + + if (bookmark[0] == '\'' || bookmark[0] == '\"') + { + if (bookmark[strlen (bookmark) - 1] != bookmark[0]) + error (_("Unbalanced quotes: %s"), bookmark); + + /* Strip trailing quote. */ + bookmark[strlen (bookmark) - 1] = '\0'; + /* Strip leading quote. */ + bookmark++; + /* Pass along to cmd_record_goto. */ + } + + cmd_record_goto ((char *) bookmark, from_tty); + return; +} + +static void +init_record_ops (void) +{ + record_ops.to_shortname = "record"; record_ops.to_longname = "Process record and replay target"; record_ops.to_doc = "Log program while executing and replay execution from log."; @@ -1194,11 +1678,227 @@ init_record_ops (void) record_ops.to_xfer_partial = record_xfer_partial; record_ops.to_insert_breakpoint = record_insert_breakpoint; record_ops.to_remove_breakpoint = record_remove_breakpoint; + record_ops.to_stopped_by_watchpoint = record_stopped_by_watchpoint; + record_ops.to_stopped_data_address = record_stopped_data_address; record_ops.to_can_execute_reverse = record_can_execute_reverse; record_ops.to_stratum = record_stratum; + /* Add bookmark target methods. */ + record_ops.to_get_bookmark = record_get_bookmark; + record_ops.to_goto_bookmark = record_goto_bookmark; record_ops.to_magic = OPS_MAGIC; } +/* "to_resume" method for prec over corefile. */ + +static void +record_core_resume (struct target_ops *ops, ptid_t ptid, int step, + enum target_signal signal) +{ + record_resume_step = step; +} + +/* "to_kill" method for prec over corefile. */ + +static void +record_core_kill (struct target_ops *ops) +{ + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "Process record: record_core_kill\n"); + + unpush_target (&record_core_ops); +} + +/* "to_fetch_registers" method for prec over corefile. */ + +static void +record_core_fetch_registers (struct target_ops *ops, + struct regcache *regcache, + int regno) +{ + if (regno < 0) + { + int num = gdbarch_num_regs (get_regcache_arch (regcache)); + int i; + + for (i = 0; i < num; i ++) + regcache_raw_supply (regcache, i, + record_core_regbuf + MAX_REGISTER_SIZE * i); + } + else + regcache_raw_supply (regcache, regno, + record_core_regbuf + MAX_REGISTER_SIZE * regno); +} + +/* "to_prepare_to_store" method for prec over corefile. */ + +static void +record_core_prepare_to_store (struct regcache *regcache) +{ +} + +/* "to_store_registers" method for prec over corefile. */ + +static void +record_core_store_registers (struct target_ops *ops, + struct regcache *regcache, + int regno) +{ + if (record_gdb_operation_disable) + regcache_raw_collect (regcache, regno, + record_core_regbuf + MAX_REGISTER_SIZE * regno); + else + error (_("You can't do that without a process to debug.")); +} + +/* "to_xfer_partial" method for prec over corefile. */ + +static LONGEST +record_core_xfer_partial (struct target_ops *ops, enum target_object object, + const char *annex, gdb_byte *readbuf, + const gdb_byte *writebuf, ULONGEST offset, + LONGEST len) +{ + if (object == TARGET_OBJECT_MEMORY) + { + if (record_gdb_operation_disable || !writebuf) + { + struct target_section *p; + + for (p = record_core_start; p < record_core_end; p++) + { + if (offset >= p->addr) + { + struct record_core_buf_entry *entry; + ULONGEST sec_offset; + + if (offset >= p->endaddr) + continue; + + if (offset + len > p->endaddr) + len = p->endaddr - offset; + + sec_offset = offset - p->addr; + + /* Read readbuf or write writebuf p, offset, len. */ + /* Check flags. */ + if (p->the_bfd_section->flags & SEC_CONSTRUCTOR + || (p->the_bfd_section->flags & SEC_HAS_CONTENTS) == 0) + { + if (readbuf) + memset (readbuf, 0, len); + return len; + } + /* Get record_core_buf_entry. */ + for (entry = record_core_buf_list; entry; + entry = entry->prev) + if (entry->p == p) + break; + if (writebuf) + { + if (!entry) + { + /* Add a new entry. */ + entry = (struct record_core_buf_entry *) + xmalloc (sizeof (struct record_core_buf_entry)); + entry->p = p; + if (!bfd_malloc_and_get_section (p->bfd, + p->the_bfd_section, + &entry->buf)) + { + xfree (entry); + return 0; + } + entry->prev = record_core_buf_list; + record_core_buf_list = entry; + } + + memcpy (entry->buf + sec_offset, writebuf, + (size_t) len); + } + else + { + if (!entry) + return record_beneath_to_xfer_partial + (record_beneath_to_xfer_partial_ops, + object, annex, readbuf, writebuf, + offset, len); + + memcpy (readbuf, entry->buf + sec_offset, + (size_t) len); + } + + return len; + } + } + + return -1; + } + else + error (_("You can't do that without a process to debug.")); + } + + return record_beneath_to_xfer_partial (record_beneath_to_xfer_partial_ops, + object, annex, readbuf, writebuf, + offset, len); +} + +/* "to_insert_breakpoint" method for prec over corefile. */ + +static int +record_core_insert_breakpoint (struct gdbarch *gdbarch, + struct bp_target_info *bp_tgt) +{ + return 0; +} + +/* "to_remove_breakpoint" method for prec over corefile. */ + +static int +record_core_remove_breakpoint (struct gdbarch *gdbarch, + struct bp_target_info *bp_tgt) +{ + return 0; +} + +/* "to_has_execution" method for prec over corefile. */ + +int +record_core_has_execution (struct target_ops *ops) +{ + return 1; +} + +static void +init_record_core_ops (void) +{ + record_core_ops.to_shortname = "record-core"; + record_core_ops.to_longname = "Process record and replay target"; + record_core_ops.to_doc = + "Log program while executing and replay execution from log."; + record_core_ops.to_open = record_open; + record_core_ops.to_close = record_close; + record_core_ops.to_resume = record_core_resume; + record_core_ops.to_wait = record_wait; + record_core_ops.to_kill = record_core_kill; + record_core_ops.to_fetch_registers = record_core_fetch_registers; + record_core_ops.to_prepare_to_store = record_core_prepare_to_store; + record_core_ops.to_store_registers = record_core_store_registers; + record_core_ops.to_xfer_partial = record_core_xfer_partial; + record_core_ops.to_insert_breakpoint = record_core_insert_breakpoint; + record_core_ops.to_remove_breakpoint = record_core_remove_breakpoint; + record_core_ops.to_stopped_by_watchpoint = record_stopped_by_watchpoint; + record_core_ops.to_stopped_data_address = record_stopped_data_address; + record_core_ops.to_can_execute_reverse = record_can_execute_reverse; + record_core_ops.to_has_execution = record_core_has_execution; + record_core_ops.to_stratum = record_stratum; + /* Add bookmark target methods. */ + record_core_ops.to_get_bookmark = record_get_bookmark; + record_core_ops.to_goto_bookmark = record_goto_bookmark; + record_core_ops.to_magic = OPS_MAGIC; +} + +/* Implement "show record debug" command. */ + static void show_record_debug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) @@ -1228,7 +1928,7 @@ cmd_record_delete (char *args, int from_tty) if (!from_tty || query (_("Delete the log from this point forward " "and begin to record the running message " "at current PC?"))) - record_list_release_next (); + record_list_release_following (record_list); } else printf_unfiltered (_("Already at end of record list.\n")); @@ -1238,7 +1938,7 @@ cmd_record_delete (char *args, int from_tty) printf_unfiltered (_("Process record is not started.\n")); } -/* Implement the "stoprecord" command. */ +/* Implement the "stoprecord" or "record stop" command. */ static void cmd_record_stop (char *args, int from_tty) @@ -1246,8 +1946,8 @@ cmd_record_stop (char *args, int from_tty) if (current_target.to_stratum == record_stratum) { unpush_target (&record_ops); - printf_unfiltered (_("Process record is stoped and all execution " - "log is deleted.\n")); + printf_unfiltered (_("Process record is stopped and all execution " + "logs are deleted.\n")); } else printf_unfiltered (_("Process record is not started.\n")); @@ -1260,25 +1960,15 @@ set_record_insn_max_num (char *args, int from_tty, struct cmd_list_element *c) { if (record_insn_num > record_insn_max_num && record_insn_max_num) { - printf_unfiltered (_("Record instructions number is bigger than " - "record instructions max number. Auto delete " - "the first ones?\n")); - + /* Count down record_insn_num while releasing records from list. */ while (record_insn_num > record_insn_max_num) - record_list_release_first (); + { + record_list_release_first (); + record_insn_num--; + } } } -/* Print the current index into the record log (number of insns recorded - so far). */ - -static void -show_record_insn_number (char *ignore, int from_tty) -{ - printf_unfiltered (_("Record instruction number is %d.\n"), - record_insn_num); -} - static struct cmd_list_element *record_cmdlist, *set_record_cmdlist, *show_record_cmdlist, *info_record_cmdlist; @@ -1296,15 +1986,669 @@ show_record_command (char *args, int from_tty) cmd_show_list (show_record_cmdlist, from_tty, ""); } +/* Display some statistics about the execution log. */ + static void info_record_command (char *args, int from_tty) { - cmd_show_list (info_record_cmdlist, from_tty, ""); + struct record_entry *p; + + if (current_target.to_stratum == record_stratum) + { + if (RECORD_IS_REPLAY) + printf_filtered (_("Replay mode:\n")); + else + printf_filtered (_("Record mode:\n")); + + /* Find entry for first actual instruction in the log. */ + for (p = record_first.next; + p != NULL && p->type != record_end; + p = p->next) + ; + + /* Do we have a log at all? */ + if (p != NULL && p->type == record_end) + { + /* Display instruction number for first instruction in the log. */ + printf_filtered (_("Lowest recorded instruction number is %s.\n"), + pulongest (p->u.end.insn_num)); + + /* If in replay mode, display where we are in the log. */ + if (RECORD_IS_REPLAY) + printf_filtered (_("Current instruction number is %s.\n"), + pulongest (record_list->u.end.insn_num)); + + /* Display instruction number for last instruction in the log. */ + printf_filtered (_("Highest recorded instruction number is %s.\n"), + pulongest (record_insn_count)); + + /* Display log count. */ + printf_filtered (_("Log contains %d instructions.\n"), + record_insn_num); + } + else + { + printf_filtered (_("No instructions have been logged.\n")); + } + } + else + { + printf_filtered (_("target record is not active.\n")); + } + + /* Display max log size. */ + printf_filtered (_("Max logged instructions is %d.\n"), + record_insn_max_num); +} + +/* Record log save-file format + Version 1 (never released) + + Header: + 4 bytes: magic number htonl(0x20090829). + NOTE: be sure to change whenever this file format changes! + + Records: + record_end: + 1 byte: record type (record_end, see enum record_type). + record_reg: + 1 byte: record type (record_reg, see enum record_type). + 8 bytes: register id (network byte order). + MAX_REGISTER_SIZE bytes: register value. + record_mem: + 1 byte: record type (record_mem, see enum record_type). + 8 bytes: memory length (network byte order). + 8 bytes: memory address (network byte order). + n bytes: memory value (n == memory length). + + Version 2 + 4 bytes: magic number netorder32(0x20091016). + NOTE: be sure to change whenever this file format changes! + + Records: + record_end: + 1 byte: record type (record_end, see enum record_type). + 4 bytes: signal + 4 bytes: instruction count + record_reg: + 1 byte: record type (record_reg, see enum record_type). + 4 bytes: register id (network byte order). + n bytes: register value (n == actual register size). + (eg. 4 bytes for x86 general registers). + record_mem: + 1 byte: record type (record_mem, see enum record_type). + 4 bytes: memory length (network byte order). + 8 bytes: memory address (network byte order). + n bytes: memory value (n == memory length). + +*/ + +/* bfdcore_read -- read bytes from a core file section. */ + +static inline void +bfdcore_read (bfd *obfd, asection *osec, void *buf, int len, int *offset) +{ + int ret = bfd_get_section_contents (obfd, osec, buf, *offset, len); + + if (ret) + *offset += len; + else + error (_("Failed to read %d bytes from core file %s ('%s').\n"), + len, bfd_get_filename (obfd), + bfd_errmsg (bfd_get_error ())); +} + +static inline uint64_t +netorder64 (uint64_t input) +{ + uint64_t ret; + + store_unsigned_integer ((gdb_byte *) &ret, sizeof (ret), + BFD_ENDIAN_BIG, input); + return ret; +} + +static inline uint32_t +netorder32 (uint32_t input) +{ + uint32_t ret; + + store_unsigned_integer ((gdb_byte *) &ret, sizeof (ret), + BFD_ENDIAN_BIG, input); + return ret; +} + +static inline uint16_t +netorder16 (uint16_t input) +{ + uint16_t ret; + + store_unsigned_integer ((gdb_byte *) &ret, sizeof (ret), + BFD_ENDIAN_BIG, input); + return ret; +} + +/* Restore the execution log from a core_bfd file. */ +static void +record_restore (void) +{ + uint32_t magic; + struct cleanup *old_cleanups; + struct record_entry *rec; + asection *osec; + uint32_t osec_size; + int bfd_offset = 0; + struct regcache *regcache; + + /* We restore the execution log from the open core bfd, + if there is one. */ + if (core_bfd == NULL) + return; + + /* "record_restore" can only be called when record list is empty. */ + gdb_assert (record_first.next == NULL); + + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "Restoring recording from core file.\n"); + + /* Now need to find our special note section. */ + osec = bfd_get_section_by_name (core_bfd, "null0"); + osec_size = bfd_section_size (core_bfd, osec); + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "Find precord section %s.\n", + osec ? "succeeded" : "failed"); + if (osec == NULL) + return; + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "%s", bfd_section_name (core_bfd, osec)); + + /* Check the magic code. */ + bfdcore_read (core_bfd, osec, &magic, sizeof (magic), &bfd_offset); + if (magic != RECORD_FILE_MAGIC) + error (_("Version mis-match or file format error in core file %s."), + bfd_get_filename (core_bfd)); + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Reading 4-byte magic cookie RECORD_FILE_MAGIC (0x%s)\n", + phex_nz (netorder32 (magic), 4)); + + /* Restore the entries in recfd into record_arch_list_head and + record_arch_list_tail. */ + record_arch_list_head = NULL; + record_arch_list_tail = NULL; + record_insn_num = 0; + old_cleanups = make_cleanup (record_arch_list_cleanups, 0); + regcache = get_current_regcache (); + + while (1) + { + uint8_t rectype; + uint32_t regnum, len, signal, count; + uint64_t addr; + + /* We are finished when offset reaches osec_size. */ + if (bfd_offset >= osec_size) + break; + bfdcore_read (core_bfd, osec, &rectype, sizeof (rectype), &bfd_offset); + + switch (rectype) + { + case record_reg: /* reg */ + /* Get register number to regnum. */ + bfdcore_read (core_bfd, osec, ®num, + sizeof (regnum), &bfd_offset); + regnum = netorder32 (regnum); + + rec = record_reg_alloc (regcache, regnum); + + /* Get val. */ + bfdcore_read (core_bfd, osec, record_get_loc (rec), + rec->u.reg.len, &bfd_offset); + + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Reading register %d (1 plus %lu plus %d bytes)\n", + rec->u.reg.num, + (unsigned long) sizeof (regnum), + rec->u.reg.len); + break; + + case record_mem: /* mem */ + /* Get len. */ + bfdcore_read (core_bfd, osec, &len, + sizeof (len), &bfd_offset); + len = netorder32 (len); + + /* Get addr. */ + bfdcore_read (core_bfd, osec, &addr, + sizeof (addr), &bfd_offset); + addr = netorder64 (addr); + + rec = record_mem_alloc (addr, len); + + /* Get val. */ + bfdcore_read (core_bfd, osec, record_get_loc (rec), + rec->u.mem.len, &bfd_offset); + + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Reading memory %s (1 plus %lu plus %lu plus %d bytes)\n", + paddress (get_current_arch (), + rec->u.mem.addr), + (unsigned long) sizeof (addr), + (unsigned long) sizeof (len), + rec->u.mem.len); + break; + + case record_end: /* end */ + rec = record_end_alloc (); + record_insn_num ++; + + /* Get signal value. */ + bfdcore_read (core_bfd, osec, &signal, + sizeof (signal), &bfd_offset); + signal = netorder32 (signal); + rec->u.end.sigval = signal; + + /* Get insn count. */ + bfdcore_read (core_bfd, osec, &count, + sizeof (count), &bfd_offset); + count = netorder32 (count); + rec->u.end.insn_num = count; + record_insn_count = count + 1; + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Reading record_end (1 + %lu + %lu bytes), offset == %s\n", + (unsigned long) sizeof (signal), + (unsigned long) sizeof (count), + paddress (get_current_arch (), + bfd_offset)); + break; + + default: + error (_("Bad entry type in core file %s."), + bfd_get_filename (core_bfd)); + break; + } + + /* Add rec to record arch list. */ + record_arch_list_add (rec); + } + + discard_cleanups (old_cleanups); + + /* Add record_arch_list_head to the end of record list. */ + record_first.next = record_arch_list_head; + record_arch_list_head->prev = &record_first; + record_arch_list_tail->next = NULL; + record_list = &record_first; + + /* Update record_insn_max_num. */ + if (record_insn_num > record_insn_max_num) + { + record_insn_max_num = record_insn_num; + warning (_("Auto increase record/replay buffer limit to %d."), + record_insn_max_num); + } + + /* Succeeded. */ + printf_filtered (_("Restored records from core file %s.\n"), + bfd_get_filename (core_bfd)); + + print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC); +} + +/* bfdcore_write -- write bytes into a core file section. */ + +static inline void +bfdcore_write (bfd *obfd, asection *osec, void *buf, int len, int *offset) +{ + int ret = bfd_set_section_contents (obfd, osec, buf, *offset, len); + + if (ret) + *offset += len; + else + error (_("Failed to write %d bytes to core file %s ('%s').\n"), + len, bfd_get_filename (obfd), + bfd_errmsg (bfd_get_error ())); +} + +/* Restore the execution log from a file. We use a modified elf + corefile format, with an extra section for our data. */ + +static void +cmd_record_restore (char *args, int from_tty) +{ + core_file_command (args, from_tty); + record_open (args, from_tty); +} + +static void +record_save_cleanups (void *data) +{ + bfd *obfd = data; + char *pathname = xstrdup (bfd_get_filename (obfd)); + + bfd_close (obfd); + unlink (pathname); + xfree (pathname); +} + +/* Save the execution log to a file. We use a modified elf corefile + format, with an extra section for our data. */ + +static void +cmd_record_save (char *args, int from_tty) +{ + char *recfilename, recfilename_buffer[40]; + struct record_entry *cur_record_list; + uint32_t magic; + struct regcache *regcache; + struct gdbarch *gdbarch; + struct cleanup *old_cleanups; + struct cleanup *set_cleanups; + bfd *obfd; + int save_size = 0; + asection *osec = NULL; + int bfd_offset = 0; + + if (strcmp (current_target.to_shortname, "record") != 0) + error (_("This command can only be used with target 'record'.\n" + "Use 'target record' first.\n")); + + if (args && *args) + recfilename = args; + else + { + /* Default recfile name is "gdb_record.PID". */ + snprintf (recfilename_buffer, sizeof (recfilename_buffer), + "gdb_record.%d", PIDGET (inferior_ptid)); + recfilename = recfilename_buffer; + } + + /* Open the save file. */ + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "Saving execution log to core file '%s'\n", + recfilename); + + /* Open the output file. */ + obfd = create_gcore_bfd (recfilename); + old_cleanups = make_cleanup (record_save_cleanups, obfd); + + /* Save the current record entry to "cur_record_list". */ + cur_record_list = record_list; + + /* Get the values of regcache and gdbarch. */ + regcache = get_current_regcache (); + gdbarch = get_regcache_arch (regcache); + + /* Disable the GDB operation record. */ + set_cleanups = record_gdb_operation_disable_set (); + + /* Reverse execute to the begin of record list. */ + while (1) + { + /* Check for beginning and end of log. */ + if (record_list == &record_first) + break; + + record_exec_insn (regcache, gdbarch, record_list); + + if (record_list->prev) + record_list = record_list->prev; + } + + /* Compute the size needed for the extra bfd section. */ + save_size = 4; /* magic cookie */ + for (record_list = record_first.next; record_list; + record_list = record_list->next) + switch (record_list->type) + { + case record_end: + save_size += 1 + 4 + 4; + break; + case record_reg: + save_size += 1 + 4 + record_list->u.reg.len; + break; + case record_mem: + save_size += 1 + 4 + 8 + record_list->u.mem.len; + break; + } + + /* Make the new bfd section. */ + osec = bfd_make_section_anyway_with_flags (obfd, "precord", + SEC_HAS_CONTENTS + | SEC_READONLY); + if (osec == NULL) + error (_("Failed to create 'precord' section for corefile %s: %s"), + recfilename, + bfd_errmsg (bfd_get_error ())); + bfd_set_section_size (obfd, osec, save_size); + bfd_set_section_vma (obfd, osec, 0); + bfd_set_section_alignment (obfd, osec, 0); + bfd_section_lma (obfd, osec) = 0; + + /* Save corefile state. */ + write_gcore_file (obfd); + + /* Write out the record log. */ + /* Write the magic code. */ + magic = RECORD_FILE_MAGIC; + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Writing 4-byte magic cookie RECORD_FILE_MAGIC (0x%s)\n", + phex_nz (magic, 4)); + bfdcore_write (obfd, osec, &magic, sizeof (magic), &bfd_offset); + + /* Save the entries to recfd and forward execute to the end of + record list. */ + record_list = &record_first; + while (1) + { + /* Save entry. */ + if (record_list != &record_first) + { + uint8_t type; + uint32_t regnum, len, signal, count; + uint64_t addr; + + type = record_list->type; + bfdcore_write (obfd, osec, &type, sizeof (type), &bfd_offset); + + switch (record_list->type) + { + case record_reg: /* reg */ + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Writing register %d (1 plus %lu plus %d bytes)\n", + record_list->u.reg.num, + (unsigned long) sizeof (regnum), + record_list->u.reg.len); + + /* Write regnum. */ + regnum = netorder32 (record_list->u.reg.num); + bfdcore_write (obfd, osec, ®num, + sizeof (regnum), &bfd_offset); + + /* Write regval. */ + bfdcore_write (obfd, osec, record_get_loc (record_list), + record_list->u.reg.len, &bfd_offset); + break; + + case record_mem: /* mem */ + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Writing memory %s (1 plus %lu plus %lu plus %d bytes)\n", + paddress (gdbarch, + record_list->u.mem.addr), + (unsigned long) sizeof (addr), + (unsigned long) sizeof (len), + record_list->u.mem.len); + + /* Write memlen. */ + len = netorder32 (record_list->u.mem.len); + bfdcore_write (obfd, osec, &len, sizeof (len), &bfd_offset); + + /* Write memaddr. */ + addr = netorder64 (record_list->u.mem.addr); + bfdcore_write (obfd, osec, &addr, + sizeof (addr), &bfd_offset); + + /* Write memval. */ + bfdcore_write (obfd, osec, record_get_loc (record_list), + record_list->u.mem.len, &bfd_offset); + break; + + case record_end: + if (record_debug) + fprintf_unfiltered (gdb_stdlog, "\ + Writing record_end (1 + %lu + %lu bytes)\n", + (unsigned long) sizeof (signal), + (unsigned long) sizeof (count)); + /* Write signal value. */ + signal = netorder32 (record_list->u.end.sigval); + bfdcore_write (obfd, osec, &signal, + sizeof (signal), &bfd_offset); + + /* Write insn count. */ + count = netorder32 (record_list->u.end.insn_num); + bfdcore_write (obfd, osec, &count, + sizeof (count), &bfd_offset); + break; + } + } + + /* Execute entry. */ + record_exec_insn (regcache, gdbarch, record_list); + + if (record_list->next) + record_list = record_list->next; + else + break; + } + + /* Reverse execute to cur_record_list. */ + while (1) + { + /* Check for beginning and end of log. */ + if (record_list == cur_record_list) + break; + + record_exec_insn (regcache, gdbarch, record_list); + + if (record_list->prev) + record_list = record_list->prev; + } + + do_cleanups (set_cleanups); + bfd_close (obfd); + discard_cleanups (old_cleanups); + + /* Succeeded. */ + printf_filtered (_("Saved core file %s with execution log.\n"), + recfilename); +} + +/* record_goto_insn -- rewind the record log (forward or backward, + depending on DIR) to the given entry, changing the program state + correspondingly. */ + +static void +record_goto_insn (struct record_entry *entry, + enum exec_direction_kind dir) +{ + struct cleanup *set_cleanups = record_gdb_operation_disable_set (); + struct regcache *regcache = get_current_regcache (); + struct gdbarch *gdbarch = get_regcache_arch (regcache); + + /* Assume everything is valid: we will hit the entry, + and we will not hit the end of the recording. */ + + if (dir == EXEC_FORWARD) + record_list = record_list->next; + + do + { + record_exec_insn (regcache, gdbarch, record_list); + if (dir == EXEC_REVERSE) + record_list = record_list->prev; + else + record_list = record_list->next; + } while (record_list != entry); + do_cleanups (set_cleanups); +} + +/* "record goto" command. Argument is an instruction number, + as given by "info record". + + Rewinds the recording (forward or backward) to the given instruction. */ + +static void +cmd_record_goto (char *arg, int from_tty) +{ + struct record_entry *p = NULL; + ULONGEST target_insn = 0; + + if (arg == NULL || *arg == '\0') + error (_("Command requires an argument (insn number to go to).")); + + if (strncmp (arg, "start", strlen ("start")) == 0 + || strncmp (arg, "begin", strlen ("begin")) == 0) + { + /* Special case. Find first insn. */ + for (p = &record_first; p != NULL; p = p->next) + if (p->type == record_end) + break; + if (p) + target_insn = p->u.end.insn_num; + } + else if (strncmp (arg, "end", strlen ("end")) == 0) + { + /* Special case. Find last insn. */ + for (p = record_list; p->next != NULL; p = p->next) + ; + for (; p!= NULL; p = p->prev) + if (p->type == record_end) + break; + if (p) + target_insn = p->u.end.insn_num; + } + else + { + /* General case. Find designated insn. */ + target_insn = parse_and_eval_long (arg); + + for (p = &record_first; p != NULL; p = p->next) + if (p->type == record_end && p->u.end.insn_num == target_insn) + break; + } + + if (p == NULL) + error (_("Target insn '%s' not found."), arg); + else if (p == record_list) + error (_("Already at insn '%s'."), arg); + else if (p->u.end.insn_num > record_list->u.end.insn_num) + { + printf_filtered (_("Go forward to insn number %s\n"), + pulongest (target_insn)); + record_goto_insn (p, EXEC_FORWARD); + } + else + { + printf_filtered (_("Go backward to insn number %s\n"), + pulongest (target_insn)); + record_goto_insn (p, EXEC_REVERSE); + } + registers_changed (); + reinit_frame_cache (); + print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC); } void _initialize_record (void) { + struct cmd_list_element *c; + /* Init record_first. */ record_first.prev = NULL; record_first.next = NULL; @@ -1312,6 +2656,8 @@ _initialize_record (void) init_record_ops (); add_target (&record_ops); + init_record_core_ops (); + add_target (&record_core_ops); add_setshow_zinteger_cmd ("record", no_class, &record_debug, _("Set debugging of record/replay feature."), @@ -1321,9 +2667,11 @@ _initialize_record (void) NULL, show_record_debug, &setdebuglist, &showdebuglist); - add_prefix_cmd ("record", class_obscure, cmd_record_start, - _("Abbreviated form of \"target record\" command."), - &record_cmdlist, "record ", 0, &cmdlist); + c = add_prefix_cmd ("record", class_obscure, cmd_record_start, + _("Abbreviated form of \"target record\" command."), + &record_cmdlist, "record ", 0, &cmdlist); + set_cmd_completer (c, filename_completer); + add_com_alias ("rec", "record", class_obscure, 1); add_prefix_cmd ("record", class_support, set_record_command, _("Set record options"), &set_record_cmdlist, @@ -1338,6 +2686,18 @@ _initialize_record (void) "info record ", 0, &infolist); add_alias_cmd ("rec", "record", class_obscure, 1, &infolist); + c = add_cmd ("save", class_obscure, cmd_record_save, + _("Save the execution log to a file.\n\ +Argument is optional filename.\n\ +Default filename is 'gdb_record.'."), + &record_cmdlist); + set_cmd_completer (c, filename_completer); + + c = add_cmd ("restore", class_obscure, cmd_record_restore, + _("Restore the execution log from a file.\n\ +Argument is filename. File must be created with 'record save'."), + &record_cmdlist); + set_cmd_completer (c, filename_completer); add_cmd ("delete", class_obscure, cmd_record_delete, _("Delete the rest of execution log and start recording it anew."), @@ -1361,7 +2721,7 @@ When OFF, if the record/replay buffer becomes full,\n\ delete the oldest recorded instruction to make room for each new one."), NULL, NULL, &set_record_cmdlist, &show_record_cmdlist); - add_setshow_zinteger_cmd ("insn-number-max", no_class, + add_setshow_uinteger_cmd ("insn-number-max", no_class, &record_insn_max_num, _("Set record/replay buffer limit."), _("Show record/replay buffer limit."), _("\ @@ -1369,7 +2729,21 @@ Set the maximum number of instructions to be stored in the\n\ record/replay buffer. Zero means unlimited. Default is 200000."), set_record_insn_max_num, NULL, &set_record_cmdlist, &show_record_cmdlist); - add_cmd ("insn-number", class_obscure, show_record_insn_number, - _("Show the current number of instructions in the " - "record/replay buffer."), &info_record_cmdlist); + + add_cmd ("goto", class_obscure, cmd_record_goto, _("\ +Restore the program to its state at instruction number N.\n\ +Argument is instruction number, as shown by 'info record'."), + &record_cmdlist); + + add_setshow_boolean_cmd ("memory-query", no_class, + &record_memory_query, _("\ +Set whether query if PREC cannot record memory change of next instruction."), + _("\ +Show whether query if PREC cannot record memory change of next instruction."), + _("\ +Default is OFF.\n\ +When ON, query if PREC cannot record memory change of next instruction."), + NULL, NULL, + &set_record_cmdlist, &show_record_cmdlist); + } diff --git a/contrib/gdb-7/gdb/record.h b/contrib/gdb-7/gdb/record.h index d4049ea24c..a4b20d2ec2 100644 --- a/contrib/gdb-7/gdb/record.h +++ b/contrib/gdb-7/gdb/record.h @@ -1,6 +1,6 @@ /* Process record and replay target for GDB, the GNU debugger. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -23,6 +23,7 @@ #define RECORD_IS_USED (current_target.to_stratum == record_stratum) extern int record_debug; +extern int record_memory_query; extern int record_arch_list_add_reg (struct regcache *regcache, int num); extern int record_arch_list_add_mem (CORE_ADDR addr, int len); diff --git a/contrib/gdb-7/gdb/regcache.c b/contrib/gdb-7/gdb/regcache.c index c921bddd53..5342586759 100644 --- a/contrib/gdb-7/gdb/regcache.c +++ b/contrib/gdb-7/gdb/regcache.c @@ -1,7 +1,7 @@ /* Cache and manage the values of registers for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000, 2001, - 2002, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -123,6 +123,7 @@ init_regcache_descr (struct gdbarch *gdbarch) { long offset = 0; + descr->sizeof_register = GDBARCH_OBSTACK_CALLOC (gdbarch, descr->nr_cooked_registers, long); descr->register_offset @@ -161,6 +162,7 @@ struct type * register_type (struct gdbarch *gdbarch, int regnum) { struct regcache_descr *descr = regcache_descr (gdbarch); + gdb_assert (regnum >= 0 && regnum < descr->nr_cooked_registers); return descr->register_type[regnum]; } @@ -173,6 +175,7 @@ register_size (struct gdbarch *gdbarch, int regnum) { struct regcache_descr *descr = regcache_descr (gdbarch); int size; + gdb_assert (regnum >= 0 && regnum < (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch))); @@ -185,6 +188,11 @@ register_size (struct gdbarch *gdbarch, int regnum) struct regcache { struct regcache_descr *descr; + + /* The address space of this register cache (for registers where it + makes sense, like PC or SP). */ + struct address_space *aspace; + /* The register buffers. A read-only register cache can hold the full [0 .. gdbarch_num_regs + gdbarch_num_pseudo_regs) while a read/write register cache can only hold [0 .. gdbarch_num_regs). */ @@ -207,10 +215,11 @@ struct regcache }; struct regcache * -regcache_xmalloc (struct gdbarch *gdbarch) +regcache_xmalloc (struct gdbarch *gdbarch, struct address_space *aspace) { struct regcache_descr *descr; struct regcache *regcache; + gdb_assert (gdbarch != NULL); descr = regcache_descr (gdbarch); regcache = XMALLOC (struct regcache); @@ -219,6 +228,7 @@ regcache_xmalloc (struct gdbarch *gdbarch) = XCALLOC (descr->sizeof_raw_registers, gdb_byte); regcache->register_valid_p = XCALLOC (descr->sizeof_raw_register_valid_p, gdb_byte); + regcache->aspace = aspace; regcache->readonly_p = 1; regcache->ptid = minus_one_ptid; return regcache; @@ -254,6 +264,12 @@ get_regcache_arch (const struct regcache *regcache) return regcache->descr->gdbarch; } +struct address_space * +get_regcache_aspace (const struct regcache *regcache) +{ + return regcache->aspace; +} + /* Return a pointer to register REGNUM's buffer cache. */ static gdb_byte * @@ -269,6 +285,7 @@ regcache_save (struct regcache *dst, regcache_cooked_read_ftype *cooked_read, struct gdbarch *gdbarch = dst->descr->gdbarch; gdb_byte buf[MAX_REGISTER_SIZE]; int regnum; + /* The DST should be `read-only', if it wasn't then the save would end up trying to write the register values back out to the target. */ @@ -285,6 +302,7 @@ regcache_save (struct regcache *dst, regcache_cooked_read_ftype *cooked_read, if (gdbarch_register_reggroup_p (gdbarch, regnum, save_reggroup)) { int valid = cooked_read (src, regnum, buf); + if (valid) { memcpy (register_buffer (dst, regnum), buf, @@ -303,6 +321,7 @@ regcache_restore (struct regcache *dst, struct gdbarch *gdbarch = dst->descr->gdbarch; gdb_byte buf[MAX_REGISTER_SIZE]; int regnum; + /* The dst had better not be read-only. If it is, the `restore' doesn't make much sense. */ gdb_assert (!dst->readonly_p); @@ -315,6 +334,7 @@ regcache_restore (struct regcache *dst, if (gdbarch_register_reggroup_p (gdbarch, regnum, restore_reggroup)) { int valid = cooked_read (cooked_read_context, regnum, buf); + if (valid) regcache_cooked_write (dst, regnum, buf); } @@ -325,6 +345,7 @@ static int do_cooked_read (void *src, int regnum, gdb_byte *buf) { struct regcache *regcache = src; + if (!regcache->register_valid_p[regnum] && regcache->readonly_p) /* Don't even think about fetching a register from a read-only cache when the register isn't yet valid. There isn't a target @@ -338,12 +359,11 @@ do_cooked_read (void *src, int regnum, gdb_byte *buf) void regcache_cpy (struct regcache *dst, struct regcache *src) { - int i; - gdb_byte *buf; gdb_assert (src != NULL && dst != NULL); gdb_assert (src->descr->gdbarch == dst->descr->gdbarch); gdb_assert (src != dst); gdb_assert (src->readonly_p || dst->readonly_p); + if (!src->readonly_p) regcache_save (dst, do_cooked_read, src); else if (!dst->readonly_p) @@ -355,13 +375,13 @@ regcache_cpy (struct regcache *dst, struct regcache *src) void regcache_cpy_no_passthrough (struct regcache *dst, struct regcache *src) { - int i; gdb_assert (src != NULL && dst != NULL); gdb_assert (src->descr->gdbarch == dst->descr->gdbarch); /* NOTE: cagney/2002-05-17: Don't let the caller do a no-passthrough move of data into the current regcache. Doing this would be silly - it would mean that valid_p would be completely invalid. */ gdb_assert (dst->readonly_p); + memcpy (dst->registers, src->registers, dst->descr->sizeof_raw_registers); memcpy (dst->register_valid_p, src->register_valid_p, dst->descr->sizeof_raw_register_valid_p); @@ -371,7 +391,8 @@ struct regcache * regcache_dup (struct regcache *src) { struct regcache *newbuf; - newbuf = regcache_xmalloc (src->descr->gdbarch); + + newbuf = regcache_xmalloc (src->descr->gdbarch, get_regcache_aspace (src)); regcache_cpy (newbuf, src); return newbuf; } @@ -380,7 +401,8 @@ struct regcache * regcache_dup_no_passthrough (struct regcache *src) { struct regcache *newbuf; - newbuf = regcache_xmalloc (src->descr->gdbarch); + + newbuf = regcache_xmalloc (src->descr->gdbarch, get_regcache_aspace (src)); regcache_cpy_no_passthrough (newbuf, src); return newbuf; } @@ -435,9 +457,11 @@ get_thread_arch_regcache (ptid_t ptid, struct gdbarch *gdbarch) && get_regcache_arch (list->regcache) == gdbarch) return list->regcache; - new_regcache = regcache_xmalloc (gdbarch); + new_regcache = regcache_xmalloc (gdbarch, + target_thread_address_space (ptid)); new_regcache->readonly_p = 0; new_regcache->ptid = ptid; + gdb_assert (new_regcache->aspace != NULL); list = xmalloc (sizeof (struct regcache_list)); list->regcache = new_regcache; @@ -501,15 +525,27 @@ regcache_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid) Indicate that registers may have changed, so invalidate the cache. */ void -registers_changed (void) +registers_changed_ptid (ptid_t ptid) { - struct regcache_list *list, *next; + struct regcache_list *list, **list_link; - for (list = current_regcache; list; list = next) + list = current_regcache; + list_link = ¤t_regcache; + while (list) { - next = list->next; - regcache_xfree (list->regcache); - xfree (list); + if (ptid_match (list->regcache->ptid, ptid)) + { + struct regcache_list *dead = list; + + *list_link = list->next; + regcache_xfree (list->regcache); + list = *list_link; + xfree (dead); + continue; + } + + list_link = &list->next; + list = *list_link; } current_regcache = NULL; @@ -528,6 +564,11 @@ registers_changed (void) alloca (0); } +void +registers_changed (void) +{ + registers_changed_ptid (minus_one_ptid); +} void regcache_raw_read (struct regcache *regcache, int regnum, gdb_byte *buf) @@ -543,6 +584,7 @@ regcache_raw_read (struct regcache *regcache, int regnum, gdb_byte *buf) if (!regcache_valid_p (regcache, regnum)) { struct cleanup *old_chain = save_inferior_ptid (); + inferior_ptid = regcache->ptid; target_fetch_registers (regcache, regnum); do_cleanups (old_chain); @@ -566,6 +608,7 @@ void regcache_raw_read_signed (struct regcache *regcache, int regnum, LONGEST *val) { gdb_byte *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >= 0 && regnum < regcache->descr->nr_raw_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -580,6 +623,7 @@ regcache_raw_read_unsigned (struct regcache *regcache, int regnum, ULONGEST *val) { gdb_byte *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >= 0 && regnum < regcache->descr->nr_raw_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -593,6 +637,7 @@ void regcache_raw_write_signed (struct regcache *regcache, int regnum, LONGEST val) { void *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >=0 && regnum < regcache->descr->nr_raw_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -606,6 +651,7 @@ regcache_raw_write_unsigned (struct regcache *regcache, int regnum, ULONGEST val) { void *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >=0 && regnum < regcache->descr->nr_raw_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -637,6 +683,7 @@ regcache_cooked_read_signed (struct regcache *regcache, int regnum, LONGEST *val) { gdb_byte *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >= 0 && regnum < regcache->descr->nr_cooked_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -651,6 +698,7 @@ regcache_cooked_read_unsigned (struct regcache *regcache, int regnum, ULONGEST *val) { gdb_byte *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >= 0 && regnum < regcache->descr->nr_cooked_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -665,6 +713,7 @@ regcache_cooked_write_signed (struct regcache *regcache, int regnum, LONGEST val) { void *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >=0 && regnum < regcache->descr->nr_cooked_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -678,6 +727,7 @@ regcache_cooked_write_unsigned (struct regcache *regcache, int regnum, ULONGEST val) { void *buf; + gdb_assert (regcache != NULL); gdb_assert (regnum >=0 && regnum < regcache->descr->nr_cooked_registers); buf = alloca (regcache->descr->sizeof_register[regnum]); @@ -751,6 +801,7 @@ regcache_xfer_part (struct regcache *regcache, int regnum, { struct regcache_descr *descr = regcache->descr; gdb_byte reg[MAX_REGISTER_SIZE]; + gdb_assert (offset >= 0 && offset <= descr->sizeof_register[regnum]); gdb_assert (len >= 0 && offset + len <= descr->sizeof_register[regnum]); /* Something to do? */ @@ -782,6 +833,7 @@ regcache_raw_read_part (struct regcache *regcache, int regnum, int offset, int len, gdb_byte *buf) { struct regcache_descr *descr = regcache->descr; + gdb_assert (regnum >= 0 && regnum < descr->nr_raw_registers); regcache_xfer_part (regcache, regnum, offset, len, buf, NULL, regcache_raw_read, regcache_raw_write); @@ -792,6 +844,7 @@ regcache_raw_write_part (struct regcache *regcache, int regnum, int offset, int len, const gdb_byte *buf) { struct regcache_descr *descr = regcache->descr; + gdb_assert (regnum >= 0 && regnum < descr->nr_raw_registers); regcache_xfer_part (regcache, regnum, offset, len, NULL, buf, regcache_raw_read, regcache_raw_write); @@ -802,6 +855,7 @@ regcache_cooked_read_part (struct regcache *regcache, int regnum, int offset, int len, gdb_byte *buf) { struct regcache_descr *descr = regcache->descr; + gdb_assert (regnum >= 0 && regnum < descr->nr_cooked_registers); regcache_xfer_part (regcache, regnum, offset, len, buf, NULL, regcache_cooked_read, regcache_cooked_write); @@ -812,6 +866,7 @@ regcache_cooked_write_part (struct regcache *regcache, int regnum, int offset, int len, const gdb_byte *buf) { struct regcache_descr *descr = regcache->descr; + gdb_assert (regnum >= 0 && regnum < descr->nr_cooked_registers); regcache_xfer_part (regcache, regnum, offset, len, NULL, buf, regcache_cooked_read, regcache_cooked_write); @@ -873,6 +928,7 @@ regcache_read_pc (struct regcache *regcache) else if (gdbarch_pc_regnum (gdbarch) >= 0) { ULONGEST raw_val; + regcache_cooked_read_unsigned (regcache, gdbarch_pc_regnum (gdbarch), &raw_val); @@ -918,6 +974,7 @@ dump_endian_bytes (struct ui_file *file, enum bfd_endian endian, const unsigned char *buf, long len) { int i; + switch (endian) { case BFD_ENDIAN_BIG: @@ -979,6 +1036,7 @@ regcache_dump (struct regcache *regcache, struct ui_file *file, else { const char *p = gdbarch_register_name (gdbarch, regnum); + if (p == NULL) p = ""; else if (p[0] == '\0') @@ -1035,15 +1093,18 @@ regcache_dump (struct regcache *regcache, struct ui_file *file, /* Type. */ { const char *t; + if (regnum < 0) t = "Type"; else { static const char blt[] = "builtin_type"; + t = TYPE_NAME (register_type (regcache->descr->gdbarch, regnum)); if (t == NULL) { char *n; + if (!footnote_register_type_name_null) footnote_register_type_name_null = ++footnote_nr; n = xstrprintf ("*%d", footnote_register_type_name_null); @@ -1103,6 +1164,7 @@ regcache_dump (struct regcache *regcache, struct ui_file *file, { const char *sep = ""; struct reggroup *group; + for (group = reggroup_next (gdbarch, NULL); group != NULL; group = reggroup_next (gdbarch, group)) @@ -1141,6 +1203,7 @@ regcache_print (char *args, enum regcache_dump_what what_to_dump) { struct cleanup *cleanups; struct ui_file *file = gdb_fopen (args, "w"); + if (file == NULL) perror_with_name (_("maintenance print architecture")); cleanups = make_cleanup_ui_file_delete (file); diff --git a/contrib/gdb-7/gdb/regcache.h b/contrib/gdb-7/gdb/regcache.h index 4a32602d16..8cd40fa88a 100644 --- a/contrib/gdb-7/gdb/regcache.h +++ b/contrib/gdb-7/gdb/regcache.h @@ -1,7 +1,7 @@ /* Cache and manage the values of registers for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000, 2001, - 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -23,6 +23,7 @@ struct regcache; struct gdbarch; +struct address_space; extern struct regcache *get_current_regcache (void); extern struct regcache *get_thread_regcache (ptid_t ptid); @@ -30,12 +31,17 @@ extern struct regcache *get_thread_arch_regcache (ptid_t, struct gdbarch *); void regcache_xfree (struct regcache *regcache); struct cleanup *make_cleanup_regcache_xfree (struct regcache *regcache); -struct regcache *regcache_xmalloc (struct gdbarch *gdbarch); +struct regcache *regcache_xmalloc (struct gdbarch *gdbarch, + struct address_space *aspace); /* Return REGCACHE's architecture. */ extern struct gdbarch *get_regcache_arch (const struct regcache *regcache); +/* Return REGCACHE's address space. */ + +extern struct address_space *get_regcache_aspace (const struct regcache *regcache); + /* Transfer a raw register [0..NUM_REGS) between core-gdb and the regcache. */ @@ -153,5 +159,6 @@ extern void regcache_cpy (struct regcache *dest, struct regcache *src); extern void regcache_cpy_no_passthrough (struct regcache *dest, struct regcache *src); extern void registers_changed (void); +extern void registers_changed_ptid (ptid_t); #endif /* REGCACHE_H */ diff --git a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat b/contrib/gdb-7/gdb/regformats/i386/amd64-avx-linux.dat similarity index 62% copy from contrib/gdb-7/gdb/regformats/reg-x86-64.dat copy to contrib/gdb-7/gdb/regformats/i386/amd64-avx-linux.dat index dd1f78fa71..44913132b0 100644 --- a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat +++ b/contrib/gdb-7/gdb/regformats/i386/amd64-avx-linux.dat @@ -1,4 +1,6 @@ -name:x86_64 +# DO NOT EDIT: generated from i386/amd64-avx-linux.xml +name:amd64_avx_linux +xmltarget:amd64-avx-linux.xml expedite:rbp,rsp,rip 64:rax 64:rbx @@ -57,3 +59,20 @@ expedite:rbp,rsp,rip 128:xmm14 128:xmm15 32:mxcsr +64:orig_rax +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h +128:ymm8h +128:ymm9h +128:ymm10h +128:ymm11h +128:ymm12h +128:ymm13h +128:ymm14h +128:ymm15h diff --git a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat b/contrib/gdb-7/gdb/regformats/i386/amd64-avx.dat similarity index 64% copy from contrib/gdb-7/gdb/regformats/reg-x86-64.dat copy to contrib/gdb-7/gdb/regformats/i386/amd64-avx.dat index dd1f78fa71..62cfdd7764 100644 --- a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat +++ b/contrib/gdb-7/gdb/regformats/i386/amd64-avx.dat @@ -1,4 +1,6 @@ -name:x86_64 +# DO NOT EDIT: generated from i386/amd64-avx.xml +name:amd64_avx +xmltarget:amd64-avx.xml expedite:rbp,rsp,rip 64:rax 64:rbx @@ -57,3 +59,19 @@ expedite:rbp,rsp,rip 128:xmm14 128:xmm15 32:mxcsr +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h +128:ymm8h +128:ymm9h +128:ymm10h +128:ymm11h +128:ymm12h +128:ymm13h +128:ymm14h +128:ymm15h diff --git a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat b/contrib/gdb-7/gdb/regformats/i386/amd64-linux.dat similarity index 81% copy from contrib/gdb-7/gdb/regformats/reg-x86-64.dat copy to contrib/gdb-7/gdb/regformats/i386/amd64-linux.dat index dd1f78fa71..02a2c786d1 100644 --- a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat +++ b/contrib/gdb-7/gdb/regformats/i386/amd64-linux.dat @@ -1,4 +1,6 @@ -name:x86_64 +# DO NOT EDIT: generated from i386/amd64-linux.xml +name:amd64_linux +xmltarget:amd64-linux.xml expedite:rbp,rsp,rip 64:rax 64:rbx @@ -57,3 +59,4 @@ expedite:rbp,rsp,rip 128:xmm14 128:xmm15 32:mxcsr +64:orig_rax diff --git a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat b/contrib/gdb-7/gdb/regformats/i386/amd64.dat similarity index 86% rename from contrib/gdb-7/gdb/regformats/reg-x86-64.dat rename to contrib/gdb-7/gdb/regformats/i386/amd64.dat index dd1f78fa71..d58921884b 100644 --- a/contrib/gdb-7/gdb/regformats/reg-x86-64.dat +++ b/contrib/gdb-7/gdb/regformats/i386/amd64.dat @@ -1,4 +1,6 @@ -name:x86_64 +# DO NOT EDIT: generated from i386/amd64.xml +name:amd64 +xmltarget:amd64.xml expedite:rbp,rsp,rip 64:rax 64:rbx diff --git a/contrib/gdb-7/gdb/regformats/reg-i386.dat b/contrib/gdb-7/gdb/regformats/i386/i386-avx-linux.dat similarity index 63% copy from contrib/gdb-7/gdb/regformats/reg-i386.dat copy to contrib/gdb-7/gdb/regformats/i386/i386-avx-linux.dat index 6e3097143e..e9eb951787 100644 --- a/contrib/gdb-7/gdb/regformats/reg-i386.dat +++ b/contrib/gdb-7/gdb/regformats/i386/i386-avx-linux.dat @@ -1,5 +1,6 @@ -name:i386 -xmlarch:i386 +# DO NOT EDIT: generated from i386/i386-avx-linux.xml +name:i386_avx_linux +xmltarget:i386-avx-linux.xml expedite:ebp,esp,eip 32:eax 32:ecx @@ -42,3 +43,12 @@ expedite:ebp,esp,eip 128:xmm6 128:xmm7 32:mxcsr +32:orig_eax +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h diff --git a/contrib/gdb-7/gdb/regformats/reg-i386.dat b/contrib/gdb-7/gdb/regformats/i386/i386-avx.dat similarity index 67% copy from contrib/gdb-7/gdb/regformats/reg-i386.dat copy to contrib/gdb-7/gdb/regformats/i386/i386-avx.dat index 6e3097143e..4a19a2b3ea 100644 --- a/contrib/gdb-7/gdb/regformats/reg-i386.dat +++ b/contrib/gdb-7/gdb/regformats/i386/i386-avx.dat @@ -1,5 +1,6 @@ -name:i386 -xmlarch:i386 +# DO NOT EDIT: generated from i386/i386-avx.xml +name:i386_avx +xmltarget:i386-avx.xml expedite:ebp,esp,eip 32:eax 32:ecx @@ -42,3 +43,11 @@ expedite:ebp,esp,eip 128:xmm6 128:xmm7 32:mxcsr +128:ymm0h +128:ymm1h +128:ymm2h +128:ymm3h +128:ymm4h +128:ymm5h +128:ymm6h +128:ymm7h diff --git a/contrib/gdb-7/gdb/regformats/reg-i386.dat b/contrib/gdb-7/gdb/regformats/i386/i386-linux.dat similarity index 76% copy from contrib/gdb-7/gdb/regformats/reg-i386.dat copy to contrib/gdb-7/gdb/regformats/i386/i386-linux.dat index 6e3097143e..6fef8d9506 100644 --- a/contrib/gdb-7/gdb/regformats/reg-i386.dat +++ b/contrib/gdb-7/gdb/regformats/i386/i386-linux.dat @@ -1,5 +1,6 @@ -name:i386 -xmlarch:i386 +# DO NOT EDIT: generated from i386/i386-linux.xml +name:i386_linux +xmltarget:i386-linux.xml expedite:ebp,esp,eip 32:eax 32:ecx @@ -42,3 +43,4 @@ expedite:ebp,esp,eip 128:xmm6 128:xmm7 32:mxcsr +32:orig_eax diff --git a/contrib/gdb-7/gdb/regformats/reg-i386.dat b/contrib/gdb-7/gdb/regformats/i386/i386-mmx-linux.dat similarity index 64% copy from contrib/gdb-7/gdb/regformats/reg-i386.dat copy to contrib/gdb-7/gdb/regformats/i386/i386-mmx-linux.dat index 6e3097143e..9dcf223a05 100644 --- a/contrib/gdb-7/gdb/regformats/reg-i386.dat +++ b/contrib/gdb-7/gdb/regformats/i386/i386-mmx-linux.dat @@ -1,5 +1,6 @@ -name:i386 -xmlarch:i386 +# DO NOT EDIT: generated from i386/i386-mmx-linux.xml +name:i386_mmx_linux +xmltarget:i386-mmx-linux.xml expedite:ebp,esp,eip 32:eax 32:ecx @@ -33,12 +34,13 @@ expedite:ebp,esp,eip 32:foseg 32:fooff 32:fop -128:xmm0 -128:xmm1 -128:xmm2 -128:xmm3 -128:xmm4 -128:xmm5 -128:xmm6 -128:xmm7 -32:mxcsr +0: +0: +0: +0: +0: +0: +0: +0: +0: +32:orig_eax diff --git a/contrib/gdb-7/gdb/regformats/reg-i386.dat b/contrib/gdb-7/gdb/regformats/i386/i386-mmx.dat similarity index 71% copy from contrib/gdb-7/gdb/regformats/reg-i386.dat copy to contrib/gdb-7/gdb/regformats/i386/i386-mmx.dat index 6e3097143e..38a95d4d3a 100644 --- a/contrib/gdb-7/gdb/regformats/reg-i386.dat +++ b/contrib/gdb-7/gdb/regformats/i386/i386-mmx.dat @@ -1,5 +1,6 @@ -name:i386 -xmlarch:i386 +# DO NOT EDIT: generated from i386/i386-mmx.xml +name:i386_mmx +xmltarget:i386-mmx.xml expedite:ebp,esp,eip 32:eax 32:ecx @@ -33,12 +34,3 @@ expedite:ebp,esp,eip 32:foseg 32:fooff 32:fop -128:xmm0 -128:xmm1 -128:xmm2 -128:xmm3 -128:xmm4 -128:xmm5 -128:xmm6 -128:xmm7 -32:mxcsr diff --git a/contrib/gdb-7/gdb/regformats/reg-i386.dat b/contrib/gdb-7/gdb/regformats/i386/i386.dat similarity index 84% rename from contrib/gdb-7/gdb/regformats/reg-i386.dat rename to contrib/gdb-7/gdb/regformats/i386/i386.dat index 6e3097143e..923d879ebe 100644 --- a/contrib/gdb-7/gdb/regformats/reg-i386.dat +++ b/contrib/gdb-7/gdb/regformats/i386/i386.dat @@ -1,5 +1,6 @@ +# DO NOT EDIT: generated from i386/i386.xml name:i386 -xmlarch:i386 +xmltarget:i386.xml expedite:ebp,esp,eip 32:eax 32:ecx diff --git a/contrib/gdb-7/gdb/regformats/regdat.sh b/contrib/gdb-7/gdb/regformats/regdat.sh index b04df7fb49..ee15f8de96 100755 --- a/contrib/gdb-7/gdb/regformats/regdat.sh +++ b/contrib/gdb-7/gdb/regformats/regdat.sh @@ -1,7 +1,7 @@ #!/bin/sh -u # Register protocol definitions for GDB, the GNU debugger. -# Copyright 2001, 2002, 2007, 2008, 2009 Free Software Foundation, Inc. +# Copyright 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. # # This file is part of GDB. # @@ -100,7 +100,7 @@ cat <. */ /* This file was created with the aid of \`\`regdat.sh'' and \`\`$1''. */ @@ -121,8 +119,8 @@ EOF exec > new-$2 copyright $1 +echo '#include "server.h"' echo '#include "regdef.h"' -echo '#include "regcache.h"' echo offset=0 i=0 diff --git a/contrib/gdb-7/gdb/regformats/regdef.h b/contrib/gdb-7/gdb/regformats/regdef.h index 20f81f2bc3..a71cdc7f06 100644 --- a/contrib/gdb-7/gdb/regformats/regdef.h +++ b/contrib/gdb-7/gdb/regformats/regdef.h @@ -1,5 +1,5 @@ /* Register protocol definition structures for the GNU Debugger - Copyright 2001, 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/reggroups.c b/contrib/gdb-7/gdb/reggroups.c index 171fc36654..fdc0575472 100644 --- a/contrib/gdb-7/gdb/reggroups.c +++ b/contrib/gdb-7/gdb/reggroups.c @@ -1,6 +1,7 @@ /* Register groupings for GDB, the GNU debugger. - Copyright (C) 2002, 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Red Hat. @@ -40,6 +41,7 @@ struct reggroup * reggroup_new (const char *name, enum reggroup_type type) { struct reggroup *group = XMALLOC (struct reggroup); + group->name = name; group->type = type; return group; @@ -80,6 +82,7 @@ reggroups_init (struct gdbarch *gdbarch) { struct reggroups *groups = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct reggroups); + groups->last = &groups->first; return groups; } @@ -189,6 +192,7 @@ reggroups_dump (struct gdbarch *gdbarch, struct ui_file *file) /* Group name. */ { const char *name; + if (group == NULL) name = "Group"; else @@ -199,6 +203,7 @@ reggroups_dump (struct gdbarch *gdbarch, struct ui_file *file) /* Group type. */ { const char *type; + if (group == NULL) type = "Type"; else @@ -239,6 +244,7 @@ maintenance_print_reggroups (char *args, int from_tty) { struct cleanup *cleanups; struct ui_file *file = gdb_fopen (args, "w"); + if (file == NULL) perror_with_name (_("maintenance print reggroups")); cleanups = make_cleanup_ui_file_delete (file); diff --git a/contrib/gdb-7/gdb/reggroups.h b/contrib/gdb-7/gdb/reggroups.h index d2e2b8a439..f963192fa2 100644 --- a/contrib/gdb-7/gdb/reggroups.h +++ b/contrib/gdb-7/gdb/reggroups.h @@ -1,6 +1,6 @@ /* Register groupings for GDB, the GNU debugger. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat. diff --git a/contrib/gdb-7/gdb/regset.c b/contrib/gdb-7/gdb/regset.c index c4837c80f6..8906a97f23 100644 --- a/contrib/gdb-7/gdb/regset.c +++ b/contrib/gdb-7/gdb/regset.c @@ -1,6 +1,6 @@ /* Manage register sets. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/regset.h b/contrib/gdb-7/gdb/regset.h index 6a9d72ae09..9a21ced768 100644 --- a/contrib/gdb-7/gdb/regset.h +++ b/contrib/gdb-7/gdb/regset.h @@ -1,6 +1,7 @@ /* Manage register sets. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -28,6 +29,7 @@ struct core_regset_section { const char *sect_name; int size; + const char *human_name; }; /* Data structure describing a register set. */ diff --git a/contrib/gdb-7/gdb/remote-fileio.c b/contrib/gdb-7/gdb/remote-fileio.c index 1683e99681..82a4fe920d 100644 --- a/contrib/gdb-7/gdb/remote-fileio.c +++ b/contrib/gdb-7/gdb/remote-fileio.c @@ -1,6 +1,6 @@ /* Remote File-I/O communications - Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -35,6 +35,15 @@ #include #ifdef __CYGWIN__ #include /* For cygwin_conv_to_full_posix_path. */ +#include +#if CYGWIN_VERSION_DLL_MAKE_COMBINED(CYGWIN_VERSION_API_MAJOR,CYGWIN_VERSION_API_MINOR) < 181 +# define CCP_POSIX_TO_WIN_A 0 +# define CCP_WIN_A_TO_POSIX 2 +# define cygwin_conv_path(op, from, to, size) \ + (op == CCP_WIN_A_TO_POSIX) ? \ + cygwin_conv_to_full_posix_path (from, to) : \ + cygwin_conv_to_win32_path (from, to) +#endif #endif #include @@ -100,6 +109,7 @@ static int remote_fileio_fd_to_targetfd (int fd) { int target_fd = remote_fileio_next_free_fd (); + remote_fio_data.fd_map[target_fd] = fd; return target_fd; } @@ -741,7 +751,7 @@ remote_fileio_func_read (char *buf) static char *remaining_buf = NULL; static int remaining_length = 0; - buffer = (gdb_byte *) xmalloc (32768); + buffer = (gdb_byte *) xmalloc (16384); if (remaining_buf) { remote_fio_no_longjmp = 1; @@ -763,7 +773,18 @@ remote_fileio_func_read (char *buf) } else { - ret = ui_file_read (gdb_stdtargin, (char *) buffer, 32767); + /* Windows (at least XP and Server 2003) has difficulty + with large reads from consoles. If a handle is + backed by a real console device, overly large reads + from the handle will fail and set errno == ENOMEM. + On a Windows Server 2003 system where I tested, + reading 26608 bytes from the console was OK, but + anything above 26609 bytes would fail. The limit has + been observed to vary on different systems. So, we + limit this read to something smaller than that - by a + safe margin, in case the limit depends on system + resources or version. */ + ret = ui_file_read (gdb_stdtargin, (char *) buffer, 16383); remote_fio_no_longjmp = 1; if (ret > 0 && (size_t)ret > length) { @@ -1010,12 +1031,14 @@ remote_fileio_func_rename (char *buf) errno = EISDIR; else { - char oldfullpath[PATH_MAX + 1]; - char newfullpath[PATH_MAX + 1]; + char oldfullpath[PATH_MAX]; + char newfullpath[PATH_MAX]; int len; - cygwin_conv_to_full_posix_path (oldpath, oldfullpath); - cygwin_conv_to_full_posix_path (newpath, newfullpath); + cygwin_conv_path (CCP_WIN_A_TO_POSIX, oldpath, oldfullpath, + PATH_MAX); + cygwin_conv_path (CCP_WIN_A_TO_POSIX, newpath, newfullpath, + PATH_MAX); len = strlen (oldfullpath); if (newfullpath[len] == '/' && !strncmp (oldfullpath, newfullpath, len)) @@ -1405,28 +1428,44 @@ remote_fileio_reset (void) } } +/* Handle a file I/O request. BUF points to the packet containing the + request. CTRLC_PENDING_P should be nonzero if the target has not + acknowledged the Ctrl-C sent asynchronously earlier. */ + void -remote_fileio_request (char *buf) +remote_fileio_request (char *buf, int ctrlc_pending_p) { int ex; remote_fileio_sig_init (); - remote_fio_ctrl_c_flag = 0; - remote_fio_no_longjmp = 0; - - ex = catch_exceptions (uiout, do_remote_fileio_request, (void *)buf, - RETURN_MASK_ALL); - switch (ex) + if (ctrlc_pending_p) { - case RETURN_ERROR: - remote_fileio_reply (-1, FILEIO_ENOSYS); - break; - case RETURN_QUIT: - remote_fileio_reply (-1, FILEIO_EINTR); - break; - default: - break; + /* If the target hasn't responded to the Ctrl-C sent + asynchronously earlier, take this opportunity to send the + Ctrl-C synchronously. */ + remote_fio_ctrl_c_flag = 1; + remote_fio_no_longjmp = 0; + remote_fileio_reply (-1, FILEIO_EINTR); + } + else + { + remote_fio_ctrl_c_flag = 0; + remote_fio_no_longjmp = 0; + + ex = catch_exceptions (uiout, do_remote_fileio_request, (void *)buf, + RETURN_MASK_ALL); + switch (ex) + { + case RETURN_ERROR: + remote_fileio_reply (-1, FILEIO_ENOSYS); + break; + case RETURN_QUIT: + remote_fileio_reply (-1, FILEIO_EINTR); + break; + default: + break; + } } remote_fileio_sig_exit (); @@ -1439,6 +1478,7 @@ set_system_call_allowed (char *args, int from_tty) { char *arg_end; int val = strtoul (args, &arg_end, 10); + if (*args && *arg_end == '\0') { remote_fio_system_call_allowed = !!val; diff --git a/contrib/gdb-7/gdb/remote-fileio.h b/contrib/gdb-7/gdb/remote-fileio.h index 7266e1dfb1..b295987bf0 100644 --- a/contrib/gdb-7/gdb/remote-fileio.h +++ b/contrib/gdb-7/gdb/remote-fileio.h @@ -1,6 +1,6 @@ /* Remote File-I/O communications - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -26,7 +26,7 @@ struct cmd_list_element; /* Unified interface to remote fileio, called in remote.c from remote_wait () and remote_async_wait () */ -extern void remote_fileio_request (char *buf); +extern void remote_fileio_request (char *buf, int ctrlc_pending_p); /* Cleanup any remote fileio state. */ extern void remote_fileio_reset (void); diff --git a/contrib/gdb-7/gdb/remote.c b/contrib/gdb-7/gdb/remote.c index f730a49f21..e03a611288 100644 --- a/contrib/gdb-7/gdb/remote.c +++ b/contrib/gdb-7/gdb/remote.c @@ -1,8 +1,8 @@ /* Remote target communications for serial-line targets in custom GDB protocol Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -60,9 +60,21 @@ #include "remote-fileio.h" #include "gdb/fileio.h" #include "gdb_stat.h" +#include "xml-support.h" #include "memory-map.h" +#include "tracepoint.h" +#include "ax.h" +#include "ax-gdb.h" + +/* temp hacks for tracepoint encoding migration */ +static char *target_buf; +static long target_buf_size; +/*static*/ void +encode_actions (struct breakpoint *t, struct bp_location *tloc, + char ***tdp_actions, char ***stepping_actions); + /* The size to align memory write packets, when practical. The protocol does not guarantee any alignment, and gdb will generate short writes and unaligned writes, but even as a best-effort attempt this @@ -161,8 +173,6 @@ static CORE_ADDR remote_address_masked (CORE_ADDR); static void print_packet (char *); -static unsigned long crc32 (unsigned char *, int, unsigned int); - static void compare_sections_command (char *, int); static void packet_command (char *, int); @@ -177,9 +187,9 @@ static void record_currthread (ptid_t currthread); static int fromhex (int a); -static int hex2bin (const char *hex, gdb_byte *bin, int count); +extern int hex2bin (const char *hex, gdb_byte *bin, int count); -static int bin2hex (const gdb_byte *bin, char *hex, int count); +extern int bin2hex (const gdb_byte *bin, char *hex, int count); static int putpkt_binary (char *buf, int cnt); @@ -202,6 +212,15 @@ static void show_remote_protocol_packet_cmd (struct ui_file *file, static char *write_ptid (char *buf, const char *endbuf, ptid_t ptid); static ptid_t read_ptid (char *buf, char **obuf); +static void remote_set_permissions (void); + +struct remote_state; +static int remote_get_trace_status (struct trace_status *ts); + +static int remote_upload_tracepoints (struct uploaded_tp **utpp); + +static int remote_upload_trace_state_variables (struct uploaded_tsv **utsvp); + static void remote_query_supported (void); static void remote_check_symbols (struct objfile *objfile); @@ -225,6 +244,8 @@ static void remote_terminal_ours (void); static int remote_read_description_p (struct target_ops *target); +static void remote_console_output (char *msg); + /* The non-stop remote protocol provisions for one pending stop reply. This is where we keep it until it is acknowledged. */ @@ -297,8 +318,36 @@ struct remote_state /* True if the stub reports support for conditional tracepoints. */ int cond_tracepoints; + + /* True if the stub reports support for fast tracepoints. */ + int fast_tracepoints; + + /* True if the stub reports support for static tracepoints. */ + int static_tracepoints; + + /* True if the stub can continue running a trace while GDB is + disconnected. */ + int disconnected_tracing; + + /* Nonzero if the user has pressed Ctrl-C, but the target hasn't + responded to that. */ + int ctrlc_pending_p; }; +/* Private data that we'll store in (struct thread_info)->private. */ +struct private_thread_info +{ + char *extra; + int core; +}; + +static void +free_private_thread_info (struct private_thread_info *info) +{ + xfree (info->extra); + xfree (info); +} + /* Returns true if the multi-process extensions are in effect. */ static int remote_multi_process_p (struct remote_state *rs) @@ -354,6 +403,99 @@ struct remote_arch_state long remote_packet_size; }; +long sizeof_pkt = 2000; + +/* Utility: generate error from an incoming stub packet. */ +static void +trace_error (char *buf) +{ + if (*buf++ != 'E') + return; /* not an error msg */ + switch (*buf) + { + case '1': /* malformed packet error */ + if (*++buf == '0') /* general case: */ + error (_("remote.c: error in outgoing packet.")); + else + error (_("remote.c: error in outgoing packet at field #%ld."), + strtol (buf, NULL, 16)); + case '2': + error (_("trace API error 0x%s."), ++buf); + default: + error (_("Target returns error code '%s'."), buf); + } +} + +/* Utility: wait for reply from stub, while accepting "O" packets. */ +static char * +remote_get_noisy_reply (char **buf_p, + long *sizeof_buf) +{ + do /* Loop on reply from remote stub. */ + { + char *buf; + + QUIT; /* allow user to bail out with ^C */ + getpkt (buf_p, sizeof_buf, 0); + buf = *buf_p; + if (buf[0] == 'E') + trace_error (buf); + else if (strncmp (buf, "qRelocInsn:", strlen ("qRelocInsn:")) == 0) + { + ULONGEST ul; + CORE_ADDR from, to, org_to; + char *p, *pp; + int adjusted_size = 0; + volatile struct gdb_exception ex; + + p = buf + strlen ("qRelocInsn:"); + pp = unpack_varlen_hex (p, &ul); + if (*pp != ';') + error (_("invalid qRelocInsn packet: %s"), buf); + from = ul; + + p = pp + 1; + pp = unpack_varlen_hex (p, &ul); + to = ul; + + org_to = to; + + TRY_CATCH (ex, RETURN_MASK_ALL) + { + gdbarch_relocate_instruction (target_gdbarch, &to, from); + } + if (ex.reason >= 0) + { + adjusted_size = to - org_to; + + sprintf (buf, "qRelocInsn:%x", adjusted_size); + putpkt (buf); + } + else if (ex.reason < 0 && ex.error == MEMORY_ERROR) + { + /* Propagate memory errors silently back to the target. + The stub may have limited the range of addresses we + can write to, for example. */ + putpkt ("E01"); + } + else + { + /* Something unexpectedly bad happened. Be verbose so + we can tell what, and propagate the error back to the + stub, so it doesn't get stuck waiting for a + response. */ + exception_fprintf (gdb_stderr, ex, + _("warning: relocating instruction: ")); + putpkt ("E01"); + } + } + else if (buf[0] == 'O' && buf[1] != 'K') + remote_console_output (buf + 1); /* 'O' message from stub */ + else + return buf; /* here's the actual reply */ + } + while (1); +} /* Handle for retreving the remote protocol data from gdbarch. */ static struct gdbarch_data *remote_gdbarch_data_handle; @@ -502,6 +644,7 @@ packet_reg_from_regnum (struct remote_arch_state *rsa, long regnum) else { struct packet_reg *r = &rsa->regs[regnum]; + gdb_assert (r->regnum == regnum); return r; } @@ -511,9 +654,11 @@ static struct packet_reg * packet_reg_from_pnum (struct remote_arch_state *rsa, LONGEST pnum) { int i; + for (i = 0; i < gdbarch_num_regs (target_gdbarch); i++) { struct packet_reg *r = &rsa->regs[i]; + if (r->pnum == pnum) return r; } @@ -546,14 +691,76 @@ static int remote_async_mask_value = 1; this can go away. */ static int wait_forever_enabled_p = 1; +/* Allow the user to specify what sequence to send to the remote + when he requests a program interruption: Although ^C is usually + what remote systems expect (this is the default, here), it is + sometimes preferable to send a break. On other systems such + as the Linux kernel, a break followed by g, which is Magic SysRq g + is required in order to interrupt the execution. */ +const char interrupt_sequence_control_c[] = "Ctrl-C"; +const char interrupt_sequence_break[] = "BREAK"; +const char interrupt_sequence_break_g[] = "BREAK-g"; +static const char *interrupt_sequence_modes[] = + { + interrupt_sequence_control_c, + interrupt_sequence_break, + interrupt_sequence_break_g, + NULL + }; +static const char *interrupt_sequence_mode = interrupt_sequence_control_c; + +static void +show_interrupt_sequence (struct ui_file *file, int from_tty, + struct cmd_list_element *c, + const char *value) +{ + if (interrupt_sequence_mode == interrupt_sequence_control_c) + fprintf_filtered (file, + _("Send the ASCII ETX character (Ctrl-c) " + "to the remote target to interrupt the " + "execution of the program.\n")); + else if (interrupt_sequence_mode == interrupt_sequence_break) + fprintf_filtered (file, + _("send a break signal to the remote target " + "to interrupt the execution of the program.\n")); + else if (interrupt_sequence_mode == interrupt_sequence_break_g) + fprintf_filtered (file, + _("Send a break signal and 'g' a.k.a. Magic SysRq g to " + "the remote target to interrupt the execution " + "of Linux kernel.\n")); + else + internal_error (__FILE__, __LINE__, + _("Invalid value for interrupt_sequence_mode: %s."), + interrupt_sequence_mode); +} -/* This variable chooses whether to send a ^C or a break when the user - requests program interruption. Although ^C is usually what remote - systems expect, and that is the default here, sometimes a break is - preferable instead. */ +/* This boolean variable specifies whether interrupt_sequence is sent + to the remote target when gdb connects to it. + This is mostly needed when you debug the Linux kernel: The Linux kernel + expects BREAK g which is Magic SysRq g for connecting gdb. */ +static int interrupt_on_connect = 0; +/* This variable is used to implement the "set/show remotebreak" commands. + Since these commands are now deprecated in favor of "set/show remote + interrupt-sequence", it no longer has any effect on the code. */ static int remote_break; +static void +set_remotebreak (char *args, int from_tty, struct cmd_list_element *c) +{ + if (remote_break) + interrupt_sequence_mode = interrupt_sequence_break; + else + interrupt_sequence_mode = interrupt_sequence_control_c; +} + +static void +show_remotebreak (struct ui_file *file, int from_tty, + struct cmd_list_element *c, + const char *value) +{ +} + /* Descriptor for I/O to remote machine. Initialize it to NULL so that remote_open knows that we don't have a file open when the program starts. */ @@ -665,6 +872,7 @@ set_memory_packet_size (char *args, struct memory_packet_config *config) { int fixed_p = config->fixed_p; long size = config->size; + if (args == NULL) error (_("Argument required (integer, `fixed' or `limited').")); else if (strcmp (args, "hard") == 0 @@ -676,6 +884,7 @@ set_memory_packet_size (char *args, struct memory_packet_config *config) else { char *end; + size = strtoul (args, &end, 0); if (args == end) error (_("Invalid %s (bad syntax)."), config->name); @@ -757,6 +966,7 @@ static long get_memory_read_packet_size (void) { long size = get_memory_packet_size (&memory_read_packet_config); + /* FIXME: cagney/1999-11-07: Functions like getpkt() need to get an extra buffer size argument before the memory read size can be increased beyond this. */ @@ -816,6 +1026,7 @@ static void show_packet_config_cmd (struct packet_config *config) { char *support = "internal-error"; + switch (config->support) { case PACKET_ENABLE: @@ -872,6 +1083,7 @@ add_packet_config_cmd (struct packet_config *config, const char *name, if (legacy) { char *legacy_name; + legacy_name = xstrprintf ("%s-packet", name); add_alias_cmd (legacy_name, cmd_name, class_obscure, 0, &remote_set_cmdlist); @@ -988,6 +1200,9 @@ enum { PACKET_qXfer_spu_read, PACKET_qXfer_spu_write, PACKET_qXfer_osdata, + PACKET_qXfer_threads, + PACKET_qXfer_statictrace_read, + PACKET_qGetTIBAddr, PACKET_qGetTLSAddr, PACKET_qSupported, PACKET_QPassSignals, @@ -1000,8 +1215,12 @@ enum { PACKET_qXfer_siginfo_write, PACKET_qAttached, PACKET_ConditionalTracepoints, + PACKET_FastTracepoints, + PACKET_StaticTracepoints, PACKET_bc, PACKET_bs, + PACKET_TracepointSource, + PACKET_QAllow, PACKET_MAX }; @@ -1070,6 +1289,7 @@ set_remote_protocol_Z_packet_cmd (char *args, int from_tty, struct cmd_list_element *c) { int i; + for (i = 0; i < NR_Z_PACKET_TYPES; i++) { remote_protocol_packets[PACKET_Z0 + i].detect = remote_Z_packet_detect; @@ -1083,6 +1303,7 @@ show_remote_protocol_Z_packet_cmd (struct ui_file *file, int from_tty, const char *value) { int i; + for (i = 0; i < NR_Z_PACKET_TYPES; i++) { show_packet_config_cmd (&remote_protocol_packets[PACKET_Z0 + i]); @@ -1183,7 +1404,26 @@ remote_add_inferior (int pid, int attached) if (attached == -1) attached = remote_query_attached (pid); - inf = add_inferior (pid); + if (gdbarch_has_global_solist (target_gdbarch)) + { + /* If the target shares code across all inferiors, then every + attach adds a new inferior. */ + inf = add_inferior (pid); + + /* ... and every inferior is bound to the same program space. + However, each inferior may still have its own address + space. */ + inf->aspace = maybe_new_address_space (); + inf->pspace = current_program_space; + } + else + { + /* In the traditional debugging scenario, there's a 1-1 match + between program/address spaces. We simply bind the inferior + to the program space's address space. */ + inf = current_inferior (); + inferior_appeared (inf, pid); + } inf->attach_flag = attached; @@ -1242,7 +1482,7 @@ remote_notice_new_inferior (ptid_t currthread, int running) remote_add_thread (currthread, running); inferior_ptid = currthread; } - return; + return; } if (ptid_equal (magic_null_ptid, inferior_ptid)) @@ -1252,7 +1492,7 @@ remote_notice_new_inferior (ptid_t currthread, int running) doesn't support qC. This is the first stop reported after an attach, so this is the main thread. Update the ptid in the thread list. */ - thread_change_ptid (inferior_ptid, currthread); + thread_change_ptid (inferior_ptid, currthread); return; } @@ -1274,6 +1514,26 @@ remote_notice_new_inferior (ptid_t currthread, int running) } } +/* Return the private thread data, creating it if necessary. */ + +struct private_thread_info * +demand_private_info (ptid_t ptid) +{ + struct thread_info *info = find_thread_ptid (ptid); + + gdb_assert (info); + + if (!info->private) + { + info->private = xmalloc (sizeof (*(info->private))); + info->private_dtor = free_private_thread_info; + info->private->core = -1; + info->private->extra = 0; + } + + return info->private; +} + /* Call this function as a result of 1) A halt indication (T packet) containing a thread id 2) A direct query of currthread @@ -1284,12 +1544,6 @@ static void record_currthread (ptid_t currthread) { general_thread = currthread; - - if (ptid_equal (currthread, minus_one_ptid)) - /* We're just invalidating the local thread mirror. */ - return; - - remote_notice_new_inferior (currthread, 0); } static char *last_pass_packet; @@ -1351,6 +1605,14 @@ remote_pass_signals (void) } } +static void +remote_notice_signals (ptid_t ptid) +{ + /* Update the remote on signals to silently pass, if they've + changed. */ + remote_pass_signals (); +} + /* If PTID is MAGIC_NULL_PTID, don't set any thread. If PTID is MINUS_ONE_PTID, set the thread to -1, so the stub returns the thread. If GEN is set, set the general thread, if not, then set @@ -2218,6 +2480,95 @@ remote_find_new_threads (void) CRAZY_MAX_THREADS); } +#if defined(HAVE_LIBEXPAT) + +typedef struct thread_item +{ + ptid_t ptid; + char *extra; + int core; +} thread_item_t; +DEF_VEC_O(thread_item_t); + +struct threads_parsing_context +{ + VEC (thread_item_t) *items; +}; + +static void +start_thread (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, VEC(gdb_xml_value_s) *attributes) +{ + struct threads_parsing_context *data = user_data; + + struct thread_item item; + char *id; + + id = VEC_index (gdb_xml_value_s, attributes, 0)->value; + item.ptid = read_ptid (id, NULL); + + if (VEC_length (gdb_xml_value_s, attributes) > 1) + item.core = *(ULONGEST *) VEC_index (gdb_xml_value_s, attributes, 1)->value; + else + item.core = -1; + + item.extra = 0; + + VEC_safe_push (thread_item_t, data->items, &item); +} + +static void +end_thread (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, const char *body_text) +{ + struct threads_parsing_context *data = user_data; + + if (body_text && *body_text) + VEC_last (thread_item_t, data->items)->extra = xstrdup (body_text); +} + +const struct gdb_xml_attribute thread_attributes[] = { + { "id", GDB_XML_AF_NONE, NULL, NULL }, + { "core", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL }, + { NULL, GDB_XML_AF_NONE, NULL, NULL } +}; + +const struct gdb_xml_element thread_children[] = { + { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } +}; + +const struct gdb_xml_element threads_children[] = { + { "thread", thread_attributes, thread_children, + GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL, + start_thread, end_thread }, + { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } +}; + +const struct gdb_xml_element threads_elements[] = { + { "threads", NULL, threads_children, + GDB_XML_EF_NONE, NULL, NULL }, + { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } +}; + +/* Discard the contents of the constructed thread info context. */ + +static void +clear_threads_parsing_context (void *p) +{ + struct threads_parsing_context *context = p; + int i; + struct thread_item *item; + + for (i = 0; VEC_iterate (thread_item_t, context->items, i, item); ++i) + xfree (item->extra); + + VEC_free (thread_item_t, context->items); +} + +#endif + /* * Find all threads for info threads command. * Uses new thread protocol contributed by Cisco. @@ -2235,6 +2586,65 @@ remote_threads_info (struct target_ops *ops) if (remote_desc == 0) /* paranoia */ error (_("Command can only be used when connected to the remote target.")); +#if defined(HAVE_LIBEXPAT) + if (remote_protocol_packets[PACKET_qXfer_threads].support == PACKET_ENABLE) + { + char *xml = target_read_stralloc (¤t_target, + TARGET_OBJECT_THREADS, NULL); + + struct cleanup *back_to = make_cleanup (xfree, xml); + if (xml && *xml) + { + struct gdb_xml_parser *parser; + struct threads_parsing_context context; + struct cleanup *clear_parsing_context; + + context.items = 0; + /* Note: this parser cleanup is already guarded by BACK_TO + above. */ + parser = gdb_xml_create_parser_and_cleanup (_("threads"), + threads_elements, + &context); + + gdb_xml_use_dtd (parser, "threads.dtd"); + + clear_parsing_context + = make_cleanup (clear_threads_parsing_context, &context); + + if (gdb_xml_parse (parser, xml) == 0) + { + int i; + struct thread_item *item; + + for (i = 0; VEC_iterate (thread_item_t, context.items, i, item); ++i) + { + if (!ptid_equal (item->ptid, null_ptid)) + { + struct private_thread_info *info; + /* In non-stop mode, we assume new found threads + are running until proven otherwise with a + stop reply. In all-stop, we can only get + here if all threads are stopped. */ + int running = non_stop ? 1 : 0; + + remote_notice_new_inferior (item->ptid, running); + + info = demand_private_info (item->ptid); + info->core = item->core; + info->extra = item->extra; + item->extra = NULL; + } + } + } + + do_cleanups (clear_parsing_context); + } + + do_cleanups (back_to); + return; + } +#endif + if (use_threadinfo_query) { putpkt ("qfThreadInfo"); @@ -2307,6 +2717,16 @@ remote_threads_extra_info (struct thread_info *tp) server doesn't know about it. */ return NULL; + if (remote_protocol_packets[PACKET_qXfer_threads].support == PACKET_ENABLE) + { + struct thread_info *info = find_thread_ptid (tp->ptid); + + if (info && info->private) + return info->private->extra; + else + return NULL; + } + if (use_threadextra_query) { char *b = rs->buf; @@ -2357,6 +2777,107 @@ remote_threads_extra_info (struct thread_info *tp) } +static int +remote_static_tracepoint_marker_at (CORE_ADDR addr, + struct static_tracepoint_marker *marker) +{ + struct remote_state *rs = get_remote_state (); + char *p = rs->buf; + + sprintf (p, "qTSTMat:"); + p += strlen (p); + p += hexnumstr (p, addr); + putpkt (rs->buf); + getpkt (&rs->buf, &rs->buf_size, 0); + p = rs->buf; + + if (*p == 'E') + error (_("Remote failure reply: %s"), p); + + if (*p++ == 'm') + { + parse_static_tracepoint_marker_definition (p, &p, marker); + return 1; + } + + return 0; +} + +static void +free_current_marker (void *arg) +{ + struct static_tracepoint_marker **marker_p = arg; + + if (*marker_p != NULL) + { + release_static_tracepoint_marker (*marker_p); + xfree (*marker_p); + } + else + *marker_p = NULL; +} + +static VEC(static_tracepoint_marker_p) * +remote_static_tracepoint_markers_by_strid (const char *strid) +{ + struct remote_state *rs = get_remote_state (); + VEC(static_tracepoint_marker_p) *markers = NULL; + struct static_tracepoint_marker *marker = NULL; + struct cleanup *old_chain; + char *p; + + /* Ask for a first packet of static tracepoint marker + definition. */ + putpkt ("qTfSTM"); + getpkt (&rs->buf, &rs->buf_size, 0); + p = rs->buf; + if (*p == 'E') + error (_("Remote failure reply: %s"), p); + + old_chain = make_cleanup (free_current_marker, &marker); + + while (*p++ == 'm') + { + if (marker == NULL) + marker = XCNEW (struct static_tracepoint_marker); + + do + { + parse_static_tracepoint_marker_definition (p, &p, marker); + + if (strid == NULL || strcmp (strid, marker->str_id) == 0) + { + VEC_safe_push (static_tracepoint_marker_p, + markers, marker); + marker = NULL; + } + else + { + release_static_tracepoint_marker (marker); + memset (marker, 0, sizeof (*marker)); + } + } + while (*p++ == ','); /* comma-separated list */ + /* Ask for another packet of static tracepoint definition. */ + putpkt ("qTsSTM"); + getpkt (&rs->buf, &rs->buf_size, 0); + p = rs->buf; + } + + do_cleanups (old_chain); + return markers; +} + + +/* Implement the to_get_ada_task_ptid function for the remote targets. */ + +static ptid_t +remote_get_ada_task_ptid (long lwp, long thread) +{ + return ptid_build (ptid_get_pid (inferior_ptid), 0, lwp); +} + + /* Restart the remote side; this is an extended protocol operation. */ static void @@ -2390,6 +2911,7 @@ remote_close (int quitting) /* We don't have a connection to the remote stub anymore. Get rid of all the inferiors and their threads we were controlling. */ discard_all_inferiors (); + inferior_ptid = null_ptid; /* We're no longer interested in any of these events. */ discard_pending_stop_replies (-1); @@ -2585,6 +3107,25 @@ struct start_remote_args int extended_p; }; +/* Send interrupt_sequence to remote target. */ +static void +send_interrupt_sequence () +{ + if (interrupt_sequence_mode == interrupt_sequence_control_c) + serial_write (remote_desc, "\x03", 1); + else if (interrupt_sequence_mode == interrupt_sequence_break) + serial_send_break (remote_desc); + else if (interrupt_sequence_mode == interrupt_sequence_break_g) + { + serial_send_break (remote_desc); + serial_write (remote_desc, "g", 1); + } + else + internal_error (__FILE__, __LINE__, + _("Invalid value for interrupt_sequence_mode: %s."), + interrupt_sequence_mode); +} + static void remote_start_remote (struct ui_out *uiout, void *opaque) { @@ -2598,11 +3139,18 @@ remote_start_remote (struct ui_out *uiout, void *opaque) /* Ack any packet which the remote side has already sent. */ serial_write (remote_desc, "+", 1); + if (interrupt_on_connect) + send_interrupt_sequence (); + /* The first packet we send to the target is the optional "supported packets" request. If the target can answer this, it will tell us which later probes to skip. */ remote_query_supported (); + /* If the stub wants to get a QAllow, compose one and send it. */ + if (remote_protocol_packets[PACKET_QAllow].support != PACKET_DISABLE) + remote_set_permissions (); + /* Next, we possibly activate noack mode. If the QStartNoAckMode packet configuration is set to AUTO, @@ -2639,6 +3187,10 @@ remote_start_remote (struct ui_out *uiout, void *opaque) this before anything involving memory or registers. */ target_find_description (); + /* Next, now that we know something about the target, update the + address spaces in the program spaces. */ + update_address_spaces (); + /* On OSs where the list of libraries is global to all processes, we fetch them early. */ if (gdbarch_has_global_solist (target_gdbarch)) @@ -2798,6 +3350,11 @@ remote_start_remote (struct ui_out *uiout, void *opaque) /* In non-stop mode, any cached wait status will be stored in the stop reply queue. */ gdb_assert (wait_status == NULL); + + /* Update the remote on signals to silently pass, or more + importantly, which to not ignore, in case a previous session + had set some different set of signals to be ignored. */ + remote_pass_signals (); } /* If we connected to a live target, do some additional setup. */ @@ -2807,13 +3364,35 @@ remote_start_remote (struct ui_out *uiout, void *opaque) remote_check_symbols (symfile_objfile); } - /* If breakpoints are global, insert them now. */ - if (gdbarch_has_global_breakpoints (target_gdbarch) - && breakpoints_always_inserted_mode ()) - insert_breakpoints (); -} + /* Possibly the target has been engaged in a trace run started + previously; find out where things are at. */ + if (remote_get_trace_status (current_trace_status ()) != -1) + { + struct uploaded_tp *uploaded_tps = NULL; + struct uploaded_tsv *uploaded_tsvs = NULL; -/* Open a connection to a remote debugger. + if (current_trace_status ()->running) + printf_filtered (_("Trace is already running on the target.\n")); + + /* Get trace state variables first, they may be checked when + parsing uploaded commands. */ + + remote_upload_trace_state_variables (&uploaded_tsvs); + + merge_uploaded_trace_state_variables (&uploaded_tsvs); + + remote_upload_tracepoints (&uploaded_tps); + + merge_uploaded_tracepoints (&uploaded_tps); + } + + /* If breakpoints are global, insert them now. */ + if (gdbarch_has_global_breakpoints (target_gdbarch) + && breakpoints_always_inserted_mode ()) + insert_breakpoints (); +} + +/* Open a connection to a remote debugger. NAME is the filename used for communication. */ static void @@ -2837,6 +3416,7 @@ static void init_all_packet_configs (void) { int i; + for (i = 0; i < PACKET_MAX; i++) update_packet_config (&remote_protocol_packets[i]); } @@ -2917,6 +3497,36 @@ Some events may be lost, rendering further debugging impossible.")); return serial_open (name); } +/* Inform the target of our permission settings. The permission flags + work without this, but if the target knows the settings, it can do + a couple things. First, it can add its own check, to catch cases + that somehow manage to get by the permissions checks in target + methods. Second, if the target is wired to disallow particular + settings (for instance, a system in the field that is not set up to + be able to stop at a breakpoint), it can object to any unavailable + permissions. */ + +void +remote_set_permissions (void) +{ + struct remote_state *rs = get_remote_state (); + + sprintf (rs->buf, "QAllow:" + "WriteReg:%x;WriteMem:%x;" + "InsertBreak:%x;InsertTrace:%x;" + "InsertFastTrace:%x;Stop:%x", + may_write_registers, may_write_memory, + may_insert_breakpoints, may_insert_tracepoints, + may_insert_fast_tracepoints, may_stop); + putpkt (rs->buf); + getpkt (&rs->buf, &rs->buf_size, 0); + + /* If the target didn't like the packet, warn the user. Do not try + to undo the user's settings, that would just be maddening. */ + if (strcmp (rs->buf, "OK") != 0) + warning ("Remote refused setting permissions with: %s", rs->buf); +} + /* This type describes each known response to the qSupported packet. */ struct protocol_feature @@ -3005,6 +3615,7 @@ remote_multi_process_feature (const struct protocol_feature *feature, enum packet_support support, const char *value) { struct remote_state *rs = get_remote_state (); + rs->multi_process_aware = (support == PACKET_ENABLE); } @@ -3013,6 +3624,7 @@ remote_non_stop_feature (const struct protocol_feature *feature, enum packet_support support, const char *value) { struct remote_state *rs = get_remote_state (); + rs->non_stop_aware = (support == PACKET_ENABLE); } @@ -3022,9 +3634,40 @@ remote_cond_tracepoint_feature (const struct protocol_feature *feature, const char *value) { struct remote_state *rs = get_remote_state (); + rs->cond_tracepoints = (support == PACKET_ENABLE); } +static void +remote_fast_tracepoint_feature (const struct protocol_feature *feature, + enum packet_support support, + const char *value) +{ + struct remote_state *rs = get_remote_state (); + + rs->fast_tracepoints = (support == PACKET_ENABLE); +} + +static void +remote_static_tracepoint_feature (const struct protocol_feature *feature, + enum packet_support support, + const char *value) +{ + struct remote_state *rs = get_remote_state (); + + rs->static_tracepoints = (support == PACKET_ENABLE); +} + +static void +remote_disconnected_tracing_feature (const struct protocol_feature *feature, + enum packet_support support, + const char *value) +{ + struct remote_state *rs = get_remote_state (); + + rs->disconnected_tracing = (support == PACKET_ENABLE); +} + static struct protocol_feature remote_protocol_features[] = { { "PacketSize", PACKET_DISABLE, remote_packet_size, -1 }, { "qXfer:auxv:read", PACKET_DISABLE, remote_supported_packet, @@ -3041,6 +3684,8 @@ static struct protocol_feature remote_protocol_features[] = { PACKET_qXfer_spu_write }, { "qXfer:osdata:read", PACKET_DISABLE, remote_supported_packet, PACKET_qXfer_osdata }, + { "qXfer:threads:read", PACKET_DISABLE, remote_supported_packet, + PACKET_qXfer_threads }, { "QPassSignals", PACKET_DISABLE, remote_supported_packet, PACKET_QPassSignals }, { "QStartNoAckMode", PACKET_DISABLE, remote_supported_packet, @@ -3053,12 +3698,65 @@ static struct protocol_feature remote_protocol_features[] = { PACKET_qXfer_siginfo_write }, { "ConditionalTracepoints", PACKET_DISABLE, remote_cond_tracepoint_feature, PACKET_ConditionalTracepoints }, + { "FastTracepoints", PACKET_DISABLE, remote_fast_tracepoint_feature, + PACKET_FastTracepoints }, + { "StaticTracepoints", PACKET_DISABLE, remote_static_tracepoint_feature, + PACKET_StaticTracepoints }, + { "DisconnectedTracing", PACKET_DISABLE, remote_disconnected_tracing_feature, + -1 }, { "ReverseContinue", PACKET_DISABLE, remote_supported_packet, PACKET_bc }, { "ReverseStep", PACKET_DISABLE, remote_supported_packet, PACKET_bs }, + { "TracepointSource", PACKET_DISABLE, remote_supported_packet, + PACKET_TracepointSource }, + { "QAllow", PACKET_DISABLE, remote_supported_packet, + PACKET_QAllow }, }; +static char *remote_support_xml; + +/* Register string appended to "xmlRegisters=" in qSupported query. */ + +void +register_remote_support_xml (const char *xml) +{ +#if defined(HAVE_LIBEXPAT) + if (remote_support_xml == NULL) + remote_support_xml = concat ("xmlRegisters=", xml, (char *) NULL); + else + { + char *copy = xstrdup (remote_support_xml + 13); + char *p = strtok (copy, ","); + + do + { + if (strcmp (p, xml) == 0) + { + /* already there */ + xfree (copy); + return; + } + } + while ((p = strtok (NULL, ",")) != NULL); + xfree (copy); + + remote_support_xml = reconcat (remote_support_xml, + remote_support_xml, ",", xml, + (char *) NULL); + } +#endif +} + +static char * +remote_query_supported_append (char *msg, const char *append) +{ + if (msg) + return reconcat (msg, msg, ";", append, (char *) NULL); + else + return xstrdup (append); +} + static void remote_query_supported (void) { @@ -3077,10 +3775,21 @@ remote_query_supported (void) rs->buf[0] = 0; if (remote_protocol_packets[PACKET_qSupported].support != PACKET_DISABLE) { + char *q = NULL; + struct cleanup *old_chain = make_cleanup (free_current_contents, &q); + if (rs->extended) - putpkt ("qSupported:multiprocess+"); - else - putpkt ("qSupported"); + q = remote_query_supported_append (q, "multiprocess+"); + + if (remote_support_xml) + q = remote_query_supported_append (q, remote_support_xml); + + q = remote_query_supported_append (q, "qRelocInsn+"); + + q = reconcat (q, "qSupported:", q, (char *) NULL); + putpkt (q); + + do_cleanups (old_chain); getpkt (&rs->buf, &rs->buf_size, 0); @@ -3287,6 +3996,7 @@ remote_open_1 (char *name, int from_tty, struct target_ops *target, int extended rs->extended = extended_p; rs->non_stop_aware = 0; rs->waiting_for_stop_reply = 0; + rs->ctrlc_pending_p = 0; general_thread = not_sent_ptid; continue_thread = not_sent_ptid; @@ -3444,17 +4154,12 @@ extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty) { struct remote_state *rs = get_remote_state (); int pid; - char *dummy; char *wait_status = NULL; - if (!args) - error_no_arg (_("process-id to attach")); + pid = parse_pid_to_attach (args); - dummy = args; - pid = strtol (args, &dummy, 0); - /* Some targets don't set errno on errors, grrr! */ - if (pid == 0 && args == dummy) - error (_("Illegal process-id: %s."), args); + /* Remote PID can be freely equal to getpid, do not check it here the same + way as in other targets. */ if (remote_protocol_packets[PACKET_vAttach].support == PACKET_DISABLE) error (_("This target does not support attaching to a process")); @@ -3486,7 +4191,7 @@ extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty) error (_("Attaching to %s failed"), target_pid_to_str (pid_to_ptid (pid))); - remote_add_inferior (pid, 1); + set_current_inferior (remote_add_inferior (pid, 1)); inferior_ptid = pid_to_ptid (pid); @@ -3569,7 +4274,7 @@ fromhex (int a) error (_("Reply contains invalid hex digit %d"), a); } -static int +int hex2bin (const char *hex, gdb_byte *bin, int count) { int i; @@ -3599,10 +4304,11 @@ tohex (int nib) return 'a' + nib - 10; } -static int +int bin2hex (const gdb_byte *bin, char *hex, int count) { int i; + /* May use a length, or a nul-terminated string as input. */ if (count == 0) count = strlen ((char *) bin); @@ -4015,18 +4721,16 @@ remote_stop_as (ptid_t ptid) { struct remote_state *rs = get_remote_state (); + rs->ctrlc_pending_p = 1; + /* If the inferior is stopped already, but the core didn't know about it yet, just ignore the request. The cached wait status will be collected in remote_wait. */ if (rs->cached_wait_status) return; - /* Send a break or a ^C, depending on user preference. */ - - if (remote_break) - serial_send_break (remote_desc); - else - serial_write (remote_desc, "\003", 1); + /* Send interrupt_sequence to remote target. */ + send_interrupt_sequence (); } /* This is the generic stop called via the target vector. When a target @@ -4113,7 +4817,7 @@ remote_terminal_ours (void) remote_async_terminal_ours_p = 1; } -void +static void remote_console_output (char *msg) { char *p; @@ -4122,6 +4826,7 @@ remote_console_output (char *msg) { char tb[2]; char c = fromhex (p[0]) * 16 + fromhex (p[1]); + tb[0] = c; tb[1] = 0; fputs_unfiltered (tb, gdb_stdtarg); @@ -4152,6 +4857,8 @@ struct stop_reply int solibs_changed; int replay_event; + + int core; }; /* The list of already fetched and acknowledged stop events. */ @@ -4161,6 +4868,7 @@ static struct stop_reply * stop_reply_xmalloc (void) { struct stop_reply *r = XMALLOC (struct stop_reply); + r->next = NULL; return r; } @@ -4218,6 +4926,7 @@ static void do_stop_reply_xfree (void *arg) { struct stop_reply *r = arg; + stop_reply_xfree (r); } @@ -4229,26 +4938,23 @@ do_stop_reply_xfree (void *arg) static struct stop_reply * queued_stop_reply (ptid_t ptid) { - struct stop_reply *it, *prev; - struct stop_reply head; - - head.next = stop_reply_queue; - prev = &head; - - it = head.next; - - if (!ptid_equal (ptid, minus_one_ptid)) - for (; it; prev = it, it = it->next) - if (ptid_equal (ptid, it->ptid)) - break; + struct stop_reply *it; + struct stop_reply **it_link; - if (it) + it = stop_reply_queue; + it_link = &stop_reply_queue; + while (it) { - prev->next = it->next; - it->next = NULL; - } + if (ptid_match (it->ptid, ptid)) + { + *it_link = it->next; + it->next = NULL; + break; + } - stop_reply_queue = head.next; + it_link = &it->next; + it = *it_link; + } if (stop_reply_queue) /* There's still at least an event left. */ @@ -4315,6 +5021,7 @@ remote_parse_stop_reply (char *buf, struct stop_reply *event) event->replay_event = 0; event->stopped_by_watchpoint_p = 0; event->regcache = NULL; + event->core = -1; switch (buf[0]) { @@ -4341,7 +5048,8 @@ remote_parse_stop_reply (char *buf, struct stop_reply *event) /* If this packet is an awatch packet, don't parse the 'a' as a register number. */ - if (strncmp (p, "awatch", strlen("awatch")) != 0) + if (strncmp (p, "awatch", strlen("awatch")) != 0 + && strncmp (p, "core", strlen ("core") != 0)) { /* Read the ``P'' register number. */ pnum = strtol (p, &p_temp, 16); @@ -4387,6 +5095,13 @@ Packet: '%s'\n"), if (p_temp) p = p_temp; } + else if (strncmp (p, "core", p1 - p) == 0) + { + ULONGEST c; + + p = unpack_varlen_hex (++p1, &c); + event->core = c; + } else { /* Silently skip unknown optional info. */ @@ -4411,7 +5126,7 @@ Packet: '%s'\n"), if (reg == NULL) error (_("Remote sent bad register number %s: %s\n\ Packet: '%s'\n"), - phex_nz (pnum, 0), p, buf); + hex_string (pnum), p, buf); cached_reg.num = reg->regnum; @@ -4483,6 +5198,7 @@ Packet: '%s'\n"), "process:", sizeof ("process:") - 1) == 0) { ULONGEST upid; + p += sizeof ("process:") - 1; unpack_varlen_hex (p, &upid); pid = upid; @@ -4627,6 +5343,7 @@ process_stop_reply (struct stop_reply *stop_reply, remote_watch_data_address = stop_reply->watch_data_address; remote_notice_new_inferior (ptid, 0); + demand_private_info (ptid)->core = stop_reply->core; } stop_reply_xfree (stop_reply); @@ -4745,6 +5462,11 @@ remote_wait_as (ptid_t ptid, struct target_waitstatus *status, int options) /* We got something. */ rs->waiting_for_stop_reply = 0; + /* Assume that the target has acknowledged Ctrl-C unless we receive + an 'F' or 'O' packet. */ + if (buf[0] != 'F' && buf[0] != 'O') + rs->ctrlc_pending_p = 0; + switch (buf[0]) { case 'E': /* Error of some sort. */ @@ -4755,7 +5477,8 @@ remote_wait_as (ptid_t ptid, struct target_waitstatus *status, int options) status->value.sig = TARGET_SIGNAL_0; break; case 'F': /* File-I/O request. */ - remote_fileio_request (buf); + remote_fileio_request (buf, rs->ctrlc_pending_p); + rs->ctrlc_pending_p = 0; break; case 'T': case 'S': case 'X': case 'W': { @@ -5013,30 +5736,28 @@ process_g_packet (struct regcache *regcache) p += 2; } - { - int i; - for (i = 0; i < gdbarch_num_regs (gdbarch); i++) - { - struct packet_reg *r = &rsa->regs[i]; - if (r->in_g_packet) - { - if (r->offset * 2 >= strlen (rs->buf)) - /* This shouldn't happen - we adjusted in_g_packet above. */ - internal_error (__FILE__, __LINE__, - "unexpected end of 'g' packet reply"); - else if (rs->buf[r->offset * 2] == 'x') - { - gdb_assert (r->offset * 2 < strlen (rs->buf)); - /* The register isn't available, mark it as such (at - the same time setting the value to zero). */ - regcache_raw_supply (regcache, r->regnum, NULL); - } - else - regcache_raw_supply (regcache, r->regnum, - regs + r->offset); - } - } - } + for (i = 0; i < gdbarch_num_regs (gdbarch); i++) + { + struct packet_reg *r = &rsa->regs[i]; + + if (r->in_g_packet) + { + if (r->offset * 2 >= strlen (rs->buf)) + /* This shouldn't happen - we adjusted in_g_packet above. */ + internal_error (__FILE__, __LINE__, + "unexpected end of 'g' packet reply"); + else if (rs->buf[r->offset * 2] == 'x') + { + gdb_assert (r->offset * 2 < strlen (rs->buf)); + /* The register isn't available, mark it as such (at + the same time setting the value to zero). */ + regcache_raw_supply (regcache, r->regnum, NULL); + } + else + regcache_raw_supply (regcache, r->regnum, + regs + r->offset); + } + } } static void @@ -5058,6 +5779,7 @@ remote_fetch_registers (struct target_ops *ops, if (regnum >= 0) { struct packet_reg *reg = packet_reg_from_regnum (rsa, regnum); + gdb_assert (reg != NULL); /* If this register might be in the 'g' packet, try that first - @@ -5173,11 +5895,13 @@ store_registers_using_G (const struct regcache *regcache) local buffer. */ { int i; + regs = alloca (rsa->sizeof_g_packet); memset (regs, 0, rsa->sizeof_g_packet); for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++) { struct packet_reg *r = &rsa->regs[i]; + if (r->in_g_packet) regcache_raw_collect (regcache, r->regnum, regs + r->offset); } @@ -5212,6 +5936,7 @@ remote_store_registers (struct target_ops *ops, if (regnum >= 0) { struct packet_reg *reg = packet_reg_from_regnum (rsa, regnum); + gdb_assert (reg != NULL); /* Always prefer to store registers using the 'P' packet if @@ -5261,6 +5986,7 @@ static int hexnumstr (char *buf, ULONGEST num) { int len = hexnumlen (num); + return hexnumnstr (buf, num, len); } @@ -5289,6 +6015,7 @@ static CORE_ADDR remote_address_masked (CORE_ADDR addr) { int address_size = remote_address_size; + /* If "remoteaddresssize" was not set, default to target address size. */ if (!address_size) address_size = gdbarch_addr_bit (target_gdbarch); @@ -5299,6 +6026,7 @@ remote_address_masked (CORE_ADDR addr) /* Only create a mask when that mask can safely be constructed in a ULONGEST variable. */ ULONGEST mask = 1; + mask = (mask << address_size) - 1; addr &= mask; } @@ -5745,14 +6473,18 @@ handle_notification (char *buf, size_t length) if (strncmp (buf, "Stop:", 5) == 0) { if (pending_stop_reply) - /* We've already parsed the in-flight stop-reply, but the stub - for some reason thought we didn't, possibly due to timeout - on its side. Just ignore it. */ - ; + { + /* We've already parsed the in-flight stop-reply, but the + stub for some reason thought we didn't, possibly due to + timeout on its side. Just ignore it. */ + if (remote_debug) + fprintf_unfiltered (gdb_stdlog, "ignoring resent notification\n"); + } else { struct cleanup *old_chain; struct stop_reply *reply = stop_reply_xmalloc (); + old_chain = make_cleanup (do_stop_reply_xfree, reply); remote_parse_stop_reply (buf + 5, reply); @@ -5766,6 +6498,9 @@ handle_notification (char *buf, size_t length) /* Notify the event loop there's a stop reply to acknowledge and that there may be more events to fetch. */ mark_async_event_handler (remote_async_get_pending_events_token); + + if (remote_debug) + fprintf_unfiltered (gdb_stdlog, "stop notification captured\n"); } } else @@ -5806,8 +6541,8 @@ remote_send_printf (const char *format, ...) { struct remote_state *rs = get_remote_state (); int max_size = get_remote_packet_size (); - va_list ap; + va_start (ap, format); rs->buf[0] = '\0'; @@ -5827,6 +6562,7 @@ static void restore_remote_timeout (void *p) { int value = *(int *)p; + remote_timeout = value; } @@ -5842,9 +6578,9 @@ remote_flash_erase (struct target_ops *ops, int addr_size = gdbarch_addr_bit (target_gdbarch) / 8; int saved_remote_timeout = remote_timeout; enum packet_result ret; - struct cleanup *back_to = make_cleanup (restore_remote_timeout, &saved_remote_timeout); + remote_timeout = remote_flash_timeout; ret = remote_send_printf ("vFlashErase:%s,%s", @@ -5931,7 +6667,8 @@ readchar (int timeout) error (_("Remote connection closed")); /* no return */ case SERIAL_ERROR: - perror_with_name (_("Remote communication error")); + pop_target (); + perror_with_name (_("Remote communication error. Target disconnected.")); /* no return */ case SERIAL_TIMEOUT: break; @@ -6320,8 +7057,8 @@ Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n", case '*': /* Run length encoding. */ { int repeat; - csum += c; + csum += c; c = readchar (remote_timeout); csum += c; repeat = c - ' ' + 3; /* Compute repeat count. */ @@ -6779,11 +7516,14 @@ extended_remote_create_inferior_1 (char *exec_file, char *args, extended_remote_restart (); } - /* Clean up from the last time we ran, before we mark the target - running again. This will mark breakpoints uninserted, and - get_offsets may insert breakpoints. */ - init_thread_list (); - init_wait_for_inferior (); + if (!have_inferiors ()) + { + /* Clean up from the last time we ran, before we mark the target + running again. This will mark breakpoints uninserted, and + get_offsets may insert breakpoints. */ + init_thread_list (); + init_wait_for_inferior (); + } /* Now mark the inferior as running before we do anything else. */ inferior_ptid = magic_null_ptid; @@ -6827,7 +7567,7 @@ remote_insert_breakpoint (struct gdbarch *gdbarch, char *p; int bpsize; - gdbarch_breakpoint_from_pc (gdbarch, &addr, &bpsize); + gdbarch_remote_breakpoint_from_pc (gdbarch, &addr, &bpsize); rs = get_remote_state (); p = rs->buf; @@ -6907,14 +7647,15 @@ watchpoint_to_Z_packet (int type) } static int -remote_insert_watchpoint (CORE_ADDR addr, int len, int type) +remote_insert_watchpoint (CORE_ADDR addr, int len, int type, + struct expression *cond) { struct remote_state *rs = get_remote_state (); char *p; enum Z_packet_type packet = watchpoint_to_Z_packet (type); if (remote_protocol_packets[PACKET_Z0 + packet].support == PACKET_DISABLE) - return -1; + return 1; sprintf (rs->buf, "Z%x,", packet); p = strchr (rs->buf, '\0'); @@ -6928,8 +7669,9 @@ remote_insert_watchpoint (CORE_ADDR addr, int len, int type) switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0 + packet])) { case PACKET_ERROR: - case PACKET_UNKNOWN: return -1; + case PACKET_UNKNOWN: + return 1; case PACKET_OK: return 0; } @@ -6939,7 +7681,8 @@ remote_insert_watchpoint (CORE_ADDR addr, int len, int type) static int -remote_remove_watchpoint (CORE_ADDR addr, int len, int type) +remote_remove_watchpoint (CORE_ADDR addr, int len, int type, + struct expression *cond) { struct remote_state *rs = get_remote_state (); char *p; @@ -7008,6 +7751,7 @@ static int remote_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p) { int rc = 0; + if (remote_stopped_by_watchpoint ()) { *addr_p = remote_watch_data_address; @@ -7029,7 +7773,7 @@ remote_insert_hw_breakpoint (struct gdbarch *gdbarch, /* The length field should be set to the size of a breakpoint instruction, even though we aren't inserting one ourselves. */ - gdbarch_breakpoint_from_pc + gdbarch_remote_breakpoint_from_pc (gdbarch, &bp_tgt->placed_address, &bp_tgt->placed_size); if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE) @@ -7102,7 +7846,7 @@ static unsigned long crc32_table[256] = {0, 0}; static unsigned long -crc32 (unsigned char *buf, int len, unsigned int crc) +crc32 (const unsigned char *buf, int len, unsigned int crc) { if (!crc32_table[1]) { @@ -7126,38 +7870,59 @@ crc32 (unsigned char *buf, int len, unsigned int crc) return crc; } +/* Verify memory using the "qCRC:" request. */ + +static int +remote_verify_memory (struct target_ops *ops, + const gdb_byte *data, CORE_ADDR lma, ULONGEST size) +{ + struct remote_state *rs = get_remote_state (); + unsigned long host_crc, target_crc; + char *tmp; + + /* FIXME: assumes lma can fit into long. */ + xsnprintf (rs->buf, get_remote_packet_size (), "qCRC:%lx,%lx", + (long) lma, (long) size); + putpkt (rs->buf); + + /* Be clever; compute the host_crc before waiting for target + reply. */ + host_crc = crc32 (data, size, 0xffffffff); + + getpkt (&rs->buf, &rs->buf_size, 0); + if (rs->buf[0] == 'E') + return -1; + + if (rs->buf[0] != 'C') + error (_("remote target does not support this operation")); + + for (target_crc = 0, tmp = &rs->buf[1]; *tmp; tmp++) + target_crc = target_crc * 16 + fromhex (*tmp); + + return (host_crc == target_crc); +} + /* compare-sections command With no arguments, compares each loadable section in the exec bfd with the same memory range on the target, and reports mismatches. - Useful for verifying the image on the target against the exec file. - Depends on the target understanding the new "qCRC:" request. */ - -/* FIXME: cagney/1999-10-26: This command should be broken down into a - target method (target verify memory) and generic version of the - actual command. This will allow other high-level code (especially - generic_load()) to make use of this target functionality. */ + Useful for verifying the image on the target against the exec file. */ static void compare_sections_command (char *args, int from_tty) { - struct remote_state *rs = get_remote_state (); asection *s; - unsigned long host_crc, target_crc; struct cleanup *old_chain; - char *tmp; char *sectdata; const char *sectname; bfd_size_type size; bfd_vma lma; int matched = 0; int mismatched = 0; + int res; if (!exec_bfd) error (_("command cannot be used without an exec file")); - if (!current_target.to_shortname || - strcmp (current_target.to_shortname, "remote") != 0) - error (_("command can only be used with remote target")); for (s = exec_bfd->sections; s; s = s->next) { @@ -7174,33 +7939,22 @@ compare_sections_command (char *args, int from_tty) matched = 1; /* do this section */ lma = s->lma; - /* FIXME: assumes lma can fit into long. */ - xsnprintf (rs->buf, get_remote_packet_size (), "qCRC:%lx,%lx", - (long) lma, (long) size); - putpkt (rs->buf); - /* Be clever; compute the host_crc before waiting for target - reply. */ sectdata = xmalloc (size); old_chain = make_cleanup (xfree, sectdata); bfd_get_section_contents (exec_bfd, s, sectdata, 0, size); - host_crc = crc32 ((unsigned char *) sectdata, size, 0xffffffff); - getpkt (&rs->buf, &rs->buf_size, 0); - if (rs->buf[0] == 'E') + res = target_verify_memory (sectdata, lma, size); + + if (res == -1) error (_("target memory fault, section %s, range %s -- %s"), sectname, paddress (target_gdbarch, lma), paddress (target_gdbarch, lma + size)); - if (rs->buf[0] != 'C') - error (_("remote target does not support this operation")); - - for (target_crc = 0, tmp = &rs->buf[1]; *tmp; tmp++) - target_crc = target_crc * 16 + fromhex (*tmp); printf_filtered ("Section %s, range %s -- %s: ", sectname, paddress (target_gdbarch, lma), paddress (target_gdbarch, lma + size)); - if (host_crc == target_crc) + if (res) printf_filtered ("matched.\n"); else { @@ -7356,6 +8110,7 @@ remote_xfer_partial (struct target_ops *ops, enum target_object object, if (object == TARGET_OBJECT_MEMORY) { int xfered; + errno = 0; /* If the remote target is connected but not running, we should @@ -7403,6 +8158,16 @@ remote_xfer_partial (struct target_ops *ops, enum target_object object, [PACKET_qXfer_siginfo_write]); } + if (object == TARGET_OBJECT_STATIC_TRACE_DATA) + { + if (readbuf) + return remote_read_qxfer (ops, "statictrace", annex, readbuf, offset, len, + &remote_protocol_packets + [PACKET_qXfer_statictrace_read]); + else + return -1; + } + /* Only handle flash writes. */ if (writebuf != NULL) { @@ -7460,6 +8225,11 @@ remote_xfer_partial (struct target_ops *ops, enum target_object object, (ops, "osdata", annex, readbuf, offset, len, &remote_protocol_packets[PACKET_qXfer_osdata]); + case TARGET_OBJECT_THREADS: + gdb_assert (annex == NULL); + return remote_read_qxfer (ops, "threads", annex, readbuf, offset, len, + &remote_protocol_packets[PACKET_qXfer_threads]); + default: return -1; } @@ -7631,7 +8401,7 @@ remote_rcmd (char *command, { char *buf; - /* XXX - see also tracepoint.c:remote_get_noisy_reply(). */ + /* XXX - see also remote_get_noisy_reply(). */ rs->buf[0] = '\0'; getpkt (&rs->buf, &rs->buf_size, 0); buf = rs->buf; @@ -7652,6 +8422,7 @@ remote_rcmd (char *command, for (p = buf; p[0] != '\0' && p[1] != '\0'; p += 2) { char c = (fromhex (p[0]) << 4) + fromhex (p[1]); + fputc_unfiltered (c, outbuf); } break; @@ -7668,6 +8439,7 @@ remote_memory_map (struct target_ops *ops) if (text) { struct cleanup *back_to = make_cleanup (xfree, text); + result = parse_memory_map (text); do_cleanups (back_to); } @@ -7935,6 +8707,48 @@ remote_get_thread_local_address (struct target_ops *ops, return 0; } +/* Provide thread local base, i.e. Thread Information Block address. + Returns 1 if ptid is found and thread_local_base is non zero. */ + +int +remote_get_tib_address (ptid_t ptid, CORE_ADDR *addr) +{ + if (remote_protocol_packets[PACKET_qGetTIBAddr].support != PACKET_DISABLE) + { + struct remote_state *rs = get_remote_state (); + char *p = rs->buf; + char *endp = rs->buf + get_remote_packet_size (); + enum packet_result result; + + strcpy (p, "qGetTIBAddr:"); + p += strlen (p); + p = write_ptid (p, endp, ptid); + *p++ = '\0'; + + putpkt (rs->buf); + getpkt (&rs->buf, &rs->buf_size, 0); + result = packet_ok (rs->buf, + &remote_protocol_packets[PACKET_qGetTIBAddr]); + if (result == PACKET_OK) + { + ULONGEST result; + + unpack_varlen_hex (rs->buf, &result); + if (addr) + *addr = (CORE_ADDR) result; + return 1; + } + else if (result == PACKET_UNKNOWN) + error (_("Remote target doesn't support qGetTIBAddr packet")); + else + error (_("Remote target failed to process qGetTIBAddr request")); + } + else + error (_("qGetTIBAddr not supported or disabled on this target")); + /* Not reached. */ + return 0; +} + /* Support for inferring a target description based on the current architecture and the size of a 'g' packet. While the 'g' packet can have any size (since optional registers can be left off the @@ -8766,6 +9580,7 @@ static int remote_supports_multi_process (void) { struct remote_state *rs = get_remote_state (); + return remote_multi_process_p (rs); } @@ -8773,9 +9588,584 @@ int remote_supports_cond_tracepoints (void) { struct remote_state *rs = get_remote_state (); + return rs->cond_tracepoints; } +int +remote_supports_fast_tracepoints (void) +{ + struct remote_state *rs = get_remote_state (); + + return rs->fast_tracepoints; +} + +static int +remote_supports_static_tracepoints (void) +{ + struct remote_state *rs = get_remote_state (); + + return rs->static_tracepoints; +} + +static void +remote_trace_init (void) +{ + putpkt ("QTinit"); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (strcmp (target_buf, "OK") != 0) + error (_("Target does not support this command.")); +} + +static void free_actions_list (char **actions_list); +static void free_actions_list_cleanup_wrapper (void *); +static void +free_actions_list_cleanup_wrapper (void *al) +{ + free_actions_list (al); +} + +static void +free_actions_list (char **actions_list) +{ + int ndx; + + if (actions_list == 0) + return; + + for (ndx = 0; actions_list[ndx]; ndx++) + xfree (actions_list[ndx]); + + xfree (actions_list); +} + +/* Recursive routine to walk through command list including loops, and + download packets for each command. */ + +static void +remote_download_command_source (int num, ULONGEST addr, + struct command_line *cmds) +{ + struct remote_state *rs = get_remote_state (); + struct command_line *cmd; + + for (cmd = cmds; cmd; cmd = cmd->next) + { + QUIT; /* allow user to bail out with ^C */ + strcpy (rs->buf, "QTDPsrc:"); + encode_source_string (num, addr, "cmd", cmd->line, + rs->buf + strlen (rs->buf), + rs->buf_size - strlen (rs->buf)); + putpkt (rs->buf); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (strcmp (target_buf, "OK")) + warning (_("Target does not support source download.")); + + if (cmd->control_type == while_control + || cmd->control_type == while_stepping_control) + { + remote_download_command_source (num, addr, *cmd->body_list); + + QUIT; /* allow user to bail out with ^C */ + strcpy (rs->buf, "QTDPsrc:"); + encode_source_string (num, addr, "cmd", "end", + rs->buf + strlen (rs->buf), + rs->buf_size - strlen (rs->buf)); + putpkt (rs->buf); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (strcmp (target_buf, "OK")) + warning (_("Target does not support source download.")); + } + } +} + +static void +remote_download_tracepoint (struct breakpoint *t) +{ + struct bp_location *loc; + CORE_ADDR tpaddr; + char addrbuf[40]; + char buf[2048]; + char **tdp_actions; + char **stepping_actions; + int ndx; + struct cleanup *old_chain = NULL; + struct agent_expr *aexpr; + struct cleanup *aexpr_chain = NULL; + char *pkt; + + /* Iterate over all the tracepoint locations. It's up to the target to + notice multiple tracepoint packets with the same number but different + addresses, and treat them as multiple locations. */ + for (loc = t->loc; loc; loc = loc->next) + { + encode_actions (t, loc, &tdp_actions, &stepping_actions); + old_chain = make_cleanup (free_actions_list_cleanup_wrapper, + tdp_actions); + (void) make_cleanup (free_actions_list_cleanup_wrapper, stepping_actions); + + tpaddr = loc->address; + sprintf_vma (addrbuf, tpaddr); + sprintf (buf, "QTDP:%x:%s:%c:%lx:%x", t->number, + addrbuf, /* address */ + (t->enable_state == bp_enabled ? 'E' : 'D'), + t->step_count, t->pass_count); + /* Fast tracepoints are mostly handled by the target, but we can + tell the target how big of an instruction block should be moved + around. */ + if (t->type == bp_fast_tracepoint) + { + /* Only test for support at download time; we may not know + target capabilities at definition time. */ + if (remote_supports_fast_tracepoints ()) + { + int isize; + + if (gdbarch_fast_tracepoint_valid_at (target_gdbarch, + tpaddr, &isize, NULL)) + sprintf (buf + strlen (buf), ":F%x", isize); + else + /* If it passed validation at definition but fails now, + something is very wrong. */ + internal_error (__FILE__, __LINE__, + "Fast tracepoint not valid during download"); + } + else + /* Fast tracepoints are functionally identical to regular + tracepoints, so don't take lack of support as a reason to + give up on the trace run. */ + warning (_("Target does not support fast tracepoints, downloading %d as regular tracepoint"), t->number); + } + else if (t->type == bp_static_tracepoint) + { + /* Only test for support at download time; we may not know + target capabilities at definition time. */ + if (remote_supports_static_tracepoints ()) + { + struct static_tracepoint_marker marker; + + if (target_static_tracepoint_marker_at (tpaddr, &marker)) + strcat (buf, ":S"); + else + error ("Static tracepoint not valid during download"); + } + else + /* Fast tracepoints are functionally identical to regular + tracepoints, so don't take lack of support as a reason + to give up on the trace run. */ + error (_("Target does not support static tracepoints")); + } + /* If the tracepoint has a conditional, make it into an agent + expression and append to the definition. */ + if (loc->cond) + { + /* Only test support at download time, we may not know target + capabilities at definition time. */ + if (remote_supports_cond_tracepoints ()) + { + aexpr = gen_eval_for_expr (tpaddr, loc->cond); + aexpr_chain = make_cleanup_free_agent_expr (aexpr); + sprintf (buf + strlen (buf), ":X%x,", aexpr->len); + pkt = buf + strlen (buf); + for (ndx = 0; ndx < aexpr->len; ++ndx) + pkt = pack_hex_byte (pkt, aexpr->buf[ndx]); + *pkt = '\0'; + do_cleanups (aexpr_chain); + } + else + warning (_("Target does not support conditional tracepoints, ignoring tp %d cond"), t->number); + } + + if (t->commands || *default_collect) + strcat (buf, "-"); + putpkt (buf); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (strcmp (target_buf, "OK")) + error (_("Target does not support tracepoints.")); + + /* do_single_steps (t); */ + if (tdp_actions) + { + for (ndx = 0; tdp_actions[ndx]; ndx++) + { + QUIT; /* allow user to bail out with ^C */ + sprintf (buf, "QTDP:-%x:%s:%s%c", + t->number, addrbuf, /* address */ + tdp_actions[ndx], + ((tdp_actions[ndx + 1] || stepping_actions) + ? '-' : 0)); + putpkt (buf); + remote_get_noisy_reply (&target_buf, + &target_buf_size); + if (strcmp (target_buf, "OK")) + error (_("Error on target while setting tracepoints.")); + } + } + if (stepping_actions) + { + for (ndx = 0; stepping_actions[ndx]; ndx++) + { + QUIT; /* allow user to bail out with ^C */ + sprintf (buf, "QTDP:-%x:%s:%s%s%s", + t->number, addrbuf, /* address */ + ((ndx == 0) ? "S" : ""), + stepping_actions[ndx], + (stepping_actions[ndx + 1] ? "-" : "")); + putpkt (buf); + remote_get_noisy_reply (&target_buf, + &target_buf_size); + if (strcmp (target_buf, "OK")) + error (_("Error on target while setting tracepoints.")); + } + } + + if (remote_protocol_packets[PACKET_TracepointSource].support == PACKET_ENABLE) + { + if (t->addr_string) + { + strcpy (buf, "QTDPsrc:"); + encode_source_string (t->number, loc->address, + "at", t->addr_string, buf + strlen (buf), + 2048 - strlen (buf)); + + putpkt (buf); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (strcmp (target_buf, "OK")) + warning (_("Target does not support source download.")); + } + if (t->cond_string) + { + strcpy (buf, "QTDPsrc:"); + encode_source_string (t->number, loc->address, + "cond", t->cond_string, buf + strlen (buf), + 2048 - strlen (buf)); + putpkt (buf); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (strcmp (target_buf, "OK")) + warning (_("Target does not support source download.")); + } + remote_download_command_source (t->number, loc->address, + breakpoint_commands (t)); + } + + do_cleanups (old_chain); + } +} + +static void +remote_download_trace_state_variable (struct trace_state_variable *tsv) +{ + struct remote_state *rs = get_remote_state (); + char *p; + + sprintf (rs->buf, "QTDV:%x:%s:%x:", + tsv->number, phex ((ULONGEST) tsv->initial_value, 8), tsv->builtin); + p = rs->buf + strlen (rs->buf); + if ((p - rs->buf) + strlen (tsv->name) * 2 >= get_remote_packet_size ()) + error (_("Trace state variable name too long for tsv definition packet")); + p += 2 * bin2hex ((gdb_byte *) (tsv->name), p, 0); + *p++ = '\0'; + putpkt (rs->buf); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (*target_buf == '\0') + error (_("Target does not support this command.")); + if (strcmp (target_buf, "OK") != 0) + error (_("Error on target while downloading trace state variable.")); +} + +static void +remote_trace_set_readonly_regions (void) +{ + asection *s; + bfd_size_type size; + bfd_vma lma; + int anysecs = 0; + + if (!exec_bfd) + return; /* No information to give. */ + + strcpy (target_buf, "QTro"); + for (s = exec_bfd->sections; s; s = s->next) + { + char tmp1[40], tmp2[40]; + + if ((s->flags & SEC_LOAD) == 0 || + /* (s->flags & SEC_CODE) == 0 || */ + (s->flags & SEC_READONLY) == 0) + continue; + + anysecs = 1; + lma = s->lma; + size = bfd_get_section_size (s); + sprintf_vma (tmp1, lma); + sprintf_vma (tmp2, lma + size); + sprintf (target_buf + strlen (target_buf), + ":%s,%s", tmp1, tmp2); + } + if (anysecs) + { + putpkt (target_buf); + getpkt (&target_buf, &target_buf_size, 0); + } +} + +static void +remote_trace_start (void) +{ + putpkt ("QTStart"); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (*target_buf == '\0') + error (_("Target does not support this command.")); + if (strcmp (target_buf, "OK") != 0) + error (_("Bogus reply from target: %s"), target_buf); +} + +static int +remote_get_trace_status (struct trace_status *ts) +{ + char *p; + /* FIXME we need to get register block size some other way */ + extern int trace_regblock_size; + + trace_regblock_size = get_remote_arch_state ()->sizeof_g_packet; + + putpkt ("qTStatus"); + p = remote_get_noisy_reply (&target_buf, &target_buf_size); + + /* If the remote target doesn't do tracing, flag it. */ + if (*p == '\0') + return -1; + + /* We're working with a live target. */ + ts->from_file = 0; + + /* Set some defaults. */ + ts->running_known = 0; + ts->stop_reason = trace_stop_reason_unknown; + ts->traceframe_count = -1; + ts->buffer_free = 0; + + if (*p++ != 'T') + error (_("Bogus trace status reply from target: %s"), target_buf); + + parse_trace_status (p, ts); + + return ts->running; +} + +static void +remote_trace_stop (void) +{ + putpkt ("QTStop"); + remote_get_noisy_reply (&target_buf, &target_buf_size); + if (*target_buf == '\0') + error (_("Target does not support this command.")); + if (strcmp (target_buf, "OK") != 0) + error (_("Bogus reply from target: %s"), target_buf); +} + +static int +remote_trace_find (enum trace_find_type type, int num, + ULONGEST addr1, ULONGEST addr2, + int *tpp) +{ + struct remote_state *rs = get_remote_state (); + char *p, *reply; + int target_frameno = -1, target_tracept = -1; + + p = rs->buf; + strcpy (p, "QTFrame:"); + p = strchr (p, '\0'); + switch (type) + { + case tfind_number: + sprintf (p, "%x", num); + break; + case tfind_pc: + sprintf (p, "pc:%s", phex_nz (addr1, 0)); + break; + case tfind_tp: + sprintf (p, "tdp:%x", num); + break; + case tfind_range: + sprintf (p, "range:%s:%s", phex_nz (addr1, 0), phex_nz (addr2, 0)); + break; + case tfind_outside: + sprintf (p, "outside:%s:%s", phex_nz (addr1, 0), phex_nz (addr2, 0)); + break; + default: + error ("Unknown trace find type %d", type); + } + + putpkt (rs->buf); + reply = remote_get_noisy_reply (&(rs->buf), &sizeof_pkt); + if (*reply == '\0') + error (_("Target does not support this command.")); + + while (reply && *reply) + switch (*reply) + { + case 'F': + p = ++reply; + target_frameno = (int) strtol (p, &reply, 16); + if (reply == p) + error (_("Unable to parse trace frame number")); + if (target_frameno == -1) + return -1; + break; + case 'T': + p = ++reply; + target_tracept = (int) strtol (p, &reply, 16); + if (reply == p) + error (_("Unable to parse tracepoint number")); + break; + case 'O': /* "OK"? */ + if (reply[1] == 'K' && reply[2] == '\0') + reply += 2; + else + error (_("Bogus reply from target: %s"), reply); + break; + default: + error (_("Bogus reply from target: %s"), reply); + } + if (tpp) + *tpp = target_tracept; + return target_frameno; +} + +static int +remote_get_trace_state_variable_value (int tsvnum, LONGEST *val) +{ + struct remote_state *rs = get_remote_state (); + char *reply; + ULONGEST uval; + + sprintf (rs->buf, "qTV:%x", tsvnum); + putpkt (rs->buf); + reply = remote_get_noisy_reply (&target_buf, &target_buf_size); + if (reply && *reply) + { + if (*reply == 'V') + { + unpack_varlen_hex (reply + 1, &uval); + *val = (LONGEST) uval; + return 1; + } + } + return 0; +} + +static int +remote_save_trace_data (const char *filename) +{ + struct remote_state *rs = get_remote_state (); + char *p, *reply; + + p = rs->buf; + strcpy (p, "QTSave:"); + p += strlen (p); + if ((p - rs->buf) + strlen (filename) * 2 >= get_remote_packet_size ()) + error (_("Remote file name too long for trace save packet")); + p += 2 * bin2hex ((gdb_byte *) filename, p, 0); + *p++ = '\0'; + putpkt (rs->buf); + reply = remote_get_noisy_reply (&target_buf, &target_buf_size); + if (*reply != '\0') + error (_("Target does not support this command.")); + if (strcmp (reply, "OK") != 0) + error (_("Bogus reply from target: %s"), reply); + return 0; +} + +/* This is basically a memory transfer, but needs to be its own packet + because we don't know how the target actually organizes its trace + memory, plus we want to be able to ask for as much as possible, but + not be unhappy if we don't get as much as we ask for. */ + +static LONGEST +remote_get_raw_trace_data (gdb_byte *buf, ULONGEST offset, LONGEST len) +{ + struct remote_state *rs = get_remote_state (); + char *reply; + char *p; + int rslt; + + p = rs->buf; + strcpy (p, "qTBuffer:"); + p += strlen (p); + p += hexnumstr (p, offset); + *p++ = ','; + p += hexnumstr (p, len); + *p++ = '\0'; + + putpkt (rs->buf); + reply = remote_get_noisy_reply (&target_buf, &target_buf_size); + if (reply && *reply) + { + /* 'l' by itself means we're at the end of the buffer and + there is nothing more to get. */ + if (*reply == 'l') + return 0; + + /* Convert the reply into binary. Limit the number of bytes to + convert according to our passed-in buffer size, rather than + what was returned in the packet; if the target is + unexpectedly generous and gives us a bigger reply than we + asked for, we don't want to crash. */ + rslt = hex2bin (target_buf, buf, len); + return rslt; + } + + /* Something went wrong, flag as an error. */ + return -1; +} + +static void +remote_set_disconnected_tracing (int val) +{ + struct remote_state *rs = get_remote_state (); + + if (rs->disconnected_tracing) + { + char *reply; + + sprintf (rs->buf, "QTDisconnected:%x", val); + putpkt (rs->buf); + reply = remote_get_noisy_reply (&target_buf, &target_buf_size); + if (*reply == '\0') + error (_("Target does not support this command.")); + if (strcmp (reply, "OK") != 0) + error (_("Bogus reply from target: %s"), reply); + } + else if (val) + warning (_("Target does not support disconnected tracing.")); +} + +static int +remote_core_of_thread (struct target_ops *ops, ptid_t ptid) +{ + struct thread_info *info = find_thread_ptid (ptid); + + if (info && info->private) + return info->private->core; + return -1; +} + +static void +remote_set_circular_trace_buffer (int val) +{ + struct remote_state *rs = get_remote_state (); + char *reply; + + sprintf (rs->buf, "QTBuffer:circular:%x", val); + putpkt (rs->buf); + reply = remote_get_noisy_reply (&target_buf, &target_buf_size); + if (*reply == '\0') + error (_("Target does not support this command.")); + if (strcmp (reply, "OK") != 0) + error (_("Bogus reply from target: %s"), reply); +} + static void init_remote_ops (void) { @@ -8808,10 +10198,12 @@ Specify the serial device it is connected to\n\ remote_ops.to_kill = remote_kill; remote_ops.to_load = generic_load; remote_ops.to_mourn_inferior = remote_mourn; + remote_ops.to_notice_signals = remote_notice_signals; remote_ops.to_thread_alive = remote_thread_alive; remote_ops.to_find_new_threads = remote_threads_info; remote_ops.to_pid_to_str = remote_pid_to_str; remote_ops.to_extra_thread_info = remote_threads_extra_info; + remote_ops.to_get_ada_task_ptid = remote_get_ada_task_ptid; remote_ops.to_stop = remote_stop; remote_ops.to_xfer_partial = remote_xfer_partial; remote_ops.to_rcmd = remote_rcmd; @@ -8839,6 +10231,29 @@ Specify the serial device it is connected to\n\ remote_ops.to_terminal_ours = remote_terminal_ours; remote_ops.to_supports_non_stop = remote_supports_non_stop; remote_ops.to_supports_multi_process = remote_supports_multi_process; + remote_ops.to_trace_init = remote_trace_init; + remote_ops.to_download_tracepoint = remote_download_tracepoint; + remote_ops.to_download_trace_state_variable = remote_download_trace_state_variable; + remote_ops.to_trace_set_readonly_regions = remote_trace_set_readonly_regions; + remote_ops.to_trace_start = remote_trace_start; + remote_ops.to_get_trace_status = remote_get_trace_status; + remote_ops.to_trace_stop = remote_trace_stop; + remote_ops.to_trace_find = remote_trace_find; + remote_ops.to_get_trace_state_variable_value = remote_get_trace_state_variable_value; + remote_ops.to_save_trace_data = remote_save_trace_data; + remote_ops.to_upload_tracepoints = remote_upload_tracepoints; + remote_ops.to_upload_trace_state_variables = remote_upload_trace_state_variables; + remote_ops.to_get_raw_trace_data = remote_get_raw_trace_data; + remote_ops.to_set_disconnected_tracing = remote_set_disconnected_tracing; + remote_ops.to_set_circular_trace_buffer = remote_set_circular_trace_buffer; + remote_ops.to_core_of_thread = remote_core_of_thread; + remote_ops.to_verify_memory = remote_verify_memory; + remote_ops.to_get_tib_address = remote_get_tib_address; + remote_ops.to_set_permissions = remote_set_permissions; + remote_ops.to_static_tracepoint_marker_at + = remote_static_tracepoint_marker_at; + remote_ops.to_static_tracepoint_markers_by_strid + = remote_static_tracepoint_markers_by_strid; } /* Set up the extended remote vector by making a copy of the standard @@ -8936,6 +10351,7 @@ static int remote_async_mask (int new_mask) { int curr_mask = remote_async_mask_value; + remote_async_mask_value = new_mask; return curr_mask; } @@ -8966,6 +10382,7 @@ show_remote_cmd (char *args, int from_tty) { struct cleanup *option_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "option"); + ui_out_field_string (uiout, "name", list->name); ui_out_text (uiout, ": "); if (list->type == show_cmd) @@ -8989,10 +10406,59 @@ remote_new_objfile (struct objfile *objfile) remote_check_symbols (objfile); } +/* Pull all the tracepoints defined on the target and create local + data structures representing them. We don't want to create real + tracepoints yet, we don't want to mess up the user's existing + collection. */ + +static int +remote_upload_tracepoints (struct uploaded_tp **utpp) +{ + struct remote_state *rs = get_remote_state (); + char *p; + + /* Ask for a first packet of tracepoint definition. */ + putpkt ("qTfP"); + getpkt (&rs->buf, &rs->buf_size, 0); + p = rs->buf; + while (*p && *p != 'l') + { + parse_tracepoint_definition (p, utpp); + /* Ask for another packet of tracepoint definition. */ + putpkt ("qTsP"); + getpkt (&rs->buf, &rs->buf_size, 0); + p = rs->buf; + } + return 0; +} + +static int +remote_upload_trace_state_variables (struct uploaded_tsv **utsvp) +{ + struct remote_state *rs = get_remote_state (); + char *p; + + /* Ask for a first packet of variable definition. */ + putpkt ("qTfV"); + getpkt (&rs->buf, &rs->buf_size, 0); + p = rs->buf; + while (*p && *p != 'l') + { + parse_tsv_definition (p, utsvp); + /* Ask for another packet of variable definition. */ + putpkt ("qTsV"); + getpkt (&rs->buf, &rs->buf_size, 0); + p = rs->buf; + } + return 0; +} + void _initialize_remote (void) { struct remote_state *rs; + struct cmd_list_element *cmd; + char *cmd_name; /* architecture specific data */ remote_gdbarch_data_handle = @@ -9060,8 +10526,31 @@ terminating `#' character and checksum."), Set whether to send break if interrupted."), _("\ Show whether to send break if interrupted."), _("\ If set, a break, instead of a cntrl-c, is sent to the remote target."), - NULL, NULL, /* FIXME: i18n: Whether to send break if interrupted is %s. */ + set_remotebreak, show_remotebreak, &setlist, &showlist); + cmd_name = "remotebreak"; + cmd = lookup_cmd (&cmd_name, setlist, "", -1, 1); + deprecate_cmd (cmd, "set remote interrupt-sequence"); + cmd_name = "remotebreak"; /* needed because lookup_cmd updates the pointer */ + cmd = lookup_cmd (&cmd_name, showlist, "", -1, 1); + deprecate_cmd (cmd, "show remote interrupt-sequence"); + + add_setshow_enum_cmd ("interrupt-sequence", class_support, + interrupt_sequence_modes, &interrupt_sequence_mode, _("\ +Set interrupt sequence to remote target."), _("\ +Show interrupt sequence to remote target."), _("\ +Valid value is \"Ctrl-C\", \"BREAK\" or \"BREAK-g\". The default is \"Ctrl-C\"."), + NULL, show_interrupt_sequence, + &remote_set_cmdlist, + &remote_show_cmdlist); + + add_setshow_boolean_cmd ("interrupt-on-connect", class_support, + &interrupt_on_connect, _("\ +Set whether interrupt-sequence is sent to remote target when gdb connects to."), _(" \ +Show whether interrupt-sequence is sent to remote target when gdb connects to."), _(" \ +If set, interrupt sequence is sent to remote target."), + NULL, NULL, + &remote_set_cmdlist, &remote_show_cmdlist); /* Install commands for configuring memory read/write packets. */ @@ -9173,6 +10662,9 @@ Show the maximum size of the address (in bits) in a memory packet."), NULL, add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_osdata], "qXfer:osdata:read", "osdata", 0); + add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_threads], + "qXfer:threads:read", "threads", 0); + add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_siginfo_read], "qXfer:siginfo:read", "read-siginfo-object", 0); @@ -9183,6 +10675,10 @@ Show the maximum size of the address (in bits) in a memory packet."), NULL, "qGetTLSAddr", "get-thread-local-storage-address", 0); + add_packet_config_cmd (&remote_protocol_packets[PACKET_qGetTIBAddr], + "qGetTIBAddr", "get-thread-information-block-address", + 0); + add_packet_config_cmd (&remote_protocol_packets[PACKET_bc], "bc", "reverse-continue", 0); @@ -9227,6 +10723,20 @@ Show the maximum size of the address (in bits) in a memory packet."), NULL, add_packet_config_cmd (&remote_protocol_packets[PACKET_ConditionalTracepoints], "ConditionalTracepoints", "conditional-tracepoints", 0); + add_packet_config_cmd (&remote_protocol_packets[PACKET_FastTracepoints], + "FastTracepoints", "fast-tracepoints", 0); + + add_packet_config_cmd (&remote_protocol_packets[PACKET_TracepointSource], + "TracepointSource", "TracepointSource", 0); + + add_packet_config_cmd (&remote_protocol_packets[PACKET_QAllow], + "QAllow", "allow", 0); + + add_packet_config_cmd (&remote_protocol_packets[PACKET_StaticTracepoints], + "StaticTracepoints", "static-tracepoints", 0); + + add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_statictrace_read], + "qXfer:statictrace:read", "read-sdata-object", 0); /* Keep the old ``set remote Z-packet ...'' working. Each individual Z sub-packet has its own set and show commands, but users may @@ -9275,4 +10785,8 @@ Show the remote pathname for \"run\""), NULL, NULL, NULL, magic_null_ptid = ptid_build (42000, 1, -1); not_sent_ptid = ptid_build (42000, 1, -2); any_thread_ptid = ptid_build (42000, 1, 0); + + target_buf_size = 2048; + target_buf = xmalloc (target_buf_size); } + diff --git a/contrib/gdb-7/gdb/remote.h b/contrib/gdb-7/gdb/remote.h index ab721574c4..cdf11fb98c 100644 --- a/contrib/gdb-7/gdb/remote.h +++ b/contrib/gdb-7/gdb/remote.h @@ -1,5 +1,5 @@ /* Remote target communications for serial-line targets in custom GDB protocol - Copyright (C) 1999, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 1999, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -22,8 +22,6 @@ struct target_desc; -/* FIXME?: move this interface down to tgt vector) */ - /* Read a packet from the remote machine, with error checking, and store it in *BUF. Resize *BUF using xrealloc if necessary to hold the result, and update *SIZEOF_BUF. If FOREVER, wait forever @@ -40,19 +38,7 @@ extern void getpkt (char **buf, long *sizeof_buf, int forever); extern int putpkt (char *buf); -/* Send HEX encoded string to the target console. (gdb_stdtarg) */ - -extern void remote_console_output (char *); - - -/* FIXME: cagney/1999-09-20: The remote cisco stuff in remote.c needs - to be broken out into a separate file (remote-cisco.[hc]?). Before - that can happen, a remote protocol stack framework needs to be - implemented. */ - -extern void remote_cisco_objfile_relocate (bfd_signed_vma text_off, - bfd_signed_vma data_off, - bfd_signed_vma bss_off); +extern char *unpack_varlen_hex (char *buff, ULONGEST *result); extern void async_remote_interrupt_twice (void *arg); @@ -61,11 +47,9 @@ extern int remote_write_bytes (CORE_ADDR memaddr, const gdb_byte *myaddr, extern int remote_read_bytes (CORE_ADDR memaddr, gdb_byte *myaddr, int len); -extern void (*deprecated_target_resume_hook) (void); -extern void (*deprecated_target_wait_loop_hook) (void); - void register_remote_g_packet_guess (struct gdbarch *gdbarch, int bytes, const struct target_desc *tdesc); +void register_remote_support_xml (const char *); void remote_file_put (const char *local_file, const char *remote_file, int from_tty); diff --git a/contrib/gdb-7/gdb/reverse.c b/contrib/gdb-7/gdb/reverse.c index ee59cf3673..4fd8a75e96 100644 --- a/contrib/gdb-7/gdb/reverse.c +++ b/contrib/gdb-7/gdb/reverse.c @@ -1,6 +1,6 @@ /* Reverse execution and reverse debugging. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -24,6 +24,7 @@ #include "cli/cli-cmds.h" #include "cli/cli-decode.h" #include "inferior.h" +#include "regcache.h" /* User interface: reverse-step, reverse-next etc. */ @@ -101,6 +102,220 @@ reverse_finish (char *args, int from_tty) exec_reverse_once ("finish", args, from_tty); } +/* Data structures for a bookmark list. */ + +struct bookmark { + struct bookmark *next; + int number; + CORE_ADDR pc; + struct symtab_and_line sal; + gdb_byte *opaque_data; +}; + +static struct bookmark *bookmark_chain; +static int bookmark_count; + +#define ALL_BOOKMARKS(B) for ((B) = bookmark_chain; (B); (B) = (B)->next) + +#define ALL_BOOKMARKS_SAFE(B,TMP) \ + for ((B) = bookmark_chain; \ + (B) ? ((TMP) = (B)->next, 1) : 0; \ + (B) = (TMP)) + +/* save_bookmark_command -- implement "bookmark" command. + Call target method to get a bookmark identifier. + Insert bookmark identifier into list. + + Identifier will be a malloc string (gdb_byte *). + Up to us to free it as required. */ + +static void +save_bookmark_command (char *args, int from_tty) +{ + /* Get target's idea of a bookmark. */ + gdb_byte *bookmark_id = target_get_bookmark (args, from_tty); + struct bookmark *b, *b1; + struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ()); + + /* CR should not cause another identical bookmark. */ + dont_repeat (); + + if (bookmark_id == NULL) + error (_("target_get_bookmark failed.")); + + /* Set up a bookmark struct. */ + b = xcalloc (1, sizeof (struct bookmark)); + b->number = ++bookmark_count; + init_sal (&b->sal); + b->pc = regcache_read_pc (get_current_regcache ()); + b->sal = find_pc_line (b->pc, 0); + b->sal.pspace = get_frame_program_space (get_current_frame ()); + b->opaque_data = bookmark_id; + b->next = NULL; + + /* Add this bookmark to the end of the chain, so that a list + of bookmarks will come out in order of increasing numbers. */ + + b1 = bookmark_chain; + if (b1 == 0) + bookmark_chain = b; + else + { + while (b1->next) + b1 = b1->next; + b1->next = b; + } + printf_filtered (_("Saved bookmark %d at %s\n"), b->number, + paddress (gdbarch, b->sal.pc)); +} + +/* Implement "delete bookmark" command. */ + +static int +delete_one_bookmark (struct bookmark *b) +{ + struct bookmark *b1; + + /* Special case, first item in list. */ + if (b == bookmark_chain) + bookmark_chain = b->next; + + /* Find bookmark preceeding "marked" one, so we can unlink. */ + if (b) + { + ALL_BOOKMARKS (b1) + if (b1->next == b) + { + /* Found designated bookmark. Unlink and delete. */ + b1->next = b->next; + break; + } + xfree (b->opaque_data); + xfree (b); + return 1; /* success */ + } + return 0; /* failure */ +} + +static void +delete_all_bookmarks (void) +{ + struct bookmark *b, *b1; + + ALL_BOOKMARKS_SAFE (b, b1) + { + xfree (b->opaque_data); + xfree (b); + } + bookmark_chain = NULL; +} + +static void +delete_bookmark_command (char *args, int from_tty) +{ + struct bookmark *b; + unsigned long num; + + if (bookmark_chain == NULL) + { + warning (_("No bookmarks.")); + return; + } + + if (args == NULL || args[0] == '\0') + { + if (from_tty && !query (_("Delete all bookmarks? "))) + return; + delete_all_bookmarks (); + return; + } + + num = strtoul (args, NULL, 0); + /* Find bookmark with corresponding number. */ + ALL_BOOKMARKS (b) + if (b->number == num) + break; + + if (!delete_one_bookmark (b)) + /* Not found. */ + error (_("delete bookmark: no bookmark found for '%s'."), args); +} + +/* Implement "goto-bookmark" command. */ + +static void +goto_bookmark_command (char *args, int from_tty) +{ + struct bookmark *b; + unsigned long num; + + if (args == NULL || args[0] == '\0') + error (_("Command requires an argument.")); + + if (strncmp (args, "start", strlen ("start")) == 0 + || strncmp (args, "begin", strlen ("begin")) == 0 + || strncmp (args, "end", strlen ("end")) == 0) + { + /* Special case. Give target opportunity to handle. */ + target_goto_bookmark (args, from_tty); + return; + } + + if (args[0] == '\'' || args[0] == '\"') + { + /* Special case -- quoted string. Pass on to target. */ + if (args[strlen (args) - 1] != args[0]) + error (_("Unbalanced quotes: %s"), args); + target_goto_bookmark (args, from_tty); + return; + } + + /* General case. Bookmark identified by bookmark number. */ + num = strtoul (args, NULL, 0); + ALL_BOOKMARKS (b) + if (b->number == num) + break; + + if (b) + { + /* Found. Send to target method. */ + target_goto_bookmark (b->opaque_data, from_tty); + return; + } + /* Not found. */ + error (_("goto-bookmark: no bookmark found for '%s'."), args); +} + +/* Implement "info bookmarks" command. */ + +static void +bookmarks_info (char *args, int from_tty) +{ + struct bookmark *b; + int bnum = -1; + struct gdbarch *gdbarch; + + if (args) + bnum = parse_and_eval_long (args); + + if (!bookmark_chain) + { + printf_filtered (_("No bookmarks.\n")); + return; + } + + gdbarch = get_regcache_arch (get_current_regcache ()); + printf_filtered (_("Bookmark Address Opaque\n")); + printf_filtered (_(" ID Data\n")); + + ALL_BOOKMARKS (b) + printf_filtered (" %d %s '%s'\n", + b->number, + paddress (gdbarch, b->pc), + b->opaque_data); +} + + /* Provide a prototype to silence -Wmissing-prototypes. */ extern initialize_file_ftype _initialize_reverse; @@ -142,4 +357,24 @@ the breakpoint won't break until the Nth time it is reached).")); add_com ("reverse-finish", class_run, reverse_finish, _("\ Execute backward until just before selected stack frame is called.")); + + add_com ("bookmark", class_bookmark, save_bookmark_command, _("\ +Set a bookmark in the program's execution history.\n\ +A bookmark represents a point in the execution history \n\ +that can be returned to at a later point in the debug session.")); + add_info ("bookmarks", bookmarks_info, _("\ +Status of user-settable bookmarks.\n\ +Bookmarks are user-settable markers representing a point in the \n\ +execution history that can be returned to later in the same debug \n\ +session.")); + add_cmd ("bookmark", class_bookmark, delete_bookmark_command, _("\ +Delete a bookmark from the bookmark list.\n\ +Argument is a bookmark number, or no argument to delete all bookmarks.\n"), + &deletelist); + add_com ("goto-bookmark", class_bookmark, goto_bookmark_command, _("\ +Go to an earlier-bookmarked point in the program's execution history.\n\ +Argument is the bookmark number of a bookmark saved earlier by using \n\ +the 'bookmark' command, or the special arguments:\n\ + start (beginning of recording)\n\ + end (end of recording)\n")); } diff --git a/contrib/gdb-7/gdb/scm-exp.c b/contrib/gdb-7/gdb/scm-exp.c index 1dd1615942..69eb249fc8 100644 --- a/contrib/gdb-7/gdb/scm-exp.c +++ b/contrib/gdb-7/gdb/scm-exp.c @@ -1,6 +1,6 @@ /* Scheme/Guile language support routines for GDB, the GNU debugger. - Copyright (C) 1995, 1996, 2000, 2003, 2005, 2008, 2009 + Copyright (C) 1995, 1996, 2000, 2003, 2005, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -112,6 +112,7 @@ scm_istring2number (char *str, int len, int radix) #if 0 SCM res; #endif + if (len == 1) if (*str == '+' || *str == '-') /* Catches lone `+' and `-' for speed */ return SCM_BOOL_F; @@ -238,6 +239,7 @@ static int scm_skip_ws (void) { int c; + while (1) switch ((c = *lexptr++)) { @@ -272,6 +274,7 @@ scm_lreadparen (int skipping) for (;;) { int c = scm_skip_ws (); + if (')' == c || ']' == c) return; --lexptr; @@ -287,6 +290,7 @@ scm_lreadr (int skipping) int c, j; struct stoken str; LONGEST svalue = 0; + tryagain: c = *lexptr++; switch (c) @@ -309,6 +313,7 @@ tryagain: if (!skipping) { struct value *val = scm_evaluate_string (str.ptr, lexptr - str.ptr); + if (!is_scmvalue_type (value_type (val))) error ("quoted scm form yields non-SCM value"); svalue = extract_signed_integer (value_contents (val), @@ -481,6 +486,7 @@ int scm_parse (void) { char *start; + while (*lexptr == ' ') lexptr++; start = lexptr; diff --git a/contrib/gdb-7/gdb/scm-lang.c b/contrib/gdb-7/gdb/scm-lang.c index de348940ba..870b1e447b 100644 --- a/contrib/gdb-7/gdb/scm-lang.c +++ b/contrib/gdb-7/gdb/scm-lang.c @@ -1,7 +1,7 @@ /* Scheme/Guile language support routines for GDB, the GNU debugger. Copyright (C) 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -35,8 +35,6 @@ #include "objfiles.h" extern void _initialize_scheme_language (void); -static struct value *evaluate_subexp_scm (struct type *, struct expression *, - int *, enum noside); static struct value *scm_lookup_name (struct gdbarch *, char *); static int in_eval_c (void); @@ -48,7 +46,7 @@ scm_printchar (int c, struct type *type, struct ui_file *stream) static void scm_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string, - unsigned int length, int force_ellipses, + unsigned int length, const char *encoding, int force_ellipses, const struct value_print_options *options) { fprintf_filtered (stream, "\"%s\"", string); @@ -72,6 +70,7 @@ scm_get_field (LONGEST svalue, int index, int size, enum bfd_endian byte_order) { gdb_byte buffer[20]; + read_memory (SCM2PTR (svalue) + index * size, buffer, size); return extract_signed_integer (buffer, size, byte_order); } @@ -137,6 +136,7 @@ in_eval_c (void) { char *filename = cursal.symtab->filename; int len = strlen (filename); + if (len >= 6 && strcmp (filename + len - 6, "eval.c") == 0) return 1; } @@ -190,6 +190,7 @@ scm_evaluate_string (char *str, int len) struct value *func; struct value *addr = value_allocate_space_in_inferior (len + 1); LONGEST iaddr = value_as_long (addr); + write_memory (iaddr, (gdb_byte *) str, len); /* FIXME - should find and pass env */ write_memory (iaddr + len, (gdb_byte *) "", 1); @@ -204,6 +205,7 @@ evaluate_exp (struct type *expect_type, struct expression *exp, enum exp_opcode op = exp->elts[*pos].opcode; int len, pc; char *str; + switch (op) { case OP_NAME: @@ -233,6 +235,7 @@ const struct exp_descriptor exp_descriptor_scm = { print_subexp_standard, operator_length_standard, + operator_check_standard, op_name_standard, dump_subexp_body_standard, evaluate_exp diff --git a/contrib/gdb-7/gdb/scm-lang.h b/contrib/gdb-7/gdb/scm-lang.h index 0d120d399b..1adeee5e63 100644 --- a/contrib/gdb-7/gdb/scm-lang.h +++ b/contrib/gdb-7/gdb/scm-lang.h @@ -1,6 +1,6 @@ /* Scheme/Guile language support routines for GDB, the GNU debugger. - Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2005, 2008, 2009 + Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2005, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -50,6 +50,7 @@ extern int scm_value_print (struct value *, struct ui_file *, extern int scm_val_print (struct type *, const gdb_byte *, int, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *); extern LONGEST scm_get_field (LONGEST, int, int, enum bfd_endian); diff --git a/contrib/gdb-7/gdb/scm-tags.h b/contrib/gdb-7/gdb/scm-tags.h index 043b5dc2c7..1019d6f482 100644 --- a/contrib/gdb-7/gdb/scm-tags.h +++ b/contrib/gdb-7/gdb/scm-tags.h @@ -3,7 +3,8 @@ #ifndef TAGSH #define TAGSH -/* Copyright (C) 1995, 1999, 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1999, 2008, 2009, 2010 +Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/contrib/gdb-7/gdb/scm-valprint.c b/contrib/gdb-7/gdb/scm-valprint.c index cc3319ab6f..c5e1ce105c 100644 --- a/contrib/gdb-7/gdb/scm-valprint.c +++ b/contrib/gdb-7/gdb/scm-valprint.c @@ -1,7 +1,7 @@ /* Scheme/Guile language support routines for GDB, the GNU debugger. - Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -62,9 +62,9 @@ scm_inferior_print (struct type *type, LONGEST value, struct ui_file *stream, { /* XXX: Should we cache these symbols? */ gdb_output_sym = - lookup_symbol_global ("gdb_output", NULL, NULL, VAR_DOMAIN); + lookup_symbol_global ("gdb_output", NULL, VAR_DOMAIN); gdb_output_len_sym = - lookup_symbol_global ("gdb_output_length", NULL, NULL, VAR_DOMAIN); + lookup_symbol_global ("gdb_output_length", NULL, VAR_DOMAIN); if ((gdb_output_sym == NULL) || (gdb_output_len_sym == NULL)) ret = -1; @@ -135,6 +135,7 @@ scm_scmlist_print (struct type *type, LONGEST svalue, #define SCM_SIZE (TYPE_LENGTH (type)) #define SCM_BYTE_ORDER (gdbarch_byte_order (get_type_arch (type))) unsigned int more = options->print_max; + if (recurse > 6) { fputs_filtered ("...", stream); @@ -240,6 +241,7 @@ taloop: #if 0 SCM name; #endif + fputs_filtered ("#", str); } @@ -417,9 +422,12 @@ int scm_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options) { - if (is_scmvalue_type (type)) + if (is_scmvalue_type (type) + && value_bits_valid (val, TARGET_CHAR_BIT * embedded_offset, + TARGET_CHAR_BIT * TYPE_LENGTH (type))) { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); LONGEST svalue @@ -438,7 +446,8 @@ scm_val_print (struct type *type, const gdb_byte *valaddr, } else { - return c_val_print (type, valaddr, 0, address, stream, recurse, options); + return c_val_print (type, valaddr, 0, address, stream, recurse, + val, options); } } @@ -447,6 +456,7 @@ scm_value_print (struct value *val, struct ui_file *stream, const struct value_print_options *options) { struct value_print_options opts = *options; + opts.deref_ref = 1; return (common_val_print (val, stream, 0, &opts, current_language)); } diff --git a/contrib/gdb-7/gdb/sentinel-frame.c b/contrib/gdb-7/gdb/sentinel-frame.c index e01d198279..8c11d7bd10 100644 --- a/contrib/gdb-7/gdb/sentinel-frame.c +++ b/contrib/gdb-7/gdb/sentinel-frame.c @@ -1,7 +1,7 @@ /* Code dealing with register stack frames, for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2008, 2009 + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -36,6 +36,7 @@ sentinel_frame_cache (struct regcache *regcache) { struct frame_unwind_cache *cache = FRAME_OBSTACK_ZALLOC (struct frame_unwind_cache); + cache->regcache = regcache; return cache; } @@ -81,6 +82,7 @@ sentinel_frame_prev_arch (struct frame_info *this_frame, void **this_prologue_cache) { struct frame_unwind_cache *cache = *this_prologue_cache; + return get_regcache_arch (cache->regcache); } diff --git a/contrib/gdb-7/gdb/sentinel-frame.h b/contrib/gdb-7/gdb/sentinel-frame.h index 9d570b15d3..0c9f576ef6 100644 --- a/contrib/gdb-7/gdb/sentinel-frame.h +++ b/contrib/gdb-7/gdb/sentinel-frame.h @@ -1,6 +1,6 @@ /* Code dealing with register stack frames, for GDB, the GNU debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/ser-base.c b/contrib/gdb-7/gdb/ser-base.c index 8c220c720b..c17a389030 100644 --- a/contrib/gdb-7/gdb/ser-base.c +++ b/contrib/gdb-7/gdb/ser-base.c @@ -1,7 +1,7 @@ /* Generic serial interface functions. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -63,12 +63,13 @@ enum { the need to make redundant calls into the event-loop - the next scheduled task is only changed when needed. */ -void +static void reschedule (struct serial *scb) { if (serial_is_async_p (scb)) { int next_state; + switch (scb->async_state) { case FD_SCHEDULED: @@ -170,6 +171,7 @@ static void push_event (void *context) { struct serial *scb = context; + scb->async_state = NOTHING_SCHEDULED; /* Timers are one-off */ scb->async_handler (scb, scb->async_context); /* re-schedule */ @@ -363,6 +365,13 @@ generic_readchar (struct serial *scb, int timeout, s = read (scb->error_fd, &buf, to_read); if (s == -1) break; + if (s == 0) + { + /* EOF */ + close (scb->error_fd); + scb->error_fd = -1; + break; + } /* In theory, embedded newlines are not a problem. But for MI, we want each output line to have just diff --git a/contrib/gdb-7/gdb/ser-base.h b/contrib/gdb-7/gdb/ser-base.h index 35234fb459..005f93c759 100644 --- a/contrib/gdb-7/gdb/ser-base.h +++ b/contrib/gdb-7/gdb/ser-base.h @@ -1,6 +1,6 @@ /* Generic serial interface functions. - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -26,7 +26,6 @@ struct ui_file; extern int generic_readchar (struct serial *scb, int timeout, int (*do_readchar) (struct serial *scb, int timeout)); -extern void reschedule (struct serial *scb); extern int ser_base_flush_output (struct serial *scb); extern int ser_base_flush_input (struct serial *scb); extern int ser_base_send_break (struct serial *scb); diff --git a/contrib/gdb-7/gdb/ser-pipe.c b/contrib/gdb-7/gdb/ser-pipe.c index b120d29396..07fe65b14e 100644 --- a/contrib/gdb-7/gdb/ser-pipe.c +++ b/contrib/gdb-7/gdb/ser-pipe.c @@ -1,5 +1,5 @@ /* Serial interface for a pipe to a separate program - Copyright (C) 1999, 2000, 2001, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions. @@ -63,10 +63,15 @@ pipe_open (struct serial *scb, const char *name) int pdes[2]; int err_pdes[2]; int pid; + if (socketpair (AF_UNIX, SOCK_STREAM, 0, pdes) < 0) return -1; if (socketpair (AF_UNIX, SOCK_STREAM, 0, err_pdes) < 0) - return -1; + { + close (pdes[0]); + close (pdes[1]); + return -1; + } /* Create the child process to run the command in. Note that the apparent call to vfork() below *might* actually be a call to @@ -94,6 +99,15 @@ pipe_open (struct serial *scb, const char *name) /* Child. */ if (pid == 0) { + /* We don't want ^c to kill the connection. */ +#ifdef HAVE_SETSID + pid_t sid = setsid (); + if (sid == -1) + signal (SIGINT, SIG_IGN); +#else + signal (SIGINT, SIG_IGN); +#endif + /* re-wire pdes[1] to stdin/stdout */ close (pdes[0]); if (pdes[1] != STDOUT_FILENO) @@ -123,6 +137,8 @@ pipe_open (struct serial *scb, const char *name) /* Parent. */ close (pdes[1]); + if (err_pdes[1] != -1) + close (err_pdes[1]); /* :end chunk */ state = XMALLOC (struct pipe_state); state->pid = pid; @@ -140,24 +156,29 @@ static void pipe_close (struct serial *scb) { struct pipe_state *state = scb->state; + if (state != NULL) { int pid = state->pid; close (scb->fd); scb->fd = -1; + if (scb->error_fd != -1) + close (scb->error_fd); + scb->error_fd = -1; xfree (state); scb->state = NULL; kill (pid, SIGTERM); - /* Might be useful to check that the child does die. */ + /* Might be useful to check that the child does die, + and while we're waiting for it to die print any remaining + stderr output. */ } } -static struct serial_ops pipe_ops; - void _initialize_ser_pipe (void) { struct serial_ops *ops = XMALLOC (struct serial_ops); + memset (ops, 0, sizeof (struct serial_ops)); ops->name = "pipe"; ops->next = 0; diff --git a/contrib/gdb-7/gdb/ser-tcp.c b/contrib/gdb-7/gdb/ser-tcp.c index 7792133dc2..cb862e7e55 100644 --- a/contrib/gdb-7/gdb/ser-tcp.c +++ b/contrib/gdb-7/gdb/ser-tcp.c @@ -1,7 +1,7 @@ /* Serial interface for raw TCP connections on Un*x like systems. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2005, 2006, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -119,6 +119,7 @@ wait_for_connect (struct serial *scb, int *polls) if (scb) { fd_set rset, wset, eset; + FD_ZERO (&rset); FD_SET (scb->fd, &rset); wset = rset; @@ -208,7 +209,7 @@ net_open (struct serial *scb, const char *name) else scb->fd = socket (PF_INET, SOCK_STREAM, 0); - if (scb->fd < 0) + if (scb->fd == -1) return -1; /* set socket nonblocking */ @@ -272,6 +273,7 @@ net_open (struct serial *scb, const char *name) { int res, err; socklen_t len; + len = sizeof (err); /* On Windows, the fourth parameter to getsockopt is a "char *"; on UNIX systems it is generally "void *". The cast to "void *" @@ -323,7 +325,7 @@ net_open (struct serial *scb, const char *name) void net_close (struct serial *scb) { - if (scb->fd < 0) + if (scb->fd == -1) return; close (scb->fd); @@ -372,6 +374,7 @@ _initialize_ser_tcp (void) ser-mingw.c. */ #else struct serial_ops *ops; + ops = XMALLOC (struct serial_ops); memset (ops, 0, sizeof (struct serial_ops)); ops->name = "tcp"; diff --git a/contrib/gdb-7/gdb/ser-tcp.h b/contrib/gdb-7/gdb/ser-tcp.h index b467def462..bf28d35302 100644 --- a/contrib/gdb-7/gdb/ser-tcp.h +++ b/contrib/gdb-7/gdb/ser-tcp.h @@ -1,6 +1,6 @@ /* Serial interface for raw TCP connections on Un*x like systems. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/ser-unix.c b/contrib/gdb-7/gdb/ser-unix.c index ea2938d2cd..266453c2c1 100644 --- a/contrib/gdb-7/gdb/ser-unix.c +++ b/contrib/gdb-7/gdb/ser-unix.c @@ -1,7 +1,7 @@ /* Serial interface for local (hardwired) serial ports on Un*x like systems Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2003, - 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -306,6 +306,7 @@ hardwire_drain_output (struct serial *scb) to be discarded. */ { struct hardwire_ttystate state; + if (get_tty_state (scb, &state)) { return (-1); @@ -888,6 +889,7 @@ void _initialize_ser_hardwire (void) { struct serial_ops *ops = XMALLOC (struct serial_ops); + memset (ops, 0, sizeof (struct serial_ops)); ops->name = "hardwire"; ops->next = 0; diff --git a/contrib/gdb-7/gdb/ser-unix.h b/contrib/gdb-7/gdb/ser-unix.h index 57e7d00c57..985aef7662 100644 --- a/contrib/gdb-7/gdb/ser-unix.h +++ b/contrib/gdb-7/gdb/ser-unix.h @@ -1,6 +1,6 @@ /* Serial interface for UN*X file-descriptor based connection. - Copyright (C) 1999, 2000, 2002, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/serial.c b/contrib/gdb-7/gdb/serial.c index afd6ee4b9c..75a08781d2 100644 --- a/contrib/gdb-7/gdb/serial.c +++ b/contrib/gdb-7/gdb/serial.c @@ -1,7 +1,8 @@ /* Generic serial interface routines Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -246,7 +247,6 @@ struct serial * serial_for_fd (int fd) { struct serial *scb; - struct serial_ops *ops; for (scb = scb_base; scb; scb = scb->next) if (scb->fd == fd) @@ -407,6 +407,18 @@ serial_write (struct serial *scb, const char *str, int len) in case we are getting ready to dump core or something. */ gdb_flush (serial_logfp); } + if (serial_debug_p (scb)) + { + int count; + + for (count = 0; count < len; count++) + { + fprintf_unfiltered (gdb_stdlog, "["); + serial_logchar (gdb_stdlog, 'w', str[count] & 0xff, 0); + fprintf_unfiltered (gdb_stdlog, "]"); + } + gdb_flush (gdb_stdlog); + } return (scb->ops->write (scb, str, len)); } @@ -516,6 +528,7 @@ serial_async (struct serial *scb, void *context) { int changed = ((scb->async_handler == NULL) != (handler == NULL)); + scb->async_handler = handler; scb->async_context = context; /* Only change mode if there is a need. */ diff --git a/contrib/gdb-7/gdb/serial.h b/contrib/gdb-7/gdb/serial.h index 0d040a0082..7690501b89 100644 --- a/contrib/gdb-7/gdb/serial.h +++ b/contrib/gdb-7/gdb/serial.h @@ -1,6 +1,6 @@ /* Remote serial support interface definitions for GDB, the GNU Debugger. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2004, - 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -21,6 +21,7 @@ #define SERIAL_H #ifdef USE_WIN32API +#include #include #endif @@ -86,7 +87,7 @@ extern int serial_write (struct serial *scb, const char *str, int len); /* Write a printf style string onto the serial port. */ extern void serial_printf (struct serial *desc, - const char *,...) ATTR_FORMAT (printf, 2, 3); + const char *,...) ATTRIBUTE_PRINTF (2, 3); /* Allow pending output to drain. */ diff --git a/contrib/gdb-7/gdb/sim-regno.h b/contrib/gdb-7/gdb/sim-regno.h index e5ff753d3a..46e16bcd04 100644 --- a/contrib/gdb-7/gdb/sim-regno.h +++ b/contrib/gdb-7/gdb/sim-regno.h @@ -1,6 +1,6 @@ /* Generic remote debugging interface for simulators. - Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat, Inc. diff --git a/contrib/gdb-7/gdb/solib-null.c b/contrib/gdb-7/gdb/solib-null.c deleted file mode 100644 index b39ccdbc40..0000000000 --- a/contrib/gdb-7/gdb/solib-null.c +++ /dev/null @@ -1,89 +0,0 @@ -/* Definitions for targets without shared libraries for GDB, the GNU Debugger. - - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 . */ - -#include "defs.h" -#include "solist.h" - -static struct so_list * -null_current_sos (void) -{ - return NULL; -} - -static void -null_special_symbol_handling (void) -{ -} - -static void -null_solib_create_inferior_hook (void) -{ -} - -static void -null_clear_solib (void) -{ -} - -static void -null_free_so (struct so_list *so) -{ - xfree (so->lm_info); -} - - -static void -null_relocate_section_addresses (struct so_list *so, - struct target_section *sec) -{ -} - -static int -null_open_symbol_file_object (void *from_ttyp) -{ - return 0; -} - -static int -null_in_dynsym_resolve_code (CORE_ADDR pc) -{ - return 0; -} - -static struct target_so_ops null_so_ops; - -extern initialize_file_ftype _initialize_null_solib; /* -Wmissing-prototypes */ - -void -_initialize_null_solib (void) -{ - null_so_ops.relocate_section_addresses = null_relocate_section_addresses; - null_so_ops.free_so = null_free_so; - null_so_ops.clear_solib = null_clear_solib; - null_so_ops.solib_create_inferior_hook = null_solib_create_inferior_hook; - null_so_ops.special_symbol_handling = null_special_symbol_handling; - null_so_ops.current_sos = null_current_sos; - null_so_ops.open_symbol_file_object = null_open_symbol_file_object; - null_so_ops.in_dynsym_resolve_code = null_in_dynsym_resolve_code; - null_so_ops.bfd_open = solib_bfd_open; - - /* Set current_target_so_ops to null_so_ops if not already set. */ - if (current_target_so_ops == 0) - current_target_so_ops = &null_so_ops; -} diff --git a/contrib/gdb-7/gdb/solib-svr4.c b/contrib/gdb-7/gdb/solib-svr4.c index 6cfaa85ea8..1f135d450e 100644 --- a/contrib/gdb-7/gdb/solib-svr4.c +++ b/contrib/gdb-7/gdb/solib-svr4.c @@ -1,7 +1,7 @@ /* Handle SVR4 shared libraries for GDB, the GNU Debugger. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, - 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -50,6 +50,7 @@ static struct link_map_offsets *svr4_fetch_link_map_offsets (void); static int svr4_have_link_map_offsets (void); +static void svr4_relocate_main_executable (void); /* Link map info to include in an allocated so_list entry */ @@ -85,6 +86,7 @@ static char *solib_break_names[] = "_r_debug_state", "_dl_debug_state", "rtld_db_dlactivity", + "__dl_rtld_db_dlactivity", "_rtld_debug_state", NULL @@ -174,7 +176,7 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd) if (so->lm_info->l_addr == (CORE_ADDR)-1) { struct bfd_section *dyninfo_sect; - CORE_ADDR l_addr, l_dynaddr, dynaddr, align = 0x1000; + CORE_ADDR l_addr, l_dynaddr, dynaddr; l_addr = LM_ADDR_FROM_LINK_MAP (so); @@ -191,6 +193,9 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd) if (dynaddr + l_addr != l_dynaddr) { + CORE_ADDR align = 0x1000; + CORE_ADDR minpagesize = align; + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) { Elf_Internal_Ehdr *ehdr = elf_tdata (abfd)->elf_header; @@ -202,6 +207,8 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd) for (i = 0; i < ehdr->e_phnum; i++) if (phdr[i].p_type == PT_LOAD && phdr[i].p_align > align) align = phdr[i].p_align; + + minpagesize = get_elf_backend_data (abfd)->minpagesize; } /* Turn it into a mask. */ @@ -215,15 +222,31 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd) location, or anything, really. To avoid regressions, don't adjust the base offset in the latter case, although odds are that, if things really changed, debugging won't - quite work. */ - if ((l_addr & align) == ((l_dynaddr - dynaddr) & align)) + quite work. + + One could expect more the condition + ((l_addr & align) == 0 && ((l_dynaddr - dynaddr) & align) == 0) + but the one below is relaxed for PPC. The PPC kernel supports + either 4k or 64k page sizes. To be prepared for 64k pages, + PPC ELF files are built using an alignment requirement of 64k. + However, when running on a kernel supporting 4k pages, the memory + mapping of the library may not actually happen on a 64k boundary! + + (In the usual case where (l_addr & align) == 0, this check is + equivalent to the possibly expected check above.) + + Even on PPC it must be zero-aligned at least for MINPAGESIZE. */ + + if ((l_addr & (minpagesize - 1)) == 0 + && (l_addr & align) == ((l_dynaddr - dynaddr) & align)) { l_addr = l_dynaddr - dynaddr; - warning (_(".dynamic section for \"%s\" " - "is not at the expected address"), so->so_name); - warning (_("difference appears to be caused by prelink, " - "adjusting expectations")); + if (info_verbose) + printf_unfiltered (_("Using PIC (Position Independent Code) " + "prelink displacement %s for \"%s\".\n"), + paddress (target_gdbarch, l_addr), + so->so_name); } else warning (_(".dynamic section for \"%s\" " @@ -248,6 +271,16 @@ LM_NEXT (struct so_list *so) ptr_type); } +static CORE_ADDR +LM_PREV (struct so_list *so) +{ + struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; + + return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset, + ptr_type); +} + static CORE_ADDR LM_NAME (struct so_list *so) { @@ -261,24 +294,18 @@ LM_NAME (struct so_list *so) static int IGNORE_FIRST_LINK_MAP_ENTRY (struct so_list *so) { - struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); - struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; - /* Assume that everything is a library if the dynamic loader was loaded late by a static executable. */ if (exec_bfd && bfd_get_section_by_name (exec_bfd, ".dynamic") == NULL) return 0; - return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset, - ptr_type) == 0; + return LM_PREV (so) == 0; } -/* Per-inferior SVR4 specific data. */ +/* Per pspace SVR4 specific data. */ struct svr4_info { - int pid; - CORE_ADDR debug_base; /* Base of dynamic linker structures */ /* Validity flag for debug_loader_offset. */ @@ -292,69 +319,40 @@ struct svr4_info /* Load map address for the main executable. */ CORE_ADDR main_lm_addr; -}; -/* List of known processes using solib-svr4 shared libraries, storing - the required bookkeeping for each. */ - -typedef struct svr4_info *svr4_info_p; -DEF_VEC_P(svr4_info_p); -VEC(svr4_info_p) *svr4_info = NULL; + CORE_ADDR interp_text_sect_low; + CORE_ADDR interp_text_sect_high; + CORE_ADDR interp_plt_sect_low; + CORE_ADDR interp_plt_sect_high; +}; -/* Get svr4 data for inferior PID (target id). If none is found yet, - add it now. This function always returns a valid object. */ +/* Per-program-space data key. */ +static const struct program_space_data *solib_svr4_pspace_data; -struct svr4_info * -get_svr4_info (int pid) +static void +svr4_pspace_data_cleanup (struct program_space *pspace, void *arg) { - int ix; - struct svr4_info *it; - - gdb_assert (pid != 0); - - for (ix = 0; VEC_iterate (svr4_info_p, svr4_info, ix, it); ++ix) - { - if (it->pid == pid) - return it; - } - - it = XZALLOC (struct svr4_info); - it->pid = pid; - - VEC_safe_push (svr4_info_p, svr4_info, it); + struct svr4_info *info; - return it; + info = program_space_data (pspace, solib_svr4_pspace_data); + xfree (info); } -/* Get rid of any svr4 related bookkeeping for inferior PID (target - id). */ +/* Get the current svr4 data. If none is found yet, add it now. This + function always returns a valid object. */ -static void -remove_svr4_info (int pid) +static struct svr4_info * +get_svr4_info (void) { - int ix; - struct svr4_info *it; - - for (ix = 0; VEC_iterate (svr4_info_p, svr4_info, ix, it); ++ix) - { - if (it->pid == pid) - { - VEC_unordered_remove (svr4_info_p, svr4_info, ix); - return; - } - } -} + struct svr4_info *info; -/* This is an "inferior_exit" observer. Inferior PID (target id) is - being removed from the inferior list, because it exited, was - killed, detached, or we just dropped the connection to the debug - interface --- discard any solib-svr4 related bookkeeping for this - inferior. */ + info = program_space_data (current_program_space, solib_svr4_pspace_data); + if (info != NULL) + return info; -static void -solib_svr4_inferior_exit (int pid) -{ - remove_svr4_info (pid); + info = XZALLOC (struct svr4_info); + set_program_space_data (current_program_space, solib_svr4_pspace_data, info); + return info; } /* Local function prototypes */ @@ -457,6 +455,9 @@ bfd_lookup_symbol (bfd *abfd, char *symname) /* Read program header TYPE from inferior memory. The header is found by scanning the OS auxillary vector. + If TYPE == -1, return the program headers instead of the contents of + one program header. + Return a pointer to allocated memory holding the program header contents, or NULL on failure. If sucessful, and unless P_SECT_SIZE is NULL, the size of those contents is returned to P_SECT_SIZE. Likewise, the target @@ -489,8 +490,13 @@ read_program_header (int type, int *p_sect_size, int *p_arch_size) else return 0; - /* Find .dynamic section via the PT_DYNAMIC PHDR. */ - if (arch_size == 32) + /* Find the requested segment. */ + if (type == -1) + { + sect_addr = at_phdr; + sect_size = at_phent * at_phnum; + } + else if (arch_size == 32) { Elf32_External_Phdr phdr; int i; @@ -575,7 +581,6 @@ find_program_interpreter (void) interp_sect = bfd_get_section_by_name (exec_bfd, ".interp"); if (interp_sect != NULL) { - CORE_ADDR sect_addr = bfd_section_vma (exec_bfd, interp_sect); int sect_size = bfd_section_size (exec_bfd, interp_sect); buf = xmalloc (sect_size); @@ -604,6 +609,7 @@ scan_dyntag (int dyntag, bfd *abfd, CORE_ADDR *ptr) Elf32_External_Dyn *x_dynp_32; Elf64_External_Dyn *x_dynp_64; struct bfd_section *sect; + struct target_section *target_section; if (abfd == NULL) return 0; @@ -619,7 +625,23 @@ scan_dyntag (int dyntag, bfd *abfd, CORE_ADDR *ptr) sect = bfd_get_section_by_name (abfd, ".dynamic"); if (sect == NULL) return 0; - dyn_addr = bfd_section_vma (abfd, sect); + + for (target_section = current_target_sections->sections; + target_section < current_target_sections->sections_end; + target_section++) + if (sect == target_section->the_bfd_section) + break; + if (target_section < current_target_sections->sections_end) + dyn_addr = target_section->addr; + else + { + /* ABFD may come from OBJFILE acting only as a symbol file without being + loaded into the target (see add_symbol_file_command). This case is + such fallback to the file VMA address without the possibility of + having the section relocated to its actual in-memory address. */ + + dyn_addr = bfd_section_vma (abfd, sect); + } /* Read in .dynamic from the BFD. We will get the actual value from memory later. */ @@ -701,6 +723,7 @@ scan_dyntag_auxv (int dyntag, CORE_ADDR *ptr) if (arch_size == 32) { Elf32_External_Dyn *dynp = (Elf32_External_Dyn *) buf; + dyn_tag = extract_unsigned_integer ((gdb_byte *) dynp->d_tag, 4, byte_order); dyn_ptr = extract_unsigned_integer ((gdb_byte *) dynp->d_un.d_ptr, @@ -709,6 +732,7 @@ scan_dyntag_auxv (int dyntag, CORE_ADDR *ptr) else { Elf64_External_Dyn *dynp = (Elf64_External_Dyn *) buf; + dyn_tag = extract_unsigned_integer ((gdb_byte *) dynp->d_tag, 8, byte_order); dyn_ptr = extract_unsigned_integer ((gdb_byte *) dynp->d_un.d_ptr, @@ -771,6 +795,7 @@ elf_locate_base (void) struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; gdb_byte *pbuf; int pbuf_size = TYPE_LENGTH (ptr_type); + pbuf = alloca (pbuf_size); /* DT_MIPS_RLD_MAP contains a pointer to the address of the dynamic link structure. */ @@ -846,7 +871,8 @@ locate_base (struct svr4_info *info) } /* Find the first element in the inferior's dynamic link map, and - return its address in the inferior. + return its address in the inferior. Return zero if the address + could not be determined. FIXME: Perhaps we should validate the info somehow, perhaps by checking r_version for a known version number, or r_state for @@ -857,9 +883,16 @@ solib_svr4_r_map (struct svr4_info *info) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; + CORE_ADDR addr = 0; + volatile struct gdb_exception ex; - return read_memory_typed_address (info->debug_base + lmo->r_map_offset, - ptr_type); + TRY_CATCH (ex, RETURN_MASK_ERROR) + { + addr = read_memory_typed_address (info->debug_base + lmo->r_map_offset, + ptr_type); + } + exception_print (gdb_stderr, ex); + return addr; } /* Find r_brk from the inferior's debug base. */ @@ -897,6 +930,50 @@ solib_svr4_r_ldsomap (struct svr4_info *info) ptr_type); } +/* On Solaris systems with some versions of the dynamic linker, + ld.so's l_name pointer points to the SONAME in the string table + rather than into writable memory. So that GDB can find shared + libraries when loading a core file generated by gcore, ensure that + memory areas containing the l_name string are saved in the core + file. */ + +static int +svr4_keep_data_in_core (CORE_ADDR vaddr, unsigned long size) +{ + struct svr4_info *info; + CORE_ADDR ldsomap; + struct so_list *new; + struct cleanup *old_chain; + struct link_map_offsets *lmo; + CORE_ADDR lm_name; + + info = get_svr4_info (); + + info->debug_base = 0; + locate_base (info); + if (!info->debug_base) + return 0; + + ldsomap = solib_svr4_r_ldsomap (info); + if (!ldsomap) + return 0; + + lmo = svr4_fetch_link_map_offsets (); + new = XZALLOC (struct so_list); + old_chain = make_cleanup (xfree, new); + new->lm_info = xmalloc (sizeof (struct lm_info)); + make_cleanup (xfree, new->lm_info); + new->lm_info->l_addr = (CORE_ADDR)-1; + new->lm_info->lm_addr = ldsomap; + new->lm_info->lm = xzalloc (lmo->link_map_size); + make_cleanup (xfree, new->lm_info->lm); + read_memory (ldsomap, new->lm_info->lm, lmo->link_map_size); + lm_name = LM_NAME (new); + do_cleanups (old_chain); + + return (lm_name >= vaddr && lm_name < vaddr + size); +} + /* LOCAL FUNCTION @@ -931,7 +1008,7 @@ open_symbol_file_object (void *from_ttyp) int l_name_size = TYPE_LENGTH (ptr_type); gdb_byte *l_name_buf = xmalloc (l_name_size); struct cleanup *cleanups = make_cleanup (xfree, l_name_buf); - struct svr4_info *info = get_svr4_info (PIDGET (inferior_ptid)); + struct svr4_info *info = get_svr4_info (); if (symfile_objfile) if (!query (_("Attempt to reload symbols from process? "))) @@ -982,8 +1059,7 @@ open_symbol_file_object (void *from_ttyp) static struct so_list * svr4_default_sos (void) { - struct inferior *inf = current_inferior (); - struct svr4_info *info = get_svr4_info (inf->pid); + struct svr4_info *info = get_svr4_info (); struct so_list *head = NULL; struct so_list **link_ptr = &head; @@ -1034,18 +1110,13 @@ svr4_default_sos (void) static struct so_list * svr4_current_sos (void) { - CORE_ADDR lm; + CORE_ADDR lm, prev_lm; struct so_list *head = 0; struct so_list **link_ptr = &head; CORE_ADDR ldsomap = 0; - struct inferior *inf; struct svr4_info *info; - if (ptid_equal (inferior_ptid, null_ptid)) - return NULL; - - inf = current_inferior (); - info = get_svr4_info (inf->pid); + info = get_svr4_info (); /* Always locate the debug struct, in case it has moved. */ info->debug_base = 0; @@ -1058,6 +1129,7 @@ svr4_current_sos (void) /* Walk the inferior's link map list, and build our list of `struct so_list' nodes. */ + prev_lm = 0; lm = solib_svr4_r_map (info); while (lm) @@ -1065,6 +1137,7 @@ svr4_current_sos (void) struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); struct so_list *new = XZALLOC (struct so_list); struct cleanup *old_chain = make_cleanup (xfree, new); + CORE_ADDR next_lm; new->lm_info = xmalloc (sizeof (struct lm_info)); make_cleanup (xfree, new->lm_info); @@ -1076,14 +1149,21 @@ svr4_current_sos (void) read_memory (lm, new->lm_info->lm, lmo->link_map_size); - lm = LM_NEXT (new); + next_lm = LM_NEXT (new); + + if (LM_PREV (new) != prev_lm) + { + warning (_("Corrupted shared library list")); + free_so (new); + next_lm = 0; + } /* For SVR4 versions, the first entry in the link map is for the inferior executable, so we must ignore it. For some versions of SVR4, it has no name. For others (Solaris 2.3 for example), it does have a name, so we can no longer use a missing name to decide when to ignore it. */ - if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0) + else if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0) { info->main_lm_addr = new->lm_info->lm_addr; free_so (new); @@ -1120,12 +1200,18 @@ svr4_current_sos (void) } } + prev_lm = lm; + lm = next_lm; + /* On Solaris, the dynamic linker is not in the normal list of shared objects, so make sure we pick it up too. Having symbol information for the dynamic linker is quite crucial for skipping dynamic linker resolver code. */ if (lm == 0 && ldsomap == 0) - lm = ldsomap = solib_svr4_r_ldsomap (info); + { + lm = ldsomap = solib_svr4_r_ldsomap (info); + prev_lm = 0; + } discard_cleanups (old_chain); } @@ -1142,7 +1228,7 @@ CORE_ADDR svr4_fetch_objfile_link_map (struct objfile *objfile) { struct so_list *so; - struct svr4_info *info = get_svr4_info (PIDGET (inferior_ptid)); + struct svr4_info *info = get_svr4_info (); /* Cause svr4_current_sos() to be run if it hasn't been already. */ if (info->main_lm_addr == 0) @@ -1182,16 +1268,16 @@ match_main (char *soname) /* Return 1 if PC lies in the dynamic symbol resolution code of the SVR4 run time loader. */ -static CORE_ADDR interp_text_sect_low; -static CORE_ADDR interp_text_sect_high; -static CORE_ADDR interp_plt_sect_low; -static CORE_ADDR interp_plt_sect_high; int svr4_in_dynsym_resolve_code (CORE_ADDR pc) { - return ((pc >= interp_text_sect_low && pc < interp_text_sect_high) - || (pc >= interp_plt_sect_low && pc < interp_plt_sect_high) + struct svr4_info *info = get_svr4_info (); + + return ((pc >= info->interp_text_sect_low + && pc < info->interp_text_sect_high) + || (pc >= info->interp_plt_sect_low + && pc < info->interp_plt_sect_high) || in_plt_section (pc, NULL)); } @@ -1258,28 +1344,23 @@ exec_entry_point (struct bfd *abfd, struct target_ops *targ) */ static int -enable_break (struct svr4_info *info) +enable_break (struct svr4_info *info, int from_tty) { struct minimal_symbol *msymbol; char **bkpt_namep; asection *interp_sect; gdb_byte *interp_name; CORE_ADDR sym_addr; - struct inferior *inf = current_inferior (); - - /* First, remove all the solib event breakpoints. Their addresses - may have changed since the last time we ran the program. */ - remove_solib_event_breakpoints (); - interp_text_sect_low = interp_text_sect_high = 0; - interp_plt_sect_low = interp_plt_sect_high = 0; + info->interp_text_sect_low = info->interp_text_sect_high = 0; + info->interp_plt_sect_low = info->interp_plt_sect_high = 0; /* If we already have a shared library list in the target, and r_debug contains r_brk, set the breakpoint there - this should mean r_brk has already been relocated. Assume the dynamic linker is the object containing r_brk. */ - solib_add (NULL, 0, ¤t_target, auto_solib_add); + solib_add (NULL, from_tty, ¤t_target, auto_solib_add); sym_addr = 0; if (info->debug_base && solib_svr4_r_map (info) != 0) sym_addr = solib_svr4_r_brk (info); @@ -1293,6 +1374,25 @@ enable_break (struct svr4_info *info) sym_addr, ¤t_target)); + /* On at least some versions of Solaris there's a dynamic relocation + on _r_debug.r_brk and SYM_ADDR may not be relocated yet, e.g., if + we get control before the dynamic linker has self-relocated. + Check if SYM_ADDR is in a known section, if it is assume we can + trust its value. This is just a heuristic though, it could go away + or be replaced if it's getting in the way. + + On ARM we need to know whether the ISA of rtld_db_dlactivity (or + however it's spelled in your particular system) is ARM or Thumb. + That knowledge is encoded in the address, if it's Thumb the low bit + is 1. However, we've stripped that info above and it's not clear + what all the consequences are of passing a non-addr_bits_remove'd + address to create_solib_event_breakpoint. The call to + find_pc_section verifies we know about the address and have some + hope of computing the right kind of breakpoint to use (via + symbol info). It does mean that GDB needs to be pointed at a + non-stripped version of the dynamic linker in order to obtain + information it already knows about. Sigh. */ + os = find_pc_section (sym_addr); if (os != NULL) { @@ -1308,18 +1408,20 @@ enable_break (struct svr4_info *info) interp_sect = bfd_get_section_by_name (tmp_bfd, ".text"); if (interp_sect) { - interp_text_sect_low = + info->interp_text_sect_low = bfd_section_vma (tmp_bfd, interp_sect) + load_addr; - interp_text_sect_high = - interp_text_sect_low + bfd_section_size (tmp_bfd, interp_sect); + info->interp_text_sect_high = + info->interp_text_sect_low + + bfd_section_size (tmp_bfd, interp_sect); } interp_sect = bfd_get_section_by_name (tmp_bfd, ".plt"); if (interp_sect) { - interp_plt_sect_low = + info->interp_plt_sect_low = bfd_section_vma (tmp_bfd, interp_sect) + load_addr; - interp_plt_sect_high = - interp_plt_sect_low + bfd_section_size (tmp_bfd, interp_sect); + info->interp_plt_sect_high = + info->interp_plt_sect_low + + bfd_section_size (tmp_bfd, interp_sect); } create_solib_event_breakpoint (target_gdbarch, sym_addr); @@ -1382,7 +1484,32 @@ enable_break (struct svr4_info *info) from our so_list, then try using the AT_BASE auxilliary entry. */ if (!load_addr_found) if (target_auxv_search (¤t_target, AT_BASE, &load_addr) > 0) - load_addr_found = 1; + { + int addr_bit = gdbarch_addr_bit (target_gdbarch); + + /* Ensure LOAD_ADDR has proper sign in its possible upper bits so + that `+ load_addr' will overflow CORE_ADDR width not creating + invalid addresses like 0x101234567 for 32bit inferiors on 64bit + GDB. */ + + if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT)) + { + CORE_ADDR space_size = (CORE_ADDR) 1 << addr_bit; + CORE_ADDR tmp_entry_point = exec_entry_point (tmp_bfd, + tmp_bfd_target); + + gdb_assert (load_addr < space_size); + + /* TMP_ENTRY_POINT exceeding SPACE_SIZE would be for prelinked + 64bit ld.so with 32bit executable, it should not happen. */ + + if (tmp_entry_point < space_size + && tmp_entry_point + load_addr >= space_size) + load_addr -= space_size; + } + + load_addr_found = 1; + } /* Otherwise we find the dynamic linker's base address by examining the current pc (which should point at the entry point for the @@ -1395,6 +1522,7 @@ enable_break (struct svr4_info *info) { struct regcache *regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch); + load_addr = (regcache_read_pc (regcache) - exec_entry_point (tmp_bfd, tmp_bfd_target)); } @@ -1404,7 +1532,7 @@ enable_break (struct svr4_info *info) info->debug_loader_name = xstrdup (interp_name); info->debug_loader_offset_p = 1; info->debug_loader_offset = load_addr; - solib_add (NULL, 0, ¤t_target, auto_solib_add); + solib_add (NULL, from_tty, ¤t_target, auto_solib_add); } /* Record the relocated start and end address of the dynamic linker @@ -1412,18 +1540,20 @@ enable_break (struct svr4_info *info) interp_sect = bfd_get_section_by_name (tmp_bfd, ".text"); if (interp_sect) { - interp_text_sect_low = + info->interp_text_sect_low = bfd_section_vma (tmp_bfd, interp_sect) + load_addr; - interp_text_sect_high = - interp_text_sect_low + bfd_section_size (tmp_bfd, interp_sect); + info->interp_text_sect_high = + info->interp_text_sect_low + + bfd_section_size (tmp_bfd, interp_sect); } interp_sect = bfd_get_section_by_name (tmp_bfd, ".plt"); if (interp_sect) { - interp_plt_sect_low = + info->interp_plt_sect_low = bfd_section_vma (tmp_bfd, interp_sect) + load_addr; - interp_plt_sect_high = - interp_plt_sect_low + bfd_section_size (tmp_bfd, interp_sect); + info->interp_plt_sect_high = + info->interp_plt_sect_low + + bfd_section_size (tmp_bfd, interp_sect); } /* Now try to set a breakpoint in the dynamic linker. */ @@ -1470,8 +1600,11 @@ enable_break (struct svr4_info *info) msymbol = lookup_minimal_symbol (*bkpt_namep, NULL, symfile_objfile); if ((msymbol != NULL) && (SYMBOL_VALUE_ADDRESS (msymbol) != 0)) { - create_solib_event_breakpoint (target_gdbarch, - SYMBOL_VALUE_ADDRESS (msymbol)); + sym_addr = SYMBOL_VALUE_ADDRESS (msymbol); + sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, + sym_addr, + ¤t_target); + create_solib_event_breakpoint (target_gdbarch, sym_addr); return 1; } } @@ -1481,8 +1614,11 @@ enable_break (struct svr4_info *info) msymbol = lookup_minimal_symbol (*bkpt_namep, NULL, symfile_objfile); if ((msymbol != NULL) && (SYMBOL_VALUE_ADDRESS (msymbol) != 0)) { - create_solib_event_breakpoint (target_gdbarch, - SYMBOL_VALUE_ADDRESS (msymbol)); + sym_addr = SYMBOL_VALUE_ADDRESS (msymbol); + sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, + sym_addr, + ¤t_target); + create_solib_event_breakpoint (target_gdbarch, sym_addr); return 1; } } @@ -1519,111 +1655,394 @@ svr4_special_symbol_handling (void) { } +/* Read the ELF program headers from ABFD. Return the contents and + set *PHDRS_SIZE to the size of the program headers. */ + +static gdb_byte * +read_program_headers_from_bfd (bfd *abfd, int *phdrs_size) +{ + Elf_Internal_Ehdr *ehdr; + gdb_byte *buf; + + ehdr = elf_elfheader (abfd); + + *phdrs_size = ehdr->e_phnum * ehdr->e_phentsize; + if (*phdrs_size == 0) + return NULL; + + buf = xmalloc (*phdrs_size); + if (bfd_seek (abfd, ehdr->e_phoff, SEEK_SET) != 0 + || bfd_bread (buf, *phdrs_size, abfd) != *phdrs_size) + { + xfree (buf); + return NULL; + } + + return buf; +} + +/* Return 1 and fill *DISPLACEMENTP with detected PIE offset of inferior + exec_bfd. Otherwise return 0. + + We relocate all of the sections by the same amount. This + behavior is mandated by recent editions of the System V ABI. + According to the System V Application Binary Interface, + Edition 4.1, page 5-5: + + ... Though the system chooses virtual addresses for + individual processes, it maintains the segments' relative + positions. Because position-independent code uses relative + addressesing between segments, the difference between + virtual addresses in memory must match the difference + between virtual addresses in the file. The difference + between the virtual address of any segment in memory and + the corresponding virtual address in the file is thus a + single constant value for any one executable or shared + object in a given process. This difference is the base + address. One use of the base address is to relocate the + memory image of the program during dynamic linking. + + The same language also appears in Edition 4.0 of the System V + ABI and is left unspecified in some of the earlier editions. + + Decide if the objfile needs to be relocated. As indicated above, we will + only be here when execution is stopped. But during attachment PC can be at + arbitrary address therefore regcache_read_pc can be misleading (contrary to + the auxv AT_ENTRY value). Moreover for executable with interpreter section + regcache_read_pc would point to the interpreter and not the main executable. + + So, to summarize, relocations are necessary when the start address obtained + from the executable is different from the address in auxv AT_ENTRY entry. + + [ The astute reader will note that we also test to make sure that + the executable in question has the DYNAMIC flag set. It is my + opinion that this test is unnecessary (undesirable even). It + was added to avoid inadvertent relocation of an executable + whose e_type member in the ELF header is not ET_DYN. There may + be a time in the future when it is desirable to do relocations + on other types of files as well in which case this condition + should either be removed or modified to accomodate the new file + type. - Kevin, Nov 2000. ] */ + +static int +svr4_exec_displacement (CORE_ADDR *displacementp) +{ + /* ENTRY_POINT is a possible function descriptor - before + a call to gdbarch_convert_from_func_ptr_addr. */ + CORE_ADDR entry_point, displacement; + + if (exec_bfd == NULL) + return 0; + + /* Therefore for ELF it is ET_EXEC and not ET_DYN. Both shared libraries + being executed themselves and PIE (Position Independent Executable) + executables are ET_DYN. */ + + if ((bfd_get_file_flags (exec_bfd) & DYNAMIC) == 0) + return 0; + + if (target_auxv_search (¤t_target, AT_ENTRY, &entry_point) <= 0) + return 0; + + displacement = entry_point - bfd_get_start_address (exec_bfd); + + /* Verify the DISPLACEMENT candidate complies with the required page + alignment. It is cheaper than the program headers comparison below. */ + + if (bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour) + { + const struct elf_backend_data *elf = get_elf_backend_data (exec_bfd); + + /* p_align of PT_LOAD segments does not specify any alignment but + only congruency of addresses: + p_offset % p_align == p_vaddr % p_align + Kernel is free to load the executable with lower alignment. */ + + if ((displacement & (elf->minpagesize - 1)) != 0) + return 0; + } + + /* Verify that the auxilliary vector describes the same file as exec_bfd, by + comparing their program headers. If the program headers in the auxilliary + vector do not match the program headers in the executable, then we are + looking at a different file than the one used by the kernel - for + instance, "gdb program" connected to "gdbserver :PORT ld.so program". */ + + if (bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour) + { + /* Be optimistic and clear OK only if GDB was able to verify the headers + really do not match. */ + int phdrs_size, phdrs2_size, ok = 1; + gdb_byte *buf, *buf2; + int arch_size; + + buf = read_program_header (-1, &phdrs_size, &arch_size); + buf2 = read_program_headers_from_bfd (exec_bfd, &phdrs2_size); + if (buf != NULL && buf2 != NULL) + { + enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch); + + /* We are dealing with three different addresses. EXEC_BFD + represents current address in on-disk file. target memory content + may be different from EXEC_BFD as the file may have been prelinked + to a different address after the executable has been loaded. + Moreover the address of placement in target memory can be + different from what the program headers in target memory say - this + is the goal of PIE. + + Detected DISPLACEMENT covers both the offsets of PIE placement and + possible new prelink performed after start of the program. Here + relocate BUF and BUF2 just by the EXEC_BFD vs. target memory + content offset for the verification purpose. */ + + if (phdrs_size != phdrs2_size + || bfd_get_arch_size (exec_bfd) != arch_size) + ok = 0; + else if (arch_size == 32 && phdrs_size >= sizeof (Elf32_External_Phdr) + && phdrs_size % sizeof (Elf32_External_Phdr) == 0) + { + Elf_Internal_Ehdr *ehdr2 = elf_tdata (exec_bfd)->elf_header; + Elf_Internal_Phdr *phdr2 = elf_tdata (exec_bfd)->phdr; + CORE_ADDR displacement = 0; + int i; + + /* DISPLACEMENT could be found more easily by the difference of + ehdr2->e_entry. But we haven't read the ehdr yet, and we + already have enough information to compute that displacement + with what we've read. */ + + for (i = 0; i < ehdr2->e_phnum; i++) + if (phdr2[i].p_type == PT_LOAD) + { + Elf32_External_Phdr *phdrp; + gdb_byte *buf_vaddr_p, *buf_paddr_p; + CORE_ADDR vaddr, paddr; + CORE_ADDR displacement_vaddr = 0; + CORE_ADDR displacement_paddr = 0; + + phdrp = &((Elf32_External_Phdr *) buf)[i]; + buf_vaddr_p = (gdb_byte *) &phdrp->p_vaddr; + buf_paddr_p = (gdb_byte *) &phdrp->p_paddr; + + vaddr = extract_unsigned_integer (buf_vaddr_p, 4, + byte_order); + displacement_vaddr = vaddr - phdr2[i].p_vaddr; + + paddr = extract_unsigned_integer (buf_paddr_p, 4, + byte_order); + displacement_paddr = paddr - phdr2[i].p_paddr; + + if (displacement_vaddr == displacement_paddr) + displacement = displacement_vaddr; + + break; + } + + /* Now compare BUF and BUF2 with optional DISPLACEMENT. */ + + for (i = 0; i < phdrs_size / sizeof (Elf32_External_Phdr); i++) + { + Elf32_External_Phdr *phdrp; + Elf32_External_Phdr *phdr2p; + gdb_byte *buf_vaddr_p, *buf_paddr_p; + CORE_ADDR vaddr, paddr; + + phdrp = &((Elf32_External_Phdr *) buf)[i]; + buf_vaddr_p = (gdb_byte *) &phdrp->p_vaddr; + buf_paddr_p = (gdb_byte *) &phdrp->p_paddr; + phdr2p = &((Elf32_External_Phdr *) buf2)[i]; + + /* PT_GNU_STACK is an exception by being never relocated by + prelink as its addresses are always zero. */ + + if (memcmp (phdrp, phdr2p, sizeof (*phdrp)) == 0) + continue; + + /* Check also other adjustment combinations - PR 11786. */ + + vaddr = extract_unsigned_integer (buf_vaddr_p, 4, byte_order); + vaddr -= displacement; + store_unsigned_integer (buf_vaddr_p, 4, byte_order, vaddr); + + paddr = extract_unsigned_integer (buf_paddr_p, 4, byte_order); + paddr -= displacement; + store_unsigned_integer (buf_paddr_p, 4, byte_order, paddr); + + if (memcmp (phdrp, phdr2p, sizeof (*phdrp)) == 0) + continue; + + ok = 0; + break; + } + } + else if (arch_size == 64 && phdrs_size >= sizeof (Elf64_External_Phdr) + && phdrs_size % sizeof (Elf64_External_Phdr) == 0) + { + Elf_Internal_Ehdr *ehdr2 = elf_tdata (exec_bfd)->elf_header; + Elf_Internal_Phdr *phdr2 = elf_tdata (exec_bfd)->phdr; + CORE_ADDR displacement = 0; + int i; + + /* DISPLACEMENT could be found more easily by the difference of + ehdr2->e_entry. But we haven't read the ehdr yet, and we + already have enough information to compute that displacement + with what we've read. */ + + for (i = 0; i < ehdr2->e_phnum; i++) + if (phdr2[i].p_type == PT_LOAD) + { + Elf64_External_Phdr *phdrp; + gdb_byte *buf_vaddr_p, *buf_paddr_p; + CORE_ADDR vaddr, paddr; + CORE_ADDR displacement_vaddr = 0; + CORE_ADDR displacement_paddr = 0; + + phdrp = &((Elf64_External_Phdr *) buf)[i]; + buf_vaddr_p = (gdb_byte *) &phdrp->p_vaddr; + buf_paddr_p = (gdb_byte *) &phdrp->p_paddr; + + vaddr = extract_unsigned_integer (buf_vaddr_p, 8, + byte_order); + displacement_vaddr = vaddr - phdr2[i].p_vaddr; + + paddr = extract_unsigned_integer (buf_paddr_p, 8, + byte_order); + displacement_paddr = paddr - phdr2[i].p_paddr; + + if (displacement_vaddr == displacement_paddr) + displacement = displacement_vaddr; + + break; + } + + /* Now compare BUF and BUF2 with optional DISPLACEMENT. */ + + for (i = 0; i < phdrs_size / sizeof (Elf64_External_Phdr); i++) + { + Elf64_External_Phdr *phdrp; + Elf64_External_Phdr *phdr2p; + gdb_byte *buf_vaddr_p, *buf_paddr_p; + CORE_ADDR vaddr, paddr; + + phdrp = &((Elf64_External_Phdr *) buf)[i]; + buf_vaddr_p = (gdb_byte *) &phdrp->p_vaddr; + buf_paddr_p = (gdb_byte *) &phdrp->p_paddr; + phdr2p = &((Elf64_External_Phdr *) buf2)[i]; + + /* PT_GNU_STACK is an exception by being never relocated by + prelink as its addresses are always zero. */ + + if (memcmp (phdrp, phdr2p, sizeof (*phdrp)) == 0) + continue; + + /* Check also other adjustment combinations - PR 11786. */ + + vaddr = extract_unsigned_integer (buf_vaddr_p, 8, byte_order); + vaddr -= displacement; + store_unsigned_integer (buf_vaddr_p, 8, byte_order, vaddr); + + paddr = extract_unsigned_integer (buf_paddr_p, 8, byte_order); + paddr -= displacement; + store_unsigned_integer (buf_paddr_p, 8, byte_order, paddr); + + if (memcmp (phdrp, phdr2p, sizeof (*phdrp)) == 0) + continue; + + ok = 0; + break; + } + } + else + ok = 0; + } + + xfree (buf); + xfree (buf2); + + if (!ok) + return 0; + } + + if (info_verbose) + { + /* It can be printed repeatedly as there is no easy way to check + the executable symbols/file has been already relocated to + displacement. */ + + printf_unfiltered (_("Using PIE (Position Independent Executable) " + "displacement %s for \"%s\".\n"), + paddress (target_gdbarch, displacement), + bfd_get_filename (exec_bfd)); + } + + *displacementp = displacement; + return 1; +} + /* Relocate the main executable. This function should be called upon stopping the inferior process at the entry point to the program. - The entry point from BFD is compared to the PC and if they are - different, the main executable is relocated by the proper amount. - - As written it will only attempt to relocate executables which - lack interpreter sections. It seems likely that only dynamic - linker executables will get relocated, though it should work - properly for a position-independent static executable as well. */ + The entry point from BFD is compared to the AT_ENTRY of AUXV and if they are + different, the main executable is relocated by the proper amount. */ static void svr4_relocate_main_executable (void) { - asection *interp_sect; - struct regcache *regcache - = get_thread_arch_regcache (inferior_ptid, target_gdbarch); - CORE_ADDR pc = regcache_read_pc (regcache); - - /* Decide if the objfile needs to be relocated. As indicated above, - we will only be here when execution is stopped at the beginning - of the program. Relocation is necessary if the address at which - we are presently stopped differs from the start address stored in - the executable AND there's no interpreter section. The condition - regarding the interpreter section is very important because if - there *is* an interpreter section, execution will begin there - instead. When there is an interpreter section, the start address - is (presumably) used by the interpreter at some point to start - execution of the program. - - If there is an interpreter, it is normal for it to be set to an - arbitrary address at the outset. The job of finding it is - handled in enable_break(). - - So, to summarize, relocations are necessary when there is no - interpreter section and the start address obtained from the - executable is different from the address at which GDB is - currently stopped. - - [ The astute reader will note that we also test to make sure that - the executable in question has the DYNAMIC flag set. It is my - opinion that this test is unnecessary (undesirable even). It - was added to avoid inadvertent relocation of an executable - whose e_type member in the ELF header is not ET_DYN. There may - be a time in the future when it is desirable to do relocations - on other types of files as well in which case this condition - should either be removed or modified to accomodate the new file - type. (E.g, an ET_EXEC executable which has been built to be - position-independent could safely be relocated by the OS if - desired. It is true that this violates the ABI, but the ABI - has been known to be bent from time to time.) - Kevin, Nov 2000. ] - */ - - interp_sect = bfd_get_section_by_name (exec_bfd, ".interp"); - if (interp_sect == NULL - && (bfd_get_file_flags (exec_bfd) & DYNAMIC) != 0 - && (exec_entry_point (exec_bfd, &exec_ops) != pc)) + CORE_ADDR displacement; + + /* If we are re-running this executable, SYMFILE_OBJFILE->SECTION_OFFSETS + probably contains the offsets computed using the PIE displacement + from the previous run, which of course are irrelevant for this run. + So we need to determine the new PIE displacement and recompute the + section offsets accordingly, even if SYMFILE_OBJFILE->SECTION_OFFSETS + already contains pre-computed offsets. + + If we cannot compute the PIE displacement, either: + + - The executable is not PIE. + + - SYMFILE_OBJFILE does not match the executable started in the target. + This can happen for main executable symbols loaded at the host while + `ld.so --ld-args main-executable' is loaded in the target. + + Then we leave the section offsets untouched and use them as is for + this run. Either: + + - These section offsets were properly reset earlier, and thus + already contain the correct values. This can happen for instance + when reconnecting via the remote protocol to a target that supports + the `qOffsets' packet. + + - The section offsets were not reset earlier, and the best we can + hope is that the old offsets are still applicable to the new run. + */ + + if (! svr4_exec_displacement (&displacement)) + return; + + /* Even DISPLACEMENT 0 is a valid new difference of in-memory vs. in-file + addresses. */ + + if (symfile_objfile) { - struct cleanup *old_chain; struct section_offsets *new_offsets; - int i, changed; - CORE_ADDR displacement; - - /* It is necessary to relocate the objfile. The amount to - relocate by is simply the address at which we are stopped - minus the starting address from the executable. - - We relocate all of the sections by the same amount. This - behavior is mandated by recent editions of the System V ABI. - According to the System V Application Binary Interface, - Edition 4.1, page 5-5: - - ... Though the system chooses virtual addresses for - individual processes, it maintains the segments' relative - positions. Because position-independent code uses relative - addressesing between segments, the difference between - virtual addresses in memory must match the difference - between virtual addresses in the file. The difference - between the virtual address of any segment in memory and - the corresponding virtual address in the file is thus a - single constant value for any one executable or shared - object in a given process. This difference is the base - address. One use of the base address is to relocate the - memory image of the program during dynamic linking. - - The same language also appears in Edition 4.0 of the System V - ABI and is left unspecified in some of the earlier editions. */ - - displacement = pc - exec_entry_point (exec_bfd, &exec_ops); - changed = 0; - - new_offsets = xcalloc (symfile_objfile->num_sections, - sizeof (struct section_offsets)); - old_chain = make_cleanup (xfree, new_offsets); + int i; + + new_offsets = alloca (symfile_objfile->num_sections + * sizeof (*new_offsets)); for (i = 0; i < symfile_objfile->num_sections; i++) - { - if (displacement != ANOFFSET (symfile_objfile->section_offsets, i)) - changed = 1; - new_offsets->offsets[i] = displacement; - } + new_offsets->offsets[i] = displacement; - if (changed) - objfile_relocate (symfile_objfile, new_offsets); + objfile_relocate (symfile_objfile, new_offsets); + } + else if (exec_bfd) + { + asection *asect; - do_cleanups (old_chain); + for (asect = exec_bfd->sections; asect != NULL; asect = asect->next) + exec_set_section_address (bfd_get_filename (exec_bfd), asect->index, + (bfd_section_vma (exec_bfd, asect) + + displacement)); } } @@ -1635,7 +2054,7 @@ svr4_relocate_main_executable (void) SYNOPSIS - void svr4_solib_create_inferior_hook () + void svr4_solib_create_inferior_hook (int from_tty) DESCRIPTION @@ -1680,13 +2099,15 @@ svr4_relocate_main_executable (void) */ static void -svr4_solib_create_inferior_hook (void) +svr4_solib_create_inferior_hook (int from_tty) { +#if defined(_SCO_DS) struct inferior *inf; struct thread_info *tp; +#endif /* defined(_SCO_DS) */ struct svr4_info *info; - info = get_svr4_info (PIDGET (inferior_ptid)); + info = get_svr4_info (); /* Relocate the main executable if necessary. */ svr4_relocate_main_executable (); @@ -1694,7 +2115,7 @@ svr4_solib_create_inferior_hook (void) if (!svr4_have_link_map_offsets ()) return; - if (!enable_break (info)) + if (!enable_break (info, from_tty)) return; #if defined(_SCO_DS) @@ -1726,7 +2147,14 @@ svr4_solib_create_inferior_hook (void) static void svr4_clear_solib (void) { - remove_svr4_info (PIDGET (inferior_ptid)); + struct svr4_info *info; + + info = get_svr4_info (); + info->debug_base = 0; + info->debug_loader_offset_p = 0; + info->debug_loader_offset = 0; + xfree (info->debug_loader_name); + info->debug_loader_name = NULL; } static void @@ -1828,6 +2256,7 @@ static int svr4_have_link_map_offsets (void) { struct solib_svr4_ops *ops = gdbarch_data (target_gdbarch, solib_svr4_data); + return (ops->fetch_link_map_offsets != NULL); } @@ -1908,15 +2337,24 @@ struct target_so_ops svr4_so_ops; static struct symbol * elf_lookup_lib_symbol (const struct objfile *objfile, const char *name, - const char *linkage_name, const domain_enum domain) { - if (objfile->obfd == NULL - || scan_dyntag (DT_SYMBOLIC, objfile->obfd, NULL) != 1) + bfd *abfd; + + if (objfile == symfile_objfile) + abfd = exec_bfd; + else + { + /* OBJFILE should have been passed as the non-debug one. */ + gdb_assert (objfile->separate_debug_objfile_backlink == NULL); + + abfd = objfile->obfd; + } + + if (abfd == NULL || scan_dyntag (DT_SYMBOLIC, abfd, NULL) != 1) return NULL; - return lookup_global_symbol_from_objfile - (objfile, name, linkage_name, domain); + return lookup_global_symbol_from_objfile (objfile, name, domain); } extern initialize_file_ftype _initialize_svr4_solib; /* -Wmissing-prototypes */ @@ -1925,6 +2363,8 @@ void _initialize_svr4_solib (void) { solib_svr4_data = gdbarch_data_register_pre_init (solib_svr4_init); + solib_svr4_pspace_data + = register_program_space_data_with_cleanup (svr4_pspace_data_cleanup); svr4_so_ops.relocate_section_addresses = svr4_relocate_section_addresses; svr4_so_ops.free_so = svr4_free_so; @@ -1937,6 +2377,5 @@ _initialize_svr4_solib (void) svr4_so_ops.bfd_open = solib_bfd_open; svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol; svr4_so_ops.same = svr4_same; - - observer_attach_inferior_exit (solib_svr4_inferior_exit); + svr4_so_ops.keep_data_in_core = svr4_keep_data_in_core; } diff --git a/contrib/gdb-7/gdb/solib-svr4.h b/contrib/gdb-7/gdb/solib-svr4.h index 398f25ee6b..f27bde8e92 100644 --- a/contrib/gdb-7/gdb/solib-svr4.h +++ b/contrib/gdb-7/gdb/solib-svr4.h @@ -1,6 +1,6 @@ /* Handle shared libraries for GDB, the GNU Debugger. - Copyright (C) 2000, 2004, 2006, 2007, 2008, 2009 + Copyright (C) 2000, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/solib-target.c b/contrib/gdb-7/gdb/solib-target.c new file mode 100644 index 0000000000..b2d8bc488f --- /dev/null +++ b/contrib/gdb-7/gdb/solib-target.c @@ -0,0 +1,505 @@ +/* Definitions for targets which report shared library events. + + Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + + This file is part of GDB. + + 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 . */ + +#include "defs.h" +#include "objfiles.h" +#include "solist.h" +#include "symtab.h" +#include "symfile.h" +#include "target.h" +#include "vec.h" +#include "solib-target.h" + +#include "gdb_string.h" + +DEF_VEC_O(CORE_ADDR); + +/* Private data for each loaded library. */ +struct lm_info +{ + /* The library's name. The name is normally kept in the struct + so_list; it is only here during XML parsing. */ + char *name; + + /* The target can either specify segment bases or section bases, not + both. */ + + /* The base addresses for each independently relocatable segment of + this shared library. */ + VEC(CORE_ADDR) *segment_bases; + + /* The base addresses for each independently allocatable, + relocatable section of this shared library. */ + VEC(CORE_ADDR) *section_bases; + + /* The cached offsets for each section of this shared library, + determined from SEGMENT_BASES, or SECTION_BASES. */ + struct section_offsets *offsets; +}; + +typedef struct lm_info *lm_info_p; +DEF_VEC_P(lm_info_p); + +#if !defined(HAVE_LIBEXPAT) + +static VEC(lm_info_p) * +solib_target_parse_libraries (const char *library) +{ + static int have_warned; + + if (!have_warned) + { + have_warned = 1; + warning (_("Can not parse XML library list; XML support was disabled " + "at compile time")); + } + + return NULL; +} + +#else /* HAVE_LIBEXPAT */ + +#include "xml-support.h" + +/* Handle the start of a element. */ + +static void +library_list_start_segment (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, VEC(gdb_xml_value_s) *attributes) +{ + VEC(lm_info_p) **list = user_data; + struct lm_info *last = VEC_last (lm_info_p, *list); + ULONGEST *address_p = VEC_index (gdb_xml_value_s, attributes, 0)->value; + CORE_ADDR address = (CORE_ADDR) *address_p; + + if (last->section_bases != NULL) + gdb_xml_error (parser, + _("Library list with both segments and sections")); + + VEC_safe_push (CORE_ADDR, last->segment_bases, &address); +} + +static void +library_list_start_section (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, VEC(gdb_xml_value_s) *attributes) +{ + VEC(lm_info_p) **list = user_data; + struct lm_info *last = VEC_last (lm_info_p, *list); + ULONGEST *address_p = VEC_index (gdb_xml_value_s, attributes, 0)->value; + CORE_ADDR address = (CORE_ADDR) *address_p; + + if (last->segment_bases != NULL) + gdb_xml_error (parser, + _("Library list with both segments and sections")); + + VEC_safe_push (CORE_ADDR, last->section_bases, &address); +} + +/* Handle the start of a element. */ + +static void +library_list_start_library (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, VEC(gdb_xml_value_s) *attributes) +{ + VEC(lm_info_p) **list = user_data; + struct lm_info *item = XZALLOC (struct lm_info); + const char *name = VEC_index (gdb_xml_value_s, attributes, 0)->value; + + item->name = xstrdup (name); + VEC_safe_push (lm_info_p, *list, item); +} + +static void +library_list_end_library (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, const char *body_text) +{ + VEC(lm_info_p) **list = user_data; + struct lm_info *lm_info = VEC_last (lm_info_p, *list); + + if (lm_info->segment_bases == NULL + && lm_info->section_bases == NULL) + gdb_xml_error (parser, + _("No segment or section bases defined")); +} + + +/* Handle the start of a element. */ + +static void +library_list_start_list (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, VEC(gdb_xml_value_s) *attributes) +{ + char *version = VEC_index (gdb_xml_value_s, attributes, 0)->value; + + if (strcmp (version, "1.0") != 0) + gdb_xml_error (parser, + _("Library list has unsupported version \"%s\""), + version); +} + +/* Discard the constructed library list. */ + +static void +solib_target_free_library_list (void *p) +{ + VEC(lm_info_p) **result = p; + struct lm_info *info; + int ix; + + for (ix = 0; VEC_iterate (lm_info_p, *result, ix, info); ix++) + { + xfree (info->name); + VEC_free (CORE_ADDR, info->segment_bases); + VEC_free (CORE_ADDR, info->section_bases); + xfree (info); + } + VEC_free (lm_info_p, *result); + *result = NULL; +} + +/* The allowed elements and attributes for an XML library list. + The root element is a . */ + +const struct gdb_xml_attribute segment_attributes[] = { + { "address", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL }, + { NULL, GDB_XML_AF_NONE, NULL, NULL } +}; + +const struct gdb_xml_attribute section_attributes[] = { + { "address", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL }, + { NULL, GDB_XML_AF_NONE, NULL, NULL } +}; + +const struct gdb_xml_element library_children[] = { + { "segment", segment_attributes, NULL, + GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL, + library_list_start_segment, NULL }, + { "section", section_attributes, NULL, + GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL, + library_list_start_section, NULL }, + { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } +}; + +const struct gdb_xml_attribute library_attributes[] = { + { "name", GDB_XML_AF_NONE, NULL, NULL }, + { NULL, GDB_XML_AF_NONE, NULL, NULL } +}; + +const struct gdb_xml_element library_list_children[] = { + { "library", library_attributes, library_children, + GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL, + library_list_start_library, library_list_end_library }, + { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } +}; + +const struct gdb_xml_attribute library_list_attributes[] = { + { "version", GDB_XML_AF_NONE, NULL, NULL }, + { NULL, GDB_XML_AF_NONE, NULL, NULL } +}; + +const struct gdb_xml_element library_list_elements[] = { + { "library-list", library_list_attributes, library_list_children, + GDB_XML_EF_NONE, library_list_start_list, NULL }, + { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } +}; + +static VEC(lm_info_p) * +solib_target_parse_libraries (const char *library) +{ + struct gdb_xml_parser *parser; + VEC(lm_info_p) *result = NULL; + struct cleanup *before_deleting_result, *back_to; + + back_to = make_cleanup (null_cleanup, NULL); + parser = gdb_xml_create_parser_and_cleanup (_("target library list"), + library_list_elements, &result); + gdb_xml_use_dtd (parser, "library-list.dtd"); + + before_deleting_result = make_cleanup (solib_target_free_library_list, + &result); + + if (gdb_xml_parse (parser, library) == 0) + /* Parsed successfully, don't need to delete the result. */ + discard_cleanups (before_deleting_result); + + do_cleanups (back_to); + return result; +} +#endif + +static struct so_list * +solib_target_current_sos (void) +{ + struct so_list *new_solib, *start = NULL, *last = NULL; + const char *library_document; + VEC(lm_info_p) *library_list; + struct lm_info *info; + int ix; + + /* Fetch the list of shared libraries. */ + library_document = target_read_stralloc (¤t_target, + TARGET_OBJECT_LIBRARIES, + NULL); + if (library_document == NULL) + return NULL; + + /* Parse the list. */ + library_list = solib_target_parse_libraries (library_document); + if (library_list == NULL) + return NULL; + + /* Build a struct so_list for each entry on the list. */ + for (ix = 0; VEC_iterate (lm_info_p, library_list, ix, info); ix++) + { + new_solib = XZALLOC (struct so_list); + strncpy (new_solib->so_name, info->name, SO_NAME_MAX_PATH_SIZE - 1); + new_solib->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; + strncpy (new_solib->so_original_name, info->name, + SO_NAME_MAX_PATH_SIZE - 1); + new_solib->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; + new_solib->lm_info = info; + + /* We no longer need this copy of the name. */ + xfree (info->name); + info->name = NULL; + + /* Add it to the list. */ + if (!start) + last = start = new_solib; + else + { + last->next = new_solib; + last = new_solib; + } + } + + /* Free the library list, but not its members. */ + VEC_free (lm_info_p, library_list); + + return start; +} + +static void +solib_target_special_symbol_handling (void) +{ + /* Nothing needed. */ +} + +static void +solib_target_solib_create_inferior_hook (int from_tty) +{ + /* Nothing needed. */ +} + +static void +solib_target_clear_solib (void) +{ + /* Nothing needed. */ +} + +static void +solib_target_free_so (struct so_list *so) +{ + gdb_assert (so->lm_info->name == NULL); + xfree (so->lm_info->offsets); + VEC_free (CORE_ADDR, so->lm_info->segment_bases); + xfree (so->lm_info); +} + +static void +solib_target_relocate_section_addresses (struct so_list *so, + struct target_section *sec) +{ + int flags = bfd_get_section_flags (sec->bfd, sec->the_bfd_section); + CORE_ADDR offset; + + /* Build the offset table only once per object file. We can not do + it any earlier, since we need to open the file first. */ + if (so->lm_info->offsets == NULL) + { + int num_sections = bfd_count_sections (so->abfd); + + so->lm_info->offsets = xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections)); + + if (so->lm_info->section_bases) + { + int i; + asection *sect; + int num_section_bases + = VEC_length (CORE_ADDR, so->lm_info->section_bases); + int num_alloc_sections = 0; + + for (i = 0, sect = so->abfd->sections; + sect != NULL; + i++, sect = sect->next) + if ((bfd_get_section_flags (so->abfd, sect) & SEC_ALLOC)) + num_alloc_sections++; + + if (num_alloc_sections != num_section_bases) + warning (_("\ +Could not relocate shared library \"%s\": wrong number of ALLOC sections"), + so->so_name); + else + { + int bases_index = 0; + int found_range = 0; + CORE_ADDR *section_bases; + + section_bases = VEC_address (CORE_ADDR, + so->lm_info->section_bases); + + so->addr_low = ~(CORE_ADDR) 0; + so->addr_high = 0; + for (i = 0, sect = so->abfd->sections; + sect != NULL; + i++, sect = sect->next) + { + if (!(bfd_get_section_flags (so->abfd, sect) & SEC_ALLOC)) + continue; + if (bfd_section_size (so->abfd, sect) > 0) + { + CORE_ADDR low, high; + + low = section_bases[i]; + high = low + bfd_section_size (so->abfd, sect) - 1; + + if (low < so->addr_low) + so->addr_low = low; + if (high > so->addr_high) + so->addr_high = high; + gdb_assert (so->addr_low <= so->addr_high); + found_range = 1; + } + so->lm_info->offsets->offsets[i] = section_bases[bases_index]; + bases_index++; + } + if (!found_range) + so->addr_low = so->addr_high = 0; + gdb_assert (so->addr_low <= so->addr_high); + } + } + else if (so->lm_info->segment_bases) + { + struct symfile_segment_data *data; + + data = get_symfile_segment_data (so->abfd); + if (data == NULL) + warning (_("\ +Could not relocate shared library \"%s\": no segments"), so->so_name); + else + { + ULONGEST orig_delta; + int i; + int num_bases; + CORE_ADDR *segment_bases; + + num_bases = VEC_length (CORE_ADDR, so->lm_info->segment_bases); + segment_bases = VEC_address (CORE_ADDR, + so->lm_info->segment_bases); + + if (!symfile_map_offsets_to_segments (so->abfd, data, + so->lm_info->offsets, + num_bases, segment_bases)) + warning (_("\ +Could not relocate shared library \"%s\": bad offsets"), so->so_name); + + /* Find the range of addresses to report for this library in + "info sharedlibrary". Report any consecutive segments + which were relocated as a single unit. */ + gdb_assert (num_bases > 0); + orig_delta = segment_bases[0] - data->segment_bases[0]; + + for (i = 1; i < data->num_segments; i++) + { + /* If we have run out of offsets, assume all + remaining segments have the same offset. */ + if (i >= num_bases) + continue; + + /* If this segment does not have the same offset, do + not include it in the library's range. */ + if (segment_bases[i] - data->segment_bases[i] != orig_delta) + break; + } + + so->addr_low = segment_bases[0]; + so->addr_high = (data->segment_bases[i - 1] + + data->segment_sizes[i - 1] + + orig_delta); + gdb_assert (so->addr_low <= so->addr_high); + + free_symfile_segment_data (data); + } + } + } + + offset = so->lm_info->offsets->offsets[sec->the_bfd_section->index]; + sec->addr += offset; + sec->endaddr += offset; +} + +static int +solib_target_open_symbol_file_object (void *from_ttyp) +{ + /* We can't locate the main symbol file based on the target's + knowledge; the user has to specify it. */ + return 0; +} + +static int +solib_target_in_dynsym_resolve_code (CORE_ADDR pc) +{ + /* We don't have a range of addresses for the dynamic linker; there + may not be one in the program's address space. So only report + PLT entries (which may be import stubs). */ + return in_plt_section (pc, NULL); +} + +struct target_so_ops solib_target_so_ops; + +extern initialize_file_ftype _initialize_solib_target; /* -Wmissing-prototypes */ + +void +_initialize_solib_target (void) +{ + solib_target_so_ops.relocate_section_addresses + = solib_target_relocate_section_addresses; + solib_target_so_ops.free_so = solib_target_free_so; + solib_target_so_ops.clear_solib = solib_target_clear_solib; + solib_target_so_ops.solib_create_inferior_hook + = solib_target_solib_create_inferior_hook; + solib_target_so_ops.special_symbol_handling + = solib_target_special_symbol_handling; + solib_target_so_ops.current_sos = solib_target_current_sos; + solib_target_so_ops.open_symbol_file_object + = solib_target_open_symbol_file_object; + solib_target_so_ops.in_dynsym_resolve_code + = solib_target_in_dynsym_resolve_code; + solib_target_so_ops.bfd_open = solib_bfd_open; + + /* Set current_target_so_ops to solib_target_so_ops if not already + set. */ + if (current_target_so_ops == 0) + current_target_so_ops = &solib_target_so_ops; +} diff --git a/contrib/gdb-7/gdb/gnu-v2-abi.h b/contrib/gdb-7/gdb/solib-target.h similarity index 72% rename from contrib/gdb-7/gdb/gnu-v2-abi.h rename to contrib/gdb-7/gdb/solib-target.h index c566640dd4..35d5be6b2d 100644 --- a/contrib/gdb-7/gdb/gnu-v2-abi.h +++ b/contrib/gdb-7/gdb/solib-target.h @@ -1,6 +1,6 @@ -/* Abstraction of GNU v2 abi. +/* Handle shared libraries for GDB, the GNU Debugger. - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -17,11 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef GNU_V2_ABI_H -#define GNU_V2_ABI_H +#ifndef SOLIB_TARGET_H +#define SOLIB_TARGET_H -extern int gnuv2_baseclass_offset (struct type *type, int index, - const bfd_byte *valaddr, - CORE_ADDR address); +struct target_so_ops; +extern struct target_so_ops solib_target_so_ops; -#endif +#endif /* solib-target.h */ diff --git a/contrib/gdb-7/gdb/solib.c b/contrib/gdb-7/gdb/solib.c index a2ad0c4c1c..837814b590 100644 --- a/contrib/gdb-7/gdb/solib.c +++ b/contrib/gdb-7/gdb/solib.c @@ -1,7 +1,7 @@ /* Handle shared libraries for GDB, the GNU Debugger. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -47,6 +47,7 @@ #include "remote.h" #include "solib.h" #include "interps.h" +#include "filesystem.h" /* Architecture-specific operations. */ @@ -67,6 +68,7 @@ static struct target_so_ops * solib_ops (struct gdbarch *gdbarch) { struct target_so_ops **ops = gdbarch_data (gdbarch, solib_data); + return *ops; } @@ -76,6 +78,7 @@ void set_solib_ops (struct gdbarch *gdbarch, struct target_so_ops *new_ops) { struct target_so_ops **ops = gdbarch_data (gdbarch, solib_data); + *ops = new_ops; } @@ -86,9 +89,8 @@ set_solib_ops (struct gdbarch *gdbarch, struct target_so_ops *new_ops) configuration needs to call set_solib_ops. */ struct target_so_ops *current_target_so_ops; -/* local data declarations */ - -static struct so_list *so_list_head; /* List of known shared objects */ +/* List of known shared objects */ +#define so_list_head current_program_space->so_list /* Local function prototypes */ @@ -105,6 +107,13 @@ The search path for loading non-absolute shared library symbol files is %s.\n"), value); } +/* Same as HAVE_DOS_BASED_FILE_SYSTEM, but useable as an rvalue. */ +#if (HAVE_DOS_BASED_FILE_SYSTEM) +# define DOS_BASED_FILE_SYSTEM 1 +#else +# define DOS_BASED_FILE_SYSTEM 0 +#endif + /* GLOBAL FUNCTION @@ -134,7 +143,7 @@ The search path for loading non-absolute shared library symbol files is %s.\n"), * If gdb_sysroot is NOT set, perform the following two searches: * Look in inferior's $PATH. * Look in inferior's $LD_LIBRARY_PATH. - * + * * The last check avoids doing this search when targetting remote * machines since gdb_sysroot will almost always be set. @@ -151,12 +160,38 @@ solib_find (char *in_pathname, int *fd) int found_file = -1; char *temp_pathname = NULL; int gdb_sysroot_is_empty; + const char *solib_symbols_extension + = gdbarch_solib_symbols_extension (target_gdbarch); + const char *fskind = effective_target_file_system_kind (); + struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); + char *sysroot = NULL; + + /* If solib_symbols_extension is set, replace the file's + extension. */ + if (solib_symbols_extension) + { + char *p = in_pathname + strlen (in_pathname); + + while (p > in_pathname && *p != '.') + p--; + + if (*p == '.') + { + char *new_pathname; + + new_pathname = alloca (p - in_pathname + 1 + + strlen (solib_symbols_extension) + 1); + memcpy (new_pathname, in_pathname, p - in_pathname + 1); + strcpy (new_pathname + (p - in_pathname) + 1, + solib_symbols_extension); + + in_pathname = new_pathname; + } + } gdb_sysroot_is_empty = (gdb_sysroot == NULL || *gdb_sysroot == 0); - if (! IS_ABSOLUTE_PATH (in_pathname) || gdb_sysroot_is_empty) - temp_pathname = in_pathname; - else + if (!gdb_sysroot_is_empty) { int prefix_len = strlen (gdb_sysroot); @@ -165,61 +200,150 @@ solib_find (char *in_pathname, int *fd) && IS_DIR_SEPARATOR (gdb_sysroot[prefix_len - 1])) prefix_len--; + sysroot = savestring (gdb_sysroot, prefix_len); + make_cleanup (xfree, sysroot); + } + + /* If we're on a non-DOS-based system, backslashes won't be + understood as directory separator, so, convert them to forward + slashes, iff we're supposed to handle DOS-based file system + semantics for target paths. */ + if (!DOS_BASED_FILE_SYSTEM && fskind == file_system_kind_dos_based) + { + char *p; + + /* Avoid clobbering our input. */ + p = alloca (strlen (in_pathname) + 1); + strcpy (p, in_pathname); + in_pathname = p; + + for (; *p; p++) + { + if (*p == '\\') + *p = '/'; + } + } + + /* Note, we're interested in IS_TARGET_ABSOLUTE_PATH, not + IS_ABSOLUTE_PATH. The latter is for host paths only, while + IN_PATHNAME is a target path. For example, if we're supposed to + be handling DOS-like semantics we want to consider a + 'c:/foo/bar.dll' path as an absolute path, even on a Unix box. + With such a path, before giving up on the sysroot, we'll try: + + 1st attempt, c:/foo/bar.dll ==> /sysroot/c:/foo/bar.dll + 2nd attempt, c:/foo/bar.dll ==> /sysroot/c/foo/bar.dll + 3rd attempt, c:/foo/bar.dll ==> /sysroot/foo/bar.dll + */ + + if (!IS_TARGET_ABSOLUTE_PATH (fskind, in_pathname) || gdb_sysroot_is_empty) + temp_pathname = xstrdup (in_pathname); + else + { + int need_dir_separator; + + need_dir_separator = !IS_DIR_SEPARATOR (in_pathname[0]); + /* Cat the prefixed pathname together. */ - temp_pathname = alloca (prefix_len + strlen (in_pathname) + 1); - strncpy (temp_pathname, gdb_sysroot, prefix_len); - temp_pathname[prefix_len] = '\0'; - strcat (temp_pathname, in_pathname); + temp_pathname = concat (sysroot, + need_dir_separator ? SLASH_STRING : "", + in_pathname, (char *) NULL); } /* Handle remote files. */ if (remote_filename_p (temp_pathname)) { *fd = -1; - return xstrdup (temp_pathname); + return temp_pathname; } /* Now see if we can open it. */ found_file = open (temp_pathname, O_RDONLY | O_BINARY, 0); + if (found_file < 0) + xfree (temp_pathname); + + /* If the search in gdb_sysroot failed, and the path name has a + drive spec (e.g, c:/foo), try stripping ':' from the drive spec, + and retrying in the sysroot: + c:/foo/bar.dll ==> /sysroot/c/foo/bar.dll. */ + + if (found_file < 0 + && !gdb_sysroot_is_empty + && HAS_TARGET_DRIVE_SPEC (fskind, in_pathname)) + { + int need_dir_separator = !IS_DIR_SEPARATOR (in_pathname[2]); + char *drive = savestring (in_pathname, 1); + + temp_pathname = concat (sysroot, + SLASH_STRING, + drive, + need_dir_separator ? SLASH_STRING : "", + in_pathname + 2, (char *) NULL); + xfree (drive); + + found_file = open (temp_pathname, O_RDONLY | O_BINARY, 0); + if (found_file < 0) + { + xfree (temp_pathname); - /* We try to find the library in various ways. After each attempt - (except for the one above), either found_file >= 0 and - temp_pathname is a malloc'd string, or found_file < 0 and - temp_pathname does not point to storage that needs to be - freed. */ + /* If the search in gdb_sysroot still failed, try fully + stripping the drive spec, and trying once more in the + sysroot before giving up. - if (found_file < 0) - temp_pathname = NULL; - else - temp_pathname = xstrdup (temp_pathname); + c:/foo/bar.dll ==> /sysroot/foo/bar.dll. */ + + temp_pathname = concat (sysroot, + need_dir_separator ? SLASH_STRING : "", + in_pathname + 2, (char *) NULL); + + found_file = open (temp_pathname, O_RDONLY | O_BINARY, 0); + if (found_file < 0) + xfree (temp_pathname); + } + } + + do_cleanups (old_chain); + + /* We try to find the library in various ways. After each attempt, + either found_file >= 0 and temp_pathname is a malloc'd string, or + found_file < 0 and temp_pathname does not point to storage that + needs to be freed. */ + + if (found_file < 0) + temp_pathname = NULL; + + /* If not found, search the solib_search_path (if any). */ + if (found_file < 0 && solib_search_path != NULL) + found_file = openp (solib_search_path, OPF_TRY_CWD_FIRST, + in_pathname, O_RDONLY | O_BINARY, &temp_pathname); /* If the search in gdb_sysroot failed, and the path name is absolute at this point, make it relative. (openp will try and open the file according to its absolute path otherwise, which is not what we want.) Affects subsequent searches for this solib. */ - if (found_file < 0 && IS_ABSOLUTE_PATH (in_pathname)) + if (found_file < 0 && IS_TARGET_ABSOLUTE_PATH (fskind, in_pathname)) { /* First, get rid of any drive letters etc. */ - while (!IS_DIR_SEPARATOR (*in_pathname)) - in_pathname++; + while (!IS_TARGET_DIR_SEPARATOR (fskind, *in_pathname)) + in_pathname++; /* Next, get rid of all leading dir separators. */ - while (IS_DIR_SEPARATOR (*in_pathname)) - in_pathname++; + while (IS_TARGET_DIR_SEPARATOR (fskind, *in_pathname)) + in_pathname++; } - + /* If not found, search the solib_search_path (if any). */ if (found_file < 0 && solib_search_path != NULL) found_file = openp (solib_search_path, OPF_TRY_CWD_FIRST, in_pathname, O_RDONLY | O_BINARY, &temp_pathname); - + /* If not found, next search the solib_search_path (if any) for the basename only (ignoring the path). This is to allow reading solibs from a path that differs from the opened path. */ if (found_file < 0 && solib_search_path != NULL) found_file = openp (solib_search_path, OPF_TRY_CWD_FIRST, - lbasename (in_pathname), O_RDONLY | O_BINARY, - &temp_pathname); + target_lbasename (fskind, in_pathname), + O_RDONLY | O_BINARY, &temp_pathname); /* If not found, try to use target supplied solib search method */ if (found_file < 0 && ops->find_and_open_solib) @@ -228,14 +352,16 @@ solib_find (char *in_pathname, int *fd) /* If not found, next search the inferior's $PATH environment variable. */ if (found_file < 0 && gdb_sysroot_is_empty) - found_file = openp (get_in_environ (inferior_environ, "PATH"), + found_file = openp (get_in_environ (current_inferior ()->environment, + "PATH"), OPF_TRY_CWD_FIRST, in_pathname, O_RDONLY | O_BINARY, &temp_pathname); - /* If not found, next search the inferior's $LD_LIBRARY_PATH + /* If not found, next search the inferior's $LD_LIBRARY_PATH environment variable. */ if (found_file < 0 && gdb_sysroot_is_empty) - found_file = openp (get_in_environ (inferior_environ, "LD_LIBRARY_PATH"), + found_file = openp (get_in_environ (current_inferior ()->environment, + "LD_LIBRARY_PATH"), OPF_TRY_CWD_FIRST, in_pathname, O_RDONLY | O_BINARY, &temp_pathname); @@ -294,7 +420,14 @@ solib_bfd_open (char *pathname) /* Search for shared library file. */ found_pathname = solib_find (pathname, &found_file); if (found_pathname == NULL) - perror_with_name (pathname); + { + /* Return failure if the file could not be found, so that we can + accumulate messages about missing libraries. */ + if (errno == ENOENT) + return NULL; + + perror_with_name (pathname); + } /* Open bfd for shared library. */ abfd = solib_bfd_fopen (found_pathname, found_file); @@ -347,9 +480,8 @@ solib_bfd_open (char *pathname) */ static int -solib_map_sections (void *arg) +solib_map_sections (struct so_list *so) { - struct so_list *so = (struct so_list *) arg; /* catch_errors bogon */ struct target_so_ops *ops = solib_ops (target_gdbarch); char *filename; struct target_section *p; @@ -361,6 +493,9 @@ solib_map_sections (void *arg) abfd = ops->bfd_open (filename); do_cleanups (old_chain); + if (abfd == NULL) + return 0; + /* Leave bfd open, core_xfer_memory and "info files" need it. */ so->abfd = gdb_bfd_ref (abfd); @@ -394,7 +529,44 @@ solib_map_sections (void *arg) } } - return (1); + /* Add the shared object's sections to the current set of file + section tables. Do this immediately after mapping the object so + that later nodes in the list can query this object, as is needed + in solib-osf.c. */ + add_target_sections (so->sections, so->sections_end); + + return 1; +} + +/* Free symbol-file related contents of SO. If we have opened a BFD + for SO, close it. If we have placed SO's sections in some target's + section table, the caller is responsible for removing them. + + This function doesn't mess with objfiles at all. If there is an + objfile associated with SO that needs to be removed, the caller is + responsible for taking care of that. */ + +static void +free_so_symbols (struct so_list *so) +{ + if (so->sections) + { + xfree (so->sections); + so->sections = so->sections_end = NULL; + } + + gdb_bfd_unref (so->abfd); + so->abfd = NULL; + + /* Our caller closed the objfile, possibly via objfile_purge_solibs. */ + so->symbols_loaded = 0; + so->objfile = NULL; + + so->addr_low = so->addr_high = 0; + + /* Restore the target-supplied file name. SO_NAME may be the path + of the symbol file. */ + strcpy (so->so_name, so->so_original_name); } /* LOCAL FUNCTION @@ -423,11 +595,7 @@ free_so (struct so_list *so) { struct target_so_ops *ops = solib_ops (target_gdbarch); - if (so->sections) - xfree (so->sections); - - gdb_bfd_unref (so->abfd); - + free_so_symbols (so); ops->free_so (so); xfree (so); @@ -441,27 +609,6 @@ master_so_list (void) return so_list_head; } -static void -symbol_add_stub (struct so_list *so, int flags) -{ - struct section_addr_info *sap; - - /* Have we already loaded this shared object? */ - ALL_OBJFILES (so->objfile) - { - if (strcmp (so->objfile->name, so->so_name) == 0) - return; - } - - sap = build_section_addr_info_from_section_table (so->sections, - so->sections_end); - - so->objfile = symbol_file_add_from_bfd (so->abfd, flags, sap, OBJF_SHARED); - free_section_addr_info (sap); - - return; -} - /* Read in symbols for shared object SO. If SYMFILE_VERBOSE is set in FLAGS, be chatty about it. Return non-zero if any symbols were actually loaded. */ @@ -473,30 +620,50 @@ solib_read_symbols (struct so_list *so, int flags) if (so->symbols_loaded) { - if (from_tty || info_verbose) - printf_unfiltered (_("Symbols already loaded for %s\n"), so->so_name); + /* If needed, we've already warned in our caller. */ } else if (so->abfd == NULL) { - if (from_tty || info_verbose) - printf_unfiltered (_("Symbol file not found for %s\n"), so->so_name); + /* We've already warned about this library, when trying to open + it. */ } else { - volatile struct gdb_exception exception; - TRY_CATCH (exception, RETURN_MASK_ALL) - { - symbol_add_stub (so, flags); - } - if (exception.reason != 0) - { - exception_fprintf (gdb_stderr, exception, - "Error while reading shared library symbols:\n"); - return 0; - } - if (from_tty || info_verbose) - printf_unfiltered (_("Loaded symbols for %s\n"), so->so_name); - so->symbols_loaded = 1; + volatile struct gdb_exception e; + + TRY_CATCH (e, RETURN_MASK_ERROR) + { + struct section_addr_info *sap; + + /* Have we already loaded this shared object? */ + ALL_OBJFILES (so->objfile) + { + if (strcmp (so->objfile->name, so->so_name) == 0) + break; + } + if (so->objfile != NULL) + break; + + sap = build_section_addr_info_from_section_table (so->sections, + so->sections_end); + so->objfile = symbol_file_add_from_bfd (so->abfd, + flags, sap, OBJF_SHARED); + free_section_addr_info (sap); + } + + if (e.reason < 0) + { + if (from_tty) + exception_fprintf + (gdb_stderr, e, + _("Error while reading shared library symbols:\n")); + } + else + { + if (from_tty || info_verbose) + printf_unfiltered (_("Loaded symbols for %s\n"), so->so_name); + so->symbols_loaded = 1; + } return 1; } @@ -642,6 +809,9 @@ update_solib_list (int from_tty, struct target_ops *target) to GDB's shared object list. */ if (inferior) { + int not_found = 0; + const char *not_found_filename = NULL; + struct so_list *i; /* Add the new shared objects to GDB's list. */ @@ -650,23 +820,48 @@ update_solib_list (int from_tty, struct target_ops *target) /* Fill in the rest of each of the `struct so_list' nodes. */ for (i = inferior; i; i = i->next) { - i->from_tty = from_tty; + volatile struct gdb_exception e; + + i->pspace = current_program_space; - /* Fill in the rest of the `struct so_list' node. */ - catch_errors (solib_map_sections, i, - "Error while mapping shared library sections:\n", - RETURN_MASK_ALL); + TRY_CATCH (e, RETURN_MASK_ERROR) + { + /* Fill in the rest of the `struct so_list' node. */ + if (!solib_map_sections (i)) + { + not_found++; + if (not_found_filename == NULL) + not_found_filename = i->so_original_name; + } + } - /* Add the shared object's sections to the current set of - file section tables. Do this immediately after mapping - the object so that later nodes in the list can query this - object, as is needed in solib-osf.c. */ - add_target_sections (i->sections, i->sections_end); + if (e.reason < 0) + exception_fprintf (gdb_stderr, e, _("\ +Error while mapping shared library sections:\n")); /* Notify any observer that the shared object has been - loaded now that we've added it to GDB's tables. */ + loaded now that we've added it to GDB's tables. */ observer_notify_solib_loaded (i); } + + /* If a library was not found, issue an appropriate warning + message. We have to use a single call to warning in case the + front end does something special with warnings, e.g., pop up + a dialog box. It Would Be Nice if we could get a "warning: " + prefix on each line in the CLI front end, though - it doesn't + stand out well. */ + + if (not_found == 1) + warning (_("\ +Could not load shared library symbols for %s.\n\ +Do you need \"set solib-search-path\" or \"set sysroot\"?"), + not_found_filename); + else if (not_found > 1) + warning (_("\ +Could not load shared library symbols for %d libraries, e.g. %s.\n\ +Use the \"info sharedlibrary\" command to see the complete listing.\n\ +Do you need \"set solib-search-path\" or \"set sysroot\"?"), + not_found, not_found_filename); } } @@ -747,8 +942,19 @@ solib_add (char *pattern, int from_tty, struct target_ops *target, int readsyms) (readsyms || libpthread_solib_p (gdb)); any_matches = 1; - if (add_this_solib && solib_read_symbols (gdb, flags)) - loaded_any_symbols = 1; + if (add_this_solib) + { + if (gdb->symbols_loaded) + { + /* If no pattern was given, be quiet for shared + libraries we have already loaded. */ + if (pattern && (from_tty || info_verbose)) + printf_unfiltered (_("Symbols already loaded for %s\n"), + gdb->so_name); + } + else if (solib_read_symbols (gdb, flags)) + loaded_any_symbols = 1; + } } if (loaded_any_symbols) @@ -793,7 +999,6 @@ static void info_sharedlibrary_command (char *pattern, int from_tty) { struct so_list *so = NULL; /* link map state variable */ - int header_done = 0; int so_missing_debug_info = 0; int addr_width; int nr_libs; @@ -863,8 +1068,7 @@ info_sharedlibrary_command (char *pattern, int from_tty) if (! ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())) && so->symbols_loaded - && !objfile_has_partial_symbols (so->objfile) - && !objfile_has_full_symbols (so->objfile)) + && !objfile_has_symbols (so->objfile)) { so_missing_debug_info = 1; ui_out_field_string (uiout, "syms-read", "Yes (*)"); @@ -937,17 +1141,34 @@ solib_contains_address_p (const struct so_list *const solib, */ char * -solib_name_from_address (CORE_ADDR address) +solib_name_from_address (struct program_space *pspace, CORE_ADDR address) { - struct so_list *so = 0; /* link map state variable */ + struct so_list *so = NULL; - for (so = so_list_head; so; so = so->next) + for (so = pspace->so_list; so; so = so->next) if (solib_contains_address_p (so, address)) return (so->so_name); return (0); } +/* Return whether the data starting at VADDR, size SIZE, must be kept + in a core file for shared libraries loaded before "gcore" is used + to be handled correctly when the core file is loaded. This only + applies when the section would otherwise not be kept in the core + file (in particular, for readonly sections). */ + +int +solib_keep_data_in_core (CORE_ADDR vaddr, unsigned long size) +{ + struct target_so_ops *ops = solib_ops (target_gdbarch); + + if (ops->keep_data_in_core) + return ops->keep_data_in_core (vaddr, size); + else + return 0; +} + /* Called by free_all_symtabs */ void @@ -982,6 +1203,7 @@ clear_solib (void) while (so_list_head) { struct so_list *so = so_list_head; + so_list_head = so->next; observer_notify_solib_unloaded (so); if (so->abfd) @@ -998,7 +1220,7 @@ clear_solib (void) SYNOPSIS - void solib_create_inferior_hook () + void solib_create_inferior_hook (int from_tty) DESCRIPTION @@ -1008,10 +1230,11 @@ clear_solib (void) SOLIB_CREATE_INFERIOR_HOOK. */ void -solib_create_inferior_hook (void) +solib_create_inferior_hook (int from_tty) { struct target_so_ops *ops = solib_ops (target_gdbarch); - ops->solib_create_inferior_hook(); + + ops->solib_create_inferior_hook (from_tty); } /* GLOBAL FUNCTION @@ -1034,6 +1257,7 @@ int in_solib_dynsym_resolve_code (CORE_ADDR pc) { struct target_so_ops *ops = solib_ops (target_gdbarch); + return ops->in_dynsym_resolve_code (pc); } @@ -1082,12 +1306,76 @@ no_shared_libraries (char *ignored, int from_tty) objfile_purge_solibs (); } +/* Reload shared libraries, but avoid reloading the same symbol file + we already have loaded. */ + +static void +reload_shared_libraries_1 (int from_tty) +{ + struct so_list *so; + struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); + + for (so = so_list_head; so != NULL; so = so->next) + { + char *filename, *found_pathname = NULL; + bfd *abfd; + int was_loaded = so->symbols_loaded; + const int flags = + SYMFILE_DEFER_BP_RESET | (from_tty ? SYMFILE_VERBOSE : 0); + + filename = tilde_expand (so->so_original_name); + abfd = solib_bfd_open (filename); + if (abfd != NULL) + { + found_pathname = xstrdup (bfd_get_filename (abfd)); + make_cleanup (xfree, found_pathname); + gdb_bfd_close_or_warn (abfd); + } + + /* If this shared library is no longer associated with its previous + symbol file, close that. */ + if ((found_pathname == NULL && was_loaded) + || (found_pathname != NULL + && strcmp (found_pathname, so->so_name) != 0)) + { + if (so->objfile && ! (so->objfile->flags & OBJF_USERLOADED)) + free_objfile (so->objfile); + remove_target_sections (so->abfd); + free_so_symbols (so); + } + + /* If this shared library is now associated with a new symbol + file, open it. */ + if (found_pathname != NULL + && (!was_loaded + || strcmp (found_pathname, so->so_name) != 0)) + { + volatile struct gdb_exception e; + + TRY_CATCH (e, RETURN_MASK_ERROR) + solib_map_sections (so); + + if (e.reason < 0) + exception_fprintf (gdb_stderr, e, _("\ +Error while mapping shared library sections:\n")); + else if (auto_solib_add || was_loaded || libpthread_solib_p (so)) + solib_read_symbols (so, flags); + } + } + + do_cleanups (old_chain); +} + static void reload_shared_libraries (char *ignored, int from_tty, struct cmd_list_element *e) { - no_shared_libraries (NULL, from_tty); - solib_add (NULL, from_tty, NULL, auto_solib_add); + struct target_so_ops *ops; + + reload_shared_libraries_1 (from_tty); + + ops = solib_ops (target_gdbarch); + /* Creating inferior hooks here has two purposes. First, if we reload shared libraries then the address of solib breakpoint we've computed previously might be no longer valid. For example, if we forgot to set @@ -1099,17 +1387,41 @@ reload_shared_libraries (char *ignored, int from_tty, about ld.so. */ if (target_has_execution) { + /* Reset or free private data structures not associated with + so_list entries. */ + ops->clear_solib (); + + /* Remove any previous solib event breakpoint. This is usually + done in common code, at breakpoint_init_inferior time, but + we're not really starting up the inferior here. */ + remove_solib_event_breakpoints (); + #ifdef SOLIB_CREATE_INFERIOR_HOOK SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid)); #else - solib_create_inferior_hook (); + solib_create_inferior_hook (from_tty); #endif } - /* We have unloaded and then reloaded debug info for all shared libraries. - However, frames may still reference them, for example a frame's - unwinder might still point of DWARF FDE structures that are now freed. - Reinit frame cache to avoid crashing. */ + + /* Sometimes the platform-specific hook loads initial shared + libraries, and sometimes it doesn't. If it doesn't FROM_TTY will be + incorrectly 0 but such solib targets should be fixed anyway. If we + made all the inferior hook methods consistent, this call could be + removed. Call it only after the solib target has been initialized by + solib_create_inferior_hook. */ + + solib_add (NULL, 0, NULL, auto_solib_add); + + breakpoint_re_set (); + + /* We may have loaded or unloaded debug info for some (or all) + shared libraries. However, frames may still reference them. For + example, a frame's unwinder might still point at DWARF FDE + structures that are now freed. Also, getting new symbols may + change our opinion about what is frameless. */ reinit_frame_cache (); + + ops->special_symbol_handling (); } static void @@ -1127,13 +1439,12 @@ show_auto_solib_add (struct ui_file *file, int from_tty, struct symbol * solib_global_lookup (const struct objfile *objfile, const char *name, - const char *linkage_name, const domain_enum domain) { struct target_so_ops *ops = solib_ops (target_gdbarch); if (ops->lookup_lib_global_symbol != NULL) - return ops->lookup_lib_global_symbol (objfile, name, linkage_name, domain); + return ops->lookup_lib_global_symbol (objfile, name, domain); return NULL; } @@ -1143,8 +1454,6 @@ extern initialize_file_ftype _initialize_solib; /* -Wmissing-prototypes */ void _initialize_solib (void) { - struct cmd_list_element *c; - solib_data = gdbarch_data_register_pre_init (solib_init); add_com ("sharedlibrary", class_files, sharedlibrary_command, diff --git a/contrib/gdb-7/gdb/solib.h b/contrib/gdb-7/gdb/solib.h index ccc5b6358b..03a4b08b26 100644 --- a/contrib/gdb-7/gdb/solib.h +++ b/contrib/gdb-7/gdb/solib.h @@ -1,7 +1,7 @@ /* Shared library declarations for GDB, the GNU Debugger. Copyright (C) 1992, 1993, 1995, 1998, 1999, 2000, 2001, 2003, 2005, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -25,6 +25,7 @@ struct so_list; struct target_ops; struct target_so_ops; +struct program_space; /* Called when we free all symtabs, to free the shared library information as well. */ @@ -41,16 +42,24 @@ extern int solib_read_symbols (struct so_list *, int); addresses to which they are linked, and sufficient information to read in their symbols at a later time. */ -extern void solib_create_inferior_hook (void); +extern void solib_create_inferior_hook (int from_tty); /* If ADDR lies in a shared library, return its name. */ -extern char *solib_name_from_address (CORE_ADDR); +extern char *solib_name_from_address (struct program_space *, CORE_ADDR); /* Return 1 if ADDR lies within SOLIB. */ extern int solib_contains_address_p (const struct so_list *, CORE_ADDR); +/* Return whether the data starting at VADDR, size SIZE, must be kept + in a core file for shared libraries loaded before "gcore" is used + to be handled correctly when the core file is loaded. This only + applies when the section would otherwise not be kept in the core + file (in particular, for readonly sections). */ + +extern int solib_keep_data_in_core (CORE_ADDR vaddr, unsigned long size); + /* Return 1 if PC lies in the dynamic symbol resolution code of the run time loader. */ diff --git a/contrib/gdb-7/gdb/solist.h b/contrib/gdb-7/gdb/solist.h index 63a6ba0541..bcba0ad65b 100644 --- a/contrib/gdb-7/gdb/solist.h +++ b/contrib/gdb-7/gdb/solist.h @@ -1,6 +1,6 @@ /* Shared library declarations for GDB, the GNU Debugger. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, - 2001, 2007, 2008, 2009 Free Software Foundation, Inc. + 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -52,6 +52,9 @@ struct so_list /* shared object file name, expanded to something GDB can open */ char so_name[SO_NAME_MAX_PATH_SIZE]; + /* Program space this shared library belongs to. */ + struct program_space *pspace; + /* The following fields of the structure are built from information gathered from the shared object file itself, and are set when we actually add it to our symbol tables. @@ -60,8 +63,12 @@ struct so_list bfd *abfd; char symbols_loaded; /* flag: symbols read in yet? */ - char from_tty; /* flag: print msgs? */ - struct objfile *objfile; /* objfile for loaded lib */ + + /* objfile with symbols for a loaded library. Target memory is read from + ABFD. OBJFILE may be NULL either before symbols have been loaded, if + the file cannot be found or after the command "nosharedlibrary". */ + struct objfile *objfile; + struct target_section *sections; struct target_section *sections_end; @@ -87,7 +94,7 @@ struct target_so_ops void (*clear_solib) (void); /* Target dependent code to run after child process fork. */ - void (*solib_create_inferior_hook) (void); + void (*solib_create_inferior_hook) (int from_tty); /* Do additional symbol handling, lookup, etc. after symbols for a shared object have been loaded. */ @@ -114,7 +121,6 @@ struct target_so_ops /* Hook for looking up global symbols in a library-specific way. */ struct symbol * (*lookup_lib_global_symbol) (const struct objfile *objfile, const char *name, - const char *linkage_name, const domain_enum domain); /* Given two so_list objects, one from the GDB thread list @@ -123,6 +129,14 @@ struct target_so_ops Falls back to using strcmp on so_original_name field when set to NULL. */ int (*same) (struct so_list *gdb, struct so_list *inferior); + + /* Return whether a region of memory must be kept in a core file + for shared libraries loaded before "gcore" is used to be + handled correctly when the core file is loaded. This only + applies when the section would otherwise not be kept in the + core file (in particular, for readonly sections). */ + int (*keep_data_in_core) (CORE_ADDR vaddr, + unsigned long size); }; /* Free the memory associated with a (so_list *). */ @@ -146,7 +160,6 @@ extern struct target_so_ops *current_target_so_ops; /* Handler for library-specific global symbol lookup in solib.c. */ struct symbol *solib_global_lookup (const struct objfile *objfile, const char *name, - const char *linkage_name, const domain_enum domain); #endif diff --git a/contrib/gdb-7/gdb/source.c b/contrib/gdb-7/gdb/source.c index 7a2829bf77..3e896726a0 100644 --- a/contrib/gdb-7/gdb/source.c +++ b/contrib/gdb-7/gdb/source.c @@ -1,7 +1,7 @@ /* List lines of source files for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -46,6 +46,8 @@ #include "ui-out.h" #include "readline/readline.h" +#include "psymtab.h" + #define OPEN_MODE (O_RDONLY | O_BINARY) #define FDOPEN_MODE FOPEN_RB @@ -92,6 +94,8 @@ static struct symtab *current_source_symtab; static int current_source_line; +static struct program_space *current_source_pspace; + /* Default number of lines to print with commands like "list". This is based on guessing how many long (i.e. more than chars_per_line characters) lines there will be. To be completely correct, "list" @@ -152,6 +156,7 @@ get_current_source_symtab_and_line (void) { struct symtab_and_line cursal = { 0 }; + cursal.pspace = current_source_pspace; cursal.symtab = current_source_symtab; cursal.line = current_source_line; cursal.pc = 0; @@ -171,8 +176,6 @@ get_current_source_symtab_and_line (void) void set_default_source_symtab_and_line (void) { - struct symtab_and_line cursal; - if (!have_full_symbols () && !have_partial_symbols ()) error (_("No symbol table is loaded. Use the \"file\" command.")); @@ -190,15 +193,17 @@ struct symtab_and_line set_current_source_symtab_and_line (const struct symtab_and_line *sal) { struct symtab_and_line cursal = { 0 }; - + + cursal.pspace = current_source_pspace; cursal.symtab = current_source_symtab; cursal.line = current_source_line; + cursal.pc = 0; + cursal.end = 0; + current_source_pspace = sal->pspace; current_source_symtab = sal->symtab; current_source_line = sal->line; - cursal.pc = 0; - cursal.end = 0; - + return cursal; } @@ -224,14 +229,13 @@ select_source_symtab (struct symtab *s) { struct symtabs_and_lines sals; struct symtab_and_line sal; - struct partial_symtab *ps; - struct partial_symtab *cs_pst = 0; struct objfile *ofp; if (s) { current_source_symtab = s; current_source_line = 1; + current_source_pspace = SYMTAB_PSPACE (s); return; } @@ -245,6 +249,7 @@ select_source_symtab (struct symtab *s) sals = decode_line_spec (main_name (), 1); sal = sals.sals[0]; xfree (sals.sals); + current_source_pspace = sal.pspace; current_source_symtab = sal.symtab; current_source_line = max (sal.line - (lines_to_list - 1), 1); if (current_source_symtab) @@ -256,46 +261,32 @@ select_source_symtab (struct symtab *s) current_source_line = 1; - for (ofp = object_files; ofp != NULL; ofp = ofp->next) + ALL_OBJFILES (ofp) { for (s = ofp->symtabs; s; s = s->next) { const char *name = s->filename; int len = strlen (name); + if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0 || strcmp (name, "<>") == 0))) - current_source_symtab = s; + { + current_source_pspace = current_program_space; + current_source_symtab = s; + } } } + if (current_source_symtab) return; - /* How about the partial symbol tables? */ - - for (ofp = object_files; ofp != NULL; ofp = ofp->next) - { - for (ps = ofp->psymtabs; ps != NULL; ps = ps->next) - { - const char *name = ps->filename; - int len = strlen (name); - if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0 - || strcmp (name, "<>") == 0))) - cs_pst = ps; - } - } - if (cs_pst) - { - if (cs_pst->readin) - { - internal_error (__FILE__, __LINE__, - _("select_source_symtab: " - "readin pst found and no symtabs.")); - } - else - { - current_source_symtab = PSYMTAB_TO_SYMTAB (cs_pst); - } - } + ALL_OBJFILES (ofp) + { + if (ofp->sf) + s = ofp->sf->qf->find_last_source_symtab (ofp); + if (s) + current_source_symtab = s; + } if (current_source_symtab) return; @@ -317,11 +308,12 @@ show_directories (char *ignore, int from_tty) void forget_cached_source_info (void) { + struct program_space *pspace; struct symtab *s; struct objfile *objfile; - struct partial_symtab *pst; - for (objfile = object_files; objfile != NULL; objfile = objfile->next) + ALL_PSPACES (pspace) + ALL_PSPACE_OBJFILES (pspace, objfile) { for (s = objfile->symtabs; s != NULL; s = s->next) { @@ -337,14 +329,8 @@ forget_cached_source_info (void) } } - ALL_OBJFILE_PSYMTABS (objfile, pst) - { - if (pst->fullname != NULL) - { - xfree (pst->fullname); - pst->fullname = NULL; - } - } + if (objfile->sf) + objfile->sf->qf->forget_cached_source_info (objfile); } last_source_visited = NULL; @@ -534,6 +520,7 @@ add_path (char *dirname, char **which_path, int parse_separators) if (stat (name, &st) < 0) { int save_errno = errno; + fprintf_unfiltered (gdb_stderr, "Warning: "); print_sys_errmsg (name, save_errno); } @@ -693,6 +680,20 @@ openp (const char *path, int opts, const char *string, /* The open syscall MODE parameter is not specified. */ gdb_assert ((mode & O_CREAT) == 0); + gdb_assert (string != NULL); + + /* A file with an empty name cannot possibly exist. Report a failure + without further checking. + + This is an optimization which also defends us against buggy + implementations of the "stat" function. For instance, we have + noticed that a MinGW debugger built on Windows XP 32bits crashes + when the debugger is started with an empty argument. */ + if (string[0] == '\0') + { + errno = ENOENT; + return -1; + } if (!path) path = "."; @@ -723,6 +724,10 @@ openp (const char *path, int opts, const char *string, goto done; } + /* For dos paths, d:/foo -> /foo, and d:foo -> foo. */ + if (HAS_DRIVE_SPEC (string)) + string = STRIP_DRIVE_SPEC (string); + /* /foo => foo, to avoid multiple slashes that Emacs doesn't like. */ while (IS_DIR_SEPARATOR(string[0])) string++; @@ -763,6 +768,16 @@ openp (const char *path, int opts, const char *string, /* Normal file name in path -- just use it. */ strncpy (filename, p, len); filename[len] = 0; + + /* Don't search $cdir. It's also a magic path like $cwd, but we + don't have enough information to expand it. The user *could* + have an actual directory named '$cdir' but handling that would + be confusing, it would mean different things in different + contexts. If the user really has '$cdir' one can use './$cdir'. + We can get $cdir when loading scripts. When loading source files + $cdir must have already been expanded to the correct value. */ + if (strcmp (filename, "$cdir") == 0) + continue; } /* Remove trailing slashes */ @@ -800,6 +815,7 @@ done: IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1]) ? "" : SLASH_STRING, filename, (char *)NULL); + *filename_opened = xfullpath (f); xfree (f); } @@ -936,7 +952,7 @@ rewrite_source_path (const char *path) An invalid file descriptor is returned. ( the return value is negative ) FULLNAME is set to NULL. */ -static int +int find_and_open_source (const char *filename, const char *dirname, char **fullname) @@ -1066,34 +1082,6 @@ symtab_to_fullname (struct symtab *s) return NULL; } - -/* Finds the fullname that a partial_symtab represents. - - If this functions finds the fullname, it will save it in ps->fullname - and it will also return the value. - - If this function fails to find the file that this partial_symtab represents, - NULL will be returned and ps->fullname will be set to NULL. */ -char * -psymtab_to_fullname (struct partial_symtab *ps) -{ - int r; - - if (!ps) - return NULL; - - /* Don't check ps->fullname here, the file could have been - deleted/moved/..., look for it again */ - r = find_and_open_source (ps->filename, ps->dirname, &ps->fullname); - - if (r >= 0) - { - close (r); - return ps->fullname; - } - - return NULL; -} /* Create and initialize the table S->line_charpos that records the positions of the lines in the source file, which is assumed @@ -1305,6 +1293,7 @@ print_source_lines_base (struct symtab *s, int line, int stopline, int noerror) { int c; int desc; + int noprint = 0; FILE *stream; int nlines = stopline - line; struct cleanup *cleanup; @@ -1331,11 +1320,12 @@ print_source_lines_base (struct symtab *s, int line, int stopline, int noerror) } else { - desc = -1; + desc = last_source_error; noerror = 1; + noprint = 1; } - if (desc < 0) + if (desc < 0 || noprint) { last_source_error = desc; @@ -1887,7 +1877,6 @@ unset_substitute_path_command (char *args, int from_tty) static void set_substitute_path_command (char *args, int from_tty) { - char *from_path, *to_path; char **argv; struct substitute_path_rule *rule; @@ -1926,6 +1915,7 @@ void _initialize_source (void) { struct cmd_list_element *c; + current_source_symtab = 0; init_source_path (); @@ -1987,6 +1977,7 @@ The matching line number is also stored as the value of \"$_\".")); add_com ("reverse-search", class_files, reverse_search_command, _("\ Search backward for regular expression (see regex(3)) from last line listed.\n\ The matching line number is also stored as the value of \"$_\".")); + add_com_alias ("rev", "reverse-search", class_files, 1); if (xdb_commands) { diff --git a/contrib/gdb-7/gdb/source.h b/contrib/gdb-7/gdb/source.h index 72271fef80..7b755c6b52 100644 --- a/contrib/gdb-7/gdb/source.h +++ b/contrib/gdb-7/gdb/source.h @@ -1,5 +1,5 @@ /* List lines of source files for GDB, the GNU debugger. - Copyright (C) 1999, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -25,7 +25,6 @@ struct symtab; negative number for error. */ extern int open_source_file (struct symtab *s); -extern char* psymtab_to_fullname (struct partial_symtab *ps); extern char* symtab_to_fullname (struct symtab *s); /* Create and initialize the table S->line_charpos that records the diff --git a/contrib/gdb-7/gdb/stabsread.c b/contrib/gdb-7/gdb/stabsread.c index e62bb15ad3..b62156cbed 100644 --- a/contrib/gdb-7/gdb/stabsread.c +++ b/contrib/gdb-7/gdb/stabsread.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -352,7 +352,6 @@ patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs, if (stabs) { - /* for all the stab entries, find their corresponding symbols and patch their types! */ @@ -435,6 +434,7 @@ static int read_type_number (char **pp, int *typenums) { int nbits; + if (**pp == '(') { (*pp)++; @@ -508,9 +508,11 @@ ref_add (int refnum, struct symbol *sym, char *stabs, CORE_ADDR value) { int new_slots = ref_count - ref_chunk * MAX_CHUNK_REFS; int new_chunks = new_slots / MAX_CHUNK_REFS + 1; + ref_map = (struct ref_map *) xrealloc (ref_map, REF_MAP_SIZE (ref_chunk + new_chunks)); - memset (ref_map + ref_chunk * MAX_CHUNK_REFS, 0, new_chunks * REF_CHUNK_SIZE); + memset (ref_map + ref_chunk * MAX_CHUNK_REFS, 0, + new_chunks * REF_CHUNK_SIZE); ref_chunk += new_chunks; } ref_map[refnum].stabs = stabs; @@ -673,18 +675,14 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, switch (string[1]) { case 't': - SYMBOL_SET_LINKAGE_NAME - (sym, obsavestring ("this", strlen ("this"), - &objfile->objfile_obstack)); + SYMBOL_SET_LINKAGE_NAME (sym, "this"); break; case 'v': /* $vtbl_ptr_type */ goto normal; case 'e': - SYMBOL_SET_LINKAGE_NAME - (sym, obsavestring ("eh_throw", strlen ("eh_throw"), - &objfile->objfile_obstack)); + SYMBOL_SET_LINKAGE_NAME (sym, "eh_throw"); break; case '_': @@ -710,6 +708,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, if (SYMBOL_LANGUAGE (sym) == language_cplus) { char *name = alloca (p - string + 1); + memcpy (name, string, p - string); name[p - string] = '\0'; new_name = cp_canonicalize_string (name); @@ -717,11 +716,11 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, } if (new_name != NULL) { - SYMBOL_SET_NAMES (sym, new_name, strlen (new_name), objfile); + SYMBOL_SET_NAMES (sym, new_name, strlen (new_name), 1, objfile); xfree (new_name); } else - SYMBOL_SET_NAMES (sym, string, p - string, objfile); + SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile); } p++; @@ -797,6 +796,74 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, SYMBOL_CLASS (sym) = LOC_CONST; } break; + + case 'c': + { + SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_char; + SYMBOL_VALUE (sym) = atoi (p); + SYMBOL_CLASS (sym) = LOC_CONST; + } + break; + + case 's': + { + struct type *range_type; + int ind = 0; + char quote = *p++; + gdb_byte *string_local = (gdb_byte *) alloca (strlen (p)); + gdb_byte *string_value; + + if (quote != '\'' && quote != '"') + { + SYMBOL_CLASS (sym) = LOC_CONST; + SYMBOL_TYPE (sym) = error_type (&p, objfile); + SYMBOL_DOMAIN (sym) = VAR_DOMAIN; + add_symbol_to_list (sym, &file_symbols); + return sym; + } + + /* Find matching quote, rejecting escaped quotes. */ + while (*p && *p != quote) + { + if (*p == '\\' && p[1] == quote) + { + string_local[ind] = (gdb_byte) quote; + ind++; + p += 2; + } + else if (*p) + { + string_local[ind] = (gdb_byte) (*p); + ind++; + p++; + } + } + if (*p != quote) + { + SYMBOL_CLASS (sym) = LOC_CONST; + SYMBOL_TYPE (sym) = error_type (&p, objfile); + SYMBOL_DOMAIN (sym) = VAR_DOMAIN; + add_symbol_to_list (sym, &file_symbols); + return sym; + } + + /* NULL terminate the string. */ + string_local[ind] = 0; + range_type = create_range_type (NULL, + objfile_type (objfile)->builtin_int, + 0, ind); + SYMBOL_TYPE (sym) = create_array_type (NULL, + objfile_type (objfile)->builtin_char, + range_type); + string_value = obstack_alloc (&objfile->objfile_obstack, ind + 1); + memcpy (string_value, string_local, ind + 1); + p++; + + SYMBOL_VALUE_BYTES (sym) = string_value; + SYMBOL_CLASS (sym) = LOC_CONST_BYTES; + } + break; + case 'e': /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value can be represented as integral. @@ -1057,6 +1124,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, && gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym))) { struct symbol *prev_sym; + prev_sym = local_symbols->symbol[local_symbols->nsyms - 1]; if ((SYMBOL_CLASS (prev_sym) == LOC_REF_ARG || SYMBOL_CLASS (prev_sym) == LOC_ARG) @@ -1090,11 +1158,13 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, != SYMBOL_LINKAGE_NAME (sym)) { struct minimal_symbol *msym; + msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, objfile); if (msym != NULL) { char *new_name = gdbarch_static_transform_name (gdbarch, SYMBOL_LINKAGE_NAME (sym)); + SYMBOL_SET_LINKAGE_NAME (sym, new_name); SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym); } @@ -1141,6 +1211,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym))) { int j; + for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--) if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0) TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) = @@ -1215,9 +1286,9 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, SYMBOL_VALUE (struct_sym) = valu; SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN; if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0) - TYPE_NAME (SYMBOL_TYPE (sym)) - = obconcat (&objfile->objfile_obstack, "", "", - SYMBOL_LINKAGE_NAME (sym)); + TYPE_NAME (SYMBOL_TYPE (sym)) = obconcat (&objfile->objfile_obstack, + SYMBOL_LINKAGE_NAME (sym), + (char *) NULL); add_symbol_to_list (struct_sym, &file_symbols); } @@ -1242,24 +1313,25 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, SYMBOL_VALUE (sym) = valu; SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN; if (TYPE_TAG_NAME (SYMBOL_TYPE (sym)) == 0) - TYPE_TAG_NAME (SYMBOL_TYPE (sym)) - = obconcat (&objfile->objfile_obstack, "", "", - SYMBOL_LINKAGE_NAME (sym)); + TYPE_TAG_NAME (SYMBOL_TYPE (sym)) = obconcat (&objfile->objfile_obstack, + SYMBOL_LINKAGE_NAME (sym), + (char *) NULL); add_symbol_to_list (sym, &file_symbols); if (synonym) { /* Clone the sym and then modify it. */ struct symbol *typedef_sym = (struct symbol *) - obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); + obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); + *typedef_sym = *sym; SYMBOL_CLASS (typedef_sym) = LOC_TYPEDEF; SYMBOL_VALUE (typedef_sym) = valu; SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN; if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0) - TYPE_NAME (SYMBOL_TYPE (sym)) - = obconcat (&objfile->objfile_obstack, "", "", - SYMBOL_LINKAGE_NAME (sym)); + TYPE_NAME (SYMBOL_TYPE (sym)) = obconcat (&objfile->objfile_obstack, + SYMBOL_LINKAGE_NAME (sym), + (char *) NULL); add_symbol_to_list (typedef_sym, &file_symbols); } break; @@ -1275,11 +1347,14 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, != SYMBOL_LINKAGE_NAME (sym)) { struct minimal_symbol *msym; - msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, objfile); + + msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), + NULL, objfile); if (msym != NULL) { char *new_name = gdbarch_static_transform_name (gdbarch, SYMBOL_LINKAGE_NAME (sym)); + SYMBOL_SET_LINKAGE_NAME (sym, new_name); SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym); } @@ -1516,6 +1591,7 @@ again: if (q1 && p > q1 && p[1] == ':') { int nesting_level = 0; + for (q2 = q1; *q2; q2++) { if (*q2 == '<') @@ -1533,6 +1609,7 @@ again: if (current_subfile->language == language_cplus) { char *new_name, *name = alloca (p - *pp + 1); + memcpy (name, *pp, p - *pp); name[p - *pp] = '\0'; new_name = cp_canonicalize_string (name); @@ -1620,6 +1697,7 @@ again: TYPE_CODE (type) = TYPE_CODE_TYPEDEF; { struct type *xtype = read_type (pp, objfile); + if (type == xtype) { /* It's being defined as itself. That means it is "void". */ @@ -1792,6 +1870,7 @@ again: /* type attribute */ { char *attr = *pp; + /* Skip to the semicolon. */ while (**pp != ';' && **pp != '\0') ++(*pp); @@ -2545,8 +2624,8 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type, make_cleanup (xfree, destr_fnlist); memset (destr_fnlist, 0, sizeof (struct next_fnfieldlist)); destr_fnlist->fn_fieldlist.name - = obconcat (&objfile->objfile_obstack, "", "~", - new_fnlist->fn_fieldlist.name); + = obconcat (&objfile->objfile_obstack, "~", + new_fnlist->fn_fieldlist.name, (char *) NULL); destr_fnlist->fn_fieldlist.fn_fields = (struct fn_field *) obstack_alloc (&objfile->objfile_obstack, @@ -2603,6 +2682,7 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type, { char dem_opname[256]; int ret; + ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name, dem_opname, DMGL_ANSI); if (!ret) @@ -2680,11 +2760,11 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type, case 'f': /* $vf -- a virtual function table pointer */ name = type_name_no_tag (context); if (name == NULL) - { - name = ""; - } - fip->list->field.name = - obconcat (&objfile->objfile_obstack, vptr_name, name, ""); + { + name = ""; + } + fip->list->field.name = obconcat (&objfile->objfile_obstack, + vptr_name, name, (char *) NULL); break; case 'b': /* $vb -- a virtual bsomethingorother */ @@ -2696,15 +2776,15 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type, symnum); name = "FOO"; } - fip->list->field.name = - obconcat (&objfile->objfile_obstack, vb_name, name, ""); + fip->list->field.name = obconcat (&objfile->objfile_obstack, vb_name, + name, (char *) NULL); break; default: invalid_cpp_abbrev_complaint (*pp); - fip->list->field.name = - obconcat (&objfile->objfile_obstack, - "INVALID_CPLUSPLUS_ABBREV", "", ""); + fip->list->field.name = obconcat (&objfile->objfile_obstack, + "INVALID_CPLUSPLUS_ABBREV", + (char *) NULL); break; } @@ -2725,6 +2805,7 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type, { int nbits; + FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits, 0); if (nbits != 0) @@ -2801,6 +2882,7 @@ read_one_struct_field (struct field_info *fip, char **pp, char *p, { int nbits; + FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits, 0); if (nbits != 0) { @@ -3004,6 +3086,7 @@ read_baseclasses (struct field_info *fip, char **pp, struct type *type, ALLOCATE_CPLUS_STRUCT_TYPE (type); { int nbits; + TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits, 0); if (nbits != 0) return 0; @@ -3164,6 +3247,7 @@ read_tilde_fields (struct field_info *fip, char **pp, struct type *type, --i) { char *name = TYPE_FIELD_NAME (t, i); + if (!strncmp (name, vptr_name, sizeof (vptr_name) - 2) && is_cplus_marker (name[sizeof (vptr_name) - 2])) { @@ -3328,6 +3412,42 @@ complain_about_struct_wipeout (struct type *type) _("struct/union type gets multiply defined: %s%s"), kind, name); } +/* Set the length for all variants of a same main_type, which are + connected in the closed chain. + + This is something that needs to be done when a type is defined *after* + some cross references to this type have already been read. Consider + for instance the following scenario where we have the following two + stabs entries: + + .stabs "t:p(0,21)=*(0,22)=k(0,23)=xsdummy:",160,0,28,-24 + .stabs "dummy:T(0,23)=s16x:(0,1),0,3[...]" + + A stubbed version of type dummy is created while processing the first + stabs entry. The length of that type is initially set to zero, since + it is unknown at this point. Also, a "constant" variation of type + "dummy" is created as well (this is the "(0,22)=k(0,23)" section of + the stabs line). + + The second stabs entry allows us to replace the stubbed definition + with the real definition. However, we still need to adjust the length + of the "constant" variation of that type, as its length was left + untouched during the main type replacement... */ + +static void +set_length_in_type_chain (struct type *type) +{ + struct type *ntype = TYPE_CHAIN (type); + + while (ntype != type) + { + if (TYPE_LENGTH(ntype) == 0) + TYPE_LENGTH (ntype) = TYPE_LENGTH (type); + else + complain_about_struct_wipeout (ntype); + ntype = TYPE_CHAIN (ntype); + } +} /* Read the description of a structure (or union type) and return an object describing the type. @@ -3383,9 +3503,11 @@ read_struct_type (char **pp, struct type *type, enum type_code type_code, { int nbits; + TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits, 0); if (nbits != 0) return error_type (pp, objfile); + set_length_in_type_chain (type); } /* Now read the baseclasses, if any, read the regular C struct or C++ @@ -3550,6 +3672,7 @@ read_enum_type (char **pp, struct type *type, /* Now fill in the fields of the type-structure. */ TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT; + set_length_in_type_chain (type); TYPE_CODE (type) = TYPE_CODE_ENUM; TYPE_STUB (type) = 0; if (unsigned_enum) @@ -3571,9 +3694,11 @@ read_enum_type (char **pp, struct type *type, { int last = syms == osyms ? o_nsyms : 0; int j = syms->nsyms; + for (; --j >= last; --n) { struct symbol *xsym = syms->symbol[j]; + SYMBOL_TYPE (xsym) = type; TYPE_FIELD_NAME (type, n) = SYMBOL_LINKAGE_NAME (xsym); TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym); @@ -3758,6 +3883,7 @@ read_huge_number (char **pp, int end, int *bits, int twos_complement_bits) size_t len; char *p1 = p; + while ((c = *p1) >= '0' && c < '8') p1++; @@ -3791,6 +3917,7 @@ read_huge_number (char **pp, int end, int *bits, int twos_complement_bits) if (n == 0) { long sn = c - '0' - ((2 * (c - '0')) | (2 << sign_bit)); + n = -sn; } else @@ -3993,6 +4120,7 @@ read_range_type (char **pp, int typenums[2], int type_size, { struct type *complex_type = init_type (TYPE_CODE_COMPLEX, 2 * n2, 0, NULL, objfile); + TYPE_TARGET_TYPE (complex_type) = float_type; return complex_type; } @@ -4005,6 +4133,7 @@ read_range_type (char **pp, int typenums[2], int type_size, else if (n2 == 0 && n3 == -1) { int bits = type_size; + if (bits <= 0) { /* We don't know its size. It is unsigned int or unsigned @@ -4115,7 +4244,17 @@ read_args (char **pp, int end, struct objfile *objfile, int *nargsp, } (*pp)++; /* get past `end' (the ':' character) */ - if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID) + if (n == 0) + { + /* We should read at least the THIS parameter here. Some broken stabs + output contained `(0,41),(0,42)=@s8;-16;,(0,43),(0,1);' where should + have been present ";-16,(0,43)" reference instead. This way the + excessive ";" marker prematurely stops the parameters parsing. */ + + complaint (&symfile_complaints, _("Invalid (empty) method arguments")); + *varargsp = 0; + } + else if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID) *varargsp = 1; else { @@ -4231,9 +4370,11 @@ static void fix_common_block (struct symbol *sym, int valu) { struct pending *next = (struct pending *) SYMBOL_TYPE (sym); + for (; next; next = next->next) { int j; + for (j = next->nsyms - 1; j >= 0; j--) SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu; } @@ -4636,6 +4777,7 @@ static char * find_name_end (char *name) { char *s = name; + if (s[0] == '-' || *s == '+') { /* Must be an ObjC method symbol. */ diff --git a/contrib/gdb-7/gdb/stabsread.h b/contrib/gdb-7/gdb/stabsread.h index 83458d1e13..d2006a8dc0 100644 --- a/contrib/gdb-7/gdb/stabsread.h +++ b/contrib/gdb-7/gdb/stabsread.h @@ -1,6 +1,6 @@ /* Include file for stabs debugging format support functions. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009 + 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -175,21 +175,18 @@ extern void process_one_symbol (int, int, CORE_ADDR, char *, struct section_offsets *, struct objfile *); extern void elfstab_build_psymtabs (struct objfile *objfile, - int mainline, asection *stabsect, file_ptr stabstroffset, unsigned int stabstrsize); extern void coffstab_build_psymtabs (struct objfile *objfile, - int mainline, CORE_ADDR textaddr, unsigned int textsize, struct stab_section_list *stabs, file_ptr stabstroffset, unsigned int stabstrsize); -extern void stabsect_build_psymtabs - (struct objfile *objfile, - int mainline, char *stab_name, char *stabstr_name, char *text_name); +extern void stabsect_build_psymtabs (struct objfile *objfile, char *stab_name, + char *stabstr_name, char *text_name); extern void elfstab_offset_sections (struct objfile *, struct partial_symtab *); diff --git a/contrib/gdb-7/gdb/stack.c b/contrib/gdb-7/gdb/stack.c index 1c37801f2e..830fd41c7c 100644 --- a/contrib/gdb-7/gdb/stack.c +++ b/contrib/gdb-7/gdb/stack.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -52,6 +52,9 @@ #include #include "gdb_string.h" +#include "psymtab.h" +#include "symfile.h" + void (*deprecated_selected_frame_level_changed_hook) (int); /* The possible choices of "set print frame-arguments, and the value @@ -284,6 +287,7 @@ print_frame_args (struct symbol *func, struct frame_info *frame, if (*SYMBOL_LINKAGE_NAME (sym)) { struct symbol *nsym; + nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym), b, VAR_DOMAIN, NULL); gdb_assert (nsym != NULL); @@ -481,6 +485,7 @@ static void gdb_disassembly_stub (void *args) { struct gdb_disassembly_stub_args *p = args; + gdb_disassembly (p->gdbarch, uiout, 0, DISASSEMBLY_RAW_INSN, p->how_many, p->low, p->high); @@ -620,6 +625,7 @@ print_frame_info (struct frame_info *frame, int print_level, else { struct value_print_options opts; + get_user_print_options (&opts); /* We used to do this earlier, but that is clearly wrong. This function is used by many different @@ -643,12 +649,12 @@ print_frame_info (struct frame_info *frame, int print_level, /* If disassemble-next-line is set to on and there is line debug messages, output assembly codes for next line. */ if (disassemble_next_line == AUTO_BOOLEAN_TRUE) - do_gdb_disassembly (get_frame_arch (frame), -1, - get_frame_pc (frame), sal.end); + do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end); } if (print_what != LOCATION) - set_default_breakpoint (1, get_frame_pc (frame), sal.symtab, sal.line); + set_default_breakpoint (1, sal.pspace, + get_frame_pc (frame), sal.symtab, sal.line); annotate_frame_end (); @@ -717,6 +723,7 @@ find_frame_funname (struct frame_info *frame, char **funname, with DMGL_PARAMS turned on, and here we don't want to display parameters. So remove the parameters. */ char *func_only = cp_remove_params (*funname); + if (func_only) { *funname = func_only; @@ -788,6 +795,7 @@ print_frame (struct frame_info *frame, int print_level, { struct print_args_args args; struct cleanup *args_list_chain; + args.frame = frame; args.func = find_pc_function (get_frame_address_in_block (frame)); args.stream = gdb_stdout; @@ -810,6 +818,7 @@ print_frame (struct frame_info *frame, int print_level, if (ui_out_is_mi_like_p (uiout)) { const char *fullname = symtab_to_fullname (sal.symtab); + if (fullname != NULL) ui_out_field_string (uiout, "fullname", fullname); } @@ -825,7 +834,8 @@ print_frame (struct frame_info *frame, int print_level, #ifdef PC_SOLIB char *lib = PC_SOLIB (get_frame_pc (frame)); #else - char *lib = solib_name_from_address (get_frame_pc (frame)); + char *lib = solib_name_from_address (get_frame_program_space (frame), + get_frame_pc (frame)); #endif if (lib) { @@ -861,9 +871,6 @@ parse_frame_specification_1 (const char *frame_exp, const char *message, numargs = 0; else { - char *addr_string; - struct cleanup *tmp_cleanup; - numargs = 0; while (1) { @@ -917,6 +924,7 @@ parse_frame_specification_1 (const char *frame_exp, const char *message, { struct frame_info *fid; int level = value_as_long (args[0]); + fid = find_relative_frame (get_current_frame (), &level); if (level == 0) /* find_relative_frame was successful */ @@ -926,6 +934,7 @@ parse_frame_specification_1 (const char *frame_exp, const char *message, /* Convert each value into a corresponding address. */ { int i; + for (i = 0; i < numargs; i++) addrs[i] = value_as_address (args[i]); } @@ -990,7 +999,7 @@ frame_info (char *addr_exp, int from_tty) struct symbol *func; struct symtab *s; struct frame_info *calling_frame_info; - int i, count, numregs; + int numregs; char *funname = 0; enum language funlang = language_unknown; const char *pc_regname; @@ -1032,6 +1041,7 @@ frame_info (char *addr_exp, int from_tty) with DMGL_PARAMS turned on, and here we don't want to display parameters. So remove the parameters. */ char *func_only = cp_remove_params (funname); + if (func_only) { funname = func_only; @@ -1193,6 +1203,7 @@ frame_info (char *addr_exp, int from_tty) int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch)); gdb_byte value[MAX_REGISTER_SIZE]; CORE_ADDR sp; + frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch), &optimized, &lval, &addr, &realnum, value); @@ -1310,8 +1321,6 @@ backtrace_command_1 (char *count_exp, int show_locals, int from_tty) if (info_verbose) { - struct partial_symtab *ps; - /* Read in symbols for all of the frames. Need to do this in a separate pass so that "Reading in symbols for xxx" messages don't screw up the appearance of the backtrace. Also if @@ -1320,10 +1329,11 @@ backtrace_command_1 (char *count_exp, int show_locals, int from_tty) i = count; for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi)) { + CORE_ADDR pc; + QUIT; - ps = find_pc_psymtab (get_frame_address_in_block (fi)); - if (ps) - PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in. */ + pc = get_frame_address_in_block (fi); + find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc)); } } @@ -1373,6 +1383,7 @@ static int backtrace_command_stub (void *data) { struct backtrace_command_args *args = data; + backtrace_command_1 (args->count_exp, args->show_locals, args->from_tty); return 0; } @@ -1444,6 +1455,7 @@ static void backtrace_full_command (char *arg, int from_tty) { struct backtrace_command_args btargs; + btargs.count_exp = arg; btargs.show_locals = 1; btargs.from_tty = from_tty; @@ -1451,17 +1463,16 @@ backtrace_full_command (char *arg, int from_tty) } -/* Print the local variables of a block B active in FRAME on STREAM. - Return 1 if any variables were printed; 0 otherwise. */ +/* Iterate over the local variables of a block B, calling CB with + CB_DATA. */ -static int -print_block_frame_locals (struct block *b, struct frame_info *frame, - int num_tabs, struct ui_file *stream) +static void +iterate_over_block_locals (struct block *b, + iterate_over_block_arg_local_vars_cb cb, + void *cb_data) { struct dict_iterator iter; struct symbol *sym; - int values_printed = 0; - int j; ALL_BLOCK_SYMBOLS (b, iter, sym) { @@ -1473,8 +1484,7 @@ print_block_frame_locals (struct block *b, struct frame_info *frame, case LOC_COMPUTED: if (SYMBOL_IS_ARGUMENT (sym)) break; - values_printed = 1; - print_variable_and_value (NULL, sym, frame, stream, 4 * num_tabs); + (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data); break; default: @@ -1482,12 +1492,18 @@ print_block_frame_locals (struct block *b, struct frame_info *frame, break; } } - - return values_printed; } + /* Same, but print labels. */ +#if 0 +/* Commented out, as the code using this function has also been + commented out. FIXME:brobecker/2009-01-13: Find out why the code + was commented out in the first place. The discussion introducing + this change (2007-12-04: Support lexical blocks and function bodies + that occupy non-contiguous address ranges) did not explain why + this change was made. */ static int print_block_frame_labels (struct gdbarch *gdbarch, struct block *b, int *have_default, struct ui_file *stream) @@ -1508,6 +1524,7 @@ print_block_frame_labels (struct gdbarch *gdbarch, struct block *b, { struct symtab_and_line sal; struct value_print_options opts; + sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0); values_printed = 1; fputs_filtered (SYMBOL_PRINT_NAME (sym), stream); @@ -1525,40 +1542,77 @@ print_block_frame_labels (struct gdbarch *gdbarch, struct block *b, return values_printed; } +#endif -/* Print on STREAM all the local variables in frame FRAME, including - all the blocks active in that frame at its current PC. +/* Iterate over all the local variables in block B, including all its + superblocks, stopping when the top-level block is reached. */ - Returns 1 if the job was done, or 0 if nothing was printed because - we have no info on the function running in FRAME. */ +void +iterate_over_block_local_vars (struct block *block, + iterate_over_block_arg_local_vars_cb cb, + void *cb_data) +{ + while (block) + { + iterate_over_block_locals (block, cb, cb_data); + /* After handling the function's top-level block, stop. Don't + continue to its superblock, the block of per-file + symbols. */ + if (BLOCK_FUNCTION (block)) + break; + block = BLOCK_SUPERBLOCK (block); + } +} + +/* Data to be passed around in the calls to the locals and args + iterators. */ + +struct print_variable_and_value_data +{ + struct frame_info *frame; + int num_tabs; + struct ui_file *stream; + int values_printed; +}; + +/* The callback for the locals and args iterators */ + +static void +do_print_variable_and_value (const char *print_name, + struct symbol *sym, + void *cb_data) +{ + struct print_variable_and_value_data *p = cb_data; + + print_variable_and_value (print_name, sym, + p->frame, p->stream, p->num_tabs); + p->values_printed = 1; +} static void print_frame_local_vars (struct frame_info *frame, int num_tabs, struct ui_file *stream) { - struct block *block = get_frame_block (frame, 0); - int values_printed = 0; + struct print_variable_and_value_data cb_data; + struct block *block; + block = get_frame_block (frame, 0); if (block == 0) { fprintf_filtered (stream, "No symbol table info available.\n"); return; } - while (block) - { - if (print_block_frame_locals (block, frame, num_tabs, stream)) - values_printed = 1; - /* After handling the function's top-level block, stop. Don't - continue to its superblock, the block of per-file symbols. - Also do not continue to the containing function of an inlined - function. */ - if (BLOCK_FUNCTION (block)) - break; - block = BLOCK_SUPERBLOCK (block); - } + cb_data.frame = frame; + cb_data.num_tabs = 4 * num_tabs; + cb_data.stream = stream; + cb_data.values_printed = 0; - if (!values_printed) + iterate_over_block_local_vars (block, + do_print_variable_and_value, + &cb_data); + + if (!cb_data.values_printed) fprintf_filtered (stream, _("No locals.\n")); } @@ -1648,36 +1702,28 @@ locals_info (char *args, int from_tty) static void catch_info (char *ignore, int from_tty) { - struct symtab_and_line *sal; - /* Assume g++ compiled code; old GDB 4.16 behaviour. */ print_frame_label_vars (get_selected_frame (_("No frame selected.")), 0, gdb_stdout); } -static void -print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream) +/* Iterate over all the argument variables in block B. + + Returns 1 if any argument was walked; 0 otherwise. */ + +void +iterate_over_block_arg_vars (struct block *b, + iterate_over_block_arg_local_vars_cb cb, + void *cb_data) { - struct symbol *func = get_frame_function (frame); - struct block *b; struct dict_iterator iter; struct symbol *sym, *sym2; - int values_printed = 0; - - if (func == 0) - { - fprintf_filtered (stream, _("No symbol table info available.\n")); - return; - } - b = SYMBOL_BLOCK_VALUE (func); ALL_BLOCK_SYMBOLS (b, iter, sym) { /* Don't worry about things which aren't arguments. */ if (SYMBOL_IS_ARGUMENT (sym)) { - values_printed = 1; - /* We have to look up the symbol because arguments can have two entries (one a parameter, one a local) and the one we want is the local, which lookup_symbol will find for us. @@ -1691,12 +1737,33 @@ print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream) sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym), b, VAR_DOMAIN, NULL); - print_variable_and_value (SYMBOL_PRINT_NAME (sym), sym2, - frame, stream, 0); + (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data); } } +} + +static void +print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream) +{ + struct print_variable_and_value_data cb_data; + struct symbol *func; + + func = get_frame_function (frame); + if (func == NULL) + { + fprintf_filtered (stream, _("No symbol table info available.\n")); + return; + } - if (!values_printed) + cb_data.frame = frame; + cb_data.num_tabs = 0; + cb_data.stream = gdb_stdout; + cb_data.values_printed = 0; + + iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func), + do_print_variable_and_value, &cb_data); + + if (!cb_data.values_printed) fprintf_filtered (stream, _("No arguments.\n")); } @@ -1759,6 +1826,7 @@ find_relative_frame (struct frame_info *frame, int *level_offset_ptr) while (*level_offset_ptr > 0) { struct frame_info *prev = get_prev_frame (frame); + if (!prev) break; (*level_offset_ptr)--; @@ -1769,6 +1837,7 @@ find_relative_frame (struct frame_info *frame, int *level_offset_ptr) while (*level_offset_ptr < 0) { struct frame_info *next = get_next_frame (frame); + if (!next) break; (*level_offset_ptr)++; @@ -1849,6 +1918,7 @@ down_silently_base (char *count_exp) { struct frame_info *frame; int count = -1; + if (count_exp) count = -parse_and_eval_long (count_exp); @@ -1955,6 +2025,7 @@ If you continue, the return value that you specified will be ignored.\n"; if (from_tty) { int confirmed; + if (thisfun == NULL) confirmed = query (_("%sMake selected stack frame return now? "), query_prefix); @@ -2087,10 +2158,6 @@ void _initialize_stack (void); void _initialize_stack (void) { -#if 0 - backtrace_limit = 30; -#endif - add_com ("return", class_stack, return_command, _("\ Make selected stack frame return to its caller.\n\ Control remains in the debugger, but when you continue\n\ @@ -2143,7 +2210,7 @@ Use of the 'full' qualifier also prints the values of the local variables.\n")); { add_com_alias ("t", "backtrace", class_stack, 0); add_com ("T", class_stack, backtrace_full_command, _("\ -Print backtrace of all stack frames, or innermost COUNT frames \n\ +Print backtrace of all stack frames, or innermost COUNT frames\n\ and the values of the local variables.\n\ With a negative argument, print outermost -COUNT frames.\n\ Usage: T \n")); @@ -2195,12 +2262,4 @@ source line."), show_disassemble_next_line, &setlist, &showlist); disassemble_next_line = AUTO_BOOLEAN_FALSE; - -#if 0 - add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, _(\ -"Specify maximum number of frames for \"backtrace\" to print by default."), - &setlist); - add_info ("backtrace-limit", backtrace_limit_info, _("\ -The maximum number of frames for \"backtrace\" to print by default.")); -#endif } diff --git a/contrib/gdb-7/gdb/stack.h b/contrib/gdb-7/gdb/stack.h index 56b1d91b5e..5e874b4fd4 100644 --- a/contrib/gdb-7/gdb/stack.h +++ b/contrib/gdb-7/gdb/stack.h @@ -1,6 +1,6 @@ /* Stack manipulation commands, for GDB the GNU Debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -27,4 +27,16 @@ void select_frame_command (char *level_exp, int from_tty); void find_frame_funname (struct frame_info *frame, char **funname, enum language *funlang); +typedef void (*iterate_over_block_arg_local_vars_cb) (const char *symbol_print_name, + struct symbol *sym, + void *cb_data); + +void iterate_over_block_arg_vars (struct block *block, + iterate_over_block_arg_local_vars_cb cb, + void *cb_data); + +void iterate_over_block_local_vars (struct block *block, + iterate_over_block_arg_local_vars_cb cb, + void *cb_data); + #endif /* #ifndef STACK_H */ diff --git a/contrib/gdb-7/gdb/std-regs.c b/contrib/gdb-7/gdb/std-regs.c index efb89faec7..8f0d444e1c 100644 --- a/contrib/gdb-7/gdb/std-regs.c +++ b/contrib/gdb-7/gdb/std-regs.c @@ -1,6 +1,7 @@ /* Builtin frame register, for GDB, the GNU debugger. - Copyright (C) 2002, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Red Hat. @@ -31,6 +32,7 @@ static struct value * value_of_builtin_frame_fp_reg (struct frame_info *frame, const void *baton) { struct gdbarch *gdbarch = get_frame_arch (frame); + if (gdbarch_deprecated_fp_regnum (gdbarch) >= 0) /* NOTE: cagney/2003-04-24: Since the mere presence of "fp" in the register name table overrides this built-in $fp register, there @@ -45,6 +47,7 @@ value_of_builtin_frame_fp_reg (struct frame_info *frame, const void *baton) struct type *data_ptr_type = builtin_type (gdbarch)->builtin_data_ptr; struct value *val = allocate_value (data_ptr_type); gdb_byte *buf = value_contents_raw (val); + if (frame == NULL) memset (buf, 0, TYPE_LENGTH (value_type (val))); else @@ -58,6 +61,7 @@ static struct value * value_of_builtin_frame_pc_reg (struct frame_info *frame, const void *baton) { struct gdbarch *gdbarch = get_frame_arch (frame); + if (gdbarch_pc_regnum (gdbarch) >= 0) return value_of_register (gdbarch_pc_regnum (gdbarch), frame); else @@ -65,6 +69,7 @@ value_of_builtin_frame_pc_reg (struct frame_info *frame, const void *baton) struct type *func_ptr_type = builtin_type (gdbarch)->builtin_func_ptr; struct value *val = allocate_value (func_ptr_type); gdb_byte *buf = value_contents_raw (val); + if (frame == NULL) memset (buf, 0, TYPE_LENGTH (value_type (val))); else @@ -78,6 +83,7 @@ static struct value * value_of_builtin_frame_sp_reg (struct frame_info *frame, const void *baton) { struct gdbarch *gdbarch = get_frame_arch (frame); + if (gdbarch_sp_regnum (gdbarch) >= 0) return value_of_register (gdbarch_sp_regnum (gdbarch), frame); error (_("Standard register ``$sp'' is not available for this target")); @@ -87,6 +93,7 @@ static struct value * value_of_builtin_frame_ps_reg (struct frame_info *frame, const void *baton) { struct gdbarch *gdbarch = get_frame_arch (frame); + if (gdbarch_ps_regnum (gdbarch) >= 0) return value_of_register (gdbarch_ps_regnum (gdbarch), frame); error (_("Standard register ``$ps'' is not available for this target")); diff --git a/contrib/gdb-7/gdb/symfile.c b/contrib/gdb-7/gdb/symfile.c index 2458201122..42f7ae3e07 100644 --- a/contrib/gdb-7/gdb/symfile.c +++ b/contrib/gdb-7/gdb/symfile.c @@ -1,7 +1,7 @@ /* Generic symbol file reading for the GNU debugger, GDB. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support, using pieces from other GDB modules. @@ -65,6 +65,7 @@ #include #include +#include "psymtab.h" int (*deprecated_ui_load_progress_hook) (const char *section, unsigned long num); void (*deprecated_show_load_progress) (const char *section, @@ -97,10 +98,6 @@ static void symbol_file_add_main_1 (char *args, int from_tty, int flags); static void add_symbol_file_command (char *, int); -static void reread_separate_symbols (struct objfile *objfile); - -static void cashier_psymtab (struct partial_symtab *); - bfd *symfile_bfd_open (char *); int get_section_index (struct objfile *, char *); @@ -140,8 +137,6 @@ static void add_filename_language (char *ext, enum language lang); static void info_ext_lang_command (char *args, int from_tty); -static char *find_separate_debug_file (struct objfile *objfile); - static void init_filename_language_table (void); static void symfile_find_segment_sections (struct objfile *objfile); @@ -194,29 +189,6 @@ int auto_solib_add = 1; int auto_solib_limit; -/* This compares two partial symbols by names, using strcmp_iw_ordered - for the comparison. */ - -static int -compare_psymbols (const void *s1p, const void *s2p) -{ - struct partial_symbol *const *s1 = s1p; - struct partial_symbol *const *s2 = s2p; - - return strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*s1), - SYMBOL_SEARCH_NAME (*s2)); -} - -void -sort_pst_symbols (struct partial_symtab *pst) -{ - /* Sort the global list; don't sort the static list */ - - qsort (pst->objfile->global_psymbols.list + pst->globals_offset, - pst->n_global_syms, sizeof (struct partial_symbol *), - compare_psymbols); -} - /* Make a null terminated copy of the string at PTR with SIZE characters in the obstack pointed to by OBSTACKP . Returns the address of the copy. Note that the string at PTR does not have to be null terminated, I.E. it @@ -233,6 +205,7 @@ obsavestring (const char *ptr, int size, struct obstack *obstackp) const char *p1 = ptr; char *p2 = p; const char *end = ptr + size; + while (p1 != end) *p2++ = *p1++; } @@ -240,22 +213,32 @@ obsavestring (const char *ptr, int size, struct obstack *obstackp) return p; } -/* Concatenate strings S1, S2 and S3; return the new string. Space is found - in the obstack pointed to by OBSTACKP. */ +/* Concatenate NULL terminated variable argument list of `const char *' strings; + return the new string. Space is found in the OBSTACKP. Argument list must + be terminated by a sentinel expression `(char *) NULL'. */ char * -obconcat (struct obstack *obstackp, const char *s1, const char *s2, - const char *s3) +obconcat (struct obstack *obstackp, ...) { - int len = strlen (s1) + strlen (s2) + strlen (s3) + 1; - char *val = (char *) obstack_alloc (obstackp, len); - strcpy (val, s1); - strcat (val, s2); - strcat (val, s3); - return val; + va_list ap; + + va_start (ap, obstackp); + for (;;) + { + const char *s = va_arg (ap, const char *); + + if (s == NULL) + break; + + obstack_grow_str (obstackp, s); + } + va_end (ap); + obstack_1grow (obstackp, 0); + + return obstack_finish (obstackp); } -/* True if we are nested inside psymtab_to_symtab. */ +/* True if we are reading a symbol table. */ int currently_reading_symtab = 0; @@ -265,28 +248,13 @@ decrement_reading_symtab (void *dummy) currently_reading_symtab--; } -/* Get the symbol table that corresponds to a partial_symtab. - This is fast after the first time you do it. In fact, there - is an even faster macro PSYMTAB_TO_SYMTAB that does the fast - case inline. */ - -struct symtab * -psymtab_to_symtab (struct partial_symtab *pst) +/* Increment currently_reading_symtab and return a cleanup that can be + used to decrement it. */ +struct cleanup * +increment_reading_symtab (void) { - /* If it's been looked up before, return it. */ - if (pst->symtab) - return pst->symtab; - - /* If it has not yet been read in, read it. */ - if (!pst->readin) - { - struct cleanup *back_to = make_cleanup (decrement_reading_symtab, NULL); - currently_reading_symtab++; - (*pst->read_symtab) (pst); - do_cleanups (back_to); - } - - return pst->symtab; + ++currently_reading_symtab; + return make_cleanup (decrement_reading_symtab, NULL); } /* Remember the lowest-addressed loadable section we've seen. @@ -303,7 +271,7 @@ find_lowest_section (bfd *abfd, asection *sect, void *obj) { asection **lowest = (asection **) obj; - if (0 == (bfd_get_section_flags (abfd, sect) & SEC_LOAD)) + if (0 == (bfd_get_section_flags (abfd, sect) & (SEC_ALLOC | SEC_LOAD))) return; if (!*lowest) *lowest = sect; /* First loadable section */ @@ -332,32 +300,6 @@ alloc_section_addr_info (size_t num_sections) return sap; } - -/* Return a freshly allocated copy of ADDRS. The section names, if - any, are also freshly allocated copies of those in ADDRS. */ -struct section_addr_info * -copy_section_addr_info (struct section_addr_info *addrs) -{ - struct section_addr_info *copy - = alloc_section_addr_info (addrs->num_sections); - int i; - - copy->num_sections = addrs->num_sections; - for (i = 0; i < addrs->num_sections; i++) - { - copy->other[i].addr = addrs->other[i].addr; - if (addrs->other[i].name) - copy->other[i].name = xstrdup (addrs->other[i].name); - else - copy->other[i].name = NULL; - copy->other[i].sectindex = addrs->other[i].sectindex; - } - - return copy; -} - - - /* Build (allocate and populate) a section_addr_info struct from an existing section table. */ @@ -388,6 +330,47 @@ build_section_addr_info_from_section_table (const struct target_section *start, return sap; } +/* Create a section_addr_info from section offsets in ABFD. */ + +static struct section_addr_info * +build_section_addr_info_from_bfd (bfd *abfd) +{ + struct section_addr_info *sap; + int i; + struct bfd_section *sec; + + sap = alloc_section_addr_info (bfd_count_sections (abfd)); + for (i = 0, sec = abfd->sections; sec != NULL; sec = sec->next) + if (bfd_get_section_flags (abfd, sec) & (SEC_ALLOC | SEC_LOAD)) + { + sap->other[i].addr = bfd_get_section_vma (abfd, sec); + sap->other[i].name = xstrdup (bfd_get_section_name (abfd, sec)); + sap->other[i].sectindex = sec->index; + i++; + } + return sap; +} + +/* Create a section_addr_info from section offsets in OBJFILE. */ + +struct section_addr_info * +build_section_addr_info_from_objfile (const struct objfile *objfile) +{ + struct section_addr_info *sap; + int i; + + /* Before reread_symbols gets rewritten it is not safe to call: + gdb_assert (objfile->num_sections == bfd_count_sections (objfile->obfd)); + */ + sap = build_section_addr_info_from_bfd (objfile->obfd); + for (i = 0; i < sap->num_sections && sap->other[i].name; i++) + { + int sectindex = sap->other[i].sectindex; + + sap->other[i].addr += objfile->section_offsets->offsets[sectindex]; + } + return sap; +} /* Free all memory allocated by build_section_addr_info_from_section_table. */ @@ -501,7 +484,6 @@ place_section (bfd *abfd, asection *sect, void *obj) for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next) { int indx = cur_sec->index; - CORE_ADDR cur_offset; /* We don't need to compare against ourself. */ if (cur_sec == sect) @@ -536,41 +518,227 @@ place_section (bfd *abfd, asection *sect, void *obj) arg->lowest = start_addr + bfd_get_section_size (sect); } -/* Parse the user's idea of an offset for dynamic linking, into our idea - of how to represent it for fast symbol reading. This is the default - version of the sym_fns.sym_offsets function for symbol readers that - don't need to do anything special. It allocates a section_offsets table - for the objectfile OBJFILE and stuffs ADDR into all of the offsets. */ +/* Store struct section_addr_info as prepared (made relative and with SECTINDEX + filled-in) by addr_info_make_relative into SECTION_OFFSETS of NUM_SECTIONS + entries. */ void -default_symfile_offsets (struct objfile *objfile, - struct section_addr_info *addrs) +relative_addr_info_to_section_offsets (struct section_offsets *section_offsets, + int num_sections, + struct section_addr_info *addrs) { int i; - objfile->num_sections = bfd_count_sections (objfile->obfd); - objfile->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->objfile_obstack, - SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); - memset (objfile->section_offsets, 0, - SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); + memset (section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (num_sections)); - /* Now calculate offsets for section that were specified by the - caller. */ + /* Now calculate offsets for section that were specified by the caller. */ for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) { - struct other_sections *osp ; + struct other_sections *osp; - osp = &addrs->other[i] ; + osp = &addrs->other[i]; if (osp->addr == 0) continue; /* Record all sections in offsets */ /* The section_offsets in the objfile are here filled in using the BFD index. */ - (objfile->section_offsets)->offsets[osp->sectindex] = osp->addr; + section_offsets->offsets[osp->sectindex] = osp->addr; + } +} + +/* qsort comparator for addrs_section_sort. Sort entries in ascending order by + their (name, sectindex) pair. sectindex makes the sort by name stable. */ + +static int +addrs_section_compar (const void *ap, const void *bp) +{ + const struct other_sections *a = *((struct other_sections **) ap); + const struct other_sections *b = *((struct other_sections **) bp); + int retval, a_idx, b_idx; + + retval = strcmp (a->name, b->name); + if (retval) + return retval; + + /* SECTINDEX is undefined iff ADDR is zero. */ + a_idx = a->addr == 0 ? 0 : a->sectindex; + b_idx = b->addr == 0 ? 0 : b->sectindex; + return a_idx - b_idx; +} + +/* Provide sorted array of pointers to sections of ADDRS. The array is + terminated by NULL. Caller is responsible to call xfree for it. */ + +static struct other_sections ** +addrs_section_sort (struct section_addr_info *addrs) +{ + struct other_sections **array; + int i; + + /* `+ 1' for the NULL terminator. */ + array = xmalloc (sizeof (*array) * (addrs->num_sections + 1)); + for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) + array[i] = &addrs->other[i]; + array[i] = NULL; + + qsort (array, i, sizeof (*array), addrs_section_compar); + + return array; +} + +/* Relativize absolute addresses in ADDRS into offsets based on ABFD. Fill-in + also SECTINDEXes specific to ABFD there. This function can be used to + rebase ADDRS to start referencing different BFD than before. */ + +void +addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd) +{ + asection *lower_sect; + CORE_ADDR lower_offset; + int i; + struct cleanup *my_cleanup; + struct section_addr_info *abfd_addrs; + struct other_sections **addrs_sorted, **abfd_addrs_sorted; + struct other_sections **addrs_to_abfd_addrs; + + /* Find lowest loadable section to be used as starting point for + continguous sections. */ + lower_sect = NULL; + bfd_map_over_sections (abfd, find_lowest_section, &lower_sect); + if (lower_sect == NULL) + { + warning (_("no loadable sections found in added symbol-file %s"), + bfd_get_filename (abfd)); + lower_offset = 0; + } + else + lower_offset = bfd_section_vma (bfd_get_filename (abfd), lower_sect); + + /* Create ADDRS_TO_ABFD_ADDRS array to map the sections in ADDRS to sections + in ABFD. Section names are not unique - there can be multiple sections of + the same name. Also the sections of the same name do not have to be + adjacent to each other. Some sections may be present only in one of the + files. Even sections present in both files do not have to be in the same + order. + + Use stable sort by name for the sections in both files. Then linearly + scan both lists matching as most of the entries as possible. */ + + addrs_sorted = addrs_section_sort (addrs); + my_cleanup = make_cleanup (xfree, addrs_sorted); + + abfd_addrs = build_section_addr_info_from_bfd (abfd); + make_cleanup_free_section_addr_info (abfd_addrs); + abfd_addrs_sorted = addrs_section_sort (abfd_addrs); + make_cleanup (xfree, abfd_addrs_sorted); + + /* Now create ADDRS_TO_ABFD_ADDRS from ADDRS_SORTED and ABFD_ADDRS_SORTED. */ + + addrs_to_abfd_addrs = xzalloc (sizeof (*addrs_to_abfd_addrs) + * addrs->num_sections); + make_cleanup (xfree, addrs_to_abfd_addrs); + + while (*addrs_sorted) + { + const char *sect_name = (*addrs_sorted)->name; + + while (*abfd_addrs_sorted + && strcmp ((*abfd_addrs_sorted)->name, sect_name) < 0) + abfd_addrs_sorted++; + + if (*abfd_addrs_sorted + && strcmp ((*abfd_addrs_sorted)->name, sect_name) == 0) + { + int index_in_addrs; + + /* Make the found item directly addressable from ADDRS. */ + index_in_addrs = *addrs_sorted - addrs->other; + gdb_assert (addrs_to_abfd_addrs[index_in_addrs] == NULL); + addrs_to_abfd_addrs[index_in_addrs] = *abfd_addrs_sorted; + + /* Never use the same ABFD entry twice. */ + abfd_addrs_sorted++; + } + + addrs_sorted++; } + /* Calculate offsets for the loadable sections. + FIXME! Sections must be in order of increasing loadable section + so that contiguous sections can use the lower-offset!!! + + Adjust offsets if the segments are not contiguous. + If the section is contiguous, its offset should be set to + the offset of the highest loadable section lower than it + (the loadable section directly below it in memory). + this_offset = lower_offset = lower_addr - lower_orig_addr */ + + for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) + { + const char *sect_name = addrs->other[i].name; + struct other_sections *sect = addrs_to_abfd_addrs[i]; + + if (sect) + { + /* This is the index used by BFD. */ + addrs->other[i].sectindex = sect->sectindex; + + if (addrs->other[i].addr != 0) + { + addrs->other[i].addr -= sect->addr; + lower_offset = addrs->other[i].addr; + } + else + addrs->other[i].addr = lower_offset; + } + else + { + /* This section does not exist in ABFD, which is normally + unexpected and we want to issue a warning. + + However, the ELF prelinker does create a few sections which are + marked in the main executable as loadable (they are loaded in + memory from the DYNAMIC segment) and yet are not present in + separate debug info files. This is fine, and should not cause + a warning. Shared libraries contain just the section + ".gnu.liblist" but it is not marked as loadable there. There is + no other way to identify them than by their name as the sections + created by prelink have no special flags. */ + + if (!(strcmp (sect_name, ".gnu.liblist") == 0 + || strcmp (sect_name, ".gnu.conflict") == 0 + || strcmp (sect_name, ".dynbss") == 0 + || strcmp (sect_name, ".sdynbss") == 0)) + warning (_("section %s not found in %s"), sect_name, + bfd_get_filename (abfd)); + + addrs->other[i].addr = 0; + + /* SECTINDEX is invalid if ADDR is zero. */ + } + } + + do_cleanups (my_cleanup); +} + +/* Parse the user's idea of an offset for dynamic linking, into our idea + of how to represent it for fast symbol reading. This is the default + version of the sym_fns.sym_offsets function for symbol readers that + don't need to do anything special. It allocates a section_offsets table + for the objectfile OBJFILE and stuffs ADDR into all of the offsets. */ + +void +default_symfile_offsets (struct objfile *objfile, + struct section_addr_info *addrs) +{ + objfile->num_sections = bfd_count_sections (objfile->obfd); + objfile->section_offsets = (struct section_offsets *) + obstack_alloc (&objfile->objfile_obstack, + SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); + relative_addr_info_to_section_offsets (objfile->section_offsets, + objfile->num_sections, addrs); + /* For relocatable files, all loadable sections will start at zero. The zero is meaningless, so try to pick arbitrary addresses such that no loadable sections overlap. This algorithm is quadratic, @@ -581,7 +749,6 @@ default_symfile_offsets (struct objfile *objfile, struct place_section_arg arg; bfd *abfd = objfile->obfd; asection *cur_sec; - CORE_ADDR lowest = 0; for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next) /* We do not expect this to happen; just skip this step if the @@ -803,65 +970,8 @@ syms_from_objfile (struct objfile *objfile, We no longer warn if the lowest section is not a text segment (as happens for the PA64 port. */ - if (!mainline && addrs && addrs->other[0].name) - { - asection *lower_sect; - asection *sect; - CORE_ADDR lower_offset; - int i; - - /* Find lowest loadable section to be used as starting point for - continguous sections. FIXME!! won't work without call to find - .text first, but this assumes text is lowest section. */ - lower_sect = bfd_get_section_by_name (objfile->obfd, ".text"); - if (lower_sect == NULL) - bfd_map_over_sections (objfile->obfd, find_lowest_section, - &lower_sect); - if (lower_sect == NULL) - { - warning (_("no loadable sections found in added symbol-file %s"), - objfile->name); - lower_offset = 0; - } - else - lower_offset = bfd_section_vma (objfile->obfd, lower_sect); - - /* Calculate offsets for the loadable sections. - FIXME! Sections must be in order of increasing loadable section - so that contiguous sections can use the lower-offset!!! - - Adjust offsets if the segments are not contiguous. - If the section is contiguous, its offset should be set to - the offset of the highest loadable section lower than it - (the loadable section directly below it in memory). - this_offset = lower_offset = lower_addr - lower_orig_addr */ - - for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) - { - if (addrs->other[i].addr != 0) - { - sect = bfd_get_section_by_name (objfile->obfd, - addrs->other[i].name); - if (sect) - { - addrs->other[i].addr - -= bfd_section_vma (objfile->obfd, sect); - lower_offset = addrs->other[i].addr; - /* This is the index used by BFD. */ - addrs->other[i].sectindex = sect->index ; - } - else - { - warning (_("section %s not found in %s"), - addrs->other[i].name, - objfile->name); - addrs->other[i].addr = 0; - } - } - else - addrs->other[i].addr = lower_offset; - } - } + if (addrs && addrs->other[0].name) + addr_info_make_relative (addrs, objfile->obfd); /* Initialize symbol reading routines for this objfile, allow complaints to appear for this new file, and record how verbose to be, then do the @@ -886,7 +996,7 @@ syms_from_objfile (struct objfile *objfile, init_objfile_sect_indices (objfile); } - (*objfile->sf->sym_read) (objfile, mainline); + (*objfile->sf->sym_read) (objfile, add_flags); /* Discard cleanups as symbol reading was successful. */ @@ -901,7 +1011,6 @@ syms_from_objfile (struct objfile *objfile, void new_symfile_objfile (struct objfile *objfile, int add_flags) { - /* If this is the main symbol file we have to clean up all users of the old main symbol file. Otherwise it is sufficient to fixup all the breakpoints that may have been redefined by this symbol file. */ @@ -946,9 +1055,6 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, int flags) { struct objfile *objfile; - struct partial_symtab *psymtab; - char *debugfile = NULL; - struct section_addr_info *orig_addrs = NULL; struct cleanup *my_cleanups; const char *name = bfd_get_filename (abfd); const int from_tty = add_flags & SYMFILE_VERBOSE; @@ -967,12 +1073,6 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, objfile = allocate_objfile (abfd, flags); discard_cleanups (my_cleanups); - if (addrs) - { - orig_addrs = copy_section_addr_info (addrs); - make_cleanup_free_section_addr_info (orig_addrs); - } - /* We either created a new mapped symbol table, mapped an existing symbol table file which has not had initial symbol reading performed, or need to read an unmapped symbol table. */ @@ -1004,44 +1104,12 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, gdb_flush (gdb_stdout); } - for (psymtab = objfile->psymtabs; - psymtab != NULL; - psymtab = psymtab->next) - { - psymtab_to_symtab (psymtab); - } - } - - /* If the file has its own symbol tables it has no separate debug info. - `.dynsym'/`.symtab' go to MSYMBOLS, `.debug_info' goes to SYMTABS/PSYMTABS. - `.gnu_debuglink' may no longer be present with `.note.gnu.build-id'. */ - if (objfile->psymtabs == NULL) - debugfile = find_separate_debug_file (objfile); - if (debugfile) - { - if (addrs != NULL) - { - objfile->separate_debug_objfile - = symbol_file_add (debugfile, add_flags, orig_addrs, flags); - } - else - { - objfile->separate_debug_objfile - = symbol_file_add (debugfile, add_flags, NULL, flags); - } - objfile->separate_debug_objfile->separate_debug_objfile_backlink - = objfile; - - /* Put the separate debug object before the normal one, this is so that - usage of the ALL_OBJFILES_SAFE macro will stay safe. */ - put_objfile_before (objfile->separate_debug_objfile, objfile); - - xfree (debugfile); + if (objfile->sf) + objfile->sf->qf->expand_all_symtabs (objfile); } if ((from_tty || info_verbose) - && !objfile_has_partial_symbols (objfile) - && !objfile_has_full_symbols (objfile)) + && !objfile_has_symbols (objfile)) { wrap_here (""); printf_unfiltered (_("(no debugging symbols found)...")); @@ -1077,6 +1145,31 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, return (objfile); } +/* Add BFD as a separate debug file for OBJFILE. */ + +void +symbol_file_add_separate (bfd *bfd, int symfile_flags, struct objfile *objfile) +{ + struct objfile *new_objfile; + struct section_addr_info *sap; + struct cleanup *my_cleanup; + + /* Create section_addr_info. We can't directly use offsets from OBJFILE + because sections of BFD may not match sections of OBJFILE and because + vma may have been modified by tools such as prelink. */ + sap = build_section_addr_info_from_objfile (objfile); + my_cleanup = make_cleanup_free_section_addr_info (sap); + + new_objfile = symbol_file_add_with_addrs_or_offsets + (bfd, symfile_flags, + sap, NULL, 0, + objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW + | OBJF_USERLOADED)); + + do_cleanups (my_cleanup); + + add_separate_debug_objfile (new_objfile, objfile); +} /* Process the symbol file ABFD, as either the main file or as a dynamically loaded file. @@ -1143,115 +1236,17 @@ symbol_file_clear (int from_tty) : !query (_("Discard symbol table? ")))) error (_("Not confirmed.")); - free_all_objfiles (); - - /* solib descriptors may have handles to objfiles. Since their - storage has just been released, we'd better wipe the solib - descriptors as well. */ + /* solib descriptors may have handles to objfiles. Wipe them before their + objfiles get stale by free_all_objfiles. */ no_shared_libraries (NULL, from_tty); + free_all_objfiles (); + gdb_assert (symfile_objfile == NULL); if (from_tty) printf_unfiltered (_("No symbol file now.\n")); } -struct build_id - { - size_t size; - gdb_byte data[1]; - }; - -/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */ - -static struct build_id * -build_id_bfd_get (bfd *abfd) -{ - struct build_id *retval; - - if (!bfd_check_format (abfd, bfd_object) - || bfd_get_flavour (abfd) != bfd_target_elf_flavour - || elf_tdata (abfd)->build_id == NULL) - return NULL; - - retval = xmalloc (sizeof *retval - 1 + elf_tdata (abfd)->build_id_size); - retval->size = elf_tdata (abfd)->build_id_size; - memcpy (retval->data, elf_tdata (abfd)->build_id, retval->size); - - return retval; -} - -/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */ - -static int -build_id_verify (const char *filename, struct build_id *check) -{ - bfd *abfd; - struct build_id *found = NULL; - int retval = 0; - - /* We expect to be silent on the non-existing files. */ - if (remote_filename_p (filename)) - abfd = remote_bfd_open (filename, gnutarget); - else - abfd = bfd_openr (filename, gnutarget); - if (abfd == NULL) - return 0; - - found = build_id_bfd_get (abfd); - - if (found == NULL) - warning (_("File \"%s\" has no build-id, file skipped"), filename); - else if (found->size != check->size - || memcmp (found->data, check->data, found->size) != 0) - warning (_("File \"%s\" has a different build-id, file skipped"), filename); - else - retval = 1; - - if (!bfd_close (abfd)) - warning (_("cannot close \"%s\": %s"), filename, - bfd_errmsg (bfd_get_error ())); - - xfree (found); - - return retval; -} - -static char * -build_id_to_debug_filename (struct build_id *build_id) -{ - char *link, *s, *retval = NULL; - gdb_byte *data = build_id->data; - size_t size = build_id->size; - - /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */ - link = xmalloc (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 - + 2 * size + (sizeof ".debug" - 1) + 1); - s = link + sprintf (link, "%s/.build-id/", debug_file_directory); - if (size > 0) - { - size--; - s += sprintf (s, "%02x", (unsigned) *data++); - } - if (size > 0) - *s++ = '/'; - while (size-- > 0) - s += sprintf (s, "%02x", (unsigned) *data++); - strcpy (s, ".debug"); - - /* lrealpath() is expensive even for the usually non-existent files. */ - if (access (link, F_OK) == 0) - retval = lrealpath (link); - xfree (link); - - if (retval != NULL && !build_id_verify (retval, build_id)) - { - xfree (retval); - retval = NULL; - } - - return retval; -} - static char * get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out) { @@ -1260,7 +1255,6 @@ get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out) unsigned long crc32; char *contents; int crc_offset; - unsigned char *p; sect = bfd_get_section_by_name (objfile->obfd, ".gnu_debuglink"); @@ -1284,27 +1278,63 @@ get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out) } static int -separate_debug_file_exists (const char *name, unsigned long crc) +separate_debug_file_exists (const char *name, unsigned long crc, + struct objfile *parent_objfile) { unsigned long file_crc = 0; bfd *abfd; gdb_byte buffer[8*1024]; int count; + struct stat parent_stat, abfd_stat; - if (remote_filename_p (name)) - abfd = remote_bfd_open (name, gnutarget); - else - abfd = bfd_openr (name, gnutarget); + /* Find a separate debug info file as if symbols would be present in + PARENT_OBJFILE itself this function would not be called. .gnu_debuglink + section can contain just the basename of PARENT_OBJFILE without any + ".debug" suffix as "/usr/lib/debug/path/to/file" is a separate tree where + the separate debug infos with the same basename can exist. */ + + if (strcmp (name, parent_objfile->name) == 0) + return 0; + + abfd = bfd_open_maybe_remote (name); if (!abfd) return 0; + /* Verify symlinks were not the cause of strcmp name difference above. + + Some operating systems, e.g. Windows, do not provide a meaningful + st_ino; they always set it to zero. (Windows does provide a + meaningful st_dev.) Do not indicate a duplicate library in that + case. While there is no guarantee that a system that provides + meaningful inode numbers will never set st_ino to zero, this is + merely an optimization, so we do not need to worry about false + negatives. */ + + if (bfd_stat (abfd, &abfd_stat) == 0 + && bfd_stat (parent_objfile->obfd, &parent_stat) == 0 + && abfd_stat.st_dev == parent_stat.st_dev + && abfd_stat.st_ino == parent_stat.st_ino + && abfd_stat.st_ino != 0) + { + bfd_close (abfd); + return 0; + } + while ((count = bfd_bread (buffer, sizeof (buffer), abfd)) > 0) file_crc = gnu_debuglink_crc32 (file_crc, buffer, count); bfd_close (abfd); - return crc == file_crc; + if (crc != file_crc) + { + warning (_("the debug information found in \"%s\"" + " does not match \"%s\" (CRC mismatch).\n"), + name, parent_objfile->name); + return 0; + } + + return 1; } char *debug_file_directory = NULL; @@ -1321,55 +1351,33 @@ The directory where separate debug symbols are searched for is \"%s\".\n"), #define DEBUG_SUBDIRECTORY ".debug" #endif -static char * -find_separate_debug_file (struct objfile *objfile) +char * +find_separate_debug_file_by_debuglink (struct objfile *objfile) { - asection *sect; - char *basename; - char *dir; - char *debugfile; - char *name_copy; - char *canon_name; - bfd_size_type debuglink_size; + char *basename, *debugdir; + char *dir = NULL; + char *debugfile = NULL; + char *canon_name = NULL; unsigned long crc32; int i; - struct build_id *build_id; - - build_id = build_id_bfd_get (objfile->obfd); - if (build_id != NULL) - { - char *build_id_name; - - build_id_name = build_id_to_debug_filename (build_id); - xfree (build_id); - /* Prevent looping on a stripped .debug file. */ - if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0) - { - warning (_("\"%s\": separate debug info file has no debug info"), - build_id_name); - xfree (build_id_name); - } - else if (build_id_name != NULL) - return build_id_name; - } basename = get_debug_link_info (objfile, &crc32); if (basename == NULL) - return NULL; + /* There's no separate debug info, hence there's no way we could + load it => no warning. */ + goto cleanup_return_debugfile; dir = xstrdup (objfile->name); /* Strip off the final filename part, leaving the directory name, - followed by a slash. Objfile names should always be absolute and - tilde-expanded, so there should always be a slash in there - somewhere. */ + followed by a slash. The directory can be relative or absolute. */ for (i = strlen(dir) - 1; i >= 0; i--) { if (IS_DIR_SEPARATOR (dir[i])) break; } - gdb_assert (i >= 0 && IS_DIR_SEPARATOR (dir[i])); + /* If I is -1 then no directory is present there and DIR will be "". */ dir[i+1] = '\0'; /* Set I to max (strlen (canon_name), strlen (dir)). */ @@ -1378,24 +1386,19 @@ find_separate_debug_file (struct objfile *objfile) if (canon_name && strlen (canon_name) > i) i = strlen (canon_name); - debugfile = alloca (strlen (debug_file_directory) + 1 - + i - + strlen (DEBUG_SUBDIRECTORY) - + strlen ("/") - + strlen (basename) - + 1); + debugfile = xmalloc (strlen (debug_file_directory) + 1 + + i + + strlen (DEBUG_SUBDIRECTORY) + + strlen ("/") + + strlen (basename) + + 1); /* First try in the same directory as the original file. */ strcpy (debugfile, dir); strcat (debugfile, basename); - if (separate_debug_file_exists (debugfile, crc32)) - { - xfree (basename); - xfree (dir); - xfree (canon_name); - return xstrdup (debugfile); - } + if (separate_debug_file_exists (debugfile, crc32, objfile)) + goto cleanup_return_debugfile; /* Then try in the subdirectory named DEBUG_SUBDIRECTORY. */ strcpy (debugfile, dir); @@ -1403,54 +1406,63 @@ find_separate_debug_file (struct objfile *objfile) strcat (debugfile, "/"); strcat (debugfile, basename); - if (separate_debug_file_exists (debugfile, crc32)) - { - xfree (basename); - xfree (dir); - xfree (canon_name); - return xstrdup (debugfile); - } + if (separate_debug_file_exists (debugfile, crc32, objfile)) + goto cleanup_return_debugfile; - /* Then try in the global debugfile directory. */ - strcpy (debugfile, debug_file_directory); - strcat (debugfile, "/"); - strcat (debugfile, dir); - strcat (debugfile, basename); + /* Then try in the global debugfile directories. + + Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will + cause "/..." lookups. */ - if (separate_debug_file_exists (debugfile, crc32)) + debugdir = debug_file_directory; + do { - xfree (basename); - xfree (dir); - xfree (canon_name); - return xstrdup (debugfile); - } + char *debugdir_end; - /* If the file is in the sysroot, try using its base path in the - global debugfile directory. */ - if (canon_name - && strncmp (canon_name, gdb_sysroot, strlen (gdb_sysroot)) == 0 - && IS_DIR_SEPARATOR (canon_name[strlen (gdb_sysroot)])) - { - strcpy (debugfile, debug_file_directory); - strcat (debugfile, canon_name + strlen (gdb_sysroot)); + while (*debugdir == DIRNAME_SEPARATOR) + debugdir++; + + debugdir_end = strchr (debugdir, DIRNAME_SEPARATOR); + if (debugdir_end == NULL) + debugdir_end = &debugdir[strlen (debugdir)]; + + memcpy (debugfile, debugdir, debugdir_end - debugdir); + debugfile[debugdir_end - debugdir] = 0; strcat (debugfile, "/"); + strcat (debugfile, dir); strcat (debugfile, basename); - if (separate_debug_file_exists (debugfile, crc32)) + if (separate_debug_file_exists (debugfile, crc32, objfile)) + goto cleanup_return_debugfile; + + /* If the file is in the sysroot, try using its base path in the + global debugfile directory. */ + if (canon_name + && strncmp (canon_name, gdb_sysroot, strlen (gdb_sysroot)) == 0 + && IS_DIR_SEPARATOR (canon_name[strlen (gdb_sysroot)])) { - xfree (canon_name); - xfree (basename); - xfree (dir); - return xstrdup (debugfile); + memcpy (debugfile, debugdir, debugdir_end - debugdir); + debugfile[debugdir_end - debugdir] = 0; + strcat (debugfile, canon_name + strlen (gdb_sysroot)); + strcat (debugfile, "/"); + strcat (debugfile, basename); + + if (separate_debug_file_exists (debugfile, crc32, objfile)) + goto cleanup_return_debugfile; } + + debugdir = debugdir_end; } + while (*debugdir != 0); - if (canon_name) - xfree (canon_name); + xfree (debugfile); + debugfile = NULL; +cleanup_return_debugfile: + xfree (canon_name); xfree (basename); xfree (dir); - return NULL; + return debugfile; } @@ -1521,26 +1533,36 @@ symbol_file_command (char *args, int from_tty) void set_initial_language (void) { - struct partial_symtab *pst; + char *filename; enum language lang = language_unknown; - pst = find_main_psymtab (); - if (pst != NULL) + filename = find_main_filename (); + if (filename != NULL) + lang = deduce_language_from_filename (filename); + + if (lang == language_unknown) { - if (pst->filename != NULL) - lang = deduce_language_from_filename (pst->filename); + /* Make C the default language */ + lang = language_c; + } - if (lang == language_unknown) - { - /* Make C the default language */ - lang = language_c; - } + set_language (lang); + expected_language = current_language; /* Don't warn the user. */ +} - set_language (lang); - expected_language = current_language; /* Don't warn the user. */ - } +/* If NAME is a remote name open the file using remote protocol, otherwise + open it normally. */ + +bfd * +bfd_open_maybe_remote (const char *name) +{ + if (remote_filename_p (name)) + return remote_bfd_open (name, gnutarget); + else + return bfd_openr (name, gnutarget); } + /* Open the file specified by NAME and hand it off to BFD for preliminary analysis. Return a newly initialized bfd *, which includes a newly malloc'd` copy of NAME (tilde-expanded and made @@ -1584,6 +1606,7 @@ symfile_bfd_open (char *name) if (desc < 0) { char *exename = alloca (strlen (name) + 5); + strcat (strcpy (exename, name), ".exe"); desc = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, exename, O_RDONLY | O_BINARY, &absolute_name); @@ -1986,6 +2009,16 @@ generic_load (char *args, int from_tty) for other targets too. */ regcache_write_pc (get_current_regcache (), entry); + /* Reset breakpoints, now that we have changed the load image. For + instance, breakpoints may have been set (or reset, by + post_create_inferior) while connected to the target but before we + loaded the program. In that case, the prologue analyzer could + have read instructions from the target to find the right + breakpoint locations. Loading has changed the contents of that + memory. */ + + breakpoint_re_set (); + /* FIXME: are we supposed to call symbol_file_add or not? According to a comment from remote-mips.c (where a call to symbol_file_add was commented out), making the call confuses GDB if more than one @@ -2084,7 +2117,6 @@ add_symbol_file_command (char *args, int from_tty) char *filename = NULL; int flags = OBJF_USERLOADED; char *arg; - int expecting_option = 0; int section_index = 0; int argcnt = 0; int sec_num = 0; @@ -2253,202 +2285,207 @@ reread_symbols (void) for (objfile = object_files; objfile; objfile = objfile->next) { - if (objfile->obfd) + /* solib-sunos.c creates one objfile with obfd. */ + if (objfile->obfd == NULL) + continue; + + /* Separate debug objfiles are handled in the main objfile. */ + if (objfile->separate_debug_objfile_backlink) + continue; + + /* If this object is from an archive (what you usually create with + `ar', often called a `static library' on most systems, though + a `shared library' on AIX is also an archive), then you should + stat on the archive name, not member name. */ + if (objfile->obfd->my_archive) + res = stat (objfile->obfd->my_archive->filename, &new_statbuf); + else + res = stat (objfile->name, &new_statbuf); + if (res != 0) { -#ifdef DEPRECATED_IBM6000_TARGET - /* If this object is from a shared library, then you should - stat on the library name, not member name. */ + /* FIXME, should use print_sys_errmsg but it's not filtered. */ + printf_unfiltered (_("`%s' has disappeared; keeping its symbols.\n"), + objfile->name); + continue; + } + new_modtime = new_statbuf.st_mtime; + if (new_modtime != objfile->mtime) + { + struct cleanup *old_cleanups; + struct section_offsets *offsets; + int num_offsets; + char *obfd_filename; + + printf_unfiltered (_("`%s' has changed; re-reading symbols.\n"), + objfile->name); + + /* There are various functions like symbol_file_add, + symfile_bfd_open, syms_from_objfile, etc., which might + appear to do what we want. But they have various other + effects which we *don't* want. So we just do stuff + ourselves. We don't worry about mapped files (for one thing, + any mapped file will be out of date). */ + + /* If we get an error, blow away this objfile (not sure if + that is the correct response for things like shared + libraries). */ + old_cleanups = make_cleanup_free_objfile (objfile); + /* We need to do this whenever any symbols go away. */ + make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/); + + if (exec_bfd != NULL && strcmp (bfd_get_filename (objfile->obfd), + bfd_get_filename (exec_bfd)) == 0) + { + /* Reload EXEC_BFD without asking anything. */ - if (objfile->obfd->my_archive) - res = stat (objfile->obfd->my_archive->filename, &new_statbuf); + exec_file_attach (bfd_get_filename (objfile->obfd), 0); + } + + /* Clean up any state BFD has sitting around. We don't need + to close the descriptor but BFD lacks a way of closing the + BFD without closing the descriptor. */ + obfd_filename = bfd_get_filename (objfile->obfd); + if (!bfd_close (objfile->obfd)) + error (_("Can't close BFD for %s: %s"), objfile->name, + bfd_errmsg (bfd_get_error ())); + objfile->obfd = bfd_open_maybe_remote (obfd_filename); + if (objfile->obfd == NULL) + error (_("Can't open %s to read symbols."), objfile->name); else -#endif - res = stat (objfile->name, &new_statbuf); - if (res != 0) + objfile->obfd = gdb_bfd_ref (objfile->obfd); + /* bfd_openr sets cacheable to true, which is what we want. */ + if (!bfd_check_format (objfile->obfd, bfd_object)) + error (_("Can't read symbols from %s: %s."), objfile->name, + bfd_errmsg (bfd_get_error ())); + + /* Save the offsets, we will nuke them with the rest of the + objfile_obstack. */ + num_offsets = objfile->num_sections; + offsets = ((struct section_offsets *) + alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets))); + memcpy (offsets, objfile->section_offsets, + SIZEOF_N_SECTION_OFFSETS (num_offsets)); + + /* Remove any references to this objfile in the global + value lists. */ + preserve_values (objfile); + + /* Nuke all the state that we will re-read. Much of the following + code which sets things to NULL really is necessary to tell + other parts of GDB that there is nothing currently there. + + Try to keep the freeing order compatible with free_objfile. */ + + if (objfile->sf != NULL) + { + (*objfile->sf->sym_finish) (objfile); + } + + clear_objfile_data (objfile); + + /* Free the separate debug objfiles. It will be + automatically recreated by sym_read. */ + free_objfile_separate_debug (objfile); + + /* FIXME: Do we have to free a whole linked list, or is this + enough? */ + if (objfile->global_psymbols.list) + xfree (objfile->global_psymbols.list); + memset (&objfile->global_psymbols, 0, + sizeof (objfile->global_psymbols)); + if (objfile->static_psymbols.list) + xfree (objfile->static_psymbols.list); + memset (&objfile->static_psymbols, 0, + sizeof (objfile->static_psymbols)); + + /* Free the obstacks for non-reusable objfiles */ + bcache_xfree (objfile->psymbol_cache); + objfile->psymbol_cache = bcache_xmalloc (); + bcache_xfree (objfile->macro_cache); + objfile->macro_cache = bcache_xmalloc (); + bcache_xfree (objfile->filename_cache); + objfile->filename_cache = bcache_xmalloc (); + if (objfile->demangled_names_hash != NULL) + { + htab_delete (objfile->demangled_names_hash); + objfile->demangled_names_hash = NULL; + } + obstack_free (&objfile->objfile_obstack, 0); + objfile->sections = NULL; + objfile->symtabs = NULL; + objfile->psymtabs = NULL; + objfile->psymtabs_addrmap = NULL; + objfile->free_psymtabs = NULL; + objfile->cp_namespace_symtab = NULL; + objfile->msymbols = NULL; + objfile->deprecated_sym_private = NULL; + objfile->minimal_symbol_count = 0; + memset (&objfile->msymbol_hash, 0, + sizeof (objfile->msymbol_hash)); + memset (&objfile->msymbol_demangled_hash, 0, + sizeof (objfile->msymbol_demangled_hash)); + + objfile->psymbol_cache = bcache_xmalloc (); + objfile->macro_cache = bcache_xmalloc (); + objfile->filename_cache = bcache_xmalloc (); + /* obstack_init also initializes the obstack so it is + empty. We could use obstack_specify_allocation but + gdb_obstack.h specifies the alloc/dealloc + functions. */ + obstack_init (&objfile->objfile_obstack); + if (build_objfile_section_table (objfile)) { - /* FIXME, should use print_sys_errmsg but it's not filtered. */ - printf_unfiltered (_("`%s' has disappeared; keeping its symbols.\n"), - objfile->name); - continue; + error (_("Can't find the file sections in `%s': %s"), + objfile->name, bfd_errmsg (bfd_get_error ())); } - new_modtime = new_statbuf.st_mtime; - if (new_modtime != objfile->mtime) + terminate_minimal_symbol_table (objfile); + + /* We use the same section offsets as from last time. I'm not + sure whether that is always correct for shared libraries. */ + objfile->section_offsets = (struct section_offsets *) + obstack_alloc (&objfile->objfile_obstack, + SIZEOF_N_SECTION_OFFSETS (num_offsets)); + memcpy (objfile->section_offsets, offsets, + SIZEOF_N_SECTION_OFFSETS (num_offsets)); + objfile->num_sections = num_offsets; + + /* What the hell is sym_new_init for, anyway? The concept of + distinguishing between the main file and additional files + in this way seems rather dubious. */ + if (objfile == symfile_objfile) { - struct cleanup *old_cleanups; - struct section_offsets *offsets; - int num_offsets; - char *obfd_filename; - - printf_unfiltered (_("`%s' has changed; re-reading symbols.\n"), - objfile->name); - - /* There are various functions like symbol_file_add, - symfile_bfd_open, syms_from_objfile, etc., which might - appear to do what we want. But they have various other - effects which we *don't* want. So we just do stuff - ourselves. We don't worry about mapped files (for one thing, - any mapped file will be out of date). */ - - /* If we get an error, blow away this objfile (not sure if - that is the correct response for things like shared - libraries). */ - old_cleanups = make_cleanup_free_objfile (objfile); - /* We need to do this whenever any symbols go away. */ - make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/); - - if (exec_bfd != NULL && strcmp (bfd_get_filename (objfile->obfd), - bfd_get_filename (exec_bfd)) == 0) - { - /* Reload EXEC_BFD without asking anything. */ - - exec_file_attach (bfd_get_filename (objfile->obfd), 0); - } - - /* Clean up any state BFD has sitting around. We don't need - to close the descriptor but BFD lacks a way of closing the - BFD without closing the descriptor. */ - obfd_filename = bfd_get_filename (objfile->obfd); - if (!bfd_close (objfile->obfd)) - error (_("Can't close BFD for %s: %s"), objfile->name, - bfd_errmsg (bfd_get_error ())); - if (remote_filename_p (obfd_filename)) - objfile->obfd = remote_bfd_open (obfd_filename, gnutarget); - else - objfile->obfd = bfd_openr (obfd_filename, gnutarget); - if (objfile->obfd == NULL) - error (_("Can't open %s to read symbols."), objfile->name); - else - objfile->obfd = gdb_bfd_ref (objfile->obfd); - /* bfd_openr sets cacheable to true, which is what we want. */ - if (!bfd_check_format (objfile->obfd, bfd_object)) - error (_("Can't read symbols from %s: %s."), objfile->name, - bfd_errmsg (bfd_get_error ())); - - /* Save the offsets, we will nuke them with the rest of the - objfile_obstack. */ - num_offsets = objfile->num_sections; - offsets = ((struct section_offsets *) - alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets))); - memcpy (offsets, objfile->section_offsets, - SIZEOF_N_SECTION_OFFSETS (num_offsets)); - - /* Remove any references to this objfile in the global - value lists. */ - preserve_values (objfile); - - /* Nuke all the state that we will re-read. Much of the following - code which sets things to NULL really is necessary to tell - other parts of GDB that there is nothing currently there. - - Try to keep the freeing order compatible with free_objfile. */ - - if (objfile->sf != NULL) - { - (*objfile->sf->sym_finish) (objfile); - } - - clear_objfile_data (objfile); - - /* FIXME: Do we have to free a whole linked list, or is this - enough? */ - if (objfile->global_psymbols.list) - xfree (objfile->global_psymbols.list); - memset (&objfile->global_psymbols, 0, - sizeof (objfile->global_psymbols)); - if (objfile->static_psymbols.list) - xfree (objfile->static_psymbols.list); - memset (&objfile->static_psymbols, 0, - sizeof (objfile->static_psymbols)); - - /* Free the obstacks for non-reusable objfiles */ - bcache_xfree (objfile->psymbol_cache); - objfile->psymbol_cache = bcache_xmalloc (); - bcache_xfree (objfile->macro_cache); - objfile->macro_cache = bcache_xmalloc (); - if (objfile->demangled_names_hash != NULL) - { - htab_delete (objfile->demangled_names_hash); - objfile->demangled_names_hash = NULL; - } - obstack_free (&objfile->objfile_obstack, 0); - objfile->sections = NULL; - objfile->symtabs = NULL; - objfile->psymtabs = NULL; - objfile->psymtabs_addrmap = NULL; - objfile->free_psymtabs = NULL; - objfile->cp_namespace_symtab = NULL; - objfile->msymbols = NULL; - objfile->deprecated_sym_private = NULL; - objfile->minimal_symbol_count = 0; - memset (&objfile->msymbol_hash, 0, - sizeof (objfile->msymbol_hash)); - memset (&objfile->msymbol_demangled_hash, 0, - sizeof (objfile->msymbol_demangled_hash)); - - objfile->psymbol_cache = bcache_xmalloc (); - objfile->macro_cache = bcache_xmalloc (); - /* obstack_init also initializes the obstack so it is - empty. We could use obstack_specify_allocation but - gdb_obstack.h specifies the alloc/dealloc - functions. */ - obstack_init (&objfile->objfile_obstack); - if (build_objfile_section_table (objfile)) - { - error (_("Can't find the file sections in `%s': %s"), - objfile->name, bfd_errmsg (bfd_get_error ())); - } - terminate_minimal_symbol_table (objfile); - - /* We use the same section offsets as from last time. I'm not - sure whether that is always correct for shared libraries. */ - objfile->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->objfile_obstack, - SIZEOF_N_SECTION_OFFSETS (num_offsets)); - memcpy (objfile->section_offsets, offsets, - SIZEOF_N_SECTION_OFFSETS (num_offsets)); - objfile->num_sections = num_offsets; - - /* What the hell is sym_new_init for, anyway? The concept of - distinguishing between the main file and additional files - in this way seems rather dubious. */ - if (objfile == symfile_objfile) - { - (*objfile->sf->sym_new_init) (objfile); - } - - (*objfile->sf->sym_init) (objfile); - clear_complaints (&symfile_complaints, 1, 1); - /* The "mainline" parameter is a hideous hack; I think leaving it - zero is OK since dbxread.c also does what it needs to do if - objfile->global_psymbols.size is 0. */ - (*objfile->sf->sym_read) (objfile, 0); - if (!objfile_has_partial_symbols (objfile) - && !objfile_has_full_symbols (objfile)) - { - wrap_here (""); - printf_unfiltered (_("(no debugging symbols found)\n")); - wrap_here (""); - } - - /* We're done reading the symbol file; finish off complaints. */ - clear_complaints (&symfile_complaints, 0, 1); - - /* Getting new symbols may change our opinion about what is - frameless. */ - - reinit_frame_cache (); - - /* Discard cleanups as symbol reading was successful. */ - discard_cleanups (old_cleanups); - - /* If the mtime has changed between the time we set new_modtime - and now, we *want* this to be out of date, so don't call stat - again now. */ - objfile->mtime = new_modtime; - reread_one = 1; - reread_separate_symbols (objfile); - init_entry_point_info (objfile); + (*objfile->sf->sym_new_init) (objfile); } + + (*objfile->sf->sym_init) (objfile); + clear_complaints (&symfile_complaints, 1, 1); + /* Do not set flags as this is safe and we don't want to be + verbose. */ + (*objfile->sf->sym_read) (objfile, 0); + if (!objfile_has_symbols (objfile)) + { + wrap_here (""); + printf_unfiltered (_("(no debugging symbols found)\n")); + wrap_here (""); + } + + /* We're done reading the symbol file; finish off complaints. */ + clear_complaints (&symfile_complaints, 0, 1); + + /* Getting new symbols may change our opinion about what is + frameless. */ + + reinit_frame_cache (); + + /* Discard cleanups as symbol reading was successful. */ + discard_cleanups (old_cleanups); + + /* If the mtime has changed between the time we set new_modtime + and now, we *want* this to be out of date, so don't call stat + again now. */ + objfile->mtime = new_modtime; + reread_one = 1; + init_entry_point_info (objfile); } } @@ -2463,73 +2500,6 @@ reread_symbols (void) observer_notify_executable_changed (); } } - - -/* Handle separate debug info for OBJFILE, which has just been - re-read: - - If we had separate debug info before, but now we don't, get rid - of the separated objfile. - - If we didn't have separated debug info before, but now we do, - read in the new separated debug info file. - - If the debug link points to a different file, toss the old one - and read the new one. - This function does *not* handle the case where objfile is still - using the same separate debug info file, but that file's timestamp - has changed. That case should be handled by the loop in - reread_symbols already. */ -static void -reread_separate_symbols (struct objfile *objfile) -{ - char *debug_file; - unsigned long crc32; - - /* Does the updated objfile's debug info live in a - separate file? */ - debug_file = find_separate_debug_file (objfile); - - if (objfile->separate_debug_objfile) - { - /* There are two cases where we need to get rid of - the old separated debug info objfile: - - if the new primary objfile doesn't have - separated debug info, or - - if the new primary objfile has separate debug - info, but it's under a different filename. - - If the old and new objfiles both have separate - debug info, under the same filename, then we're - okay --- if the separated file's contents have - changed, we will have caught that when we - visited it in this function's outermost - loop. */ - if (! debug_file - || strcmp (debug_file, objfile->separate_debug_objfile->name) != 0) - free_objfile (objfile->separate_debug_objfile); - } - - /* If the new objfile has separate debug info, and we - haven't loaded it already, do so now. */ - if (debug_file - && ! objfile->separate_debug_objfile) - { - /* Use the same section offset table as objfile itself. - Preserve the flags from objfile that make sense. */ - objfile->separate_debug_objfile - = (symbol_file_add_with_addrs_or_offsets - (symfile_bfd_open (debug_file), - info_verbose ? SYMFILE_VERBOSE : 0, - 0, /* No addr table. */ - objfile->section_offsets, objfile->num_sections, - objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW - | OBJF_USERLOADED))); - objfile->separate_debug_objfile->separate_debug_objfile_backlink - = objfile; - } - if (debug_file) - xfree (debug_file); -} - - @@ -2649,6 +2619,7 @@ init_filename_language_table (void) filename_language_table = xmalloc (fl_table_size * sizeof (*filename_language_table)); add_filename_language (".c", language_c); + add_filename_language (".d", language_d); add_filename_language (".C", language_cplus); add_filename_language (".cc", language_cplus); add_filename_language (".cp", language_cplus); @@ -2660,6 +2631,20 @@ init_filename_language_table (void) add_filename_language (".m", language_objc); add_filename_language (".f", language_fortran); add_filename_language (".F", language_fortran); + add_filename_language (".for", language_fortran); + add_filename_language (".FOR", language_fortran); + add_filename_language (".ftn", language_fortran); + add_filename_language (".FTN", language_fortran); + add_filename_language (".fpp", language_fortran); + add_filename_language (".FPP", language_fortran); + add_filename_language (".f90", language_fortran); + add_filename_language (".F90", language_fortran); + add_filename_language (".f95", language_fortran); + add_filename_language (".F95", language_fortran); + add_filename_language (".f03", language_fortran); + add_filename_language (".F03", language_fortran); + add_filename_language (".f08", language_fortran); + add_filename_language (".F08", language_fortran); add_filename_language (".s", language_asm); add_filename_language (".sx", language_asm); add_filename_language (".S", language_asm); @@ -2670,6 +2655,7 @@ init_filename_language_table (void) add_filename_language (".ads", language_ada); add_filename_language (".a", language_ada); add_filename_language (".ada", language_ada); + add_filename_language (".dg", language_ada); } } @@ -2699,7 +2685,6 @@ deduce_language_from_filename (char *filename) symtab->dirname symtab->free_code symtab->free_ptr - possibly free_named_symtabs (symtab->filename); */ struct symtab * @@ -2710,12 +2695,11 @@ allocate_symtab (char *filename, struct objfile *objfile) symtab = (struct symtab *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symtab)); memset (symtab, 0, sizeof (*symtab)); - symtab->filename = obsavestring (filename, strlen (filename), - &objfile->objfile_obstack); + symtab->filename = (char *) bcache (filename, strlen (filename) + 1, + objfile->filename_cache); symtab->fullname = NULL; symtab->language = deduce_language_from_filename (filename); - symtab->debugformat = obsavestring ("unknown", 7, - &objfile->objfile_obstack); + symtab->debugformat = "unknown"; /* Hook it to the objfile it comes from */ @@ -2725,73 +2709,6 @@ allocate_symtab (char *filename, struct objfile *objfile) return (symtab); } - -struct partial_symtab * -allocate_psymtab (char *filename, struct objfile *objfile) -{ - struct partial_symtab *psymtab; - - if (objfile->free_psymtabs) - { - psymtab = objfile->free_psymtabs; - objfile->free_psymtabs = psymtab->next; - } - else - psymtab = (struct partial_symtab *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (struct partial_symtab)); - - memset (psymtab, 0, sizeof (struct partial_symtab)); - psymtab->filename = obsavestring (filename, strlen (filename), - &objfile->objfile_obstack); - psymtab->symtab = NULL; - - /* Prepend it to the psymtab list for the objfile it belongs to. - Psymtabs are searched in most recent inserted -> least recent - inserted order. */ - - psymtab->objfile = objfile; - psymtab->next = objfile->psymtabs; - objfile->psymtabs = psymtab; -#if 0 - { - struct partial_symtab **prev_pst; - psymtab->objfile = objfile; - psymtab->next = NULL; - prev_pst = &(objfile->psymtabs); - while ((*prev_pst) != NULL) - prev_pst = &((*prev_pst)->next); - (*prev_pst) = psymtab; - } -#endif - - return (psymtab); -} - -void -discard_psymtab (struct partial_symtab *pst) -{ - struct partial_symtab **prev_pst; - - /* From dbxread.c: - Empty psymtabs happen as a result of header files which don't - have any symbols in them. There can be a lot of them. But this - check is wrong, in that a psymtab with N_SLINE entries but - nothing else is not empty, but we don't realize that. Fixing - that without slowing things down might be tricky. */ - - /* First, snip it out of the psymtab chain */ - - prev_pst = &(pst->objfile->psymtabs); - while ((*prev_pst) != pst) - prev_pst = &((*prev_pst)->next); - (*prev_pst) = pst->next; - - /* Next, put it on a free list for recycling */ - - pst->next = pst->objfile->free_psymtabs; - pst->objfile->free_psymtabs = pst; -} /* Reset all data structures in gdb which may contain references to symbol @@ -2809,7 +2726,7 @@ clear_symtab_users (void) clear_displays (); breakpoint_re_set (); - set_default_breakpoint (0, 0, 0, 0); + set_default_breakpoint (0, NULL, 0, 0, 0); clear_pc_function_cache (); observer_notify_new_objfile (NULL); @@ -2829,375 +2746,7 @@ clear_symtab_users_cleanup (void *ignore) { clear_symtab_users (); } - -/* clear_symtab_users_once: - - This function is run after symbol reading, or from a cleanup. - If an old symbol table was obsoleted, the old symbol table - has been blown away, but the other GDB data structures that may - reference it have not yet been cleared or re-directed. (The old - symtab was zapped, and the cleanup queued, in free_named_symtab() - below.) - - This function can be queued N times as a cleanup, or called - directly; it will do all the work the first time, and then will be a - no-op until the next time it is queued. This works by bumping a - counter at queueing time. Much later when the cleanup is run, or at - the end of symbol processing (in case the cleanup is discarded), if - the queued count is greater than the "done-count", we do the work - and set the done-count to the queued count. If the queued count is - less than or equal to the done-count, we just ignore the call. This - is needed because reading a single .o file will often replace many - symtabs (one per .h file, for example), and we don't want to reset - the breakpoints N times in the user's face. - - The reason we both queue a cleanup, and call it directly after symbol - reading, is because the cleanup protects us in case of errors, but is - discarded if symbol reading is successful. */ - -#if 0 -/* FIXME: As free_named_symtabs is currently a big noop this function - is no longer needed. */ -static void clear_symtab_users_once (void); - -static int clear_symtab_users_queued; -static int clear_symtab_users_done; - -static void -clear_symtab_users_once (void) -{ - /* Enforce once-per-`do_cleanups'-semantics */ - if (clear_symtab_users_queued <= clear_symtab_users_done) - return; - clear_symtab_users_done = clear_symtab_users_queued; - - clear_symtab_users (); -} -#endif - -/* Delete the specified psymtab, and any others that reference it. */ - -static void -cashier_psymtab (struct partial_symtab *pst) -{ - struct partial_symtab *ps, *pprev = NULL; - int i; - - /* Find its previous psymtab in the chain */ - for (ps = pst->objfile->psymtabs; ps; ps = ps->next) - { - if (ps == pst) - break; - pprev = ps; - } - - if (ps) - { - /* Unhook it from the chain. */ - if (ps == pst->objfile->psymtabs) - pst->objfile->psymtabs = ps->next; - else - pprev->next = ps->next; - - /* FIXME, we can't conveniently deallocate the entries in the - partial_symbol lists (global_psymbols/static_psymbols) that - this psymtab points to. These just take up space until all - the psymtabs are reclaimed. Ditto the dependencies list and - filename, which are all in the objfile_obstack. */ - - /* We need to cashier any psymtab that has this one as a dependency... */ - again: - for (ps = pst->objfile->psymtabs; ps; ps = ps->next) - { - for (i = 0; i < ps->number_of_dependencies; i++) - { - if (ps->dependencies[i] == pst) - { - cashier_psymtab (ps); - goto again; /* Must restart, chain has been munged. */ - } - } - } - } -} - -/* If a symtab or psymtab for filename NAME is found, free it along - with any dependent breakpoints, displays, etc. - Used when loading new versions of object modules with the "add-file" - command. This is only called on the top-level symtab or psymtab's name; - it is not called for subsidiary files such as .h files. - - Return value is 1 if we blew away the environment, 0 if not. - FIXME. The return value appears to never be used. - - FIXME. I think this is not the best way to do this. We should - work on being gentler to the environment while still cleaning up - all stray pointers into the freed symtab. */ - -int -free_named_symtabs (char *name) -{ -#if 0 - /* FIXME: With the new method of each objfile having it's own - psymtab list, this function needs serious rethinking. In particular, - why was it ever necessary to toss psymtabs with specific compilation - unit filenames, as opposed to all psymtabs from a particular symbol - file? -- fnf - Well, the answer is that some systems permit reloading of particular - compilation units. We want to blow away any old info about these - compilation units, regardless of which objfiles they arrived in. --gnu. */ - - struct symtab *s; - struct symtab *prev; - struct partial_symtab *ps; - struct blockvector *bv; - int blewit = 0; - - /* We only wack things if the symbol-reload switch is set. */ - if (!symbol_reloading) - return 0; - - /* Some symbol formats have trouble providing file names... */ - if (name == 0 || *name == '\0') - return 0; - - /* Look for a psymtab with the specified name. */ - -again2: - for (ps = partial_symtab_list; ps; ps = ps->next) - { - if (strcmp (name, ps->filename) == 0) - { - cashier_psymtab (ps); /* Blow it away...and its little dog, too. */ - goto again2; /* Must restart, chain has been munged */ - } - } - - /* Look for a symtab with the specified name. */ - - for (s = symtab_list; s; s = s->next) - { - if (strcmp (name, s->filename) == 0) - break; - prev = s; - } - - if (s) - { - if (s == symtab_list) - symtab_list = s->next; - else - prev->next = s->next; - - /* For now, queue a delete for all breakpoints, displays, etc., whether - or not they depend on the symtab being freed. This should be - changed so that only those data structures affected are deleted. */ - - /* But don't delete anything if the symtab is empty. - This test is necessary due to a bug in "dbxread.c" that - causes empty symtabs to be created for N_SO symbols that - contain the pathname of the object file. (This problem - has been fixed in GDB 3.9x). */ - - bv = BLOCKVECTOR (s); - if (BLOCKVECTOR_NBLOCKS (bv) > 2 - || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK)) - || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK))) - { - complaint (&symfile_complaints, _("Replacing old symbols for `%s'"), - name); - clear_symtab_users_queued++; - make_cleanup (clear_symtab_users_once, 0); - blewit = 1; - } - else - complaint (&symfile_complaints, _("Empty symbol table found for `%s'"), - name); - - free_symtab (s); - } - else - { - /* It is still possible that some breakpoints will be affected - even though no symtab was found, since the file might have - been compiled without debugging, and hence not be associated - with a symtab. In order to handle this correctly, we would need - to keep a list of text address ranges for undebuggable files. - For now, we do nothing, since this is a fairly obscure case. */ - ; - } - - /* FIXME, what about the minimal symbol table? */ - return blewit; -#else - return (0); -#endif -} -/* Allocate and partially fill a partial symtab. It will be - completely filled at the end of the symbol list. - - FILENAME is the name of the symbol-file we are reading from. */ - -struct partial_symtab * -start_psymtab_common (struct objfile *objfile, - struct section_offsets *section_offsets, char *filename, - CORE_ADDR textlow, struct partial_symbol **global_syms, - struct partial_symbol **static_syms) -{ - struct partial_symtab *psymtab; - - psymtab = allocate_psymtab (filename, objfile); - psymtab->section_offsets = section_offsets; - psymtab->textlow = textlow; - psymtab->texthigh = psymtab->textlow; /* default */ - psymtab->globals_offset = global_syms - objfile->global_psymbols.list; - psymtab->statics_offset = static_syms - objfile->static_psymbols.list; - return (psymtab); -} - -/* Helper function, initialises partial symbol structure and stashes - it into objfile's bcache. Note that our caching mechanism will - use all fields of struct partial_symbol to determine hash value of the - structure. In other words, having two symbols with the same name but - different domain (or address) is possible and correct. */ - -static const struct partial_symbol * -add_psymbol_to_bcache (char *name, int namelength, domain_enum domain, - enum address_class class, - long val, /* Value as a long */ - CORE_ADDR coreaddr, /* Value as a CORE_ADDR */ - enum language language, struct objfile *objfile, - int *added) -{ - char *buf = name; - /* psymbol is static so that there will be no uninitialized gaps in the - structure which might contain random data, causing cache misses in - bcache. */ - static struct partial_symbol psymbol; - - if (name[namelength] != '\0') - { - buf = alloca (namelength + 1); - /* Create local copy of the partial symbol */ - memcpy (buf, name, namelength); - buf[namelength] = '\0'; - } - /* val and coreaddr are mutually exclusive, one of them *will* be zero */ - if (val != 0) - { - SYMBOL_VALUE (&psymbol) = val; - } - else - { - SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr; - } - SYMBOL_SECTION (&psymbol) = 0; - SYMBOL_LANGUAGE (&psymbol) = language; - PSYMBOL_DOMAIN (&psymbol) = domain; - PSYMBOL_CLASS (&psymbol) = class; - - SYMBOL_SET_NAMES (&psymbol, buf, namelength, objfile); - - /* Stash the partial symbol away in the cache */ - return bcache_full (&psymbol, sizeof (struct partial_symbol), - objfile->psymbol_cache, added); -} - -/* Helper function, adds partial symbol to the given partial symbol - list. */ - -static void -append_psymbol_to_list (struct psymbol_allocation_list *list, - const struct partial_symbol *psym, - struct objfile *objfile) -{ - if (list->next >= list->list + list->size) - extend_psymbol_list (list, objfile); - *list->next++ = (struct partial_symbol *) psym; - OBJSTAT (objfile, n_psyms++); -} - -/* Add a symbol with a long value to a psymtab. - Since one arg is a struct, we pass in a ptr and deref it (sigh). - Return the partial symbol that has been added. */ - -/* NOTE: carlton/2003-09-11: The reason why we return the partial - symbol is so that callers can get access to the symbol's demangled - name, which they don't have any cheap way to determine otherwise. - (Currenly, dwarf2read.c is the only file who uses that information, - though it's possible that other readers might in the future.) - Elena wasn't thrilled about that, and I don't blame her, but we - couldn't come up with a better way to get that information. If - it's needed in other situations, we could consider breaking up - SYMBOL_SET_NAMES to provide access to the demangled name lookup - cache. */ - -const struct partial_symbol * -add_psymbol_to_list (char *name, int namelength, domain_enum domain, - enum address_class class, - struct psymbol_allocation_list *list, - long val, /* Value as a long */ - CORE_ADDR coreaddr, /* Value as a CORE_ADDR */ - enum language language, struct objfile *objfile) -{ - const struct partial_symbol *psym; - - int added; - - /* Stash the partial symbol away in the cache */ - psym = add_psymbol_to_bcache (name, namelength, domain, class, - val, coreaddr, language, objfile, &added); - - /* Do not duplicate global partial symbols. */ - if (list == &objfile->global_psymbols - && !added) - return psym; - - /* Save pointer to partial symbol in psymtab, growing symtab if needed. */ - append_psymbol_to_list (list, psym, objfile); - return psym; -} - -/* Initialize storage for partial symbols. */ - -void -init_psymbol_list (struct objfile *objfile, int total_symbols) -{ - /* Free any previously allocated psymbol lists. */ - - if (objfile->global_psymbols.list) - { - xfree (objfile->global_psymbols.list); - } - if (objfile->static_psymbols.list) - { - xfree (objfile->static_psymbols.list); - } - - /* Current best guess is that approximately a twentieth - of the total symbols (in a debugging file) are global or static - oriented symbols */ - - objfile->global_psymbols.size = total_symbols / 10; - objfile->static_psymbols.size = total_symbols / 10; - - if (objfile->global_psymbols.size > 0) - { - objfile->global_psymbols.next = - objfile->global_psymbols.list = (struct partial_symbol **) - xmalloc ((objfile->global_psymbols.size - * sizeof (struct partial_symbol *))); - } - if (objfile->static_psymbols.size > 0) - { - objfile->static_psymbols.next = - objfile->static_psymbols.list = (struct partial_symbol **) - xmalloc ((objfile->static_psymbols.size - * sizeof (struct partial_symbol *))); - } -} - /* OVERLAYS: The following code implements an abstraction for debugging overlay sections. @@ -3958,6 +3507,27 @@ symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy) sectp->output_offset = 0; } +/* Default implementation for sym_relocate. */ + + +bfd_byte * +default_symfile_relocate (struct objfile *objfile, asection *sectp, + bfd_byte *buf) +{ + bfd *abfd = objfile->obfd; + + /* We're only interested in sections with relocation + information. */ + if ((sectp->flags & SEC_RELOC) == 0) + return NULL; + + /* We will handle section offsets properly elsewhere, so relocate as if + all sections begin at 0. */ + bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL); + + return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL); +} + /* Relocate the contents of a debug section SECTP in ABFD. The contents are stored in BUF if it is non-NULL, or returned in a malloc'd buffer otherwise. @@ -3973,18 +3543,12 @@ symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy) debug section. */ bfd_byte * -symfile_relocate_debug_section (bfd *abfd, asection *sectp, bfd_byte *buf) +symfile_relocate_debug_section (struct objfile *objfile, + asection *sectp, bfd_byte *buf) { - /* We're only interested in sections with relocation - information. */ - if ((sectp->flags & SEC_RELOC) == 0) - return NULL; + gdb_assert (objfile->sf->sym_relocate); - /* We will handle section offsets properly elsewhere, so relocate as if - all sections begin at 0. */ - bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL); - - return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL); + return (*objfile->sf->sym_relocate) (objfile, sectp, buf); } struct symfile_segment_data * @@ -4033,7 +3597,7 @@ symfile_map_offsets_to_segments (bfd *abfd, struct symfile_segment_data *data, /* It doesn't make sense to call this function unless you have some segment base addresses. */ - gdb_assert (segment_bases > 0); + gdb_assert (num_segment_bases > 0); /* If we do not have segment mappings for the object file, we can not relocate it by segments. */ @@ -4083,7 +3647,6 @@ symfile_find_segment_sections (struct objfile *objfile) for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next) { - CORE_ADDR vma; int which = data->segment_info[i]; if (which == 1) @@ -4183,12 +3746,12 @@ Usage: set extension-language .foo bar"), add_setshow_optional_filename_cmd ("debug-file-directory", class_support, &debug_file_directory, _("\ -Set the directory where separate debug symbols are searched for."), _("\ -Show the directory where separate debug symbols are searched for."), _("\ +Set the directories where separate debug symbols are searched for."), _("\ +Show the directories where separate debug symbols are searched for."), _("\ Separate debug symbols are first searched for in the same\n\ directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\ and lastly at the path of the directory of the binary with\n\ -the global debug-file directory prepended."), +each global debug-file-directory component prepended."), NULL, show_debug_file_directory, &setlist, &showlist); diff --git a/contrib/gdb-7/gdb/symfile.h b/contrib/gdb-7/gdb/symfile.h index 8c9249c7c0..d53c465c6d 100644 --- a/contrib/gdb-7/gdb/symfile.h +++ b/contrib/gdb-7/gdb/symfile.h @@ -1,7 +1,7 @@ /* Definitions for reading symbol files into GDB. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -80,6 +80,8 @@ struct section_addr_info { CORE_ADDR addr; char *name; + + /* SECTINDEX must be valid for associated BFD if ADDR is not zero. */ int sectindex; } other[1]; }; @@ -109,6 +111,165 @@ struct symfile_segment_data int *segment_info; }; +/* The "quick" symbol functions exist so that symbol readers can + avoiding an initial read of all the symbols. For example, symbol + readers might choose to use the "partial symbol table" utilities, + which is one implementation of the quick symbol functions. + + The quick symbol functions are generally opaque: the underlying + representation is hidden from the caller. + + In general, these functions should only look at whatever special + index the symbol reader creates -- looking through the symbol + tables themselves is handled by generic code. If a function is + defined as returning a "symbol table", this means that the function + should only return a newly-created symbol table; it should not + examine pre-existing ones. + + The exact list of functions here was determined in an ad hoc way + based on gdb's history. */ + +struct quick_symbol_functions +{ + /* Return true if this objfile has any "partial" symbols + available. */ + int (*has_symbols) (struct objfile *objfile); + + /* Return the symbol table for the "last" file appearing in + OBJFILE. */ + struct symtab *(*find_last_source_symtab) (struct objfile *objfile); + + /* Forget all cached full file names for OBJFILE. */ + void (*forget_cached_source_info) (struct objfile *objfile); + + /* Look up the symbol table, in OBJFILE, of a source file named + NAME. If there is no '/' in the name, a match after a '/' in the + symbol table's file name will also work. FULL_PATH is the + absolute file name, and REAL_PATH is the same, run through + gdb_realpath. + + If no such symbol table can be found, returns 0. + + Otherwise, sets *RESULT to the symbol table and returns 1. This + might return 1 and set *RESULT to NULL if the requested file is + an include file that does not have a symtab of its own. */ + int (*lookup_symtab) (struct objfile *objfile, + const char *name, + const char *full_path, + const char *real_path, + struct symtab **result); + + /* Check to see if the symbol is defined in a "partial" symbol table + of OBJFILE. KIND should be either GLOBAL_BLOCK or STATIC_BLOCK, + depending on whether we want to search global symbols or static + symbols. NAME is the name of the symbol to look for. DOMAIN + indicates what sort of symbol to search for. + + Returns the newly-expanded symbol table in which the symbol is + defined, or NULL if no such symbol table exists. */ + struct symtab *(*lookup_symbol) (struct objfile *objfile, + int kind, const char *name, + domain_enum domain); + + /* Print statistics about any indices loaded for OBJFILE. The + statistics should be printed to gdb_stdout. This is used for + "maint print statistics". */ + void (*print_stats) (struct objfile *objfile); + + /* Dump any indices loaded for OBJFILE. The dump should go to + gdb_stdout. This is used for "maint print objfiles". */ + void (*dump) (struct objfile *objfile); + + /* This is called by objfile_relocate to relocate any indices loaded + for OBJFILE. */ + void (*relocate) (struct objfile *objfile, + struct section_offsets *new_offsets, + struct section_offsets *delta); + + /* Find all the symbols in OBJFILE named FUNC_NAME, and ensure that + the corresponding symbol tables are loaded. */ + void (*expand_symtabs_for_function) (struct objfile *objfile, + const char *func_name); + + /* Read all symbol tables associated with OBJFILE. */ + void (*expand_all_symtabs) (struct objfile *objfile); + + /* Read all symbol tables associated with OBJFILE which have the + file name FILENAME. */ + void (*expand_symtabs_with_filename) (struct objfile *objfile, + const char *filename); + + /* Return the file name of the file holding the symbol in OBJFILE + named NAME. If no such symbol exists in OBJFILE, return NULL. */ + char *(*find_symbol_file) (struct objfile *objfile, const char *name); + + /* This method is specific to Ada. It walks the partial symbol + tables of OBJFILE looking for a name match. WILD_MATCH and + IS_NAME_SUFFIX are predicate functions that the implementation + may call to check for a match. + + This function is completely ad hoc and new implementations should + refer to the psymtab implementation to see what to do. */ + void (*map_ada_symtabs) (struct objfile *objfile, + int (*wild_match) (const char *, int, const char *), + int (*is_name_suffix) (const char *), + void (*callback) (struct objfile *, + struct symtab *, void *), + const char *name, int global, + domain_enum namespace, int wild, + void *data); + + /* Expand all symbol tables in OBJFILE matching some criteria. + + FILE_MATCHER is called for each file in OBJFILE. The file name + and the DATA argument are passed to it. If it returns zero, this + file is skipped. + + Otherwise, if the file is not skipped, then NAME_MATCHER is + called for each symbol defined in the file. The symbol's + "natural" name and DATA are passed to NAME_MATCHER. + + If NAME_MATCHER returns zero, then this symbol is skipped. + + Otherwise, if this symbol is not skipped, and it matches KIND, + then this symbol's symbol table is expanded. + + DATA is user data that is passed unmodified to the callback + functions. */ + void (*expand_symtabs_matching) (struct objfile *objfile, + int (*file_matcher) (const char *, void *), + int (*name_matcher) (const char *, void *), + domain_enum kind, + void *data); + + /* Return the symbol table from OBJFILE that contains PC and + SECTION. Return NULL if there is no such symbol table. This + should return the symbol table that contains a symbol whose + address exactly matches PC, or, if there is no exact match, the + symbol table that contains a symbol whose address is closest to + PC. */ + struct symtab *(*find_pc_sect_symtab) (struct objfile *objfile, + struct minimal_symbol *msymbol, + CORE_ADDR pc, + struct obj_section *section, + int warn_if_readin); + + /* Call a callback for every symbol defined in OBJFILE. FUN is the + callback. It is passed the symbol's natural name, and the DATA + passed to this function. */ + void (*map_symbol_names) (struct objfile *objfile, + void (*fun) (const char *, void *), + void *data); + + /* Call a callback for every file defined in OBJFILE. FUN is the + callback. It is passed the file's name, the file's full name, + and the DATA passed to this function. */ + void (*map_symbol_filenames) (struct objfile *objfile, + void (*fun) (const char *, const char *, + void *), + void *data); +}; + /* Structure to keep track of symbol reading functions for various object file types. */ @@ -132,11 +293,10 @@ struct sym_fns void (*sym_init) (struct objfile *); - /* sym_read (objfile, mainline) Reads a symbol file into a psymtab + /* sym_read (objfile, symfile_flags) Reads a symbol file into a psymtab (or possibly a symtab). OBJFILE is the objfile struct for the - file we are reading. MAINLINE is 1 if this is the main symbol - table being read, and 0 if a secondary symbol file (e.g. shared - library or dynamically loaded file) is being read. */ + file we are reading. SYMFILE_FLAGS are the flags passed to + symbol_file_add & co. */ void (*sym_read) (struct objfile *, int); @@ -164,8 +324,19 @@ struct sym_fns /* This function should read the linetable from the objfile when the line table cannot be read while processing the debugging information. */ + void (*sym_read_linetable) (void); + /* Relocate the contents of a debug section SECTP. The + contents are stored in BUF if it is non-NULL, or returned in a + malloc'd buffer otherwise. */ + + bfd_byte *(*sym_relocate) (struct objfile *, asection *sectp, bfd_byte *buf); + + /* The "quick" (aka partial) symbol functions for this symbol + reader. */ + const struct quick_symbol_functions *qf; + /* Finds the next struct sym_fns. They are allocated and initialized in whatever module implements the functions pointed to; an initializer calls add_symtab_fns to add them to the global @@ -175,6 +346,16 @@ struct sym_fns }; +extern struct section_addr_info * + build_section_addr_info_from_objfile (const struct objfile *objfile); + +extern void relative_addr_info_to_section_offsets + (struct section_offsets *section_offsets, int num_sections, + struct section_addr_info *addrs); + +extern void addr_info_make_relative (struct section_addr_info *addrs, + bfd *abfd); + /* The default version of sym_fns.sym_offsets for readers that don't do anything special. */ @@ -186,6 +367,12 @@ extern void default_symfile_offsets (struct objfile *objfile, extern struct symfile_segment_data *default_symfile_segments (bfd *abfd); +/* The default version of sym_fns.sym_relocate for readers that don't + do anything special. */ + +extern bfd_byte *default_symfile_relocate (struct objfile *objfile, + asection *sectp, bfd_byte *buf); + extern void extend_psymbol_list (struct psymbol_allocation_list *, struct objfile *); @@ -194,7 +381,7 @@ extern void extend_psymbol_list (struct psymbol_allocation_list *, /* #include "demangle.h" */ extern const -struct partial_symbol *add_psymbol_to_list (char *, int, domain_enum, +struct partial_symbol *add_psymbol_to_list (char *, int, int, domain_enum, enum address_class, struct psymbol_allocation_list *, long, CORE_ADDR, @@ -202,12 +389,8 @@ struct partial_symbol *add_psymbol_to_list (char *, int, domain_enum, extern void init_psymbol_list (struct objfile *, int); -extern void sort_pst_symbols (struct partial_symtab *); - extern struct symtab *allocate_symtab (char *, struct objfile *); -extern int free_named_symtabs (char *); - extern void add_symtab_fns (struct sym_fns *); /* This enum encodes bit-flags passed as ADD_FLAGS parameter to @@ -239,16 +422,15 @@ extern struct objfile *symbol_file_add_from_bfd (bfd *, int, struct section_addr_info *, int); +extern void symbol_file_add_separate (bfd *, int, struct objfile *); + +extern char *find_separate_debug_file_by_debuglink (struct objfile *); + /* Create a new section_addr_info, with room for NUM_SECTIONS. */ extern struct section_addr_info *alloc_section_addr_info (size_t num_sections); -/* Return a freshly allocated copy of ADDRS. The section names, if - any, are also freshly allocated copies of those in ADDRS. */ -extern struct section_addr_info *(copy_section_addr_info - (struct section_addr_info *addrs)); - /* Build (allocate and populate) a section_addr_info struct from an existing section table. */ @@ -266,7 +448,7 @@ extern void free_section_addr_info (struct section_addr_info *); extern struct partial_symtab *start_psymtab_common (struct objfile *, struct section_offsets *, - char *, CORE_ADDR, + const char *, CORE_ADDR, struct partial_symbol **, struct partial_symbol **); @@ -276,11 +458,11 @@ extern struct partial_symtab *start_psymtab_common (struct objfile *, extern char *obsavestring (const char *, int, struct obstack *); -/* Concatenate strings S1, S2 and S3; return the new string. Space is - found in the OBSTACKP */ +/* Concatenate NULL terminated variable argument list of `const char *' strings; + return the new string. Space is found in the OBSTACKP. Argument list must + be terminated by a sentinel expression `(char *) NULL'. */ -extern char *obconcat (struct obstack *obstackp, const char *, const char *, - const char *); +extern char *obconcat (struct obstack *obstackp, ...) ATTRIBUTE_SENTINEL; /* Variables */ @@ -309,7 +491,8 @@ extern int auto_solib_limit; extern void set_initial_language (void); -extern struct partial_symtab *allocate_psymtab (char *, struct objfile *); +extern struct partial_symtab *allocate_psymtab (const char *, + struct objfile *); extern void discard_psymtab (struct partial_symtab *); @@ -317,6 +500,8 @@ extern void find_lowest_section (bfd *, asection *, void *); extern bfd *symfile_bfd_open (char *); +extern bfd *bfd_open_maybe_remote (const char *); + extern int get_section_index (struct objfile *, char *); /* Utility functions for overlay sections: */ @@ -365,8 +550,8 @@ extern void symbol_file_clear (int from_tty); /* Default overlay update function. */ extern void simple_overlay_update (struct obj_section *); -extern bfd_byte *symfile_relocate_debug_section (bfd *abfd, asection *sectp, - bfd_byte * buf); +extern bfd_byte *symfile_relocate_debug_section (struct objfile *, asection *, + bfd_byte *); extern int symfile_map_offsets_to_segments (bfd *, struct symfile_segment_data *, @@ -375,11 +560,13 @@ extern int symfile_map_offsets_to_segments (bfd *, struct symfile_segment_data *get_symfile_segment_data (bfd *abfd); void free_symfile_segment_data (struct symfile_segment_data *data); +extern struct cleanup *increment_reading_symtab (void); + /* From dwarf2read.c */ extern int dwarf2_has_info (struct objfile *); -extern void dwarf2_build_psymtabs (struct objfile *, int); +extern void dwarf2_build_psymtabs (struct objfile *); extern void dwarf2_build_frame_info (struct objfile *); void dwarf2_free_objfile (struct objfile *); diff --git a/contrib/gdb-7/gdb/symmisc.c b/contrib/gdb-7/gdb/symmisc.c index eb35369f9e..62e6b97263 100644 --- a/contrib/gdb-7/gdb/symmisc.c +++ b/contrib/gdb-7/gdb/symmisc.c @@ -1,7 +1,7 @@ /* Do various things to symbol tables (other than lookup), for GDB. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009 + 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -39,6 +39,8 @@ #include "gdb_string.h" #include "readline/readline.h" +#include "psymtab.h" + #ifndef DEV_TTY #define DEV_TTY "/dev/tty" #endif @@ -58,19 +60,12 @@ FILE *std_err; static void dump_symtab (struct objfile *, struct symtab *, struct ui_file *); -static void dump_psymtab (struct objfile *, struct partial_symtab *, - struct ui_file *); - static void dump_msymbols (struct objfile *, struct ui_file *); static void dump_objfile (struct objfile *); static int block_depth (struct block *); -static void print_partial_symbols (struct gdbarch *, - struct partial_symbol **, int, - char *, struct ui_file *); - void _initialize_symmisc (void); struct print_symbol_args @@ -93,9 +88,6 @@ static int print_symbol (void *); void free_symtab (struct symtab *s) { - int i, n; - struct blockvector *bv; - switch (s->free_code) { case free_nothing: @@ -130,14 +122,17 @@ free_symtab (struct symtab *s) void print_symbol_bcache_statistics (void) { + struct program_space *pspace; struct objfile *objfile; immediate_quit++; - ALL_OBJFILES (objfile) + ALL_PSPACES (pspace) + ALL_PSPACE_OBJFILES (pspace, objfile) { printf_filtered (_("Byte cache statistics for '%s':\n"), objfile->name); print_bcache_statistics (objfile->psymbol_cache, "partial symbol cache"); print_bcache_statistics (objfile->macro_cache, "preprocessor macro cache"); + print_bcache_statistics (objfile->filename_cache, "file name cache"); } immediate_quit--; } @@ -145,13 +140,14 @@ print_symbol_bcache_statistics (void) void print_objfile_statistics (void) { + struct program_space *pspace; struct objfile *objfile; struct symtab *s; - struct partial_symtab *ps; int i, linetables, blockvectors; immediate_quit++; - ALL_OBJFILES (objfile) + ALL_PSPACES (pspace) + ALL_PSPACE_OBJFILES (pspace, objfile) { printf_filtered (_("Statistics for '%s':\n"), objfile->name); if (OBJSTAT (objfile, n_stabs) > 0) @@ -169,13 +165,8 @@ print_objfile_statistics (void) if (OBJSTAT (objfile, n_types) > 0) printf_filtered (_(" Number of \"types\" defined: %d\n"), OBJSTAT (objfile, n_types)); - i = 0; - ALL_OBJFILE_PSYMTABS (objfile, ps) - { - if (ps->readin == 0) - i++; - } - printf_filtered (_(" Number of psym tables (not yet expanded): %d\n"), i); + if (objfile->sf) + objfile->sf->qf->print_stats (objfile); i = linetables = blockvectors = 0; ALL_OBJFILE_SYMTABS (objfile, s) { @@ -200,6 +191,8 @@ print_objfile_statistics (void) bcache_memory_used (objfile->psymbol_cache)); printf_filtered (_(" Total memory used for macro cache: %d\n"), bcache_memory_used (objfile->macro_cache)); + printf_filtered (_(" Total memory used for file name cache: %d\n"), + bcache_memory_used (objfile->filename_cache)); } immediate_quit--; } @@ -208,7 +201,6 @@ static void dump_objfile (struct objfile *objfile) { struct symtab *symtab; - struct partial_symtab *psymtab; printf_filtered ("\nObject file %s: ", objfile->name); printf_filtered ("Objfile at "); @@ -218,25 +210,8 @@ dump_objfile (struct objfile *objfile) printf_filtered (", %d minsyms\n\n", objfile->minimal_symbol_count); - if (objfile->psymtabs) - { - printf_filtered ("Psymtabs:\n"); - for (psymtab = objfile->psymtabs; - psymtab != NULL; - psymtab = psymtab->next) - { - printf_filtered ("%s at ", - psymtab->filename); - gdb_print_host_address (psymtab, gdb_stdout); - printf_filtered (", "); - if (psymtab->objfile != objfile) - { - printf_filtered ("NOT ON CHAIN! "); - } - wrap_here (" "); - } - printf_filtered ("\n\n"); - } + if (objfile->sf) + objfile->sf->qf->dump (objfile); if (objfile->symtabs) { @@ -337,76 +312,6 @@ dump_msymbols (struct objfile *objfile, struct ui_file *outfile) fprintf_filtered (outfile, "\n"); } -static void -dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab, - struct ui_file *outfile) -{ - struct gdbarch *gdbarch = get_objfile_arch (objfile); - int i; - - fprintf_filtered (outfile, "\nPartial symtab for source file %s ", - psymtab->filename); - fprintf_filtered (outfile, "(object "); - gdb_print_host_address (psymtab, outfile); - fprintf_filtered (outfile, ")\n\n"); - fprintf_unfiltered (outfile, " Read from object file %s (", - objfile->name); - gdb_print_host_address (objfile, outfile); - fprintf_unfiltered (outfile, ")\n"); - - if (psymtab->readin) - { - fprintf_filtered (outfile, - " Full symtab was read (at "); - gdb_print_host_address (psymtab->symtab, outfile); - fprintf_filtered (outfile, " by function at "); - gdb_print_host_address (psymtab->read_symtab, outfile); - fprintf_filtered (outfile, ")\n"); - } - - fprintf_filtered (outfile, " Relocate symbols by "); - for (i = 0; i < psymtab->objfile->num_sections; ++i) - { - if (i != 0) - fprintf_filtered (outfile, ", "); - wrap_here (" "); - fputs_filtered (paddress (gdbarch, - ANOFFSET (psymtab->section_offsets, i)), - outfile); - } - fprintf_filtered (outfile, "\n"); - - fprintf_filtered (outfile, " Symbols cover text addresses "); - fputs_filtered (paddress (gdbarch, psymtab->textlow), outfile); - fprintf_filtered (outfile, "-"); - fputs_filtered (paddress (gdbarch, psymtab->texthigh), outfile); - fprintf_filtered (outfile, "\n"); - fprintf_filtered (outfile, " Depends on %d other partial symtabs.\n", - psymtab->number_of_dependencies); - for (i = 0; i < psymtab->number_of_dependencies; i++) - { - fprintf_filtered (outfile, " %d ", i); - gdb_print_host_address (psymtab->dependencies[i], outfile); - fprintf_filtered (outfile, " %s\n", - psymtab->dependencies[i]->filename); - } - if (psymtab->n_global_syms > 0) - { - print_partial_symbols (gdbarch, - objfile->global_psymbols.list - + psymtab->globals_offset, - psymtab->n_global_syms, "Global", outfile); - } - if (psymtab->n_static_syms > 0) - { - print_partial_symbols (gdbarch, - objfile->static_psymbols.list - + psymtab->statics_offset, - psymtab->n_static_syms, "Static", outfile); - } - fprintf_filtered (outfile, "\n"); -} - static void dump_symtab_1 (struct objfile *objfile, struct symtab *symtab, struct ui_file *outfile) @@ -414,7 +319,7 @@ dump_symtab_1 (struct objfile *objfile, struct symtab *symtab, struct gdbarch *gdbarch = get_objfile_arch (objfile); int i; struct dict_iterator iter; - int len, blen; + int len; struct linetable *l; struct blockvector *bv; struct symbol *sym; @@ -486,6 +391,7 @@ dump_symtab_1 (struct objfile *objfile, struct symtab *symtab, ALL_BLOCK_SYMBOLS (b, iter, sym) { struct print_symbol_args s; + s.gdbarch = gdbarch; s.symbol = sym; s.depth = depth + 1; @@ -646,6 +552,7 @@ print_symbol (void *args) { unsigned i; struct type *type = check_typedef (SYMBOL_TYPE (symbol)); + fprintf_filtered (outfile, "const %u hex bytes:", TYPE_LENGTH (type)); for (i = 0; i < TYPE_LENGTH (type); i++) @@ -742,142 +649,6 @@ print_symbol (void *args) return 1; } -void -maintenance_print_psymbols (char *args, int from_tty) -{ - char **argv; - struct ui_file *outfile; - struct cleanup *cleanups; - char *symname = NULL; - char *filename = DEV_TTY; - struct objfile *objfile; - struct partial_symtab *ps; - - dont_repeat (); - - if (args == NULL) - { - error (_("print-psymbols takes an output file name and optional symbol file name")); - } - argv = gdb_buildargv (args); - cleanups = make_cleanup_freeargv (argv); - - if (argv[0] != NULL) - { - filename = argv[0]; - /* If a second arg is supplied, it is a source file name to match on */ - if (argv[1] != NULL) - { - symname = argv[1]; - } - } - - filename = tilde_expand (filename); - make_cleanup (xfree, filename); - - outfile = gdb_fopen (filename, FOPEN_WT); - if (outfile == 0) - perror_with_name (filename); - make_cleanup_ui_file_delete (outfile); - - immediate_quit++; - ALL_PSYMTABS (objfile, ps) - if (symname == NULL || strcmp (symname, ps->filename) == 0) - dump_psymtab (objfile, ps, outfile); - immediate_quit--; - do_cleanups (cleanups); -} - -static void -print_partial_symbols (struct gdbarch *gdbarch, - struct partial_symbol **p, int count, char *what, - struct ui_file *outfile) -{ - fprintf_filtered (outfile, " %s partial symbols:\n", what); - while (count-- > 0) - { - fprintf_filtered (outfile, " `%s'", SYMBOL_LINKAGE_NAME (*p)); - if (SYMBOL_DEMANGLED_NAME (*p) != NULL) - { - fprintf_filtered (outfile, " `%s'", SYMBOL_DEMANGLED_NAME (*p)); - } - fputs_filtered (", ", outfile); - switch (SYMBOL_DOMAIN (*p)) - { - case UNDEF_DOMAIN: - fputs_filtered ("undefined domain, ", outfile); - break; - case VAR_DOMAIN: - /* This is the usual thing -- don't print it */ - break; - case STRUCT_DOMAIN: - fputs_filtered ("struct domain, ", outfile); - break; - case LABEL_DOMAIN: - fputs_filtered ("label domain, ", outfile); - break; - default: - fputs_filtered (", ", outfile); - break; - } - switch (SYMBOL_CLASS (*p)) - { - case LOC_UNDEF: - fputs_filtered ("undefined", outfile); - break; - case LOC_CONST: - fputs_filtered ("constant int", outfile); - break; - case LOC_STATIC: - fputs_filtered ("static", outfile); - break; - case LOC_REGISTER: - fputs_filtered ("register", outfile); - break; - case LOC_ARG: - fputs_filtered ("pass by value", outfile); - break; - case LOC_REF_ARG: - fputs_filtered ("pass by reference", outfile); - break; - case LOC_REGPARM_ADDR: - fputs_filtered ("register address parameter", outfile); - break; - case LOC_LOCAL: - fputs_filtered ("stack parameter", outfile); - break; - case LOC_TYPEDEF: - fputs_filtered ("type", outfile); - break; - case LOC_LABEL: - fputs_filtered ("label", outfile); - break; - case LOC_BLOCK: - fputs_filtered ("function", outfile); - break; - case LOC_CONST_BYTES: - fputs_filtered ("constant bytes", outfile); - break; - case LOC_UNRESOLVED: - fputs_filtered ("unresolved", outfile); - break; - case LOC_OPTIMIZED_OUT: - fputs_filtered ("optimized out", outfile); - break; - case LOC_COMPUTED: - fputs_filtered ("computed at runtime", outfile); - break; - default: - fputs_filtered ("", outfile); - break; - } - fputs_filtered (", ", outfile); - fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (*p)), outfile); - fprintf_filtered (outfile, "\n"); - p++; - } -} - void maintenance_print_msymbols (char *args, int from_tty) { @@ -886,6 +657,7 @@ maintenance_print_msymbols (char *args, int from_tty) struct cleanup *cleanups; char *filename = DEV_TTY; char *symname = NULL; + struct program_space *pspace; struct objfile *objfile; struct stat sym_st, obj_st; @@ -921,10 +693,11 @@ maintenance_print_msymbols (char *args, int from_tty) make_cleanup_ui_file_delete (outfile); immediate_quit++; - ALL_OBJFILES (objfile) - if (symname == NULL - || (!stat (objfile->name, &obj_st) && sym_st.st_ino == obj_st.st_ino)) - dump_msymbols (objfile, outfile); + ALL_PSPACES (pspace) + ALL_PSPACE_OBJFILES (pspace, objfile) + if (symname == NULL + || (!stat (objfile->name, &obj_st) && sym_st.st_ino == obj_st.st_ino)) + dump_msymbols (objfile, outfile); immediate_quit--; fprintf_filtered (outfile, "\n\n"); do_cleanups (cleanups); @@ -933,13 +706,15 @@ maintenance_print_msymbols (char *args, int from_tty) void maintenance_print_objfiles (char *ignore, int from_tty) { + struct program_space *pspace; struct objfile *objfile; dont_repeat (); immediate_quit++; - ALL_OBJFILES (objfile) - dump_objfile (objfile); + ALL_PSPACES (pspace) + ALL_PSPACE_OBJFILES (pspace, objfile) + dump_objfile (objfile); immediate_quit--; } @@ -948,12 +723,14 @@ maintenance_print_objfiles (char *ignore, int from_tty) void maintenance_info_symtabs (char *regexp, int from_tty) { + struct program_space *pspace; struct objfile *objfile; if (regexp) re_comp (regexp); - ALL_OBJFILES (objfile) + ALL_PSPACES (pspace) + ALL_PSPACE_OBJFILES (pspace, objfile) { struct symtab *symtab; @@ -999,192 +776,6 @@ maintenance_info_symtabs (char *regexp, int from_tty) printf_filtered ("}\n"); } } - - -/* List all the partial symbol tables whose names match REGEXP (optional). */ -void -maintenance_info_psymtabs (char *regexp, int from_tty) -{ - struct objfile *objfile; - - if (regexp) - re_comp (regexp); - - ALL_OBJFILES (objfile) - { - struct gdbarch *gdbarch = get_objfile_arch (objfile); - struct partial_symtab *psymtab; - - /* We don't want to print anything for this objfile until we - actually find a symtab whose name matches. */ - int printed_objfile_start = 0; - - ALL_OBJFILE_PSYMTABS (objfile, psymtab) - { - QUIT; - - if (! regexp - || re_exec (psymtab->filename)) - { - if (! printed_objfile_start) - { - printf_filtered ("{ objfile %s ", objfile->name); - wrap_here (" "); - printf_filtered ("((struct objfile *) %s)\n", - host_address_to_string (objfile)); - printed_objfile_start = 1; - } - - printf_filtered (" { psymtab %s ", psymtab->filename); - wrap_here (" "); - printf_filtered ("((struct partial_symtab *) %s)\n", - host_address_to_string (psymtab)); - - printf_filtered (" readin %s\n", - psymtab->readin ? "yes" : "no"); - printf_filtered (" fullname %s\n", - psymtab->fullname ? psymtab->fullname : "(null)"); - printf_filtered (" text addresses "); - fputs_filtered (paddress (gdbarch, psymtab->textlow), - gdb_stdout); - printf_filtered (" -- "); - fputs_filtered (paddress (gdbarch, psymtab->texthigh), - gdb_stdout); - printf_filtered ("\n"); - printf_filtered (" globals "); - if (psymtab->n_global_syms) - { - printf_filtered ("(* (struct partial_symbol **) %s @ %d)\n", - host_address_to_string (psymtab->objfile->global_psymbols.list - + psymtab->globals_offset), - psymtab->n_global_syms); - } - else - printf_filtered ("(none)\n"); - printf_filtered (" statics "); - if (psymtab->n_static_syms) - { - printf_filtered ("(* (struct partial_symbol **) %s @ %d)\n", - host_address_to_string (psymtab->objfile->static_psymbols.list - + psymtab->statics_offset), - psymtab->n_static_syms); - } - else - printf_filtered ("(none)\n"); - printf_filtered (" dependencies "); - if (psymtab->number_of_dependencies) - { - int i; - - printf_filtered ("{\n"); - for (i = 0; i < psymtab->number_of_dependencies; i++) - { - struct partial_symtab *dep = psymtab->dependencies[i]; - - /* Note the string concatenation there --- no comma. */ - printf_filtered (" psymtab %s " - "((struct partial_symtab *) %s)\n", - dep->filename, - host_address_to_string (dep)); - } - printf_filtered (" }\n"); - } - else - printf_filtered ("(none)\n"); - printf_filtered (" }\n"); - } - } - - if (printed_objfile_start) - printf_filtered ("}\n"); - } -} - - -/* Check consistency of psymtabs and symtabs. */ - -void -maintenance_check_symtabs (char *ignore, int from_tty) -{ - struct symbol *sym; - struct partial_symbol **psym; - struct symtab *s = NULL; - struct partial_symtab *ps; - struct blockvector *bv; - struct objfile *objfile; - struct block *b; - int length; - - ALL_PSYMTABS (objfile, ps) - { - struct gdbarch *gdbarch = get_objfile_arch (objfile); - s = PSYMTAB_TO_SYMTAB (ps); - if (s == NULL) - continue; - bv = BLOCKVECTOR (s); - b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK); - psym = ps->objfile->static_psymbols.list + ps->statics_offset; - length = ps->n_static_syms; - while (length--) - { - sym = lookup_block_symbol (b, SYMBOL_LINKAGE_NAME (*psym), - NULL, SYMBOL_DOMAIN (*psym)); - if (!sym) - { - printf_filtered ("Static symbol `"); - puts_filtered (SYMBOL_LINKAGE_NAME (*psym)); - printf_filtered ("' only found in "); - puts_filtered (ps->filename); - printf_filtered (" psymtab\n"); - } - psym++; - } - b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); - psym = ps->objfile->global_psymbols.list + ps->globals_offset; - length = ps->n_global_syms; - while (length--) - { - sym = lookup_block_symbol (b, SYMBOL_LINKAGE_NAME (*psym), - NULL, SYMBOL_DOMAIN (*psym)); - if (!sym) - { - printf_filtered ("Global symbol `"); - puts_filtered (SYMBOL_LINKAGE_NAME (*psym)); - printf_filtered ("' only found in "); - puts_filtered (ps->filename); - printf_filtered (" psymtab\n"); - } - psym++; - } - if (ps->texthigh < ps->textlow) - { - printf_filtered ("Psymtab "); - puts_filtered (ps->filename); - printf_filtered (" covers bad range "); - fputs_filtered (paddress (gdbarch, ps->textlow), gdb_stdout); - printf_filtered (" - "); - fputs_filtered (paddress (gdbarch, ps->texthigh), gdb_stdout); - printf_filtered ("\n"); - continue; - } - if (ps->texthigh == 0) - continue; - if (ps->textlow < BLOCK_START (b) || ps->texthigh > BLOCK_END (b)) - { - printf_filtered ("Psymtab "); - puts_filtered (ps->filename); - printf_filtered (" covers "); - fputs_filtered (paddress (gdbarch, ps->textlow), gdb_stdout); - printf_filtered (" - "); - fputs_filtered (paddress (gdbarch, ps->texthigh), gdb_stdout); - printf_filtered (" but symtab covers only "); - fputs_filtered (paddress (gdbarch, BLOCK_START (b)), gdb_stdout); - printf_filtered (" - "); - fputs_filtered (paddress (gdbarch, BLOCK_END (b)), gdb_stdout); - printf_filtered ("\n"); - } - } -} /* Return the nexting depth of a block within other blocks in its symtab. */ @@ -1193,6 +784,7 @@ static int block_depth (struct block *block) { int i = 0; + while ((block = BLOCK_SUPERBLOCK (block)) != NULL) { i++; @@ -1201,35 +793,6 @@ block_depth (struct block *block) } -/* Increase the space allocated for LISTP, which is probably - global_psymbols or static_psymbols. This space will eventually - be freed in free_objfile(). */ - -void -extend_psymbol_list (struct psymbol_allocation_list *listp, - struct objfile *objfile) -{ - int new_size; - if (listp->size == 0) - { - new_size = 255; - listp->list = (struct partial_symbol **) - xmalloc (new_size * sizeof (struct partial_symbol *)); - } - else - { - new_size = listp->size * 2; - listp->list = (struct partial_symbol **) - xrealloc ((char *) listp->list, - new_size * sizeof (struct partial_symbol *)); - } - /* Next assumes we only went one over. Should be good if - program works correctly */ - listp->next = listp->list + listp->size; - listp->size = new_size; -} - - /* Do early runtime initializations. */ void _initialize_symmisc (void) diff --git a/contrib/gdb-7/gdb/symtab.c b/contrib/gdb-7/gdb/symtab.c index 8d9d72c865..2c4c9e495e 100644 --- a/contrib/gdb-7/gdb/symtab.c +++ b/contrib/gdb-7/gdb/symtab.c @@ -1,8 +1,8 @@ /* Symbol table lookup for the GNU debugger, GDB. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -39,6 +39,7 @@ #include "source.h" #include "filenames.h" /* for FILENAME_CMP */ #include "objc-lang.h" +#include "d-lang.h" #include "ada-lang.h" #include "p-lang.h" #include "addrmap.h" @@ -62,6 +63,8 @@ #include "macrotab.h" #include "macroscope.h" +#include "psymtab.h" + /* Prototypes for local functions */ static void completion_list_add_name (char *, char *, int, char *, char *); @@ -85,7 +88,6 @@ static int find_line_common (struct linetable *, int, int *); char *operator_chars (char *p, char **end); static struct symbol *lookup_symbol_aux (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain, enum language language, @@ -93,23 +95,20 @@ static struct symbol *lookup_symbol_aux (const char *name, static struct symbol *lookup_symbol_aux_local (const char *name, - const char *linkage_name, const struct block *block, - const domain_enum domain); + const domain_enum domain, + enum language language); static struct symbol *lookup_symbol_aux_symtabs (int block_index, const char *name, - const char *linkage_name, const domain_enum domain); static -struct symbol *lookup_symbol_aux_psymtabs (int block_index, - const char *name, - const char *linkage_name, - const domain_enum domain); - -static int file_matches (char *, char **, int); +struct symbol *lookup_symbol_aux_quick (struct objfile *objfile, + int block_index, + const char *name, + const domain_enum domain); static void print_symbol_info (domain_enum, struct symtab *, struct symbol *, int, char *); @@ -159,8 +158,8 @@ const struct block *block_found; struct symtab * lookup_symtab (const char *name) { - struct symtab *s; - struct partial_symtab *ps; + int found; + struct symtab *s = NULL; struct objfile *objfile; char *real_path = NULL; char *full_path = NULL; @@ -192,6 +191,7 @@ got_symtab: if (full_path != NULL) { const char *fp = symtab_to_fullname (s); + if (fp != NULL && FILENAME_CMP (full_path, fp) == 0) { return s; @@ -201,9 +201,11 @@ got_symtab: if (real_path != NULL) { char *fullname = symtab_to_fullname (s); + if (fullname != NULL) { char *rp = gdb_realpath (fullname); + make_cleanup (xfree, rp); if (FILENAME_CMP (real_path, rp) == 0) { @@ -225,18 +227,22 @@ got_symtab: /* Same search rules as above apply here, but now we look thru the psymtabs. */ - ps = lookup_partial_symtab (name); - if (!ps) - return (NULL); - - if (ps->readin) - error (_("Internal: readin %s pst for `%s' found when no symtab found."), - ps->filename, name); - - s = PSYMTAB_TO_SYMTAB (ps); + found = 0; + ALL_OBJFILES (objfile) + { + if (objfile->sf + && objfile->sf->qf->lookup_symtab (objfile, name, full_path, real_path, + &s)) + { + found = 1; + break; + } + } - if (s) + if (s != NULL) return s; + if (!found) + return NULL; /* At this point, we have located the psymtab for this file, but the conversion to a symtab has failed. This usually happens @@ -248,75 +254,6 @@ got_symtab: symbol parsing routines. */ goto got_symtab; } - -/* Lookup the partial symbol table of a source file named NAME. - *If* there is no '/' in the name, a match after a '/' - in the psymtab filename will also work. */ - -struct partial_symtab * -lookup_partial_symtab (const char *name) -{ - struct partial_symtab *pst; - struct objfile *objfile; - char *full_path = NULL; - char *real_path = NULL; - - /* Here we are interested in canonicalizing an absolute path, not - absolutizing a relative path. */ - if (IS_ABSOLUTE_PATH (name)) - { - full_path = xfullpath (name); - make_cleanup (xfree, full_path); - real_path = gdb_realpath (name); - make_cleanup (xfree, real_path); - } - - ALL_PSYMTABS (objfile, pst) - { - if (FILENAME_CMP (name, pst->filename) == 0) - { - return (pst); - } - - /* If the user gave us an absolute path, try to find the file in - this symtab and use its absolute path. */ - if (full_path != NULL) - { - psymtab_to_fullname (pst); - if (pst->fullname != NULL - && FILENAME_CMP (full_path, pst->fullname) == 0) - { - return pst; - } - } - - if (real_path != NULL) - { - char *rp = NULL; - psymtab_to_fullname (pst); - if (pst->fullname != NULL) - { - rp = gdb_realpath (pst->fullname); - make_cleanup (xfree, rp); - } - if (rp != NULL && FILENAME_CMP (real_path, rp) == 0) - { - return pst; - } - } - } - - /* Now, search for a matching tail (only if name doesn't have any dirs) */ - - if (lbasename (name) == name) - ALL_PSYMTABS (objfile, pst) - { - if (FILENAME_CMP (lbasename (pst->filename), name) == 0) - return (pst); - } - - return (NULL); -} /* Mangle a GDB method stub type. This actually reassembles the pieces of the full method name, which consist of the class name (from T), the unadorned @@ -386,13 +323,12 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id) mangled_name_len = ((is_constructor ? 0 : strlen (field_name)) + strlen (buf) + len + strlen (physname) + 1); - { - mangled_name = (char *) xmalloc (mangled_name_len); - if (is_constructor) - mangled_name[0] = '\0'; - else - strcpy (mangled_name, field_name); - } + mangled_name = (char *) xmalloc (mangled_name_len); + if (is_constructor) + mangled_name[0] = '\0'; + else + strcpy (mangled_name, field_name); + strcat (mangled_name, buf); /* If the class doesn't have a name, i.e. newname NULL, then we just mangle it using 0 for the length of the class. Thus it gets mangled @@ -413,8 +349,10 @@ symbol_init_language_specific (struct general_symbol_info *gsymbol, { gsymbol->language = language; if (gsymbol->language == language_cplus + || gsymbol->language == language_d || gsymbol->language == language_java - || gsymbol->language == language_objc) + || gsymbol->language == language_objc + || gsymbol->language == language_fortran) { gsymbol->language_specific.cplus_specific.demangled_name = NULL; } @@ -427,6 +365,32 @@ symbol_init_language_specific (struct general_symbol_info *gsymbol, /* Functions to initialize a symbol's mangled name. */ +/* Objects of this type are stored in the demangled name hash table. */ +struct demangled_name_entry +{ + char *mangled; + char demangled[1]; +}; + +/* Hash function for the demangled name hash. */ +static hashval_t +hash_demangled_name_entry (const void *data) +{ + const struct demangled_name_entry *e = data; + + return htab_hash_string (e->mangled); +} + +/* Equality function for the demangled name hash. */ +static int +eq_demangled_name_entry (const void *a, const void *b) +{ + const struct demangled_name_entry *da = a; + const struct demangled_name_entry *db = b; + + return strcmp (da->mangled, db->mangled) == 0; +} + /* Create the hash table used for demangled names. Each hash entry is a pair of strings; one for the mangled name and one for the demangled name. The entry is hashed via just the mangled name. */ @@ -440,7 +404,7 @@ create_demangled_names_hash (struct objfile *objfile) 1% in symbol reading. */ objfile->demangled_names_hash = htab_create_alloc - (256, htab_hash_string, (int (*) (const void *, const void *)) streq, + (256, hash_demangled_name_entry, eq_demangled_name_entry, NULL, xcalloc, xfree); } @@ -474,7 +438,7 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol, || gsymbol->language == language_auto) { demangled = - cplus_demangle (mangled, DMGL_PARAMS | DMGL_ANSI); + cplus_demangle (mangled, DMGL_PARAMS | DMGL_ANSI | DMGL_VERBOSE); if (demangled != NULL) { gsymbol->language = language_cplus; @@ -492,14 +456,34 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol, return demangled; } } + if (gsymbol->language == language_d + || gsymbol->language == language_auto) + { + demangled = d_demangle(mangled, 0); + if (demangled != NULL) + { + gsymbol->language = language_d; + return demangled; + } + } + /* We could support `gsymbol->language == language_fortran' here to provide + module namespaces also for inferiors with only minimal symbol table (ELF + symbols). Just the mangling standard is not standardized across compilers + and there is no DW_AT_producer available for inferiors with only the ELF + symbols to check the mangling kind. */ return NULL; } /* Set both the mangled and demangled (if any) names for GSYMBOL based - on LINKAGE_NAME and LEN. The hash table corresponding to OBJFILE - is used, and the memory comes from that objfile's objfile_obstack. - LINKAGE_NAME is copied, so the pointer can be discarded after - calling this function. */ + on LINKAGE_NAME and LEN. Ordinarily, NAME is copied onto the + objfile's obstack; but if COPY_NAME is 0 and if NAME is + NUL-terminated, then this function assumes that NAME is already + correctly saved (either permanently or with a lifetime tied to the + objfile), and it will not be copied. + + The hash table corresponding to OBJFILE is used, and the memory + comes from that objfile's objfile_obstack. LINKAGE_NAME is copied, + so the pointer can be discarded after calling this function. */ /* We have to be careful when dealing with Java names: when we run into a Java minimal symbol, we don't know it's a Java symbol, so it @@ -522,9 +506,10 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol, void symbol_set_names (struct general_symbol_info *gsymbol, - const char *linkage_name, int len, struct objfile *objfile) + const char *linkage_name, int len, int copy_name, + struct objfile *objfile) { - char **slot; + struct demangled_name_entry **slot; /* A 0-terminated copy of the linkage name. */ const char *linkage_name_copy; /* A copy of the linkage name that might have a special Java prefix @@ -532,9 +517,7 @@ symbol_set_names (struct general_symbol_info *gsymbol, const char *lookup_name; /* The length of lookup_name. */ int lookup_len; - - if (objfile->demangled_names_hash == NULL) - create_demangled_names_hash (objfile); + struct demangled_name_entry entry; if (gsymbol->language == language_ada) { @@ -546,22 +529,30 @@ symbol_set_names (struct general_symbol_info *gsymbol, been observed with Java. Because we don't store the demangled name with the symbol, we don't need to use the same trick as Java. */ - gsymbol->name = obstack_alloc (&objfile->objfile_obstack, len + 1); - memcpy (gsymbol->name, linkage_name, len); - gsymbol->name[len] = '\0'; + if (!copy_name) + gsymbol->name = (char *) linkage_name; + else + { + gsymbol->name = obstack_alloc (&objfile->objfile_obstack, len + 1); + memcpy (gsymbol->name, linkage_name, len); + gsymbol->name[len] = '\0'; + } gsymbol->language_specific.cplus_specific.demangled_name = NULL; return; } + if (objfile->demangled_names_hash == NULL) + create_demangled_names_hash (objfile); + /* The stabs reader generally provides names that are not NUL-terminated; most of the other readers don't do this, so we can just use the given copy, unless we're in the Java case. */ if (gsymbol->language == language_java) { char *alloc_name; - lookup_len = len + JAVA_PREFIX_LEN; + lookup_len = len + JAVA_PREFIX_LEN; alloc_name = alloca (lookup_len + 1); memcpy (alloc_name, JAVA_PREFIX, JAVA_PREFIX_LEN); memcpy (alloc_name + JAVA_PREFIX_LEN, linkage_name, len); @@ -573,8 +564,8 @@ symbol_set_names (struct general_symbol_info *gsymbol, else if (linkage_name[len] != '\0') { char *alloc_name; - lookup_len = len; + lookup_len = len; alloc_name = alloca (lookup_len + 1); memcpy (alloc_name, linkage_name, len); alloc_name[lookup_len] = '\0'; @@ -589,8 +580,10 @@ symbol_set_names (struct general_symbol_info *gsymbol, linkage_name_copy = linkage_name; } - slot = (char **) htab_find_slot (objfile->demangled_names_hash, - lookup_name, INSERT); + entry.mangled = (char *) lookup_name; + slot = ((struct demangled_name_entry **) + htab_find_slot (objfile->demangled_names_hash, + &entry, INSERT)); /* If this name is not in the hash table, add it. */ if (*slot == NULL) @@ -599,25 +592,49 @@ symbol_set_names (struct general_symbol_info *gsymbol, linkage_name_copy); int demangled_len = demangled_name ? strlen (demangled_name) : 0; - /* If there is a demangled name, place it right after the mangled name. - Otherwise, just place a second zero byte after the end of the mangled - name. */ - *slot = obstack_alloc (&objfile->objfile_obstack, - lookup_len + demangled_len + 2); - memcpy (*slot, lookup_name, lookup_len + 1); + /* Suppose we have demangled_name==NULL, copy_name==0, and + lookup_name==linkage_name. In this case, we already have the + mangled name saved, and we don't have a demangled name. So, + you might think we could save a little space by not recording + this in the hash table at all. + + It turns out that it is actually important to still save such + an entry in the hash table, because storing this name gives + us better bcache hit rates for partial symbols. */ + if (!copy_name && lookup_name == linkage_name) + { + *slot = obstack_alloc (&objfile->objfile_obstack, + offsetof (struct demangled_name_entry, + demangled) + + demangled_len + 1); + (*slot)->mangled = (char *) lookup_name; + } + else + { + /* If we must copy the mangled name, put it directly after + the demangled name so we can have a single + allocation. */ + *slot = obstack_alloc (&objfile->objfile_obstack, + offsetof (struct demangled_name_entry, + demangled) + + lookup_len + demangled_len + 2); + (*slot)->mangled = &((*slot)->demangled[demangled_len + 1]); + strcpy ((*slot)->mangled, lookup_name); + } + if (demangled_name != NULL) { - memcpy (*slot + lookup_len + 1, demangled_name, demangled_len + 1); + strcpy ((*slot)->demangled, demangled_name); xfree (demangled_name); } else - (*slot)[lookup_len + 1] = '\0'; + (*slot)->demangled[0] = '\0'; } - gsymbol->name = *slot + lookup_len - len; - if ((*slot)[lookup_len + 1] != '\0') + gsymbol->name = (*slot)->mangled + lookup_len - len; + if ((*slot)->demangled[0] != '\0') gsymbol->language_specific.cplus_specific.demangled_name - = &(*slot)[lookup_len + 1]; + = (*slot)->demangled; else gsymbol->language_specific.cplus_specific.demangled_name = NULL; } @@ -631,8 +648,10 @@ symbol_natural_name (const struct general_symbol_info *gsymbol) switch (gsymbol->language) { case language_cplus: + case language_d: case language_java: case language_objc: + case language_fortran: if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) return gsymbol->language_specific.cplus_specific.demangled_name; break; @@ -656,8 +675,10 @@ symbol_demangled_name (const struct general_symbol_info *gsymbol) switch (gsymbol->language) { case language_cplus: + case language_d: case language_java: case language_objc: + case language_fortran: if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) return gsymbol->language_specific.cplus_specific.demangled_name; break; @@ -690,6 +711,7 @@ symbol_search_name (const struct general_symbol_info *gsymbol) void init_sal (struct symtab_and_line *sal) { + sal->pspace = NULL; sal->symtab = 0; sal->section = 0; sal->line = 0; @@ -765,89 +787,8 @@ matching_obj_sections (struct obj_section *obj_first, return 0; } -/* Find which partial symtab contains PC and SECTION starting at psymtab PST. - We may find a different psymtab than PST. See FIND_PC_SECT_PSYMTAB. */ - -static struct partial_symtab * -find_pc_sect_psymtab_closer (CORE_ADDR pc, struct obj_section *section, - struct partial_symtab *pst, - struct minimal_symbol *msymbol) -{ - struct objfile *objfile = pst->objfile; - struct partial_symtab *tpst; - struct partial_symtab *best_pst = pst; - CORE_ADDR best_addr = pst->textlow; - - /* An objfile that has its functions reordered might have - many partial symbol tables containing the PC, but - we want the partial symbol table that contains the - function containing the PC. */ - if (!(objfile->flags & OBJF_REORDERED) && - section == 0) /* can't validate section this way */ - return pst; - - if (msymbol == NULL) - return (pst); - - /* The code range of partial symtabs sometimes overlap, so, in - the loop below, we need to check all partial symtabs and - find the one that fits better for the given PC address. We - select the partial symtab that contains a symbol whose - address is closest to the PC address. By closest we mean - that find_pc_sect_symbol returns the symbol with address - that is closest and still less than the given PC. */ - for (tpst = pst; tpst != NULL; tpst = tpst->next) - { - if (pc >= tpst->textlow && pc < tpst->texthigh) - { - struct partial_symbol *p; - CORE_ADDR this_addr; - - /* NOTE: This assumes that every psymbol has a - corresponding msymbol, which is not necessarily - true; the debug info might be much richer than the - object's symbol table. */ - p = find_pc_sect_psymbol (tpst, pc, section); - if (p != NULL - && SYMBOL_VALUE_ADDRESS (p) - == SYMBOL_VALUE_ADDRESS (msymbol)) - return tpst; - - /* Also accept the textlow value of a psymtab as a - "symbol", to provide some support for partial - symbol tables with line information but no debug - symbols (e.g. those produced by an assembler). */ - if (p != NULL) - this_addr = SYMBOL_VALUE_ADDRESS (p); - else - this_addr = tpst->textlow; - - /* Check whether it is closer than our current - BEST_ADDR. Since this symbol address is - necessarily lower or equal to PC, the symbol closer - to PC is the symbol which address is the highest. - This way we return the psymtab which contains such - best match symbol. This can help in cases where the - symbol information/debuginfo is not complete, like - for instance on IRIX6 with gcc, where no debug info - is emitted for statics. (See also the nodebug.exp - testcase.) */ - if (this_addr > best_addr) - { - best_addr = this_addr; - best_pst = tpst; - } - } - } - return best_pst; -} - -/* Find which partial symtab contains PC and SECTION. Return 0 if - none. We return the psymtab that contains a symbol whose address - exactly matches PC, or, if we cannot find an exact match, the - psymtab that contains a symbol whose address is closest to PC. */ -struct partial_symtab * -find_pc_sect_psymtab (CORE_ADDR pc, struct obj_section *section) +struct symtab * +find_pc_sect_symtab_via_partial (CORE_ADDR pc, struct obj_section *section) { struct objfile *objfile; struct minimal_symbol *msymbol; @@ -864,166 +805,24 @@ find_pc_sect_psymtab (CORE_ADDR pc, struct obj_section *section) || MSYMBOL_TYPE (msymbol) == mst_file_bss)) return NULL; - /* Try just the PSYMTABS_ADDRMAP mapping first as it has better granularity - than the later used TEXTLOW/TEXTHIGH one. */ - - ALL_OBJFILES (objfile) - if (objfile->psymtabs_addrmap != NULL) - { - struct partial_symtab *pst; - - pst = addrmap_find (objfile->psymtabs_addrmap, pc); - if (pst != NULL) - { - /* FIXME: addrmaps currently do not handle overlayed sections, - so fall back to the non-addrmap case if we're debugging - overlays and the addrmap returned the wrong section. */ - if (overlay_debugging && msymbol && section) - { - struct partial_symbol *p; - /* NOTE: This assumes that every psymbol has a - corresponding msymbol, which is not necessarily - true; the debug info might be much richer than the - object's symbol table. */ - p = find_pc_sect_psymbol (pst, pc, section); - if (!p - || SYMBOL_VALUE_ADDRESS (p) - != SYMBOL_VALUE_ADDRESS (msymbol)) - continue; - } - - /* We do not try to call FIND_PC_SECT_PSYMTAB_CLOSER as - PSYMTABS_ADDRMAP we used has already the best 1-byte - granularity and FIND_PC_SECT_PSYMTAB_CLOSER may mislead us into - a worse chosen section due to the TEXTLOW/TEXTHIGH ranges - overlap. */ - - return pst; - } - } - - /* Existing PSYMTABS_ADDRMAP mapping is present even for PARTIAL_SYMTABs - which still have no corresponding full SYMTABs read. But it is not - present for non-DWARF2 debug infos not supporting PSYMTABS_ADDRMAP in GDB - so far. */ - ALL_OBJFILES (objfile) - { - struct partial_symtab *pst; - - /* Check even OBJFILE with non-zero PSYMTABS_ADDRMAP as only several of - its CUs may be missing in PSYMTABS_ADDRMAP as they may be varying - debug info type in single OBJFILE. */ - - ALL_OBJFILE_PSYMTABS (objfile, pst) - if (pc >= pst->textlow && pc < pst->texthigh) - { - struct partial_symtab *best_pst; + { + struct symtab *result = NULL; - best_pst = find_pc_sect_psymtab_closer (pc, section, pst, - msymbol); - if (best_pst != NULL) - return best_pst; - } - } + if (objfile->sf) + result = objfile->sf->qf->find_pc_sect_symtab (objfile, msymbol, + pc, section, 0); + if (result) + return result; + } return NULL; } - -/* Find which partial symtab contains PC. Return 0 if none. - Backward compatibility, no section */ - -struct partial_symtab * -find_pc_psymtab (CORE_ADDR pc) -{ - return find_pc_sect_psymtab (pc, find_pc_mapped_section (pc)); -} - -/* Find which partial symbol within a psymtab matches PC and SECTION. - Return 0 if none. Check all psymtabs if PSYMTAB is 0. */ - -struct partial_symbol * -find_pc_sect_psymbol (struct partial_symtab *psymtab, CORE_ADDR pc, - struct obj_section *section) -{ - struct partial_symbol *best = NULL, *p, **pp; - CORE_ADDR best_pc; - - if (!psymtab) - psymtab = find_pc_sect_psymtab (pc, section); - if (!psymtab) - return 0; - - /* Cope with programs that start at address 0 */ - best_pc = (psymtab->textlow != 0) ? psymtab->textlow - 1 : 0; - - /* Search the global symbols as well as the static symbols, so that - find_pc_partial_function doesn't use a minimal symbol and thus - cache a bad endaddr. */ - for (pp = psymtab->objfile->global_psymbols.list + psymtab->globals_offset; - (pp - (psymtab->objfile->global_psymbols.list + psymtab->globals_offset) - < psymtab->n_global_syms); - pp++) - { - p = *pp; - if (SYMBOL_DOMAIN (p) == VAR_DOMAIN - && SYMBOL_CLASS (p) == LOC_BLOCK - && pc >= SYMBOL_VALUE_ADDRESS (p) - && (SYMBOL_VALUE_ADDRESS (p) > best_pc - || (psymtab->textlow == 0 - && best_pc == 0 && SYMBOL_VALUE_ADDRESS (p) == 0))) - { - if (section) /* match on a specific section */ - { - fixup_psymbol_section (p, psymtab->objfile); - if (!matching_obj_sections (SYMBOL_OBJ_SECTION (p), section)) - continue; - } - best_pc = SYMBOL_VALUE_ADDRESS (p); - best = p; - } - } - - for (pp = psymtab->objfile->static_psymbols.list + psymtab->statics_offset; - (pp - (psymtab->objfile->static_psymbols.list + psymtab->statics_offset) - < psymtab->n_static_syms); - pp++) - { - p = *pp; - if (SYMBOL_DOMAIN (p) == VAR_DOMAIN - && SYMBOL_CLASS (p) == LOC_BLOCK - && pc >= SYMBOL_VALUE_ADDRESS (p) - && (SYMBOL_VALUE_ADDRESS (p) > best_pc - || (psymtab->textlow == 0 - && best_pc == 0 && SYMBOL_VALUE_ADDRESS (p) == 0))) - { - if (section) /* match on a specific section */ - { - fixup_psymbol_section (p, psymtab->objfile); - if (!matching_obj_sections (SYMBOL_OBJ_SECTION (p), section)) - continue; - } - best_pc = SYMBOL_VALUE_ADDRESS (p); - best = p; - } - } - - return best; -} - -/* Find which partial symbol within a psymtab matches PC. Return 0 if none. - Check all psymtabs if PSYMTAB is 0. Backwards compatibility, no section. */ - -struct partial_symbol * -find_pc_psymbol (struct partial_symtab *psymtab, CORE_ADDR pc) -{ - return find_pc_sect_psymbol (psymtab, pc, find_pc_mapped_section (pc)); -} /* Debug symbols usually don't have section information. We need to dig that out of the minimal symbols and stash that in the debug symbol. */ -static void +void fixup_section (struct general_symbol_info *ginfo, CORE_ADDR addr, struct objfile *objfile) { @@ -1079,6 +878,7 @@ fixup_section (struct general_symbol_info *ginfo, a search of the section table. */ struct obj_section *s; + ALL_OBJFILE_OSECTIONS (objfile, s) { int idx = s->the_bfd_section->index; @@ -1137,37 +937,6 @@ fixup_symbol_section (struct symbol *sym, struct objfile *objfile) return sym; } -struct partial_symbol * -fixup_psymbol_section (struct partial_symbol *psym, struct objfile *objfile) -{ - CORE_ADDR addr; - - if (!psym) - return NULL; - - if (SYMBOL_OBJ_SECTION (psym)) - return psym; - - gdb_assert (objfile); - - switch (SYMBOL_CLASS (psym)) - { - case LOC_STATIC: - case LOC_LABEL: - case LOC_BLOCK: - addr = SYMBOL_VALUE_ADDRESS (psym); - break; - default: - /* Nothing else will be listed in the minsyms -- no use looking - it up. */ - return psym; - } - - fixup_section (&psym->ginfo, addr, objfile); - - return psym; -} - /* Find the definition for a specified symbol name NAME in domain DOMAIN, visible from lexical block BLOCK. Returns the struct symbol pointer, or zero if no symbol is found. @@ -1194,20 +963,18 @@ lookup_symbol_in_language (const char *name, const struct block *block, { char *demangled_name = NULL; const char *modified_name = NULL; - const char *mangled_name = NULL; struct symbol *returnval; struct cleanup *cleanup = make_cleanup (null_cleanup, 0); modified_name = name; - /* If we are using C++ or Java, demangle the name before doing a lookup, so - we can always binary search. */ + /* If we are using C++, D, or Java, demangle the name before doing a + lookup, so we can always binary search. */ if (lang == language_cplus) { demangled_name = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS); if (demangled_name) { - mangled_name = name; modified_name = demangled_name; make_cleanup (xfree, demangled_name); } @@ -1229,7 +996,15 @@ lookup_symbol_in_language (const char *name, const struct block *block, DMGL_ANSI | DMGL_PARAMS | DMGL_JAVA); if (demangled_name) { - mangled_name = name; + modified_name = demangled_name; + make_cleanup (xfree, demangled_name); + } + } + else if (lang == language_d) + { + demangled_name = d_demangle (name, 0); + if (demangled_name) + { modified_name = demangled_name; make_cleanup (xfree, demangled_name); } @@ -1248,8 +1023,8 @@ lookup_symbol_in_language (const char *name, const struct block *block, modified_name = copy; } - returnval = lookup_symbol_aux (modified_name, mangled_name, block, - domain, lang, is_a_field_of_this); + returnval = lookup_symbol_aux (modified_name, block, domain, lang, + is_a_field_of_this); do_cleanups (cleanup); return returnval; @@ -1273,9 +1048,9 @@ lookup_symbol (const char *name, const struct block *block, well. */ static struct symbol * -lookup_symbol_aux (const char *name, const char *linkage_name, - const struct block *block, const domain_enum domain, - enum language language, int *is_a_field_of_this) +lookup_symbol_aux (const char *name, const struct block *block, + const domain_enum domain, enum language language, + int *is_a_field_of_this) { struct symbol *sym; const struct language_defn *langdef; @@ -1291,12 +1066,12 @@ lookup_symbol_aux (const char *name, const char *linkage_name, /* Search specified block and its superiors. Don't search STATIC_BLOCK or GLOBAL_BLOCK. */ - sym = lookup_symbol_aux_local (name, linkage_name, block, domain); + sym = lookup_symbol_aux_local (name, block, domain, language); if (sym != NULL) return sym; /* If requested to do so by the caller and if appropriate for LANGUAGE, - check to see if NAME is a field of `this'. */ + check to see if NAME is a field of `this'. */ langdef = language_def (language); @@ -1304,14 +1079,16 @@ lookup_symbol_aux (const char *name, const char *linkage_name, && block != NULL) { struct symbol *sym = NULL; + const struct block *function_block = block; + /* 'this' is only defined in the function's block, so find the enclosing function block. */ - for (; block && !BLOCK_FUNCTION (block); - block = BLOCK_SUPERBLOCK (block)); + for (; function_block && !BLOCK_FUNCTION (function_block); + function_block = BLOCK_SUPERBLOCK (function_block)); - if (block && !dict_empty (BLOCK_DICT (block))) - sym = lookup_block_symbol (block, langdef->la_name_of_this, - NULL, VAR_DOMAIN); + if (function_block && !dict_empty (BLOCK_DICT (function_block))) + sym = lookup_block_symbol (function_block, langdef->la_name_of_this, + VAR_DOMAIN); if (sym) { struct type *t = sym->type; @@ -1339,24 +1116,38 @@ lookup_symbol_aux (const char *name, const char *linkage_name, /* Now do whatever is appropriate for LANGUAGE to look up static and global variables. */ - sym = langdef->la_lookup_symbol_nonlocal (name, linkage_name, block, domain); + sym = langdef->la_lookup_symbol_nonlocal (name, block, domain); if (sym != NULL) return sym; /* Now search all static file-level symbols. Not strictly correct, - but more useful than an error. Do the symtabs first, then check - the psymtabs. If a psymtab indicates the existence of the - desired name as a file-level static, then do psymtab-to-symtab - conversion on the fly and return the found symbol. */ + but more useful than an error. */ - sym = lookup_symbol_aux_symtabs (STATIC_BLOCK, name, linkage_name, domain); - if (sym != NULL) - return sym; + return lookup_static_symbol_aux (name, domain); +} + +/* Search all static file-level symbols for NAME from DOMAIN. Do the symtabs + first, then check the psymtabs. If a psymtab indicates the existence of the + desired name as a file-level static, then do psymtab-to-symtab conversion on + the fly and return the found symbol. */ - sym = lookup_symbol_aux_psymtabs (STATIC_BLOCK, name, linkage_name, domain); +struct symbol * +lookup_static_symbol_aux (const char *name, const domain_enum domain) +{ + struct objfile *objfile; + struct symbol *sym; + + sym = lookup_symbol_aux_symtabs (STATIC_BLOCK, name, domain); if (sym != NULL) return sym; + ALL_OBJFILES (objfile) + { + sym = lookup_symbol_aux_quick (objfile, STATIC_BLOCK, name, domain); + if (sym != NULL) + return sym; + } + return NULL; } @@ -1364,13 +1155,14 @@ lookup_symbol_aux (const char *name, const char *linkage_name, Don't search STATIC_BLOCK or GLOBAL_BLOCK. */ static struct symbol * -lookup_symbol_aux_local (const char *name, const char *linkage_name, - const struct block *block, - const domain_enum domain) +lookup_symbol_aux_local (const char *name, const struct block *block, + const domain_enum domain, + enum language language) { struct symbol *sym; const struct block *static_block = block_static_block (block); - + const char *scope = block_scope (block); + /* Check if either no block is specified or it's a global block. */ if (static_block == NULL) @@ -1378,10 +1170,22 @@ lookup_symbol_aux_local (const char *name, const char *linkage_name, while (block != static_block) { - sym = lookup_symbol_aux_block (name, linkage_name, block, domain); + sym = lookup_symbol_aux_block (name, block, domain); if (sym != NULL) return sym; + if (language == language_cplus || language == language_fortran) + { + sym = cp_lookup_symbol_imports (scope, + name, + block, + domain, + 1, + 1); + if (sym != NULL) + return sym; + } + if (BLOCK_FUNCTION (block) != NULL && block_inlined_p (block)) break; block = BLOCK_SUPERBLOCK (block); @@ -1394,7 +1198,7 @@ lookup_symbol_aux_local (const char *name, const char *linkage_name, /* Look up OBJFILE to BLOCK. */ -static struct objfile * +struct objfile * lookup_objfile_from_block (const struct block *block) { struct objfile *obj; @@ -1407,7 +1211,12 @@ lookup_objfile_from_block (const struct block *block) /* Go through SYMTABS. */ ALL_SYMTABS (obj, s) if (block == BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK)) - return obj; + { + if (obj->separate_debug_objfile_backlink) + obj = obj->separate_debug_objfile_backlink; + + return obj; + } return NULL; } @@ -1416,13 +1225,12 @@ lookup_objfile_from_block (const struct block *block) block_found appropriately. */ struct symbol * -lookup_symbol_aux_block (const char *name, const char *linkage_name, - const struct block *block, +lookup_symbol_aux_block (const char *name, const struct block *block, const domain_enum domain) { struct symbol *sym; - sym = lookup_block_symbol (block, name, linkage_name, domain); + sym = lookup_block_symbol (block, name, domain); if (sym) { block_found = block; @@ -1436,48 +1244,38 @@ lookup_symbol_aux_block (const char *name, const char *linkage_name, psymtabs. */ struct symbol * -lookup_global_symbol_from_objfile (const struct objfile *objfile, +lookup_global_symbol_from_objfile (const struct objfile *main_objfile, const char *name, - const char *linkage_name, const domain_enum domain) { + const struct objfile *objfile; struct symbol *sym; struct blockvector *bv; const struct block *block; struct symtab *s; - struct partial_symtab *ps; - /* Go through symtabs. */ - ALL_OBJFILE_SYMTABS (objfile, s) - { - bv = BLOCKVECTOR (s); - block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); - sym = lookup_block_symbol (block, name, linkage_name, domain); - if (sym) - { - block_found = block; - return fixup_symbol_section (sym, (struct objfile *)objfile); - } - } - - /* Now go through psymtabs. */ - ALL_OBJFILE_PSYMTABS (objfile, ps) - { - if (!ps->readin - && lookup_partial_symbol (ps, name, linkage_name, - 1, domain)) - { - s = PSYMTAB_TO_SYMTAB (ps); - bv = BLOCKVECTOR (s); - block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); - sym = lookup_block_symbol (block, name, linkage_name, domain); - return fixup_symbol_section (sym, (struct objfile *)objfile); - } - } - - if (objfile->separate_debug_objfile) - return lookup_global_symbol_from_objfile (objfile->separate_debug_objfile, - name, linkage_name, domain); + for (objfile = main_objfile; + objfile; + objfile = objfile_separate_debug_iterate (main_objfile, objfile)) + { + /* Go through symtabs. */ + ALL_OBJFILE_SYMTABS (objfile, s) + { + bv = BLOCKVECTOR (s); + block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); + sym = lookup_block_symbol (block, name, domain); + if (sym) + { + block_found = block; + return fixup_symbol_section (sym, (struct objfile *)objfile); + } + } + + sym = lookup_symbol_aux_quick ((struct objfile *) objfile, GLOBAL_BLOCK, + name, domain); + if (sym) + return sym; + } return NULL; } @@ -1488,8 +1286,7 @@ lookup_global_symbol_from_objfile (const struct objfile *objfile, static symbols. */ static struct symbol * -lookup_symbol_aux_symtabs (int block_index, - const char *name, const char *linkage_name, +lookup_symbol_aux_symtabs (int block_index, const char *name, const domain_enum domain) { struct symbol *sym; @@ -1502,7 +1299,7 @@ lookup_symbol_aux_symtabs (int block_index, { bv = BLOCKVECTOR (s); block = BLOCKVECTOR_BLOCK (bv, block_index); - sym = lookup_block_symbol (block, name, linkage_name, domain); + sym = lookup_block_symbol (block, name, domain); if (sym) { block_found = block; @@ -1513,61 +1310,50 @@ lookup_symbol_aux_symtabs (int block_index, return NULL; } -/* Check to see if the symbol is defined in one of the partial - symtabs. BLOCK_INDEX should be either GLOBAL_BLOCK or - STATIC_BLOCK, depending on whether or not we want to search global - symbols or static symbols. */ +/* A helper function for lookup_symbol_aux that interfaces with the + "quick" symbol table functions. */ static struct symbol * -lookup_symbol_aux_psymtabs (int block_index, const char *name, - const char *linkage_name, - const domain_enum domain) +lookup_symbol_aux_quick (struct objfile *objfile, int kind, + const char *name, const domain_enum domain) { - struct symbol *sym; - struct objfile *objfile; + struct symtab *symtab; struct blockvector *bv; const struct block *block; - struct partial_symtab *ps; - struct symtab *s; - const int psymtab_index = (block_index == GLOBAL_BLOCK ? 1 : 0); + struct symbol *sym; - ALL_PSYMTABS (objfile, ps) - { - if (!ps->readin - && lookup_partial_symbol (ps, name, linkage_name, - psymtab_index, domain)) - { - s = PSYMTAB_TO_SYMTAB (ps); - bv = BLOCKVECTOR (s); - block = BLOCKVECTOR_BLOCK (bv, block_index); - sym = lookup_block_symbol (block, name, linkage_name, domain); - if (!sym) - { - /* This shouldn't be necessary, but as a last resort try - looking in the statics even though the psymtab claimed - the symbol was global, or vice-versa. It's possible - that the psymtab gets it wrong in some cases. */ - - /* FIXME: carlton/2002-09-30: Should we really do that? - If that happens, isn't it likely to be a GDB error, in - which case we should fix the GDB error rather than - silently dealing with it here? So I'd vote for - removing the check for the symbol in the other - block. */ - block = BLOCKVECTOR_BLOCK (bv, - block_index == GLOBAL_BLOCK ? - STATIC_BLOCK : GLOBAL_BLOCK); - sym = lookup_block_symbol (block, name, linkage_name, domain); - if (!sym) - error (_("Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n%s may be an inlined function, or may be a template function\n(if a template, try specifying an instantiation: %s)."), - block_index == GLOBAL_BLOCK ? "global" : "static", - name, ps->filename, name, name); - } - return fixup_symbol_section (sym, objfile); - } - } + if (!objfile->sf) + return NULL; + symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, domain); + if (!symtab) + return NULL; - return NULL; + bv = BLOCKVECTOR (symtab); + block = BLOCKVECTOR_BLOCK (bv, kind); + sym = lookup_block_symbol (block, name, domain); + if (!sym) + { + /* This shouldn't be necessary, but as a last resort try + looking in the statics even though the psymtab claimed + the symbol was global, or vice-versa. It's possible + that the psymtab gets it wrong in some cases. */ + + /* FIXME: carlton/2002-09-30: Should we really do that? + If that happens, isn't it likely to be a GDB error, in + which case we should fix the GDB error rather than + silently dealing with it here? So I'd vote for + removing the check for the symbol in the other + block. */ + block = BLOCKVECTOR_BLOCK (bv, + kind == GLOBAL_BLOCK ? + STATIC_BLOCK : GLOBAL_BLOCK); + sym = lookup_block_symbol (block, name, domain); + if (!sym) + error (_("Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n%s may be an inlined function, or may be a template function\n(if a template, try specifying an instantiation: %s)."), + kind == GLOBAL_BLOCK ? "global" : "static", + name, symtab->filename, name, name); + } + return fixup_symbol_section (sym, objfile); } /* A default version of lookup_symbol_nonlocal for use by languages @@ -1576,7 +1362,6 @@ lookup_symbol_aux_psymtabs (int block_index, const char *name, struct symbol * basic_lookup_symbol_nonlocal (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain) { @@ -1610,11 +1395,11 @@ basic_lookup_symbol_nonlocal (const char *name, than that one, so I don't think we should worry about that for now. */ - sym = lookup_symbol_static (name, linkage_name, block, domain); + sym = lookup_symbol_static (name, block, domain); if (sym != NULL) return sym; - return lookup_symbol_global (name, linkage_name, block, domain); + return lookup_symbol_global (name, block, domain); } /* Lookup a symbol in the static block associated to BLOCK, if there @@ -1622,14 +1407,13 @@ basic_lookup_symbol_nonlocal (const char *name, struct symbol * lookup_symbol_static (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain) { const struct block *static_block = block_static_block (block); if (static_block != NULL) - return lookup_symbol_aux_block (name, linkage_name, static_block, domain); + return lookup_symbol_aux_block (name, static_block, domain); else return NULL; } @@ -1639,7 +1423,6 @@ lookup_symbol_static (const char *name, struct symbol * lookup_symbol_global (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain) { @@ -1649,15 +1432,22 @@ lookup_symbol_global (const char *name, /* Call library-specific lookup procedure. */ objfile = lookup_objfile_from_block (block); if (objfile != NULL) - sym = solib_global_lookup (objfile, name, linkage_name, domain); + sym = solib_global_lookup (objfile, name, domain); if (sym != NULL) return sym; - sym = lookup_symbol_aux_symtabs (GLOBAL_BLOCK, name, linkage_name, domain); + sym = lookup_symbol_aux_symtabs (GLOBAL_BLOCK, name, domain); if (sym != NULL) return sym; - return lookup_symbol_aux_psymtabs (GLOBAL_BLOCK, name, linkage_name, domain); + ALL_OBJFILES (objfile) + { + sym = lookup_symbol_aux_quick (objfile, GLOBAL_BLOCK, name, domain); + if (sym) + return sym; + } + + return NULL; } int @@ -1669,6 +1459,7 @@ symbol_matches_domain (enum language symbol_language, A Java class declaration also defines a typedef for the class. Similarly, any Ada type declaration implicitly defines a typedef. */ if (symbol_language == language_cplus + || symbol_language == language_d || symbol_language == language_java || symbol_language == language_ada) { @@ -1680,108 +1471,59 @@ symbol_matches_domain (enum language symbol_language, return (symbol_domain == domain); } -/* Look, in partial_symtab PST, for symbol whose natural name is NAME. - If LINKAGE_NAME is non-NULL, check in addition that the symbol's - linkage name matches it. Check the global symbols if GLOBAL, the - static symbols if not */ +/* Look up a type named NAME in the struct_domain. The type returned + must not be opaque -- i.e., must have at least one field + defined. */ -struct partial_symbol * -lookup_partial_symbol (struct partial_symtab *pst, const char *name, - const char *linkage_name, int global, - domain_enum domain) +struct type * +lookup_transparent_type (const char *name) { - struct partial_symbol *temp; - struct partial_symbol **start, **psym; - struct partial_symbol **top, **real_top, **bottom, **center; - int length = (global ? pst->n_global_syms : pst->n_static_syms); - int do_linear_search = 1; - - if (length == 0) - { - return (NULL); - } - start = (global ? - pst->objfile->global_psymbols.list + pst->globals_offset : - pst->objfile->static_psymbols.list + pst->statics_offset); + return current_language->la_lookup_transparent_type (name); +} - if (global) /* This means we can use a binary search. */ - { - do_linear_search = 0; - - /* Binary search. This search is guaranteed to end with center - pointing at the earliest partial symbol whose name might be - correct. At that point *all* partial symbols with an - appropriate name will be checked against the correct - domain. */ - - bottom = start; - top = start + length - 1; - real_top = top; - while (top > bottom) - { - center = bottom + (top - bottom) / 2; - if (!(center < top)) - internal_error (__FILE__, __LINE__, _("failed internal consistency check")); - if (!do_linear_search - && (SYMBOL_LANGUAGE (*center) == language_java)) - { - do_linear_search = 1; - } - if (strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*center), name) >= 0) - { - top = center; - } - else - { - bottom = center + 1; - } - } - if (!(top == bottom)) - internal_error (__FILE__, __LINE__, _("failed internal consistency check")); +/* A helper for basic_lookup_transparent_type that interfaces with the + "quick" symbol table functions. */ - while (top <= real_top - && (linkage_name != NULL - ? strcmp (SYMBOL_LINKAGE_NAME (*top), linkage_name) == 0 - : SYMBOL_MATCHES_SEARCH_NAME (*top,name))) - { - if (symbol_matches_domain (SYMBOL_LANGUAGE (*top), - SYMBOL_DOMAIN (*top), domain)) - return (*top); - top++; - } - } +static struct type * +basic_lookup_transparent_type_quick (struct objfile *objfile, int kind, + const char *name) +{ + struct symtab *symtab; + struct blockvector *bv; + struct block *block; + struct symbol *sym; - /* Can't use a binary search or else we found during the binary search that - we should also do a linear search. */ + if (!objfile->sf) + return NULL; + symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, STRUCT_DOMAIN); + if (!symtab) + return NULL; - if (do_linear_search) + bv = BLOCKVECTOR (symtab); + block = BLOCKVECTOR_BLOCK (bv, kind); + sym = lookup_block_symbol (block, name, STRUCT_DOMAIN); + if (!sym) { - for (psym = start; psym < start + length; psym++) - { - if (symbol_matches_domain (SYMBOL_LANGUAGE (*psym), - SYMBOL_DOMAIN (*psym), domain)) - { - if (linkage_name != NULL - ? strcmp (SYMBOL_LINKAGE_NAME (*psym), linkage_name) == 0 - : SYMBOL_MATCHES_SEARCH_NAME (*psym, name)) - { - return (*psym); - } - } - } + int other_kind = kind == GLOBAL_BLOCK ? STATIC_BLOCK : GLOBAL_BLOCK; + + /* This shouldn't be necessary, but as a last resort + * try looking in the 'other kind' even though the psymtab + * claimed the symbol was one thing. It's possible that + * the psymtab gets it wrong in some cases. + */ + block = BLOCKVECTOR_BLOCK (bv, other_kind); + sym = lookup_block_symbol (block, name, STRUCT_DOMAIN); + if (!sym) + /* FIXME; error is wrong in one case */ + error (_("Internal: global symbol `%s' found in %s psymtab but not in symtab.\n\ +%s may be an inlined function, or may be a template function\n\ +(if a template, try specifying an instantiation: %s)."), + name, symtab->filename, name, name); } + if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym))) + return SYMBOL_TYPE (sym); - return (NULL); -} - -/* Look up a type named NAME in the struct_domain. The type returned - must not be opaque -- i.e., must have at least one field - defined. */ - -struct type * -lookup_transparent_type (const char *name) -{ - return current_language->la_lookup_transparent_type (name); + return NULL; } /* The standard implementation of lookup_transparent_type. This code @@ -1795,10 +1537,10 @@ basic_lookup_transparent_type (const char *name) { struct symbol *sym; struct symtab *s = NULL; - struct partial_symtab *ps; struct blockvector *bv; struct objfile *objfile; struct block *block; + struct type *t; /* Now search all the global symbols. Do the symtab's first, then check the psymtab's. If a psymtab indicates the existence @@ -1809,40 +1551,18 @@ basic_lookup_transparent_type (const char *name) { bv = BLOCKVECTOR (s); block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); - sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN); + sym = lookup_block_symbol (block, name, STRUCT_DOMAIN); if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym))) { return SYMBOL_TYPE (sym); } } - - ALL_PSYMTABS (objfile, ps) - { - if (!ps->readin && lookup_partial_symbol (ps, name, NULL, - 1, STRUCT_DOMAIN)) - { - s = PSYMTAB_TO_SYMTAB (ps); - bv = BLOCKVECTOR (s); - block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); - sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN); - if (!sym) - { - /* This shouldn't be necessary, but as a last resort - * try looking in the statics even though the psymtab - * claimed the symbol was global. It's possible that - * the psymtab gets it wrong in some cases. - */ - block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK); - sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN); - if (!sym) - error (_("Internal: global symbol `%s' found in %s psymtab but not in symtab.\n\ -%s may be an inlined function, or may be a template function\n\ -(if a template, try specifying an instantiation: %s)."), - name, ps->filename, name, name); - } - if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym))) - return SYMBOL_TYPE (sym); - } + + ALL_OBJFILES (objfile) + { + t = basic_lookup_transparent_type_quick (objfile, GLOBAL_BLOCK, name); + if (t) + return t; } /* Now search the static file-level symbols. @@ -1857,60 +1577,41 @@ basic_lookup_transparent_type (const char *name) { bv = BLOCKVECTOR (s); block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK); - sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN); + sym = lookup_block_symbol (block, name, STRUCT_DOMAIN); if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym))) { return SYMBOL_TYPE (sym); } } - ALL_PSYMTABS (objfile, ps) + ALL_OBJFILES (objfile) { - if (!ps->readin && lookup_partial_symbol (ps, name, NULL, 0, STRUCT_DOMAIN)) - { - s = PSYMTAB_TO_SYMTAB (ps); - bv = BLOCKVECTOR (s); - block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK); - sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN); - if (!sym) - { - /* This shouldn't be necessary, but as a last resort - * try looking in the globals even though the psymtab - * claimed the symbol was static. It's possible that - * the psymtab gets it wrong in some cases. - */ - block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK); - sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN); - if (!sym) - error (_("Internal: static symbol `%s' found in %s psymtab but not in symtab.\n\ -%s may be an inlined function, or may be a template function\n\ -(if a template, try specifying an instantiation: %s)."), - name, ps->filename, name, name); - } - if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym))) - return SYMBOL_TYPE (sym); - } + t = basic_lookup_transparent_type_quick (objfile, STATIC_BLOCK, name); + if (t) + return t; } + return (struct type *) 0; } -/* Find the psymtab containing main(). */ +/* Find the name of the file containing main(). */ /* FIXME: What about languages without main() or specially linked executables that have no main() ? */ -struct partial_symtab * -find_main_psymtab (void) +char * +find_main_filename (void) { - struct partial_symtab *pst; struct objfile *objfile; + char *result, *name = main_name (); - ALL_PSYMTABS (objfile, pst) + ALL_OBJFILES (objfile) { - if (lookup_partial_symbol (pst, main_name (), NULL, 1, VAR_DOMAIN)) - { - return (pst); - } + if (!objfile->sf) + continue; + result = objfile->sf->qf->find_symbol_file (objfile, name); + if (result) + return result; } return (NULL); } @@ -1925,14 +1626,10 @@ find_main_psymtab (void) search on the symbols. Each symbol which is marked as being a ObjC/C++ symbol (language_cplus or language_objc set) has both the encoded and non-encoded names tested for a match. - - If LINKAGE_NAME is non-NULL, verify that any symbol we find has this - particular mangled name. */ struct symbol * lookup_block_symbol (const struct block *block, const char *name, - const char *linkage_name, const domain_enum domain) { struct dict_iterator iter; @@ -1945,9 +1642,7 @@ lookup_block_symbol (const struct block *block, const char *name, sym = dict_iter_name_next (name, &iter)) { if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), - SYMBOL_DOMAIN (sym), domain) - && (linkage_name != NULL - ? strcmp (SYMBOL_LINKAGE_NAME (sym), linkage_name) == 0 : 1)) + SYMBOL_DOMAIN (sym), domain)) return sym; } return NULL; @@ -1967,9 +1662,7 @@ lookup_block_symbol (const struct block *block, const char *name, sym = dict_iter_name_next (name, &iter)) { if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), - SYMBOL_DOMAIN (sym), domain) - && (linkage_name != NULL - ? strcmp (SYMBOL_LINKAGE_NAME (sym), linkage_name) == 0 : 1)) + SYMBOL_DOMAIN (sym), domain)) { sym_found = sym; if (!SYMBOL_IS_ARGUMENT (sym)) @@ -1992,11 +1685,13 @@ find_pc_sect_symtab (CORE_ADDR pc, struct obj_section *section) struct blockvector *bv; struct symtab *s = NULL; struct symtab *best_s = NULL; - struct partial_symtab *ps; struct objfile *objfile; + struct program_space *pspace; CORE_ADDR distance = 0; struct minimal_symbol *msymbol; + pspace = current_program_space; + /* If we know that this is not a text address, return failure. This is necessary because we loop based on the block's high and low code addresses, which do not include the data ranges, and because @@ -2042,11 +1737,17 @@ find_pc_sect_symtab (CORE_ADDR pc, struct obj_section *section) /* In order to better support objfiles that contain both stabs and coff debugging info, we continue on if a psymtab can't be found. */ - if ((objfile->flags & OBJF_REORDERED) && objfile->psymtabs) + if ((objfile->flags & OBJF_REORDERED) && objfile->sf) { - ps = find_pc_sect_psymtab (pc, section); - if (ps) - return PSYMTAB_TO_SYMTAB (ps); + struct symtab *result; + + result + = objfile->sf->qf->find_pc_sect_symtab (objfile, + msymbol, + pc, section, + 0); + if (result) + return result; } if (section != 0) { @@ -2070,20 +1771,21 @@ find_pc_sect_symtab (CORE_ADDR pc, struct obj_section *section) if (best_s != NULL) return (best_s); - s = NULL; - ps = find_pc_sect_psymtab (pc, section); - if (ps) - { - if (ps->readin) - /* Might want to error() here (in case symtab is corrupt and - will cause a core dump), but maybe we can successfully - continue, so let's not. */ - warning (_("\ -(Internal error: pc %s in read in psymtab, but not in symtab.)\n"), - paddress (get_objfile_arch (ps->objfile), pc)); - s = PSYMTAB_TO_SYMTAB (ps); - } - return (s); + ALL_OBJFILES (objfile) + { + struct symtab *result; + + if (!objfile->sf) + continue; + result = objfile->sf->qf->find_pc_sect_symtab (objfile, + msymbol, + pc, section, + 1); + if (result) + return result; + } + + return NULL; } /* Find the symtab associated with PC. Look through the psymtabs and @@ -2152,6 +1854,8 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent) init_sal (&val); /* initialize to zeroes */ + val.pspace = current_program_space; + /* It's tempting to assume that, if we can't find debugging info for any function enclosing PC, that we shouldn't search for line number info, either. However, GAS can emit line number info for @@ -2370,7 +2074,8 @@ find_pc_line (CORE_ADDR pc, int notcurrent) If not found, return NULL. */ struct symtab * -find_line_symtab (struct symtab *symtab, int line, int *index, int *exact_match) +find_line_symtab (struct symtab *symtab, int line, + int *index, int *exact_match) { int exact = 0; /* Initialized here to avoid a compiler warning. */ @@ -2401,27 +2106,33 @@ find_line_symtab (struct symtab *symtab, int line, int *index, int *exact_match) struct objfile *objfile; struct symtab *s; - struct partial_symtab *p; if (best_index >= 0) best = best_linetable->item[best_index].line; else best = 0; - ALL_PSYMTABS (objfile, p) + ALL_OBJFILES (objfile) { - if (strcmp (symtab->filename, p->filename) != 0) - continue; - PSYMTAB_TO_SYMTAB (p); + if (objfile->sf) + objfile->sf->qf->expand_symtabs_with_filename (objfile, + symtab->filename); } + /* Get symbol full file name if possible. */ + symtab_to_fullname (symtab); + ALL_SYMTABS (objfile, s) { struct linetable *l; int ind; - if (strcmp (symtab->filename, s->filename) != 0) + if (FILENAME_CMP (symtab->filename, s->filename) != 0) continue; + if (symtab->fullname != NULL + && symtab_to_fullname (s) != NULL + && FILENAME_CMP (symtab->fullname, s->fullname) != 0) + continue; l = LINETABLE (s); ind = find_line_common (l, line, &exact); if (ind >= 0) @@ -2573,32 +2284,13 @@ int find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr) { struct symtab_and_line sal; + sal = find_pc_line (pc, 0); *startptr = sal.pc; *endptr = sal.end; return sal.symtab != 0; } -/* Given a function start address PC and SECTION, find the first - address after the function prologue. */ -CORE_ADDR -find_function_start_pc (struct gdbarch *gdbarch, - CORE_ADDR pc, struct obj_section *section) -{ - /* If the function is in an unmapped overlay, use its unmapped LMA address, - so that gdbarch_skip_prologue has something unique to work on. */ - if (section_is_overlay (section) && !section_is_mapped (section)) - pc = overlay_unmapped_address (pc, section); - - pc += gdbarch_deprecated_function_start_offset (gdbarch); - pc = gdbarch_skip_prologue (gdbarch, pc); - - /* For overlays, map pc back into its mapped VMA range. */ - pc = overlay_mapped_address (pc, section); - - return pc; -} - /* Given a function start address FUNC_ADDR and SYMTAB, find the first address for that function that has an entry in SYMTAB's line info table. If such an entry cannot be found, return FUNC_ADDR @@ -2608,9 +2300,7 @@ skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab) { CORE_ADDR func_start, func_end; struct linetable *l; - int ind, i, len; - int best_lineno = 0; - CORE_ADDR best_pc = func_addr; + int i; /* Give up if this symbol has no lineinfo table. */ l = LINETABLE (symtab); @@ -2648,47 +2338,122 @@ skip_prologue_using_lineinfo (CORE_ADDR func_addr, struct symtab *symtab) struct symtab_and_line find_function_start_sal (struct symbol *sym, int funfirstline) { - struct block *block = SYMBOL_BLOCK_VALUE (sym); - struct objfile *objfile = lookup_objfile_from_block (block); - struct gdbarch *gdbarch = get_objfile_arch (objfile); + struct symtab_and_line sal; + + fixup_symbol_section (sym, NULL); + sal = find_pc_sect_line (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)), + SYMBOL_OBJ_SECTION (sym), 0); + /* We always should have a line for the function start address. + If we don't, something is odd. Create a plain SAL refering + just the PC and hope that skip_prologue_sal (if requested) + can find a line number for after the prologue. */ + if (sal.pc < BLOCK_START (SYMBOL_BLOCK_VALUE (sym))) + { + init_sal (&sal); + sal.pspace = current_program_space; + sal.pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)); + sal.section = SYMBOL_OBJ_SECTION (sym); + } + + if (funfirstline) + skip_prologue_sal (&sal); + + return sal; +} + +/* Adjust SAL to the first instruction past the function prologue. + If the PC was explicitly specified, the SAL is not changed. + If the line number was explicitly specified, at most the SAL's PC + is updated. If SAL is already past the prologue, then do nothing. */ +void +skip_prologue_sal (struct symtab_and_line *sal) +{ + struct symbol *sym; + struct symtab_and_line start_sal; + struct cleanup *old_chain; CORE_ADDR pc; - struct symtab_and_line sal; + struct obj_section *section; + const char *name; + struct objfile *objfile; + struct gdbarch *gdbarch; struct block *b, *function_block; - pc = BLOCK_START (block); - fixup_symbol_section (sym, objfile); - if (funfirstline) + /* Do not change the SAL is PC was specified explicitly. */ + if (sal->explicit_pc) + return; + + old_chain = save_current_space_and_thread (); + switch_to_program_space_and_thread (sal->pspace); + + sym = find_pc_sect_function (sal->pc, sal->section); + if (sym != NULL) + { + fixup_symbol_section (sym, NULL); + + pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)); + section = SYMBOL_OBJ_SECTION (sym); + name = SYMBOL_LINKAGE_NAME (sym); + objfile = SYMBOL_SYMTAB (sym)->objfile; + } + else { - /* Skip "first line" of function (which is actually its prologue). */ - pc = find_function_start_pc (gdbarch, pc, SYMBOL_OBJ_SECTION (sym)); + struct minimal_symbol *msymbol + = lookup_minimal_symbol_by_pc_section (sal->pc, sal->section); + + if (msymbol == NULL) + { + do_cleanups (old_chain); + return; + } + + pc = SYMBOL_VALUE_ADDRESS (msymbol); + section = SYMBOL_OBJ_SECTION (msymbol); + name = SYMBOL_LINKAGE_NAME (msymbol); + objfile = msymbol_objfile (msymbol); } - sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0); + + gdbarch = get_objfile_arch (objfile); + + /* If the function is in an unmapped overlay, use its unmapped LMA address, + so that gdbarch_skip_prologue has something unique to work on. */ + if (section_is_overlay (section) && !section_is_mapped (section)) + pc = overlay_unmapped_address (pc, section); + + /* Skip "first line" of function (which is actually its prologue). */ + pc += gdbarch_deprecated_function_start_offset (gdbarch); + pc = gdbarch_skip_prologue (gdbarch, pc); + + /* For overlays, map pc back into its mapped VMA range. */ + pc = overlay_mapped_address (pc, section); + + /* Calculate line number. */ + start_sal = find_pc_sect_line (pc, section, 0); /* Check if gdbarch_skip_prologue left us in mid-line, and the next line is still part of the same function. */ - if (sal.pc != pc - && BLOCK_START (block) <= sal.end - && sal.end < BLOCK_END (block)) + if (start_sal.pc != pc + && (sym? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end + && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym))) + : (lookup_minimal_symbol_by_pc_section (start_sal.end, section) + == lookup_minimal_symbol_by_pc_section (pc, section)))) { /* First pc of next line */ - pc = sal.end; + pc = start_sal.end; /* Recalculate the line number (might not be N+1). */ - sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0); + start_sal = find_pc_sect_line (pc, section, 0); } /* On targets with executable formats that don't have a concept of constructors (ELF with .init has, PE doesn't), gcc emits a call to `__main' in `main' between the prologue and before user code. */ - if (funfirstline - && gdbarch_skip_main_prologue_p (gdbarch) - && SYMBOL_LINKAGE_NAME (sym) - && strcmp (SYMBOL_LINKAGE_NAME (sym), "main") == 0) + if (gdbarch_skip_main_prologue_p (gdbarch) + && name && strcmp (name, "main") == 0) { pc = gdbarch_skip_main_prologue (gdbarch, pc); /* Recalculate the line number (might not be N+1). */ - sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0); + start_sal = find_pc_sect_line (pc, section, 0); } /* If we still don't have a valid source line, try to find the first @@ -2699,18 +2464,35 @@ find_function_start_sal (struct symbol *sym, int funfirstline) the case with the DJGPP target using "gcc -gcoff" when the compiler inserted code after the prologue to make sure the stack is aligned. */ - if (funfirstline && sal.symtab == NULL) + if (sym && start_sal.symtab == NULL) { pc = skip_prologue_using_lineinfo (pc, SYMBOL_SYMTAB (sym)); /* Recalculate the line number. */ - sal = find_pc_sect_line (pc, SYMBOL_OBJ_SECTION (sym), 0); + start_sal = find_pc_sect_line (pc, section, 0); } - sal.pc = pc; + do_cleanups (old_chain); + + /* If we're already past the prologue, leave SAL unchanged. Otherwise + forward SAL to the end of the prologue. */ + if (sal->pc >= pc) + return; + + sal->pc = pc; + sal->section = section; + + /* Unless the explicit_line flag was set, update the SAL line + and symtab to correspond to the modified PC location. */ + if (sal->explicit_line) + return; + + sal->symtab = start_sal.symtab; + sal->line = start_sal.line; + sal->end = start_sal.end; /* Check if we are now inside an inlined function. If we can, use the call site of the function instead. */ - b = block_for_pc_sect (sal.pc, SYMBOL_OBJ_SECTION (sym)); + b = block_for_pc_sect (sal->pc, sal->section); function_block = NULL; while (b != NULL) { @@ -2723,11 +2505,9 @@ find_function_start_sal (struct symbol *sym, int funfirstline) if (function_block != NULL && SYMBOL_LINE (BLOCK_FUNCTION (function_block)) != 0) { - sal.line = SYMBOL_LINE (BLOCK_FUNCTION (function_block)); - sal.symtab = SYMBOL_SYMTAB (BLOCK_FUNCTION (function_block)); + sal->line = SYMBOL_LINE (BLOCK_FUNCTION (function_block)); + sal->symtab = SYMBOL_SYMTAB (BLOCK_FUNCTION (function_block)); } - - return sal; } /* If P is of the form "operator[ \t]+..." where `...' is @@ -2756,6 +2536,7 @@ operator_chars (char *p, char **end) if (isalpha (*p) || *p == '_' || *p == '$') { char *q = p + 1; + while (isalnum (*q) || *q == '_' || *q == '$') q++; *end = q; @@ -2942,11 +2723,18 @@ output_source_filename (const char *name, int *first) fputs_filtered (name, gdb_stdout); } +/* A callback for map_partial_symbol_filenames. */ +static void +output_partial_symbol_filename (const char *fullname, const char *filename, + void *data) +{ + output_source_filename (fullname ? fullname : filename, data); +} + static void sources_info (char *ignore, int from_tty) { struct symtab *s; - struct partial_symtab *ps; struct objfile *objfile; int first; @@ -2961,6 +2749,7 @@ sources_info (char *ignore, int from_tty) ALL_SYMTABS (objfile, s) { const char *fullname = symtab_to_fullname (s); + output_source_filename (fullname ? fullname : s->filename, &first); } printf_filtered ("\n\n"); @@ -2968,19 +2757,12 @@ sources_info (char *ignore, int from_tty) printf_filtered ("Source files for which symbols will be read in on demand:\n\n"); first = 1; - ALL_PSYMTABS (objfile, ps) - { - if (!ps->readin) - { - const char *fullname = psymtab_to_fullname (ps); - output_source_filename (fullname ? fullname : ps->filename, &first); - } - } + map_partial_symbol_filenames (output_partial_symbol_filename, &first); printf_filtered ("\n"); } static int -file_matches (char *file, char *files[], int nfiles) +file_matches (const char *file, char *files[], int nfiles) { int i; @@ -3070,6 +2852,33 @@ sort_search_symbols (struct symbol_search *prevtail, int nfound) return symp; } +/* An object of this type is passed as the user_data to the + expand_symtabs_matching method. */ +struct search_symbols_data +{ + int nfiles; + char **files; + char *regexp; +}; + +/* A callback for expand_symtabs_matching. */ +static int +search_symbols_file_matches (const char *filename, void *user_data) +{ + struct search_symbols_data *data = user_data; + + return file_matches (filename, data->files, data->nfiles); +} + +/* A callback for expand_symtabs_matching. */ +static int +search_symbols_name_matches (const char *symname, void *user_data) +{ + struct search_symbols_data *data = user_data; + + return data->regexp == NULL || re_exec (symname); +} + /* Search the symbol table for matches to the regular expression REGEXP, returning the results in *MATCHES. @@ -3089,29 +2898,23 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[], struct symbol_search **matches) { struct symtab *s; - struct partial_symtab *ps; struct blockvector *bv; struct block *b; int i = 0; struct dict_iterator iter; struct symbol *sym; - struct partial_symbol **psym; struct objfile *objfile; struct minimal_symbol *msymbol; char *val; int found_misc = 0; static enum minimal_symbol_type types[] - = - {mst_data, mst_text, mst_abs, mst_unknown}; + = {mst_data, mst_text, mst_abs, mst_unknown}; static enum minimal_symbol_type types2[] - = - {mst_bss, mst_file_text, mst_abs, mst_unknown}; + = {mst_bss, mst_file_text, mst_abs, mst_unknown}; static enum minimal_symbol_type types3[] - = - {mst_file_data, mst_solib_trampoline, mst_abs, mst_unknown}; + = {mst_file_data, mst_solib_trampoline, mst_abs, mst_unknown}; static enum minimal_symbol_type types4[] - = - {mst_file_bss, mst_text, mst_abs, mst_unknown}; + = {mst_file_bss, mst_text, mst_abs, mst_unknown}; enum minimal_symbol_type ourtype; enum minimal_symbol_type ourtype2; enum minimal_symbol_type ourtype3; @@ -3120,6 +2923,7 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[], struct symbol_search *psr; struct symbol_search *tail; struct cleanup *old_chain = NULL; + struct search_symbols_data datum; if (kind < VARIABLES_DOMAIN) error (_("must search on specific domain")); @@ -3140,9 +2944,11 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[], and or . */ char *opend; char *opname = operator_chars (regexp, &opend); + if (*opname) { int fix = -1; /* -1 means ok; otherwise number of spaces needed. */ + if (isalpha (*opname) || *opname == '_' || *opname == '$') { /* There should 1 space between 'operator' and 'TYPENAME'. */ @@ -3159,6 +2965,7 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[], if (fix >= 0) { char *tmp = (char *) alloca (8 + fix + strlen (opname) + 1); + sprintf (tmp, "operator%.*s%s", fix, " ", opname); regexp = tmp; } @@ -3172,58 +2979,17 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[], matching the regexp. That way we don't have to reproduce all of the machinery below. */ - ALL_PSYMTABS (objfile, ps) + datum.nfiles = nfiles; + datum.files = files; + datum.regexp = regexp; + ALL_OBJFILES (objfile) { - struct partial_symbol **bound, **gbound, **sbound; - int keep_going = 1; - - if (ps->readin) - continue; - - gbound = objfile->global_psymbols.list + ps->globals_offset + ps->n_global_syms; - sbound = objfile->static_psymbols.list + ps->statics_offset + ps->n_static_syms; - bound = gbound; - - /* Go through all of the symbols stored in a partial - symtab in one loop. */ - psym = objfile->global_psymbols.list + ps->globals_offset; - while (keep_going) - { - if (psym >= bound) - { - if (bound == gbound && ps->n_static_syms != 0) - { - psym = objfile->static_psymbols.list + ps->statics_offset; - bound = sbound; - } - else - keep_going = 0; - continue; - } - else - { - QUIT; - - /* If it would match (logic taken from loop below) - load the file and go on to the next one. We check the - filename here, but that's a bit bogus: we don't know - what file it really comes from until we have full - symtabs. The symbol might be in a header file included by - this psymtab. This only affects Insight. */ - if (file_matches (ps->filename, files, nfiles) - && ((regexp == NULL - || re_exec (SYMBOL_NATURAL_NAME (*psym)) != 0) - && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (*psym) != LOC_TYPEDEF - && SYMBOL_CLASS (*psym) != LOC_BLOCK) - || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (*psym) == LOC_BLOCK) - || (kind == TYPES_DOMAIN && SYMBOL_CLASS (*psym) == LOC_TYPEDEF)))) - { - PSYMTAB_TO_SYMTAB (ps); - keep_going = 0; - } - } - psym++; - } + if (objfile->sf) + objfile->sf->qf->expand_symtabs_matching (objfile, + search_symbols_file_matches, + search_symbols_name_matches, + kind, + &datum); } /* Here, we search through the minimal symbol tables for functions @@ -3280,18 +3046,26 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[], { struct symbol_search *prevtail = tail; int nfound = 0; + b = BLOCKVECTOR_BLOCK (bv, i); ALL_BLOCK_SYMBOLS (b, iter, sym) { struct symtab *real_symtab = SYMBOL_SYMTAB (sym); + QUIT; if (file_matches (real_symtab->filename, files, nfiles) && ((regexp == NULL || re_exec (SYMBOL_NATURAL_NAME (sym)) != 0) - && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (sym) != LOC_TYPEDEF + && ((kind == VARIABLES_DOMAIN + && SYMBOL_CLASS (sym) != LOC_TYPEDEF + && SYMBOL_CLASS (sym) != LOC_UNRESOLVED && SYMBOL_CLASS (sym) != LOC_BLOCK - && SYMBOL_CLASS (sym) != LOC_CONST) + /* LOC_CONST can be used for more than just enums, + e.g., c++ static const members. + We only want to skip enums here. */ + && !(SYMBOL_CLASS (sym) == LOC_CONST + && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_ENUM)) || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (sym) == LOC_BLOCK) || (kind == TYPES_DOMAIN && SYMBOL_CLASS (sym) == LOC_TYPEDEF)))) { @@ -3445,9 +3219,7 @@ print_msymbol_info (struct minimal_symbol *msymbol) static void symtab_symbol_info (char *regexp, domain_enum kind, int from_tty) { - static char *classnames[] - = - {"variable", "function", "type", "method"}; + static char *classnames[] = {"variable", "function", "type", "method"}; struct symbol_search *symbols; struct symbol_search *p; struct cleanup *old_chain; @@ -3517,23 +3289,66 @@ rbreak_command_wrapper (char *regexp, int from_tty) rbreak_command (regexp, from_tty); } +/* A cleanup function that calls end_rbreak_breakpoints. */ + +static void +do_end_rbreak_breakpoints (void *ignore) +{ + end_rbreak_breakpoints (); +} + static void rbreak_command (char *regexp, int from_tty) { struct symbol_search *ss; struct symbol_search *p; struct cleanup *old_chain; + char *string = NULL; + int len = 0; + char **files = NULL; + int nfiles = 0; + + if (regexp) + { + char *colon = strchr (regexp, ':'); + + if (colon && *(colon + 1) != ':') + { + int colon_index; + char * file_name; + + colon_index = colon - regexp; + file_name = alloca (colon_index + 1); + memcpy (file_name, regexp, colon_index); + file_name[colon_index--] = 0; + while (isspace (file_name[colon_index])) + file_name[colon_index--] = 0; + files = &file_name; + nfiles = 1; + regexp = colon + 1; + while (isspace (*regexp)) regexp++; + } + } - search_symbols (regexp, FUNCTIONS_DOMAIN, 0, (char **) NULL, &ss); + search_symbols (regexp, FUNCTIONS_DOMAIN, nfiles, files, &ss); old_chain = make_cleanup_free_search_symbols (ss); + make_cleanup (free_current_contents, &string); + start_rbreak_breakpoints (); + make_cleanup (do_end_rbreak_breakpoints, NULL); for (p = ss; p != NULL; p = p->next) { if (p->msymbol == NULL) { - char *string = alloca (strlen (p->symtab->filename) - + strlen (SYMBOL_LINKAGE_NAME (p->symbol)) - + 4); + int newlen = (strlen (p->symtab->filename) + + strlen (SYMBOL_LINKAGE_NAME (p->symbol)) + + 4); + + if (newlen > len) + { + string = xrealloc (string, newlen); + len = newlen; + } strcpy (string, p->symtab->filename); strcat (string, ":'"); strcat (string, SYMBOL_LINKAGE_NAME (p->symbol)); @@ -3547,8 +3362,13 @@ rbreak_command (char *regexp, int from_tty) } else { - char *string = alloca (strlen (SYMBOL_LINKAGE_NAME (p->msymbol)) - + 3); + int newlen = (strlen (SYMBOL_LINKAGE_NAME (p->msymbol)) + 3); + + if (newlen > len) + { + string = xrealloc (string, newlen); + len = newlen; + } strcpy (string, "'"); strcat (string, SYMBOL_LINKAGE_NAME (p->msymbol)); strcat (string, "'"); @@ -3582,7 +3402,6 @@ completion_list_add_name (char *symname, char *sym_text, int sym_text_len, char *text, char *word) { int newsize; - int i; /* clip symbols that cannot match */ @@ -3596,6 +3415,7 @@ completion_list_add_name (char *symname, char *sym_text, int sym_text_len, { char *new; + if (word == sym_text) { new = xmalloc (strlen (symname) + 5); @@ -3749,10 +3569,10 @@ completion_list_add_fields (struct symbol *sym, char *sym_text, } } -/* Type of the user_data argument passed to add_macro_name. The - contents are simply whatever is needed by - completion_list_add_name. */ -struct add_macro_name_data +/* Type of the user_data argument passed to add_macro_name or + add_partial_symbol_name. The contents are simply whatever is + needed by completion_list_add_name. */ +struct add_name_data { char *sym_text; int sym_text_len; @@ -3766,14 +3586,27 @@ static void add_macro_name (const char *name, const struct macro_definition *ignore, void *user_data) { - struct add_macro_name_data *datum = (struct add_macro_name_data *) user_data; + struct add_name_data *datum = (struct add_name_data *) user_data; + + completion_list_add_name ((char *) name, + datum->sym_text, datum->sym_text_len, + datum->text, datum->word); +} + +/* A callback for map_partial_symbol_names. */ +static void +add_partial_symbol_name (const char *name, void *user_data) +{ + struct add_name_data *datum = (struct add_name_data *) user_data; + completion_list_add_name ((char *) name, datum->sym_text, datum->sym_text_len, datum->text, datum->word); } char ** -default_make_symbol_completion_list (char *text, char *word) +default_make_symbol_completion_list_break_on (char *text, char *word, + const char *break_on) { /* Problem: All of the symbols have to be copied because readline frees them. I'm not going to worry about this; hopefully there @@ -3781,17 +3614,16 @@ default_make_symbol_completion_list (char *text, char *word) struct symbol *sym; struct symtab *s; - struct partial_symtab *ps; struct minimal_symbol *msymbol; struct objfile *objfile; struct block *b; const struct block *surrounding_static_block, *surrounding_global_block; struct dict_iterator iter; - struct partial_symbol **psym; /* The symbol we are completing on. Points in same buffer as text. */ char *sym_text; /* Length of sym_text. */ int sym_text_len; + struct add_name_data datum; /* Now look for the symbol we are supposed to complete on. */ { @@ -3837,7 +3669,7 @@ default_make_symbol_completion_list (char *text, char *word) while (p > text) { if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0' - || p[-1] == ':') + || p[-1] == ':' || strchr (break_on, p[-1]) != NULL) --p; else break; @@ -3853,35 +3685,14 @@ default_make_symbol_completion_list (char *text, char *word) return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *)); return_val[0] = NULL; + datum.sym_text = sym_text; + datum.sym_text_len = sym_text_len; + datum.text = text; + datum.word = word; + /* Look through the partial symtabs for all symbols which begin by matching SYM_TEXT. Add each one that you find to the list. */ - - ALL_PSYMTABS (objfile, ps) - { - /* If the psymtab's been read in we'll get it when we search - through the blockvector. */ - if (ps->readin) - continue; - - for (psym = objfile->global_psymbols.list + ps->globals_offset; - psym < (objfile->global_psymbols.list + ps->globals_offset - + ps->n_global_syms); - psym++) - { - /* If interrupted, then quit. */ - QUIT; - COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word); - } - - for (psym = objfile->static_psymbols.list + ps->statics_offset; - psym < (objfile->static_psymbols.list + ps->statics_offset - + ps->n_static_syms); - psym++) - { - QUIT; - COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word); - } - } + map_partial_symbol_names (add_partial_symbol_name, &datum); /* At this point scan through the misc symbol vectors and add each symbol you find to the list. Eventually we want to ignore @@ -3961,12 +3772,6 @@ default_make_symbol_completion_list (char *text, char *word) if (current_language->la_macro_expansion == macro_expansion_c) { struct macro_scope *scope; - struct add_macro_name_data datum; - - datum.sym_text = sym_text; - datum.sym_text_len = sym_text_len; - datum.text = text; - datum.word = word; /* Add any macros visible in the default scope. Note that this may yield the occasional wrong result, because an expression @@ -3990,6 +3795,12 @@ default_make_symbol_completion_list (char *text, char *word) return (return_val); } +char ** +default_make_symbol_completion_list (char *text, char *word) +{ + return default_make_symbol_completion_list_break_on (text, word, ""); +} + /* Return a NULL terminated array of all symbols (regardless of class) which begin by matching TEXT. If the answer is no symbols, then the return value is an array which contains only a NULL pointer. */ @@ -4171,6 +3982,58 @@ not_interesting_fname (const char *fname) return 0; } +/* An object of this type is passed as the user_data argument to + map_partial_symbol_filenames. */ +struct add_partial_filename_data +{ + int *first; + char *text; + char *word; + int text_len; + char ***list; + int *list_used; + int *list_alloced; +}; + +/* A callback for map_partial_symbol_filenames. */ +static void +maybe_add_partial_symtab_filename (const char *filename, const char *fullname, + void *user_data) +{ + struct add_partial_filename_data *data = user_data; + + if (not_interesting_fname (filename)) + return; + if (!filename_seen (filename, 1, data->first) +#if HAVE_DOS_BASED_FILE_SYSTEM + && strncasecmp (filename, data->text, data->text_len) == 0 +#else + && strncmp (filename, data->text, data->text_len) == 0 +#endif + ) + { + /* This file matches for a completion; add it to the + current list of matches. */ + add_filename_to_list (filename, data->text, data->word, + data->list, data->list_used, data->list_alloced); + } + else + { + const char *base_name = lbasename (filename); + + if (base_name != filename + && !filename_seen (base_name, 1, data->first) +#if HAVE_DOS_BASED_FILE_SYSTEM + && strncasecmp (base_name, data->text, data->text_len) == 0 +#else + && strncmp (base_name, data->text, data->text_len) == 0 +#endif + ) + add_filename_to_list (base_name, data->text, data->word, + data->list, data->list_used, data->list_alloced); + } +} + /* Return a NULL terminated array of all source files whose names begin with matching TEXT. The file names are looked up in the symbol tables of this program. If the answer is no matchess, then @@ -4180,7 +4043,6 @@ char ** make_source_files_completion_list (char *text, char *word) { struct symtab *s; - struct partial_symtab *ps; struct objfile *objfile; int first = 1; int list_alloced = 1; @@ -4188,6 +4050,7 @@ make_source_files_completion_list (char *text, char *word) size_t text_len = strlen (text); char **list = (char **) xmalloc (list_alloced * sizeof (char *)); const char *base_name; + struct add_partial_filename_data datum; list[0] = NULL; @@ -4231,42 +4094,14 @@ make_source_files_completion_list (char *text, char *word) } } - ALL_PSYMTABS (objfile, ps) - { - if (not_interesting_fname (ps->filename)) - continue; - if (!ps->readin) - { - if (!filename_seen (ps->filename, 1, &first) -#if HAVE_DOS_BASED_FILE_SYSTEM - && strncasecmp (ps->filename, text, text_len) == 0 -#else - && strncmp (ps->filename, text, text_len) == 0 -#endif - ) - { - /* This file matches for a completion; add it to the - current list of matches. */ - add_filename_to_list (ps->filename, text, word, - &list, &list_used, &list_alloced); - - } - else - { - base_name = lbasename (ps->filename); - if (base_name != ps->filename - && !filename_seen (base_name, 1, &first) -#if HAVE_DOS_BASED_FILE_SYSTEM - && strncasecmp (base_name, text, text_len) == 0 -#else - && strncmp (base_name, text, text_len) == 0 -#endif - ) - add_filename_to_list (base_name, text, word, - &list, &list_used, &list_alloced); - } - } - } + datum.first = &first; + datum.text = text; + datum.word = word; + datum.text_len = text_len; + datum.list = &list; + datum.list_used = &list_used; + datum.list_alloced = &list_alloced; + map_partial_symbol_filenames (maybe_add_partial_symtab_filename, &datum); return list; } @@ -4385,7 +4220,6 @@ skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr) if (prologue_sal.symtab->language != language_asm) { struct linetable *linetable = LINETABLE (prologue_sal.symtab); - int exact; int idx = 0; /* Skip any earlier lines, and any end-of-sequence marker @@ -4560,6 +4394,7 @@ symtab_observer_executable_changed (void) initializing it from SYMTAB, LINENO and PC. */ static void append_expanded_sal (struct symtabs_and_lines *sal, + struct program_space *pspace, struct symtab *symtab, int lineno, CORE_ADDR pc) { @@ -4567,6 +4402,7 @@ append_expanded_sal (struct symtabs_and_lines *sal, sizeof (sal->sals[0]) * (sal->nelts + 1)); init_sal (sal->sals + sal->nelts); + sal->sals[sal->nelts].pspace = pspace; sal->sals[sal->nelts].symtab = symtab; sal->sals[sal->nelts].section = NULL; sal->sals[sal->nelts].end = 0; @@ -4576,29 +4412,38 @@ append_expanded_sal (struct symtabs_and_lines *sal, } /* Helper to expand_line_sal below. Search in the symtabs for any - linetable entry that exactly matches FILENAME and LINENO and append - them to RET. If there is at least one match, return 1; otherwise, - return 0, and return the best choice in BEST_ITEM and BEST_SYMTAB. */ + linetable entry that exactly matches FULLNAME and LINENO and append + them to RET. If FULLNAME is NULL or if a symtab has no full name, + use FILENAME and LINENO instead. If there is at least one match, + return 1; otherwise, return 0, and return the best choice in BEST_ITEM + and BEST_SYMTAB. */ static int -append_exact_match_to_sals (char *filename, int lineno, +append_exact_match_to_sals (char *filename, char *fullname, int lineno, struct symtabs_and_lines *ret, struct linetable_entry **best_item, struct symtab **best_symtab) { + struct program_space *pspace; struct objfile *objfile; struct symtab *symtab; int exact = 0; int j; *best_item = 0; *best_symtab = 0; - - ALL_SYMTABS (objfile, symtab) + + ALL_PSPACES (pspace) + ALL_PSPACE_SYMTABS (pspace, objfile, symtab) { - if (strcmp (filename, symtab->filename) == 0) + if (FILENAME_CMP (filename, symtab->filename) == 0) { struct linetable *l; int len; + + if (fullname != NULL + && symtab_to_fullname (symtab) != NULL + && FILENAME_CMP (fullname, symtab->fullname) != 0) + continue; l = LINETABLE (symtab); if (!l) continue; @@ -4611,7 +4456,8 @@ append_exact_match_to_sals (char *filename, int lineno, if (item->line == lineno) { exact = 1; - append_expanded_sal (ret, symtab, lineno, item->pc); + append_expanded_sal (ret, objfile->pspace, + symtab, lineno, item->pc); } else if (!exact && item->line > lineno && (*best_item == NULL @@ -4626,28 +4472,27 @@ append_exact_match_to_sals (char *filename, int lineno, return exact; } -/* Compute a set of all sals in - the entire program that correspond to same file - and line as SAL and return those. If there - are several sals that belong to the same block, - only one sal for the block is included in results. */ +/* Compute a set of all sals in all program spaces that correspond to + same file and line as SAL and return those. If there are several + sals that belong to the same block, only one sal for the block is + included in results. */ struct symtabs_and_lines expand_line_sal (struct symtab_and_line sal) { - struct symtabs_and_lines ret, this_line; + struct symtabs_and_lines ret; int i, j; struct objfile *objfile; - struct partial_symtab *psymtab; - struct symtab *symtab; int lineno; int deleted = 0; struct block **blocks = NULL; int *filter; + struct cleanup *old_chain; ret.nelts = 0; ret.sals = NULL; + /* Only expand sals that represent file.c:line. */ if (sal.symtab == NULL || sal.line == 0 || sal.pc != 0) { ret.sals = xmalloc (sizeof (struct symtab_and_line)); @@ -4657,11 +4502,14 @@ expand_line_sal (struct symtab_and_line sal) } else { + struct program_space *pspace; struct linetable_entry *best_item = 0; struct symtab *best_symtab = 0; int exact = 0; + char *match_filename; lineno = sal.line; + match_filename = sal.symtab->filename; /* We need to find all symtabs for a file which name is described by sal. We cannot just directly @@ -4674,20 +4522,29 @@ expand_line_sal (struct symtab_and_line sal) the right name. Then, we iterate over symtabs, knowing that all symtabs we're interested in are loaded. */ - ALL_PSYMTABS (objfile, psymtab) + old_chain = save_current_program_space (); + ALL_PSPACES (pspace) + { + set_current_program_space (pspace); + ALL_PSPACE_OBJFILES (pspace, objfile) { - if (strcmp (sal.symtab->filename, - psymtab->filename) == 0) - PSYMTAB_TO_SYMTAB (psymtab); + if (objfile->sf) + objfile->sf->qf->expand_symtabs_with_filename (objfile, + sal.symtab->filename); } + } + do_cleanups (old_chain); /* Now search the symtab for exact matches and append them. If none is found, append the best_item and all its exact matches. */ - exact = append_exact_match_to_sals (sal.symtab->filename, lineno, + symtab_to_fullname (sal.symtab); + exact = append_exact_match_to_sals (sal.symtab->filename, + sal.symtab->fullname, lineno, &ret, &best_item, &best_symtab); if (!exact && best_item) - append_exact_match_to_sals (best_symtab->filename, best_item->line, + append_exact_match_to_sals (best_symtab->filename, + best_symtab->fullname, best_item->line, &ret, &best_item, &best_symtab); } @@ -4700,13 +4557,18 @@ expand_line_sal (struct symtab_and_line sal) blocks -- for each PC found above we see if there are other PCs that are in the same block. If yes, the other PCs are filtered out. */ + old_chain = save_current_program_space (); filter = alloca (ret.nelts * sizeof (int)); blocks = alloca (ret.nelts * sizeof (struct block *)); for (i = 0; i < ret.nelts; ++i) { + set_current_program_space (ret.sals[i].pspace); + filter[i] = 1; - blocks[i] = block_for_pc (ret.sals[i].pc); + blocks[i] = block_for_pc_sect (ret.sals[i].pc, ret.sals[i].section); + } + do_cleanups (old_chain); for (i = 0; i < ret.nelts; ++i) if (blocks[i] != NULL) @@ -4734,6 +4596,31 @@ expand_line_sal (struct symtab_and_line sal) return ret; } +/* Return 1 if the supplied producer string matches the ARM RealView + compiler (armcc). */ + +int +producer_is_realview (const char *producer) +{ + static const char *const arm_idents[] = { + "ARM C Compiler, ADS", + "Thumb C Compiler, ADS", + "ARM C++ Compiler, ADS", + "Thumb C++ Compiler, ADS", + "ARM/Thumb C/C++ Compiler, RVCT", + "ARM C/C++ Compiler, RVCT" + }; + int i; + + if (producer == NULL) + return 0; + + for (i = 0; i < ARRAY_SIZE (arm_idents); i++) + if (strncmp (producer, arm_idents[i], strlen (arm_idents[i])) == 0) + return 1; + + return 0; +} void _initialize_symtab (void) diff --git a/contrib/gdb-7/gdb/symtab.h b/contrib/gdb-7/gdb/symtab.h index 740d4e085d..bedc10a739 100644 --- a/contrib/gdb-7/gdb/symtab.h +++ b/contrib/gdb-7/gdb/symtab.h @@ -1,7 +1,7 @@ /* Symbol table definitions for GDB. Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -32,6 +32,7 @@ struct block; struct blockvector; struct axs_value; struct agent_expr; +struct program_space; /* Some of the structures in this file are space critical. The space-critical structures are: @@ -147,7 +148,7 @@ struct general_symbol_info short section; - /* The section associated with this symbol. */ + /* The section associated with this symbol. It can be NULL. */ struct obj_section *obj_section; }; @@ -171,9 +172,6 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *); #define SYMBOL_SECTION(symbol) (symbol)->ginfo.section #define SYMBOL_OBJ_SECTION(symbol) (symbol)->ginfo.obj_section -#define SYMBOL_CPLUS_DEMANGLED_NAME(symbol) \ - (symbol)->ginfo.language_specific.cplus_specific.demangled_name - /* Initializes the language dependent portion of a symbol depending upon the language for the symbol. */ #define SYMBOL_INIT_LANGUAGE_SPECIFIC(symbol,language) \ @@ -184,16 +182,17 @@ extern void symbol_init_language_specific (struct general_symbol_info *symbol, /* Set just the linkage name of a symbol; do not try to demangle it. Used for constructs which do not have a mangled name, e.g. struct tags. Unlike SYMBOL_SET_NAMES, linkage_name must - be terminated and already on the objfile's obstack. */ + be terminated and either already on the objfile's obstack or + permanently allocated. */ #define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \ (symbol)->ginfo.name = (linkage_name) /* Set the linkage and natural names of a symbol, by demangling the linkage name. */ -#define SYMBOL_SET_NAMES(symbol,linkage_name,len,objfile) \ - symbol_set_names (&(symbol)->ginfo, linkage_name, len, objfile) +#define SYMBOL_SET_NAMES(symbol,linkage_name,len,copy_name,objfile) \ + symbol_set_names (&(symbol)->ginfo, linkage_name, len, copy_name, objfile) extern void symbol_set_names (struct general_symbol_info *symbol, - const char *linkage_name, int len, + const char *linkage_name, int len, int copy_name, struct objfile *objfile); /* Now come lots of name accessor macros. Short version as to when to @@ -517,8 +516,9 @@ struct symbol_computed_ops int (*read_needs_frame) (struct symbol * symbol); /* Write to STREAM a natural-language description of the location of - SYMBOL. */ - int (*describe_location) (struct symbol * symbol, struct ui_file * stream); + SYMBOL, in the context of ADDR. */ + void (*describe_location) (struct symbol * symbol, CORE_ADDR addr, + struct ui_file * stream); /* Tracepoint support. Append bytecodes to the tracepoint agent expression AX that push the address of the object SYMBOL. Set @@ -552,7 +552,8 @@ struct symbol struct type *type; /* The symbol table containing this symbol. This is the file - associated with LINE. */ + associated with LINE. It can be NULL during symbols read-in but it is + never NULL during normal operation. */ struct symtab *symtab; /* Domain code. */ @@ -630,36 +631,6 @@ struct symbol #define SYMBOL_REGISTER_OPS(symbol) (symbol)->ops.ops_register #define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value -/* A partial_symbol records the name, domain, and address class of - symbols whose types we have not parsed yet. For functions, it also - contains their memory address, so we can find them from a PC value. - Each partial_symbol sits in a partial_symtab, all of which are chained - on a partial symtab list and which points to the corresponding - normal symtab once the partial_symtab has been referenced. */ - -/* This structure is space critical. See space comments at the top. */ - -struct partial_symbol -{ - - /* The general symbol info required for all types of symbols. */ - - struct general_symbol_info ginfo; - - /* Name space code. */ - - ENUM_BITFIELD(domain_enum_tag) domain : 6; - - /* Address class (for info_symbols) */ - - ENUM_BITFIELD(address_class) aclass : 6; - -}; - -#define PSYMBOL_DOMAIN(psymbol) (psymbol)->domain -#define PSYMBOL_CLASS(psymbol) (psymbol)->aclass - - /* Each item represents a line-->pc (or the reverse) mapping. This is somewhat more wasteful of space than one might wish, but since only the files which are actually debugged are read in to core, we don't @@ -823,110 +794,7 @@ struct symtab #define BLOCKVECTOR(symtab) (symtab)->blockvector #define LINETABLE(symtab) (symtab)->linetable - - -/* Each source file that has not been fully read in is represented by - a partial_symtab. This contains the information on where in the - executable the debugging symbols for a specific file are, and a - list of names of global symbols which are located in this file. - They are all chained on partial symtab lists. - - Even after the source file has been read into a symtab, the - partial_symtab remains around. They are allocated on an obstack, - objfile_obstack. FIXME, this is bad for dynamic linking or VxWorks- - style execution of a bunch of .o's. */ - -struct partial_symtab -{ - - /* Chain of all existing partial symtabs. */ - - struct partial_symtab *next; - - /* Name of the source file which this partial_symtab defines */ - - char *filename; - - /* Full path of the source file. NULL if not known. */ - - char *fullname; - - /* Directory in which it was compiled, or NULL if we don't know. */ - - char *dirname; - - /* Information about the object file from which symbols should be read. */ - - struct objfile *objfile; - - /* Set of relocation offsets to apply to each section. */ - - struct section_offsets *section_offsets; - - /* Range of text addresses covered by this file; texthigh is the - beginning of the next section. */ - - CORE_ADDR textlow; - CORE_ADDR texthigh; - - /* Array of pointers to all of the partial_symtab's which this one - depends on. Since this array can only be set to previous or - the current (?) psymtab, this dependency tree is guaranteed not - to have any loops. "depends on" means that symbols must be read - for the dependencies before being read for this psymtab; this is - for type references in stabs, where if foo.c includes foo.h, declarations - in foo.h may use type numbers defined in foo.c. For other debugging - formats there may be no need to use dependencies. */ - - struct partial_symtab **dependencies; - - int number_of_dependencies; - - /* Global symbol list. This list will be sorted after readin to - improve access. Binary search will be the usual method of - finding a symbol within it. globals_offset is an integer offset - within global_psymbols[]. */ - - int globals_offset; - int n_global_syms; - - /* Static symbol list. This list will *not* be sorted after readin; - to find a symbol in it, exhaustive search must be used. This is - reasonable because searches through this list will eventually - lead to either the read in of a files symbols for real (assumed - to take a *lot* of time; check) or an error (and we don't care - how long errors take). This is an offset and size within - static_psymbols[]. */ - - int statics_offset; - int n_static_syms; - - /* Pointer to symtab eventually allocated for this source file, 0 if - !readin or if we haven't looked for the symtab after it was readin. */ - - struct symtab *symtab; - - /* Pointer to function which will read in the symtab corresponding to - this psymtab. */ - - void (*read_symtab) (struct partial_symtab *); - - /* Information that lets read_symtab() locate the part of the symbol table - that this psymtab corresponds to. This information is private to the - format-dependent symbol reading routines. For further detail examine - the various symbol reading modules. Should really be (void *) but is - (char *) as with other such gdb variables. (FIXME) */ - - char *read_symtab_private; - - /* Non-zero if the symtab corresponding to this psymtab has been readin */ - - unsigned char readin; -}; - -/* A fast way to get from a psymtab to its symtab (after the first time). */ -#define PSYMTAB_TO_SYMTAB(pst) \ - ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst)) +#define SYMTAB_PSPACE(symtab) (symtab)->objfile->pspace /* The virtual function table is now an array of structures which have the @@ -990,7 +858,6 @@ extern struct symbol *lookup_symbol (const char *, const struct block *, that can't think of anything better to do. */ extern struct symbol *basic_lookup_symbol_nonlocal (const char *, - const char *, const struct block *, const domain_enum); @@ -1001,7 +868,6 @@ extern struct symbol *basic_lookup_symbol_nonlocal (const char *, is one; do nothing if BLOCK is NULL or a global block. */ extern struct symbol *lookup_symbol_static (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain); @@ -1009,7 +875,6 @@ extern struct symbol *lookup_symbol_static (const char *name, necessary). */ extern struct symbol *lookup_symbol_global (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain); @@ -1018,21 +883,18 @@ extern struct symbol *lookup_symbol_global (const char *name, will fix up the symbol if necessary. */ extern struct symbol *lookup_symbol_aux_block (const char *name, - const char *linkage_name, const struct block *block, const domain_enum domain); -/* Lookup a partial symbol. */ +/* Lookup a symbol only in the file static scope of all the objfiles. */ + +struct symbol *lookup_static_symbol_aux (const char *name, + const domain_enum domain); -extern struct partial_symbol *lookup_partial_symbol (struct partial_symtab *, - const char *, - const char *, int, - domain_enum); /* lookup a symbol by name, within a specified block */ extern struct symbol *lookup_block_symbol (const struct block *, const char *, - const char *, const domain_enum); /* lookup a [struct, union, enum] by name, within a specified block */ @@ -1060,20 +922,10 @@ extern int find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *, extern void clear_pc_function_cache (void); -/* from symtab.c: */ - -/* lookup partial symbol table by filename */ - -extern struct partial_symtab *lookup_partial_symtab (const char *); - -/* lookup partial symbol table by address */ - -extern struct partial_symtab *find_pc_psymtab (CORE_ADDR); - /* lookup partial symbol table by address and section */ -extern struct partial_symtab *find_pc_sect_psymtab (CORE_ADDR, - struct obj_section *); +extern struct symtab *find_pc_sect_symtab_via_partial (CORE_ADDR, + struct obj_section *); /* lookup full symbol table by address */ @@ -1083,17 +935,6 @@ extern struct symtab *find_pc_symtab (CORE_ADDR); extern struct symtab *find_pc_sect_symtab (CORE_ADDR, struct obj_section *); -/* lookup partial symbol by address */ - -extern struct partial_symbol *find_pc_psymbol (struct partial_symtab *, - CORE_ADDR); - -/* lookup partial symbol by address and section */ - -extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *, - CORE_ADDR, - struct obj_section *); - extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *); extern void reread_symbols (void); @@ -1119,6 +960,11 @@ extern void prim_record_minimal_symbol (const char *, CORE_ADDR, enum minimal_symbol_type, struct objfile *); +extern struct minimal_symbol *prim_record_minimal_symbol_full + (const char *, int, int, CORE_ADDR, + enum minimal_symbol_type, + int section, asection * bfd_section, struct objfile *); + extern struct minimal_symbol *prim_record_minimal_symbol_and_info (const char *, CORE_ADDR, enum minimal_symbol_type, @@ -1150,6 +996,10 @@ extern struct minimal_symbol *lookup_minimal_symbol_by_pc_name extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR); +extern struct minimal_symbol * + lookup_minimal_symbol_and_objfile (const char *, + struct objfile **); + extern struct minimal_symbol *lookup_minimal_symbol_by_pc_section (CORE_ADDR, struct obj_section *); @@ -1170,6 +1020,9 @@ extern void msymbols_sort (struct objfile *objfile); struct symtab_and_line { + /* The program space of this sal. */ + struct program_space *pspace; + struct symtab *symtab; struct obj_section *section; /* Line number. Line numbers start at 1 and proceed through symtab->nlines. @@ -1257,8 +1110,6 @@ extern void free_symtab (struct symtab *); /* Symbol-reading stuff in symfile.c and solib.c. */ -extern struct symtab *psymtab_to_symtab (struct partial_symtab *); - extern void clear_solib (void); /* source.c */ @@ -1271,6 +1122,8 @@ extern void forget_cached_source_info (void); extern void select_source_symtab (struct symtab *); +extern char **default_make_symbol_completion_list_break_on + (char *text, char *word, const char *break_on); extern char **default_make_symbol_completion_list (char *, char *); extern char **make_symbol_completion_list (char *, char *); extern char **make_symbol_completion_list_fn (struct cmd_list_element *, @@ -1284,16 +1137,15 @@ extern char **make_source_files_completion_list (char *, char *); int matching_obj_sections (struct obj_section *, struct obj_section *); -extern struct partial_symtab *find_main_psymtab (void); +extern char *find_main_filename (void); extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *); -extern CORE_ADDR find_function_start_pc (struct gdbarch *, - CORE_ADDR, struct obj_section *); - extern struct symtab_and_line find_function_start_sal (struct symbol *sym, int); +extern void skip_prologue_sal (struct symtab_and_line *); + /* symfile.c */ extern void clear_symtab_users (void); @@ -1311,10 +1163,6 @@ extern CORE_ADDR skip_prologue_using_sal (struct gdbarch *gdbarch, extern struct symbol *fixup_symbol_section (struct symbol *, struct objfile *); -extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol - *psym, - struct objfile *objfile); - /* Symbol searching */ /* When using search_symbols, a list of the following structs is returned. @@ -1356,10 +1204,17 @@ extern /*const */ char *main_name (void); /* Check global symbols in objfile. */ struct symbol *lookup_global_symbol_from_objfile (const struct objfile *objfile, const char *name, - const char *linkage_name, const domain_enum domain); -extern struct symtabs_and_lines -expand_line_sal (struct symtab_and_line sal); +extern struct symtabs_and_lines expand_line_sal (struct symtab_and_line sal); + +/* Return 1 if the supplied producer string matches the ARM RealView + compiler (armcc). */ +int producer_is_realview (const char *producer); + +void fixup_section (struct general_symbol_info *ginfo, + CORE_ADDR addr, struct objfile *objfile); + +struct objfile *lookup_objfile_from_block (const struct block *block); #endif /* !defined(SYMTAB_H) */ diff --git a/contrib/gdb-7/gdb/target-descriptions.c b/contrib/gdb-7/gdb/target-descriptions.c index b8bb48f668..720616696b 100644 --- a/contrib/gdb-7/gdb/target-descriptions.c +++ b/contrib/gdb-7/gdb/target-descriptions.c @@ -1,6 +1,6 @@ /* Target description support for GDB. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by CodeSourcery. @@ -29,6 +29,7 @@ #include "vec.h" #include "xml-support.h" #include "xml-tdesc.h" +#include "osabi.h" #include "gdb_assert.h" #include "gdb_obstack.h" @@ -89,9 +90,17 @@ typedef struct tdesc_type_field { char *name; struct tdesc_type *type; + int start, end; } tdesc_type_field; DEF_VEC_O(tdesc_type_field); +typedef struct tdesc_type_flag +{ + char *name; + int start; +} tdesc_type_flag; +DEF_VEC_O(tdesc_type_flag); + typedef struct tdesc_type { /* The name of this type. */ @@ -116,10 +125,13 @@ typedef struct tdesc_type TDESC_TYPE_IEEE_SINGLE, TDESC_TYPE_IEEE_DOUBLE, TDESC_TYPE_ARM_FPA_EXT, + TDESC_TYPE_I387_EXT, /* Types defined by a target feature. */ TDESC_TYPE_VECTOR, - TDESC_TYPE_UNION + TDESC_TYPE_STRUCT, + TDESC_TYPE_UNION, + TDESC_TYPE_FLAGS } kind; /* Kind-specific data. */ @@ -132,11 +144,19 @@ typedef struct tdesc_type int count; } v; - /* Union type. */ + /* Struct or union type. */ struct { VEC(tdesc_type_field) *fields; + LONGEST size; } u; + + /* Flags type. */ + struct + { + VEC(tdesc_type_flag) *flags; + LONGEST size; + } f; } u; } *tdesc_type_p; DEF_VEC_P(tdesc_type_p); @@ -460,7 +480,8 @@ static struct tdesc_type tdesc_predefined_types[] = { "data_ptr", TDESC_TYPE_DATA_PTR }, { "ieee_single", TDESC_TYPE_IEEE_SINGLE }, { "ieee_double", TDESC_TYPE_IEEE_DOUBLE }, - { "arm_fpa_ext", TDESC_TYPE_ARM_FPA_EXT } + { "arm_fpa_ext", TDESC_TYPE_ARM_FPA_EXT }, + { "i387_ext", TDESC_TYPE_I387_EXT } }; /* Return the type associated with ID in the context of FEATURE, or @@ -485,12 +506,38 @@ tdesc_named_type (const struct tdesc_feature *feature, const char *id) return NULL; } +/* Lookup type associated with ID. */ + +struct type * +tdesc_find_type (struct gdbarch *gdbarch, const char *id) +{ + struct tdesc_arch_reg *reg; + struct tdesc_arch_data *data; + int i, num_regs; + + data = gdbarch_data (gdbarch, tdesc_data); + num_regs = VEC_length (tdesc_arch_reg, data->arch_regs); + for (i = 0; i < num_regs; i++) + { + reg = VEC_index (tdesc_arch_reg, data->arch_regs, i); + if (reg->reg + && reg->reg->tdesc_type + && reg->type + && strcmp (id, reg->reg->tdesc_type->name) == 0) + return reg->type; + } + + return NULL; +} + /* Construct, if necessary, and return the GDB type implementing target type TDESC_TYPE for architecture GDBARCH. */ static struct type * tdesc_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *tdesc_type) { + struct type *type; + switch (tdesc_type->kind) { /* Predefined types. */ @@ -530,6 +577,16 @@ tdesc_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *tdesc_type) case TDESC_TYPE_DATA_PTR: return builtin_type (gdbarch)->builtin_data_ptr; + default: + break; + } + + type = tdesc_find_type (gdbarch, tdesc_type->name); + if (type) + return type; + + switch (tdesc_type->kind) + { case TDESC_TYPE_IEEE_SINGLE: return arch_float_type (gdbarch, -1, "builtin_type_ieee_single", floatformats_ieee_single); @@ -542,6 +599,10 @@ tdesc_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *tdesc_type) return arch_float_type (gdbarch, -1, "builtin_type_arm_ext", floatformats_arm_ext); + case TDESC_TYPE_I387_EXT: + return arch_float_type (gdbarch, -1, "builtin_type_i387_ext", + floatformats_i387_ext); + /* Types defined by a target feature. */ case TDESC_TYPE_VECTOR: { @@ -554,6 +615,66 @@ tdesc_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *tdesc_type) return type; } + case TDESC_TYPE_STRUCT: + { + struct type *type, *field_type; + struct tdesc_type_field *f; + int ix; + + type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT); + TYPE_NAME (type) = xstrdup (tdesc_type->name); + TYPE_TAG_NAME (type) = TYPE_NAME (type); + + for (ix = 0; + VEC_iterate (tdesc_type_field, tdesc_type->u.u.fields, ix, f); + ix++) + { + if (f->type == NULL) + { + /* Bitfield. */ + struct field *fld; + struct type *field_type; + int bitsize, total_size; + + /* This invariant should be preserved while creating + types. */ + gdb_assert (tdesc_type->u.u.size != 0); + if (tdesc_type->u.u.size > 4) + field_type = builtin_type (gdbarch)->builtin_uint64; + else + field_type = builtin_type (gdbarch)->builtin_uint32; + + fld = append_composite_type_field_raw (type, xstrdup (f->name), + field_type); + + /* For little-endian, BITPOS counts from the LSB of + the structure and marks the LSB of the field. For + big-endian, BITPOS counts from the MSB of the + structure and marks the MSB of the field. Either + way, it is the number of bits to the "left" of the + field. To calculate this in big-endian, we need + the total size of the structure. */ + bitsize = f->end - f->start + 1; + total_size = tdesc_type->u.u.size * TARGET_CHAR_BIT; + if (gdbarch_bits_big_endian (gdbarch)) + FIELD_BITPOS (fld[0]) = total_size - f->start - bitsize; + else + FIELD_BITPOS (fld[0]) = f->start; + FIELD_BITSIZE (fld[0]) = bitsize; + } + else + { + field_type = tdesc_gdb_type (gdbarch, f->type); + append_composite_type_field (type, xstrdup (f->name), + field_type); + } + } + + if (tdesc_type->u.u.size != 0) + TYPE_LENGTH (type) = tdesc_type->u.u.size; + return type; + } + case TDESC_TYPE_UNION: { struct type *type, *field_type; @@ -570,12 +691,30 @@ tdesc_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *tdesc_type) field_type = tdesc_gdb_type (gdbarch, f->type); append_composite_type_field (type, xstrdup (f->name), field_type); - /* If any of the children of this union are vectors, flag the + /* If any of the children of a union are vectors, flag the union as a vector also. This allows e.g. a union of two vector types to show up automatically in "info vector". */ if (TYPE_VECTOR (field_type)) TYPE_VECTOR (type) = 1; } + return type; + } + + case TDESC_TYPE_FLAGS: + { + struct tdesc_type_flag *f; + int ix; + + type = arch_flags_type (gdbarch, xstrdup (tdesc_type->name), + tdesc_type->u.f.size); + for (ix = 0; + VEC_iterate (tdesc_type_flag, tdesc_type->u.f.flags, ix, f); + ix++) + /* Note that contrary to the function name, this call will + just set the properties of an already-allocated + field. */ + append_flags_type_flag (type, f->start, + *f->name ? f->name : NULL); return type; } @@ -712,7 +851,6 @@ tdesc_register_size (const struct tdesc_feature *feature, static struct tdesc_arch_reg * tdesc_find_arch_register (struct gdbarch *gdbarch, int regno) { - struct tdesc_arch_reg *reg; struct tdesc_arch_data *data; data = gdbarch_data (gdbarch, tdesc_data); @@ -726,6 +864,7 @@ static struct tdesc_reg * tdesc_find_register (struct gdbarch *gdbarch, int regno) { struct tdesc_arch_reg *reg = tdesc_find_arch_register (gdbarch, regno); + return reg? reg->reg : NULL; } @@ -745,6 +884,7 @@ tdesc_register_name (struct gdbarch *gdbarch, int regno) if (regno >= num_regs && regno < num_regs + num_pseudo_regs) { struct tdesc_arch_data *data = gdbarch_data (gdbarch, tdesc_data); + gdb_assert (data->pseudo_register_name != NULL); return data->pseudo_register_name (gdbarch, regno); } @@ -763,6 +903,7 @@ tdesc_register_type (struct gdbarch *gdbarch, int regno) if (reg == NULL && regno >= num_regs && regno < num_regs + num_pseudo_regs) { struct tdesc_arch_data *data = gdbarch_data (gdbarch, tdesc_data); + gdb_assert (data->pseudo_register_type != NULL); return data->pseudo_register_type (gdbarch, regno); } @@ -900,6 +1041,7 @@ tdesc_register_reggroup_p (struct gdbarch *gdbarch, int regno, if (regno >= num_regs && regno < num_regs + num_pseudo_regs) { struct tdesc_arch_data *data = gdbarch_data (gdbarch, tdesc_data); + if (data->pseudo_register_reggroup_p != NULL) return data->pseudo_register_reggroup_p (gdbarch, regno, reggroup); /* Otherwise fall through to the default reggroup_p. */ @@ -951,7 +1093,7 @@ tdesc_use_registers (struct gdbarch *gdbarch, struct tdesc_arch_data *early_data) { int num_regs = gdbarch_num_regs (gdbarch); - int i, ixf, ixr; + int ixf, ixr; struct tdesc_feature *feature; struct tdesc_reg *reg; struct tdesc_arch_data *data; @@ -1060,9 +1202,9 @@ tdesc_create_reg (struct tdesc_feature *feature, const char *name, static void tdesc_free_type (struct tdesc_type *type) { - switch (type->kind) { + case TDESC_TYPE_STRUCT: case TDESC_TYPE_UNION: { struct tdesc_type_field *f; @@ -1077,6 +1219,20 @@ tdesc_free_type (struct tdesc_type *type) } break; + case TDESC_TYPE_FLAGS: + { + struct tdesc_type_flag *f; + int ix; + + for (ix = 0; + VEC_iterate (tdesc_type_flag, type->u.f.flags, ix, f); + ix++) + xfree (f->name); + + VEC_free (tdesc_type_flag, type->u.f.flags); + } + break; + default: break; } @@ -1100,6 +1256,29 @@ tdesc_create_vector (struct tdesc_feature *feature, const char *name, return type; } +struct tdesc_type * +tdesc_create_struct (struct tdesc_feature *feature, const char *name) +{ + struct tdesc_type *type = XZALLOC (struct tdesc_type); + + type->name = xstrdup (name); + type->kind = TDESC_TYPE_STRUCT; + + VEC_safe_push (tdesc_type_p, feature->types, type); + return type; +} + +/* Set the total length of TYPE. Structs which contain bitfields may + omit the reserved bits, so the end of the last field may not + suffice. */ + +void +tdesc_set_struct_size (struct tdesc_type *type, LONGEST size) +{ + gdb_assert (type->kind == TDESC_TYPE_STRUCT); + type->u.u.size = size; +} + struct tdesc_type * tdesc_create_union (struct tdesc_feature *feature, const char *name) { @@ -1112,13 +1291,32 @@ tdesc_create_union (struct tdesc_feature *feature, const char *name) return type; } +struct tdesc_type * +tdesc_create_flags (struct tdesc_feature *feature, const char *name, + LONGEST size) +{ + struct tdesc_type *type = XZALLOC (struct tdesc_type); + + type->name = xstrdup (name); + type->kind = TDESC_TYPE_FLAGS; + type->u.f.size = size; + + VEC_safe_push (tdesc_type_p, feature->types, type); + return type; +} + +/* Add a new field. Return a temporary pointer to the field, which + is only valid until the next call to tdesc_add_field (the vector + might be reallocated). */ + void tdesc_add_field (struct tdesc_type *type, const char *field_name, struct tdesc_type *field_type) { struct tdesc_type_field f = { 0 }; - gdb_assert (type->kind == TDESC_TYPE_UNION); + gdb_assert (type->kind == TDESC_TYPE_UNION + || type->kind == TDESC_TYPE_STRUCT); f.name = xstrdup (field_name); f.type = field_type; @@ -1126,6 +1324,37 @@ tdesc_add_field (struct tdesc_type *type, const char *field_name, VEC_safe_push (tdesc_type_field, type->u.u.fields, &f); } +/* Add a new bitfield. */ + +void +tdesc_add_bitfield (struct tdesc_type *type, const char *field_name, + int start, int end) +{ + struct tdesc_type_field f = { 0 }; + + gdb_assert (type->kind == TDESC_TYPE_STRUCT); + + f.name = xstrdup (field_name); + f.start = start; + f.end = end; + + VEC_safe_push (tdesc_type_field, type->u.u.fields, &f); +} + +void +tdesc_add_flag (struct tdesc_type *type, int start, + const char *flag_name) +{ + struct tdesc_type_flag f = { 0 }; + + gdb_assert (type->kind == TDESC_TYPE_FLAGS); + + f.name = xstrdup (flag_name); + f.start = start; + + VEC_safe_push (tdesc_type_flag, type->u.f.flags, &f); +} + static void tdesc_free_feature (struct tdesc_feature *feature) { @@ -1320,6 +1549,7 @@ maint_print_c_tdesc_cmd (char *args, int from_tty) struct tdesc_reg *reg; struct tdesc_type *type; struct tdesc_type_field *f; + struct tdesc_type_flag *flag; int ix, ix2, ix3; /* Use the global target-supplied description, not the current @@ -1348,6 +1578,7 @@ maint_print_c_tdesc_cmd (char *args, int from_tty) printf_unfiltered ("/* THIS FILE IS GENERATED. Original: %s */\n\n", filename); printf_unfiltered ("#include \"defs.h\"\n"); + printf_unfiltered ("#include \"osabi.h\"\n"); printf_unfiltered ("#include \"target-descriptions.h\"\n"); printf_unfiltered ("\n"); @@ -1369,6 +1600,15 @@ maint_print_c_tdesc_cmd (char *args, int from_tty) printf_unfiltered ("\n"); } + if (tdesc_osabi (tdesc) > GDB_OSABI_UNKNOWN + && tdesc_osabi (tdesc) < GDB_OSABI_INVALID) + { + printf_unfiltered + (" set_tdesc_osabi (result, osabi_from_tdesc_string (\"%s\"));\n", + gdbarch_osabi_name (tdesc_osabi (tdesc))); + printf_unfiltered ("\n"); + } + for (ix = 0; VEC_iterate (arch_p, tdesc->compatible, ix, compatible); ix++) { @@ -1423,6 +1663,18 @@ maint_print_c_tdesc_cmd (char *args, int from_tty) f->name); } break; + case TDESC_TYPE_FLAGS: + printf_unfiltered + (" field_type = tdesc_create_flags (feature, \"%s\", %d);\n", + type->name, (int) type->u.f.size); + for (ix3 = 0; + VEC_iterate (tdesc_type_flag, type->u.f.flags, ix3, + flag); + ix3++) + printf_unfiltered + (" tdesc_add_flag (field_type, %d, \"%s\");\n", + flag->start, flag->name); + break; default: error (_("C output is not supported type \"%s\"."), type->name); } diff --git a/contrib/gdb-7/gdb/target-descriptions.h b/contrib/gdb-7/gdb/target-descriptions.h index 3880260c6a..caa72302df 100644 --- a/contrib/gdb-7/gdb/target-descriptions.h +++ b/contrib/gdb-7/gdb/target-descriptions.h @@ -1,6 +1,6 @@ /* Target description support for GDB. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by CodeSourcery. @@ -176,6 +176,10 @@ const char *tdesc_register_name (struct gdbarch *gdbarch, int regno); struct type *tdesc_register_type (struct gdbarch *gdbarch, int regno); +/* Return the type associated with ID, from the target description. */ + +struct type *tdesc_find_type (struct gdbarch *gdbarch, const char *id); + /* Check whether REGNUM is a member of REGGROUP using the target description. Return -1 if the target description does not specify a group. */ @@ -201,10 +205,20 @@ struct tdesc_type *tdesc_create_vector (struct tdesc_feature *feature, const char *name, struct tdesc_type *field_type, int count); +struct tdesc_type *tdesc_create_struct (struct tdesc_feature *feature, + const char *name); +void tdesc_set_struct_size (struct tdesc_type *type, LONGEST size); struct tdesc_type *tdesc_create_union (struct tdesc_feature *feature, const char *name); +struct tdesc_type *tdesc_create_flags (struct tdesc_feature *feature, + const char *name, + LONGEST size); void tdesc_add_field (struct tdesc_type *type, const char *field_name, struct tdesc_type *field_type); +void tdesc_add_bitfield (struct tdesc_type *type, const char *field_name, + int start, int end); +void tdesc_add_flag (struct tdesc_type *type, int start, + const char *flag_name); void tdesc_create_reg (struct tdesc_feature *feature, const char *name, int regnum, int save_restore, const char *group, int bitsize, const char *type); diff --git a/contrib/gdb-7/gdb/target-memory.c b/contrib/gdb-7/gdb/target-memory.c index 4dfe7b3b01..b864d500ac 100644 --- a/contrib/gdb-7/gdb/target-memory.c +++ b/contrib/gdb-7/gdb/target-memory.c @@ -1,7 +1,7 @@ /* Parts of target interface that deal with accessing memory and memory-like objects. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -84,6 +84,7 @@ claim_memory (VEC(memory_write_request_s) *blocks, { struct memory_write_request *n = VEC_safe_push (memory_write_request_s, *result, NULL); + *n = *r; n->begin = claimed_begin; n->end = claimed_end; @@ -116,8 +117,8 @@ split_regular_and_flash_blocks (VEC(memory_write_request_s) *blocks, while (1) { VEC(memory_write_request_s) **r; - region = lookup_mem_region (cur_address); + region = lookup_mem_region (cur_address); r = region->attrib.mode == MEM_FLASH ? flash_blocks : regular_blocks; cur_address = region->hi; claim_memory (blocks, r, region->lo, region->hi); @@ -175,6 +176,7 @@ blocks_to_erase (VEC(memory_write_request_s) *written) { struct memory_write_request *n = VEC_safe_push (memory_write_request_s, result, NULL); + memset (n, 0, sizeof (struct memory_write_request)); n->begin = begin; n->end = end; @@ -255,6 +257,7 @@ compute_garbled_blocks (VEC(memory_write_request_s) *erased_blocks, { struct memory_write_request *n = VEC_safe_push (memory_write_request_s, result, NULL); + memset (n, 0, sizeof (struct memory_write_request)); n->begin = erased.begin; n->end = written->begin; @@ -300,6 +303,7 @@ static void cleanup_write_requests_vector (void *p) { VEC(memory_write_request_s) **v = p; + VEC_free (memory_write_request_s, *v); } diff --git a/contrib/gdb-7/gdb/target.c b/contrib/gdb-7/gdb/target.c index e5d14fd103..4cabcbd501 100644 --- a/contrib/gdb-7/gdb/target.c +++ b/contrib/gdb-7/gdb/target.c @@ -1,7 +1,7 @@ /* Select target systems and architectures at runtime for GDB. Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -43,11 +43,10 @@ #include "solib.h" #include "exec.h" #include "inline-frame.h" +#include "tracepoint.h" static void target_info (char *, int); -static void kill_or_be_killed (int); - static void default_terminal_info (char *, int); static int default_watchpoint_addr_within_range (struct target_ops *, @@ -57,7 +56,7 @@ static int default_region_ok_for_hw_watchpoint (CORE_ADDR, int); static int nosymbol (char *, CORE_ADDR *); -static void tcomplain (void) ATTR_NORETURN; +static void tcomplain (void) ATTRIBUTE_NORETURN; static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *); @@ -73,8 +72,6 @@ static void target_command (char *, int); static struct target_ops *find_default_run_target (char *); -static void nosupport_runtime (void); - static LONGEST default_xfer_partial (struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *readbuf, @@ -120,9 +117,11 @@ static int debug_to_insert_hw_breakpoint (struct gdbarch *, static int debug_to_remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *); -static int debug_to_insert_watchpoint (CORE_ADDR, int, int); +static int debug_to_insert_watchpoint (CORE_ADDR, int, int, + struct expression *); -static int debug_to_remove_watchpoint (CORE_ADDR, int, int); +static int debug_to_remove_watchpoint (CORE_ADDR, int, int, + struct expression *); static int debug_to_stopped_by_watchpoint (void); @@ -133,6 +132,9 @@ static int debug_to_watchpoint_addr_within_range (struct target_ops *, static int debug_to_region_ok_for_hw_watchpoint (CORE_ADDR, int); +static int debug_to_can_accel_watchpoint_condition (CORE_ADDR, int, int, + struct expression *); + static void debug_to_terminal_init (void); static void debug_to_terminal_inferior (void); @@ -198,6 +200,22 @@ static int trust_readonly = 0; static int show_memory_breakpoints = 0; +/* These globals control whether GDB attempts to perform these + operations; they are useful for targets that need to prevent + inadvertant disruption, such as in non-stop mode. */ + +int may_write_registers = 1; + +int may_write_memory = 1; + +int may_insert_breakpoints = 1; + +int may_insert_tracepoints = 1; + +int may_insert_fast_tracepoints = 1; + +int may_stop = 1; + /* Non-zero if we want to see trace of target level stuff. */ static int targetdebug = 0; @@ -460,6 +478,7 @@ target_create_inferior (char *exec_file, char *args, char **env, int from_tty) { struct target_ops *t; + for (t = current_target.beneath; t != NULL; t = t->beneath) { if (t->to_create_inferior != NULL) @@ -481,8 +500,10 @@ void target_terminal_inferior (void) { /* A background resume (``run&'') should leave GDB in control of the - terminal. */ - if (target_is_async_p () && !sync_execution) + terminal. Use target_can_async_p, not target_is_async_p, since at + this point the target is not async yet. However, if sync_execution + is not set, we know it will become async prior to resume. */ + if (target_can_async_p () && !sync_execution) return; /* If GDB is resuming the inferior in the foreground, install @@ -517,49 +538,12 @@ nosymbol (char *name, CORE_ADDR *addrp) return 1; /* Symbol does not exist in target env */ } -static void -nosupport_runtime (void) -{ - if (ptid_equal (inferior_ptid, null_ptid)) - noprocess (); - else - error (_("No run-time support for this")); -} - - static void default_terminal_info (char *args, int from_tty) { printf_unfiltered (_("No saved terminal information.\n")); } -/* This is the default target_create_inferior and target_attach function. - If the current target is executing, it asks whether to kill it off. - If this function returns without calling error(), it has killed off - the target, and the operation should be attempted. */ - -static void -kill_or_be_killed (int from_tty) -{ - if (target_has_execution) - { - printf_unfiltered (_("You are already running a program:\n")); - target_files_info (); - if (query (_("Kill it? "))) - { - target_kill (); - if (target_has_execution) - error (_("Killing the program did not help.")); - return; - } - else - { - error (_("Program not killed.")); - } - } - tcomplain (); -} - /* A default implementation for the to_get_ada_task_ptid target method. This function builds the PTID by using both LWP and TID as part of @@ -628,6 +612,7 @@ update_current_target (void) INHERIT (to_stopped_by_watchpoint, t); INHERIT (to_watchpoint_addr_within_range, t); INHERIT (to_region_ok_for_hw_watchpoint, t); + INHERIT (to_can_accel_watchpoint_condition, t); INHERIT (to_terminal_init, t); INHERIT (to_terminal_inferior, t); INHERIT (to_terminal_ours_for_output, t); @@ -649,7 +634,7 @@ update_current_target (void) INHERIT (to_remove_exec_catchpoint, t); INHERIT (to_set_syscall_catchpoint, t); INHERIT (to_has_exited, t); - /* Do not inherit to_mourn_inferiour. */ + /* Do not inherit to_mourn_inferior. */ INHERIT (to_can_run, t); INHERIT (to_notice_signals, t); /* Do not inherit to_thread_alive. */ @@ -674,6 +659,8 @@ update_current_target (void) INHERIT (to_async_mask, t); INHERIT (to_find_memory_regions, t); INHERIT (to_make_corefile_notes, t); + INHERIT (to_get_bookmark, t); + INHERIT (to_goto_bookmark, t); /* Do not inherit to_get_thread_local_address. */ INHERIT (to_can_execute_reverse, t); INHERIT (to_thread_architecture, t); @@ -681,6 +668,25 @@ update_current_target (void) INHERIT (to_get_ada_task_ptid, t); /* Do not inherit to_search_memory. */ INHERIT (to_supports_multi_process, t); + INHERIT (to_trace_init, t); + INHERIT (to_download_tracepoint, t); + INHERIT (to_download_trace_state_variable, t); + INHERIT (to_trace_set_readonly_regions, t); + INHERIT (to_trace_start, t); + INHERIT (to_get_trace_status, t); + INHERIT (to_trace_stop, t); + INHERIT (to_trace_find, t); + INHERIT (to_get_trace_state_variable_value, t); + INHERIT (to_save_trace_data, t); + INHERIT (to_upload_tracepoints, t); + INHERIT (to_upload_trace_state_variables, t); + INHERIT (to_get_raw_trace_data, t); + INHERIT (to_set_disconnected_tracing, t); + INHERIT (to_set_circular_trace_buffer, t); + INHERIT (to_get_tib_address, t); + INHERIT (to_set_permissions, t); + INHERIT (to_static_tracepoint_marker_at, t); + INHERIT (to_static_tracepoint_markers_by_strid, t); INHERIT (to_magic, t); /* Do not inherit to_memory_map. */ /* Do not inherit to_flash_erase. */ @@ -728,10 +734,10 @@ update_current_target (void) (int (*) (struct gdbarch *, struct bp_target_info *)) return_minus_one); de_fault (to_insert_watchpoint, - (int (*) (CORE_ADDR, int, int)) + (int (*) (CORE_ADDR, int, int, struct expression *)) return_minus_one); de_fault (to_remove_watchpoint, - (int (*) (CORE_ADDR, int, int)) + (int (*) (CORE_ADDR, int, int, struct expression *)) return_minus_one); de_fault (to_stopped_by_watchpoint, (int (*) (void)) @@ -743,6 +749,9 @@ update_current_target (void) default_watchpoint_addr_within_range); de_fault (to_region_ok_for_hw_watchpoint, default_region_ok_for_hw_watchpoint); + de_fault (to_can_accel_watchpoint_condition, + (int (*) (CORE_ADDR, int, int, struct expression *)) + return_zero); de_fault (to_terminal_init, (void (*) (void)) target_ignore); @@ -829,6 +838,63 @@ update_current_target (void) de_fault (to_supports_multi_process, (int (*) (void)) return_zero); + de_fault (to_trace_init, + (void (*) (void)) + tcomplain); + de_fault (to_download_tracepoint, + (void (*) (struct breakpoint *)) + tcomplain); + de_fault (to_download_trace_state_variable, + (void (*) (struct trace_state_variable *)) + tcomplain); + de_fault (to_trace_set_readonly_regions, + (void (*) (void)) + tcomplain); + de_fault (to_trace_start, + (void (*) (void)) + tcomplain); + de_fault (to_get_trace_status, + (int (*) (struct trace_status *)) + return_minus_one); + de_fault (to_trace_stop, + (void (*) (void)) + tcomplain); + de_fault (to_trace_find, + (int (*) (enum trace_find_type, int, ULONGEST, ULONGEST, int *)) + return_minus_one); + de_fault (to_get_trace_state_variable_value, + (int (*) (int, LONGEST *)) + return_zero); + de_fault (to_save_trace_data, + (int (*) (const char *)) + tcomplain); + de_fault (to_upload_tracepoints, + (int (*) (struct uploaded_tp **)) + return_zero); + de_fault (to_upload_trace_state_variables, + (int (*) (struct uploaded_tsv **)) + return_zero); + de_fault (to_get_raw_trace_data, + (LONGEST (*) (gdb_byte *, ULONGEST, LONGEST)) + tcomplain); + de_fault (to_set_disconnected_tracing, + (void (*) (int)) + target_ignore); + de_fault (to_set_circular_trace_buffer, + (void (*) (int)) + target_ignore); + de_fault (to_get_tib_address, + (int (*) (ptid_t, CORE_ADDR *)) + tcomplain); + de_fault (to_set_permissions, + (void (*) (void)) + target_ignore); + de_fault (to_static_tracepoint_marker_at, + (int (*) (CORE_ADDR, struct static_tracepoint_marker *)) + return_zero); + de_fault (to_static_tracepoint_markers_by_strid, + (VEC(static_tracepoint_marker_p) * (*) (const char *)) + tcomplain); #undef de_fault /* Finally, position the target-stack beneath the squashed @@ -843,14 +909,11 @@ update_current_target (void) /* Push a new target type into the stack of the existing target accessors, possibly superseding some of the existing accessors. - Result is zero if the pushed target ended up on top of the stack, - nonzero if at least one target is on top of it. - Rather than allow an empty stack, we always have the dummy target at the bottom stratum, so we can call the function vectors without checking them. */ -int +void push_target (struct target_ops *t) { struct target_ops **cur; @@ -880,6 +943,7 @@ push_target (struct target_ops *t) /* There's already something at this stratum level. Close it, and un-hook it from the stack. */ struct target_ops *tmp = (*cur); + (*cur) = (*cur)->beneath; tmp->beneath = NULL; target_close (tmp, 0); @@ -890,9 +954,6 @@ push_target (struct target_ops *t) (*cur) = t; update_current_target (); - - /* Not on top? */ - return (t != target_stack); } /* Remove a target_ops vector from the stack, wherever it may be. @@ -948,7 +1009,8 @@ pop_target (void) fprintf_unfiltered (gdb_stderr, "pop_target couldn't find target %s\n", current_target.to_shortname); - internal_error (__FILE__, __LINE__, _("failed internal consistency check")); + internal_error (__FILE__, __LINE__, + _("failed internal consistency check")); } void @@ -1120,6 +1182,7 @@ target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop) if (bufptr - buffer + tlen > buffer_allocated) { unsigned int bytes; + bytes = bufptr - buffer; buffer_allocated *= 2; buffer = xrealloc (buffer, buffer_allocated); @@ -1181,8 +1244,8 @@ target_section_by_addr (struct target_ops *target, CORE_ADDR addr) return NULL; } -/* Perform a partial memory transfer. The arguments and return - value are just as for target_xfer_partial. */ +/* Perform a partial memory transfer. + For docs see target.h, to_xfer_partial. */ static LONGEST memory_xfer_partial (struct target_ops *ops, enum target_object object, @@ -1203,11 +1266,13 @@ memory_xfer_partial (struct target_ops *ops, enum target_object object, if (readbuf != NULL && overlay_debugging) { struct obj_section *section = find_pc_overlay (memaddr); + if (pc_in_unmapped_range (memaddr, section)) { struct target_section_table *table = target_get_section_table (ops); const char *section_name = section->the_bfd_section->name; + memaddr = overlay_mapped_address (memaddr, section); return section_table_xfer_memory_partial (readbuf, writebuf, memaddr, len, @@ -1267,9 +1332,16 @@ memory_xfer_partial (struct target_ops *ops, enum target_object object, return -1; } - inf = find_inferior_pid (ptid_get_pid (inferior_ptid)); + if (!ptid_equal (inferior_ptid, null_ptid)) + inf = find_inferior_pid (ptid_get_pid (inferior_ptid)); + else + inf = NULL; if (inf != NULL + /* The dcache reads whole cache lines; that doesn't play well + with reading from a trace buffer, because reading outside of + the collected memory range fails. */ + && get_traceframe_number () == -1 && (region->attrib.cache || (stack_cache_enabled_p && object == TARGET_OBJECT_STACK_MEMORY))) { @@ -1351,12 +1423,14 @@ struct cleanup * make_show_memory_breakpoints_cleanup (int show) { int current = show_memory_breakpoints; - show_memory_breakpoints = show; + show_memory_breakpoints = show; return make_cleanup (restore_show_memory_breakpoints, (void *) (uintptr_t) current); } +/* For docs see target.h, to_xfer_partial. */ + static LONGEST target_xfer_partial (struct target_ops *ops, enum target_object object, const char *annex, @@ -1367,6 +1441,10 @@ target_xfer_partial (struct target_ops *ops, gdb_assert (ops->to_xfer_partial != NULL); + if (writebuf && !may_write_memory) + error (_("Writing to memory is not allowed (addr %s, len %s)"), + core_addr_to_string_nz (offset), plongest (len)); + /* If this is a memory transfer, let the memory-specific code have a look at it instead. Memory transfers are more complicated. */ @@ -1471,6 +1549,11 @@ target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len) return EIO; } +/* Write LEN bytes from MYADDR to target memory at address MEMADDR. + Returns either 0 for success or an errno value if any error occurs. + If an error occurs, no guarantee is made about how much data got written. + Callers that can deal with partial writes should call target_write. */ + int target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len) { @@ -1539,13 +1622,13 @@ target_flash_erase (ULONGEST address, LONGEST length) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_flash_erase != NULL) - { - if (targetdebug) - fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n", - hex_string (address), phex (length, 0)); - t->to_flash_erase (t, address, length); - return; - } + { + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n", + hex_string (address), phex (length, 0)); + t->to_flash_erase (t, address, length); + return; + } tcomplain (); } @@ -1557,12 +1640,12 @@ target_flash_done (void) for (t = current_target.beneath; t != NULL; t = t->beneath) if (t->to_flash_done != NULL) - { - if (targetdebug) - fprintf_unfiltered (gdb_stdlog, "target_flash_done\n"); - t->to_flash_done (t); - return; - } + { + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_flash_done\n"); + t->to_flash_done (t); + return; + } tcomplain (); } @@ -1589,11 +1672,13 @@ default_xfer_partial (struct target_ops *ops, enum target_object object, "deprecated_xfer_memory" method. */ { int xfered = -1; + errno = 0; if (writebuf != NULL) { void *buffer = xmalloc (len); struct cleanup *cleanup = make_cleanup (xfree, buffer); + memcpy (buffer, writebuf, len); xfered = ops->deprecated_xfer_memory (offset, buffer, len, 1/*write*/, NULL, ops); @@ -1634,11 +1719,7 @@ current_xfer_partial (struct target_ops *ops, enum target_object object, return -1; } -/* Target vector read/write partial wrapper functions. - - NOTE: cagney/2003-10-21: I wonder if having "to_xfer_partial - (inbuf, outbuf)", instead of separate read/write methods, make life - easier. */ +/* Target vector read/write partial wrapper functions. */ static LONGEST target_read_partial (struct target_ops *ops, @@ -1659,6 +1740,9 @@ target_write_partial (struct target_ops *ops, } /* Wrappers to perform the full transfer. */ + +/* For docs on target_read see target.h. */ + LONGEST target_read (struct target_ops *ops, enum target_object object, @@ -1666,11 +1750,13 @@ target_read (struct target_ops *ops, ULONGEST offset, LONGEST len) { LONGEST xfered = 0; + while (xfered < len) { LONGEST xfer = target_read_partial (ops, object, annex, (gdb_byte *) buf + xfered, offset + xfered, len - xfered); + /* Call an observer, notifying them of the xfer progress? */ if (xfer == 0) return xfered; @@ -1689,11 +1775,13 @@ target_read_until_error (struct target_ops *ops, ULONGEST offset, LONGEST len) { LONGEST xfered = 0; + while (xfered < len) { LONGEST xfer = target_read_partial (ops, object, annex, (gdb_byte *) buf + xfered, offset + xfered, len - xfered); + /* Call an observer, notifying them of the xfer progress? */ if (xfer == 0) return xfered; @@ -1747,7 +1835,6 @@ target_read_until_error (struct target_ops *ops, return len; } - /* An alternative to target_write with progress callbacks. */ LONGEST @@ -1783,6 +1870,8 @@ target_write_with_progress (struct target_ops *ops, return len; } +/* For docs on target_write see target.h. */ + LONGEST target_write (struct target_ops *ops, enum target_object object, @@ -1909,8 +1998,8 @@ get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf, } ULONGEST -get_target_memory_unsigned (struct target_ops *ops, - CORE_ADDR addr, int len, enum bfd_endian byte_order) +get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr, + int len, enum bfd_endian byte_order) { gdb_byte buf[sizeof (ULONGEST)]; @@ -1919,6 +2008,36 @@ get_target_memory_unsigned (struct target_ops *ops, return extract_unsigned_integer (buf, len, byte_order); } +int +target_insert_breakpoint (struct gdbarch *gdbarch, + struct bp_target_info *bp_tgt) +{ + if (!may_insert_breakpoints) + { + warning (_("May not insert breakpoints")); + return 1; + } + + return (*current_target.to_insert_breakpoint) (gdbarch, bp_tgt); +} + +int +target_remove_breakpoint (struct gdbarch *gdbarch, + struct bp_target_info *bp_tgt) +{ + /* This is kind of a weird case to handle, but the permission might + have been changed after breakpoints were inserted - in which case + we should just take the user literally and assume that any + breakpoints should be left in place. */ + if (!may_insert_breakpoints) + { + warning (_("May not remove breakpoints")); + return 1; + } + + return (*current_target.to_remove_breakpoint) (gdbarch, bp_tgt); +} + static void target_info (char *args, int from_tty) { @@ -2046,7 +2165,9 @@ target_detach (char *args, int from_tty) else /* If we're in breakpoints-always-inserted mode, have to remove them before detaching. */ - remove_breakpoints (); + remove_breakpoints_pid (PIDGET (inferior_ptid)); + + prepare_for_detach (); for (t = current_target.beneath; t != NULL; t = t->beneath) { @@ -2148,6 +2269,7 @@ target_resume (ptid_t ptid, int step, enum target_signal signal) step ? "step" : "continue", target_signal_to_name (signal)); + registers_changed_ptid (ptid); set_executing (ptid, 1); set_running (ptid, 1); clear_inline_frame_state (ptid); @@ -2170,6 +2292,7 @@ target_follow_fork (int follow_child) if (t->to_follow_fork != NULL) { int retval = t->to_follow_fork (t, follow_child); + if (targetdebug) fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n", follow_child, retval); @@ -2186,6 +2309,7 @@ void target_mourn_inferior (void) { struct target_ops *t; + for (t = current_target.beneath; t != NULL; t = t->beneath) { if (t->to_mourn_inferior != NULL) @@ -2204,7 +2328,7 @@ target_mourn_inferior (void) } internal_error (__FILE__, __LINE__, - "could not find a target to follow mourn inferiour"); + "could not find a target to follow mourn inferior"); } /* Look for a target which can describe architectural features, starting @@ -2286,6 +2410,7 @@ simple_search_memory (struct target_ops *ops, if (found_ptr != NULL) { CORE_ADDR found_addr = start_addr + (found_ptr - search_buf); + *found_addrp = found_addr; do_cleanups (old_cleanups); return 1; @@ -2302,7 +2427,7 @@ simple_search_memory (struct target_ops *ops, if (search_space_len >= pattern_len) { unsigned keep_len = search_buf_size - chunk_size; - CORE_ADDR read_addr = start_addr + keep_len; + CORE_ADDR read_addr = start_addr + chunk_size + keep_len; int nr_to_read; /* Copy the trailing part of the previous iteration to the front @@ -2519,6 +2644,7 @@ int target_supports_non_stop (void) { struct target_ops *t; + for (t = ¤t_target; t != NULL; t = t->beneath) if (t->to_supports_non_stop) return t->to_supports_non_stop (); @@ -2530,7 +2656,6 @@ target_supports_non_stop (void) char * target_get_osdata (const char *type) { - char *document; struct target_ops *t; /* If we're already connected to something that can get us OS @@ -2547,6 +2672,42 @@ target_get_osdata (const char *type) return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type); } +/* Determine the current address space of thread PTID. */ + +struct address_space * +target_thread_address_space (ptid_t ptid) +{ + struct address_space *aspace; + struct inferior *inf; + struct target_ops *t; + + for (t = current_target.beneath; t != NULL; t = t->beneath) + { + if (t->to_thread_address_space != NULL) + { + aspace = t->to_thread_address_space (t, ptid); + gdb_assert (aspace); + + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, + "target_thread_address_space (%s) = %d\n", + target_pid_to_str (ptid), + address_space_num (aspace)); + return aspace; + } + } + + /* Fall-back to the "main" address space of the inferior. */ + inf = find_inferior_pid (ptid_get_pid (ptid)); + + if (inf == NULL || inf->aspace == NULL) + internal_error (__FILE__, __LINE__, "\ +Can't determine the current address space of thread %s\n", + target_pid_to_str (ptid)); + + return inf->aspace; +} + static int default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) { @@ -2658,7 +2819,7 @@ generic_mourn_inferior (void) if (!ptid_equal (ptid, null_ptid)) { int pid = ptid_get_pid (ptid); - delete_inferior (pid); + exit_inferior (pid); } breakpoint_init_inferior (inf_exited); @@ -2712,20 +2873,37 @@ dummy_pid_to_str (struct target_ops *ops, ptid_t ptid) return normal_pid_to_str (ptid); } -/* Error-catcher for target_find_memory_regions */ -static int dummy_find_memory_regions (int (*ignore1) (), void *ignore2) +/* Error-catcher for target_find_memory_regions. */ +static int +dummy_find_memory_regions (int (*ignore1) (), void *ignore2) { - error (_("No target.")); + error (_("Command not implemented for this target.")); return 0; } -/* Error-catcher for target_make_corefile_notes */ -static char * dummy_make_corefile_notes (bfd *ignore1, int *ignore2) +/* Error-catcher for target_make_corefile_notes. */ +static char * +dummy_make_corefile_notes (bfd *ignore1, int *ignore2) +{ + error (_("Command not implemented for this target.")); + return NULL; +} + +/* Error-catcher for target_get_bookmark. */ +static gdb_byte * +dummy_get_bookmark (char *ignore1, int ignore2) { - error (_("No target.")); + tcomplain (); return NULL; } +/* Error-catcher for target_goto_bookmark. */ +static void +dummy_goto_bookmark (gdb_byte *ignore, int from_tty) +{ + tcomplain (); +} + /* Set up the handful of non-empty slots needed by the dummy target vector. */ @@ -2746,12 +2924,17 @@ init_dummy_target (void) dummy_target.to_stratum = dummy_stratum; dummy_target.to_find_memory_regions = dummy_find_memory_regions; dummy_target.to_make_corefile_notes = dummy_make_corefile_notes; + dummy_target.to_get_bookmark = dummy_get_bookmark; + dummy_target.to_goto_bookmark = dummy_goto_bookmark; dummy_target.to_xfer_partial = default_xfer_partial; dummy_target.to_has_all_memory = (int (*) (struct target_ops *)) return_zero; dummy_target.to_has_memory = (int (*) (struct target_ops *)) return_zero; dummy_target.to_has_stack = (int (*) (struct target_ops *)) return_zero; dummy_target.to_has_registers = (int (*) (struct target_ops *)) return_zero; dummy_target.to_has_execution = (int (*) (struct target_ops *)) return_zero; + dummy_target.to_stopped_by_watchpoint = return_zero; + dummy_target.to_stopped_data_address = + (int (*) (struct target_ops *, CORE_ADDR *)) return_zero; dummy_target.to_magic = OPS_MAGIC; } @@ -2779,6 +2962,7 @@ void target_attach (char *args, int from_tty) { struct target_ops *t; + for (t = current_target.beneath; t != NULL; t = t->beneath) { if (t->to_attach != NULL) @@ -2799,6 +2983,7 @@ int target_thread_alive (ptid_t ptid) { struct target_ops *t; + for (t = current_target.beneath; t != NULL; t = t->beneath) { if (t->to_thread_alive != NULL) @@ -2821,6 +3006,7 @@ void target_find_new_threads (void) { struct target_ops *t; + for (t = current_target.beneath; t != NULL; t = t->beneath) { if (t->to_find_new_threads != NULL) @@ -2834,6 +3020,18 @@ target_find_new_threads (void) } } +void +target_stop (ptid_t ptid) +{ + if (!may_stop) + { + warning (_("May not interrupt or stop the target, ignoring attempt")); + return; + } + + (*current_target.to_stop) (ptid); +} + static void debug_to_post_attach (int pid) { @@ -2889,6 +3087,7 @@ debug_print_register (const char * func, struct regcache *regcache, int regno) { struct gdbarch *gdbarch = get_regcache_arch (regcache); + fprintf_unfiltered (gdb_stdlog, "%s ", func); if (regno >= 0 && regno < gdbarch_num_regs (gdbarch) && gdbarch_register_name (gdbarch, regno) != NULL @@ -2902,6 +3101,7 @@ debug_print_register (const char * func, enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int i, size = register_size (gdbarch, regno); unsigned char buf[MAX_REGISTER_SIZE]; + regcache_raw_collect (regcache, regno, buf); fprintf_unfiltered (gdb_stdlog, " = "); for (i = 0; i < size; i++) @@ -2911,6 +3111,7 @@ debug_print_register (const char * func, if (size <= sizeof (LONGEST)) { ULONGEST val = extract_unsigned_integer (buf, size, byte_order); + fprintf_unfiltered (gdb_stdlog, " %s %s", core_addr_to_string_nz (val), plongest (val)); } @@ -2922,6 +3123,7 @@ void target_fetch_registers (struct regcache *regcache, int regno) { struct target_ops *t; + for (t = current_target.beneath; t != NULL; t = t->beneath) { if (t->to_fetch_registers != NULL) @@ -2937,8 +3139,11 @@ target_fetch_registers (struct regcache *regcache, int regno) void target_store_registers (struct regcache *regcache, int regno) { - struct target_ops *t; + + if (!may_write_registers) + error (_("Writing to registers is not allowed (regno %d)"), regno); + for (t = current_target.beneath; t != NULL; t = t->beneath) { if (t->to_store_registers != NULL) @@ -2955,6 +3160,50 @@ target_store_registers (struct regcache *regcache, int regno) noprocess (); } +int +target_core_of_thread (ptid_t ptid) +{ + struct target_ops *t; + + for (t = current_target.beneath; t != NULL; t = t->beneath) + { + if (t->to_core_of_thread != NULL) + { + int retval = t->to_core_of_thread (t, ptid); + + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_core_of_thread (%d) = %d\n", + PIDGET (ptid), retval); + return retval; + } + } + + return -1; +} + +int +target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size) +{ + struct target_ops *t; + + for (t = current_target.beneath; t != NULL; t = t->beneath) + { + if (t->to_verify_memory != NULL) + { + int retval = t->to_verify_memory (t, data, memaddr, size); + + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_verify_memory (%s, %s) = %d\n", + paddress (target_gdbarch, memaddr), + pulongest (size), + retval); + return retval; + } + } + + tcomplain (); +} + static void debug_to_prepare_to_store (struct regcache *regcache) { @@ -3021,8 +3270,8 @@ debug_to_insert_breakpoint (struct gdbarch *gdbarch, retval = debug_target.to_insert_breakpoint (gdbarch, bp_tgt); fprintf_unfiltered (gdb_stdlog, - "target_insert_breakpoint (0x%lx, xxx) = %ld\n", - (unsigned long) bp_tgt->placed_address, + "target_insert_breakpoint (%s, xxx) = %ld\n", + core_addr_to_string (bp_tgt->placed_address), (unsigned long) retval); return retval; } @@ -3036,8 +3285,8 @@ debug_to_remove_breakpoint (struct gdbarch *gdbarch, retval = debug_target.to_remove_breakpoint (gdbarch, bp_tgt); fprintf_unfiltered (gdb_stdlog, - "target_remove_breakpoint (0x%lx, xxx) = %ld\n", - (unsigned long) bp_tgt->placed_address, + "target_remove_breakpoint (%s, xxx) = %ld\n", + core_addr_to_string (bp_tgt->placed_address), (unsigned long) retval); return retval; } @@ -3066,10 +3315,24 @@ debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len); fprintf_unfiltered (gdb_stdlog, - "target_region_ok_for_hw_watchpoint (%ld, %ld) = 0x%lx\n", - (unsigned long) addr, - (unsigned long) len, - (unsigned long) retval); + "target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n", + core_addr_to_string (addr), (unsigned long) len, + core_addr_to_string (retval)); + return retval; +} + +static int +debug_to_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw, + struct expression *cond) +{ + int retval; + + retval = debug_target.to_can_accel_watchpoint_condition (addr, len, rw, cond); + + fprintf_unfiltered (gdb_stdlog, + "target_can_accel_watchpoint_condition (%s, %d, %d, %s) = %ld\n", + core_addr_to_string (addr), len, rw, + host_address_to_string (cond), (unsigned long) retval); return retval; } @@ -3094,8 +3357,8 @@ debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr) retval = debug_target.to_stopped_data_address (target, addr); fprintf_unfiltered (gdb_stdlog, - "target_stopped_data_address ([0x%lx]) = %ld\n", - (unsigned long)*addr, + "target_stopped_data_address ([%s]) = %ld\n", + core_addr_to_string (*addr), (unsigned long)retval); return retval; } @@ -3111,9 +3374,9 @@ debug_to_watchpoint_addr_within_range (struct target_ops *target, start, length); fprintf_filtered (gdb_stdlog, - "target_watchpoint_addr_within_range (0x%lx, 0x%lx, %d) = %d\n", - (unsigned long) addr, (unsigned long) start, length, - retval); + "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n", + core_addr_to_string (addr), core_addr_to_string (start), + length, retval); return retval; } @@ -3126,8 +3389,8 @@ debug_to_insert_hw_breakpoint (struct gdbarch *gdbarch, retval = debug_target.to_insert_hw_breakpoint (gdbarch, bp_tgt); fprintf_unfiltered (gdb_stdlog, - "target_insert_hw_breakpoint (0x%lx, xxx) = %ld\n", - (unsigned long) bp_tgt->placed_address, + "target_insert_hw_breakpoint (%s, xxx) = %ld\n", + core_addr_to_string (bp_tgt->placed_address), (unsigned long) retval); return retval; } @@ -3141,35 +3404,39 @@ debug_to_remove_hw_breakpoint (struct gdbarch *gdbarch, retval = debug_target.to_remove_hw_breakpoint (gdbarch, bp_tgt); fprintf_unfiltered (gdb_stdlog, - "target_remove_hw_breakpoint (0x%lx, xxx) = %ld\n", - (unsigned long) bp_tgt->placed_address, + "target_remove_hw_breakpoint (%s, xxx) = %ld\n", + core_addr_to_string (bp_tgt->placed_address), (unsigned long) retval); return retval; } static int -debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type) +debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type, + struct expression *cond) { int retval; - retval = debug_target.to_insert_watchpoint (addr, len, type); + retval = debug_target.to_insert_watchpoint (addr, len, type, cond); fprintf_unfiltered (gdb_stdlog, - "target_insert_watchpoint (0x%lx, %d, %d) = %ld\n", - (unsigned long) addr, len, type, (unsigned long) retval); + "target_insert_watchpoint (%s, %d, %d, %s) = %ld\n", + core_addr_to_string (addr), len, type, + host_address_to_string (cond), (unsigned long) retval); return retval; } static int -debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type) +debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type, + struct expression *cond) { int retval; - retval = debug_target.to_remove_watchpoint (addr, len, type); + retval = debug_target.to_remove_watchpoint (addr, len, type, cond); fprintf_unfiltered (gdb_stdlog, - "target_remove_watchpoint (0x%lx, %d, %d) = %ld\n", - (unsigned long) addr, len, type, (unsigned long) retval); + "target_remove_watchpoint (%s, %d, %d, %s) = %ld\n", + core_addr_to_string (addr), len, type, + host_address_to_string (cond), (unsigned long) retval); return retval; } @@ -3367,8 +3634,8 @@ debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid) retval = debug_target.to_thread_architecture (ops, ptid); - fprintf_unfiltered (gdb_stdlog, "target_thread_architecture (%s) = %p [%s]\n", - target_pid_to_str (ptid), retval, + fprintf_unfiltered (gdb_stdlog, "target_thread_architecture (%s) = %s [%s]\n", + target_pid_to_str (ptid), host_address_to_string (retval), gdbarch_bfd_arch_info (retval)->printable_name); return retval; } @@ -3424,6 +3691,7 @@ setup_target_debug (void) current_target.to_stopped_data_address = debug_to_stopped_data_address; current_target.to_watchpoint_addr_within_range = debug_to_watchpoint_addr_within_range; current_target.to_region_ok_for_hw_watchpoint = debug_to_region_ok_for_hw_watchpoint; + current_target.to_can_accel_watchpoint_condition = debug_to_can_accel_watchpoint_condition; current_target.to_terminal_init = debug_to_terminal_init; current_target.to_terminal_inferior = debug_to_terminal_inferior; current_target.to_terminal_ours_for_output = debug_to_terminal_ours_for_output; @@ -3512,6 +3780,62 @@ show_maintenance_target_async_permitted (struct ui_file *file, int from_tty, Controlling the inferior in asynchronous mode is %s.\n"), value); } +/* Temporary copies of permission settings. */ + +static int may_write_registers_1 = 1; +static int may_write_memory_1 = 1; +static int may_insert_breakpoints_1 = 1; +static int may_insert_tracepoints_1 = 1; +static int may_insert_fast_tracepoints_1 = 1; +static int may_stop_1 = 1; + +/* Make the user-set values match the real values again. */ + +void +update_target_permissions (void) +{ + may_write_registers_1 = may_write_registers; + may_write_memory_1 = may_write_memory; + may_insert_breakpoints_1 = may_insert_breakpoints; + may_insert_tracepoints_1 = may_insert_tracepoints; + may_insert_fast_tracepoints_1 = may_insert_fast_tracepoints; + may_stop_1 = may_stop; +} + +/* The one function handles (most of) the permission flags in the same + way. */ + +static void +set_target_permissions (char *args, int from_tty, + struct cmd_list_element *c) +{ + if (target_has_execution) + { + update_target_permissions (); + error (_("Cannot change this setting while the inferior is running.")); + } + + /* Make the real values match the user-changed values. */ + may_write_registers = may_write_registers_1; + may_insert_breakpoints = may_insert_breakpoints_1; + may_insert_tracepoints = may_insert_tracepoints_1; + may_insert_fast_tracepoints = may_insert_fast_tracepoints_1; + may_stop = may_stop_1; + update_observer_mode (); +} + +/* Set memory write permission independently of observer mode. */ + +static void +set_write_memory_permission (char *args, int from_tty, + struct cmd_list_element *c) +{ + /* Make the real values match the user-changed values. */ + may_write_memory = may_write_memory_1; + update_observer_mode (); +} + + void initialize_targets (void) { @@ -3570,5 +3894,60 @@ By default, caching for stack access is on."), show_stack_cache_enabled_p, &setlist, &showlist); + add_setshow_boolean_cmd ("may-write-registers", class_support, + &may_write_registers_1, _("\ +Set permission to write into registers."), _("\ +Show permission to write into registers."), _("\ +When this permission is on, GDB may write into the target's registers.\n\ +Otherwise, any sort of write attempt will result in an error."), + set_target_permissions, NULL, + &setlist, &showlist); + + add_setshow_boolean_cmd ("may-write-memory", class_support, + &may_write_memory_1, _("\ +Set permission to write into target memory."), _("\ +Show permission to write into target memory."), _("\ +When this permission is on, GDB may write into the target's memory.\n\ +Otherwise, any sort of write attempt will result in an error."), + set_write_memory_permission, NULL, + &setlist, &showlist); + + add_setshow_boolean_cmd ("may-insert-breakpoints", class_support, + &may_insert_breakpoints_1, _("\ +Set permission to insert breakpoints in the target."), _("\ +Show permission to insert breakpoints in the target."), _("\ +When this permission is on, GDB may insert breakpoints in the program.\n\ +Otherwise, any sort of insertion attempt will result in an error."), + set_target_permissions, NULL, + &setlist, &showlist); + + add_setshow_boolean_cmd ("may-insert-tracepoints", class_support, + &may_insert_tracepoints_1, _("\ +Set permission to insert tracepoints in the target."), _("\ +Show permission to insert tracepoints in the target."), _("\ +When this permission is on, GDB may insert tracepoints in the program.\n\ +Otherwise, any sort of insertion attempt will result in an error."), + set_target_permissions, NULL, + &setlist, &showlist); + + add_setshow_boolean_cmd ("may-insert-fast-tracepoints", class_support, + &may_insert_fast_tracepoints_1, _("\ +Set permission to insert fast tracepoints in the target."), _("\ +Show permission to insert fast tracepoints in the target."), _("\ +When this permission is on, GDB may insert fast tracepoints.\n\ +Otherwise, any sort of insertion attempt will result in an error."), + set_target_permissions, NULL, + &setlist, &showlist); + + add_setshow_boolean_cmd ("may-interrupt", class_support, + &may_stop_1, _("\ +Set permission to interrupt or signal the target."), _("\ +Show permission to interrupt or signal the target."), _("\ +When this permission is on, GDB may interrupt/stop the target's execution.\n\ +Otherwise, any attempt to interrupt or stop will be ignored."), + set_target_permissions, NULL, + &setlist, &showlist); + + target_dcache = dcache_init (); } diff --git a/contrib/gdb-7/gdb/target.h b/contrib/gdb-7/gdb/target.h index b1cb8523b5..3c8c017489 100644 --- a/contrib/gdb-7/gdb/target.h +++ b/contrib/gdb-7/gdb/target.h @@ -1,7 +1,7 @@ /* Interface between GDB and target environments, including files and processes Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by John Gilmore. @@ -31,6 +31,13 @@ struct target_ops; struct bp_target_info; struct regcache; struct target_section_table; +struct trace_state_variable; +struct trace_status; +struct uploaded_tsv; +struct uploaded_tp; +struct static_tracepoint_marker; + +struct expression; /* This include file defines the interface between the main part of the debugger, and the part which is target-specific, or @@ -110,6 +117,15 @@ enum target_waitkind TARGET_WAITKIND_EXECD, + /* The program had previously vforked, and now the child is done + with the shared memory region, because it exec'ed or exited. + Note that the event is reported to the vfork parent. This is + only used if GDB did not stay attached to the vfork child, + otherwise, a TARGET_WAITKIND_EXECD or + TARGET_WAITKIND_EXIT|SIGNALLED event associated with the child + has the same effect. */ + TARGET_WAITKIND_VFORK_DONE, + /* The program has entered or returned from a system call. On HP-UX, this is used in the hardware watchpoint implementation. The syscall's unique integer ID number is in value.syscall_id */ @@ -246,9 +262,28 @@ enum target_object /* Extra signal info. Usually the contents of `siginfo_t' on unix platforms. */ TARGET_OBJECT_SIGNAL_INFO, + /* The list of threads that are being debugged. */ + TARGET_OBJECT_THREADS, + /* Collected static trace data. */ + TARGET_OBJECT_STATIC_TRACE_DATA, /* Possible future objects: TARGET_OBJECT_FILE, ... */ }; +/* Enumeration of the kinds of traceframe searches that a target may + be able to perform. */ + +enum trace_find_type + { + tfind_number, + tfind_pc, + tfind_tp, + tfind_range, + tfind_outside, + }; + +typedef struct static_tracepoint_marker *static_tracepoint_marker_p; +DEF_VEC_P(static_tracepoint_marker_p); + /* Request that OPS transfer up to LEN 8-bit bytes of the target's OBJECT. The OFFSET, for a seekable object, specifies the starting point. The ANNEX can be used to provide additional @@ -393,8 +428,12 @@ struct target_ops int (*to_can_use_hw_breakpoint) (int, int, int); int (*to_insert_hw_breakpoint) (struct gdbarch *, struct bp_target_info *); int (*to_remove_hw_breakpoint) (struct gdbarch *, struct bp_target_info *); - int (*to_remove_watchpoint) (CORE_ADDR, int, int); - int (*to_insert_watchpoint) (CORE_ADDR, int, int); + + /* Documentation of what the two routines below are expected to do is + provided with the corresponding target_* macros. */ + int (*to_remove_watchpoint) (CORE_ADDR, int, int, struct expression *); + int (*to_insert_watchpoint) (CORE_ADDR, int, int, struct expression *); + int (*to_stopped_by_watchpoint) (void); int to_have_steppable_watchpoint; int to_have_continuable_watchpoint; @@ -402,6 +441,8 @@ struct target_ops int (*to_watchpoint_addr_within_range) (struct target_ops *, CORE_ADDR, CORE_ADDR, int); int (*to_region_ok_for_hw_watchpoint) (CORE_ADDR, int); + int (*to_can_accel_watchpoint_condition) (CORE_ADDR, int, int, + struct expression *); void (*to_terminal_init) (void); void (*to_terminal_inferior) (void); void (*to_terminal_ours_for_output) (void); @@ -450,13 +491,18 @@ struct target_ops void (*to_async) (void (*) (enum inferior_event_type, void *), void *); int (*to_async_mask) (int); int (*to_supports_non_stop) (void); + /* find_memory_regions support method for gcore */ int (*to_find_memory_regions) (int (*) (CORE_ADDR, unsigned long, int, int, int, void *), void *); + /* make_corefile_notes support method for gcore */ char * (*to_make_corefile_notes) (bfd *, int *); - + /* get_bookmark support method for bookmarks */ + gdb_byte * (*to_get_bookmark) (char *, int); + /* goto_bookmark support method for bookmarks */ + void (*to_goto_bookmark) (gdb_byte *, int); /* Return the thread-local address at OFFSET in the thread-local storage for the thread PTID and the shared library or executable file given by OBJFILE. If that block of @@ -576,6 +622,97 @@ struct target_ops The default implementation always returns target_gdbarch. */ struct gdbarch *(*to_thread_architecture) (struct target_ops *, ptid_t); + /* Determine current address space of thread PTID. + + The default implementation always returns the inferior's + address space. */ + struct address_space *(*to_thread_address_space) (struct target_ops *, + ptid_t); + + /* Tracepoint-related operations. */ + + /* Prepare the target for a tracing run. */ + void (*to_trace_init) (void); + + /* Send full details of a tracepoint to the target. */ + void (*to_download_tracepoint) (struct breakpoint *t); + + /* Send full details of a trace state variable to the target. */ + void (*to_download_trace_state_variable) (struct trace_state_variable *tsv); + + /* Inform the target info of memory regions that are readonly + (such as text sections), and so it should return data from + those rather than look in the trace buffer. */ + void (*to_trace_set_readonly_regions) (void); + + /* Start a trace run. */ + void (*to_trace_start) (void); + + /* Get the current status of a tracing run. */ + int (*to_get_trace_status) (struct trace_status *ts); + + /* Stop a trace run. */ + void (*to_trace_stop) (void); + + /* Ask the target to find a trace frame of the given type TYPE, + using NUM, ADDR1, and ADDR2 as search parameters. Returns the + number of the trace frame, and also the tracepoint number at + TPP. If no trace frame matches, return -1. May throw if the + operation fails. */ + int (*to_trace_find) (enum trace_find_type type, int num, + ULONGEST addr1, ULONGEST addr2, int *tpp); + + /* Get the value of the trace state variable number TSV, returning + 1 if the value is known and writing the value itself into the + location pointed to by VAL, else returning 0. */ + int (*to_get_trace_state_variable_value) (int tsv, LONGEST *val); + + int (*to_save_trace_data) (const char *filename); + + int (*to_upload_tracepoints) (struct uploaded_tp **utpp); + + int (*to_upload_trace_state_variables) (struct uploaded_tsv **utsvp); + + LONGEST (*to_get_raw_trace_data) (gdb_byte *buf, + ULONGEST offset, LONGEST len); + + /* Set the target's tracing behavior in response to unexpected + disconnection - set VAL to 1 to keep tracing, 0 to stop. */ + void (*to_set_disconnected_tracing) (int val); + void (*to_set_circular_trace_buffer) (int val); + + /* Return the processor core that thread PTID was last seen on. + This information is updated only when: + - update_thread_list is called + - thread stops + If the core cannot be determined -- either for the specified thread, or + right now, or in this debug session, or for this target -- return -1. */ + int (*to_core_of_thread) (struct target_ops *, ptid_t ptid); + + /* Verify that the memory in the [MEMADDR, MEMADDR+SIZE) range + matches the contents of [DATA,DATA+SIZE). Returns 1 if there's + a match, 0 if there's a mismatch, and -1 if an error is + encountered while reading memory. */ + int (*to_verify_memory) (struct target_ops *, const gdb_byte *data, + CORE_ADDR memaddr, ULONGEST size); + + /* Return the address of the start of the Thread Information Block + a Windows OS specific feature. */ + int (*to_get_tib_address) (ptid_t ptid, CORE_ADDR *addr); + + /* Send the new settings of write permission variables. */ + void (*to_set_permissions) (void); + + /* Look for a static tracepoint marker at ADDR, and fill in MARKER + with its details. Return 1 on success, 0 on failure. */ + int (*to_static_tracepoint_marker_at) (CORE_ADDR, + struct static_tracepoint_marker *marker); + + /* Return a vector of all tracepoints markers string id ID, or all + markers if ID is NULL. */ + VEC(static_tracepoint_marker_p) *(*to_static_tracepoint_markers_by_strid) + (const char *id); + int to_magic; /* Need sub-structure for target machine related rather than comm related? */ @@ -685,6 +822,10 @@ extern void target_store_registers (struct regcache *regcache, int regs); #define target_prepare_to_store(regcache) \ (*current_target.to_prepare_to_store) (regcache) +/* Determine current address space of thread PTID. */ + +struct address_space *target_thread_address_space (ptid_t); + /* Returns true if this target can debug multiple processes simultaneously. */ @@ -775,14 +916,14 @@ extern int inferior_has_called_syscall (ptid_t pid, int *syscall_number); /* Insert a breakpoint at address BP_TGT->placed_address in the target machine. Result is 0 for success, or an errno value. */ -#define target_insert_breakpoint(gdbarch, bp_tgt) \ - (*current_target.to_insert_breakpoint) (gdbarch, bp_tgt) +extern int target_insert_breakpoint (struct gdbarch *gdbarch, + struct bp_target_info *bp_tgt); /* Remove a breakpoint at address BP_TGT->placed_address in the target machine. Result is 0 for success, or an errno value. */ -#define target_remove_breakpoint(gdbarch, bp_tgt) \ - (*current_target.to_remove_breakpoint) (gdbarch, bp_tgt) +extern int target_remove_breakpoint (struct gdbarch *gdbarch, + struct bp_target_info *bp_tgt); /* Initialize the terminal settings we record for the inferior, before we actually run the inferior. */ @@ -977,7 +1118,7 @@ extern void target_find_new_threads (void); Unix, this should act like SIGSTOP). This function is normally used by GUIs to implement a stop button. */ -#define target_stop(ptid) (*current_target.to_stop) (ptid) +extern void target_stop (ptid_t ptid); /* Send the specified COMMAND to the target's monitor (shell,interpreter) for execution. The result of the query is @@ -1121,10 +1262,17 @@ extern char *normal_pid_to_str (ptid_t ptid); #define target_make_corefile_notes(BFD, SIZE_P) \ (current_target.to_make_corefile_notes) (BFD, SIZE_P) +/* Bookmark interfaces. */ +#define target_get_bookmark(ARGS, FROM_TTY) \ + (current_target.to_get_bookmark) (ARGS, FROM_TTY) + +#define target_goto_bookmark(ARG, FROM_TTY) \ + (current_target.to_goto_bookmark) (ARG, FROM_TTY) + /* Hardware watchpoint interfaces. */ /* Returns non-zero if we were stopped by a hardware watchpoint (memory read or - write). */ + write). Only the INFERIOR_PTID task is being queried. */ #define target_stopped_by_watchpoint \ (*current_target.to_stopped_by_watchpoint) @@ -1156,15 +1304,17 @@ extern char *normal_pid_to_str (ptid_t ptid); (*current_target.to_region_ok_for_hw_watchpoint) (addr, len) -/* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes. TYPE is 0 - for write, 1 for read, and 2 for read/write accesses. Returns 0 for - success, non-zero for failure. */ +/* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes. + TYPE is 0 for write, 1 for read, and 2 for read/write accesses. + COND is the expression for its condition, or NULL if there's none. + Returns 0 for success, 1 if the watchpoint type is not supported, + -1 for failure. */ -#define target_insert_watchpoint(addr, len, type) \ - (*current_target.to_insert_watchpoint) (addr, len, type) +#define target_insert_watchpoint(addr, len, type, cond) \ + (*current_target.to_insert_watchpoint) (addr, len, type, cond) -#define target_remove_watchpoint(addr, len, type) \ - (*current_target.to_remove_watchpoint) (addr, len, type) +#define target_remove_watchpoint(addr, len, type, cond) \ + (*current_target.to_remove_watchpoint) (addr, len, type, cond) #define target_insert_hw_breakpoint(gdbarch, bp_tgt) \ (*current_target.to_insert_hw_breakpoint) (gdbarch, bp_tgt) @@ -1172,12 +1322,28 @@ extern char *normal_pid_to_str (ptid_t ptid); #define target_remove_hw_breakpoint(gdbarch, bp_tgt) \ (*current_target.to_remove_hw_breakpoint) (gdbarch, bp_tgt) -#define target_stopped_data_address(target, x) \ - (*target.to_stopped_data_address) (target, x) +/* Return non-zero if target knows the data address which triggered this + target_stopped_by_watchpoint, in such case place it to *ADDR_P. Only the + INFERIOR_PTID task is being queried. */ +#define target_stopped_data_address(target, addr_p) \ + (*target.to_stopped_data_address) (target, addr_p) #define target_watchpoint_addr_within_range(target, addr, start, length) \ (*target.to_watchpoint_addr_within_range) (target, addr, start, length) +/* Return non-zero if the target is capable of using hardware to evaluate + the condition expression. In this case, if the condition is false when + the watched memory location changes, execution may continue without the + debugger being notified. + + Due to limitations in the hardware implementation, it may be capable of + avoiding triggering the watchpoint in some cases where the condition + expression is false, but may report some false positives as well. + For this reason, GDB will still evaluate the condition expression when + the watchpoint triggers. */ +#define target_can_accel_watchpoint_condition(addr, len, type, cond) \ + (*current_target.to_can_accel_watchpoint_condition) (addr, len, type, cond) + /* Target can execute in reverse? */ #define target_can_execute_reverse \ (current_target.to_can_execute_reverse ? \ @@ -1203,6 +1369,65 @@ extern int target_search_memory (CORE_ADDR start_addr, ULONGEST pattern_len, CORE_ADDR *found_addrp); +/* Tracepoint-related operations. */ + +#define target_trace_init() \ + (*current_target.to_trace_init) () + +#define target_download_tracepoint(t) \ + (*current_target.to_download_tracepoint) (t) + +#define target_download_trace_state_variable(tsv) \ + (*current_target.to_download_trace_state_variable) (tsv) + +#define target_trace_start() \ + (*current_target.to_trace_start) () + +#define target_trace_set_readonly_regions() \ + (*current_target.to_trace_set_readonly_regions) () + +#define target_get_trace_status(ts) \ + (*current_target.to_get_trace_status) (ts) + +#define target_trace_stop() \ + (*current_target.to_trace_stop) () + +#define target_trace_find(type,num,addr1,addr2,tpp) \ + (*current_target.to_trace_find) ((type), (num), (addr1), (addr2), (tpp)) + +#define target_get_trace_state_variable_value(tsv,val) \ + (*current_target.to_get_trace_state_variable_value) ((tsv), (val)) + +#define target_save_trace_data(filename) \ + (*current_target.to_save_trace_data) (filename) + +#define target_upload_tracepoints(utpp) \ + (*current_target.to_upload_tracepoints) (utpp) + +#define target_upload_trace_state_variables(utsvp) \ + (*current_target.to_upload_trace_state_variables) (utsvp) + +#define target_get_raw_trace_data(buf,offset,len) \ + (*current_target.to_get_raw_trace_data) ((buf), (offset), (len)) + +#define target_set_disconnected_tracing(val) \ + (*current_target.to_set_disconnected_tracing) (val) + +#define target_set_circular_trace_buffer(val) \ + (*current_target.to_set_circular_trace_buffer) (val) + +#define target_get_tib_address(ptid, addr) \ + (*current_target.to_get_tib_address) ((ptid), (addr)) + +#define target_set_permissions() \ + (*current_target.to_set_permissions) () + +#define target_static_tracepoint_marker_at(addr, marker) \ + (*current_target.to_static_tracepoint_marker_at) (addr, marker) + +#define target_static_tracepoint_markers_by_strid(marker_id) \ + (*current_target.to_static_tracepoint_markers_by_strid) (marker_id) + /* Command logging facility. */ #define target_log_command(p) \ @@ -1211,6 +1436,17 @@ extern int target_search_memory (CORE_ADDR start_addr, (*current_target.to_log_command) (p); \ while (0) + +extern int target_core_of_thread (ptid_t ptid); + +/* Verify that the memory in the [MEMADDR, MEMADDR+SIZE) range matches + the contents of [DATA,DATA+SIZE). Returns 1 if there's a match, 0 + if there's a mismatch, and -1 if an error is encountered while + reading memory. Throws an error if the functionality is found not + to be supported by the current target. */ +int target_verify_memory (const gdb_byte *data, + CORE_ADDR memaddr, ULONGEST size); + /* Routines for maintenance of the target structures... add_target: Add a target to the list of all possible targets. @@ -1228,7 +1464,7 @@ extern int target_search_memory (CORE_ADDR start_addr, extern void add_target (struct target_ops *); -extern int push_target (struct target_ops *); +extern void push_target (struct target_ops *); extern int unpush_target (struct target_ops *); @@ -1299,7 +1535,7 @@ extern int default_memory_insert_breakpoint (struct gdbarch *, struct bp_target_ extern void initialize_targets (void); -extern NORETURN void noprocess (void) ATTR_NORETURN; +extern void noprocess (void) ATTRIBUTE_NORETURN; extern void target_require_runnable (void); @@ -1354,6 +1590,15 @@ extern enum target_signal target_signal_from_command (int); to restore it back to the current value. */ extern struct cleanup *make_show_memory_breakpoints_cleanup (int show); +extern int may_write_registers; +extern int may_write_memory; +extern int may_insert_breakpoints; +extern int may_insert_tracepoints; +extern int may_insert_fast_tracepoints; +extern int may_stop; + +extern void update_target_permissions (void); + /* Imported from machine dependent code */ diff --git a/contrib/gdb-7/gdb/terminal.h b/contrib/gdb-7/gdb/terminal.h index f6a3e56feb..c549a9c369 100644 --- a/contrib/gdb-7/gdb/terminal.h +++ b/contrib/gdb-7/gdb/terminal.h @@ -1,6 +1,6 @@ /* Terminal interface definitions for GDB, the GNU Debugger. Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1995, 1996, 1999, 2000, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/thread.c b/contrib/gdb-7/gdb/thread.c index 55b4b96fc6..0b291bae97 100644 --- a/contrib/gdb-7/gdb/thread.c +++ b/contrib/gdb-7/gdb/thread.c @@ -1,7 +1,7 @@ /* Multi-process/thread control for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Lynx Real-Time Systems, Inc. Los Gatos, CA. @@ -114,10 +114,13 @@ free_thread (struct thread_info *tp) { clear_thread_inferior_resources (tp); - /* FIXME: do I ever need to call the back-end to give it a - chance at this private data before deleting the thread? */ if (tp->private) - xfree (tp->private); + { + if (tp->private_dtor) + tp->private_dtor (tp->private); + else + xfree (tp->private); + } xfree (tp); } @@ -184,11 +187,11 @@ add_thread_silent (ptid_t ptid) if (ptid_equal (inferior_ptid, ptid)) { - tp = new_thread (ptid); + tp = new_thread (null_ptid); /* Make switch_to_thread not read from the thread. */ tp->state_ = THREAD_EXITED; - switch_to_thread (minus_one_ptid); + switch_to_thread (null_ptid); /* Now we can delete it. */ delete_thread (ptid); @@ -394,6 +397,7 @@ ptid_t thread_id_to_pid (int num) { struct thread_info *thread = find_thread_id (num); + if (thread) return thread->ptid; else @@ -440,6 +444,24 @@ any_thread_of_process (int pid) return NULL; } +struct thread_info * +any_live_thread_of_process (int pid) +{ + struct thread_info *tp; + struct thread_info *tp_running = NULL; + + for (tp = thread_list; tp; tp = tp->next) + if (ptid_get_pid (tp->ptid) == pid) + { + if (tp->state_ == THREAD_STOPPED) + return tp; + else if (tp->state_ == THREAD_RUNNING) + tp_running = tp; + } + + return tp_running; +} + /* Print a list of thread ids currently known, and the total number of threads. To be used from within catch_errors. */ static int @@ -450,8 +472,7 @@ do_captured_list_thread_ids (struct ui_out *uiout, void *arg) struct cleanup *cleanup_chain; int current_thread = -1; - prune_threads (); - target_find_new_threads (); + update_thread_list (); cleanup_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "thread-ids"); @@ -540,6 +561,7 @@ set_running (ptid_t ptid, int running) if (all || ptid_is_pid (ptid)) { int any_started = 0; + for (tp = thread_list; tp; tp = tp->next) if (all || ptid_get_pid (tp->ptid) == ptid_get_pid (ptid)) { @@ -555,6 +577,7 @@ set_running (ptid_t ptid, int running) else { int started = 0; + tp = find_thread_ptid (ptid); gdb_assert (tp); gdb_assert (tp->state_ != THREAD_EXITED); @@ -730,8 +753,7 @@ print_thread_info (struct ui_out *uiout, int requested_thread, int pid) char *extra_info; int current_thread = -1; - prune_threads (); - target_find_new_threads (); + update_thread_list (); current_ptid = inferior_ptid; /* We'll be switching threads temporarily. */ @@ -741,6 +763,7 @@ print_thread_info (struct ui_out *uiout, int requested_thread, int pid) for (tp = thread_list; tp; tp = tp->next) { struct cleanup *chain2; + int core; if (requested_thread != -1 && tp->num != requested_thread) continue; @@ -794,11 +817,16 @@ print_thread_info (struct ui_out *uiout, int requested_thread, int pid) if (ui_out_is_mi_like_p (uiout)) { char *state = "stopped"; + if (tp->state_ == THREAD_RUNNING) state = "running"; ui_out_field_string (uiout, "state", state); } + core = target_core_of_thread (tp->ptid); + if (ui_out_is_mi_like_p (uiout) && core != -1) + ui_out_field_int (uiout, "core", core); + do_cleanups (chain2); } @@ -845,6 +873,19 @@ info_threads_command (char *arg, int from_tty) void switch_to_thread (ptid_t ptid) { + /* Switch the program space as well, if we can infer it from the now + current thread. Otherwise, it's up to the caller to select the + space it wants. */ + if (!ptid_equal (ptid, null_ptid)) + { + struct inferior *inf; + + inf = find_inferior_pid (ptid_get_pid (ptid)); + gdb_assert (inf != NULL); + set_current_program_space (inf->pspace); + set_current_inferior (inf); + } + if (ptid_equal (ptid, inferior_ptid)) return; @@ -909,7 +950,7 @@ restore_selected_frame (struct frame_id a_frame_id, int frame_level) select_frame (get_current_frame ()); /* Warn the user. */ - if (!ui_out_is_mi_like_p (uiout)) + if (frame_level > 0 && !ui_out_is_mi_like_p (uiout)) { warning (_("\ Couldn't restore frame #%d in current thread, at reparsed frame #0\n"), @@ -927,6 +968,7 @@ struct current_thread_cleanup struct frame_id selected_frame_id; int selected_frame_level; int was_stopped; + int inf_id; }; static void @@ -945,7 +987,10 @@ do_restore_current_thread_cleanup (void *arg) && find_inferior_pid (ptid_get_pid (tp->ptid)) != NULL) restore_current_thread (old->inferior_ptid); else - restore_current_thread (null_ptid); + { + restore_current_thread (null_ptid); + set_current_inferior (find_inferior_id (old->inf_id)); + } /* The running state of the originally selected thread may have changed, so we have to recheck it here. */ @@ -964,6 +1009,7 @@ restore_current_thread_cleanup_dtor (void *arg) { struct current_thread_cleanup *old = arg; struct thread_info *tp; + tp = find_thread_ptid (old->inferior_ptid); if (tp) tp->refcount--; @@ -979,6 +1025,7 @@ make_cleanup_restore_current_thread (void) old = xmalloc (sizeof (struct current_thread_cleanup)); old->inferior_ptid = inferior_ptid; + old->inf_id = current_inferior ()->num; if (!ptid_equal (inferior_ptid, null_ptid)) { @@ -1022,8 +1069,7 @@ thread_apply_all_command (char *cmd, int from_tty) if (cmd == NULL || *cmd == '\000') error (_("Please specify a command following the thread ID list")); - prune_threads (); - target_find_new_threads (); + update_thread_list (); old_chain = make_cleanup_restore_current_thread (); @@ -1209,6 +1255,25 @@ gdb_thread_select (struct ui_out *uiout, char *tidstr, char **error_message) return GDB_RC_OK; } +void +update_thread_list (void) +{ + prune_threads (); + target_find_new_threads (); +} + +/* Return a new value for the selected thread's id. Return a value of 0 if + no thread is selected, or no threads exist. */ + +static struct value * +thread_id_make_value (struct gdbarch *gdbarch, struct internalvar *var) +{ + struct thread_info *tp = find_thread_ptid (inferior_ptid); + + return value_from_longest (builtin_type (gdbarch)->builtin_int, + (tp ? tp->num : 0)); +} + /* Commands with a prefix of `thread'. */ struct cmd_list_element *thread_cmd_list = NULL; @@ -1242,4 +1307,6 @@ Show printing of thread events (such as thread start and exit)."), NULL, NULL, show_print_thread_events, &setprintlist, &showprintlist); + + create_internalvar_type_lazy ("_thread", thread_id_make_value); } diff --git a/contrib/gdb-7/gdb/top.c b/contrib/gdb-7/gdb/top.c index 1b4aa9d1af..b29e68dcc9 100644 --- a/contrib/gdb-7/gdb/top.c +++ b/contrib/gdb-7/gdb/top.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -184,15 +184,6 @@ int remote_debug = 0; char *lim_at_start; #endif -/* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT. */ - -#ifndef STOP_SIGNAL -#ifdef SIGTSTP -#define STOP_SIGNAL SIGTSTP -static void stop_sig (int); -#endif -#endif - /* Hooks for alternate command interfaces. */ /* Called after most modules have been initialized, but before taking users @@ -259,9 +250,6 @@ void (*deprecated_interactive_hook) (void); that several registers have changed (see value_assign). */ void (*deprecated_register_changed_hook) (int regno); -/* Tell the GUI someone changed LEN bytes of memory at ADDR */ -void (*deprecated_memory_changed_hook) (CORE_ADDR addr, int len); - /* Called when going to wait for the target. Usually allows the GUI to run while waiting for target events. */ @@ -310,7 +298,7 @@ quit_cover (void *s) /* NOTE 1999-04-29: This variable will be static again, once we modify gdb to use the event loop as the default command loop and we merge event-top.c into this file, top.c */ -/* static */ char *source_file_name; +/* static */ const char *source_file_name; /* Clean up on error during a "source" command (or execution of a user-defined command). */ @@ -368,25 +356,6 @@ execute_command (char *p, int from_tty) enum language flang; static int warned = 0; char *line; - long time_at_cmd_start = 0; -#ifdef HAVE_SBRK - long space_at_cmd_start = 0; -#endif - extern int display_time; - extern int display_space; - - if (target_can_async_p ()) - { - time_at_cmd_start = get_run_time (); - - if (display_space) - { -#ifdef HAVE_SBRK - char *lim = (char *) sbrk (0); - space_at_cmd_start = lim - lim_at_start; -#endif - } - } prepare_execute_command (); @@ -457,10 +426,13 @@ execute_command (char *p, int from_tty) } - /* Tell the user if the language has changed (except first time). */ + /* Tell the user if the language has changed (except first time). + First make sure that a new frame has been selected, in case this + command or the hooks changed the program state. */ + deprecated_safe_get_selected_frame (); if (current_language != expected_language) { - if (language_mode == language_mode_auto) + if (language_mode == language_mode_auto && info_verbose) { language_info (1); /* Print what changed. */ } @@ -486,6 +458,39 @@ execute_command (char *p, int from_tty) } } +/* Run execute_command for P and FROM_TTY. Capture its output into the + returned string, do not display it to the screen. BATCH_FLAG will be + temporarily set to true. */ + +char * +execute_command_to_string (char *p, int from_tty) +{ + struct ui_file *str_file; + struct cleanup *cleanup; + char *retval; + + /* GDB_STDOUT should be better already restored during these + restoration callbacks. */ + cleanup = set_batch_flag_and_make_cleanup_restore_page_info (); + + str_file = mem_fileopen (); + + make_cleanup_restore_ui_file (&gdb_stdout); + make_cleanup_restore_ui_file (&gdb_stderr); + make_cleanup_ui_file_delete (str_file); + + gdb_stdout = str_file; + gdb_stderr = str_file; + + execute_command (p, from_tty); + + retval = ui_file_xstrdup (str_file, NULL); + + do_cleanups (cleanup); + + return retval; +} + /* Read commands from `instream' and execute them until end of file or error reading instream. */ @@ -495,12 +500,6 @@ command_loop (void) struct cleanup *old_chain; char *command; int stdin_is_tty = ISATTY (stdin); - long time_at_cmd_start; -#ifdef HAVE_SBRK - long space_at_cmd_start = 0; -#endif - extern int display_time; - extern int display_space; while (instream && !feof (instream)) { @@ -519,15 +518,7 @@ command_loop (void) if (command == 0) return; - time_at_cmd_start = get_run_time (); - - if (display_space) - { -#ifdef HAVE_SBRK - char *lim = (char *) sbrk (0); - space_at_cmd_start = lim - lim_at_start; -#endif - } + make_command_stats_cleanup (1); execute_command (command, instream == stdin); @@ -535,28 +526,6 @@ command_loop (void) bpstat_do_actions (); do_cleanups (old_chain); - - if (display_time) - { - long cmd_time = get_run_time () - time_at_cmd_start; - - printf_unfiltered (_("Command execution time: %ld.%06ld\n"), - cmd_time / 1000000, cmd_time % 1000000); - } - - if (display_space) - { -#ifdef HAVE_SBRK - char *lim = (char *) sbrk (0); - long space_now = lim - lim_at_start; - long space_diff = space_now - space_at_cmd_start; - - printf_unfiltered (_("Space used: %ld (%s%ld for this command)\n"), - space_now, - (space_diff >= 0 ? "+" : ""), - space_diff); -#endif - } } } @@ -785,57 +754,6 @@ gdb_readline_wrapper (char *prompt) } -#ifdef STOP_SIGNAL -static void -stop_sig (int signo) -{ -#if STOP_SIGNAL == SIGTSTP - signal (SIGTSTP, SIG_DFL); -#if HAVE_SIGPROCMASK - { - sigset_t zero; - - sigemptyset (&zero); - sigprocmask (SIG_SETMASK, &zero, 0); - } -#elif HAVE_SIGSETMASK - sigsetmask (0); -#endif - kill (getpid (), SIGTSTP); - signal (SIGTSTP, stop_sig); -#else - signal (STOP_SIGNAL, stop_sig); -#endif - printf_unfiltered ("%s", get_prompt ()); - gdb_flush (gdb_stdout); - - /* Forget about any previous command -- null line now will do nothing. */ - dont_repeat (); -} -#endif /* STOP_SIGNAL */ - -/* Initialize signal handlers. */ -static void -float_handler (int signo) -{ - /* This message is based on ANSI C, section 4.7. Note that integer - divide by zero causes this, so "float" is a misnomer. */ - signal (SIGFPE, float_handler); - error (_("Erroneous arithmetic operation.")); -} - -static void -do_nothing (int signo) -{ - /* Under System V the default disposition of a signal is reinstated after - the signal is caught and delivered to an application process. On such - systems one must restore the replacement signal handler if one wishes - to continue handling the signal in one's program. On BSD systems this - is not needed but it is harmless, and it simplifies the code to just do - it unconditionally. */ - signal (signo, do_nothing); -} - /* The current saved history number from operate-and-get-next. This is -1 if not valid. */ static int operate_saved_history = -1; @@ -846,6 +764,7 @@ static void gdb_rl_operate_and_get_next_completion (void) { int delta = where_history () - operate_saved_history; + /* The `key' argument to rl_get_previous_history is ignored. */ rl_get_previous_history (delta, 0); operate_saved_history = -1; @@ -1118,7 +1037,7 @@ print_gdb_version (struct ui_file *stream) /* Second line is a copyright notice. */ - fprintf_filtered (stream, "Copyright (C) 2009 Free Software Foundation, Inc.\n"); + fprintf_filtered (stream, "Copyright (C) 2010 Free Software Foundation, Inc.\n"); /* Following the copyright is a brief statement that the program is free software, that users are free to copy and change it on @@ -1187,6 +1106,9 @@ kill_or_detach (struct inferior *inf, void *args) struct qt_args *qt = args; struct thread_info *thread; + if (inf->pid == 0) + return 0; + thread = any_thread_of_process (inf->pid); if (thread != NULL) { @@ -1214,6 +1136,9 @@ print_inferior_quit_action (struct inferior *inf, void *arg) { struct ui_file *stb = arg; + if (inf->pid == 0) + return 0; + if (inf->attach_flag) fprintf_filtered (stb, _("\tInferior %d [%s] will be detached.\n"), inf->num, @@ -1350,6 +1275,9 @@ input_from_terminal_p (void) if (interactive_mode != AUTO_BOOLEAN_AUTO) return interactive_mode == AUTO_BOOLEAN_TRUE; + if (batch_flag) + return 0; + if (gdb_has_a_terminal () && instream == stdin) return 1; @@ -1570,8 +1498,6 @@ Notification of completion for asynchronous execution commands is %s.\n"), static void init_main (void) { - struct cmd_list_element *c; - /* initialize the prompt stack to a simple "(gdb) " prompt or to whatever the DEFAULT_PROMPT is. */ the_prompts.top = 0; @@ -1721,6 +1647,13 @@ gdb_init (char *argv0) initialize_targets (); /* Setup target_terminal macros for utils.c */ initialize_utils (); /* Make errors and warnings possible */ initialize_all_files (); + /* This creates the current_program_space. Do this after all the + _initialize_foo routines have had a chance to install their + per-sspace data keys. Also do this before + initialize_current_architecture is called, because it accesses + exec_bfd of the current program space. */ + initialize_progspace (); + initialize_inferiors (); initialize_current_architecture (); init_cli_cmds(); init_main (); /* But that omits this file! Do it now */ diff --git a/contrib/gdb-7/gdb/top.h b/contrib/gdb-7/gdb/top.h index 070a62e7cd..c1802747c9 100644 --- a/contrib/gdb-7/gdb/top.h +++ b/contrib/gdb-7/gdb/top.h @@ -1,7 +1,7 @@ /* Top level stuff for GDB, the GNU debugger. Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, - 1997, 1998, 1999, 2000, 2005, 2006, 2007, 2008, 2009 + 1997, 1998, 1999, 2000, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -35,8 +35,6 @@ extern char gdbinit[]; extern void print_gdb_version (struct ui_file *); -extern void source_script (char *, int); -extern void cd_command (char *, int); extern void read_command_file (FILE *); extern void init_history (void); extern void command_loop (void); @@ -70,7 +68,7 @@ extern void gdb_init (char *); /* For use by event-top.c */ /* Variables from top.c. */ extern int source_line_number; -extern char *source_file_name; +extern const char *source_file_name; extern int history_expansion_p; extern int server_command; extern char *lim_at_start; diff --git a/contrib/gdb-7/gdb/tracepoint.c b/contrib/gdb-7/gdb/tracepoint.c index 0d439efd3f..28ba55027c 100644 --- a/contrib/gdb-7/gdb/tracepoint.c +++ b/contrib/gdb-7/gdb/tracepoint.c @@ -1,7 +1,7 @@ /* Tracing functionality for remote targets in custom GDB protocol Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -32,8 +32,6 @@ #include "inferior.h" #include "breakpoint.h" #include "tracepoint.h" -#include "remote.h" -extern int remote_supports_cond_tracepoints (void); #include "linespec.h" #include "regcache.h" #include "completer.h" @@ -44,7 +42,12 @@ extern int remote_supports_cond_tracepoints (void); #include "valprint.h" #include "gdbcore.h" #include "objfiles.h" - +#include "filenames.h" +#include "gdbthread.h" +#include "stack.h" +#include "gdbcore.h" +#include "remote.h" +#include "source.h" #include "ax.h" #include "ax-gdb.h" @@ -59,6 +62,15 @@ extern int remote_supports_cond_tracepoints (void); #include #endif +#ifndef O_LARGEFILE +#define O_LARGEFILE 0 +#endif + +extern int hex2bin (const char *hex, gdb_byte *bin, int count); +extern int bin2hex (const gdb_byte *bin, char *hex, int count); + +extern void stop_tracing (); + /* Maximum length of an agent aexpression. This accounts for the fact that packets are limited to 400 bytes (which includes everything -- including the checksum), and assumes @@ -69,6 +81,10 @@ extern int remote_supports_cond_tracepoints (void); large. (400 - 31)/2 == 184 */ #define MAX_AGENT_EXPR_LEN 184 +/* A hook used to notify the UI of tracepoint operations. */ + +void (*deprecated_trace_find_hook) (char *arg, int from_tty); +void (*deprecated_trace_start_stop_hook) (int start, int from_tty); extern void (*deprecated_readline_begin_hook) (char *, ...); extern char *(*deprecated_readline_hook) (char *); @@ -107,6 +123,19 @@ extern void output_command (char *, int); /* ======= Important global variables: ======= */ +/* The list of all trace state variables. We don't retain pointers to + any of these for any reason - API is by name or number only - so it + works to have a vector of objects. */ + +typedef struct trace_state_variable tsv_s; +DEF_VEC_O(tsv_s); + +static VEC(tsv_s) *tvariables; + +/* The next integer to assign to a variable. */ + +static int next_tsv_number = 1; + /* Number of last traceframe collected. */ static int traceframe_number; @@ -122,6 +151,16 @@ static struct symtab_and_line traceframe_sal; /* Tracing command lists */ static struct cmd_list_element *tfindlist; +/* List of expressions to collect by default at each tracepoint hit. */ +char *default_collect = ""; + +static int disconnected_tracing; + +/* This variable controls whether we ask the target for a linear or + circular trace buffer. */ + +static int circular_trace_buffer; + /* ======= Important command functions: ======= */ static void trace_actions_command (char *, int); static void trace_start_command (char *, int); @@ -133,7 +172,6 @@ static void trace_find_tracepoint_command (char *, int); static void trace_find_line_command (char *, int); static void trace_find_range_command (char *, int); static void trace_find_outside_command (char *, int); -static void tracepoint_save_command (char *, int); static void trace_dump_command (char *, int); /* support routines */ @@ -143,67 +181,31 @@ static void add_aexpr (struct collection_list *, struct agent_expr *); static char *mem2hex (gdb_byte *, char *, int); static void add_register (struct collection_list *collection, unsigned int regno); -static struct cleanup *make_cleanup_free_actions (struct breakpoint *t); -static void free_actions_list (char **actions_list); -static void free_actions_list_cleanup_wrapper (void *); + +extern void send_disconnected_tracing_value (int value); + +static void free_uploaded_tps (struct uploaded_tp **utpp); +static void free_uploaded_tsvs (struct uploaded_tsv **utsvp); + extern void _initialize_tracepoint (void); -/* Utility: returns true if "target remote" */ -static int -target_is_remote (void) -{ - if (current_target.to_shortname && - (strcmp (current_target.to_shortname, "remote") == 0 - || strcmp (current_target.to_shortname, "extended-remote") == 0)) - return 1; - else - return 0; -} +static struct trace_status trace_status; -/* Utility: generate error from an incoming stub packet. */ -static void -trace_error (char *buf) -{ - if (*buf++ != 'E') - return; /* not an error msg */ - switch (*buf) - { - case '1': /* malformed packet error */ - if (*++buf == '0') /* general case: */ - error (_("tracepoint.c: error in outgoing packet.")); - else - error (_("tracepoint.c: error in outgoing packet at field #%ld."), - strtol (buf, NULL, 16)); - case '2': - error (_("trace API error 0x%s."), ++buf); - default: - error (_("Target returns error code '%s'."), buf); - } -} +char *stop_reason_names[] = { + "tunknown", + "tnotrun", + "tstop", + "tfull", + "tdisconnected", + "tpasscount", + "terror" +}; -/* Utility: wait for reply from stub, while accepting "O" packets. */ -static char * -remote_get_noisy_reply (char **buf_p, - long *sizeof_buf) +struct trace_status * +current_trace_status () { - do /* Loop on reply from remote stub. */ - { - char *buf; - QUIT; /* allow user to bail out with ^C */ - getpkt (buf_p, sizeof_buf, 0); - buf = *buf_p; - if (buf[0] == 0) - error (_("Target does not support this command.")); - else if (buf[0] == 'E') - trace_error (buf); - else if (buf[0] == 'O' && - buf[1] != 'K') - remote_console_output (buf + 1); /* 'O' message from stub */ - else - return buf; /* here's the actual reply */ - } - while (1); + return &trace_status; } /* Set traceframe number to NUM. */ @@ -270,10 +272,234 @@ set_traceframe_context (struct frame_info *trace_frame) traceframe_sal.symtab->filename); } -/* ACTIONS functions: */ +/* Create a new trace state variable with the given name. */ + +struct trace_state_variable * +create_trace_state_variable (const char *name) +{ + struct trace_state_variable tsv; + + memset (&tsv, 0, sizeof (tsv)); + tsv.name = xstrdup (name); + tsv.number = next_tsv_number++; + return VEC_safe_push (tsv_s, tvariables, &tsv); +} + +/* Look for a trace state variable of the given name. */ + +struct trace_state_variable * +find_trace_state_variable (const char *name) +{ + struct trace_state_variable *tsv; + int ix; + + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) + if (strcmp (name, tsv->name) == 0) + return tsv; + + return NULL; +} + +void +delete_trace_state_variable (const char *name) +{ + struct trace_state_variable *tsv; + int ix; + + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) + if (strcmp (name, tsv->name) == 0) + { + xfree ((void *)tsv->name); + VEC_unordered_remove (tsv_s, tvariables, ix); + return; + } + + warning (_("No trace variable named \"$%s\", not deleting"), name); +} + +/* The 'tvariable' command collects a name and optional expression to + evaluate into an initial value. */ + +void +trace_variable_command (char *args, int from_tty) +{ + struct expression *expr; + struct cleanup *old_chain; + struct internalvar *intvar = NULL; + LONGEST initval = 0; + struct trace_state_variable *tsv; + + if (!args || !*args) + error_no_arg (_("trace state variable name")); + + /* All the possible valid arguments are expressions. */ + expr = parse_expression (args); + old_chain = make_cleanup (free_current_contents, &expr); + + if (expr->nelts == 0) + error (_("No expression?")); + + /* Only allow two syntaxes; "$name" and "$name=value". */ + if (expr->elts[0].opcode == OP_INTERNALVAR) + { + intvar = expr->elts[1].internalvar; + } + else if (expr->elts[0].opcode == BINOP_ASSIGN + && expr->elts[1].opcode == OP_INTERNALVAR) + { + intvar = expr->elts[2].internalvar; + initval = value_as_long (evaluate_subexpression_type (expr, 4)); + } + else + error (_("Syntax must be $NAME [ = EXPR ]")); + + if (!intvar) + error (_("No name given")); + + if (strlen (internalvar_name (intvar)) <= 0) + error (_("Must supply a non-empty variable name")); + + /* If the variable already exists, just change its initial value. */ + tsv = find_trace_state_variable (internalvar_name (intvar)); + if (tsv) + { + tsv->initial_value = initval; + printf_filtered (_("Trace state variable $%s now has initial value %s.\n"), + tsv->name, plongest (tsv->initial_value)); + do_cleanups (old_chain); + return; + } + + /* Create a new variable. */ + tsv = create_trace_state_variable (internalvar_name (intvar)); + tsv->initial_value = initval; + + printf_filtered (_("Trace state variable $%s created, with initial value %s.\n"), + tsv->name, plongest (tsv->initial_value)); + + do_cleanups (old_chain); +} + +void +delete_trace_variable_command (char *args, int from_tty) +{ + int ix; + char **argv; + struct cleanup *back_to; + + if (args == NULL) + { + if (query (_("Delete all trace state variables? "))) + VEC_free (tsv_s, tvariables); + dont_repeat (); + return; + } + + argv = gdb_buildargv (args); + back_to = make_cleanup_freeargv (argv); + + for (ix = 0; argv[ix] != NULL; ix++) + { + if (*argv[ix] == '$') + delete_trace_state_variable (argv[ix] + 1); + else + warning (_("Name \"%s\" not prefixed with '$', ignoring"), argv[ix]); + } + + do_cleanups (back_to); + + dont_repeat (); +} + +void +tvariables_info_1 (void) +{ + struct trace_state_variable *tsv; + int ix; + int count = 0; + struct cleanup *back_to; + + if (VEC_length (tsv_s, tvariables) == 0 && !ui_out_is_mi_like_p (uiout)) + { + printf_filtered (_("No trace state variables.\n")); + return; + } + + /* Try to acquire values from the target. */ + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix, ++count) + tsv->value_known = target_get_trace_state_variable_value (tsv->number, + &(tsv->value)); + + back_to = make_cleanup_ui_out_table_begin_end (uiout, 3, + count, "trace-variables"); + ui_out_table_header (uiout, 15, ui_left, "name", "Name"); + ui_out_table_header (uiout, 11, ui_left, "initial", "Initial"); + ui_out_table_header (uiout, 11, ui_left, "current", "Current"); + + ui_out_table_body (uiout); + + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) + { + struct cleanup *back_to2; + char *c; + char *name; + + back_to2 = make_cleanup_ui_out_tuple_begin_end (uiout, "variable"); + + name = concat ("$", tsv->name, (char *) NULL); + make_cleanup (xfree, name); + ui_out_field_string (uiout, "name", name); + ui_out_field_string (uiout, "initial", plongest (tsv->initial_value)); + + if (tsv->value_known) + c = plongest (tsv->value); + else if (ui_out_is_mi_like_p (uiout)) + /* For MI, we prefer not to use magic string constants, but rather + omit the field completely. The difference between unknown and + undefined does not seem important enough to represent. */ + c = NULL; + else if (current_trace_status ()->running || traceframe_number >= 0) + /* The value is/was defined, but we don't have it. */ + c = ""; + else + /* It is not meaningful to ask about the value. */ + c = ""; + if (c) + ui_out_field_string (uiout, "current", c); + ui_out_text (uiout, "\n"); + + do_cleanups (back_to2); + } + + do_cleanups (back_to); +} + +/* List all the trace state variables. */ + +static void +tvariables_info (char *args, int from_tty) +{ + tvariables_info_1 (); +} + +/* Stash definitions of tsvs into the given file. */ -/* Prototypes for action-parsing utility commands */ -static void read_actions (struct breakpoint *); +void +save_trace_state_variables (struct ui_file *fp) +{ + struct trace_state_variable *tsv; + int ix; + + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) + { + fprintf_unfiltered (fp, "tvariable $%s", tsv->name); + if (tsv->initial_value) + fprintf_unfiltered (fp, " = %s", plongest (tsv->initial_value)); + fprintf_unfiltered (fp, "\n"); + } +} + +/* ACTIONS functions: */ /* The three functions: collect_pseudocommand, @@ -302,179 +528,92 @@ collect_pseudocommand (char *args, int from_tty) error (_("This command can only be used in a tracepoint actions list.")); } +static void +teval_pseudocommand (char *args, int from_tty) +{ + error (_("This command can only be used in a tracepoint actions list.")); +} + /* Enter a list of actions for a tracepoint. */ static void trace_actions_command (char *args, int from_tty) { struct breakpoint *t; - char tmpbuf[128]; - char *end_msg = "End with a line saying just \"end\"."; + struct command_line *l; t = get_tracepoint_by_number (&args, 0, 1); if (t) { - sprintf (tmpbuf, "Enter actions for tracepoint %d, one per line.", - t->number); - - if (from_tty) - { - if (deprecated_readline_begin_hook) - (*deprecated_readline_begin_hook) ("%s %s\n", tmpbuf, end_msg); - else if (input_from_terminal_p ()) - printf_filtered ("%s\n%s\n", tmpbuf, end_msg); - } - - free_actions (t); - t->step_count = 0; /* read_actions may set this */ - read_actions (t); - - if (deprecated_readline_end_hook) - (*deprecated_readline_end_hook) (); - /* tracepoints_changed () */ + char *tmpbuf = + xstrprintf ("Enter actions for tracepoint %d, one per line.", + t->number); + struct cleanup *cleanups = make_cleanup (xfree, tmpbuf); + + l = read_command_lines (tmpbuf, from_tty, 1, check_tracepoint_command, t); + do_cleanups (cleanups); + breakpoint_set_commands (t, l); } /* else just return */ } -/* worker function */ -static void -read_actions (struct breakpoint *t) -{ - char *line; - char *prompt1 = "> ", *prompt2 = " > "; - char *prompt = prompt1; - enum actionline_type linetype; - extern FILE *instream; - struct action_line *next = NULL, *temp; - struct cleanup *old_chain; - - /* Control-C quits instantly if typed while in this loop - since it should not wait until the user types a newline. */ - immediate_quit++; - /* FIXME: kettenis/20010823: Something is wrong here. In this file - STOP_SIGNAL is never defined. So this code has been left out, at - least for quite a while now. Replacing STOP_SIGNAL with SIGTSTP - leads to compilation failures since the variable job_control - isn't declared. Leave this alone for now. */ -#ifdef STOP_SIGNAL - if (job_control) - signal (STOP_SIGNAL, handle_stop_sig); -#endif - old_chain = make_cleanup_free_actions (t); - while (1) - { - /* Make sure that all output has been output. Some machines may - let you get away with leaving out some of the gdb_flush, but - not all. */ - wrap_here (""); - gdb_flush (gdb_stdout); - gdb_flush (gdb_stderr); - - if (deprecated_readline_hook && instream == NULL) - line = (*deprecated_readline_hook) (prompt); - else if (instream == stdin && ISATTY (instream)) - { - line = gdb_readline_wrapper (prompt); - if (line && *line) /* add it to command history */ - add_history (line); - } - else - line = gdb_readline (0); - - if (!line) - { - line = xstrdup ("end"); - printf_filtered ("end\n"); - } - - linetype = validate_actionline (&line, t); - if (linetype == BADLINE) - continue; /* already warned -- collect another line */ - - temp = xmalloc (sizeof (struct action_line)); - temp->next = NULL; - temp->action = line; - - if (next == NULL) /* first action for this tracepoint? */ - t->actions = next = temp; - else - { - next->next = temp; - next = temp; - } +/* Report the results of checking the agent expression, as errors or + internal errors. */ - if (linetype == STEPPING) /* begin "while-stepping" */ - { - if (prompt == prompt2) - { - warning (_("Already processing 'while-stepping'")); - continue; - } - else - prompt = prompt2; /* change prompt for stepping actions */ - } - else if (linetype == END) - { - if (prompt == prompt2) - { - prompt = prompt1; /* end of single-stepping actions */ - } - else - { /* end of actions */ - if (t->actions->next == NULL) - { - /* An "end" all by itself with no other actions - means this tracepoint has no actions. - Discard empty list. */ - free_actions (t); - } - break; - } - } - } -#ifdef STOP_SIGNAL - if (job_control) - signal (STOP_SIGNAL, SIG_DFL); -#endif - immediate_quit--; - discard_cleanups (old_chain); +static void +report_agent_reqs_errors (struct agent_expr *aexpr) +{ + /* All of the "flaws" are serious bytecode generation issues that + should never occur. */ + if (aexpr->flaw != agent_flaw_none) + internal_error (__FILE__, __LINE__, _("expression is malformed")); + + /* If analysis shows a stack underflow, GDB must have done something + badly wrong in its bytecode generation. */ + if (aexpr->min_height < 0) + internal_error (__FILE__, __LINE__, + _("expression has min height < 0")); + + /* Issue this error if the stack is predicted to get too deep. The + limit is rather arbitrary; a better scheme might be for the + target to report how much stack it will have available. The + depth roughly corresponds to parenthesization, so a limit of 20 + amounts to 20 levels of expression nesting, which is actually + a pretty big hairy expression. */ + if (aexpr->max_height > 20) + error (_("Expression is too complicated.")); } /* worker function */ -enum actionline_type +void validate_actionline (char **line, struct breakpoint *t) { struct cmd_list_element *c; struct expression *exp = NULL; struct cleanup *old_chain = NULL; - char *p; + char *p, *tmp_p; + struct bp_location *loc; + struct agent_expr *aexpr; /* if EOF is typed, *line is NULL */ if (*line == NULL) - return END; + return; for (p = *line; isspace ((int) *p);) p++; /* Symbol lookup etc. */ if (*p == '\0') /* empty line: just prompt for another line. */ - return BADLINE; + return; if (*p == '#') /* comment line */ - return GENERIC; + return; c = lookup_cmd (&p, cmdlist, "", -1, 1); if (c == 0) - { - warning (_("'%s' is not an action that I know, or is ambiguous."), - p); - return BADLINE; - } + error (_("`%s' is not a tracepoint action, or is ambiguous."), p); if (cmd_cfunc_eq (c, collect_pseudocommand)) { - struct agent_expr *aexpr; - struct agent_reqs areqs; - do { /* repeat over a comma-separated list */ QUIT; /* allow user to bail out with ^C */ @@ -483,61 +622,91 @@ validate_actionline (char **line, struct breakpoint *t) if (*p == '$') /* look for special pseudo-symbols */ { - if ((0 == strncasecmp ("reg", p + 1, 3)) || - (0 == strncasecmp ("arg", p + 1, 3)) || - (0 == strncasecmp ("loc", p + 1, 3))) + if (0 == strncasecmp ("reg", p + 1, 3) + || 0 == strncasecmp ("arg", p + 1, 3) + || 0 == strncasecmp ("loc", p + 1, 3) + || 0 == strncasecmp ("_sdata", p + 1, 6)) { p = strchr (p, ','); continue; } /* else fall thru, treat p as an expression and parse it! */ } - exp = parse_exp_1 (&p, block_for_pc (t->loc->address), 1); - old_chain = make_cleanup (free_current_contents, &exp); - - if (exp->elts[0].opcode == OP_VAR_VALUE) + tmp_p = p; + for (loc = t->loc; loc; loc = loc->next) { - if (SYMBOL_CLASS (exp->elts[2].symbol) == LOC_CONST) - { - warning (_("constant %s (value %ld) will not be collected."), - SYMBOL_PRINT_NAME (exp->elts[2].symbol), - SYMBOL_VALUE (exp->elts[2].symbol)); - return BADLINE; - } - else if (SYMBOL_CLASS (exp->elts[2].symbol) == LOC_OPTIMIZED_OUT) + p = tmp_p; + exp = parse_exp_1 (&p, block_for_pc (loc->address), 1); + old_chain = make_cleanup (free_current_contents, &exp); + + if (exp->elts[0].opcode == OP_VAR_VALUE) { - warning (_("%s is optimized away and cannot be collected."), - SYMBOL_PRINT_NAME (exp->elts[2].symbol)); - return BADLINE; + if (SYMBOL_CLASS (exp->elts[2].symbol) == LOC_CONST) + { + error (_("constant `%s' (value %ld) will not be collected."), + SYMBOL_PRINT_NAME (exp->elts[2].symbol), + SYMBOL_VALUE (exp->elts[2].symbol)); + } + else if (SYMBOL_CLASS (exp->elts[2].symbol) == LOC_OPTIMIZED_OUT) + { + error (_("`%s' is optimized away and cannot be collected."), + SYMBOL_PRINT_NAME (exp->elts[2].symbol)); + } } - } - /* We have something to collect, make sure that the expr to - bytecode translator can handle it and that it's not too - long. */ - aexpr = gen_trace_for_expr (t->loc->address, exp); - make_cleanup_free_agent_expr (aexpr); + /* We have something to collect, make sure that the expr to + bytecode translator can handle it and that it's not too + long. */ + aexpr = gen_trace_for_expr (loc->address, exp); + make_cleanup_free_agent_expr (aexpr); + + if (aexpr->len > MAX_AGENT_EXPR_LEN) + error (_("Expression is too complicated.")); + + ax_reqs (aexpr); + + report_agent_reqs_errors (aexpr); + + do_cleanups (old_chain); + } + } + while (p && *p++ == ','); + } - if (aexpr->len > MAX_AGENT_EXPR_LEN) - error (_("expression too complicated, try simplifying")); + else if (cmd_cfunc_eq (c, teval_pseudocommand)) + { + do + { /* repeat over a comma-separated list */ + QUIT; /* allow user to bail out with ^C */ + while (isspace ((int) *p)) + p++; - ax_reqs (aexpr, &areqs); - (void) make_cleanup (xfree, areqs.reg_mask); + tmp_p = p; + for (loc = t->loc; loc; loc = loc->next) + { + p = tmp_p; + /* Only expressions are allowed for this action. */ + exp = parse_exp_1 (&p, block_for_pc (loc->address), 1); + old_chain = make_cleanup (free_current_contents, &exp); - if (areqs.flaw != agent_flaw_none) - error (_("malformed expression")); + /* We have something to evaluate, make sure that the expr to + bytecode translator can handle it and that it's not too + long. */ + aexpr = gen_eval_for_expr (loc->address, exp); + make_cleanup_free_agent_expr (aexpr); - if (areqs.min_height < 0) - error (_("gdb: Internal error: expression has min height < 0")); + if (aexpr->len > MAX_AGENT_EXPR_LEN) + error (_("Expression is too complicated.")); - if (areqs.max_height > 20) - error (_("expression too complicated, try simplifying")); + ax_reqs (aexpr); + report_agent_reqs_errors (aexpr); - do_cleanups (old_chain); + do_cleanups (old_chain); + } } while (p && *p++ == ','); - return GENERIC; } + else if (cmd_cfunc_eq (c, while_stepping_pseudocommand)) { char *steparg; /* in case warning is necessary */ @@ -546,49 +715,15 @@ validate_actionline (char **line, struct breakpoint *t) p++; steparg = p; - if (*p == '\0' || - (t->step_count = strtol (p, &p, 0)) == 0) - { - warning (_("'%s': bad step-count; command ignored."), *line); - return BADLINE; - } - return STEPPING; - } - else if (cmd_cfunc_eq (c, end_actions_pseudocommand)) - return END; - else - { - warning (_("'%s' is not a supported tracepoint action."), *line); - return BADLINE; - } -} - -/* worker function */ -void -free_actions (struct breakpoint *t) -{ - struct action_line *line, *next; - - for (line = t->actions; line; line = next) - { - next = line->next; - if (line->action) - xfree (line->action); - xfree (line); + if (*p == '\0' || (t->step_count = strtol (p, &p, 0)) == 0) + error (_("while-stepping step count `%s' is malformed."), *line); } - t->actions = NULL; -} -static void -do_free_actions_cleanup (void *t) -{ - free_actions (t); -} + else if (cmd_cfunc_eq (c, end_actions_pseudocommand)) + ; -static struct cleanup * -make_cleanup_free_actions (struct breakpoint *t) -{ - return make_cleanup (do_free_actions_cleanup, t); + else + error (_("`%s' is not a supported tracepoint action."), *line); } enum { @@ -613,6 +748,9 @@ struct collection_list long next_aexpr_elt; struct agent_expr **aexpr_list; + /* True is the user requested a collection of "$_sdata", "static + tracepoint data". */ + int strace_data; } tracepoint_list, stepping_list; @@ -725,11 +863,13 @@ static void collect_symbol (struct collection_list *collect, struct symbol *sym, struct gdbarch *gdbarch, - long frame_regno, long frame_offset) + long frame_regno, long frame_offset, + CORE_ADDR scope) { unsigned long len; unsigned int reg; bfd_signed_vma offset; + int treat_as_expr = 0; len = TYPE_LENGTH (check_typedef (SYMBOL_TYPE (sym))); switch (SYMBOL_CLASS (sym)) @@ -754,7 +894,12 @@ collect_symbol (struct collection_list *collect, SYMBOL_PRINT_NAME (sym), len, tmp /* address */); } - add_memrange (collect, memrange_absolute, offset, len); + /* A struct may be a C++ class with static fields, go to general + expression handling. */ + if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT) + treat_as_expr = 1; + else + add_memrange (collect, memrange_absolute, offset, len); break; case LOC_REGISTER: reg = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch); @@ -809,51 +954,148 @@ collect_symbol (struct collection_list *collect, } add_memrange (collect, reg, offset, len); break; + case LOC_UNRESOLVED: - printf_filtered ("Don't know LOC_UNRESOLVED %s\n", - SYMBOL_PRINT_NAME (sym)); + treat_as_expr = 1; break; + case LOC_OPTIMIZED_OUT: printf_filtered ("%s has been optimized out of existence.\n", SYMBOL_PRINT_NAME (sym)); break; + + case LOC_COMPUTED: + treat_as_expr = 1; + break; } -} -/* Add all locals (or args) symbols to collection list */ -static void -add_local_symbols (struct collection_list *collect, - struct gdbarch *gdbarch, CORE_ADDR pc, - long frame_regno, long frame_offset, int type) -{ - struct symbol *sym; - struct block *block; - struct dict_iterator iter; - int count = 0; - - block = block_for_pc (pc); - while (block != 0) + /* Expressions are the most general case. */ + if (treat_as_expr) { - QUIT; /* allow user to bail out with ^C */ - ALL_BLOCK_SYMBOLS (block, iter, sym) + struct agent_expr *aexpr; + struct cleanup *old_chain1 = NULL; + + aexpr = gen_trace_for_var (scope, gdbarch, sym); + + /* It can happen that the symbol is recorded as a computed + location, but it's been optimized away and doesn't actually + have a location expression. */ + if (!aexpr) + { + printf_filtered ("%s has been optimized out of existence.\n", + SYMBOL_PRINT_NAME (sym)); + return; + } + + old_chain1 = make_cleanup_free_agent_expr (aexpr); + + ax_reqs (aexpr); + + report_agent_reqs_errors (aexpr); + + discard_cleanups (old_chain1); + add_aexpr (collect, aexpr); + + /* take care of the registers */ + if (aexpr->reg_mask_len > 0) { - if (SYMBOL_IS_ARGUMENT (sym) - ? type == 'A' /* collecting Arguments */ - : type == 'L') /* collecting Locals */ + int ndx1, ndx2; + + for (ndx1 = 0; ndx1 < aexpr->reg_mask_len; ndx1++) { - count++; - collect_symbol (collect, sym, gdbarch, - frame_regno, frame_offset); + QUIT; /* allow user to bail out with ^C */ + if (aexpr->reg_mask[ndx1] != 0) + { + /* assume chars have 8 bits */ + for (ndx2 = 0; ndx2 < 8; ndx2++) + if (aexpr->reg_mask[ndx1] & (1 << ndx2)) + /* it's used -- record it */ + add_register (collect, ndx1 * 8 + ndx2); + } } } - if (BLOCK_FUNCTION (block)) - break; - else - block = BLOCK_SUPERBLOCK (block); } - if (count == 0) - warning (_("No %s found in scope."), - type == 'L' ? "locals" : "args"); +} + +/* Data to be passed around in the calls to the locals and args + iterators. */ + +struct add_local_symbols_data +{ + struct collection_list *collect; + struct gdbarch *gdbarch; + CORE_ADDR pc; + long frame_regno; + long frame_offset; + int count; +}; + +/* The callback for the locals and args iterators */ + +static void +do_collect_symbol (const char *print_name, + struct symbol *sym, + void *cb_data) +{ + struct add_local_symbols_data *p = cb_data; + + collect_symbol (p->collect, sym, p->gdbarch, p->frame_regno, + p->frame_offset, p->pc); + p->count++; +} + +/* Add all locals (or args) symbols to collection list */ +static void +add_local_symbols (struct collection_list *collect, + struct gdbarch *gdbarch, CORE_ADDR pc, + long frame_regno, long frame_offset, int type) +{ + struct block *block; + struct add_local_symbols_data cb_data; + + cb_data.collect = collect; + cb_data.gdbarch = gdbarch; + cb_data.pc = pc; + cb_data.frame_regno = frame_regno; + cb_data.frame_offset = frame_offset; + cb_data.count = 0; + + if (type == 'L') + { + block = block_for_pc (pc); + if (block == NULL) + { + warning (_("Can't collect locals; " + "no symbol table info available.\n")); + return; + } + + iterate_over_block_local_vars (block, do_collect_symbol, &cb_data); + if (cb_data.count == 0) + warning (_("No locals found in scope.")); + } + else + { + pc = get_pc_function_start (pc); + block = block_for_pc (pc); + if (block == NULL) + { + warning (_("Can't collect args; no symbol table info available.\n")); + return; + } + + iterate_over_block_arg_vars (block, do_collect_symbol, &cb_data); + if (cb_data.count == 0) + warning (_("No args found in scope.")); + } +} + +static void +add_static_trace_data (struct collection_list *collection) +{ + if (info_verbose) + printf_filtered ("collect static trace data\n"); + collection->strace_data = 1; } /* worker function */ @@ -870,6 +1112,7 @@ clear_collection_list (struct collection_list *list) } list->next_aexpr_elt = 0; memset (list->regs_mask, 0, sizeof (list->regs_mask)); + list->strace_data = 0; } /* reduce a collection list to string form (for gdb protocol) */ @@ -884,9 +1127,19 @@ stringify_collection_list (struct collection_list *list, char *string) char *end; long i; - count = 1 + list->next_memrange + list->next_aexpr_elt + 1; + count = 1 + 1 + list->next_memrange + list->next_aexpr_elt + 1; str_list = (char *(*)[]) xmalloc (count * sizeof (char *)); + if (list->strace_data) + { + if (info_verbose) + printf_filtered ("\nCollecting static trace data\n"); + end = temp_buf; + *end++ = 'L'; + (*str_list)[ndx] = savestring (temp_buf, end - temp_buf); + ndx++; + } + for (i = sizeof (list->regs_mask) - 1; i > 0; i--) if (list->regs_mask[i] != 0) /* skip leading zeroes in regs_mask */ break; @@ -984,64 +1237,30 @@ stringify_collection_list (struct collection_list *list, char *string) return *str_list; } -static void -free_actions_list_cleanup_wrapper (void *al) -{ - free_actions_list (al); -} - -static void -free_actions_list (char **actions_list) -{ - int ndx; - - if (actions_list == 0) - return; - - for (ndx = 0; actions_list[ndx]; ndx++) - xfree (actions_list[ndx]); - xfree (actions_list); -} - -/* Render all actions into gdb protocol. */ static void -encode_actions (struct breakpoint *t, char ***tdp_actions, - char ***stepping_actions) +encode_actions_1 (struct command_line *action, + struct breakpoint *t, + struct bp_location *tloc, + int frame_reg, + LONGEST frame_offset, + struct collection_list *collect, + struct collection_list *stepping_list) { - static char tdp_buff[2048], step_buff[2048]; char *action_exp; struct expression *exp = NULL; - struct action_line *action; int i; struct value *tempval; - struct collection_list *collect; struct cmd_list_element *cmd; struct agent_expr *aexpr; - int frame_reg; - LONGEST frame_offset; - - - clear_collection_list (&tracepoint_list); - clear_collection_list (&stepping_list); - collect = &tracepoint_list; - - *tdp_actions = NULL; - *stepping_actions = NULL; - - gdbarch_virtual_frame_pointer (t->gdbarch, - t->loc->address, &frame_reg, &frame_offset); - for (action = t->actions; action; action = action->next) + for (; action; action = action->next) { QUIT; /* allow user to bail out with ^C */ - action_exp = action->action; + action_exp = action->line; while (isspace ((int) *action_exp)) action_exp++; - if (*action_exp == '#') /* comment line */ - return; - cmd = lookup_cmd (&action_exp, cmdlist, "", -1, 1); if (cmd == 0) error (_("Bad action list item: %s"), action_exp); @@ -1064,7 +1283,7 @@ encode_actions (struct breakpoint *t, char ***tdp_actions, { add_local_symbols (collect, t->gdbarch, - t->loc->address, + tloc->address, frame_reg, frame_offset, 'A'); @@ -1074,21 +1293,25 @@ encode_actions (struct breakpoint *t, char ***tdp_actions, { add_local_symbols (collect, t->gdbarch, - t->loc->address, + tloc->address, frame_reg, frame_offset, 'L'); action_exp = strchr (action_exp, ','); /* more? */ } + else if (0 == strncasecmp ("$_sdata", action_exp, 7)) + { + add_static_trace_data (collect); + action_exp = strchr (action_exp, ','); /* more? */ + } else { unsigned long addr, len; struct cleanup *old_chain = NULL; struct cleanup *old_chain1 = NULL; - struct agent_reqs areqs; exp = parse_exp_1 (&action_exp, - block_for_pc (t->loc->address), 1); + block_for_pc (tloc->address), 1); old_chain = make_cleanup (free_current_contents, &exp); switch (exp->elts[0].opcode) @@ -1122,40 +1345,36 @@ encode_actions (struct breakpoint *t, char ***tdp_actions, exp->elts[2].symbol, t->gdbarch, frame_reg, - frame_offset); + frame_offset, + tloc->address); break; default: /* full-fledged expression */ - aexpr = gen_trace_for_expr (t->loc->address, exp); + aexpr = gen_trace_for_expr (tloc->address, exp); old_chain1 = make_cleanup_free_agent_expr (aexpr); - ax_reqs (aexpr, &areqs); - if (areqs.flaw != agent_flaw_none) - error (_("malformed expression")); + ax_reqs (aexpr); - if (areqs.min_height < 0) - error (_("gdb: Internal error: expression has min height < 0")); - if (areqs.max_height > 20) - error (_("expression too complicated, try simplifying")); + report_agent_reqs_errors (aexpr); discard_cleanups (old_chain1); add_aexpr (collect, aexpr); /* take care of the registers */ - if (areqs.reg_mask_len > 0) + if (aexpr->reg_mask_len > 0) { int ndx1; int ndx2; - for (ndx1 = 0; ndx1 < areqs.reg_mask_len; ndx1++) + for (ndx1 = 0; ndx1 < aexpr->reg_mask_len; ndx1++) { QUIT; /* allow user to bail out with ^C */ - if (areqs.reg_mask[ndx1] != 0) + if (aexpr->reg_mask[ndx1] != 0) { /* assume chars have 8 bits */ for (ndx2 = 0; ndx2 < 8; ndx2++) - if (areqs.reg_mask[ndx1] & (1 << ndx2)) + if (aexpr->reg_mask[ndx1] & (1 << ndx2)) /* it's used -- record it */ add_register (collect, ndx1 * 8 + ndx2); @@ -1169,25 +1388,112 @@ encode_actions (struct breakpoint *t, char ***tdp_actions, } while (action_exp && *action_exp++ == ','); } /* if */ - else if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand)) + else if (cmd_cfunc_eq (cmd, teval_pseudocommand)) { - collect = &stepping_list; - } - else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand)) + do + { /* repeat over a comma-separated list */ + QUIT; /* allow user to bail out with ^C */ + while (isspace ((int) *action_exp)) + action_exp++; + + { + struct cleanup *old_chain = NULL; + struct cleanup *old_chain1 = NULL; + + exp = parse_exp_1 (&action_exp, + block_for_pc (tloc->address), 1); + old_chain = make_cleanup (free_current_contents, &exp); + + aexpr = gen_eval_for_expr (tloc->address, exp); + old_chain1 = make_cleanup_free_agent_expr (aexpr); + + ax_reqs (aexpr); + report_agent_reqs_errors (aexpr); + + discard_cleanups (old_chain1); + /* Even though we're not officially collecting, add + to the collect list anyway. */ + add_aexpr (collect, aexpr); + + do_cleanups (old_chain); + } /* do */ + } + while (action_exp && *action_exp++ == ','); + } /* if */ + else if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand)) { - if (collect == &stepping_list) /* end stepping actions */ - collect = &tracepoint_list; - else - break; /* end tracepoint actions */ + /* We check against nested while-stepping when setting + breakpoint action, so no way to run into nested + here. */ + gdb_assert (stepping_list); + + encode_actions_1 (action->body_list[0], t, tloc, frame_reg, + frame_offset, stepping_list, NULL); } + else + error (_("Invalid tracepoint command '%s'"), action->line); } /* for */ +} + +/* Render all actions into gdb protocol. */ +/*static*/ void +encode_actions (struct breakpoint *t, struct bp_location *tloc, + char ***tdp_actions, char ***stepping_actions) +{ + static char tdp_buff[2048], step_buff[2048]; + char *default_collect_line = NULL; + struct command_line *actions; + struct command_line *default_collect_action = NULL; + int frame_reg; + LONGEST frame_offset; + struct cleanup *back_to; + + back_to = make_cleanup (null_cleanup, NULL); + + clear_collection_list (&tracepoint_list); + clear_collection_list (&stepping_list); + + *tdp_actions = NULL; + *stepping_actions = NULL; + + gdbarch_virtual_frame_pointer (t->gdbarch, + t->loc->address, &frame_reg, &frame_offset); + + actions = breakpoint_commands (t); + + /* If there are default expressions to collect, make up a collect + action and prepend to the action list to encode. Note that since + validation is per-tracepoint (local var "xyz" might be valid for + one tracepoint and not another, etc), we make up the action on + the fly, and don't cache it. */ + if (*default_collect) + { + char *line; + + default_collect_line = xstrprintf ("collect %s", default_collect); + make_cleanup (xfree, default_collect_line); + + line = default_collect_line; + validate_actionline (&line, t); + + default_collect_action = xmalloc (sizeof (struct command_line)); + make_cleanup (xfree, default_collect_action); + default_collect_action->next = actions; + default_collect_action->line = line; + actions = default_collect_action; + } + encode_actions_1 (actions, t, tloc, frame_reg, frame_offset, + &tracepoint_list, &stepping_list); + memrange_sortmerge (&tracepoint_list); memrange_sortmerge (&stepping_list); - *tdp_actions = stringify_collection_list (&tracepoint_list, + *tdp_actions = stringify_collection_list (&tracepoint_list, tdp_buff); - *stepping_actions = stringify_collection_list (&stepping_list, + *stepping_actions = stringify_collection_list (&stepping_list, step_buff); + + do_cleanups (back_to); } static void @@ -1197,324 +1503,498 @@ add_aexpr (struct collection_list *collect, struct agent_expr *aexpr) { collect->aexpr_list = xrealloc (collect->aexpr_list, - 2 * collect->aexpr_listsize * sizeof (struct agent_expr *)); + 2 * collect->aexpr_listsize * sizeof (struct agent_expr *)); collect->aexpr_listsize *= 2; } collect->aexpr_list[collect->next_aexpr_elt] = aexpr; collect->next_aexpr_elt++; } -static char *target_buf; -static long target_buf_size; -/* Set "transparent" memory ranges +void +start_tracing (void) +{ + VEC(breakpoint_p) *tp_vec = NULL; + int ix; + struct breakpoint *t; + struct trace_state_variable *tsv; + int any_enabled = 0, num_to_download = 0; + + tp_vec = all_tracepoints (); + + /* No point in tracing without any tracepoints... */ + if (VEC_length (breakpoint_p, tp_vec) == 0) + { + VEC_free (breakpoint_p, tp_vec); + error (_("No tracepoints defined, not starting trace")); + } - Allow trace mechanism to treat text-like sections - (and perhaps all read-only sections) transparently, - i.e. don't reject memory requests from these address ranges - just because they haven't been collected. */ + for (ix = 0; VEC_iterate (breakpoint_p, tp_vec, ix, t); ix++) + { + if (t->enable_state == bp_enabled) + any_enabled = 1; -static void -remote_set_transparent_ranges (void) -{ - asection *s; - bfd_size_type size; - bfd_vma lma; - int anysecs = 0; + if ((t->type == bp_fast_tracepoint + ? may_insert_fast_tracepoints + : may_insert_tracepoints)) + ++num_to_download; + else + warning (_("May not insert %stracepoints, skipping tracepoint %d"), + (t->type == bp_fast_tracepoint ? "fast " : ""), t->number); + } - if (!exec_bfd) - return; /* No information to give. */ + /* No point in tracing with only disabled tracepoints. */ + if (!any_enabled) + { + VEC_free (breakpoint_p, tp_vec); + error (_("No tracepoints enabled, not starting trace")); + } - strcpy (target_buf, "QTro"); - for (s = exec_bfd->sections; s; s = s->next) + if (num_to_download <= 0) { - char tmp1[40], tmp2[40]; + VEC_free (breakpoint_p, tp_vec); + error (_("No tracepoints that may be downloaded, not starting trace")); + } + + target_trace_init (); - if ((s->flags & SEC_LOAD) == 0 || - /* (s->flags & SEC_CODE) == 0 || */ - (s->flags & SEC_READONLY) == 0) + for (ix = 0; VEC_iterate (breakpoint_p, tp_vec, ix, t); ix++) + { + if ((t->type == bp_fast_tracepoint + ? !may_insert_fast_tracepoints + : !may_insert_tracepoints)) continue; - anysecs = 1; - lma = s->lma; - size = bfd_get_section_size (s); - sprintf_vma (tmp1, lma); - sprintf_vma (tmp2, lma + size); - sprintf (target_buf + strlen (target_buf), - ":%s,%s", tmp1, tmp2); + t->number_on_target = 0; + target_download_tracepoint (t); + t->number_on_target = t->number; } - if (anysecs) + VEC_free (breakpoint_p, tp_vec); + + /* Send down all the trace state variables too. */ + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) { - putpkt (target_buf); - getpkt (&target_buf, &target_buf_size, 0); + target_download_trace_state_variable (tsv); } + + /* Tell target to treat text-like sections as transparent. */ + target_trace_set_readonly_regions (); + /* Set some mode flags. */ + target_set_disconnected_tracing (disconnected_tracing); + target_set_circular_trace_buffer (circular_trace_buffer); + + /* Now insert traps and begin collecting data. */ + target_trace_start (); + + /* Reset our local state. */ + set_traceframe_num (-1); + set_tracepoint_num (-1); + set_traceframe_context (NULL); + current_trace_status()->running = 1; } /* tstart command: Tell target to clear any previous trace experiment. Walk the list of tracepoints, and send them (and their actions) - to the target. If no errors, + to the target. If no errors, Tell target to start a new trace experiment. */ -void download_tracepoint (struct breakpoint *t); - static void trace_start_command (char *args, int from_tty) { - VEC(breakpoint_p) *tp_vec = NULL; - int ix; - struct breakpoint *t; - dont_repeat (); /* Like "run", dangerous to repeat accidentally. */ - if (target_is_remote ()) + if (current_trace_status ()->running) { - putpkt ("QTinit"); - remote_get_noisy_reply (&target_buf, &target_buf_size); - if (strcmp (target_buf, "OK")) - error (_("Target does not support this command.")); + if (from_tty + && !query (_("A trace is running already. Start a new run? "))) + error (_("New trace run not started.")); + } - tp_vec = all_tracepoints (); - for (ix = 0; VEC_iterate (breakpoint_p, tp_vec, ix, t); ix++) - { - download_tracepoint (t); - } - VEC_free (breakpoint_p, tp_vec); + start_tracing (); +} - /* Tell target to treat text-like sections as transparent. */ - remote_set_transparent_ranges (); - /* Now insert traps and begin collecting data. */ - putpkt ("QTStart"); - remote_get_noisy_reply (&target_buf, &target_buf_size); - if (strcmp (target_buf, "OK")) - error (_("Bogus reply from target: %s"), target_buf); - set_traceframe_num (-1); /* All old traceframes invalidated. */ - set_tracepoint_num (-1); - set_traceframe_context (NULL); - trace_running_p = 1; - if (deprecated_trace_start_stop_hook) - deprecated_trace_start_stop_hook (1, from_tty); +/* tstop command */ +static void +trace_stop_command (char *args, int from_tty) +{ + if (!current_trace_status ()->running) + error (_("Trace is not running.")); - } - else - error (_("Trace can only be run on remote targets.")); + stop_tracing (); } -/* Send the definition of a single tracepoint to the target. */ - void -download_tracepoint (struct breakpoint *t) +stop_tracing (void) { - char tmp[40]; - char buf[2048]; - char **tdp_actions; - char **stepping_actions; - int ndx; - struct cleanup *old_chain = NULL; - struct agent_expr *aexpr; - struct cleanup *aexpr_chain = NULL; - - sprintf_vma (tmp, (t->loc ? t->loc->address : 0)); - sprintf (buf, "QTDP:%x:%s:%c:%lx:%x", t->number, - tmp, /* address */ - (t->enable_state == bp_enabled ? 'E' : 'D'), - t->step_count, t->pass_count); - /* If the tracepoint has a conditional, make it into an agent - expression and append to the definition. */ - if (t->loc->cond) - { - /* Only test support at download time, we may not know target - capabilities at definition time. */ - if (remote_supports_cond_tracepoints ()) - { - aexpr = gen_eval_for_expr (t->loc->address, t->loc->cond); - aexpr_chain = make_cleanup_free_agent_expr (aexpr); - sprintf (buf + strlen (buf), ":X%x,", aexpr->len); - mem2hex (aexpr->buf, buf + strlen (buf), aexpr->len); - do_cleanups (aexpr_chain); - } - else - warning (_("Target does not support conditional tracepoints, ignoring tp %d cond"), t->number); - } - - if (t->actions) - strcat (buf, "-"); - putpkt (buf); - remote_get_noisy_reply (&target_buf, &target_buf_size); - if (strcmp (target_buf, "OK")) - error (_("Target does not support tracepoints.")); - - if (!t->actions) - return; + target_trace_stop (); + /* should change in response to reply? */ + current_trace_status ()->running = 0; +} - encode_actions (t, &tdp_actions, &stepping_actions); - old_chain = make_cleanup (free_actions_list_cleanup_wrapper, - tdp_actions); - (void) make_cleanup (free_actions_list_cleanup_wrapper, stepping_actions); +/* tstatus command */ +static void +trace_status_command (char *args, int from_tty) +{ + struct trace_status *ts = current_trace_status (); + int status; + + status = target_get_trace_status (ts); - /* do_single_steps (t); */ - if (tdp_actions) + if (status == -1) { - for (ndx = 0; tdp_actions[ndx]; ndx++) + if (ts->from_file) + printf_filtered (_("Using a trace file.\n")); + else { - QUIT; /* allow user to bail out with ^C */ - sprintf (buf, "QTDP:-%x:%s:%s%c", - t->number, tmp, /* address */ - tdp_actions[ndx], - ((tdp_actions[ndx + 1] || stepping_actions) - ? '-' : 0)); - putpkt (buf); - remote_get_noisy_reply (&target_buf, - &target_buf_size); - if (strcmp (target_buf, "OK")) - error (_("Error on target while setting tracepoints.")); + printf_filtered (_("Trace can not be run on this target.\n")); + return; } } - if (stepping_actions) + + if (!ts->running_known) + { + printf_filtered (_("Run/stop status is unknown.\n")); + } + else if (ts->running) + { + printf_filtered (_("Trace is running on the target.\n")); + } + else { - for (ndx = 0; stepping_actions[ndx]; ndx++) + switch (ts->stop_reason) { - QUIT; /* allow user to bail out with ^C */ - sprintf (buf, "QTDP:-%x:%s:%s%s%s", - t->number, tmp, /* address */ - ((ndx == 0) ? "S" : ""), - stepping_actions[ndx], - (stepping_actions[ndx + 1] ? "-" : "")); - putpkt (buf); - remote_get_noisy_reply (&target_buf, - &target_buf_size); - if (strcmp (target_buf, "OK")) - error (_("Error on target while setting tracepoints.")); + case trace_never_run: + printf_filtered (_("No trace has been run on the target.\n")); + break; + case tstop_command: + printf_filtered (_("Trace stopped by a tstop command.\n")); + break; + case trace_buffer_full: + printf_filtered (_("Trace stopped because the buffer was full.\n")); + break; + case trace_disconnected: + printf_filtered (_("Trace stopped because of disconnection.\n")); + break; + case tracepoint_passcount: + printf_filtered (_("Trace stopped by tracepoint %d.\n"), + ts->stopping_tracepoint); + break; + case tracepoint_error: + if (ts->stopping_tracepoint) + printf_filtered (_("Trace stopped by an error (%s, tracepoint %d).\n"), + ts->error_desc, ts->stopping_tracepoint); + else + printf_filtered (_("Trace stopped by an error (%s).\n"), + ts->error_desc); + break; + case trace_stop_reason_unknown: + printf_filtered (_("Trace stopped for an unknown reason.\n")); + break; + default: + printf_filtered (_("Trace stopped for some other reason (%d).\n"), + ts->stop_reason); + break; } } - do_cleanups (old_chain); -} -/* tstop command */ -static void -trace_stop_command (char *args, int from_tty) -{ - if (target_is_remote ()) + if (ts->traceframes_created >= 0 + && ts->traceframe_count != ts->traceframes_created) { - putpkt ("QTStop"); - remote_get_noisy_reply (&target_buf, &target_buf_size); - if (strcmp (target_buf, "OK")) - error (_("Bogus reply from target: %s"), target_buf); - trace_running_p = 0; - if (deprecated_trace_start_stop_hook) - deprecated_trace_start_stop_hook (0, from_tty); + printf_filtered (_("Buffer contains %d trace frames (of %d created total).\n"), + ts->traceframe_count, ts->traceframes_created); + } + else if (ts->traceframe_count >= 0) + { + printf_filtered (_("Collected %d trace frames.\n"), + ts->traceframe_count); } - else - error (_("Trace can only be run on remote targets.")); -} - -unsigned long trace_running_p; -/* tstatus command */ -static void -trace_status_command (char *args, int from_tty) -{ - if (target_is_remote ()) + if (ts->buffer_free >= 0) { - putpkt ("qTStatus"); - remote_get_noisy_reply (&target_buf, &target_buf_size); + if (ts->buffer_size >= 0) + { + printf_filtered (_("Trace buffer has %d bytes of %d bytes free"), + ts->buffer_free, ts->buffer_size); + if (ts->buffer_size > 0) + printf_filtered (_(" (%d%% full)"), + ((int) ((((long long) (ts->buffer_size + - ts->buffer_free)) * 100) + / ts->buffer_size))); + printf_filtered (_(".\n")); + } + else + printf_filtered (_("Trace buffer has %d bytes free.\n"), + ts->buffer_free); + } - if (target_buf[0] != 'T' || - (target_buf[1] != '0' && target_buf[1] != '1')) - error (_("Bogus reply from target: %s"), target_buf); + if (ts->disconnected_tracing) + printf_filtered (_("Trace will continue if GDB disconnects.\n")); + else + printf_filtered (_("Trace will stop if GDB disconnects.\n")); - /* exported for use by the GUI */ - trace_running_p = (target_buf[1] == '1'); - } + if (ts->circular_buffer) + printf_filtered (_("Trace buffer is circular.\n")); + + /* Now report on what we're doing with tfind. */ + if (traceframe_number >= 0) + printf_filtered (_("Looking at trace frame %d, tracepoint %d.\n"), + traceframe_number, tracepoint_number); else - error (_("Trace can only be run on remote targets.")); + printf_filtered (_("Not looking at any trace frame.\n")); } -/* Worker function for the various flavors of the tfind command. */ -static void -finish_tfind_command (char **msg, - long *sizeof_msg, - int from_tty) +/* Report the trace status to uiout, in a way suitable for MI, and not + suitable for CLI. If ON_STOP is true, suppress a few fields that + are not meaningful in the -trace-stop response. + + The implementation is essentially parallel to trace_status_command, but + merging them will result in unreadable code. */ +void +trace_status_mi (int on_stop) { - int target_frameno = -1, target_tracept = -1; - struct frame_id old_frame_id; - char *reply; + struct trace_status *ts = current_trace_status (); + int status; - old_frame_id = get_frame_id (get_current_frame ()); + status = target_get_trace_status (ts); - putpkt (*msg); - reply = remote_get_noisy_reply (msg, sizeof_msg); + if (status == -1 && !ts->from_file) + { + ui_out_field_string (uiout, "supported", "0"); + return; + } - while (reply && *reply) - switch (*reply) - { - case 'F': - if ((target_frameno = (int) strtol (++reply, &reply, 16)) == -1) - { - /* A request for a non-existant trace frame has failed. - Our response will be different, depending on FROM_TTY: - - If FROM_TTY is true, meaning that this command was - typed interactively by the user, then give an error - and DO NOT change the state of traceframe_number etc. - - However if FROM_TTY is false, meaning that we're either - in a script, a loop, or a user-defined command, then - DON'T give an error, but DO change the state of - traceframe_number etc. to invalid. - - The rationalle is that if you typed the command, you - might just have committed a typo or something, and you'd - like to NOT lose your current debugging state. However - if you're in a user-defined command or especially in a - loop, then you need a way to detect that the command - failed WITHOUT aborting. This allows you to write - scripts that search thru the trace buffer until the end, - and then continue on to do something else. */ - - if (from_tty) - error (_("Target failed to find requested trace frame.")); - else - { - if (info_verbose) - printf_filtered ("End of trace buffer.\n"); - /* The following will not recurse, since it's - special-cased. */ - trace_find_command ("-1", from_tty); - reply = NULL; /* Break out of loop - (avoid recursive nonsense). */ - } - } - break; - case 'T': - if ((target_tracept = (int) strtol (++reply, &reply, 16)) == -1) - error (_("Target failed to find requested trace frame.")); - break; - case 'O': /* "OK"? */ - if (reply[1] == 'K' && reply[2] == '\0') - reply += 2; - else - error (_("Bogus reply from target: %s"), reply); - break; - default: - error (_("Bogus reply from target: %s"), reply); - } + if (ts->from_file) + ui_out_field_string (uiout, "supported", "file"); + else if (!on_stop) + ui_out_field_string (uiout, "supported", "1"); + + gdb_assert (ts->running_known); + + if (ts->running) + { + ui_out_field_string (uiout, "running", "1"); + + /* Unlike CLI, do not show the state of 'disconnected-tracing' variable. + Given that the frontend gets the status either on -trace-stop, or from + -trace-status after re-connection, it does not seem like this + information is necessary for anything. It is not necessary for either + figuring the vital state of the target nor for navigation of trace + frames. If the frontend wants to show the current state is some + configure dialog, it can request the value when such dialog is + invoked by the user. */ + } + else + { + char *stop_reason = NULL; + int stopping_tracepoint = -1; + + if (!on_stop) + ui_out_field_string (uiout, "running", "0"); + + if (ts->stop_reason != trace_stop_reason_unknown) + { + switch (ts->stop_reason) + { + case tstop_command: + stop_reason = "request"; + break; + case trace_buffer_full: + stop_reason = "overflow"; + break; + case trace_disconnected: + stop_reason = "disconnection"; + break; + case tracepoint_passcount: + stop_reason = "passcount"; + stopping_tracepoint = ts->stopping_tracepoint; + break; + case tracepoint_error: + stop_reason = "error"; + stopping_tracepoint = ts->stopping_tracepoint; + break; + } + + if (stop_reason) + { + ui_out_field_string (uiout, "stop-reason", stop_reason); + if (stopping_tracepoint != -1) + ui_out_field_int (uiout, "stopping-tracepoint", + stopping_tracepoint); + if (ts->stop_reason == tracepoint_error) + ui_out_field_string (uiout, "error-description", + ts->error_desc); + } + } + } + + if (ts->traceframe_count != -1) + ui_out_field_int (uiout, "frames", ts->traceframe_count); + if (ts->traceframes_created != -1) + ui_out_field_int (uiout, "frames-created", ts->traceframes_created); + if (ts->buffer_size != -1) + ui_out_field_int (uiout, "buffer-size", ts->buffer_size); + if (ts->buffer_free != -1) + ui_out_field_int (uiout, "buffer-free", ts->buffer_free); + + ui_out_field_int (uiout, "disconnected", ts->disconnected_tracing); + ui_out_field_int (uiout, "circular", ts->circular_buffer); +} + +/* This function handles the details of what to do about an ongoing + tracing run if the user has asked to detach or otherwise disconnect + from the target. */ +void +disconnect_tracing (int from_tty) +{ + /* It can happen that the target that was tracing went away on its + own, and we didn't notice. Get a status update, and if the + current target doesn't even do tracing, then assume it's not + running anymore. */ + if (target_get_trace_status (current_trace_status ()) < 0) + current_trace_status ()->running = 0; + + /* If running interactively, give the user the option to cancel and + then decide what to do differently with the run. Scripts are + just going to disconnect and let the target deal with it, + according to how it's been instructed previously via + disconnected-tracing. */ + if (current_trace_status ()->running && from_tty) + { + if (current_trace_status ()->disconnected_tracing) + { + if (!query (_("Trace is running and will continue after detach; detach anyway? "))) + error (_("Not confirmed.")); + } + else + { + if (!query (_("Trace is running but will stop on detach; detach anyway? "))) + error (_("Not confirmed.")); + } + } + + /* Also we want to be out of tfind mode, otherwise things can get + confusing upon reconnection. Just use these calls instead of + full tfind_1 behavior because we're in the middle of detaching, + and there's no point to updating current stack frame etc. */ + set_traceframe_number (-1); + set_traceframe_context (NULL); +} + +/* Worker function for the various flavors of the tfind command. */ +void +tfind_1 (enum trace_find_type type, int num, + ULONGEST addr1, ULONGEST addr2, + int from_tty) +{ + int target_frameno = -1, target_tracept = -1; + struct frame_id old_frame_id = null_frame_id; + struct breakpoint *tp; + + /* Only try to get the current stack frame if we have a chance of + succeeding. In particular, if we're trying to get a first trace + frame while all threads are running, it's not going to succeed, + so leave it with a default value and let the frame comparison + below (correctly) decide to print out the source location of the + trace frame. */ + if (!(type == tfind_number && num == -1) + && (has_stack_frames () || traceframe_number >= 0)) + old_frame_id = get_frame_id (get_current_frame ()); + + target_frameno = target_trace_find (type, num, addr1, addr2, + &target_tracept); + + if (type == tfind_number + && num == -1 + && target_frameno == -1) + { + /* We told the target to get out of tfind mode, and it did. */ + } + else if (target_frameno == -1) + { + /* A request for a non-existent trace frame has failed. + Our response will be different, depending on FROM_TTY: + + If FROM_TTY is true, meaning that this command was + typed interactively by the user, then give an error + and DO NOT change the state of traceframe_number etc. + + However if FROM_TTY is false, meaning that we're either + in a script, a loop, or a user-defined command, then + DON'T give an error, but DO change the state of + traceframe_number etc. to invalid. + + The rationalle is that if you typed the command, you + might just have committed a typo or something, and you'd + like to NOT lose your current debugging state. However + if you're in a user-defined command or especially in a + loop, then you need a way to detect that the command + failed WITHOUT aborting. This allows you to write + scripts that search thru the trace buffer until the end, + and then continue on to do something else. */ + + if (from_tty) + error (_("Target failed to find requested trace frame.")); + else + { + if (info_verbose) + printf_filtered ("End of trace buffer.\n"); +#if 0 /* dubious now? */ + /* The following will not recurse, since it's + special-cased. */ + trace_find_command ("-1", from_tty); +#endif + } + } + + tp = get_tracepoint_by_number_on_target (target_tracept); reinit_frame_cache (); registers_changed (); + target_dcache_invalidate (); set_traceframe_num (target_frameno); - set_tracepoint_num (target_tracept); + set_tracepoint_num (tp ? tp->number : target_tracept); if (target_frameno == -1) set_traceframe_context (NULL); else set_traceframe_context (get_current_frame ()); - if (from_tty) + if (traceframe_number >= 0) + { + /* Use different branches for MI and CLI to make CLI messages + i18n-eable. */ + if (ui_out_is_mi_like_p (uiout)) + { + ui_out_field_string (uiout, "found", "1"); + ui_out_field_int (uiout, "tracepoint", tracepoint_number); + ui_out_field_int (uiout, "traceframe", traceframe_number); + } + else + { + printf_unfiltered (_("Found trace frame %d, tracepoint %d\n"), + traceframe_number, tracepoint_number); + } + } + else + { + if (ui_out_is_mi_like_p (uiout)) + ui_out_field_string (uiout, "found", "0"); + else if (type == tfind_number && num == -1) + printf_unfiltered (_("No longer looking at any trace frame\n")); + else /* this case may never occur, check */ + printf_unfiltered (_("No trace frame found\n")); + } + + /* If we're in nonstop mode and getting out of looking at trace + frames, there won't be any current frame to go back to and + display. */ + if (from_tty + && (has_stack_frames () || traceframe_number >= 0)) { enum print_what print_what; - /* NOTE: in immitation of the step command, try to determine + /* NOTE: in imitation of the step command, try to determine whether we have made a transition from one function to another. If so, we'll print the "stack frame" (ie. the new function and it's arguments) -- otherwise we'll just show the @@ -1551,38 +2031,35 @@ trace_find_command (char *args, int from_tty) { /* this should only be called with a numeric argument */ int frameno = -1; - if (target_is_remote ()) + if (current_trace_status ()->running && !current_trace_status ()->from_file) + error ("May not look at trace frames while trace is running."); + + if (args == 0 || *args == 0) + { /* TFIND with no args means find NEXT trace frame. */ + if (traceframe_number == -1) + frameno = 0; /* "next" is first one */ + else + frameno = traceframe_number + 1; + } + else if (0 == strcmp (args, "-")) { - if (deprecated_trace_find_hook) - deprecated_trace_find_hook (args, from_tty); - - if (args == 0 || *args == 0) - { /* TFIND with no args means find NEXT trace frame. */ - if (traceframe_number == -1) - frameno = 0; /* "next" is first one */ - else - frameno = traceframe_number + 1; - } - else if (0 == strcmp (args, "-")) - { - if (traceframe_number == -1) - error (_("not debugging trace buffer")); - else if (from_tty && traceframe_number == 0) - error (_("already at start of trace buffer")); - - frameno = traceframe_number - 1; - } - else - frameno = parse_and_eval_long (args); + if (traceframe_number == -1) + error (_("not debugging trace buffer")); + else if (from_tty && traceframe_number == 0) + error (_("already at start of trace buffer")); + + frameno = traceframe_number - 1; + } + /* A hack to work around eval's need for fp to have been collected. */ + else if (0 == strcmp (args, "-1")) + frameno = -1; + else + frameno = parse_and_eval_long (args); - if (frameno < -1) - error (_("invalid input (%d is less than zero)"), frameno); + if (frameno < -1) + error (_("invalid input (%d is less than zero)"), frameno); - sprintf (target_buf, "QTFrame:%x", frameno); - finish_tfind_command (&target_buf, &target_buf_size, from_tty); - } - else - error (_("Trace can only be run on remote targets.")); + tfind_1 (tfind_number, frameno, 0, 0, from_tty); } /* tfind end */ @@ -1611,21 +2088,16 @@ static void trace_find_pc_command (char *args, int from_tty) { CORE_ADDR pc; - char tmp[40]; - if (target_is_remote ()) - { - if (args == 0 || *args == 0) - pc = regcache_read_pc (get_current_regcache ()); - else - pc = parse_and_eval_address (args); + if (current_trace_status ()->running && !current_trace_status ()->from_file) + error ("May not look at trace frames while trace is running."); - sprintf_vma (tmp, pc); - sprintf (target_buf, "QTFrame:pc:%s", tmp); - finish_tfind_command (&target_buf, &target_buf_size, from_tty); - } + if (args == 0 || *args == 0) + pc = regcache_read_pc (get_current_regcache ()); else - error (_("Trace can only be run on remote targets.")); + pc = parse_and_eval_address (args); + + tfind_1 (tfind_pc, 0, pc, 0, from_tty); } /* tfind tracepoint command */ @@ -1633,24 +2105,29 @@ static void trace_find_tracepoint_command (char *args, int from_tty) { int tdp; + struct breakpoint *tp; + + if (current_trace_status ()->running && !current_trace_status ()->from_file) + error ("May not look at trace frames while trace is running."); - if (target_is_remote ()) + if (args == 0 || *args == 0) { - if (args == 0 || *args == 0) - { - if (tracepoint_number == -1) - error (_("No current tracepoint -- please supply an argument.")); - else - tdp = tracepoint_number; /* default is current TDP */ - } + if (tracepoint_number == -1) + error (_("No current tracepoint -- please supply an argument.")); else - tdp = parse_and_eval_long (args); - - sprintf (target_buf, "QTFrame:tdp:%x", tdp); - finish_tfind_command (&target_buf, &target_buf_size, from_tty); + tdp = tracepoint_number; /* default is current TDP */ } else - error (_("Trace can only be run on remote targets.")); + tdp = parse_and_eval_long (args); + + /* If we have the tracepoint on hand, use the number that the + target knows about (which may be different if we disconnected + and reconnected). */ + tp = get_tracepoint (tdp); + if (tp) + tdp = tp->number_on_target; + + tfind_1 (tfind_tp, tdp, 0, 0, from_tty); } /* TFIND LINE command: @@ -1668,93 +2145,62 @@ trace_find_line_command (char *args, int from_tty) struct symtabs_and_lines sals; struct symtab_and_line sal; struct cleanup *old_chain; - char startpc_str[40], endpc_str[40]; - - if (target_is_remote ()) - { - if (args == 0 || *args == 0) - { - sal = find_pc_line (get_frame_pc (get_current_frame ()), 0); - sals.nelts = 1; - sals.sals = (struct symtab_and_line *) - xmalloc (sizeof (struct symtab_and_line)); - sals.sals[0] = sal; - } - else - { - sals = decode_line_spec (args, 1); - sal = sals.sals[0]; - } - - old_chain = make_cleanup (xfree, sals.sals); - if (sal.symtab == 0) - { - struct gdbarch *gdbarch = get_current_arch (); - printf_filtered ("TFIND: No line number information available"); - if (sal.pc != 0) - { - /* This is useful for "info line *0x7f34". If we can't - tell the user about a source line, at least let them - have the symbolic address. */ - printf_filtered (" for address "); - wrap_here (" "); - print_address (gdbarch, sal.pc, gdb_stdout); - printf_filtered (";\n -- will attempt to find by PC. \n"); - } - else - { - printf_filtered (".\n"); - return; /* No line, no PC; what can we do? */ - } - } - else if (sal.line > 0 - && find_line_pc_range (sal, &start_pc, &end_pc)) - { - struct gdbarch *gdbarch = get_objfile_arch (sal.symtab->objfile); + if (current_trace_status ()->running && !current_trace_status ()->from_file) + error ("May not look at trace frames while trace is running."); - if (start_pc == end_pc) - { - printf_filtered ("Line %d of \"%s\"", - sal.line, sal.symtab->filename); - wrap_here (" "); - printf_filtered (" is at address "); - print_address (gdbarch, start_pc, gdb_stdout); - wrap_here (" "); - printf_filtered (" but contains no code.\n"); - sal = find_pc_line (start_pc, 0); - if (sal.line > 0 && - find_line_pc_range (sal, &start_pc, &end_pc) && - start_pc != end_pc) - printf_filtered ("Attempting to find line %d instead.\n", - sal.line); - else - error (_("Cannot find a good line.")); - } - } - else - /* Is there any case in which we get here, and have an address - which the user would want to see? If we have debugging - symbols and no line numbers? */ - error (_("Line number %d is out of range for \"%s\"."), - sal.line, sal.symtab->filename); - - sprintf_vma (startpc_str, start_pc); - sprintf_vma (endpc_str, end_pc - 1); - /* Find within range of stated line. */ - if (args && *args) - sprintf (target_buf, "QTFrame:range:%s:%s", - startpc_str, endpc_str); - /* Find OUTSIDE OF range of CURRENT line. */ - else - sprintf (target_buf, "QTFrame:outside:%s:%s", - startpc_str, endpc_str); - finish_tfind_command (&target_buf, &target_buf_size, - from_tty); - do_cleanups (old_chain); + if (args == 0 || *args == 0) + { + sal = find_pc_line (get_frame_pc (get_current_frame ()), 0); + sals.nelts = 1; + sals.sals = (struct symtab_and_line *) + xmalloc (sizeof (struct symtab_and_line)); + sals.sals[0] = sal; } else - error (_("Trace can only be run on remote targets.")); + { + sals = decode_line_spec (args, 1); + sal = sals.sals[0]; + } + + old_chain = make_cleanup (xfree, sals.sals); + if (sal.symtab == 0) + error (_("No line number information available.")); + + if (sal.line > 0 && find_line_pc_range (sal, &start_pc, &end_pc)) + { + if (start_pc == end_pc) + { + printf_filtered ("Line %d of \"%s\"", + sal.line, sal.symtab->filename); + wrap_here (" "); + printf_filtered (" is at address "); + print_address (get_current_arch (), start_pc, gdb_stdout); + wrap_here (" "); + printf_filtered (" but contains no code.\n"); + sal = find_pc_line (start_pc, 0); + if (sal.line > 0 + && find_line_pc_range (sal, &start_pc, &end_pc) + && start_pc != end_pc) + printf_filtered ("Attempting to find line %d instead.\n", + sal.line); + else + error (_("Cannot find a good line.")); + } + } + else + /* Is there any case in which we get here, and have an address + which the user would want to see? If we have debugging + symbols and no line numbers? */ + error (_("Line number %d is out of range for \"%s\"."), + sal.line, sal.symtab->filename); + + /* Find within range of stated line. */ + if (args && *args) + tfind_1 (tfind_range, 0, start_pc, end_pc - 1, from_tty); + else + tfind_1 (tfind_outside, 0, start_pc, end_pc - 1, from_tty); + do_cleanups (old_chain); } /* tfind range command */ @@ -1762,38 +2208,32 @@ static void trace_find_range_command (char *args, int from_tty) { static CORE_ADDR start, stop; - char start_str[40], stop_str[40]; char *tmp; - if (target_is_remote ()) - { - if (args == 0 || *args == 0) - { /* XXX FIXME: what should default behavior be? */ - printf_filtered ("Usage: tfind range ,\n"); - return; - } + if (current_trace_status ()->running && !current_trace_status ()->from_file) + error ("May not look at trace frames while trace is running."); - if (0 != (tmp = strchr (args, ','))) - { - *tmp++ = '\0'; /* terminate start address */ - while (isspace ((int) *tmp)) - tmp++; - start = parse_and_eval_address (args); - stop = parse_and_eval_address (tmp); - } - else - { /* no explicit end address? */ - start = parse_and_eval_address (args); - stop = start + 1; /* ??? */ - } + if (args == 0 || *args == 0) + { /* XXX FIXME: what should default behavior be? */ + printf_filtered ("Usage: tfind range ,\n"); + return; + } - sprintf_vma (start_str, start); - sprintf_vma (stop_str, stop); - sprintf (target_buf, "QTFrame:range:%s:%s", start_str, stop_str); - finish_tfind_command (&target_buf, &target_buf_size, from_tty); + if (0 != (tmp = strchr (args, ','))) + { + *tmp++ = '\0'; /* terminate start address */ + while (isspace ((int) *tmp)) + tmp++; + start = parse_and_eval_address (args); + stop = parse_and_eval_address (tmp); } else - error (_("Trace can only be run on remote targets.")); + { /* no explicit end address? */ + start = parse_and_eval_address (args); + stop = start + 1; /* ??? */ + } + + tfind_1 (tfind_range, 0, start, stop, from_tty); } /* tfind outside command */ @@ -1801,38 +2241,32 @@ static void trace_find_outside_command (char *args, int from_tty) { CORE_ADDR start, stop; - char start_str[40], stop_str[40]; char *tmp; - if (target_is_remote ()) - { - if (args == 0 || *args == 0) - { /* XXX FIXME: what should default behavior be? */ - printf_filtered ("Usage: tfind outside ,\n"); - return; - } + if (current_trace_status ()->running && !current_trace_status ()->from_file) + error ("May not look at trace frames while trace is running."); - if (0 != (tmp = strchr (args, ','))) - { - *tmp++ = '\0'; /* terminate start address */ - while (isspace ((int) *tmp)) - tmp++; - start = parse_and_eval_address (args); - stop = parse_and_eval_address (tmp); - } - else - { /* no explicit end address? */ - start = parse_and_eval_address (args); - stop = start + 1; /* ??? */ - } + if (args == 0 || *args == 0) + { /* XXX FIXME: what should default behavior be? */ + printf_filtered ("Usage: tfind outside ,\n"); + return; + } - sprintf_vma (start_str, start); - sprintf_vma (stop_str, stop); - sprintf (target_buf, "QTFrame:outside:%s:%s", start_str, stop_str); - finish_tfind_command (&target_buf, &target_buf_size, from_tty); + if (0 != (tmp = strchr (args, ','))) + { + *tmp++ = '\0'; /* terminate start address */ + while (isspace ((int) *tmp)) + tmp++; + start = parse_and_eval_address (args); + stop = parse_and_eval_address (tmp); } else - error (_("Trace can only be run on remote targets.")); + { /* no explicit end address? */ + start = parse_and_eval_address (args); + stop = start + 1; /* ??? */ + } + + tfind_1 (tfind_outside, 0, start, stop, from_tty); } /* info scope command: list the locals for a scope. */ @@ -1965,7 +2399,9 @@ scope_info (char *args, int from_tty) printf_filtered ("optimized out.\n"); continue; case LOC_COMPUTED: - SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, gdb_stdout); + SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, + BLOCK_START (block), + gdb_stdout); break; } if (SYMBOL_TYPE (sym)) @@ -1990,58 +2426,26 @@ replace_comma (void *data) *comma = ','; } -/* tdump command */ + +/* Helper for trace_dump_command. Dump the action list starting at + ACTION. STEPPING_ACTIONS is true if we're iterating over the + actions of the body of a while-stepping action. STEPPING_FRAME is + set if the current traceframe was determined to be a while-stepping + traceframe. */ + static void -trace_dump_command (char *args, int from_tty) +trace_dump_actions (struct command_line *action, + int stepping_actions, int stepping_frame, + int from_tty) { - struct regcache *regcache; - struct gdbarch *gdbarch; - struct breakpoint *t; - struct action_line *action; char *action_exp, *next_comma; - struct cleanup *old_cleanups; - int stepping_actions = 0; - int stepping_frame = 0; - - if (!target_is_remote ()) - { - error (_("Trace can only be run on remote targets.")); - return; - } - if (tracepoint_number == -1) - { - warning (_("No current trace frame.")); - return; - } - - t = get_tracepoint (tracepoint_number); - - if (t == NULL) - error (_("No known tracepoint matches 'current' tracepoint #%d."), - tracepoint_number); - - old_cleanups = make_cleanup (null_cleanup, NULL); - - printf_filtered ("Data collected at tracepoint %d, trace frame %d:\n", - tracepoint_number, traceframe_number); - - /* The current frame is a trap frame if the frame PC is equal - to the tracepoint PC. If not, then the current frame was - collected during single-stepping. */ - - regcache = get_current_regcache (); - gdbarch = get_regcache_arch (regcache); - - stepping_frame = (t->loc->address != (regcache_read_pc (regcache) - - gdbarch_decr_pc_after_break (gdbarch))); - - for (action = t->actions; action; action = action->next) + for (; action != NULL; action = action->next) { struct cmd_list_element *cmd; QUIT; /* allow user to bail out with ^C */ - action_exp = action->action; + action_exp = action->line; while (isspace ((int) *action_exp)) action_exp++; @@ -2056,9 +2460,13 @@ trace_dump_command (char *args, int from_tty) error (_("Bad action list item: %s"), action_exp); if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand)) - stepping_actions = 1; - else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand)) - stepping_actions = 0; + { + int i; + + for (i = 0; i < action->body_count; ++i) + trace_dump_actions (action->body_list[i], + 1, stepping_frame, from_tty); + } else if (cmd_cfunc_eq (cmd, collect_pseudocommand)) { /* Display the collected data. @@ -2104,64 +2512,1879 @@ trace_dump_command (char *args, int from_tty) } } } - discard_cleanups (old_cleanups); } -/* Convert the memory pointed to by mem into hex, placing result in buf. - * Return a pointer to the last char put in buf (null) - * "stolen" from sparc-stub.c - */ - -static const char hexchars[] = "0123456789abcdef"; +/* The tdump command. */ -static char * -mem2hex (gdb_byte *mem, char *buf, int count) +static void +trace_dump_command (char *args, int from_tty) { - gdb_byte ch; + struct regcache *regcache; + struct breakpoint *t; + int stepping_frame = 0; + struct bp_location *loc; + char *line, *default_collect_line = NULL; + struct command_line *actions, *default_collect_action = NULL; + struct cleanup *old_chain = NULL; - while (count-- > 0) + if (tracepoint_number == -1) { - ch = *mem++; + warning (_("No current trace frame.")); + return; + } - *buf++ = hexchars[ch >> 4]; - *buf++ = hexchars[ch & 0xf]; + t = get_tracepoint (tracepoint_number); + + if (t == NULL) + error (_("No known tracepoint matches 'current' tracepoint #%d."), + tracepoint_number); + + printf_filtered ("Data collected at tracepoint %d, trace frame %d:\n", + tracepoint_number, traceframe_number); + + /* The current frame is a trap frame if the frame PC is equal + to the tracepoint PC. If not, then the current frame was + collected during single-stepping. */ + + regcache = get_current_regcache (); + + /* If the traceframe's address matches any of the tracepoint's + locations, assume it is a direct hit rather than a while-stepping + frame. (FIXME this is not reliable, should record each frame's + type.) */ + stepping_frame = 1; + for (loc = t->loc; loc; loc = loc->next) + if (loc->address == regcache_read_pc (regcache)) + stepping_frame = 0; + + actions = breakpoint_commands (t); + + /* If there is a default-collect list, make up a collect command, + prepend to the tracepoint's commands, and pass the whole mess to + the trace dump scanner. We need to validate because + default-collect might have been junked since the trace run. */ + if (*default_collect) + { + default_collect_line = xstrprintf ("collect %s", default_collect); + old_chain = make_cleanup (xfree, default_collect_line); + line = default_collect_line; + validate_actionline (&line, t); + default_collect_action = xmalloc (sizeof (struct command_line)); + make_cleanup (xfree, default_collect_action); + default_collect_action->next = actions; + default_collect_action->line = line; + actions = default_collect_action; } - *buf = 0; + trace_dump_actions (actions, 0, stepping_frame, from_tty); - return buf; + if (*default_collect) + do_cleanups (old_chain); } -int -get_traceframe_number (void) +/* Encode a piece of a tracepoint's source-level definition in a form + that is suitable for both protocol and saving in files. */ +/* This version does not do multiple encodes for long strings; it should + return an offset to the next piece to encode. FIXME */ + +extern int +encode_source_string (int tpnum, ULONGEST addr, + char *srctype, char *src, char *buf, int buf_size) { - return traceframe_number; + if (80 + strlen (srctype) > buf_size) + error (_("Buffer too small for source encoding")); + sprintf (buf, "%x:%s:%s:%x:%x:", + tpnum, phex_nz (addr, sizeof (addr)), srctype, 0, (int) strlen (src)); + if (strlen (buf) + strlen (src) * 2 >= buf_size) + error (_("Source string too long for buffer")); + bin2hex (src, buf + strlen (buf), 0); + return -1; } +extern int trace_regblock_size; + +/* Save tracepoint data to file named FILENAME. If TARGET_DOES_SAVE is + non-zero, the save is performed on the target, otherwise GDB obtains all + trace data and saves it locally. */ -/* module initialization */ void -_initialize_tracepoint (void) +trace_save (const char *filename, int target_does_save) { - struct cmd_list_element *c; + struct cleanup *cleanup; + char *pathname; + struct trace_status *ts = current_trace_status (); + int err, status; + FILE *fp; + struct uploaded_tp *uploaded_tps = NULL, *utp; + struct uploaded_tsv *uploaded_tsvs = NULL, *utsv; + int a; + char *act; + LONGEST gotten = 0; + ULONGEST offset = 0; +#define MAX_TRACE_UPLOAD 2000 + gdb_byte buf[MAX_TRACE_UPLOAD]; + int written; + + /* If the target is to save the data to a file on its own, then just + send the command and be done with it. */ + if (target_does_save) + { + err = target_save_trace_data (filename); + if (err < 0) + error (_("Target failed to save trace data to '%s'."), + filename); + return; + } - traceframe_number = -1; - tracepoint_number = -1; + /* Get the trace status first before opening the file, so if the + target is losing, we can get out without touching files. */ + status = target_get_trace_status (ts); - if (tracepoint_list.list == NULL) + pathname = tilde_expand (filename); + cleanup = make_cleanup (xfree, pathname); + + fp = fopen (pathname, "wb"); + if (!fp) + error (_("Unable to open file '%s' for saving trace data (%s)"), + filename, safe_strerror (errno)); + make_cleanup_fclose (fp); + + /* Write a file header, with a high-bit-set char to indicate a + binary file, plus a hint as what this file is, and a version + number in case of future needs. */ + written = fwrite ("\x7fTRACE0\n", 8, 1, fp); + if (written < 1) + perror_with_name (pathname); + + /* Write descriptive info. */ + + /* Write out the size of a register block. */ + fprintf (fp, "R %x\n", trace_regblock_size); + + /* Write out status of the tracing run (aka "tstatus" info). */ + fprintf (fp, "status %c;%s", + (ts->running ? '1' : '0'), stop_reason_names[ts->stop_reason]); + if (ts->stop_reason == tracepoint_error) { - tracepoint_list.listsize = 128; - tracepoint_list.list = xmalloc - (tracepoint_list.listsize * sizeof (struct memrange)); + char *buf = (char *) alloca (strlen (ts->error_desc) * 2 + 1); + + bin2hex ((gdb_byte *) ts->error_desc, buf, 0); + fprintf (fp, ":%s", buf); } - if (tracepoint_list.aexpr_list == NULL) + fprintf (fp, ":%x", ts->stopping_tracepoint); + if (ts->traceframe_count >= 0) + fprintf (fp, ";tframes:%x", ts->traceframe_count); + if (ts->traceframes_created >= 0) + fprintf (fp, ";tcreated:%x", ts->traceframes_created); + if (ts->buffer_free >= 0) + fprintf (fp, ";tfree:%x", ts->buffer_free); + if (ts->buffer_size >= 0) + fprintf (fp, ";tsize:%x", ts->buffer_size); + if (ts->disconnected_tracing) + fprintf (fp, ";disconn:%x", ts->disconnected_tracing); + if (ts->circular_buffer) + fprintf (fp, ";circular:%x", ts->circular_buffer); + fprintf (fp, "\n"); + + /* Note that we want to upload tracepoints and save those, rather + than simply writing out the local ones, because the user may have + changed tracepoints in GDB in preparation for a future tracing + run, or maybe just mass-deleted all types of breakpoints as part + of cleaning up. So as not to contaminate the session, leave the + data in its uploaded form, don't make into real tracepoints. */ + + /* Get trace state variables first, they may be checked when parsing + uploaded commands. */ + + target_upload_trace_state_variables (&uploaded_tsvs); + + for (utsv = uploaded_tsvs; utsv; utsv = utsv->next) { - tracepoint_list.aexpr_listsize = 128; - tracepoint_list.aexpr_list = xmalloc - (tracepoint_list.aexpr_listsize * sizeof (struct agent_expr *)); - } + char *buf = ""; - if (stepping_list.list == NULL) + if (utsv->name) + { + buf = (char *) xmalloc (strlen (utsv->name) * 2 + 1); + bin2hex ((gdb_byte *) (utsv->name), buf, 0); + } + + fprintf (fp, "tsv %x:%s:%x:%s\n", + utsv->number, phex_nz (utsv->initial_value, 8), + utsv->builtin, buf); + + if (utsv->name) + xfree (buf); + } + + free_uploaded_tsvs (&uploaded_tsvs); + + target_upload_tracepoints (&uploaded_tps); + + for (utp = uploaded_tps; utp; utp = utp->next) + { + fprintf (fp, "tp T%x:%s:%c:%x:%x", + utp->number, phex_nz (utp->addr, sizeof (utp->addr)), + (utp->enabled ? 'E' : 'D'), utp->step, utp->pass); + if (utp->type == bp_fast_tracepoint) + fprintf (fp, ":F%x", utp->orig_size); + if (utp->cond) + fprintf (fp, ":X%x,%s", (unsigned int) strlen (utp->cond) / 2, + utp->cond); + fprintf (fp, "\n"); + for (a = 0; VEC_iterate (char_ptr, utp->actions, a, act); ++a) + fprintf (fp, "tp A%x:%s:%s\n", + utp->number, phex_nz (utp->addr, sizeof (utp->addr)), act); + for (a = 0; VEC_iterate (char_ptr, utp->actions, a, act); ++a) + fprintf (fp, "tp S%x:%s:%s\n", + utp->number, phex_nz (utp->addr, sizeof (utp->addr)), act); + if (utp->at_string) + { + encode_source_string (utp->number, utp->addr, + "at", utp->at_string, buf, MAX_TRACE_UPLOAD); + fprintf (fp, "tp Z%s\n", buf); + } + if (utp->cond_string) + { + encode_source_string (utp->number, utp->addr, + "cond", utp->cond_string, buf, MAX_TRACE_UPLOAD); + fprintf (fp, "tp Z%s\n", buf); + } + for (a = 0; VEC_iterate (char_ptr, utp->cmd_strings, a, act); ++a) + { + encode_source_string (utp->number, utp->addr, "cmd", act, + buf, MAX_TRACE_UPLOAD); + fprintf (fp, "tp Z%s\n", buf); + } + } + + free_uploaded_tps (&uploaded_tps); + + /* Mark the end of the definition section. */ + fprintf (fp, "\n"); + + /* Get and write the trace data proper. We ask for big blocks, in + the hopes of efficiency, but will take less if the target has + packet size limitations or some such. */ + while (1) + { + gotten = target_get_raw_trace_data (buf, offset, MAX_TRACE_UPLOAD); + if (gotten < 0) + error (_("Failure to get requested trace buffer data")); + /* No more data is forthcoming, we're done. */ + if (gotten == 0) + break; + written = fwrite (buf, gotten, 1, fp); + if (written < 1) + perror_with_name (pathname); + offset += gotten; + } + + /* Mark the end of trace data. (We know that gotten is 0 at this point.) */ + written = fwrite (&gotten, 4, 1, fp); + if (written < 1) + perror_with_name (pathname); + + do_cleanups (cleanup); +} + +static void +trace_save_command (char *args, int from_tty) +{ + int target_does_save = 0; + char **argv; + char *filename = NULL; + struct cleanup *back_to; + + if (args == NULL) + error_no_arg (_("file in which to save trace data")); + + argv = gdb_buildargv (args); + back_to = make_cleanup_freeargv (argv); + + for (; *argv; ++argv) + { + if (strcmp (*argv, "-r") == 0) + target_does_save = 1; + else if (**argv == '-') + error (_("unknown option `%s'"), *argv); + else + filename = *argv; + } + + if (!filename) + error_no_arg (_("file in which to save trace data")); + + trace_save (filename, target_does_save); + + if (from_tty) + printf_filtered (_("Trace data saved to file '%s'.\n"), args); + + do_cleanups (back_to); +} + +/* Tell the target what to do with an ongoing tracing run if GDB + disconnects for some reason. */ + +void +send_disconnected_tracing_value (int value) +{ + target_set_disconnected_tracing (value); +} + +static void +set_disconnected_tracing (char *args, int from_tty, + struct cmd_list_element *c) +{ + send_disconnected_tracing_value (disconnected_tracing); +} + +static void +set_circular_trace_buffer (char *args, int from_tty, + struct cmd_list_element *c) +{ + target_set_circular_trace_buffer (circular_trace_buffer); +} + +/* Convert the memory pointed to by mem into hex, placing result in buf. + * Return a pointer to the last char put in buf (null) + * "stolen" from sparc-stub.c + */ + +static const char hexchars[] = "0123456789abcdef"; + +static char * +mem2hex (gdb_byte *mem, char *buf, int count) +{ + gdb_byte ch; + + while (count-- > 0) + { + ch = *mem++; + + *buf++ = hexchars[ch >> 4]; + *buf++ = hexchars[ch & 0xf]; + } + + *buf = 0; + + return buf; +} + +int +get_traceframe_number (void) +{ + return traceframe_number; +} + +/* Make the traceframe NUM be the current trace frame. Does nothing + if NUM is already current. */ + +void +set_traceframe_number (int num) +{ + int newnum; + + if (traceframe_number == num) + { + /* Nothing to do. */ + return; + } + + newnum = target_trace_find (tfind_number, num, 0, 0, NULL); + + if (newnum != num) + warning (_("could not change traceframe")); + + traceframe_number = newnum; + + /* Changing the traceframe changes our view of registers and of the + frame chain. */ + registers_changed (); +} + +/* A cleanup used when switching away and back from tfind mode. */ + +struct current_traceframe_cleanup +{ + /* The traceframe we were inspecting. */ + int traceframe_number; +}; + +static void +do_restore_current_traceframe_cleanup (void *arg) +{ + struct current_traceframe_cleanup *old = arg; + + set_traceframe_number (old->traceframe_number); +} + +static void +restore_current_traceframe_cleanup_dtor (void *arg) +{ + struct current_traceframe_cleanup *old = arg; + + xfree (old); +} + +struct cleanup * +make_cleanup_restore_current_traceframe (void) +{ + struct current_traceframe_cleanup *old; + + old = xmalloc (sizeof (struct current_traceframe_cleanup)); + old->traceframe_number = traceframe_number; + + return make_cleanup_dtor (do_restore_current_traceframe_cleanup, old, + restore_current_traceframe_cleanup_dtor); +} + +/* Given a number and address, return an uploaded tracepoint with that + number, creating if necessary. */ + +struct uploaded_tp * +get_uploaded_tp (int num, ULONGEST addr, struct uploaded_tp **utpp) +{ + struct uploaded_tp *utp; + + for (utp = *utpp; utp; utp = utp->next) + if (utp->number == num && utp->addr == addr) + return utp; + utp = (struct uploaded_tp *) xmalloc (sizeof (struct uploaded_tp)); + memset (utp, 0, sizeof (struct uploaded_tp)); + utp->number = num; + utp->addr = addr; + utp->actions = NULL; + utp->step_actions = NULL; + utp->cmd_strings = NULL; + utp->next = *utpp; + *utpp = utp; + return utp; +} + +static void +free_uploaded_tps (struct uploaded_tp **utpp) +{ + struct uploaded_tp *next_one; + + while (*utpp) + { + next_one = (*utpp)->next; + xfree (*utpp); + *utpp = next_one; + } +} + +/* Given a number and address, return an uploaded tracepoint with that + number, creating if necessary. */ + +struct uploaded_tsv * +get_uploaded_tsv (int num, struct uploaded_tsv **utsvp) +{ + struct uploaded_tsv *utsv; + + for (utsv = *utsvp; utsv; utsv = utsv->next) + if (utsv->number == num) + return utsv; + utsv = (struct uploaded_tsv *) xmalloc (sizeof (struct uploaded_tsv)); + memset (utsv, 0, sizeof (struct uploaded_tsv)); + utsv->number = num; + utsv->next = *utsvp; + *utsvp = utsv; + return utsv; +} + +static void +free_uploaded_tsvs (struct uploaded_tsv **utsvp) +{ + struct uploaded_tsv *next_one; + + while (*utsvp) + { + next_one = (*utsvp)->next; + xfree (*utsvp); + *utsvp = next_one; + } +} + +/* Look for an existing tracepoint that seems similar enough to the + uploaded one. Enablement isn't compared, because the user can + toggle that freely, and may have done so in anticipation of the + next trace run. */ + +struct breakpoint * +find_matching_tracepoint (struct uploaded_tp *utp) +{ + VEC(breakpoint_p) *tp_vec = all_tracepoints (); + int ix; + struct breakpoint *t; + struct bp_location *loc; + + for (ix = 0; VEC_iterate (breakpoint_p, tp_vec, ix, t); ix++) + { + if (t->type == utp->type + && t->step_count == utp->step + && t->pass_count == utp->pass + /* FIXME also test conditionals and actions */ + ) + { + /* Scan the locations for an address match. */ + for (loc = t->loc; loc; loc = loc->next) + { + if (loc->address == utp->addr) + return t; + } + } + } + return NULL; +} + +/* Given a list of tracepoints uploaded from a target, attempt to + match them up with existing tracepoints, and create new ones if not + found. */ + +void +merge_uploaded_tracepoints (struct uploaded_tp **uploaded_tps) +{ + struct uploaded_tp *utp; + struct breakpoint *t; + + /* Look for GDB tracepoints that match up with our uploaded versions. */ + for (utp = *uploaded_tps; utp; utp = utp->next) + { + t = find_matching_tracepoint (utp); + if (t) + printf_filtered (_("Assuming tracepoint %d is same as target's tracepoint %d at %s.\n"), + t->number, utp->number, paddress (get_current_arch (), utp->addr)); + else + { + t = create_tracepoint_from_upload (utp); + if (t) + printf_filtered (_("Created tracepoint %d for target's tracepoint %d at %s.\n"), + t->number, utp->number, paddress (get_current_arch (), utp->addr)); + else + printf_filtered (_("Failed to create tracepoint for target's tracepoint %d at %s, skipping it.\n"), + utp->number, paddress (get_current_arch (), utp->addr)); + } + /* Whether found or created, record the number used by the + target, to help with mapping target tracepoints back to their + counterparts here. */ + if (t) + t->number_on_target = utp->number; + } + + free_uploaded_tps (uploaded_tps); +} + +/* Trace state variables don't have much to identify them beyond their + name, so just use that to detect matches. */ + +struct trace_state_variable * +find_matching_tsv (struct uploaded_tsv *utsv) +{ + if (!utsv->name) + return NULL; + + return find_trace_state_variable (utsv->name); +} + +struct trace_state_variable * +create_tsv_from_upload (struct uploaded_tsv *utsv) +{ + const char *namebase; + char buf[20]; + int try_num = 0; + struct trace_state_variable *tsv; + + if (utsv->name) + { + namebase = utsv->name; + sprintf (buf, "%s", namebase); + } + else + { + namebase = "__tsv"; + sprintf (buf, "%s_%d", namebase, try_num++); + } + + /* Fish for a name that is not in use. */ + /* (should check against all internal vars?) */ + while (find_trace_state_variable (buf)) + sprintf (buf, "%s_%d", namebase, try_num++); + + /* We have an available name, create the variable. */ + tsv = create_trace_state_variable (xstrdup (buf)); + tsv->initial_value = utsv->initial_value; + tsv->builtin = utsv->builtin; + + return tsv; +} + +/* Given a list of uploaded trace state variables, try to match them + up with existing variables, or create additional ones. */ + +void +merge_uploaded_trace_state_variables (struct uploaded_tsv **uploaded_tsvs) +{ + int ix; + struct uploaded_tsv *utsv; + struct trace_state_variable *tsv; + int highest; + + /* Most likely some numbers will have to be reassigned as part of + the merge, so clear them all in anticipation. */ + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) + tsv->number = 0; + + for (utsv = *uploaded_tsvs; utsv; utsv = utsv->next) + { + tsv = find_matching_tsv (utsv); + if (tsv) + printf_filtered (_("Assuming trace state variable $%s is same as target's variable %d.\n"), + tsv->name, utsv->number); + else + { + tsv = create_tsv_from_upload (utsv); + printf_filtered (_("Created trace state variable $%s for target's variable %d.\n"), + tsv->name, utsv->number); + } + /* Give precedence to numberings that come from the target. */ + if (tsv) + tsv->number = utsv->number; + } + + /* Renumber everything that didn't get a target-assigned number. */ + highest = 0; + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) + if (tsv->number > highest) + highest = tsv->number; + + ++highest; + for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix) + if (tsv->number == 0) + tsv->number = highest++; + + free_uploaded_tsvs (uploaded_tsvs); +} + +/* target tfile command */ + +struct target_ops tfile_ops; + +/* Fill in tfile_ops with its defined operations and properties. */ + +#define TRACE_HEADER_SIZE 8 + +char *trace_filename; +int trace_fd = -1; +off_t trace_frames_offset; +off_t cur_offset; +int cur_data_size; +int trace_regblock_size; + +static void tfile_interp_line (char *line, + struct uploaded_tp **utpp, + struct uploaded_tsv **utsvp); + +static void +tfile_open (char *filename, int from_tty) +{ + char *temp; + struct cleanup *old_chain; + int flags; + int scratch_chan; + char header[TRACE_HEADER_SIZE]; + char linebuf[1000]; /* should be max remote packet size or so */ + char byte; + int bytes, i, gotten; + struct trace_status *ts; + struct uploaded_tp *uploaded_tps = NULL; + struct uploaded_tsv *uploaded_tsvs = NULL; + + target_preopen (from_tty); + if (!filename) + error (_("No trace file specified.")); + + filename = tilde_expand (filename); + if (!IS_ABSOLUTE_PATH(filename)) + { + temp = concat (current_directory, "/", filename, (char *) NULL); + xfree (filename); + filename = temp; + } + + old_chain = make_cleanup (xfree, filename); + + flags = O_BINARY | O_LARGEFILE; + flags |= O_RDONLY; + scratch_chan = open (filename, flags, 0); + if (scratch_chan < 0) + perror_with_name (filename); + + /* Looks semi-reasonable. Toss the old trace file and work on the new. */ + + discard_cleanups (old_chain); /* Don't free filename any more */ + unpush_target (&tfile_ops); + + push_target (&tfile_ops); + + trace_filename = xstrdup (filename); + trace_fd = scratch_chan; + + bytes = 0; + /* Read the file header and test for validity. */ + gotten = read (trace_fd, &header, TRACE_HEADER_SIZE); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < TRACE_HEADER_SIZE) + error (_("Premature end of file while reading trace file")); + + bytes += TRACE_HEADER_SIZE; + if (!(header[0] == 0x7f + && (strncmp (header + 1, "TRACE0\n", 7) == 0))) + error (_("File is not a valid trace file.")); + + trace_regblock_size = 0; + ts = current_trace_status (); + /* We know we're working with a file. */ + ts->from_file = 1; + /* Set defaults in case there is no status line. */ + ts->running_known = 0; + ts->stop_reason = trace_stop_reason_unknown; + ts->traceframe_count = -1; + ts->buffer_free = 0; + ts->disconnected_tracing = 0; + ts->circular_buffer = 0; + + /* Read through a section of newline-terminated lines that + define things like tracepoints. */ + i = 0; + while (1) + { + gotten = read (trace_fd, &byte, 1); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 1) + error (_("Premature end of file while reading trace file")); + + ++bytes; + if (byte == '\n') + { + /* Empty line marks end of the definition section. */ + if (i == 0) + break; + linebuf[i] = '\0'; + i = 0; + tfile_interp_line (linebuf, &uploaded_tps, &uploaded_tsvs); + } + else + linebuf[i++] = byte; + if (i >= 1000) + error (_("Excessively long lines in trace file")); + } + + /* Add the file's tracepoints and variables into the current mix. */ + + /* Get trace state variables first, they may be checked when parsing + uploaded commands. */ + merge_uploaded_trace_state_variables (&uploaded_tsvs); + + merge_uploaded_tracepoints (&uploaded_tps); + + /* Record the starting offset of the binary trace data. */ + trace_frames_offset = bytes; + + /* If we don't have a blocksize, we can't interpret the + traceframes. */ + if (trace_regblock_size == 0) + error (_("No register block size recorded in trace file")); + if (ts->traceframe_count <= 0) + { + warning ("No traceframes present in this file."); + return; + } + +#define TFILE_PID (1) + inferior_appeared (current_inferior (), TFILE_PID); + inferior_ptid = pid_to_ptid (TFILE_PID); + add_thread_silent (inferior_ptid); + + post_create_inferior (&tfile_ops, from_tty); + +#if 0 + /* FIXME this will get defined in MI patch submission */ + tfind_1 (tfind_number, 0, 0, 0, 0); +#endif +} + +/* Interpret the given line from the definitions part of the trace + file. */ + +static void +tfile_interp_line (char *line, + struct uploaded_tp **utpp, struct uploaded_tsv **utsvp) +{ + char *p = line; + + if (strncmp (p, "R ", strlen ("R ")) == 0) + { + p += strlen ("R "); + trace_regblock_size = strtol (p, &p, 16); + } + else if (strncmp (p, "status ", strlen ("status ")) == 0) + { + p += strlen ("status "); + parse_trace_status (p, current_trace_status ()); + } + else if (strncmp (p, "tp ", strlen ("tp ")) == 0) + { + p += strlen ("tp "); + parse_tracepoint_definition (p, utpp); + } + else if (strncmp (p, "tsv ", strlen ("tsv ")) == 0) + { + p += strlen ("tsv "); + parse_tsv_definition (p, utsvp); + } + else + warning ("Ignoring trace file definition \"%s\"", line); +} + +/* Parse the part of trace status syntax that is shared between + the remote protocol and the trace file reader. */ + +void +parse_trace_status (char *line, struct trace_status *ts) +{ + char *p = line, *p1, *p2, *p_temp; + ULONGEST val; + + ts->running_known = 1; + ts->running = (*p++ == '1'); + ts->stop_reason = trace_stop_reason_unknown; + xfree (ts->error_desc); + ts->error_desc = NULL; + ts->traceframe_count = -1; + ts->traceframes_created = -1; + ts->buffer_free = -1; + ts->buffer_size = -1; + ts->disconnected_tracing = 0; + ts->circular_buffer = 0; + + while (*p++) + { + p1 = strchr (p, ':'); + if (p1 == NULL) + error (_("Malformed trace status, at %s\n\ +Status line: '%s'\n"), p, line); + if (strncmp (p, stop_reason_names[trace_buffer_full], p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->stop_reason = trace_buffer_full; + } + else if (strncmp (p, stop_reason_names[trace_never_run], p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->stop_reason = trace_never_run; + } + else if (strncmp (p, stop_reason_names[tracepoint_passcount], p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->stop_reason = tracepoint_passcount; + ts->stopping_tracepoint = val; + } + else if (strncmp (p, stop_reason_names[tstop_command], p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->stop_reason = tstop_command; + } + else if (strncmp (p, stop_reason_names[trace_disconnected], p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->stop_reason = trace_disconnected; + } + else if (strncmp (p, stop_reason_names[tracepoint_error], p1 - p) == 0) + { + p2 = strchr (++p1, ':'); + if (p2 != p1) + { + int end; + + ts->error_desc = xmalloc ((p2 - p1) / 2 + 1); + end = hex2bin (p1, ts->error_desc, (p2 - p1) / 2); + ts->error_desc[end] = '\0'; + } + else + ts->error_desc = xstrdup (""); + + p = unpack_varlen_hex (++p2, &val); + ts->stopping_tracepoint = val; + ts->stop_reason = tracepoint_error; + } + else if (strncmp (p, "tframes", p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->traceframe_count = val; + } + else if (strncmp (p, "tcreated", p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->traceframes_created = val; + } + else if (strncmp (p, "tfree", p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->buffer_free = val; + } + else if (strncmp (p, "tsize", p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->buffer_size = val; + } + else if (strncmp (p, "disconn", p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->disconnected_tracing = val; + } + else if (strncmp (p, "circular", p1 - p) == 0) + { + p = unpack_varlen_hex (++p1, &val); + ts->circular_buffer = val; + } + else + { + /* Silently skip unknown optional info. */ + p_temp = strchr (p1 + 1, ';'); + if (p_temp) + p = p_temp; + else + /* Must be at the end. */ + break; + } + } +} + +/* Given a line of text defining a part of a tracepoint, parse it into + an "uploaded tracepoint". */ + +void +parse_tracepoint_definition (char *line, struct uploaded_tp **utpp) +{ + char *p; + char piece; + ULONGEST num, addr, step, pass, orig_size, xlen, start; + int enabled, end; + enum bptype type; + char *cond, *srctype, *buf; + struct uploaded_tp *utp = NULL; + + p = line; + /* Both tracepoint and action definitions start with the same number + and address sequence. */ + piece = *p++; + p = unpack_varlen_hex (p, &num); + p++; /* skip a colon */ + p = unpack_varlen_hex (p, &addr); + p++; /* skip a colon */ + if (piece == 'T') + { + enabled = (*p++ == 'E'); + p++; /* skip a colon */ + p = unpack_varlen_hex (p, &step); + p++; /* skip a colon */ + p = unpack_varlen_hex (p, &pass); + type = bp_tracepoint; + cond = NULL; + /* Thumb through optional fields. */ + while (*p == ':') + { + p++; /* skip a colon */ + if (*p == 'F') + { + type = bp_fast_tracepoint; + p++; + p = unpack_varlen_hex (p, &orig_size); + } + else if (*p == 'S') + { + type = bp_static_tracepoint; + p++; + } + else if (*p == 'X') + { + p++; + p = unpack_varlen_hex (p, &xlen); + p++; /* skip a comma */ + cond = (char *) xmalloc (2 * xlen + 1); + strncpy (cond, p, 2 * xlen); + cond[2 * xlen] = '\0'; + p += 2 * xlen; + } + else + warning (_("Unrecognized char '%c' in tracepoint definition, skipping rest"), *p); + } + utp = get_uploaded_tp (num, addr, utpp); + utp->type = type; + utp->enabled = enabled; + utp->step = step; + utp->pass = pass; + utp->cond = cond; + } + else if (piece == 'A') + { + utp = get_uploaded_tp (num, addr, utpp); + VEC_safe_push (char_ptr, utp->actions, xstrdup (p)); + } + else if (piece == 'S') + { + utp = get_uploaded_tp (num, addr, utpp); + VEC_safe_push (char_ptr, utp->step_actions, xstrdup (p)); + } + else if (piece == 'Z') + { + /* Parse a chunk of source form definition. */ + utp = get_uploaded_tp (num, addr, utpp); + srctype = p; + p = strchr (p, ':'); + p++; /* skip a colon */ + p = unpack_varlen_hex (p, &start); + p++; /* skip a colon */ + p = unpack_varlen_hex (p, &xlen); + p++; /* skip a colon */ + + buf = alloca (strlen (line)); + + end = hex2bin (p, (gdb_byte *) buf, strlen (p) / 2); + buf[end] = '\0'; + + if (strncmp (srctype, "at:", strlen ("at:")) == 0) + utp->at_string = xstrdup (buf); + else if (strncmp (srctype, "cond:", strlen ("cond:")) == 0) + utp->cond_string = xstrdup (buf); + else if (strncmp (srctype, "cmd:", strlen ("cmd:")) == 0) + VEC_safe_push (char_ptr, utp->cmd_strings, xstrdup (buf)); + } + else + { + /* Don't error out, the target might be sending us optional + info that we don't care about. */ + warning (_("Unrecognized tracepoint piece '%c', ignoring"), piece); + } +} + +/* Convert a textual description of a trace state variable into an + uploaded object. */ + +void +parse_tsv_definition (char *line, struct uploaded_tsv **utsvp) +{ + char *p, *buf; + ULONGEST num, initval, builtin; + int end; + struct uploaded_tsv *utsv = NULL; + + buf = alloca (strlen (line)); + + p = line; + p = unpack_varlen_hex (p, &num); + p++; /* skip a colon */ + p = unpack_varlen_hex (p, &initval); + p++; /* skip a colon */ + p = unpack_varlen_hex (p, &builtin); + p++; /* skip a colon */ + end = hex2bin (p, (gdb_byte *) buf, strlen (p) / 2); + buf[end] = '\0'; + + utsv = get_uploaded_tsv (num, utsvp); + utsv->initial_value = initval; + utsv->builtin = builtin; + utsv->name = xstrdup (buf); +} + +/* Close the trace file and generally clean up. */ + +static void +tfile_close (int quitting) +{ + int pid; + + if (trace_fd < 0) + return; + + pid = ptid_get_pid (inferior_ptid); + inferior_ptid = null_ptid; /* Avoid confusion from thread stuff */ + exit_inferior_silent (pid); + + close (trace_fd); + trace_fd = -1; + if (trace_filename) + xfree (trace_filename); +} + +static void +tfile_files_info (struct target_ops *t) +{ + /* (it would be useful to mention the name of the file) */ + printf_filtered ("Looking at a trace file.\n"); +} + +/* The trace status for a file is that tracing can never be run. */ + +static int +tfile_get_trace_status (struct trace_status *ts) +{ + /* Other bits of trace status were collected as part of opening the + trace files, so nothing to do here. */ + + return -1; +} + +/* Given the position of a traceframe in the file, figure out what + address the frame was collected at. This would normally be the + value of a collected PC register, but if not available, we + improvise. */ + +static ULONGEST +tfile_get_traceframe_address (off_t tframe_offset) +{ + ULONGEST addr = 0; + short tpnum; + struct breakpoint *tp; + off_t saved_offset = cur_offset; + int gotten; + + /* FIXME dig pc out of collected registers */ + + /* Fall back to using tracepoint address. */ + lseek (trace_fd, tframe_offset, SEEK_SET); + gotten = read (trace_fd, &tpnum, 2); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 2) + error (_("Premature end of file while reading trace file")); + + tp = get_tracepoint_by_number_on_target (tpnum); + /* FIXME this is a poor heuristic if multiple locations */ + if (tp && tp->loc) + addr = tp->loc->address; + + /* Restore our seek position. */ + cur_offset = saved_offset; + lseek (trace_fd, cur_offset, SEEK_SET); + return addr; +} + +/* Given a type of search and some parameters, scan the collection of + traceframes in the file looking for a match. When found, return + both the traceframe and tracepoint number, otherwise -1 for + each. */ + +static int +tfile_trace_find (enum trace_find_type type, int num, + ULONGEST addr1, ULONGEST addr2, int *tpp) +{ + short tpnum; + int tfnum = 0, found = 0, gotten; + int data_size; + struct breakpoint *tp; + off_t offset, tframe_offset; + ULONGEST tfaddr; + + lseek (trace_fd, trace_frames_offset, SEEK_SET); + offset = trace_frames_offset; + while (1) + { + tframe_offset = offset; + gotten = read (trace_fd, &tpnum, 2); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 2) + error (_("Premature end of file while reading trace file")); + offset += 2; + if (tpnum == 0) + break; + gotten = read (trace_fd, &data_size, 4); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 4) + error (_("Premature end of file while reading trace file")); + offset += 4; + switch (type) + { + case tfind_number: + if (tfnum == num) + found = 1; + break; + case tfind_pc: + tfaddr = tfile_get_traceframe_address (tframe_offset); + if (tfaddr == addr1) + found = 1; + break; + case tfind_tp: + tp = get_tracepoint (num); + if (tp && tpnum == tp->number_on_target) + found = 1; + break; + case tfind_range: + tfaddr = tfile_get_traceframe_address (tframe_offset); + if (addr1 <= tfaddr && tfaddr <= addr2) + found = 1; + break; + case tfind_outside: + tfaddr = tfile_get_traceframe_address (tframe_offset); + if (!(addr1 <= tfaddr && tfaddr <= addr2)) + found = 1; + break; + default: + internal_error (__FILE__, __LINE__, _("unknown tfind type")); + } + if (found) + { + if (tpp) + *tpp = tpnum; + cur_offset = offset; + cur_data_size = data_size; + return tfnum; + } + /* Skip past the traceframe's data. */ + lseek (trace_fd, data_size, SEEK_CUR); + offset += data_size; + /* Update our own count of traceframes. */ + ++tfnum; + } + /* Did not find what we were looking for. */ + if (tpp) + *tpp = -1; + return -1; +} + +/* Look for a block of saved registers in the traceframe, and get the + requested register from it. */ + +static void +tfile_fetch_registers (struct target_ops *ops, + struct regcache *regcache, int regno) +{ + struct gdbarch *gdbarch = get_regcache_arch (regcache); + char block_type; + int pos, offset, regn, regsize, gotten, pc_regno; + unsigned short mlen; + char *regs; + + /* An uninitialized reg size says we're not going to be + successful at getting register blocks. */ + if (!trace_regblock_size) + return; + + regs = alloca (trace_regblock_size); + + lseek (trace_fd, cur_offset, SEEK_SET); + pos = 0; + while (pos < cur_data_size) + { + gotten = read (trace_fd, &block_type, 1); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 1) + error (_("Premature end of file while reading trace file")); + + ++pos; + switch (block_type) + { + case 'R': + gotten = read (trace_fd, regs, trace_regblock_size); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < trace_regblock_size) + error (_("Premature end of file while reading trace file")); + + /* Assume the block is laid out in GDB register number order, + each register with the size that it has in GDB. */ + offset = 0; + for (regn = 0; regn < gdbarch_num_regs (gdbarch); regn++) + { + regsize = register_size (gdbarch, regn); + /* Make sure we stay within block bounds. */ + if (offset + regsize >= trace_regblock_size) + break; + if (!regcache_valid_p (regcache, regn)) + { + if (regno == regn) + { + regcache_raw_supply (regcache, regno, regs + offset); + break; + } + else if (regno == -1) + { + regcache_raw_supply (regcache, regn, regs + offset); + } + } + offset += regsize; + } + return; + case 'M': + lseek (trace_fd, 8, SEEK_CUR); + gotten = read (trace_fd, &mlen, 2); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 2) + error (_("Premature end of file while reading trace file")); + lseek (trace_fd, mlen, SEEK_CUR); + pos += (8 + 2 + mlen); + break; + case 'V': + lseek (trace_fd, 4 + 8, SEEK_CUR); + pos += (4 + 8); + break; + default: + error ("Unknown block type '%c' (0x%x) in trace frame", + block_type, block_type); + break; + } + } + + /* We get here if no register data has been found. Although we + don't like making up numbers, GDB has all manner of troubles when + the target says some register is not available. Filling in with + zeroes is a reasonable fallback. */ + for (regn = 0; regn < gdbarch_num_regs (gdbarch); regn++) + regcache_raw_supply (regcache, regn, NULL); + + /* We can often usefully guess that the PC is going to be the same + as the address of the tracepoint. */ + pc_regno = gdbarch_pc_regnum (gdbarch); + if (pc_regno >= 0 && (regno == -1 || regno == pc_regno)) + { + struct breakpoint *tp = get_tracepoint (tracepoint_number); + + if (tp && tp->loc) + { + /* But don't try to guess if tracepoint is multi-location... */ + if (tp->loc->next) + { + warning ("Tracepoint %d has multiple locations, cannot infer $pc", + tp->number); + return; + } + /* ... or does while-stepping. */ + if (tp->step_count > 0) + { + warning ("Tracepoint %d does while-stepping, cannot infer $pc", + tp->number); + return; + } + + store_unsigned_integer (regs, register_size (gdbarch, pc_regno), + gdbarch_byte_order (gdbarch), + tp->loc->address); + regcache_raw_supply (regcache, pc_regno, regs); + } + } +} + +static LONGEST +tfile_xfer_partial (struct target_ops *ops, enum target_object object, + const char *annex, gdb_byte *readbuf, + const gdb_byte *writebuf, ULONGEST offset, LONGEST len) +{ + char block_type; + int pos, gotten; + ULONGEST maddr, amt; + unsigned short mlen; + + /* We're only doing regular memory for now. */ + if (object != TARGET_OBJECT_MEMORY) + return -1; + + if (readbuf == NULL) + error ("tfile_xfer_partial: trace file is read-only"); + + lseek (trace_fd, cur_offset, SEEK_SET); + pos = 0; + while (pos < cur_data_size) + { + gotten = read (trace_fd, &block_type, 1); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 1) + error (_("Premature end of file while reading trace file")); + ++pos; + switch (block_type) + { + case 'R': + lseek (trace_fd, trace_regblock_size, SEEK_CUR); + pos += trace_regblock_size; + break; + case 'M': + gotten = read (trace_fd, &maddr, 8); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 8) + error (_("Premature end of file while reading trace file")); + + gotten = read (trace_fd, &mlen, 2); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 2) + error (_("Premature end of file while reading trace file")); + /* If the block includes the first part of the desired + range, return as much it has; GDB will re-request the + remainder, which might be in a different block of this + trace frame. */ + if (maddr <= offset && offset < (maddr + mlen)) + { + amt = (maddr + mlen) - offset; + if (amt > len) + amt = len; + + gotten = read (trace_fd, readbuf, amt); + if (gotten < 0) + perror_with_name (trace_filename); + /* While it's acceptable to return less than was + originally asked for, it's not acceptable to return + less than what this block claims to contain. */ + else if (gotten < amt) + error (_("Premature end of file while reading trace file")); + return amt; + } + lseek (trace_fd, mlen, SEEK_CUR); + pos += (8 + 2 + mlen); + break; + case 'V': + lseek (trace_fd, 4 + 8, SEEK_CUR); + pos += (4 + 8); + break; + default: + error ("Unknown block type '%c' (0x%x) in traceframe", + block_type, block_type); + break; + } + } + + /* It's unduly pedantic to refuse to look at the executable for + read-only pieces; so do the equivalent of readonly regions aka + QTro packet. */ + /* FIXME account for relocation at some point */ + if (exec_bfd) + { + asection *s; + bfd_size_type size; + bfd_vma lma; + + for (s = exec_bfd->sections; s; s = s->next) + { + if ((s->flags & SEC_LOAD) == 0 || + (s->flags & SEC_READONLY) == 0) + continue; + + lma = s->lma; + size = bfd_get_section_size (s); + if (lma <= offset && offset < (lma + size)) + { + amt = (lma + size) - offset; + if (amt > len) + amt = len; + + amt = bfd_get_section_contents (exec_bfd, s, + readbuf, offset - lma, amt); + return amt; + } + } + } + + /* Indicate failure to find the requested memory block. */ + return -1; +} + +/* Iterate through the blocks of a trace frame, looking for a 'V' + block with a matching tsv number. */ + +static int +tfile_get_trace_state_variable_value (int tsvnum, LONGEST *val) +{ + char block_type; + int pos, vnum, gotten; + unsigned short mlen; + + lseek (trace_fd, cur_offset, SEEK_SET); + pos = 0; + while (pos < cur_data_size) + { + gotten = read (trace_fd, &block_type, 1); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 1) + error (_("Premature end of file while reading trace file")); + ++pos; + switch (block_type) + { + case 'R': + lseek (trace_fd, trace_regblock_size, SEEK_CUR); + pos += trace_regblock_size; + break; + case 'M': + lseek (trace_fd, 8, SEEK_CUR); + gotten = read (trace_fd, &mlen, 2); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 2) + error (_("Premature end of file while reading trace file")); + lseek (trace_fd, mlen, SEEK_CUR); + pos += (8 + 2 + mlen); + break; + case 'V': + gotten = read (trace_fd, &vnum, 4); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 4) + error (_("Premature end of file while reading trace file")); + if (tsvnum == vnum) + { + gotten = read (trace_fd, val, 8); + if (gotten < 0) + perror_with_name (trace_filename); + else if (gotten < 8) + error (_("Premature end of file while reading trace file")); + return 1; + } + lseek (trace_fd, 8, SEEK_CUR); + pos += (4 + 8); + break; + default: + error ("Unknown block type '%c' (0x%x) in traceframe", + block_type, block_type); + break; + } + } + /* Didn't find anything. */ + return 0; +} + +static int +tfile_has_all_memory (struct target_ops *ops) +{ + return 1; +} + +static int +tfile_has_memory (struct target_ops *ops) +{ + return 1; +} + +static int +tfile_has_stack (struct target_ops *ops) +{ + return 1; +} + +static int +tfile_has_registers (struct target_ops *ops) +{ + return 1; +} + +static void +init_tfile_ops (void) +{ + tfile_ops.to_shortname = "tfile"; + tfile_ops.to_longname = "Local trace dump file"; + tfile_ops.to_doc = + "Use a trace file as a target. Specify the filename of the trace file."; + tfile_ops.to_open = tfile_open; + tfile_ops.to_close = tfile_close; + tfile_ops.to_fetch_registers = tfile_fetch_registers; + tfile_ops.to_xfer_partial = tfile_xfer_partial; + tfile_ops.to_files_info = tfile_files_info; + tfile_ops.to_get_trace_status = tfile_get_trace_status; + tfile_ops.to_trace_find = tfile_trace_find; + tfile_ops.to_get_trace_state_variable_value = tfile_get_trace_state_variable_value; + /* core_stratum might seem more logical, but GDB doesn't like having + more than one core_stratum vector. */ + tfile_ops.to_stratum = process_stratum; + tfile_ops.to_has_all_memory = tfile_has_all_memory; + tfile_ops.to_has_memory = tfile_has_memory; + tfile_ops.to_has_stack = tfile_has_stack; + tfile_ops.to_has_registers = tfile_has_registers; + tfile_ops.to_magic = OPS_MAGIC; +} + +/* Given a line of text defining a static tracepoint marker, parse it + into a "static tracepoint marker" object. Throws an error is + parsing fails. If PP is non-null, it points to one past the end of + the parsed marker definition. */ + +void +parse_static_tracepoint_marker_definition (char *line, char **pp, + struct static_tracepoint_marker *marker) +{ + char *p, *endp; + ULONGEST addr; + int end; + + p = line; + p = unpack_varlen_hex (p, &addr); + p++; /* skip a colon */ + + marker->gdbarch = target_gdbarch; + marker->address = (CORE_ADDR) addr; + + endp = strchr (p, ':'); + if (endp == NULL) + error ("bad marker definition: %s", line); + + marker->str_id = xmalloc (endp - p + 1); + end = hex2bin (p, (gdb_byte *) marker->str_id, (endp - p + 1) / 2); + marker->str_id[end] = '\0'; + + p += 2 * end; + p++; /* skip a colon */ + + marker->extra = xmalloc (strlen (p) + 1); + end = hex2bin (p, (gdb_byte *) marker->extra, strlen (p) / 2); + marker->extra[end] = '\0'; + + if (pp) + *pp = p; +} + +/* Release a static tracepoint marker's contents. Note that the + object itself isn't released here. There objects are usually on + the stack. */ + +void +release_static_tracepoint_marker (struct static_tracepoint_marker *marker) +{ + xfree (marker->str_id); + marker->str_id = NULL; +} + +/* Print MARKER to gdb_stdout. */ + +static void +print_one_static_tracepoint_marker (int count, + struct static_tracepoint_marker *marker) +{ + struct command_line *l; + struct symbol *sym; + + char wrap_indent[80]; + char extra_field_indent[80]; + struct ui_stream *stb = ui_out_stream_new (uiout); + struct cleanup *old_chain = make_cleanup_ui_out_stream_delete (stb); + struct cleanup *bkpt_chain; + VEC(breakpoint_p) *tracepoints; + + struct symtab_and_line sal; + + init_sal (&sal); + + sal.pc = marker->address; + + tracepoints = static_tracepoints_here (marker->address); + + bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "marker"); + + /* A counter field to help readability. This is not a stable + identifier! */ + ui_out_field_int (uiout, "count", count); + + ui_out_field_string (uiout, "marker-id", marker->str_id); + + ui_out_field_fmt (uiout, "enabled", "%c", + !VEC_empty (breakpoint_p, tracepoints) ? 'y' : 'n'); + ui_out_spaces (uiout, 2); + + strcpy (wrap_indent, " "); + + if (gdbarch_addr_bit (marker->gdbarch) <= 32) + strcat (wrap_indent, " "); + else + strcat (wrap_indent, " "); + + strcpy (extra_field_indent, " "); + + ui_out_field_core_addr (uiout, "addr", marker->gdbarch, marker->address); + + sal = find_pc_line (marker->address, 0); + sym = find_pc_sect_function (marker->address, NULL); + if (sym) + { + ui_out_text (uiout, "in "); + ui_out_field_string (uiout, "func", + SYMBOL_PRINT_NAME (sym)); + ui_out_wrap_hint (uiout, wrap_indent); + ui_out_text (uiout, " at "); + } + else + ui_out_field_skip (uiout, "func"); + + if (sal.symtab != NULL) + { + ui_out_field_string (uiout, "file", sal.symtab->filename); + ui_out_text (uiout, ":"); + + if (ui_out_is_mi_like_p (uiout)) + { + char *fullname = symtab_to_fullname (sal.symtab); + + if (fullname) + ui_out_field_string (uiout, "fullname", fullname); + } + else + ui_out_field_skip (uiout, "fullname"); + + ui_out_field_int (uiout, "line", sal.line); + } + else + { + ui_out_field_skip (uiout, "fullname"); + ui_out_field_skip (uiout, "line"); + } + + ui_out_text (uiout, "\n"); + ui_out_text (uiout, extra_field_indent); + ui_out_text (uiout, _("Data: \"")); + ui_out_field_string (uiout, "extra-data", marker->extra); + ui_out_text (uiout, "\"\n"); + + if (!VEC_empty (breakpoint_p, tracepoints)) + { + struct cleanup *cleanup_chain; + int ix; + struct breakpoint *b; + + cleanup_chain = make_cleanup_ui_out_tuple_begin_end (uiout, + "tracepoints-at"); + + ui_out_text (uiout, extra_field_indent); + ui_out_text (uiout, _("Probed by static tracepoints: ")); + for (ix = 0; VEC_iterate(breakpoint_p, tracepoints, ix, b); ix++) + { + if (ix > 0) + ui_out_text (uiout, ", "); + ui_out_text (uiout, "#"); + ui_out_field_int (uiout, "tracepoint-id", b->number); + } + + do_cleanups (cleanup_chain); + + if (ui_out_is_mi_like_p (uiout)) + ui_out_field_int (uiout, "number-of-tracepoints", + VEC_length(breakpoint_p, tracepoints)); + else + ui_out_text (uiout, "\n"); + } + VEC_free (breakpoint_p, tracepoints); + + do_cleanups (bkpt_chain); + do_cleanups (old_chain); +} + +static void +info_static_tracepoint_markers_command (char *arg, int from_tty) +{ + VEC(static_tracepoint_marker_p) *markers; + struct cleanup *old_chain; + struct static_tracepoint_marker *marker; + int i; + + old_chain + = make_cleanup_ui_out_table_begin_end (uiout, 5, -1, + "StaticTracepointMarkersTable"); + + ui_out_table_header (uiout, 7, ui_left, "counter", "Cnt"); + + ui_out_table_header (uiout, 40, ui_left, "marker-id", "ID"); + + ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); + if (gdbarch_addr_bit (target_gdbarch) <= 32) + ui_out_table_header (uiout, 10, ui_left, "addr", "Address"); + else + ui_out_table_header (uiout, 18, ui_left, "addr", "Address"); + ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); + + ui_out_table_body (uiout); + + markers = target_static_tracepoint_markers_by_strid (NULL); + make_cleanup (VEC_cleanup (static_tracepoint_marker_p), &markers); + + for (i = 0; + VEC_iterate (static_tracepoint_marker_p, + markers, i, marker); + i++) + { + print_one_static_tracepoint_marker (i + 1, marker); + release_static_tracepoint_marker (marker); + } + + do_cleanups (old_chain); +} + +/* The $_sdata convenience variable is a bit special. We don't know + for sure type of the value until we actually have a chance to fetch + the data --- the size of the object depends on what has been + collected. We solve this by making $_sdata be an internalvar that + creates a new value on access. */ + +/* Return a new value with the correct type for the sdata object of + the current trace frame. Return a void value if there's no object + available. */ + +static struct value * +sdata_make_value (struct gdbarch *gdbarch, struct internalvar *var) +{ + LONGEST size; + gdb_byte *buf; + + /* We need to read the whole object before we know its size. */ + size = target_read_alloc (¤t_target, + TARGET_OBJECT_STATIC_TRACE_DATA, + NULL, &buf); + if (size >= 0) + { + struct value *v; + struct type *type; + + type = init_vector_type (builtin_type (gdbarch)->builtin_true_char, + size); + v = allocate_value (type); + memcpy (value_contents_raw (v), buf, size); + xfree (buf); + return v; + } + else + return allocate_value (builtin_type (gdbarch)->builtin_void); +} + +/* module initialization */ +void +_initialize_tracepoint (void) +{ + struct cmd_list_element *c; + + /* Explicitly create without lookup, since that tries to create a + value with a void typed value, and when we get here, gdbarch + isn't initialized yet. At this point, we're quite sure there + isn't another convenience variable of the same name. */ + create_internalvar_type_lazy ("_sdata", sdata_make_value); + + traceframe_number = -1; + tracepoint_number = -1; + + if (tracepoint_list.list == NULL) + { + tracepoint_list.listsize = 128; + tracepoint_list.list = xmalloc + (tracepoint_list.listsize * sizeof (struct memrange)); + } + if (tracepoint_list.aexpr_list == NULL) + { + tracepoint_list.aexpr_listsize = 128; + tracepoint_list.aexpr_list = xmalloc + (tracepoint_list.aexpr_listsize * sizeof (struct agent_expr *)); + } + + if (stepping_list.list == NULL) { stepping_list.listsize = 128; stepping_list.list = xmalloc @@ -2185,24 +4408,51 @@ _initialize_tracepoint (void) add_com ("tdump", class_trace, trace_dump_command, _("Print everything collected at the current tracepoint.")); + add_com ("tsave", class_trace, trace_save_command, _("\ +Save the trace data to a file.\n\ +Use the '-r' option to direct the target to save directly to the file,\n\ +using its own filesystem.")); + + c = add_com ("tvariable", class_trace, trace_variable_command,_("\ +Define a trace state variable.\n\ +Argument is a $-prefixed name, optionally followed\n\ +by '=' and an expression that sets the initial value\n\ +at the start of tracing.")); + set_cmd_completer (c, expression_completer); + + add_cmd ("tvariable", class_trace, delete_trace_variable_command, _("\ +Delete one or more trace state variables.\n\ +Arguments are the names of the variables to delete.\n\ +If no arguments are supplied, delete all variables."), &deletelist); + /* FIXME add a trace variable completer */ + + add_info ("tvariables", tvariables_info, _("\ +Status of trace state variables and their values.\n\ +")); + + add_info ("static-tracepoint-markers", + info_static_tracepoint_markers_command, _("\ +List target static tracepoints markers.\n\ +")); + add_prefix_cmd ("tfind", class_trace, trace_find_command, _("\ Select a trace frame;\n\ No argument means forward by one frame; '-' means backward by one frame."), &tfindlist, "tfind ", 1, &cmdlist); add_cmd ("outside", class_trace, trace_find_outside_command, _("\ -Select a trace frame whose PC is outside the given range.\n\ +Select a trace frame whose PC is outside the given range (exclusive).\n\ Usage: tfind outside addr1, addr2"), &tfindlist); add_cmd ("range", class_trace, trace_find_range_command, _("\ -Select a trace frame whose PC is in the given range.\n\ +Select a trace frame whose PC is in the given range (inclusive).\n\ Usage: tfind range addr1,addr2"), &tfindlist); add_cmd ("line", class_trace, trace_find_line_command, _("\ Select a trace frame by source line.\n\ -Argument can be a line number (with optional source file), \n\ +Argument can be a line number (with optional source file),\n\ a function name, or '*' followed by an address.\n\ Default argument is 'the next source line that was traced'."), &tfindlist); @@ -2265,14 +4515,54 @@ Also accepts the following special arguments:\n\ $regs -- all registers.\n\ $args -- all function arguments.\n\ $locals -- all variables local to the block/function scope.\n\ + $_sdata -- static tracepoint data (ignored for non-static tracepoints).\n\ +Note: this command can only be used in a tracepoint \"actions\" list.")); + + add_com ("teval", class_trace, teval_pseudocommand, _("\ +Specify one or more expressions to be evaluated at a tracepoint.\n\ +Accepts a comma-separated list of (one or more) expressions.\n\ +The result of each evaluation will be discarded.\n\ Note: this command can only be used in a tracepoint \"actions\" list.")); add_com ("actions", class_trace, trace_actions_command, _("\ Specify the actions to be taken at a tracepoint.\n\ -Tracepoint actions may include collecting of specified data, \n\ -single-stepping, or enabling/disabling other tracepoints, \n\ +Tracepoint actions may include collecting of specified data,\n\ +single-stepping, or enabling/disabling other tracepoints,\n\ depending on target's capabilities.")); - target_buf_size = 2048; - target_buf = xmalloc (target_buf_size); + default_collect = xstrdup (""); + add_setshow_string_cmd ("default-collect", class_trace, + &default_collect, _("\ +Set the list of expressions to collect by default"), _("\ +Show the list of expressions to collect by default"), NULL, + NULL, NULL, + &setlist, &showlist); + + add_setshow_boolean_cmd ("disconnected-tracing", no_class, + &disconnected_tracing, _("\ +Set whether tracing continues after GDB disconnects."), _("\ +Show whether tracing continues after GDB disconnects."), _("\ +Use this to continue a tracing run even if GDB disconnects\n\ +or detaches from the target. You can reconnect later and look at\n\ +trace data collected in the meantime."), + set_disconnected_tracing, + NULL, + &setlist, + &showlist); + + add_setshow_boolean_cmd ("circular-trace-buffer", no_class, + &circular_trace_buffer, _("\ +Set target's use of circular trace buffer."), _("\ +Show target's use of circular trace buffer."), _("\ +Use this to make the trace buffer into a circular buffer,\n\ +which will discard traceframes (oldest first) instead of filling\n\ +up and stopping the trace run."), + set_circular_trace_buffer, + NULL, + &setlist, + &showlist); + + init_tfile_ops (); + + add_target (&tfile_ops); } diff --git a/contrib/gdb-7/gdb/tracepoint.h b/contrib/gdb-7/gdb/tracepoint.h index f43f736f30..03ea04dcb5 100644 --- a/contrib/gdb-7/gdb/tracepoint.h +++ b/contrib/gdb-7/gdb/tracepoint.h @@ -1,5 +1,5 @@ /* Data structures associated with tracepoints in GDB. - Copyright (C) 1997, 1998, 1999, 2000, 2007, 2008, 2009 + Copyright (C) 1997, 1998, 1999, 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -20,33 +20,218 @@ #if !defined (TRACEPOINT_H) #define TRACEPOINT_H 1 -/* The data structure for an action: */ -struct action_line +#include "breakpoint.h" +#include "target.h" + +/* A trace state variable is a value managed by a target being + traced. A trace state variable (or tsv for short) can be accessed + and assigned to by tracepoint actions and conditionals, but is not + part of the program being traced, and it doesn't have to be + collected. Effectively the variables are scratch space for + tracepoints. */ + +struct trace_state_variable { - struct action_line *next; - char *action; - }; + /* The variable's name. The user has to prefix with a dollar sign, + but we don't store that internally. */ + const char *name; + + /* An id number assigned by GDB, and transmitted to targets. */ + int number; + + /* The initial value of a variable is a 64-bit signed integer. */ + LONGEST initial_value; + + /* 1 if the value is known, else 0. The value is known during a + trace run, or in tfind mode if the variable was collected into + the current trace frame. */ + int value_known; + + /* The value of a variable is a 64-bit signed integer. */ + LONGEST value; -enum actionline_type + /* This is true for variables that are predefined and built into + the target. */ + int builtin; + }; + +/* The trace status encompasses various info about the general state + of the tracing run. */ + +enum trace_stop_reason { - BADLINE = -1, - GENERIC = 0, - END = 1, - STEPPING = 2 + trace_stop_reason_unknown, + trace_never_run, + tstop_command, + trace_buffer_full, + trace_disconnected, + tracepoint_passcount, + tracepoint_error }; -extern unsigned long trace_running_p; +struct trace_status +{ + /* This is true if the status is coming from a file rather + than a live target. */ + int from_file; + + /* This is true if the value of the running field is known. */ + int running_known; + + int running; + + enum trace_stop_reason stop_reason; + + /* If stop_reason is tracepoint_passcount or tracepoint_error, this + is the (on-target) number of the tracepoint which caused the + stop. */ + int stopping_tracepoint; + + /* If stop_reason is tracepoint_error, this is a human-readable + string that describes the error that happened on the target. */ + char *error_desc; + + /* Number of traceframes currently in the buffer. */ + + int traceframe_count; + + /* Number of traceframes created since start of run. */ + + int traceframes_created; + + /* Total size of the target's trace buffer. */ + + int buffer_size; + + /* Unused bytes left in the target's trace buffer. */ + + int buffer_free; + + /* 1 if the target will continue tracing after disconnection, else + 0. If the target does not report a value, assume 0. */ + + int disconnected_tracing; + + /* 1 if the target is using a circular trace buffer, else 0. If the + target does not report a value, assume 0. */ + + int circular_buffer; +}; + +struct trace_status *current_trace_status (void); + +extern char *default_collect; + +/* Struct to collect random info about tracepoints on the target. */ + +DEF_VEC_P (char_ptr); + +struct uploaded_tp +{ + int number; + enum bptype type; + ULONGEST addr; + int enabled; + int step; + int pass; + int orig_size; + + /* String that is the encoded form of the tracepoint's condition. */ + char *cond; + + /* Vectors of strings that are the encoded forms of a tracepoint's actions. */ + VEC(char_ptr) *actions; + VEC(char_ptr) *step_actions; + + /* The original string defining the location of the tracepoint. */ + char *at_string; + + /* The original string defining the tracepoint's condition. */ + char *cond_string; + + /* List of original strings defining the tracepoint's actions. */ + VEC(char_ptr) *cmd_strings; + + struct uploaded_tp *next; +}; + +/* Struct recording info about trace state variables on the target. */ + +struct uploaded_tsv +{ + const char *name; + int number; + LONGEST initial_value; + int builtin; + struct uploaded_tsv *next; +}; + +/* Struct recording info about a target static tracepoint marker. */ + +struct static_tracepoint_marker +{ + struct gdbarch *gdbarch; + CORE_ADDR address; + + /* The string ID of the marker. */ + char *str_id; + + /* Extra target reported info associated with the marker. */ + char *extra; +}; + +extern void parse_static_tracepoint_marker_definition + (char *line, char **pp, + struct static_tracepoint_marker *marker); +extern void release_static_tracepoint_marker (struct static_tracepoint_marker *); /* A hook used to notify the UI of tracepoint operations. */ -void (*deprecated_trace_find_hook) (char *arg, int from_tty); -void (*deprecated_trace_start_stop_hook) (int start, int from_tty); +extern void (*deprecated_trace_find_hook) (char *arg, int from_tty); +extern void (*deprecated_trace_start_stop_hook) (int start, int from_tty); int get_traceframe_number (void); +void set_traceframe_number (int); +struct cleanup *make_cleanup_restore_current_traceframe (void); + void free_actions (struct breakpoint *); -enum actionline_type validate_actionline (char **, struct breakpoint *); +extern void validate_actionline (char **, struct breakpoint *); extern void end_actions_pseudocommand (char *args, int from_tty); extern void while_stepping_pseudocommand (char *args, int from_tty); +extern struct trace_state_variable *find_trace_state_variable (const char *name); +extern struct trace_state_variable *create_trace_state_variable (const char *name); + +extern int encode_source_string (int num, ULONGEST addr, + char *srctype, char *src, + char *buf, int buf_size); + +extern void parse_trace_status (char *line, struct trace_status *ts); + +extern void parse_tracepoint_definition (char *line, struct uploaded_tp **utpp); +extern void parse_tsv_definition (char *line, struct uploaded_tsv **utsvp); + +extern struct uploaded_tp *get_uploaded_tp (int num, ULONGEST addr, + struct uploaded_tp **utpp); +extern struct breakpoint *create_tracepoint_from_upload (struct uploaded_tp *utp); +extern void merge_uploaded_tracepoints (struct uploaded_tp **utpp); +extern void merge_uploaded_trace_state_variables (struct uploaded_tsv **utsvp); + +extern void disconnect_tracing (int from_tty); + +extern void start_tracing (void); +extern void stop_tracing (void); + +extern void trace_status_mi (int on_stop); + +extern void tvariables_info_1 (void); +extern void save_trace_state_variables (struct ui_file *fp); + +extern void tfind_1 (enum trace_find_type type, int num, + ULONGEST addr1, ULONGEST addr2, + int from_tty); + +extern void trace_save (const char *filename, int target_does_save); + #endif /* TRACEPOINT_H */ diff --git a/contrib/gdb-7/gdb/trad-frame.c b/contrib/gdb-7/gdb/trad-frame.c index 3ce7f00975..b38409e091 100644 --- a/contrib/gdb-7/gdb/trad-frame.c +++ b/contrib/gdb-7/gdb/trad-frame.c @@ -1,6 +1,7 @@ /* Traditional frame unwind support, for GDB the GNU Debugger. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -56,6 +57,7 @@ trad_frame_alloc_saved_regs (struct frame_info *this_frame) int numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch); struct trad_frame_saved_reg *this_saved_regs = FRAME_OBSTACK_CALLOC (numregs, struct trad_frame_saved_reg); + for (regnum = 0; regnum < numregs; regnum++) { this_saved_regs[regnum].realreg = regnum; @@ -135,7 +137,6 @@ trad_frame_get_prev_register (struct frame_info *this_frame, struct trad_frame_saved_reg this_saved_regs[], int regnum) { - struct gdbarch *gdbarch = get_frame_arch (this_frame); if (trad_frame_addr_p (this_saved_regs, regnum)) /* The register was saved in memory. */ return frame_unwind_got_memory (this_frame, regnum, diff --git a/contrib/gdb-7/gdb/trad-frame.h b/contrib/gdb-7/gdb/trad-frame.h index dfe7a85d7e..683565fee4 100644 --- a/contrib/gdb-7/gdb/trad-frame.h +++ b/contrib/gdb-7/gdb/trad-frame.h @@ -1,6 +1,7 @@ /* Traditional frame unwind support, for GDB the GNU Debugger. - Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/tramp-frame.c b/contrib/gdb-7/gdb/tramp-frame.c index d1eb9d535c..feb00556af 100644 --- a/contrib/gdb-7/gdb/tramp-frame.c +++ b/contrib/gdb-7/gdb/tramp-frame.c @@ -1,6 +1,6 @@ /* Signal trampoline unwinder, for GDB the GNU Debugger. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -44,8 +44,8 @@ static struct trad_frame_cache * tramp_frame_cache (struct frame_info *this_frame, void **this_cache) { - CORE_ADDR pc = get_frame_pc (this_frame); struct tramp_frame_cache *tramp_cache = (*this_cache); + if (tramp_cache->trad_cache == NULL) { tramp_cache->trad_cache = trad_frame_cache_zalloc (this_frame); @@ -64,6 +64,7 @@ tramp_frame_this_id (struct frame_info *this_frame, { struct trad_frame_cache *trad_cache = tramp_frame_cache (this_frame, this_cache); + trad_frame_get_id (trad_cache, this_id); } @@ -74,6 +75,7 @@ tramp_frame_prev_register (struct frame_info *this_frame, { struct trad_frame_cache *trad_cache = tramp_frame_cache (this_frame, this_cache); + return trad_frame_get_register (trad_cache, this_frame, prev_regnum); } @@ -84,16 +86,19 @@ tramp_frame_start (const struct tramp_frame *tramp, struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int ti; + /* Search through the trampoline for one that matches the instruction sequence around PC. */ for (ti = 0; tramp->insn[ti].bytes != TRAMP_SENTINEL_INSN; ti++) { CORE_ADDR func = pc - tramp->insn_size * ti; int i; + for (i = 0; 1; i++) { gdb_byte buf[sizeof (tramp->insn[0])]; ULONGEST insn; + if (tramp->insn[i].bytes == TRAMP_SENTINEL_INSN) return func; if (!safe_frame_unwind_memory (this_frame, diff --git a/contrib/gdb-7/gdb/tramp-frame.h b/contrib/gdb-7/gdb/tramp-frame.h index 18a02463d9..49406674c5 100644 --- a/contrib/gdb-7/gdb/tramp-frame.h +++ b/contrib/gdb-7/gdb/tramp-frame.h @@ -1,6 +1,7 @@ /* Signal trampoline unwinder. - Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/tui/tui-command.c b/contrib/gdb-7/gdb/tui/tui-command.c index 13afb65db7..7974a500ba 100644 --- a/contrib/gdb-7/gdb/tui/tui-command.c +++ b/contrib/gdb-7/gdb/tui/tui-command.c @@ -1,7 +1,7 @@ /* Specific command window processing. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-command.h b/contrib/gdb-7/gdb/tui/tui-command.h index 96011ca95e..438b0880c8 100644 --- a/contrib/gdb-7/gdb/tui/tui-command.h +++ b/contrib/gdb-7/gdb/tui/tui-command.h @@ -1,6 +1,6 @@ /* Specific command window processing. - Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-data.c b/contrib/gdb-7/gdb/tui/tui-data.c index 46a218a7dd..22c00c9534 100644 --- a/contrib/gdb-7/gdb/tui/tui-data.c +++ b/contrib/gdb-7/gdb/tui/tui-data.c @@ -1,7 +1,7 @@ /* TUI data manipulation routines. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -402,6 +402,7 @@ tui_partial_win_by_name (char *name) if (tui_win_list[i] != 0) { char *cur_name = tui_win_name (&tui_win_list[i]->generic); + if (strlen (name) <= strlen (cur_name) && strncmp (name, cur_name, strlen (name)) == 0) win_info = tui_win_list[i]; diff --git a/contrib/gdb-7/gdb/tui/tui-data.h b/contrib/gdb-7/gdb/tui/tui-data.h index ae5e09adf8..dddbc2f74b 100644 --- a/contrib/gdb-7/gdb/tui/tui-data.h +++ b/contrib/gdb-7/gdb/tui/tui-data.h @@ -1,7 +1,7 @@ /* TUI data manipulation routines. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-disasm.c b/contrib/gdb-7/gdb/tui/tui-disasm.c index 85c0e8b680..6d8aa1b023 100644 --- a/contrib/gdb-7/gdb/tui/tui-disasm.c +++ b/contrib/gdb-7/gdb/tui/tui-disasm.c @@ -1,7 +1,7 @@ /* Disassembly display. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -21,6 +21,7 @@ along with this program. If not, see . */ #include "defs.h" +#include "arch-utils.h" #include "symtab.h" #include "breakpoint.h" #include "frame.h" @@ -36,6 +37,7 @@ #include "tui/tui-stack.h" #include "tui/tui-file.h" #include "tui/tui-disasm.h" +#include "progspace.h" #include "gdb_curses.h" @@ -212,6 +214,7 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc) for (i = 0; i < max_lines; i++) { size_t len = strlen (asm_lines[i].addr_string); + if (len > addr_size) addr_size = len; @@ -259,7 +262,8 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc) /* See whether there is a breakpoint installed. */ src->has_break = (!src->is_exec_point - && breakpoint_here_p (pc) != no_breakpoint_here); + && breakpoint_here_p (current_program_space->aspace, pc) + != no_breakpoint_here); xfree (asm_lines[i].addr_string); xfree (asm_lines[i].insn); @@ -328,7 +332,7 @@ tui_get_begin_asm_address (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p) { struct tui_gen_win_info *locator; struct tui_locator_element *element; - struct gdbarch *gdbarch = NULL; + struct gdbarch *gdbarch = get_current_arch (); CORE_ADDR addr; locator = tui_locator_win_info_ptr (); diff --git a/contrib/gdb-7/gdb/tui/tui-disasm.h b/contrib/gdb-7/gdb/tui/tui-disasm.h index 64aafedc4d..40479bef5e 100644 --- a/contrib/gdb-7/gdb/tui/tui-disasm.h +++ b/contrib/gdb-7/gdb/tui/tui-disasm.h @@ -1,6 +1,6 @@ /* Disassembly display. - Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-file.c b/contrib/gdb-7/gdb/tui/tui-file.c index b5f77a84b1..2e4e821b7f 100644 --- a/contrib/gdb-7/gdb/tui/tui-file.c +++ b/contrib/gdb-7/gdb/tui/tui-file.c @@ -1,5 +1,5 @@ /* UI_FILE - a generic STDIO like output stream. - Copyright (C) 1999, 2000, 2001, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -60,6 +60,7 @@ tui_file_new (void) { struct tui_stream *tui = XMALLOC (struct tui_stream); struct ui_file *file = ui_file_new (); + set_ui_file_data (file, tui, tui_file_delete); set_ui_file_flush (file, tui_file_flush); set_ui_file_fputs (file, tui_file_fputs); @@ -74,6 +75,7 @@ static void tui_file_delete (struct ui_file *file) { struct tui_stream *tmpstream = ui_file_data (file); + if (tmpstream->ts_magic != &tui_file_magic) internal_error (__FILE__, __LINE__, _("tui_file_delete: bad magic number")); @@ -90,6 +92,7 @@ tui_fileopen (FILE *stream) { struct ui_file *file = tui_file_new (); struct tui_stream *tmpstream = ui_file_data (file); + tmpstream->ts_streamtype = afile; tmpstream->ts_filestream = stream; tmpstream->ts_strbuf = NULL; @@ -102,6 +105,7 @@ tui_sfileopen (int n) { struct ui_file *file = tui_file_new (); struct tui_stream *tmpstream = ui_file_data (file); + tmpstream->ts_streamtype = astring; tmpstream->ts_filestream = NULL; if (n > 0) @@ -121,6 +125,7 @@ static int tui_file_isatty (struct ui_file *file) { struct tui_stream *stream = ui_file_data (file); + if (stream->ts_magic != &tui_file_magic) internal_error (__FILE__, __LINE__, _("tui_file_isatty: bad magic number")); @@ -134,6 +139,7 @@ static void tui_file_rewind (struct ui_file *file) { struct tui_stream *stream = ui_file_data (file); + if (stream->ts_magic != &tui_file_magic) internal_error (__FILE__, __LINE__, _("tui_file_rewind: bad magic number")); @@ -146,6 +152,7 @@ tui_file_put (struct ui_file *file, void *dest) { struct tui_stream *stream = ui_file_data (file); + if (stream->ts_magic != &tui_file_magic) internal_error (__FILE__, __LINE__, _("tui_file_put: bad magic number")); @@ -182,6 +189,7 @@ char * tui_file_get_strbuf (struct ui_file *file) { struct tui_stream *stream = ui_file_data (file); + if (stream->ts_magic != &tui_file_magic) internal_error (__FILE__, __LINE__, _("tui_file_get_strbuf: bad magic number")); @@ -196,6 +204,7 @@ tui_file_adjust_strbuf (int n, struct ui_file *file) { struct tui_stream *stream = ui_file_data (file); int non_null_chars; + if (stream->ts_magic != &tui_file_magic) internal_error (__FILE__, __LINE__, _("tui_file_adjust_strbuf: bad magic number")); @@ -223,6 +232,7 @@ static void tui_file_flush (struct ui_file *file) { struct tui_stream *stream = ui_file_data (file); + if (stream->ts_magic != &tui_file_magic) internal_error (__FILE__, __LINE__, _("tui_file_flush: bad magic number")); diff --git a/contrib/gdb-7/gdb/tui/tui-file.h b/contrib/gdb-7/gdb/tui/tui-file.h index 0c1566a693..7cf451d1d5 100644 --- a/contrib/gdb-7/gdb/tui/tui-file.h +++ b/contrib/gdb-7/gdb/tui/tui-file.h @@ -1,5 +1,6 @@ /* UI_FILE - a generic STDIO like output stream. - Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/tui/tui-hooks.c b/contrib/gdb-7/gdb/tui/tui-hooks.c index 7dee03e47e..f2706e9e63 100644 --- a/contrib/gdb-7/gdb/tui/tui-hooks.c +++ b/contrib/gdb-7/gdb/tui/tui-hooks.c @@ -1,6 +1,6 @@ /* GDB hooks for TUI. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -64,7 +64,7 @@ tui_new_objfile_hook (struct objfile* objfile) tui_display_main (); } -static int ATTR_FORMAT (printf, 1, 0) +static int ATTRIBUTE_PRINTF (1, 0) tui_query_hook (const char *msg, va_list argp) { int retval; diff --git a/contrib/gdb-7/gdb/tui/tui-hooks.h b/contrib/gdb-7/gdb/tui/tui-hooks.h index 74bf8be2ea..23c132e695 100644 --- a/contrib/gdb-7/gdb/tui/tui-hooks.h +++ b/contrib/gdb-7/gdb/tui/tui-hooks.h @@ -1,6 +1,6 @@ /* External/Public TUI hools header file, for GDB the GNU debugger. - Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/tui/tui-interp.c b/contrib/gdb-7/gdb/tui/tui-interp.c index 71f6656080..ae23a6c9a4 100644 --- a/contrib/gdb-7/gdb/tui/tui-interp.c +++ b/contrib/gdb-7/gdb/tui/tui-interp.c @@ -1,6 +1,6 @@ /* TUI Interpreter definitions for GDB, the GNU debugger. - Copyright (C) 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -45,11 +45,16 @@ tui_exit (void) tui_disable (); } +/* True if TUI is the top-level interpreter. */ +static int tui_is_toplevel = 0; + /* These implement the TUI interpreter. */ static void * tui_init (int top_level) { + tui_is_toplevel = top_level; + /* Install exit handler to leave the screen in a good shape. */ atexit (tui_exit); @@ -57,11 +62,24 @@ tui_init (int top_level) tui_initialize_io (); tui_initialize_win (); - tui_initialize_readline (); + if (ui_file_isatty (gdb_stdout)) + tui_initialize_readline (); return NULL; } +/* True if enabling the TUI is allowed. Example, if the top level + interpreter is MI, enabling curses will certainly lose. */ + +int +tui_allowed_p (void) +{ + /* Only if TUI is the top level interpreter. Also don't try to + setup curses (and print funny control characters) if we're not + outputting to a terminal. */ + return tui_is_toplevel && ui_file_isatty (gdb_stdout); +} + static int tui_resume (void *data) { @@ -151,6 +169,7 @@ tui_command_loop (void *data) while (1) { int result = catch_errors (gdb_do_one_event, 0, "", RETURN_MASK_ALL); + if (result < 0) break; @@ -204,7 +223,6 @@ _initialize_tui_interp (void) tui_display_prompt_p, tui_command_loop, }; - struct interp *tui_interp; /* Create a default uiout builder for the TUI. */ tui_out = tui_out_new (gdb_stdout); diff --git a/contrib/gdb-7/gdb/tui/tui-io.c b/contrib/gdb-7/gdb/tui/tui-io.c index a597f372e0..4370a7e0c0 100644 --- a/contrib/gdb-7/gdb/tui/tui-io.c +++ b/contrib/gdb-7/gdb/tui/tui-io.c @@ -1,7 +1,7 @@ /* TUI support I/O functions. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -303,7 +303,7 @@ tui_deprep_terminal (void) /* Read readline output pipe and feed the command window with it. Should be removed when readline is clean. */ static void -tui_readline_output (int code, gdb_client_data data) +tui_readline_output (int error, gdb_client_data data) { int size; char buf[256]; @@ -657,7 +657,7 @@ tui_getc (FILE *fp) #ifdef TUI_USE_PIPE_FOR_READLINE /* Flush readline output. */ - tui_readline_output (GDB_READABLE, 0); + tui_readline_output (0, 0); #endif ch = wgetch (w); diff --git a/contrib/gdb-7/gdb/tui/tui-io.h b/contrib/gdb-7/gdb/tui/tui-io.h index 43d72dbd97..0ee292ca5f 100644 --- a/contrib/gdb-7/gdb/tui/tui-io.h +++ b/contrib/gdb-7/gdb/tui/tui-io.h @@ -1,6 +1,6 @@ /* TUI support I/O functions. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-layout.c b/contrib/gdb-7/gdb/tui/tui-layout.c index 75edde4dbc..0c622b97b2 100644 --- a/contrib/gdb-7/gdb/tui/tui-layout.c +++ b/contrib/gdb-7/gdb/tui/tui-layout.c @@ -1,7 +1,7 @@ /* TUI layout window management. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -21,6 +21,7 @@ along with this program. If not, see . */ #include "defs.h" +#include "arch-utils.h" #include "command.h" #include "symtab.h" #include "frame.h" @@ -522,7 +523,7 @@ static void extract_display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p) { enum tui_layout_type cur_layout = tui_current_layout (); - struct gdbarch *gdbarch = NULL; + struct gdbarch *gdbarch = get_current_arch (); CORE_ADDR addr; CORE_ADDR pc; struct symtab_and_line cursal = get_current_source_symtab_and_line (); diff --git a/contrib/gdb-7/gdb/tui/tui-layout.h b/contrib/gdb-7/gdb/tui/tui-layout.h index b6c0d1cb43..70406fb5d0 100644 --- a/contrib/gdb-7/gdb/tui/tui-layout.h +++ b/contrib/gdb-7/gdb/tui/tui-layout.h @@ -1,6 +1,6 @@ /* TUI layout window management. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-main.c b/contrib/gdb-7/gdb/tui/tui-main.c index fd285600eb..f302bd6ebb 100644 --- a/contrib/gdb-7/gdb/tui/tui-main.c +++ b/contrib/gdb-7/gdb/tui/tui-main.c @@ -1,6 +1,7 @@ /* Main function for TUI gdb. - Copyright (C) 2002, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -26,6 +27,7 @@ int main (int argc, char **argv) { struct captured_main_args args; + memset (&args, 0, sizeof args); args.argc = argc; args.argv = argv; diff --git a/contrib/gdb-7/gdb/tui/tui-out.c b/contrib/gdb-7/gdb/tui/tui-out.c index f11f074b88..8cd6b88746 100644 --- a/contrib/gdb-7/gdb/tui/tui-out.c +++ b/contrib/gdb-7/gdb/tui/tui-out.c @@ -1,6 +1,6 @@ /* Output generating routines for GDB CLI. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions. @@ -23,195 +23,38 @@ #include "defs.h" #include "ui-out.h" +#include "cli-out.h" #include "tui.h" #include "gdb_string.h" #include "gdb_assert.h" -struct ui_out_data +struct tui_ui_out_data { - struct ui_file *stream; - int suppress_output; + struct cli_ui_out_data base; + int line; int start_of_line; }; -typedef struct ui_out_data tui_out_data; - -/* These are the CLI output functions. */ - -static void tui_table_begin (struct ui_out *uiout, - int nbrofcols, int nr_rows, - const char *tblid); -static void tui_table_body (struct ui_out *uiout); -static void tui_table_end (struct ui_out *uiout); -static void tui_table_header (struct ui_out *uiout, - int width, enum ui_align alig, - const char *col_name, - const char *colhdr); -static void tui_begin (struct ui_out *uiout, - enum ui_out_type type, - int level, const char *lstid); -static void tui_end (struct ui_out *uiout, - enum ui_out_type type, int level); -static void tui_field_int (struct ui_out *uiout, - int fldno, int width, - enum ui_align alig, - const char *fldname, int value); -static void tui_field_skip (struct ui_out *uiout, - int fldno, int width, - enum ui_align alig, - const char *fldname); -static void tui_field_string (struct ui_out *uiout, - int fldno, int width, - enum ui_align alig, - const char *fldname, - const char *string); -static void tui_field_fmt (struct ui_out *uiout, int fldno, - int width, enum ui_align align, - const char *fldname, - const char *format, - va_list args) - ATTR_FORMAT (printf, 6, 0); -static void tui_spaces (struct ui_out *uiout, int numspaces); -static void tui_text (struct ui_out *uiout, const char *string); -static void tui_message (struct ui_out *uiout, int verbosity, - const char *format, va_list args) - ATTR_FORMAT (printf, 3, 0); -static void tui_wrap_hint (struct ui_out *uiout, - char *identstring); -static void tui_flush (struct ui_out *uiout); - -/* This is the CLI ui-out implementation functions vector. */ - -/* FIXME: This can be initialized dynamically after default is set to - handle initial output in main.c. */ - -static struct ui_out_impl tui_ui_out_impl = { - tui_table_begin, - tui_table_body, - tui_table_end, - tui_table_header, - tui_begin, - tui_end, - tui_field_int, - tui_field_skip, - tui_field_string, - tui_field_fmt, - tui_spaces, - tui_text, - tui_message, - tui_wrap_hint, - tui_flush, - NULL, - 0, /* Does not need MI hacks (i.e. needs CLI hacks). */ -}; - -/* Prototypes for local functions. */ - -extern void _initialize_tui_out (void); - -static void field_separator (void); - -static void out_field_fmt (struct ui_out *uiout, - int fldno, - const char *fldname, - const char *format,...) - ATTR_FORMAT (printf, 4, 5); - -/* local variables */ - -/* (none yet) */ - -/* Mark beginning of a table. */ - -void -tui_table_begin (struct ui_out *uiout, - int nbrofcols, - int nr_rows, - const char *tblid) -{ - tui_out_data *data = ui_out_data (uiout); - if (nr_rows == 0) - data->suppress_output = 1; - else - /* Only the table suppresses the output and, fortunately, a table - is not a recursive data structure. */ - gdb_assert (data->suppress_output == 0); -} - -/* Mark beginning of a table body. */ - -void -tui_table_body (struct ui_out *uiout) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; - /* First, close the table header line. */ - tui_text (uiout, "\n"); -} - -/* Mark end of a table. */ - -void -tui_table_end (struct ui_out *uiout) -{ - tui_out_data *data = ui_out_data (uiout); - data->suppress_output = 0; -} - -/* Specify table header. */ - -void -tui_table_header (struct ui_out *uiout, - int width, - enum ui_align alignment, - const char *col_name, - const char *colhdr) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; - tui_field_string (uiout, 0, width, alignment, 0, colhdr); -} +typedef struct tui_ui_out_data tui_out_data; -/* Mark beginning of a list. */ +/* This is the TUI ui-out implementation functions vector. It is + initialized below in _initialize_tui_out, inheriting the CLI + version, and overriding a few methods. */ -void -tui_begin (struct ui_out *uiout, - enum ui_out_type type, - int level, - const char *id) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; -} - -/* Mark end of a list. */ - -void -tui_end (struct ui_out *uiout, - enum ui_out_type type, - int level) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; -} +static struct ui_out_impl tui_ui_out_impl; /* Output an int field. */ -void +static void tui_field_int (struct ui_out *uiout, int fldno, int width, enum ui_align alignment, const char *fldname, int value) { - char buffer[20]; /* FIXME: how many chars long a %d can become? */ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) + + if (data->base.suppress_output) return; /* Don't print line number, keep it for later. */ @@ -222,39 +65,24 @@ tui_field_int (struct ui_out *uiout, return; } data->start_of_line ++; - sprintf (buffer, "%d", value); - tui_field_string (uiout, fldno, width, alignment, fldname, buffer); -} - -/* Used to ommit a field. */ -void -tui_field_skip (struct ui_out *uiout, - int fldno, int width, - enum ui_align alignment, - const char *fldname) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; - tui_field_string (uiout, fldno, width, alignment, fldname, ""); + (*cli_ui_out_impl.field_int) (uiout, fldno, + width, alignment, fldname, value); } -/* Other specific tui_field_* end up here so alignment and field - separators are both handled by tui_field_string. */ +/* Other cli_field_* end up here so alignment and field separators are + both handled by tui_field_string. */ -void +static void tui_field_string (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, const char *string) { - int before = 0; - int after = 0; - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) + + if (data->base.suppress_output) return; if (fldname && data->line > 0 && strcmp (fldname, "file") == 0) @@ -267,44 +95,16 @@ tui_field_string (struct ui_out *uiout, return; } - data->start_of_line ++; - if ((align != ui_noalign) && string) - { - before = width - strlen (string); - if (before <= 0) - before = 0; - else - { - if (align == ui_right) - after = 0; - else if (align == ui_left) - { - after = before; - before = 0; - } - else - /* ui_center */ - { - after = before / 2; - before -= after; - } - } - } + data->start_of_line++; - if (before) - ui_out_spaces (uiout, before); - if (string) - out_field_fmt (uiout, fldno, fldname, "%s", string); - if (after) - ui_out_spaces (uiout, after); - - if (align != ui_noalign) - field_separator (); + (*cli_ui_out_impl.field_string) (uiout, fldno, + width, align, + fldname, string); } /* This is the only field function that does not align. */ -void +static void tui_field_fmt (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, @@ -312,30 +112,23 @@ tui_field_fmt (struct ui_out *uiout, int fldno, va_list args) { tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; - data->start_of_line ++; - vfprintf_filtered (data->stream, format, args); + if (data->base.suppress_output) + return; - if (align != ui_noalign) - field_separator (); -} + data->start_of_line++; -void -tui_spaces (struct ui_out *uiout, int numspaces) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; - print_spaces_filtered (numspaces, data->stream); + (*cli_ui_out_impl.field_fmt) (uiout, fldno, + width, align, + fldname, format, args); } -void +static void tui_text (struct ui_out *uiout, const char *string) { tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) + + if (data->base.suppress_output) return; data->start_of_line ++; if (data->line > 0) @@ -349,86 +142,40 @@ tui_text (struct ui_out *uiout, const char *string) } if (strchr (string, '\n')) data->start_of_line = 0; - fputs_filtered (string, data->stream); -} - -void -tui_message (struct ui_out *uiout, - int verbosity, - const char *format, - va_list args) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; - if (ui_out_get_verblvl (uiout) >= verbosity) - vfprintf_unfiltered (data->stream, format, args); -} - -void -tui_wrap_hint (struct ui_out *uiout, char *identstring) -{ - tui_out_data *data = ui_out_data (uiout); - if (data->suppress_output) - return; - wrap_here (identstring); -} - -void -tui_flush (struct ui_out *uiout) -{ - tui_out_data *data = ui_out_data (uiout); - gdb_flush (data->stream); -} - -/* Local functions. */ - -/* Like tui_field_fmt, but takes a variable number of args and makes a - va_list and does not insert a separator. */ - -/* VARARGS */ -static void -out_field_fmt (struct ui_out *uiout, - int fldno, - const char *fldname, - const char *format,...) -{ - tui_out_data *data = ui_out_data (uiout); - va_list args; - - va_start (args, format); - vfprintf_filtered (data->stream, format, args); - va_end (args); + (*cli_ui_out_impl.text) (uiout, string); } -/* Access to ui_out format private members. */ - -static void -field_separator (void) -{ - tui_out_data *data = ui_out_data (uiout); - fputc_filtered (' ', data->stream); -} - -/* Initalize private members at startup. */ - struct ui_out * tui_out_new (struct ui_file *stream) { int flags = 0; tui_out_data *data = XMALLOC (tui_out_data); - data->stream = stream; - data->suppress_output = 0; + + /* Initialize base "class". */ + cli_out_data_ctor (&data->base, stream); + + /* Initialize our fields. */ data->line = -1; data->start_of_line = 0; + return ui_out_new (&tui_ui_out_impl, data, flags); } /* Standard gdb initialization hook. */ + +extern void _initialize_tui_out (void); + void _initialize_tui_out (void) { - /* Nothing needs to be done. */ + /* Inherit the CLI version. */ + tui_ui_out_impl = cli_ui_out_impl; + + /* Override a few methods. */ + tui_ui_out_impl.field_int = tui_field_int; + tui_ui_out_impl.field_string = tui_field_string; + tui_ui_out_impl.field_fmt = tui_field_fmt; + tui_ui_out_impl.text = tui_text; } diff --git a/contrib/gdb-7/gdb/tui/tui-regs.c b/contrib/gdb-7/gdb/tui/tui-regs.c index bfb66f820f..5df09af9e5 100644 --- a/contrib/gdb-7/gdb/tui/tui-regs.c +++ b/contrib/gdb-7/gdb/tui/tui-regs.c @@ -1,7 +1,7 @@ /* TUI display registers in window. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -321,7 +321,7 @@ tui_display_registers_from (int start_element_no) && display_info->regs_content_count > 0) { int i = start_element_no; - int j, value_chars_wide, item_win_width, cur_y; + int j, item_win_width, cur_y; int max_len = 0; for (i = 0; i < display_info->regs_content_count; i++) @@ -504,7 +504,7 @@ tui_check_register_values (struct frame_info *frame) tui_show_registers (display_info->current_group); else { - int i, j; + int i; for (i = 0; (i < display_info->regs_content_count); i++) { @@ -541,7 +541,12 @@ tui_display_register (struct tui_data_element *data, int i; if (data->highlight) - wstandout (win_info->handle); + /* We ignore the return value, casting it to void in order to avoid + a compiler warning. The warning itself was introduced by a patch + to ncurses 5.7 dated 2009-08-29, changing this macro to expand + to code that causes the compiler to generate an unused-value + warning. */ + (void) wstandout (win_info->handle); wmove (win_info->handle, 0, 0); for (i = 1; i < win_info->width; i++) @@ -551,7 +556,12 @@ tui_display_register (struct tui_data_element *data, waddstr (win_info->handle, data->content); if (data->highlight) - wstandend (win_info->handle); + /* We ignore the return value, casting it to void in order to avoid + a compiler warning. The warning itself was introduced by a patch + to ncurses 5.7 dated 2009-08-29, changing this macro to expand + to code that causes the compiler to generate an unused-value + warning. */ + (void) wstandend (win_info->handle); tui_refresh_win (win_info); } } @@ -674,7 +684,6 @@ tui_register_format (struct frame_info *frame, const char *name; struct cleanup *cleanups; char *p, *s; - int pos; struct type *type = register_type (gdbarch, regnum); name = gdbarch_register_name (gdbarch, regnum); @@ -734,8 +743,8 @@ tui_get_register (struct frame_info *frame, if (target_has_registers) { gdb_byte buf[MAX_REGISTER_SIZE]; - get_frame_register (frame, regnum, buf); + get_frame_register (frame, regnum, buf); if (changedp) { struct gdbarch *gdbarch = get_frame_arch (frame); diff --git a/contrib/gdb-7/gdb/tui/tui-regs.h b/contrib/gdb-7/gdb/tui/tui-regs.h index a86a84829a..dbed97a66a 100644 --- a/contrib/gdb-7/gdb/tui/tui-regs.h +++ b/contrib/gdb-7/gdb/tui/tui-regs.h @@ -1,6 +1,6 @@ /* TUI display registers in window. - Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-source.c b/contrib/gdb-7/gdb/tui/tui-source.c index 057383f8bf..ddad6a176f 100644 --- a/contrib/gdb-7/gdb/tui/tui-source.c +++ b/contrib/gdb-7/gdb/tui/tui-source.c @@ -1,7 +1,7 @@ /* TUI display source window. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -64,6 +64,7 @@ tui_set_source_content (struct symtab *s, if (!noerror) { char *name = alloca (strlen (s->filename) + 100); + sprintf (name, "%s:%d", s->filename, line_no); print_sys_errmsg (name, errno); } @@ -116,7 +117,7 @@ tui_set_source_content (struct symtab *s, while (cur_line < nlines) { struct tui_win_element *element = (struct tui_win_element *) - TUI_SRC_WIN->generic.content[cur_line]; + TUI_SRC_WIN->generic.content[cur_line]; /* Get the first character in the line. */ c = fgetc (stream); @@ -263,6 +264,7 @@ tui_set_source_content_nil (struct tui_win_info *win_info, struct tui_win_element *element = (struct tui_win_element *) win_info->generic.content[curr_line]; + element->which_element.source.line_or_addr.loa = LOA_LINE; element->which_element.source.line_or_addr.u.line_no = 0; element->which_element.source.is_exec_point = FALSE; diff --git a/contrib/gdb-7/gdb/tui/tui-source.h b/contrib/gdb-7/gdb/tui/tui-source.h index 7d6bb2e641..7464bd2036 100644 --- a/contrib/gdb-7/gdb/tui/tui-source.h +++ b/contrib/gdb-7/gdb/tui/tui-source.h @@ -1,6 +1,6 @@ /* TUI display source window. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-stack.c b/contrib/gdb-7/gdb/tui/tui-stack.c index 54d091df48..7aaf54444f 100644 --- a/contrib/gdb-7/gdb/tui/tui-stack.c +++ b/contrib/gdb-7/gdb/tui/tui-stack.c @@ -1,7 +1,7 @@ /* TUI display locator. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -218,7 +218,8 @@ tui_get_function_from_frame (struct frame_info *fi) struct ui_file *stream = tui_sfileopen (256); char *p; - print_address_symbolic (get_frame_pc (fi), stream, demangle, ""); + print_address_symbolic (get_frame_arch (fi), get_frame_pc (fi), + stream, demangle, ""); p = tui_file_get_strbuf (stream); /* Use simple heuristics to isolate the function name. The symbol @@ -255,10 +256,15 @@ tui_show_locator_content (void) string = tui_make_status_line (&element->which_element.locator); wmove (locator->handle, 0, 0); - wstandout (locator->handle); + /* We ignore the return value from wstandout and wstandend, casting + them to void in order to avoid a compiler warning. The warning + itself was introduced by a patch to ncurses 5.7 dated 2009-08-29, + changing these macro to expand to code that causes the compiler + to generate an unused-value warning. */ + (void) wstandout (locator->handle); waddstr (locator->handle, string); wclrtoeol (locator->handle); - wstandend (locator->handle); + (void) wstandend (locator->handle); tui_refresh_win (locator); wmove (locator->handle, 0, 0); xfree (string); @@ -349,6 +355,7 @@ tui_show_frame_info (struct frame_info *fi) for (i = 0; i < (tui_source_windows ())->count; i++) { union tui_which_element *item; + win_info = (tui_source_windows ())->list[i]; item = &((struct tui_win_element *) locator->content[0])->which_element; @@ -372,6 +379,7 @@ tui_show_frame_info (struct frame_info *fi) if (win_info == TUI_SRC_WIN) { struct tui_line_or_address l; + l.loa = LOA_LINE; l.u.line_no = start_line; if (!(source_already_displayed @@ -389,6 +397,7 @@ tui_show_frame_info (struct frame_info *fi) if (win_info == TUI_DISASM_WIN) { struct tui_line_or_address a; + a.loa = LOA_ADDRESS; a.u.addr = low; if (!tui_addr_is_displayed (item->locator.addr, win_info, TRUE)) diff --git a/contrib/gdb-7/gdb/tui/tui-stack.h b/contrib/gdb-7/gdb/tui/tui-stack.h index 17c098e981..a719e712a2 100644 --- a/contrib/gdb-7/gdb/tui/tui-stack.h +++ b/contrib/gdb-7/gdb/tui/tui-stack.h @@ -1,6 +1,6 @@ /* TUI display locator. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-win.c b/contrib/gdb-7/gdb/tui/tui-win.c index 11944fe10e..d7d5e3934e 100644 --- a/contrib/gdb-7/gdb/tui/tui-win.c +++ b/contrib/gdb-7/gdb/tui/tui-win.c @@ -1,7 +1,7 @@ /* TUI window generic functions. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -356,7 +356,6 @@ extern initialize_file_ftype _initialize_tui_win; void _initialize_tui_win (void) { - struct cmd_list_element *c; static struct cmd_list_element *tui_setlist; static struct cmd_list_element *tui_showlist; @@ -828,6 +827,7 @@ tui_initialize_win (void) #ifdef SIGWINCH #ifdef HAVE_SIGACTION struct sigaction old_winch; + memset (&old_winch, 0, sizeof (old_winch)); old_winch.sa_handler = &tui_sigwinch_handler; sigaction (SIGWINCH, &old_winch, NULL); @@ -1242,6 +1242,7 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info, if ((TUI_CMD_WIN->generic.height + diff) < 1) { int i; + for (i = TUI_CMD_WIN->generic.height + diff; (i < 1); i++) if (primary_win_info == first_win) diff --git a/contrib/gdb-7/gdb/tui/tui-win.h b/contrib/gdb-7/gdb/tui/tui-win.h index 34cefb4c19..950d946e45 100644 --- a/contrib/gdb-7/gdb/tui/tui-win.h +++ b/contrib/gdb-7/gdb/tui/tui-win.h @@ -1,6 +1,6 @@ /* TUI window generic functions. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-windata.c b/contrib/gdb-7/gdb/tui/tui-windata.c index b852065973..54baf84a14 100644 --- a/contrib/gdb-7/gdb/tui/tui-windata.c +++ b/contrib/gdb-7/gdb/tui/tui-windata.c @@ -1,7 +1,7 @@ /* Data/register window display. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -168,7 +168,6 @@ tui_display_data_from_line (int line_no) tui_display_registers_from_line (_line_no, TRUE); else { - int element_no, start_line_no; int regs_last_line = tui_last_regs_line_no (); @@ -283,8 +282,6 @@ tui_vertical_data_scroll (enum tui_scroll_direction scroll_direction, if (first_line >= 0) { - int last_element_no, last_line; - if (scroll_direction == FORWARD_SCROLL) first_line += num_to_scroll; else diff --git a/contrib/gdb-7/gdb/tui/tui-windata.h b/contrib/gdb-7/gdb/tui/tui-windata.h index e72bb294a7..7d881aa319 100644 --- a/contrib/gdb-7/gdb/tui/tui-windata.h +++ b/contrib/gdb-7/gdb/tui/tui-windata.h @@ -1,6 +1,6 @@ /* Data/register window display. - Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-wingeneral.c b/contrib/gdb-7/gdb/tui/tui-wingeneral.c index 39b7118d2b..0af6a8cb64 100644 --- a/contrib/gdb-7/gdb/tui/tui-wingeneral.c +++ b/contrib/gdb-7/gdb/tui/tui-wingeneral.c @@ -1,6 +1,6 @@ /* General window behavior. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-wingeneral.h b/contrib/gdb-7/gdb/tui/tui-wingeneral.h index 8b96bba9c8..5b4283ecc3 100644 --- a/contrib/gdb-7/gdb/tui/tui-wingeneral.h +++ b/contrib/gdb-7/gdb/tui/tui-wingeneral.h @@ -1,6 +1,6 @@ /* General window behavior. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui-winsource.c b/contrib/gdb-7/gdb/tui/tui-winsource.c index 4b7d744b13..2e07fc8404 100644 --- a/contrib/gdb-7/gdb/tui/tui-winsource.c +++ b/contrib/gdb-7/gdb/tui/tui-winsource.c @@ -1,7 +1,7 @@ /* TUI display source/assembly window. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -221,7 +221,8 @@ tui_clear_source_content (struct tui_win_info *win_info, for (i = 0; i < win_info->generic.content_size; i++) { struct tui_win_element *element = - (struct tui_win_element *) win_info->generic.content[i]; + (struct tui_win_element *) win_info->generic.content[i]; + element->which_element.source.has_break = FALSE; element->which_element.source.is_exec_point = FALSE; } @@ -328,6 +329,7 @@ tui_horizontal_source_scroll (struct tui_win_info *win_info, if (win_info->generic.type == SRC_WIN) { struct symtab_and_line cursal = get_current_source_symtab_and_line (); + if (cursal.symtab == NULL) s = find_pc_symtab (get_frame_pc (get_selected_frame (NULL))); else diff --git a/contrib/gdb-7/gdb/tui/tui-winsource.h b/contrib/gdb-7/gdb/tui/tui-winsource.h index 6fae8d8c57..768906d999 100644 --- a/contrib/gdb-7/gdb/tui/tui-winsource.h +++ b/contrib/gdb-7/gdb/tui/tui-winsource.h @@ -1,6 +1,6 @@ /* TUI display source/assembly window. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. diff --git a/contrib/gdb-7/gdb/tui/tui.c b/contrib/gdb-7/gdb/tui/tui.c index 7c0d0ce45f..fb736a991a 100644 --- a/contrib/gdb-7/gdb/tui/tui.c +++ b/contrib/gdb-7/gdb/tui/tui.c @@ -1,7 +1,7 @@ /* General functions for the WDB TUI. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -244,6 +244,7 @@ tui_rl_command_key (int count, int key) /* Must save the command because it can be modified by execute_command. */ char *cmd = alloca (strlen (tui_commands[i].cmd) + 1); + strcpy (cmd, tui_commands[i].cmd); execute_command (cmd, TRUE); return 0; @@ -364,6 +365,9 @@ tui_initialize_readline (void) void tui_enable (void) { + if (!tui_allowed_p ()) + error (_("TUI mode not allowed")); + if (tui_active) return; @@ -527,6 +531,7 @@ void tui_show_source (const char *file, int line) { struct symtab_and_line cursal = get_current_source_symtab_and_line (); + /* Make sure that the source window is displayed. */ tui_add_win_to_layout (SRC_WIN); diff --git a/contrib/gdb-7/gdb/tui/tui.h b/contrib/gdb-7/gdb/tui/tui.h index 22ff02a660..7ece1b5411 100644 --- a/contrib/gdb-7/gdb/tui/tui.h +++ b/contrib/gdb-7/gdb/tui/tui.h @@ -1,6 +1,6 @@ /* External/Public TUI Header File. - Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009 + Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Hewlett-Packard Company. @@ -65,6 +65,10 @@ extern int tui_get_command_dimension (unsigned int *width, key shortcut. */ extern void tui_initialize_readline (void); +/* True if enabling the TUI is allowed. Example, if the top level + interpreter is MI, enabling curses will certainly lose. */ +extern int tui_allowed_p (void); + /* Enter in the tui mode (curses). */ extern void tui_enable (void); diff --git a/contrib/gdb-7/gdb/typeprint.c b/contrib/gdb-7/gdb/typeprint.c index f090231f36..ce9f551ba2 100644 --- a/contrib/gdb-7/gdb/typeprint.c +++ b/contrib/gdb-7/gdb/typeprint.c @@ -1,7 +1,8 @@ /* Language independent support for printing types for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1998, 1999, - 2000, 2001, 2003, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2000, 2001, 2003, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/typeprint.h b/contrib/gdb-7/gdb/typeprint.h index f56131067d..6ee65cf1e6 100644 --- a/contrib/gdb-7/gdb/typeprint.h +++ b/contrib/gdb-7/gdb/typeprint.h @@ -1,6 +1,6 @@ /* Language independent support for printing types for GDB, the GNU debugger. - Copyright (C) 1986, 1988, 1989, 1991-1993, 1999, 2000, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1986, 1988, 1989, 1991-1993, 1999, 2000, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -20,10 +20,13 @@ #ifndef TYPEPRINT_H #define TYPEPRINT_H +enum language; struct ui_file; void print_type_scalar (struct type * type, LONGEST, struct ui_file *); void c_type_print_varspec_suffix (struct type *, struct ui_file *, int, int, int); + +void c_type_print_args (struct type *, struct ui_file *, int, enum language); #endif diff --git a/contrib/gdb-7/gdb/ui-file.c b/contrib/gdb-7/gdb/ui-file.c index 527917c414..f40bfdb89f 100644 --- a/contrib/gdb-7/gdb/ui-file.c +++ b/contrib/gdb-7/gdb/ui-file.c @@ -1,6 +1,6 @@ /* UI_FILE - a generic STDIO like output stream. - Copyright (C) 1999, 2000, 2001, 2002, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -22,7 +22,9 @@ #include "defs.h" #include "ui-file.h" +#include "gdb_obstack.h" #include "gdb_string.h" +#include "gdb_select.h" #include @@ -54,6 +56,7 @@ struct ui_file * ui_file_new (void) { struct ui_file *file = xmalloc (sizeof (struct ui_file)); + file->magic = &ui_file_magic; set_ui_file_data (file, NULL, null_file_delete); set_ui_file_flush (file, null_file_flush); @@ -117,6 +120,7 @@ null_file_write (struct ui_file *file, is possible to clean up that code. */ int i; char b[2]; + b[1] = '\0'; for (i = 0; i < sizeof_buf; i++) { @@ -263,7 +267,7 @@ set_ui_file_data (struct ui_file *file, void *data, } /* ui_file utility function for converting a ``struct ui_file'' into - a memory buffer''. */ + a memory buffer. */ struct accumulated_ui_file { @@ -275,6 +279,7 @@ static void do_ui_file_xstrdup (void *context, const char *buffer, long length) { struct accumulated_ui_file *acc = context; + if (acc->buffer == NULL) acc->buffer = xmalloc (length + 1); else @@ -288,6 +293,7 @@ char * ui_file_xstrdup (struct ui_file *file, long *length) { struct accumulated_ui_file acc; + acc.buffer = NULL; acc.length = 0; ui_file_put (file, do_ui_file_xstrdup, &acc); @@ -297,6 +303,24 @@ ui_file_xstrdup (struct ui_file *file, long *length) *length = acc.length; return acc.buffer; } + +static void +do_ui_file_obsavestring (void *context, const char *buffer, long length) +{ + struct obstack *obstack = (struct obstack *) context; + + obstack_grow (obstack, buffer, length); +} + +char * +ui_file_obsavestring (struct ui_file *file, struct obstack *obstack, + long *length) +{ + ui_file_put (file, do_ui_file_obsavestring, obstack); + *length = obstack_object_size (obstack); + obstack_1grow (obstack, '\0'); + return obstack_finish (obstack); +} /* A pure memory based ``struct ui_file'' that can be used an output buffer. The buffers accumulated contents are available via @@ -322,6 +346,7 @@ mem_file_new (void) { struct mem_file *stream = XMALLOC (struct mem_file); struct ui_file *file = ui_file_new (); + set_ui_file_data (file, stream, mem_file_delete); set_ui_file_rewind (file, mem_file_rewind); set_ui_file_put (file, mem_file_put); @@ -337,6 +362,7 @@ static void mem_file_delete (struct ui_file *file) { struct mem_file *stream = ui_file_data (file); + if (stream->magic != &mem_file_magic) internal_error (__FILE__, __LINE__, _("mem_file_delete: bad magic number")); @@ -355,6 +381,7 @@ static void mem_file_rewind (struct ui_file *file) { struct mem_file *stream = ui_file_data (file); + if (stream->magic != &mem_file_magic) internal_error (__FILE__, __LINE__, _("mem_file_rewind: bad magic number")); @@ -367,6 +394,7 @@ mem_file_put (struct ui_file *file, void *dest) { struct mem_file *stream = ui_file_data (file); + if (stream->magic != &mem_file_magic) internal_error (__FILE__, __LINE__, _("mem_file_put: bad magic number")); @@ -380,6 +408,7 @@ mem_file_write (struct ui_file *file, long length_buffer) { struct mem_file *stream = ui_file_data (file); + if (stream->magic != &mem_file_magic) internal_error (__FILE__, __LINE__, _("mem_file_write: bad magic number")); @@ -393,6 +422,7 @@ mem_file_write (struct ui_file *file, else { int new_length = stream->length_buffer + length_buffer; + if (new_length >= stream->sizeof_buffer) { stream->sizeof_buffer = new_length; @@ -428,6 +458,7 @@ stdio_file_new (FILE *file, int close_p) { struct ui_file *ui_file = ui_file_new (); struct stdio_file *stdio = xmalloc (sizeof (struct stdio_file)); + stdio->magic = &stdio_file_magic; stdio->file = file; stdio->close_p = close_p; @@ -444,6 +475,7 @@ static void stdio_file_delete (struct ui_file *file) { struct stdio_file *stdio = ui_file_data (file); + if (stdio->magic != &stdio_file_magic) internal_error (__FILE__, __LINE__, _("stdio_file_delete: bad magic number")); @@ -458,6 +490,7 @@ static void stdio_file_flush (struct ui_file *file) { struct stdio_file *stdio = ui_file_data (file); + if (stdio->magic != &stdio_file_magic) internal_error (__FILE__, __LINE__, _("stdio_file_flush: bad magic number")); @@ -468,9 +501,24 @@ static long stdio_file_read (struct ui_file *file, char *buf, long length_buf) { struct stdio_file *stdio = ui_file_data (file); + if (stdio->magic != &stdio_file_magic) internal_error (__FILE__, __LINE__, _("stdio_file_read: bad magic number")); + + /* For the benefit of Windows, call gdb_select before reading from + the file. Wait until at least one byte of data is available. + Control-C can interrupt gdb_select, but not read. */ + { + int fd = fileno (stdio->file); + + fd_set readfds; + FD_ZERO (&readfds); + FD_SET (fd, &readfds); + if (gdb_select (fd + 1, &readfds, NULL, NULL, NULL) == -1) + return -1; + } + return read (fileno (stdio->file), buf, length_buf); } @@ -478,6 +526,7 @@ static void stdio_file_write (struct ui_file *file, const char *buf, long length_buf) { struct stdio_file *stdio = ui_file_data (file); + if (stdio->magic != &stdio_file_magic) internal_error (__FILE__, __LINE__, _("stdio_file_write: bad magic number")); @@ -490,6 +539,7 @@ static void stdio_file_fputs (const char *linebuffer, struct ui_file *file) { struct stdio_file *stdio = ui_file_data (file); + if (stdio->magic != &stdio_file_magic) internal_error (__FILE__, __LINE__, _("stdio_file_fputs: bad magic number")); @@ -502,6 +552,7 @@ static int stdio_file_isatty (struct ui_file *file) { struct stdio_file *stdio = ui_file_data (file); + if (stdio->magic != &stdio_file_magic) internal_error (__FILE__, __LINE__, _("stdio_file_isatty: bad magic number")); @@ -520,6 +571,7 @@ struct ui_file * gdb_fopen (char *name, char *mode) { FILE *f = fopen (name, mode); + if (f == NULL) return NULL; return stdio_file_new (f, 1); @@ -548,6 +600,7 @@ tee_file_new (struct ui_file *one, int close_one, { struct ui_file *ui_file = ui_file_new (); struct tee_file *tee = xmalloc (sizeof (struct tee_file)); + tee->magic = &tee_file_magic; tee->one = one; tee->two = two; @@ -565,6 +618,7 @@ static void tee_file_delete (struct ui_file *file) { struct tee_file *tee = ui_file_data (file); + if (tee->magic != &tee_file_magic) internal_error (__FILE__, __LINE__, _("tee_file_delete: bad magic number")); @@ -580,6 +634,7 @@ static void tee_file_flush (struct ui_file *file) { struct tee_file *tee = ui_file_data (file); + if (tee->magic != &tee_file_magic) internal_error (__FILE__, __LINE__, _("tee_file_flush: bad magic number")); @@ -591,6 +646,7 @@ static void tee_file_write (struct ui_file *file, const char *buf, long length_buf) { struct tee_file *tee = ui_file_data (file); + if (tee->magic != &tee_file_magic) internal_error (__FILE__, __LINE__, _("tee_file_write: bad magic number")); @@ -602,6 +658,7 @@ static void tee_file_fputs (const char *linebuffer, struct ui_file *file) { struct tee_file *tee = ui_file_data (file); + if (tee->magic != &tee_file_magic) internal_error (__FILE__, __LINE__, _("tee_file_fputs: bad magic number")); @@ -613,8 +670,10 @@ static int tee_file_isatty (struct ui_file *file) { struct tee_file *tee = ui_file_data (file); + if (tee->magic != &tee_file_magic) internal_error (__FILE__, __LINE__, _("tee_file_isatty: bad magic number")); - return (0); + + return ui_file_isatty (tee->one); } diff --git a/contrib/gdb-7/gdb/ui-file.h b/contrib/gdb-7/gdb/ui-file.h index bf9915c01a..bb94f4bdd3 100644 --- a/contrib/gdb-7/gdb/ui-file.h +++ b/contrib/gdb-7/gdb/ui-file.h @@ -1,5 +1,6 @@ /* UI_FILE - a generic STDIO like output stream. - Copyright (C) 1999, 2000, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. @@ -19,6 +20,7 @@ #ifndef UI_FILE_H #define UI_FILE_H +struct obstack; struct ui_file; /* Create a generic ui_file object with null methods. */ @@ -77,7 +79,10 @@ extern void ui_file_put (struct ui_file *src, ui_file_put_method_ftype *write, v minus that appended NUL. */ extern char *ui_file_xstrdup (struct ui_file *file, long *length); - +/* Similar to ui_file_xstrdup, but return a new string allocated on + OBSTACK. */ +extern char *ui_file_obsavestring (struct ui_file *file, + struct obstack *obstack, long *length); extern long ui_file_read (struct ui_file *file, char *buf, long length_buf); diff --git a/contrib/gdb-7/gdb/ui-out.c b/contrib/gdb-7/gdb/ui-out.c index 19a464448c..4d3bf0cd34 100644 --- a/contrib/gdb-7/gdb/ui-out.c +++ b/contrib/gdb-7/gdb/ui-out.c @@ -1,6 +1,6 @@ /* Output generating routines for GDB. - Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions. @@ -44,7 +44,7 @@ struct ui_out_hdr is always available. Stack/nested level 0 is reserved for the top-level result. */ -enum { MAX_UI_OUT_LEVELS = 6 }; +enum { MAX_UI_OUT_LEVELS = 8 }; struct ui_out_level { @@ -100,7 +100,7 @@ struct ui_out int flags; /* specific implementation of ui-out */ struct ui_out_impl *impl; - struct ui_out_data *data; + void *data; /* Sub structure tracking the ui-out depth. */ int level; @@ -124,6 +124,7 @@ push_level (struct ui_out *uiout, const char *id) { struct ui_out_level *current; + /* We had better not overflow the buffer. */ uiout->level++; gdb_assert (uiout->level >= 0 && uiout->level < MAX_UI_OUT_LEVELS); @@ -177,12 +178,12 @@ static void default_field_fmt (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, const char *format, - va_list args) ATTR_FORMAT (printf, 6, 0); + va_list args) ATTRIBUTE_PRINTF (6, 0); static void default_spaces (struct ui_out *uiout, int numspaces); static void default_text (struct ui_out *uiout, const char *string); static void default_message (struct ui_out *uiout, int verbosity, const char *format, - va_list args) ATTR_FORMAT (printf, 3, 0); + va_list args) ATTRIBUTE_PRINTF (3, 0); static void default_wrap_hint (struct ui_out *uiout, char *identstring); static void default_flush (struct ui_out *uiout); @@ -242,18 +243,15 @@ static void uo_field_int (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, int value); static void uo_field_skip (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname); -static void uo_field_string (struct ui_out *uiout, int fldno, int width, - enum ui_align align, const char *fldname, - const char *string); static void uo_field_fmt (struct ui_out *uiout, int fldno, int width, enum ui_align align, const char *fldname, const char *format, va_list args) - ATTR_FORMAT (printf, 6, 0); + ATTRIBUTE_PRINTF (6, 0); static void uo_spaces (struct ui_out *uiout, int numspaces); static void uo_text (struct ui_out *uiout, const char *string); static void uo_message (struct ui_out *uiout, int verbosity, const char *format, va_list args) - ATTR_FORMAT (printf, 3, 0); + ATTRIBUTE_PRINTF (3, 0); static void uo_wrap_hint (struct ui_out *uiout, char *identstring); static void uo_flush (struct ui_out *uiout); static int uo_redirect (struct ui_out *uiout, struct ui_file *outstream); @@ -374,6 +372,7 @@ ui_out_begin (struct ui_out *uiout, const char *id) { int new_level; + if (uiout->table.flag && !uiout->table.body_flag) internal_error (__FILE__, __LINE__, _("table header or table_body expected; lists must be \ @@ -390,6 +389,7 @@ specified after table_body.")); int fldno; int width; int align; + verify_field (uiout, &fldno, &width, &align); } @@ -409,6 +409,7 @@ ui_out_end (struct ui_out *uiout, enum ui_out_type type) { int old_level = pop_level (uiout, type); + uo_end (uiout, type, old_level); } @@ -422,6 +423,7 @@ static void do_cleanup_end (void *data) { struct ui_out_end_cleanup_data *end_cleanup_data = data; + ui_out_end (end_cleanup_data->uiout, end_cleanup_data->type); xfree (end_cleanup_data); } @@ -431,6 +433,7 @@ make_cleanup_ui_out_end (struct ui_out *uiout, enum ui_out_type type) { struct ui_out_end_cleanup_data *end_cleanup_data; + end_cleanup_data = XMALLOC (struct ui_out_end_cleanup_data); end_cleanup_data->uiout = uiout; end_cleanup_data->type = type; @@ -461,7 +464,6 @@ ui_out_field_int (struct ui_out *uiout, int fldno; int width; int align; - struct ui_out_level *current = current_level (uiout); verify_field (uiout, &fldno, &width, &align); @@ -478,7 +480,6 @@ ui_out_field_fmt_int (struct ui_out *uiout, int fldno; int width; int align; - struct ui_out_level *current = current_level (uiout); verify_field (uiout, &fldno, &width, &align); @@ -516,6 +517,7 @@ ui_out_field_stream (struct ui_out *uiout, long length; char *buffer = ui_file_xstrdup (buf->stream, &length); struct cleanup *old_cleanup = make_cleanup (xfree, buffer); + if (length > 0) ui_out_field_string (uiout, fldname, buffer); else @@ -594,9 +596,7 @@ ui_out_message (struct ui_out *uiout, int verbosity, va_list args; va_start (args, format); - uo_message (uiout, verbosity, format, args); - va_end (args); } @@ -656,7 +656,6 @@ ui_out_set_flags (struct ui_out *uiout, int mask) int oldflags = uiout->flags; uiout->flags |= mask; - return oldflags; } @@ -667,7 +666,6 @@ ui_out_clear_flags (struct ui_out *uiout, int mask) int oldflags = uiout->flags; uiout->flags &= ~mask; - return oldflags; } @@ -1137,7 +1135,7 @@ ui_out_get_field_separator (struct ui_out *uiout) /* Access to ui-out members data */ -struct ui_out_data * +void * ui_out_data (struct ui_out *uiout) { return uiout->data; @@ -1146,11 +1144,11 @@ ui_out_data (struct ui_out *uiout) /* initalize private members at startup */ struct ui_out * -ui_out_new (struct ui_out_impl *impl, - struct ui_out_data *data, +ui_out_new (struct ui_out_impl *impl, void *data, int flags) { struct ui_out *uiout = XMALLOC (struct ui_out); + uiout->data = data; uiout->impl = impl; uiout->flags = flags; diff --git a/contrib/gdb-7/gdb/ui-out.h b/contrib/gdb-7/gdb/ui-out.h index 4f3b7a4530..f65f42b5f8 100644 --- a/contrib/gdb-7/gdb/ui-out.h +++ b/contrib/gdb-7/gdb/ui-out.h @@ -1,6 +1,6 @@ /* Output generating routines for GDB. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Solutions. @@ -27,7 +27,6 @@ /* The ui_out structure */ struct ui_out; -struct ui_out_data; struct ui_file; /* the current ui_out */ @@ -125,7 +124,7 @@ extern void ui_out_field_stream (struct ui_out *uiout, const char *fldname, extern void ui_out_field_fmt (struct ui_out *uiout, const char *fldname, const char *format, ...) - ATTR_FORMAT (printf, 3, 4); + ATTRIBUTE_PRINTF (3, 4); extern void ui_out_field_skip (struct ui_out *uiout, const char *fldname); @@ -135,7 +134,7 @@ extern void ui_out_text (struct ui_out *uiout, const char *string); extern void ui_out_message (struct ui_out *uiout, int verbosity, const char *format, ...) - ATTR_FORMAT (printf, 3, 4); + ATTRIBUTE_PRINTF (3, 4); extern struct ui_stream *ui_out_stream_new (struct ui_out *uiout); @@ -264,13 +263,16 @@ struct ui_out_impl int is_mi_like_p; }; -extern struct ui_out_data *ui_out_data (struct ui_out *uiout); +extern void *ui_out_data (struct ui_out *uiout); +extern void uo_field_string (struct ui_out *uiout, int fldno, int width, + enum ui_align align, const char *fldname, + const char *string); /* Create a ui_out object */ extern struct ui_out *ui_out_new (struct ui_out_impl *impl, - struct ui_out_data *data, + void *data, int flags); /* Redirect the ouptut of a ui_out object temporarily. */ diff --git a/contrib/gdb-7/gdb/user-regs.c b/contrib/gdb-7/gdb/user-regs.c index 9762a787d5..01073771af 100644 --- a/contrib/gdb-7/gdb/user-regs.c +++ b/contrib/gdb-7/gdb/user-regs.c @@ -1,6 +1,6 @@ /* User visible, per-frame registers, for GDB, the GNU debugger. - Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Red Hat. @@ -96,7 +96,9 @@ static void * user_regs_init (struct gdbarch *gdbarch) { struct user_reg *reg; - struct gdb_user_regs *regs = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct gdb_user_regs); + struct gdb_user_regs *regs + = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct gdb_user_regs); + regs->last = ®s->first; for (reg = builtin_user_regs.first; reg != NULL; reg = reg->next) append_user_reg (regs, reg->name, reg->read, reg->baton, @@ -109,6 +111,7 @@ user_reg_add (struct gdbarch *gdbarch, const char *name, user_reg_read_ftype *read, const void *baton) { struct gdb_user_regs *regs = gdbarch_data (gdbarch, user_regs_data); + if (regs == NULL) { /* ULGH, called during architecture initialization. Patch @@ -134,9 +137,11 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name, int i; int maxregs = (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch)); + for (i = 0; i < maxregs; i++) { const char *regname = gdbarch_register_name (gdbarch, i); + if (regname != NULL && len == strlen (regname) && strncmp (regname, name, len) == 0) { @@ -150,6 +155,7 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name, struct gdb_user_regs *regs = gdbarch_data (gdbarch, user_regs_data); struct user_reg *reg; int nr; + for (nr = 0, reg = regs->first; reg != NULL; reg = reg->next, nr++) { if ((len < 0 && strcmp (reg->name, name)) @@ -168,6 +174,7 @@ usernum_to_user_reg (struct gdbarch *gdbarch, int usernum) { struct gdb_user_regs *regs = gdbarch_data (gdbarch, user_regs_data); struct user_reg *reg; + for (reg = regs->first; reg != NULL; reg = reg->next) { if (usernum == 0) @@ -182,6 +189,7 @@ user_reg_map_regnum_to_name (struct gdbarch *gdbarch, int regnum) { int maxregs = (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch)); + if (regnum < 0) return NULL; else if (regnum < maxregs) @@ -203,6 +211,7 @@ value_of_user_reg (int regnum, struct frame_info *frame) int maxregs = (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch)); struct user_reg *reg = usernum_to_user_reg (gdbarch, regnum - maxregs); + gdb_assert (reg != NULL); return reg->read (frame, reg->baton); } diff --git a/contrib/gdb-7/gdb/user-regs.h b/contrib/gdb-7/gdb/user-regs.h index f1607afa11..f5fa12e73d 100644 --- a/contrib/gdb-7/gdb/user-regs.h +++ b/contrib/gdb-7/gdb/user-regs.h @@ -1,6 +1,7 @@ /* Per-frame user registers, for GDB, the GNU debugger. - Copyright (C) 2002, 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Red Hat. diff --git a/contrib/gdb-7/gdb/utils.c b/contrib/gdb-7/gdb/utils.c index 16ad084428..ec77ae2e15 100644 --- a/contrib/gdb-7/gdb/utils.c +++ b/contrib/gdb-7/gdb/utils.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -26,6 +26,9 @@ #include "event-top.h" #include "exceptions.h" #include "gdbthread.h" +#ifdef HAVE_SYS_RESOURCE_H +#include +#endif /* HAVE_SYS_RESOURCE_H */ #ifdef TUI #include "tui/tui.h" /* For tui_get_command_dimension. */ @@ -55,6 +58,7 @@ #include "gdb_obstack.h" #include "gdbcore.h" #include "top.h" +#include "main.h" #include "inferior.h" /* for signed_pointer_to_address */ @@ -68,6 +72,7 @@ #include #include "gdb_usleep.h" +#include "interps.h" #if !HAVE_DECL_MALLOC extern PTR malloc (); /* ARI: PTR */ @@ -87,7 +92,7 @@ void (*deprecated_error_begin_hook) (void); /* Prototypes for local functions */ static void vfprintf_maybe_filtered (struct ui_file *, const char *, - va_list, int) ATTR_FORMAT (printf, 2, 0); + va_list, int) ATTRIBUTE_PRINTF (2, 0); static void fputs_maybe_filtered (const char *, struct ui_file *, int); @@ -245,6 +250,7 @@ static void do_close_cleanup (void *arg) { int *fd = arg; + close (*fd); } @@ -252,6 +258,7 @@ struct cleanup * make_cleanup_close (int fd) { int *saved_fd = xmalloc (sizeof (fd)); + *saved_fd = fd; return make_cleanup_dtor (do_close_cleanup, saved_fd, xfree); } @@ -262,7 +269,8 @@ static void do_fclose_cleanup (void *arg) { FILE *file = arg; - fclose (arg); + + fclose (file); } /* Return a new cleanup that closes FILE. */ @@ -279,6 +287,7 @@ static void do_obstack_free (void *arg) { struct obstack *ob = arg; + obstack_free (ob, NULL); } @@ -324,16 +333,19 @@ static void restore_integer (void *p) { struct restore_integer_closure *closure = p; + *(closure->variable) = closure->value; } /* Remember the current value of *VARIABLE and make it restored when the cleanup is run. */ + struct cleanup * make_cleanup_restore_integer (int *variable) { struct restore_integer_closure *c = xmalloc (sizeof (struct restore_integer_closure)); + c->variable = variable; c->value = *variable; @@ -341,6 +353,43 @@ make_cleanup_restore_integer (int *variable) xfree); } +/* Remember the current value of *VARIABLE and make it restored when the cleanup + is run. */ + +struct cleanup * +make_cleanup_restore_uinteger (unsigned int *variable) +{ + return make_cleanup_restore_integer ((int *) variable); +} + +struct restore_ui_file_closure +{ + struct ui_file **variable; + struct ui_file *value; +}; + +static void +do_restore_ui_file (void *p) +{ + struct restore_ui_file_closure *closure = p; + + *(closure->variable) = closure->value; +} + +/* Remember the current value of *VARIABLE and make it restored when + the cleanup is run. */ + +struct cleanup * +make_cleanup_restore_ui_file (struct ui_file **variable) +{ + struct restore_ui_file_closure *c = XNEW (struct restore_ui_file_closure); + + c->variable = variable; + c->value = *variable; + + return make_cleanup_dtor (do_restore_ui_file, (void *) c, xfree); +} + struct cleanup * make_my_cleanup2 (struct cleanup **pmy_chain, make_cleanup_ftype *function, void *arg, void (*free_arg) (void *)) @@ -385,6 +434,7 @@ do_my_cleanups (struct cleanup **pmy_chain, struct cleanup *old_chain) { struct cleanup *ptr; + while ((ptr = *pmy_chain) != old_chain) { *pmy_chain = ptr->next; /* Do this first incase recursion */ @@ -415,6 +465,7 @@ discard_my_cleanups (struct cleanup **pmy_chain, struct cleanup *old_chain) { struct cleanup *ptr; + while ((ptr = *pmy_chain) != old_chain) { *pmy_chain = ptr->next; @@ -477,6 +528,7 @@ void free_current_contents (void *ptr) { void **location = ptr; + if (location == NULL) internal_error (__FILE__, __LINE__, _("free_current_contents: NULL pointer")); @@ -499,6 +551,100 @@ null_cleanup (void *arg) { } +/* If nonzero, display time usage both at startup and for each command. */ + +static int display_time; + +/* If nonzero, display space usage both at startup and for each command. */ + +static int display_space; + +/* Records a run time and space usage to be used as a base for + reporting elapsed time or change in space. In addition, + the msg_type field indicates whether the saved time is from the + beginning of GDB execution (0) or the beginning of an individual + command execution (1). */ +struct cmd_stats +{ + int msg_type; + long start_time; + long start_space; +}; + +/* Set whether to display time statistics to NEW_VALUE (non-zero + means true). */ +void +set_display_time (int new_value) +{ + display_time = new_value; +} + +/* Set whether to display space statistics to NEW_VALUE (non-zero + means true). */ +void +set_display_space (int new_value) +{ + display_space = new_value; +} + +/* As indicated by display_time and display_space, report GDB's elapsed time + and space usage from the base time and space provided in ARG, which + must be a pointer to a struct cmd_stat. This function is intended + to be called as a cleanup. */ +static void +report_command_stats (void *arg) +{ + struct cmd_stats *start_stats = (struct cmd_stats *) arg; + int msg_type = start_stats->msg_type; + + if (display_time) + { + long cmd_time = get_run_time () - start_stats->start_time; + + printf_unfiltered (msg_type == 0 + ? _("Startup time: %ld.%06ld\n") + : _("Command execution time: %ld.%06ld\n"), + cmd_time / 1000000, cmd_time % 1000000); + } + + if (display_space) + { +#ifdef HAVE_SBRK + char *lim = (char *) sbrk (0); + + long space_now = lim - lim_at_start; + long space_diff = space_now - start_stats->start_space; + + printf_unfiltered (msg_type == 0 + ? _("Space used: %ld (%c%ld during startup)\n") + : _("Space used: %ld (%c%ld for this command)\n"), + space_now, + (space_diff >= 0 ? '+' : '-'), + space_diff); +#endif + } +} + +/* Create a cleanup that reports time and space used since its + creation. Precise messages depend on MSG_TYPE: + 0: Initial time/space + 1: Individual command time/space. */ +struct cleanup * +make_command_stats_cleanup (int msg_type) +{ + struct cmd_stats *new_stat = XMALLOC (struct cmd_stats); + +#ifdef HAVE_SBRK + char *lim = (char *) sbrk (0); + new_stat->start_space = lim - lim_at_start; +#endif + + new_stat->msg_type = msg_type; + new_stat->start_time = get_run_time (); + + return make_cleanup_dtor (report_command_stats, new_stat, xfree); +} + /* Continuations are implemented as cleanups internally. Inherit from cleanups. */ struct continuation @@ -548,7 +694,6 @@ add_inferior_continuation (void (*continuation_hook) (void *), void *args, void do_all_inferior_continuations (void) { - struct cleanup *old_chain; struct cleanup *as_cleanup; struct inferior *inf = current_inferior (); @@ -573,6 +718,7 @@ void discard_all_inferior_continuations (struct inferior *inf) { struct cleanup *continuation_ptr = &inf->continuations->base; + discard_my_cleanups (&continuation_ptr, NULL); inf->continuations = NULL; } @@ -581,6 +727,7 @@ static void restore_thread_cleanup (void *arg) { ptid_t *ptid_p = arg; + switch_to_thread (*ptid_p); } @@ -661,6 +808,7 @@ discard_all_continuations_thread_callback (struct thread_info *thread, void *data) { struct cleanup *continuation_ptr = &thread->continuations->base; + discard_my_cleanups (&continuation_ptr, NULL); thread->continuations = NULL; return 0; @@ -737,6 +885,7 @@ discard_all_intermediate_continuations_thread_callback (struct thread_info *thre void *data) { struct cleanup *continuation_ptr = &thread->intermediate_continuations->base; + discard_my_cleanups (&continuation_ptr, NULL); thread->intermediate_continuations = NULL; return 0; @@ -792,6 +941,7 @@ void warning (const char *string, ...) { va_list args; + va_start (args, string); vwarning (string, args); va_end (args); @@ -801,16 +951,17 @@ warning (const char *string, ...) The first argument STRING is the error message, used as a fprintf string, and the remaining args are passed as arguments to it. */ -NORETURN void +void verror (const char *string, va_list args) { throw_verror (GENERIC_ERROR, string, args); } -NORETURN void +void error (const char *string, ...) { va_list args; + va_start (args, string); throw_verror (GENERIC_ERROR, string, args); va_end (args); @@ -820,29 +971,69 @@ error (const char *string, ...) The first argument STRING is the error message, used as a fprintf string, and the remaining args are passed as arguments to it. */ -NORETURN void +void vfatal (const char *string, va_list args) { throw_vfatal (string, args); } -NORETURN void +void fatal (const char *string, ...) { va_list args; + va_start (args, string); throw_vfatal (string, args); va_end (args); } -NORETURN void +void error_stream (struct ui_file *stream) { char *message = ui_file_xstrdup (stream, NULL); + make_cleanup (xfree, message); error (("%s"), message); } +/* Dump core trying to increase the core soft limit to hard limit first. */ + +static void +dump_core (void) +{ +#ifdef HAVE_SETRLIMIT + struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY }; + + setrlimit (RLIMIT_CORE, &rlim); +#endif /* HAVE_SETRLIMIT */ + + abort (); /* NOTE: GDB has only three calls to abort(). */ +} + +/* Check whether GDB will be able to dump core using the dump_core function. */ + +static int +can_dump_core (const char *reason) +{ +#ifdef HAVE_GETRLIMIT + struct rlimit rlim; + + /* Be quiet and assume we can dump if an error is returned. */ + if (getrlimit (RLIMIT_CORE, &rlim) != 0) + return 1; + + if (rlim.rlim_max == 0) + { + fprintf_unfiltered (gdb_stderr, + _("%s\nUnable to dump core, use `ulimit -c unlimited'" + " before executing GDB next time.\n"), reason); + return 0; + } +#endif /* HAVE_GETRLIMIT */ + + return 1; +} + /* Allow the user to configure the debugger behavior with respect to what to do when an internal problem is detected. */ @@ -856,7 +1047,6 @@ static const char *internal_problem_modes[] = internal_problem_no, NULL }; -static const char *internal_problem_mode = internal_problem_ask; /* Print a message reporting an internal error/warning. Ask the user if they want to continue, dump core, or just exit. Return @@ -873,7 +1063,7 @@ struct internal_problem has been reported, and assuming GDB didn't quit, the caller can either allow execution to resume or throw an error. */ -static void ATTR_FORMAT (printf, 4, 0) +static void ATTRIBUTE_PRINTF (4, 0) internal_vproblem (struct internal_problem *problem, const char *file, int line, const char *fmt, va_list ap) { @@ -885,6 +1075,7 @@ internal_vproblem (struct internal_problem *problem, /* Don't allow infinite error/warning recursion. */ { static char msg[] = "Recursive internal problem.\n"; + switch (dejavu) { case 0: @@ -893,7 +1084,7 @@ internal_vproblem (struct internal_problem *problem, case 1: dejavu = 2; fputs_unfiltered (msg, gdb_stderr); - abort (); /* NOTE: GDB has only four calls to abort(). */ + abort (); /* NOTE: GDB has only three calls to abort(). */ default: dejavu = 3; /* Newer GLIBC versions put the warn_unused_result attribute @@ -902,7 +1093,7 @@ internal_vproblem (struct internal_problem *problem, does not fix this problem. This is the solution suggested at http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509. */ if (write (STDERR_FILENO, msg, sizeof (msg)) != sizeof (msg)) - abort (); /* NOTE: GDB has only four calls to abort(). */ + abort (); /* NOTE: GDB has only three calls to abort(). */ exit (1); } } @@ -918,6 +1109,7 @@ internal_vproblem (struct internal_problem *problem, so that the user knows that they are living on the edge. */ { char *msg; + msg = xstrvprintf (fmt, ap); reason = xstrprintf ("\ %s:%d: %s: %s\n\ @@ -951,13 +1143,18 @@ further debugging may prove unreliable.", file, line, problem->name, msg); if (problem->should_dump_core == internal_problem_ask) { - /* Default (yes/batch case) is to dump core. This leaves a GDB - `dropping' so that it is easier to see that something went - wrong in GDB. */ - dump_core_p = query (_("%s\nCreate a core file of GDB? "), reason); + if (!can_dump_core (reason)) + dump_core_p = 0; + else + { + /* Default (yes/batch case) is to dump core. This leaves a GDB + `dropping' so that it is easier to see that something went + wrong in GDB. */ + dump_core_p = query (_("%s\nCreate a core file of GDB? "), reason); + } } else if (problem->should_dump_core == internal_problem_yes) - dump_core_p = 1; + dump_core_p = can_dump_core (reason); else if (problem->should_dump_core == internal_problem_no) dump_core_p = 0; else @@ -966,7 +1163,7 @@ further debugging may prove unreliable.", file, line, problem->name, msg); if (quit_p) { if (dump_core_p) - abort (); /* NOTE: GDB has only four calls to abort(). */ + dump_core (); else exit (1); } @@ -976,7 +1173,7 @@ further debugging may prove unreliable.", file, line, problem->name, msg); { #ifdef HAVE_WORKING_FORK if (fork () == 0) - abort (); /* NOTE: GDB has only four calls to abort(). */ + dump_core (); #endif } } @@ -988,17 +1185,18 @@ static struct internal_problem internal_error_problem = { "internal-error", internal_problem_ask, internal_problem_ask }; -NORETURN void +void internal_verror (const char *file, int line, const char *fmt, va_list ap) { internal_vproblem (&internal_error_problem, file, line, fmt, ap); deprecated_throw_reason (RETURN_ERROR); } -NORETURN void +void internal_error (const char *file, int line, const char *string, ...) { va_list ap; + va_start (ap, string); internal_verror (file, line, string, ap); va_end (ap); @@ -1018,6 +1216,7 @@ void internal_warning (const char *file, int line, const char *string, ...) { va_list ap; + va_start (ap, string); internal_vwarning (file, line, string, ap); va_end (ap); @@ -1072,13 +1271,15 @@ add_internal_problem_command (struct internal_problem *problem) add_prefix_cmd ((char*) problem->name, class_maintenance, set_internal_problem_cmd, set_doc, set_cmd_list, - concat ("maintenance set ", problem->name, " ", NULL), + concat ("maintenance set ", problem->name, " ", + (char *) NULL), 0/*allow-unknown*/, &maintenance_set_cmdlist); add_prefix_cmd ((char*) problem->name, class_maintenance, show_internal_problem_cmd, show_doc, show_cmd_list, - concat ("maintenance show ", problem->name, " ", NULL), + concat ("maintenance show ", problem->name, " ", + (char *) NULL), 0/*allow-unknown*/, &maintenance_show_cmdlist); set_doc = xstrprintf (_("\ @@ -1126,7 +1327,7 @@ Show whether GDB will create a core file of GDB when %s is detected"), as the file name for which the error was encountered. Then return to command level. */ -NORETURN void +void perror_with_name (const char *string) { char *err; @@ -1192,7 +1393,7 @@ quit (void) /* Called when a memory allocation fails, with the number of bytes of memory requested in SIZE. */ -NORETURN void +void nomem (long size) { if (size > 0) @@ -1295,6 +1496,7 @@ xstrprintf (const char *format, ...) { char *ret; va_list args; + va_start (args, format); ret = xstrvprintf (format, args); va_end (args); @@ -1305,6 +1507,7 @@ void xasprintf (char **ret, const char *format, ...) { va_list args; + va_start (args, format); (*ret) = xstrvprintf (format, args); va_end (args); @@ -1321,6 +1524,7 @@ xstrvprintf (const char *format, va_list ap) { char *ret = NULL; int status = vasprintf (&ret, format, ap); + /* NULL is returned when there was a memory allocation problem, or any other error (for instance, a bad format string). A negative status (the printed length) with a non-NULL buffer should never @@ -1374,6 +1578,7 @@ char * savestring (const char *ptr, size_t size) { char *p = (char *) xmalloc (size + 1); + memcpy (p, ptr, size); p[size] = 0; return p; @@ -1404,7 +1609,7 @@ gdb_print_host_address (const void *addr, struct ui_file *stream) ARGS are the arguments passed along with the CTLSTR argument to printf. */ -static int ATTR_FORMAT (printf, 1, 0) +static int ATTRIBUTE_PRINTF (1, 0) defaulted_query (const char *ctlstr, const char defchar, va_list args) { int answer; @@ -1606,7 +1811,7 @@ query (const char *ctlstr, ...) function returns 1. Otherwise, the function returns 0. */ static int -host_char_to_target (int c, int *target_c) +host_char_to_target (struct gdbarch *gdbarch, int c, int *target_c) { struct obstack host_data; char the_char = c; @@ -1616,7 +1821,7 @@ host_char_to_target (int c, int *target_c) obstack_init (&host_data); cleanups = make_cleanup_obstack_free (&host_data); - convert_between_encodings (target_charset (), host_charset (), + convert_between_encodings (target_charset (gdbarch), host_charset (), &the_char, 1, 1, &host_data, translit_none); if (obstack_object_size (&host_data) == 1) @@ -1645,10 +1850,11 @@ host_char_to_target (int c, int *target_c) after the zeros. A value of 0 does not mean end of string. */ int -parse_escape (char **string_ptr) +parse_escape (struct gdbarch *gdbarch, char **string_ptr) { int target_char = -2; /* initialize to avoid GCC warnings */ int c = *(*string_ptr)++; + switch (c) { case '\n': @@ -1711,11 +1917,11 @@ parse_escape (char **string_ptr) break; } - if (!host_char_to_target (c, &target_char)) + if (!host_char_to_target (gdbarch, c, &target_char)) error ("The escape sequence `\%c' is equivalent to plain `%c', which" " has no equivalent\n" "in the `%s' character set.", c, c, - target_charset ()); + target_charset (gdbarch)); return target_char; } @@ -1729,7 +1935,6 @@ printchar (int c, void (*do_fputs) (const char *, struct ui_file *), void (*do_fprintf) (struct ui_file *, const char *, ...) ATTRIBUTE_FPTR_PRINTF_2, struct ui_file *stream, int quoter) { - c &= 0xFF; /* Avoid sign bit follies */ if (c < 0x20 || /* Low control chars */ @@ -1796,6 +2001,7 @@ fputstrn_filtered (const char *str, int n, int quoter, struct ui_file *stream) { int i; + for (i = 0; i < n; i++) printchar (str[i], fputs_filtered, fprintf_filtered, stream, quoter); } @@ -1805,6 +2011,7 @@ fputstrn_unfiltered (const char *str, int n, int quoter, struct ui_file *stream) { int i; + for (i = 0; i < n; i++) printchar (str[i], fputs_unfiltered, fprintf_unfiltered, stream, quoter); } @@ -1865,6 +2072,12 @@ static int wrap_column; void init_page_info (void) { + if (batch_flag) + { + lines_per_page = UINT_MAX; + chars_per_line = UINT_MAX; + } + else #if defined(TUI) if (!tui_get_command_dimension (&chars_per_line, &lines_per_page)) #endif @@ -1909,6 +2122,44 @@ init_page_info (void) set_width (); } +/* Helper for make_cleanup_restore_page_info. */ + +static void +do_restore_page_info_cleanup (void *arg) +{ + set_screen_size (); + set_width (); +} + +/* Provide cleanup for restoring the terminal size. */ + +struct cleanup * +make_cleanup_restore_page_info (void) +{ + struct cleanup *back_to; + + back_to = make_cleanup (do_restore_page_info_cleanup, NULL); + make_cleanup_restore_uinteger (&lines_per_page); + make_cleanup_restore_uinteger (&chars_per_line); + + return back_to; +} + +/* Temporarily set BATCH_FLAG and the associated unlimited terminal size. + Provide cleanup for restoring the original state. */ + +struct cleanup * +set_batch_flag_and_make_cleanup_restore_page_info (void) +{ + struct cleanup *back_to = make_cleanup_restore_page_info (); + + make_cleanup_restore_integer (&batch_flag); + batch_flag = 1; + init_page_info (); + + return back_to; +} + /* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE. */ static void @@ -2000,6 +2251,7 @@ prompt_for_continue (void) if (ignore) { char *p = ignore; + while (*p == ' ' || *p == '\t') ++p; if (p[0] == 'q') @@ -2163,8 +2415,12 @@ fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream, return; /* Don't do any filtering if it is disabled. */ - if ((stream != gdb_stdout) || !pagination_enabled - || (lines_per_page == UINT_MAX && chars_per_line == UINT_MAX)) + if (stream != gdb_stdout + || ! pagination_enabled + || ! input_from_terminal_p () + || (lines_per_page == UINT_MAX && chars_per_line == UINT_MAX) + || top_level_interpreter () == NULL + || ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ()))) { fputs_unfiltered (linebuffer, stream); return; @@ -2264,6 +2520,7 @@ int putchar_unfiltered (int c) { char buf = c; + ui_file_write (gdb_stdout, &buf, 1); return c; } @@ -2281,6 +2538,7 @@ int fputc_unfiltered (int c, struct ui_file *stream) { char buf = c; + ui_file_write (stream, &buf, 1); return c; } @@ -2462,6 +2720,7 @@ void fprintf_filtered (struct ui_file *stream, const char *format, ...) { va_list args; + va_start (args, format); vfprintf_filtered (stream, format, args); va_end (args); @@ -2471,6 +2730,7 @@ void fprintf_unfiltered (struct ui_file *stream, const char *format, ...) { va_list args; + va_start (args, format); vfprintf_unfiltered (stream, format, args); va_end (args); @@ -2484,6 +2744,7 @@ fprintfi_filtered (int spaces, struct ui_file *stream, const char *format, ...) { va_list args; + va_start (args, format); print_spaces_filtered (spaces, stream); @@ -2496,6 +2757,7 @@ void printf_filtered (const char *format, ...) { va_list args; + va_start (args, format); vfprintf_filtered (gdb_stdout, format, args); va_end (args); @@ -2506,6 +2768,7 @@ void printf_unfiltered (const char *format, ...) { va_list args; + va_start (args, format); vfprintf_unfiltered (gdb_stdout, format, args); va_end (args); @@ -2518,6 +2781,7 @@ void printfi_filtered (int spaces, const char *format, ...) { va_list args; + va_start (args, format); print_spaces_filtered (spaces, gdb_stdout); vfprintf_filtered (gdb_stdout, format, args); @@ -2737,6 +3001,7 @@ int subset_compare (char *string_to_compare, char *template_string) { int match; + if (template_string != (char *) NULL && string_to_compare != (char *) NULL && strlen (string_to_compare) <= strlen (template_string)) match = @@ -2770,8 +3035,6 @@ show_debug_timestamp (struct ui_file *file, int from_tty, void initialize_utils (void) { - struct cmd_list_element *c; - add_setshow_uinteger_cmd ("width", class_support, &chars_per_line, _("\ Set number of characters gdb thinks are in a line."), _("\ Show number of characters gdb thinks are in a line."), NULL, @@ -2850,6 +3113,7 @@ get_cell (void) { static char buf[NUMCELLS][CELLSIZE]; static int cell = 0; + if (++cell >= NUMCELLS) cell = 0; return buf[cell]; @@ -2881,8 +3145,8 @@ decimal2str (char *sign, ULONGEST addr, int width) about the real size of addr as the above does? */ unsigned long temp[3]; char *str = get_cell (); - int i = 0; + do { temp[i] = addr % (1000 * 1000 * 1000); @@ -2922,8 +3186,8 @@ octal2str (ULONGEST addr, int width) { unsigned long temp[3]; char *str = get_cell (); - int i = 0; + do { temp[i] = addr % (0100000 * 0100000); @@ -3017,6 +3281,7 @@ phex_nz (ULONGEST l, int sizeof_l) case 8: { unsigned long high = (unsigned long) (l >> thirty_two); + str = get_cell (); if (high == 0) xsnprintf (str, CELLSIZE, "%lx", @@ -3048,6 +3313,7 @@ char * hex_string (LONGEST num) { char *result = get_cell (); + xsnprintf (result, CELLSIZE, "0x%s", phex_nz (num, sizeof (num))); return result; } @@ -3092,6 +3358,7 @@ int_string (LONGEST val, int radix, int is_signed, int width, case 16: { char *result; + if (width == 0) result = hex_string (val); else @@ -3110,6 +3377,7 @@ int_string (LONGEST val, int radix, int is_signed, int width, case 8: { char *result = octal2str (val, width); + if (use_c_format || val == 0) return result; else @@ -3126,6 +3394,7 @@ const char * core_addr_to_string (const CORE_ADDR addr) { char *str = get_cell (); + strcpy (str, "0x"); strcat (str, phex (addr, sizeof (addr))); return str; @@ -3135,6 +3404,7 @@ const char * core_addr_to_string_nz (const CORE_ADDR addr) { char *str = get_cell (); + strcpy (str, "0x"); strcat (str, phex_nz (addr, sizeof (addr))); return str; @@ -3150,6 +3420,7 @@ string_to_core_addr (const char *my_string) { /* Assume that it is in hex. */ int i; + for (i = 2; my_string[i] != '\0'; i++) { if (isdigit (my_string[i])) @@ -3164,6 +3435,7 @@ string_to_core_addr (const char *my_string) { /* Assume that it is in decimal. */ int i; + for (i = 0; my_string[i] != '\0'; i++) { if (isdigit (my_string[i])) @@ -3203,6 +3475,7 @@ gdb_realpath (const char *filename) # endif # if defined (USE_REALPATH) const char *rp = realpath (filename, buf); + if (rp == NULL) rp = filename; return xstrdup (rp); @@ -3216,6 +3489,7 @@ gdb_realpath (const char *filename) #if defined(HAVE_CANONICALIZE_FILE_NAME) { char *rp = canonicalize_file_name (filename); + if (rp == NULL) return xstrdup (filename); else @@ -3243,11 +3517,13 @@ gdb_realpath (const char *filename) { /* Find out the max path size. */ long path_max = pathconf ("/", _PC_PATH_MAX); + if (path_max > 0) { /* PATH_MAX is bounded. */ char *buf = alloca (path_max); char *rp = realpath (filename, buf); + return xstrdup (rp ? rp : filename); } } @@ -3295,9 +3571,9 @@ xfullpath (const char *filename) directory separator, avoid doubling it. */ real_path = gdb_realpath (dir_name); if (IS_DIR_SEPARATOR (real_path[strlen (real_path) - 1])) - result = concat (real_path, base_name, (char *)NULL); + result = concat (real_path, base_name, (char *) NULL); else - result = concat (real_path, SLASH_STRING, base_name, (char *)NULL); + result = concat (real_path, SLASH_STRING, base_name, (char *) NULL); xfree (real_path); return result; @@ -3398,6 +3674,7 @@ hashtab_obstack_allocate (void *data, size_t size, size_t count) { unsigned int total = size * count; void *ptr = obstack_alloc ((struct obstack *) data, total); + memset (ptr, 0, total); return ptr; } @@ -3549,11 +3826,80 @@ char ** gdb_buildargv (const char *s) { char **argv = buildargv (s); + if (s != NULL && argv == NULL) nomem (0); return argv; } +int +compare_positive_ints (const void *ap, const void *bp) +{ + /* Because we know we're comparing two ints which are positive, + there's no danger of overflow here. */ + return * (int *) ap - * (int *) bp; +} + +#define AMBIGUOUS_MESS1 ".\nMatching formats:" +#define AMBIGUOUS_MESS2 ".\nUse \"set gnutarget format-name\" to specify the format." + +const char * +gdb_bfd_errmsg (bfd_error_type error_tag, char **matching) +{ + char *ret, *retp; + int ret_len; + char **p; + + /* Check if errmsg just need simple return. */ + if (error_tag != bfd_error_file_ambiguously_recognized || matching == NULL) + return bfd_errmsg (error_tag); + + ret_len = strlen (bfd_errmsg (error_tag)) + strlen (AMBIGUOUS_MESS1) + + strlen (AMBIGUOUS_MESS2); + for (p = matching; *p; p++) + ret_len += strlen (*p) + 1; + ret = xmalloc (ret_len + 1); + retp = ret; + make_cleanup (xfree, ret); + + strcpy (retp, bfd_errmsg (error_tag)); + retp += strlen (retp); + + strcpy (retp, AMBIGUOUS_MESS1); + retp += strlen (retp); + + for (p = matching; *p; p++) + { + sprintf (retp, " %s", *p); + retp += strlen (retp); + } + xfree (matching); + + strcpy (retp, AMBIGUOUS_MESS2); + + return ret; +} + +/* Return ARGS parsed as a valid pid, or throw an error. */ + +int +parse_pid_to_attach (char *args) +{ + unsigned long pid; + char *dummy; + + if (!args) + error_no_arg (_("process-id to attach")); + + dummy = args; + pid = strtoul (args, &dummy, 0); + /* Some targets don't set errno on errors, grrr! */ + if ((pid == 0 && dummy == args) || dummy != &args[strlen (args)]) + error (_("Illegal process-id: %s."), args); + + return pid; +} + /* Provide a prototype to silence -Wmissing-prototypes. */ extern initialize_file_ftype _initialize_utils; diff --git a/contrib/gdb-7/gdb/valarith.c b/contrib/gdb-7/gdb/valarith.c index a9c875d907..0c4090581b 100644 --- a/contrib/gdb-7/gdb/valarith.c +++ b/contrib/gdb-7/gdb/valarith.c @@ -1,8 +1,8 @@ /* Perform arithmetic and other operations on values, for GDB. Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -31,6 +31,7 @@ #include "dfp.h" #include #include "infcall.h" +#include "exceptions.h" /* Define whether or not the C operator '/' truncates towards zero for differently signed operands (truncation direction is undefined in C). */ @@ -122,6 +123,13 @@ First argument of `-' is a pointer and second argument is neither\n\ an integer nor a pointer of the same type.")); sz = TYPE_LENGTH (check_typedef (TYPE_TARGET_TYPE (type1))); + if (sz == 0) + { + warning (_("Type size unknown, assuming 1. " + "Try casting to a known type, or void *.")); + sz = 1; + } + return (value_as_long (arg1) - value_as_long (arg2)) / sz; } @@ -139,7 +147,6 @@ an integer nor a pointer of the same type.")); struct value * value_subscript (struct value *array, LONGEST index) { - struct value *bound; int c_style = current_language->c_style_arrays; struct type *tarray; @@ -151,8 +158,8 @@ value_subscript (struct value *array, LONGEST index) { struct type *range_type = TYPE_INDEX_TYPE (tarray); LONGEST lowerbound, upperbound; - get_discrete_bounds (range_type, &lowerbound, &upperbound); + get_discrete_bounds (range_type, &lowerbound, &upperbound); if (VALUE_LVAL (array) != lval_memory) return value_subscripted_rvalue (array, index, lowerbound); @@ -191,7 +198,8 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound) unsigned int elt_offs = elt_size * longest_to_int (index - lowerbound); struct value *v; - if (index < lowerbound || elt_offs >= TYPE_LENGTH (array_type)) + if (index < lowerbound || (!TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type) + && elt_offs >= TYPE_LENGTH (array_type))) error (_("no such vector element")); v = allocate_value (elt_type); @@ -256,17 +264,17 @@ value_bitstring_subscript (struct type *type, For now, we do not overload the `=' operator. */ int -binop_user_defined_p (enum exp_opcode op, struct value *arg1, struct value *arg2) +binop_types_user_defined_p (enum exp_opcode op, + struct type *type1, struct type *type2) { - struct type *type1, *type2; if (op == BINOP_ASSIGN || op == BINOP_CONCAT) return 0; - type1 = check_typedef (value_type (arg1)); + type1 = check_typedef (type1); if (TYPE_CODE (type1) == TYPE_CODE_REF) type1 = check_typedef (TYPE_TARGET_TYPE (type1)); - type2 = check_typedef (value_type (arg2)); + type2 = check_typedef (type1); if (TYPE_CODE (type2) == TYPE_CODE_REF) type2 = check_typedef (TYPE_TARGET_TYPE (type2)); @@ -274,6 +282,19 @@ binop_user_defined_p (enum exp_opcode op, struct value *arg1, struct value *arg2 || TYPE_CODE (type2) == TYPE_CODE_STRUCT); } +/* Check to see if either argument is a structure, or a reference to + one. This is called so we know whether to go ahead with the normal + binop or look for a user defined function instead. + + For now, we do not overload the `=' operator. */ + +int +binop_user_defined_p (enum exp_opcode op, + struct value *arg1, struct value *arg2) +{ + return binop_types_user_defined_p (op, value_type (arg1), value_type (arg2)); +} + /* Check to see if argument is a structure. This is called so we know whether to go ahead with the normal unop or look for a user defined function instead. @@ -284,6 +305,7 @@ int unop_user_defined_p (enum exp_opcode op, struct value *arg1) { struct type *type1; + if (op == UNOP_ADDR) return 0; type1 = check_typedef (value_type (arg1)); @@ -298,6 +320,67 @@ unop_user_defined_p (enum exp_opcode op, struct value *arg1) } } +/* Try to find an operator named OPERATOR which takes NARGS arguments + specified in ARGS. If the operator found is a static member operator + *STATIC_MEMFUNP will be set to 1, and otherwise 0. + The search if performed through find_overload_match which will handle + member operators, non member operators, operators imported implicitly or + explicitly, and perform correct overload resolution in all of the above + situations or combinations thereof. */ + +static struct value * +value_user_defined_cpp_op (struct value **args, int nargs, char *operator, + int *static_memfuncp) +{ + + struct symbol *symp = NULL; + struct value *valp = NULL; + struct type **arg_types; + int i; + + arg_types = (struct type **) alloca (nargs * (sizeof (struct type *))); + /* Prepare list of argument types for overload resolution */ + for (i = 0; i < nargs; i++) + arg_types[i] = value_type (args[i]); + + find_overload_match (arg_types, nargs, operator, BOTH /* could be method */, + 0 /* strict match */, &args[0], /* objp */ + NULL /* pass NULL symbol since symbol is unknown */, + &valp, &symp, static_memfuncp, 0); + + if (valp) + return valp; + + if (symp) + { + /* This is a non member function and does not + expect a reference as its first argument + rather the explicit structure. */ + args[0] = value_ind (args[0]); + return value_of_variable (symp, 0); + } + + error (_("Could not find %s."), operator); +} + +/* Lookup user defined operator NAME. Return a value representing the + function, otherwise return NULL. */ + +static struct value * +value_user_defined_op (struct value **argp, struct value **args, char *name, + int *static_memfuncp, int nargs) +{ + struct value *result = NULL; + + if (current_language->la_language == language_cplus) + result = value_user_defined_cpp_op (args, nargs, name, static_memfuncp); + else + result = value_struct_elt (argp, args, name, static_memfuncp, + "structure"); + + return result; +} + /* We know either arg1 or arg2 is a structure, so try to find the right user defined function. Create an argument vector that calls arg1.operator @ (arg1,arg2) and return that value (where '@' is any @@ -438,7 +521,8 @@ value_x_binop (struct value *arg1, struct value *arg2, enum exp_opcode op, error (_("Invalid binary operation specified.")); } - argvec[0] = value_struct_elt (&arg1, argvec + 1, tstr, &static_memfuncp, "structure"); + argvec[0] = value_user_defined_op (&arg1, argvec + 1, tstr, + &static_memfuncp, 2); if (argvec[0]) { @@ -450,6 +534,7 @@ value_x_binop (struct value *arg1, struct value *arg2, enum exp_opcode op, if (noside == EVAL_AVOID_SIDE_EFFECTS) { struct type *return_type; + return_type = TYPE_TARGET_TYPE (check_typedef (value_type (argvec[0]))); return value_zero (return_type, VALUE_LVAL (arg1)); @@ -535,7 +620,8 @@ value_x_unop (struct value *arg1, enum exp_opcode op, enum noside noside) error (_("Invalid unary operation specified.")); } - argvec[0] = value_struct_elt (&arg1, argvec + 1, tstr, &static_memfuncp, "structure"); + argvec[0] = value_user_defined_op (&arg1, argvec + 1, tstr, + &static_memfuncp, nargs); if (argvec[0]) { @@ -548,6 +634,7 @@ value_x_unop (struct value *arg1, enum exp_opcode op, enum noside noside) if (noside == EVAL_AVOID_SIDE_EFFECTS) { struct type *return_type; + return_type = TYPE_TARGET_TYPE (check_typedef (value_type (argvec[0]))); return value_zero (return_type, VALUE_LVAL (arg1)); @@ -603,6 +690,7 @@ value_concat (struct value *arg1, struct value *arg2) if (TYPE_CODE (type2) == TYPE_CODE_INT) { struct type *tmp = type1; + type1 = tmp; tmp = type2; inval1 = arg2; @@ -629,6 +717,7 @@ value_concat (struct value *arg1, struct value *arg2) if (TYPE_CODE (type2) == TYPE_CODE_CHAR) { char_type = type2; + inchar = (char) unpack_long (type2, value_contents (inval2)); for (idx = 0; idx < count; idx++) @@ -639,6 +728,7 @@ value_concat (struct value *arg1, struct value *arg2) else { char_type = TYPE_TARGET_TYPE (type2); + for (idx = 0; idx < count; idx++) { memcpy (ptr + (idx * inval2len), value_contents (inval2), @@ -672,11 +762,13 @@ value_concat (struct value *arg1, struct value *arg2) if (TYPE_CODE (type1) == TYPE_CODE_CHAR) { char_type = type1; + *ptr = (char) unpack_long (type1, value_contents (inval1)); } else { char_type = TYPE_TARGET_TYPE (type1); + memcpy (ptr, value_contents (inval1), inval1len); } if (TYPE_CODE (type2) == TYPE_CODE_CHAR) @@ -860,7 +952,6 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT || TYPE_CODE (type2) == TYPE_CODE_DECFLOAT) { - struct type *v_type; int len_v1, len_v2, len_v; enum bfd_endian byte_order_v1, byte_order_v2, byte_order_v; gdb_byte v1[16], v2[16]; @@ -908,6 +999,7 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) in target format. real.c in GCC probably has the necessary code. */ DOUBLEST v1, v2, v = 0; + v1 = value_as_double (arg1); v2 = value_as_double (arg2); @@ -966,6 +1058,7 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) || TYPE_CODE (type2) == TYPE_CODE_BOOL) { LONGEST v1, v2, v = 0; + v1 = value_as_long (arg1); v2 = value_as_long (arg2); @@ -1029,6 +1122,7 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) { LONGEST v2_signed = value_as_long (arg2); ULONGEST v1, v2, v = 0; + v1 = (ULONGEST) value_as_long (arg1); v2 = (ULONGEST) v2_signed; @@ -1128,6 +1222,18 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) v = v1 < v2; break; + case BINOP_GTR: + v = v1 > v2; + break; + + case BINOP_LEQ: + v = v1 <= v2; + break; + + case BINOP_GEQ: + v = v1 >= v2; + break; + default: error (_("Invalid binary operation on numbers.")); } @@ -1142,6 +1248,7 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) else { LONGEST v1, v2, v = 0; + v1 = value_as_long (arg1); v2 = value_as_long (arg2); @@ -1237,10 +1344,26 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) v = v1 == v2; break; + case BINOP_NOTEQUAL: + v = v1 != v2; + break; + case BINOP_LESS: v = v1 < v2; break; + case BINOP_GTR: + v = v1 > v2; + break; + + case BINOP_LEQ: + v = v1 <= v2; + break; + + case BINOP_GEQ: + v = v1 >= v2; + break; + default: error (_("Invalid binary operation on numbers.")); } @@ -1350,6 +1473,7 @@ value_equal (struct value *arg1, struct value *arg2) /* NOTE: kettenis/20050816: Avoid compiler bug on systems where `long double' values are returned in static storage (m68k). */ DOUBLEST d = value_as_double (arg1); + return d == value_as_double (arg2); } else if ((code1 == TYPE_CODE_DECFLOAT || is_int1) @@ -1397,6 +1521,24 @@ value_equal (struct value *arg1, struct value *arg2) } } +/* Compare values based on their raw contents. Useful for arrays since + value_equal coerces them to pointers, thus comparing just the address + of the array instead of its contents. */ + +int +value_equal_contents (struct value *arg1, struct value *arg2) +{ + struct type *type1, *type2; + + type1 = check_typedef (value_type (arg1)); + type2 = check_typedef (value_type (arg2)); + + return (TYPE_CODE (type1) == TYPE_CODE (type2) + && TYPE_LENGTH (type1) == TYPE_LENGTH (type2) + && memcmp (value_contents (arg1), value_contents (arg2), + TYPE_LENGTH (type1)) == 0); +} + /* Simulate the C operator < by returning 1 iff ARG1's contents are less than ARG2's. */ @@ -1427,6 +1569,7 @@ value_less (struct value *arg1, struct value *arg2) /* NOTE: kettenis/20050816: Avoid compiler bug on systems where `long double' values are returned in static storage (m68k). */ DOUBLEST d = value_as_double (arg1); + return d < value_as_double (arg2); } else if ((code1 == TYPE_CODE_DECFLOAT || is_int1) @@ -1548,6 +1691,7 @@ value_bit_index (struct type *type, const gdb_byte *valaddr, int index) LONGEST word; unsigned rel_index; struct type *range = TYPE_INDEX_TYPE (type); + if (get_discrete_bounds (range, &low_bound, &high_bound) < 0) return -2; if (index < low_bound || index > high_bound) @@ -1567,6 +1711,7 @@ value_in (struct value *element, struct value *set) int member; struct type *settype = check_typedef (value_type (set)); struct type *eltype = check_typedef (value_type (element)); + if (TYPE_CODE (eltype) == TYPE_CODE_RANGE) eltype = TYPE_TARGET_TYPE (eltype); if (TYPE_CODE (settype) != TYPE_CODE_SET) diff --git a/contrib/gdb-7/gdb/valops.c b/contrib/gdb-7/gdb/valops.c index 012ea6a429..7fbad10ce3 100644 --- a/contrib/gdb-7/gdb/valops.c +++ b/contrib/gdb-7/gdb/valops.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -53,23 +53,25 @@ extern int overload_debug; static int typecmp (int staticp, int varargs, int nargs, struct field t1[], struct value *t2[]); -static struct value *search_struct_field (char *, struct value *, +static struct value *search_struct_field (const char *, struct value *, int, struct type *, int); -static struct value *search_struct_method (char *, struct value **, - struct value **, - int, int *, struct type *); +static struct value *search_struct_method (const char *, struct value **, + struct value **, + int, int *, struct type *); static int find_oload_champ_namespace (struct type **, int, const char *, const char *, struct symbol ***, - struct badness_vector **); + struct badness_vector **, + const int no_adl); static int find_oload_champ_namespace_loop (struct type **, int, const char *, const char *, int, struct symbol ***, - struct badness_vector **, int *); + struct badness_vector **, int *, + const int no_adl); static int find_oload_champ (struct type **, int, int, int, struct fn_field *, struct symbol **, @@ -100,7 +102,7 @@ static CORE_ADDR allocate_space_in_inferior (int); static struct value *cast_into_complex (struct type *, struct value *); -static struct fn_field *find_method_list (struct value **, char *, +static struct fn_field *find_method_list (struct value **, const char *, int, struct type *, int *, struct type **, int *); @@ -132,6 +134,7 @@ struct value * find_function_in_inferior (const char *name, struct objfile **objf_p) { struct symbol *sym; + sym = lookup_symbol (name, 0, VAR_DOMAIN, 0); if (sym != NULL) { @@ -150,6 +153,7 @@ find_function_in_inferior (const char *name, struct objfile **objf_p) { struct minimal_symbol *msymbol = lookup_minimal_symbol (name, NULL, NULL); + if (msymbol != NULL) { struct objfile *objfile = msymbol_objfile (msymbol); @@ -232,6 +236,11 @@ value_cast_structs (struct type *type, struct value *v2) || TYPE_CODE (t2) == TYPE_CODE_UNION) && !!"Precondition is that value is of STRUCT or UNION kind"); + if (TYPE_NAME (t1) != NULL + && TYPE_NAME (t2) != NULL + && !strcmp (TYPE_NAME (t1), TYPE_NAME (t2))) + return NULL; + /* Upcasting: look in the type of the source to see if it contains the type of the target as a superclass. If so, we'll need to offset the pointer rather than just change its type. */ @@ -245,16 +254,40 @@ value_cast_structs (struct type *type, struct value *v2) /* Downcasting: look in the type of the target to see if it contains the type of the source as a superclass. If so, we'll need to - offset the pointer rather than just change its type. - FIXME: This fails silently with virtual inheritance. */ + offset the pointer rather than just change its type. */ if (TYPE_NAME (t2) != NULL) { + /* Try downcasting using the run-time type of the value. */ + int full, top, using_enc; + struct type *real_type; + + real_type = value_rtti_type (v2, &full, &top, &using_enc); + if (real_type) + { + v = value_full_object (v2, real_type, full, top, using_enc); + v = value_at_lazy (real_type, value_address (v)); + + /* We might be trying to cast to the outermost enclosing + type, in which case search_struct_field won't work. */ + if (TYPE_NAME (real_type) != NULL + && !strcmp (TYPE_NAME (real_type), TYPE_NAME (t1))) + return v; + + v = search_struct_field (type_name_no_tag (t2), v, 0, real_type, 1); + if (v) + return v; + } + + /* Try downcasting using information from the destination type + T2. This wouldn't work properly for classes with virtual + bases, but those were handled above. */ v = search_struct_field (type_name_no_tag (t2), value_zero (t1, not_lval), 0, t1, 1); if (v) { /* Downcasting is possible (t1 is superclass of v2). */ CORE_ADDR addr2 = value_address (v2); + addr2 -= value_address (v) + value_embedded_offset (v); return value_at (type, addr2); } @@ -272,7 +305,7 @@ value_cast_pointers (struct type *type, struct value *arg2) { struct type *type1 = check_typedef (type); struct type *type2 = check_typedef (value_type (arg2)); - struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type)); + struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type1)); struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2)); if (TYPE_CODE (t1) == TYPE_CODE_STRUCT @@ -292,6 +325,7 @@ value_cast_pointers (struct type *type, struct value *arg2) if (v2) { struct value *v = value_addr (v2); + deprecated_set_value_type (v, type); return v; } @@ -334,6 +368,7 @@ value_cast (struct type *type, struct value *arg2) struct type *t1 = check_typedef (type); struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1)); struct value *val = value_cast (dereftype, arg2); + return value_ref (val); } @@ -359,11 +394,13 @@ value_cast (struct type *type, struct value *arg2) { struct type *element_type = TYPE_TARGET_TYPE (type); unsigned element_length = TYPE_LENGTH (check_typedef (element_type)); + if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type)) { struct type *range_type = TYPE_INDEX_TYPE (type); int val_length = TYPE_LENGTH (type2); LONGEST low_bound, high_bound, new_length; + if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0) low_bound = 0, high_bound = 0; new_length = val_length / element_length; @@ -414,6 +451,7 @@ value_cast (struct type *type, struct value *arg2) && TYPE_NAME (type) != 0) { struct value *v = value_cast_structs (type, arg2); + if (v) return v; } @@ -474,8 +512,8 @@ value_cast (struct type *type, struct value *arg2) pointers and four byte addresses. */ int addr_bit = gdbarch_addr_bit (get_type_arch (type2)); - LONGEST longest = value_as_long (arg2); + if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT) { if (longest >= ((LONGEST) 1 << addr_bit) @@ -488,6 +526,7 @@ value_cast (struct type *type, struct value *arg2) && value_as_long (arg2) == 0) { struct value *result = allocate_value (type); + cplus_make_method_ptr (type, value_contents_writeable (result), 0, 0); return result; } @@ -522,14 +561,267 @@ value_cast (struct type *type, struct value *arg2) } } +/* The C++ reinterpret_cast operator. */ + +struct value * +value_reinterpret_cast (struct type *type, struct value *arg) +{ + struct value *result; + struct type *real_type = check_typedef (type); + struct type *arg_type, *dest_type; + int is_ref = 0; + enum type_code dest_code, arg_code; + + /* Do reference, function, and array conversion. */ + arg = coerce_array (arg); + + /* Attempt to preserve the type the user asked for. */ + dest_type = type; + + /* If we are casting to a reference type, transform + reinterpret_cast(V) to *reinterpret_cast(&V). */ + if (TYPE_CODE (real_type) == TYPE_CODE_REF) + { + is_ref = 1; + arg = value_addr (arg); + dest_type = lookup_pointer_type (TYPE_TARGET_TYPE (dest_type)); + real_type = lookup_pointer_type (real_type); + } + + arg_type = value_type (arg); + + dest_code = TYPE_CODE (real_type); + arg_code = TYPE_CODE (arg_type); + + /* We can convert pointer types, or any pointer type to int, or int + type to pointer. */ + if ((dest_code == TYPE_CODE_PTR && arg_code == TYPE_CODE_INT) + || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_PTR) + || (dest_code == TYPE_CODE_METHODPTR && arg_code == TYPE_CODE_INT) + || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_METHODPTR) + || (dest_code == TYPE_CODE_MEMBERPTR && arg_code == TYPE_CODE_INT) + || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_MEMBERPTR) + || (dest_code == arg_code + && (dest_code == TYPE_CODE_PTR + || dest_code == TYPE_CODE_METHODPTR + || dest_code == TYPE_CODE_MEMBERPTR))) + result = value_cast (dest_type, arg); + else + error (_("Invalid reinterpret_cast")); + + if (is_ref) + result = value_cast (type, value_ref (value_ind (result))); + + return result; +} + +/* A helper for value_dynamic_cast. This implements the first of two + runtime checks: we iterate over all the base classes of the value's + class which are equal to the desired class; if only one of these + holds the value, then it is the answer. */ + +static int +dynamic_cast_check_1 (struct type *desired_type, + const bfd_byte *contents, + CORE_ADDR address, + struct type *search_type, + CORE_ADDR arg_addr, + struct type *arg_type, + struct value **result) +{ + int i, result_count = 0; + + for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i) + { + int offset = baseclass_offset (search_type, i, contents, address); + + if (offset == -1) + error (_("virtual baseclass botch")); + if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i))) + { + if (address + offset >= arg_addr + && address + offset < arg_addr + TYPE_LENGTH (arg_type)) + { + ++result_count; + if (!*result) + *result = value_at_lazy (TYPE_BASECLASS (search_type, i), + address + offset); + } + } + else + result_count += dynamic_cast_check_1 (desired_type, + contents + offset, + address + offset, + TYPE_BASECLASS (search_type, i), + arg_addr, + arg_type, + result); + } + + return result_count; +} + +/* A helper for value_dynamic_cast. This implements the second of two + runtime checks: we look for a unique public sibling class of the + argument's declared class. */ + +static int +dynamic_cast_check_2 (struct type *desired_type, + const bfd_byte *contents, + CORE_ADDR address, + struct type *search_type, + struct value **result) +{ + int i, result_count = 0; + + for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i) + { + int offset; + + if (! BASETYPE_VIA_PUBLIC (search_type, i)) + continue; + + offset = baseclass_offset (search_type, i, contents, address); + if (offset == -1) + error (_("virtual baseclass botch")); + if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i))) + { + ++result_count; + if (*result == NULL) + *result = value_at_lazy (TYPE_BASECLASS (search_type, i), + address + offset); + } + else + result_count += dynamic_cast_check_2 (desired_type, + contents + offset, + address + offset, + TYPE_BASECLASS (search_type, i), + result); + } + + return result_count; +} + +/* The C++ dynamic_cast operator. */ + +struct value * +value_dynamic_cast (struct type *type, struct value *arg) +{ + int full, top, using_enc; + struct type *resolved_type = check_typedef (type); + struct type *arg_type = check_typedef (value_type (arg)); + struct type *class_type, *rtti_type; + struct value *result, *tem, *original_arg = arg; + CORE_ADDR addr; + int is_ref = TYPE_CODE (resolved_type) == TYPE_CODE_REF; + + if (TYPE_CODE (resolved_type) != TYPE_CODE_PTR + && TYPE_CODE (resolved_type) != TYPE_CODE_REF) + error (_("Argument to dynamic_cast must be a pointer or reference type")); + if (TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_VOID + && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_CLASS) + error (_("Argument to dynamic_cast must be pointer to class or `void *'")); + + class_type = check_typedef (TYPE_TARGET_TYPE (resolved_type)); + if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR) + { + if (TYPE_CODE (arg_type) != TYPE_CODE_PTR + && ! (TYPE_CODE (arg_type) == TYPE_CODE_INT + && value_as_long (arg) == 0)) + error (_("Argument to dynamic_cast does not have pointer type")); + if (TYPE_CODE (arg_type) == TYPE_CODE_PTR) + { + arg_type = check_typedef (TYPE_TARGET_TYPE (arg_type)); + if (TYPE_CODE (arg_type) != TYPE_CODE_CLASS) + error (_("Argument to dynamic_cast does not have pointer to class type")); + } + + /* Handle NULL pointers. */ + if (value_as_long (arg) == 0) + return value_zero (type, not_lval); + + arg = value_ind (arg); + } + else + { + if (TYPE_CODE (arg_type) != TYPE_CODE_CLASS) + error (_("Argument to dynamic_cast does not have class type")); + } + + /* If the classes are the same, just return the argument. */ + if (class_types_same_p (class_type, arg_type)) + return value_cast (type, arg); + + /* If the target type is a unique base class of the argument's + declared type, just cast it. */ + if (is_ancestor (class_type, arg_type)) + { + if (is_unique_ancestor (class_type, arg)) + return value_cast (type, original_arg); + error (_("Ambiguous dynamic_cast")); + } + + rtti_type = value_rtti_type (arg, &full, &top, &using_enc); + if (! rtti_type) + error (_("Couldn't determine value's most derived type for dynamic_cast")); + + /* Compute the most derived object's address. */ + addr = value_address (arg); + if (full) + { + /* Done. */ + } + else if (using_enc) + addr += top; + else + addr += top + value_embedded_offset (arg); + + /* dynamic_cast means to return a pointer to the + most-derived object. */ + if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR + && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) == TYPE_CODE_VOID) + return value_at_lazy (type, addr); + + tem = value_at (type, addr); + + /* The first dynamic check specified in 5.2.7. */ + if (is_public_ancestor (arg_type, TYPE_TARGET_TYPE (resolved_type))) + { + if (class_types_same_p (rtti_type, TYPE_TARGET_TYPE (resolved_type))) + return tem; + result = NULL; + if (dynamic_cast_check_1 (TYPE_TARGET_TYPE (resolved_type), + value_contents (tem), value_address (tem), + rtti_type, addr, + arg_type, + &result) == 1) + return value_cast (type, + is_ref ? value_ref (result) : value_addr (result)); + } + + /* The second dynamic check specified in 5.2.7. */ + result = NULL; + if (is_public_ancestor (arg_type, rtti_type) + && dynamic_cast_check_2 (TYPE_TARGET_TYPE (resolved_type), + value_contents (tem), value_address (tem), + rtti_type, &result) == 1) + return value_cast (type, + is_ref ? value_ref (result) : value_addr (result)); + + if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR) + return value_zero (type, not_lval); + + error (_("dynamic_cast failed")); +} + /* Create a value of type TYPE that is zero, and return it. */ struct value * value_zero (struct type *type, enum lval_type lv) { struct value *val = allocate_value (type); - VALUE_LVAL (val) = lv; + VALUE_LVAL (val) = lv; return val; } @@ -545,6 +837,7 @@ value_one (struct type *type, enum lval_type lv) { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); gdb_byte v[16]; + decimal_from_string (v, TYPE_LENGTH (type), byte_order, "1"); val = value_from_decfloat (type, v); } @@ -648,10 +941,17 @@ value_fetch_lazy (struct value *val) struct value *parent = value_parent (val); LONGEST offset = value_offset (val); LONGEST num = unpack_bits_as_long (value_type (val), - value_contents (parent) + offset, + (value_contents_for_printing (parent) + + offset), value_bitpos (val), value_bitsize (val)); int length = TYPE_LENGTH (type); + + if (!value_bits_valid (val, + TARGET_CHAR_BIT * offset + value_bitpos (val), + value_bitsize (val))) + error (_("value has been optimized out")); + store_signed_integer (value_contents_raw (val), length, byte_order, num); } else if (VALUE_LVAL (val) == lval_memory) @@ -828,8 +1128,8 @@ value_assign (struct value *toval, struct value *fromval) if (value_bitsize (toval)) { struct value *parent = value_parent (toval); - changed_addr = value_address (parent) + value_offset (toval); + changed_addr = value_address (parent) + value_offset (toval); changed_len = (value_bitpos (toval) + value_bitsize (toval) + HOST_CHAR_BIT - 1) @@ -861,8 +1161,8 @@ value_assign (struct value *toval, struct value *fromval) } write_memory (changed_addr, dest_buffer, changed_len); - if (deprecated_memory_changed_hook) - deprecated_memory_changed_hook (changed_addr, changed_len); + observer_notify_memory_changed (changed_addr, changed_len, + dest_buffer); } break; @@ -952,6 +1252,7 @@ value_assign (struct value *toval, struct value *fromval) { case lval_memory: case lval_register: + case lval_computed: reinit_frame_cache (); @@ -966,6 +1267,7 @@ value_assign (struct value *toval, struct value *fromval) { struct frame_info *fi = frame_find_by_id (old_frame); + if (fi != NULL) select_frame (fi); } @@ -1073,6 +1375,7 @@ address_of_variable (struct symbol *var, struct block *b) || TYPE_CODE (type) == TYPE_CODE_FUNC) { CORE_ADDR addr = value_address (val); + return value_from_pointer (lookup_pointer_type (type), addr); } @@ -1214,8 +1517,8 @@ struct value * value_addr (struct value *arg1) { struct value *arg2; - struct type *type = check_typedef (value_type (arg1)); + if (TYPE_CODE (type) == TYPE_CODE_REF) { /* Copy the value, but change the type from (T&) to (T*). We @@ -1257,8 +1560,8 @@ struct value * value_ref (struct value *arg1) { struct value *arg2; - struct type *type = check_typedef (value_type (arg1)); + if (TYPE_CODE (type) == TYPE_CODE_REF) return arg1; @@ -1283,6 +1586,7 @@ value_ind (struct value *arg1) if (TYPE_CODE (base_type) == TYPE_CODE_PTR) { struct type *enc_type; + /* We may be pointing to something embedded in a larger object. Get the real type of the enclosing object. */ enc_type = check_typedef (value_enclosing_type (arg1)); @@ -1334,7 +1638,6 @@ value_array (int lowbound, int highbound, struct value **elemvec) unsigned int typelength; struct value *val; struct type *arraytype; - CORE_ADDR addr; /* Validate that the bounds are reasonable and that each of the elements have the same size. */ @@ -1423,6 +1726,7 @@ value_bitstring (char *ptr, int len, struct type *index_type) struct type *domain_type = create_range_type (NULL, index_type, 0, len - 1); struct type *type = create_set_type (NULL, domain_type); + TYPE_CODE (type) = TYPE_CODE_BITSTRING; val = allocate_value (type); memcpy (value_contents_raw (val), ptr, TYPE_LENGTH (type)); @@ -1526,13 +1830,14 @@ typecmp (int staticp, int varargs, int nargs, fields, look for a baseclass named NAME. */ static struct value * -search_struct_field (char *name, struct value *arg1, int offset, +search_struct_field (const char *name, struct value *arg1, int offset, struct type *type, int looking_for_baseclass) { int i; - int nbases = TYPE_N_BASECLASSES (type); + int nbases; CHECK_TYPEDEF (type); + nbases = TYPE_N_BASECLASSES (type); if (!looking_for_baseclass) for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--) @@ -1542,11 +1847,12 @@ search_struct_field (char *name, struct value *arg1, int offset, if (t_field_name && (strcmp_iw (t_field_name, name) == 0)) { struct value *v; + if (field_is_static (&TYPE_FIELD (type, i))) { v = value_static_field (type, i); if (v == 0) - error (_("field %s is nonexistent or has been optimised out"), + error (_("field %s is nonexistent or has been optimized out"), name); } else @@ -1564,6 +1870,7 @@ search_struct_field (char *name, struct value *arg1, int offset, && (strcmp_iw (t_field_name, "else") == 0)))) { struct type *field_type = TYPE_FIELD_TYPE (type, i); + if (TYPE_CODE (field_type) == TYPE_CODE_UNION || TYPE_CODE (field_type) == TYPE_CODE_STRUCT) { @@ -1622,7 +1929,9 @@ search_struct_field (char *name, struct value *arg1, int offset, boffset = baseclass_offset (type, i, value_contents (arg1) + offset, - value_address (arg1) + offset); + value_address (arg1) + + value_embedded_offset (arg1) + + offset); if (boffset == -1) error (_("virtual baseclass botch")); @@ -1630,8 +1939,9 @@ search_struct_field (char *name, struct value *arg1, int offset, by the user program. Make sure that it still points to a valid memory location. */ - boffset += offset; - if (boffset < 0 || boffset >= TYPE_LENGTH (type)) + boffset += value_embedded_offset (arg1) + offset; + if (boffset < 0 + || boffset >= TYPE_LENGTH (value_enclosing_type (arg1))) { CORE_ADDR base_addr; @@ -1646,18 +1956,9 @@ search_struct_field (char *name, struct value *arg1, int offset, } else { - if (VALUE_LVAL (arg1) == lval_memory && value_lazy (arg1)) - v2 = allocate_value_lazy (basetype); - else - { - v2 = allocate_value (basetype); - memcpy (value_contents_raw (v2), - value_contents_raw (arg1) + boffset, - TYPE_LENGTH (basetype)); - } - set_value_component_location (v2, arg1); - VALUE_FRAME_ID (v2) = VALUE_FRAME_ID (arg1); - set_value_offset (v2, value_offset (arg1) + boffset); + v2 = value_copy (arg1); + deprecated_set_value_type (v2, basetype); + set_value_embedded_offset (v2, boffset); } if (found_baseclass) @@ -1688,7 +1989,7 @@ search_struct_field (char *name, struct value *arg1, int offset, (value) -1, else return NULL. */ static struct value * -search_struct_method (char *name, struct value **arg1p, +search_struct_method (const char *name, struct value **arg1p, struct value **args, int offset, int *static_memfuncp, struct type *type) { @@ -1701,6 +2002,7 @@ search_struct_method (char *name, struct value **arg1p, for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--) { char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i); + /* FIXME! May need to check for ARM demangling here */ if (strncmp (t_field_name, "__", 2) == 0 || strncmp (t_field_name, "op", 2) == 0 || @@ -1715,8 +2017,8 @@ search_struct_method (char *name, struct value **arg1p, { int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1; struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i); - name_matched = 1; + name_matched = 1; check_stub_method_group (type, i); if (j > 0 && args == 0) error (_("cannot resolve overloaded method `%s': no arguments supplied"), name); @@ -1765,6 +2067,7 @@ search_struct_method (char *name, struct value **arg1p, if (offset < 0 || offset >= TYPE_LENGTH (type)) { gdb_byte *tmp = alloca (TYPE_LENGTH (baseclass)); + if (target_read_memory (value_address (*arg1p) + offset, tmp, TYPE_LENGTH (baseclass)) != 0) error (_("virtual baseclass botch")); @@ -1818,7 +2121,7 @@ search_struct_method (char *name, struct value **arg1p, struct value * value_struct_elt (struct value **argp, struct value **args, - char *name, int *static_memfuncp, char *err) + const char *name, int *static_memfuncp, const char *err) { struct type *t; struct value *v; @@ -1913,7 +2216,7 @@ value_struct_elt (struct value **argp, struct value **args, */ static struct fn_field * -find_method_list (struct value **argp, char *method, +find_method_list (struct value **argp, const char *method, int offset, struct type *type, int *num_fns, struct type **basetype, int *boffset) { @@ -1928,6 +2231,7 @@ find_method_list (struct value **argp, char *method, { /* pai: FIXME What about operators and type conversions? */ char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i); + if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0)) { int len = TYPE_FN_FIELDLIST_LENGTH (type, i); @@ -1948,6 +2252,7 @@ find_method_list (struct value **argp, char *method, for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--) { int base_offset; + if (BASETYPE_VIA_VIRTUAL (type, i)) { base_offset = value_offset (*argp) + offset; @@ -1983,7 +2288,7 @@ find_method_list (struct value **argp, char *method, */ struct fn_field * -value_find_oload_method_list (struct value **argp, char *method, +value_find_oload_method_list (struct value **argp, const char *method, int offset, int *num_fns, struct type **basetype, int *boffset) { @@ -2017,6 +2322,16 @@ value_find_oload_method_list (struct value **argp, char *method, matches on the argument types according to the overload resolution rules. + METHOD can be one of three values: + NON_METHOD for non-member functions. + METHOD: for member functions. + BOTH: used for overload resolution of operators where the + candidates are expected to be either member or non member + functions. In this case the first argument ARGTYPES + (representing 'this') is expected to be a reference to the + target object, and will be dereferenced when attempting the + non-member search. + In the case of class methods, the parameter OBJ is an object value in which to search for overloaded methods. @@ -2033,6 +2348,10 @@ value_find_oload_method_list (struct value **argp, char *method, If a method is being searched for, and it is a static method, then STATICP will point to a non-zero value. + If NO_ADL argument dependent lookup is disabled. This is used to prevent + ADL overload candidates when performing overload resolution for a fully + qualified name. + Note: This function does *not* check the value of overload_resolution. Caller must check it to see whether overload resolution is permitted. @@ -2040,16 +2359,20 @@ value_find_oload_method_list (struct value **argp, char *method, int find_overload_match (struct type **arg_types, int nargs, - char *name, int method, int lax, - struct value **objp, struct symbol *fsym, + const char *name, enum oload_search_type method, + int lax, struct value **objp, struct symbol *fsym, struct value **valp, struct symbol **symp, - int *staticp) + int *staticp, const int no_adl) { struct value *obj = (objp ? *objp : NULL); /* Index of best overloaded function. */ - int oload_champ; + int func_oload_champ = -1; + int method_oload_champ = -1; + /* The measure for the current best match. */ - struct badness_vector *oload_champ_bv = NULL; + struct badness_vector *method_badness = NULL; + struct badness_vector *func_badness = NULL; + struct value *temp = obj; /* For methods, the list of overloaded methods. */ struct fn_field *fns_ptr = NULL; @@ -2059,29 +2382,46 @@ find_overload_match (struct type **arg_types, int nargs, int num_fns = 0; struct type *basetype = NULL; int boffset; - int ix; - int static_offset; - struct cleanup *old_cleanups = NULL; + + struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL); const char *obj_type_name = NULL; - char *func_name = NULL; + const char *func_name = NULL; enum oload_classification match_quality; + enum oload_classification method_match_quality = INCOMPATIBLE; + enum oload_classification func_match_quality = INCOMPATIBLE; /* Get the list of overloaded methods or functions. */ - if (method) + if (method == METHOD || method == BOTH) { gdb_assert (obj); + + /* OBJ may be a pointer value rather than the object itself. */ + obj = coerce_ref (obj); + while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR) + obj = coerce_ref (value_ind (obj)); obj_type_name = TYPE_NAME (value_type (obj)); - /* Hack: evaluate_subexp_standard often passes in a pointer - value rather than the object itself, so try again. */ - if ((!obj_type_name || !*obj_type_name) - && (TYPE_CODE (value_type (obj)) == TYPE_CODE_PTR)) - obj_type_name = TYPE_NAME (TYPE_TARGET_TYPE (value_type (obj))); + /* First check whether this is a data member, e.g. a pointer to + a function. */ + if (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_STRUCT) + { + *valp = search_struct_field (name, obj, 0, + check_typedef (value_type (obj)), 0); + if (*valp) + { + *staticp = 1; + return 0; + } + } + + /* Retrieve the list of methods with the name NAME. */ fns_ptr = value_find_oload_method_list (&temp, name, 0, &num_fns, &basetype, &boffset); - if (!fns_ptr || !num_fns) + /* If this is a method only search, and no methods were found + the search has faild. */ + if (method == METHOD && (!fns_ptr || !num_fns)) error (_("Couldn't find method %s%s%s"), obj_type_name, (obj_type_name && *obj_type_name) ? "::" : "", @@ -2089,50 +2429,136 @@ find_overload_match (struct type **arg_types, int nargs, /* If we are dealing with stub method types, they should have been resolved by find_method_list via value_find_oload_method_list above. */ - gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL); - oload_champ = find_oload_champ (arg_types, nargs, method, - num_fns, fns_ptr, - oload_syms, &oload_champ_bv); + if (fns_ptr) + { + gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL); + method_oload_champ = find_oload_champ (arg_types, nargs, method, + num_fns, fns_ptr, + oload_syms, &method_badness); + + method_match_quality = + classify_oload_match (method_badness, nargs, + oload_method_static (method, fns_ptr, + method_oload_champ)); + + make_cleanup (xfree, method_badness); + } + } - else + + if (method == NON_METHOD || method == BOTH) { - const char *qualified_name = SYMBOL_CPLUS_DEMANGLED_NAME (fsym); + const char *qualified_name = NULL; - /* If we have a C++ name, try to extract just the function - part. */ - if (qualified_name) - func_name = cp_func_name (qualified_name); + /* If the the overload match is being search for both + as a method and non member function, the first argument + must now be dereferenced. */ + if (method == BOTH) + arg_types[0] = TYPE_TARGET_TYPE (arg_types[0]); - /* If there was no C++ name, this must be a C-style function. - Just return the same symbol. Do the same if cp_func_name - fails for some reason. */ + if (fsym) + { + qualified_name = SYMBOL_NATURAL_NAME (fsym); + + /* If we have a function with a C++ name, try to extract just + the function part. Do not try this for non-functions (e.g. + function pointers). */ + if (qualified_name + && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym))) == TYPE_CODE_FUNC) + { + char *temp; + + temp = cp_func_name (qualified_name); + + /* If cp_func_name did not remove anything, the name of the + symbol did not include scope or argument types - it was + probably a C-style function. */ + if (temp) + { + make_cleanup (xfree, temp); + if (strcmp (temp, qualified_name) == 0) + func_name = NULL; + else + func_name = temp; + } + } + } + else + { + func_name = name; + qualified_name = name; + } + + /* If there was no C++ name, this must be a C-style function or + not a function at all. Just return the same symbol. Do the + same if cp_func_name fails for some reason. */ if (func_name == NULL) { *symp = fsym; return 0; } - old_cleanups = make_cleanup (xfree, func_name); - make_cleanup (xfree, oload_syms); - make_cleanup (xfree, oload_champ_bv); + func_oload_champ = find_oload_champ_namespace (arg_types, nargs, + func_name, + qualified_name, + &oload_syms, + &func_badness, + no_adl); - oload_champ = find_oload_champ_namespace (arg_types, nargs, - func_name, - qualified_name, - &oload_syms, - &oload_champ_bv); + if (func_oload_champ >= 0) + func_match_quality = classify_oload_match (func_badness, nargs, 0); + + make_cleanup (xfree, oload_syms); + make_cleanup (xfree, func_badness); } - /* Check how bad the best match is. */ + /* Did we find a match ? */ + if (method_oload_champ == -1 && func_oload_champ == -1) + error (_("No symbol \"%s\" in current context."), name); - match_quality = - classify_oload_match (oload_champ_bv, nargs, - oload_method_static (method, fns_ptr, - oload_champ)); + /* If we have found both a method match and a function + match, find out which one is better, and calculate match + quality. */ + if (method_oload_champ >= 0 && func_oload_champ >= 0) + { + switch (compare_badness (func_badness, method_badness)) + { + case 0: /* Top two contenders are equally good. */ + /* FIXME: GDB does not support the general ambiguous + case. All candidates should be collected and presented + the the user. */ + error (_("Ambiguous overload resolution")); + break; + case 1: /* Incomparable top contenders. */ + /* This is an error incompatible candidates + should not have been proposed. */ + error (_("Internal error: incompatible overload candidates proposed")); + break; + case 2: /* Function champion. */ + method_oload_champ = -1; + match_quality = func_match_quality; + break; + case 3: /* Method champion. */ + func_oload_champ = -1; + match_quality = method_match_quality; + break; + default: + error (_("Internal error: unexpected overload comparison result")); + break; + } + } + else + { + /* We have either a method match or a function match. */ + if (method_oload_champ >= 0) + match_quality = method_match_quality; + else + match_quality = func_match_quality; + } if (match_quality == INCOMPATIBLE) { - if (method) + if (method == METHOD) error (_("Cannot resolve method %s%s%s to any overloaded instance"), obj_type_name, (obj_type_name && *obj_type_name) ? "::" : "", @@ -2143,7 +2569,7 @@ find_overload_match (struct type **arg_types, int nargs, } else if (match_quality == NON_STANDARD) { - if (method) + if (method == METHOD) warning (_("Using non-standard conversion to match method %s%s%s to supplied arguments"), obj_type_name, (obj_type_name && *obj_type_name) ? "::" : "", @@ -2153,26 +2579,26 @@ find_overload_match (struct type **arg_types, int nargs, func_name); } - if (method) + if (staticp != NULL) + *staticp = oload_method_static (method, fns_ptr, method_oload_champ); + + if (method_oload_champ >= 0) { - if (staticp != NULL) - *staticp = oload_method_static (method, fns_ptr, oload_champ); - if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, oload_champ)) - *valp = value_virtual_fn_field (&temp, fns_ptr, oload_champ, + if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, method_oload_champ)) + *valp = value_virtual_fn_field (&temp, fns_ptr, method_oload_champ, basetype, boffset); else - *valp = value_fn_field (&temp, fns_ptr, oload_champ, + *valp = value_fn_field (&temp, fns_ptr, method_oload_champ, basetype, boffset); } else - { - *symp = oload_syms[oload_champ]; - } + *symp = oload_syms[func_oload_champ]; if (objp) { struct type *temp_type = check_typedef (value_type (temp)); struct type *obj_type = check_typedef (value_type (*objp)); + if (TYPE_CODE (temp_type) != TYPE_CODE_PTR && (TYPE_CODE (obj_type) == TYPE_CODE_PTR || TYPE_CODE (obj_type) == TYPE_CODE_REF)) @@ -2181,8 +2607,8 @@ find_overload_match (struct type **arg_types, int nargs, } *objp = temp; } - if (old_cleanups != NULL) - do_cleanups (old_cleanups); + + do_cleanups (all_cleanups); switch (match_quality) { @@ -2200,14 +2626,16 @@ find_overload_match (struct type **arg_types, int nargs, runs out of namespaces. It stores the overloaded functions in *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV. The calling function is responsible for freeing *OLOAD_SYMS and - *OLOAD_CHAMP_BV. */ + *OLOAD_CHAMP_BV. If NO_ADL, argument dependent lookup is not + performned. */ static int find_oload_champ_namespace (struct type **arg_types, int nargs, const char *func_name, const char *qualified_name, struct symbol ***oload_syms, - struct badness_vector **oload_champ_bv) + struct badness_vector **oload_champ_bv, + const int no_adl) { int oload_champ; @@ -2215,7 +2643,8 @@ find_oload_champ_namespace (struct type **arg_types, int nargs, func_name, qualified_name, 0, oload_syms, oload_champ_bv, - &oload_champ); + &oload_champ, + no_adl); return oload_champ; } @@ -2223,7 +2652,8 @@ find_oload_champ_namespace (struct type **arg_types, int nargs, /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is how deep we've looked for namespaces, and the champ is stored in OLOAD_CHAMP. The return value is 1 if the champ is a good one, 0 - if it isn't. + if it isn't. Other arguments are the same as in + find_oload_champ_namespace It is the caller's responsibility to free *OLOAD_SYMS and *OLOAD_CHAMP_BV. */ @@ -2235,7 +2665,8 @@ find_oload_champ_namespace_loop (struct type **arg_types, int nargs, int namespace_len, struct symbol ***oload_syms, struct badness_vector **oload_champ_bv, - int *oload_champ) + int *oload_champ, + const int no_adl) { int next_namespace_len = namespace_len; int searched_deeper = 0; @@ -2269,7 +2700,7 @@ find_oload_champ_namespace_loop (struct type **arg_types, int nargs, func_name, qualified_name, next_namespace_len, oload_syms, oload_champ_bv, - oload_champ)) + oload_champ, no_adl)) { return 1; } @@ -2290,6 +2721,12 @@ find_oload_champ_namespace_loop (struct type **arg_types, int nargs, new_namespace[namespace_len] = '\0'; new_oload_syms = make_symbol_overload_list (func_name, new_namespace); + + /* If we have reached the deepest level perform argument + determined lookup. */ + if (!searched_deeper && !no_adl) + make_symbol_overload_list_adl (arg_types, nargs, func_name); + while (new_oload_syms[num_fns]) ++num_fns; @@ -2322,7 +2759,6 @@ find_oload_champ_namespace_loop (struct type **arg_types, int nargs, } else { - gdb_assert (new_oload_champ != -1); *oload_syms = new_oload_syms; *oload_champ = new_oload_champ; *oload_champ_bv = new_oload_champ_bv; @@ -2445,7 +2881,8 @@ find_oload_champ (struct type **arg_types, int nargs, int method, static int oload_method_static (int method, struct fn_field *fns_ptr, int index) { - if (method && TYPE_FN_FIELD_STATIC_P (fns_ptr, index)) + if (method && fns_ptr && index >= 0 + && TYPE_FN_FIELD_STATIC_P (fns_ptr, index)) return 1; else return 0; @@ -2506,9 +2943,13 @@ check_field (struct type *type, const char *name) { int i; + /* The type may be a stub. */ + CHECK_TYPEDEF (type); + for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--) { char *t_field_name = TYPE_FIELD_NAME (type, i); + if (t_field_name && (strcmp_iw (t_field_name, name) == 0)) return 1; } @@ -2536,8 +2977,8 @@ check_field (struct type *type, const char *name) the comment before value_struct_elt_for_reference. */ struct value * -value_aggregate_elt (struct type *curtype, - char *name, int want_address, +value_aggregate_elt (struct type *curtype, char *name, + struct type *expect_type, int want_address, enum noside noside) { switch (TYPE_CODE (curtype)) @@ -2545,7 +2986,7 @@ value_aggregate_elt (struct type *curtype, case TYPE_CODE_STRUCT: case TYPE_CODE_UNION: return value_struct_elt_for_reference (curtype, 0, curtype, - name, NULL, + name, expect_type, want_address, noside); case TYPE_CODE_NAMESPACE: return value_namespace_elt (curtype, name, @@ -2556,6 +2997,58 @@ value_aggregate_elt (struct type *curtype, } } +/* Compares the two method/function types T1 and T2 for "equality" + with respect to the the methods' parameters. If the types of the + two parameter lists are the same, returns 1; 0 otherwise. This + comparison may ignore any artificial parameters in T1 if + SKIP_ARTIFICIAL is non-zero. This function will ALWAYS skip + the first artificial parameter in T1, assumed to be a 'this' pointer. + + The type T2 is expected to have come from make_params (in eval.c). */ + +static int +compare_parameters (struct type *t1, struct type *t2, int skip_artificial) +{ + int start = 0; + + if (TYPE_FIELD_ARTIFICIAL (t1, 0)) + ++start; + + /* If skipping artificial fields, find the first real field + in T1. */ + if (skip_artificial) + { + while (start < TYPE_NFIELDS (t1) + && TYPE_FIELD_ARTIFICIAL (t1, start)) + ++start; + } + + /* Now compare parameters */ + + /* Special case: a method taking void. T1 will contain no + non-artificial fields, and T2 will contain TYPE_CODE_VOID. */ + if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1 + && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID) + return 1; + + if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2)) + { + int i; + + for (i = 0; i < TYPE_NFIELDS (t2); ++i) + { + if (rank_one_type (TYPE_FIELD_TYPE (t1, start + i), + TYPE_FIELD_TYPE (t2, i)) + != 0) + return 0; + } + + return 1; + } + + return 0; +} + /* C++: Given an aggregate type CURTYPE, and a member name NAME, return the address of this member as a "pointer to member" type. If INTYPE is non-null, then it will be the type of the member we @@ -2633,29 +3126,55 @@ value_struct_elt_for_reference (struct type *domain, int offset, } if (t_field_name && strcmp (t_field_name, name) == 0) { - int j = TYPE_FN_FIELDLIST_LENGTH (t, i); + int j; + int len = TYPE_FN_FIELDLIST_LENGTH (t, i); struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i); check_stub_method_group (t, i); - if (intype == 0 && j > 1) - error (_("non-unique member `%s' requires type instantiation"), name); if (intype) { - while (j--) - if (TYPE_FN_FIELD_TYPE (f, j) == intype) - break; - if (j < 0) + for (j = 0; j < len; ++j) + { + if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0) + || compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 1)) + break; + } + + if (j == len) error (_("no member function matches that type instantiation")); } else - j = 0; + { + int ii; + + j = -1; + for (ii = 0; ii < TYPE_FN_FIELDLIST_LENGTH (t, i); + ++ii) + { + /* Skip artificial methods. This is necessary if, + for example, the user wants to "print + subclass::subclass" with only one user-defined + constructor. There is no ambiguity in this + case. */ + if (TYPE_FN_FIELD_ARTIFICIAL (f, ii)) + continue; + + /* Desired method is ambiguous if more than one + method is defined. */ + if (j != -1) + error (_("non-unique member `%s' requires type instantiation"), name); + + j = ii; + } + } if (TYPE_FN_FIELD_STATIC_P (f, j)) { struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j), 0, VAR_DOMAIN, 0); + if (s == NULL) return NULL; @@ -2686,6 +3205,7 @@ value_struct_elt_for_reference (struct type *domain, int offset, struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j), 0, VAR_DOMAIN, 0); + if (s == NULL) return NULL; @@ -2763,9 +3283,17 @@ value_maybe_namespace_elt (const struct type *curtype, struct symbol *sym; struct value *result; - sym = cp_lookup_symbol_namespace (namespace_name, name, NULL, - get_selected_block (0), - VAR_DOMAIN); + sym = cp_lookup_symbol_namespace (namespace_name, name, + get_selected_block (0), VAR_DOMAIN); + + if (sym == NULL) + { + char *concatenated_name = alloca (strlen (namespace_name) + 2 + + strlen (name) + 1); + + sprintf (concatenated_name, "%s::%s", namespace_name, name); + sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN); + } if (sym == NULL) return NULL; @@ -2907,7 +3435,7 @@ value_of_local (const char *name, int complain) /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER symbol instead of the LOC_ARG one (if both exist). */ - sym = lookup_block_symbol (b, name, NULL, VAR_DOMAIN); + sym = lookup_block_symbol (b, name, VAR_DOMAIN); if (sym == NULL) { if (complain) @@ -2981,11 +3509,13 @@ value_slice (struct value *array, int lowbound, int length) int element = value_bit_index (array_type, value_contents (array), lowbound + i); + if (element < 0) error (_("internal error accessing bitstring")); else if (element > 0) { int j = i % TARGET_CHAR_BIT; + if (gdbarch_bits_big_endian (get_type_arch (array_type))) j = TARGET_CHAR_BIT - 1 - j; value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j); diff --git a/contrib/gdb-7/gdb/valprint.c b/contrib/gdb-7/gdb/valprint.c index cbb5d94a9e..ad6268e2c4 100644 --- a/contrib/gdb-7/gdb/valprint.c +++ b/contrib/gdb-7/gdb/valprint.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -35,6 +35,7 @@ #include "exceptions.h" #include "dfp.h" #include "python/python.h" +#include "ada-lang.h" #include @@ -244,6 +245,39 @@ scalar_type_p (struct type *type) } } +/* Helper function to check the validity of some bits of a value. + + If TYPE represents some aggregate type (e.g., a structure), return 1. + + Otherwise, any of the bytes starting at OFFSET and extending for + TYPE_LENGTH(TYPE) bytes are invalid, print a message to STREAM and + return 0. The checking is done using FUNCS. + + Otherwise, return 1. */ + +static int +valprint_check_validity (struct ui_file *stream, + struct type *type, + int offset, + const struct value *val) +{ + CHECK_TYPEDEF (type); + + if (TYPE_CODE (type) != TYPE_CODE_UNION + && TYPE_CODE (type) != TYPE_CODE_STRUCT + && TYPE_CODE (type) != TYPE_CODE_ARRAY) + { + if (! value_bits_valid (val, TARGET_CHAR_BIT * offset, + TARGET_CHAR_BIT * TYPE_LENGTH (type))) + { + fprintf_filtered (stream, _("")); + return 0; + } + } + + return 1; +} + /* Print using the given LANGUAGE the data of type TYPE located at VALADDR (within GDB), which came from the inferior at address ADDRESS, onto stdio stream STREAM according to OPTIONS. @@ -262,6 +296,7 @@ scalar_type_p (struct type *type) int val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, const struct language_defn *language) { @@ -282,16 +317,19 @@ val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, if (TYPE_STUB (real_type)) { - fprintf_filtered (stream, ""); + fprintf_filtered (stream, _("")); gdb_flush (stream); return (0); } + if (!valprint_check_validity (stream, real_type, embedded_offset, val)) + return 0; + if (!options->raw) { ret = apply_val_pretty_printer (type, valaddr, embedded_offset, - address, stream, recurse, options, - language); + address, stream, recurse, + val, options, language); if (ret) return ret; } @@ -307,7 +345,8 @@ val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, TRY_CATCH (except, RETURN_MASK_ERROR) { ret = language->la_val_print (type, valaddr, embedded_offset, address, - stream, recurse, &local_opts); + stream, recurse, val, + &local_opts); } if (except.reason < 0) fprintf_filtered (stream, _("")); @@ -328,7 +367,7 @@ value_check_printable (struct value *val, struct ui_file *stream) return 0; } - if (value_optimized_out (val)) + if (value_entirely_optimized_out (val)) { fprintf_filtered (stream, _("")); return 0; @@ -361,15 +400,24 @@ common_val_print (struct value *val, struct ui_file *stream, int recurse, if (!value_check_printable (val, stream)) return 0; - return val_print (value_type (val), value_contents_all (val), + if (language->la_language == language_ada) + /* The value might have a dynamic type, which would cause trouble + below when trying to extract the value contents (since the value + size is determined from the type size which is unknown). So + get a fixed representation of our value. */ + val = ada_to_fixed_value (val); + + return val_print (value_type (val), value_contents_for_printing (val), value_embedded_offset (val), value_address (val), - stream, recurse, options, language); + stream, recurse, + val, options, language); } -/* Print the value VAL in C-ish syntax on stream STREAM according to - OPTIONS. - If the object printed is a string pointer, returns - the number of string bytes printed. */ +/* Print on stream STREAM the value VAL according to OPTIONS. The value + is printed using the current_language syntax. + + If the object printed is a string pointer, return the number of string + bytes printed. */ int value_print (struct value *val, struct ui_file *stream, @@ -381,11 +429,12 @@ value_print (struct value *val, struct ui_file *stream, if (!options->raw) { int r = apply_val_pretty_printer (value_type (val), - value_contents_all (val), + value_contents_for_printing (val), value_embedded_offset (val), value_address (val), - stream, 0, options, - current_language); + stream, 0, + val, options, current_language); + if (r) return r; } @@ -1024,44 +1073,27 @@ print_char_chars (struct ui_file *stream, struct type *type, Return 1 if the operation was successful. Return zero otherwise, in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified. - - Computing the array upper and lower bounds is pretty easy, but this - function does some additional verifications before returning them. - If something incorrect is detected, it is better to return a status - rather than throwing an error, making it easier for the caller to - implement an error-recovery plan. For instance, it may decide to - warn the user that the bounds were not found and then use some - default values instead. */ + + We now simply use get_discrete_bounds call to get the values + of the low and high bounds. + get_discrete_bounds can return three values: + 1, meaning that index is a range, + 0, meaning that index is a discrete type, + or -1 for failure. */ int -get_array_bounds (struct type *type, long *low_bound, long *high_bound) +get_array_bounds (struct type *type, LONGEST *low_bound, LONGEST *high_bound) { struct type *index = TYPE_INDEX_TYPE (type); - long low = 0; - long high = 0; - + LONGEST low = 0; + LONGEST high = 0; + int res; + if (index == NULL) return 0; - if (TYPE_CODE (index) == TYPE_CODE_RANGE) - { - low = TYPE_LOW_BOUND (index); - high = TYPE_HIGH_BOUND (index); - } - else if (TYPE_CODE (index) == TYPE_CODE_ENUM) - { - const int n_enums = TYPE_NFIELDS (index); - - low = TYPE_FIELD_BITPOS (index, 0); - high = TYPE_FIELD_BITPOS (index, n_enums - 1); - } - else - return 0; - - /* Abort if the lower bound is greater than the higher bound, except - when low = high + 1. This is a very common idiom used in Ada when - defining empty ranges (for instance "range 1 .. 0"). */ - if (low > high + 1) + res = get_discrete_bounds (index, &low, &high); + if (res == -1) return 0; if (low_bound) @@ -1104,6 +1136,7 @@ void val_print_array_elements (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, unsigned int i) { @@ -1116,7 +1149,7 @@ val_print_array_elements (struct type *type, const gdb_byte *valaddr, unsigned int rep1; /* Number of repetitions we have detected so far. */ unsigned int reps; - long low_bound_index = 0; + LONGEST low_bound_index = 0; elttype = TYPE_TARGET_TYPE (type); eltlen = TYPE_LENGTH (check_typedef (elttype)); @@ -1131,7 +1164,8 @@ val_print_array_elements (struct type *type, const gdb_byte *valaddr, len = TYPE_LENGTH (type) / eltlen; else { - long low, hi; + LONGEST low, hi; + if (get_array_bounds (type, &low, &hi)) len = hi - low + 1; else @@ -1181,7 +1215,7 @@ val_print_array_elements (struct type *type, const gdb_byte *valaddr, if (reps > options->repeat_count_threshold) { val_print (elttype, valaddr + i * eltlen, 0, address + i * eltlen, - stream, recurse + 1, options, current_language); + stream, recurse + 1, val, options, current_language); annotate_elt_rep (reps); fprintf_filtered (stream, " ", reps); annotate_elt_rep_end (); @@ -1192,7 +1226,7 @@ val_print_array_elements (struct type *type, const gdb_byte *valaddr, else { val_print (elttype, valaddr + i * eltlen, 0, address + i * eltlen, - stream, recurse + 1, options, current_language); + stream, recurse + 1, val, options, current_language); annotate_elt (); things_printed++; } @@ -1451,7 +1485,8 @@ val_print_string (struct type *elttype, CORE_ADDR addr, int len, { fputs_filtered (" ", stream); } - LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width, force_ellipsis, options); + LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width, + NULL, force_ellipsis, options); } if (errcode != 0) @@ -1621,8 +1656,6 @@ show_print (char *args, int from_tty) void _initialize_valprint (void) { - struct cmd_list_element *c; - add_prefix_cmd ("print", no_class, set_print, _("Generic command for setting how things print."), &setprintlist, "set print ", 0, &setlist); diff --git a/contrib/gdb-7/gdb/valprint.h b/contrib/gdb-7/gdb/valprint.h index c0be1162f9..6e339d11c5 100644 --- a/contrib/gdb-7/gdb/valprint.h +++ b/contrib/gdb-7/gdb/valprint.h @@ -1,7 +1,7 @@ /* Declarations for value printing routines for GDB, the GNU debugger. Copyright (C) 1986, 1988, 1989, 1991, 1992, 1993, 1994, 2000, 2005, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -109,8 +109,8 @@ extern void get_raw_print_options (struct value_print_options *opts); extern void get_formatted_print_options (struct value_print_options *opts, char format); -extern int get_array_bounds (struct type *type, long *low_bound, - long *high_bound); +extern int get_array_bounds (struct type *type, LONGEST *low_bound, + LONGEST *high_bound); extern void maybe_print_array_index (struct type *index_type, LONGEST index, struct ui_file *stream, @@ -118,6 +118,7 @@ extern void maybe_print_array_index (struct type *index_type, LONGEST index, extern void val_print_array_elements (struct type *, const gdb_byte *, CORE_ADDR, struct ui_file *, int, + const struct value *, const struct value_print_options *, unsigned int); diff --git a/contrib/gdb-7/gdb/value.c b/contrib/gdb-7/gdb/value.c index 589e03b149..d55240216b 100644 --- a/contrib/gdb-7/gdb/value.c +++ b/contrib/gdb-7/gdb/value.c @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -254,7 +254,14 @@ struct value * allocate_value_lazy (struct type *type) { struct value *val; - struct type *atype = check_typedef (type); + + /* Call check_typedef on our type to make sure that, if TYPE + is a TYPE_CODE_TYPEDEF, its length is set to the length + of the target type instead of zero. However, we do not + replace the typedef type by the target type, because we want + to keep the typedef in order to be able to set the VAL's type + description correctly. */ + check_typedef (type); val = (struct value *) xzalloc (sizeof (struct value)); val->contents = NULL; @@ -297,6 +304,7 @@ struct value * allocate_value (struct type *type) { struct value *val = allocate_value_lazy (type); + allocate_value_contents (val); val->lazy = 0; return val; @@ -313,6 +321,7 @@ allocate_repeat_value (struct type *type, int count) done with it. */ struct type *array_type = lookup_array_range_type (type, low_bound, count + low_bound - 1); + return allocate_value (array_type); } @@ -322,6 +331,7 @@ allocate_computed_value (struct type *type, void *closure) { struct value *v = allocate_value (type); + VALUE_LVAL (v) = lval_computed; v->location.computed.funcs = funcs; v->location.computed.closure = closure; @@ -339,7 +349,7 @@ value_next (struct value *value) } struct type * -value_type (struct value *value) +value_type (const struct value *value) { return value->type; } @@ -350,7 +360,7 @@ deprecated_set_value_type (struct value *value, struct type *type) } int -value_offset (struct value *value) +value_offset (const struct value *value) { return value->offset; } @@ -361,7 +371,7 @@ set_value_offset (struct value *value, int offset) } int -value_bitpos (struct value *value) +value_bitpos (const struct value *value) { return value->bitpos; } @@ -372,7 +382,7 @@ set_value_bitpos (struct value *value, int bit) } int -value_bitsize (struct value *value) +value_bitsize (const struct value *value) { return value->bitsize; } @@ -408,14 +418,29 @@ value_enclosing_type (struct value *value) return value->enclosing_type; } +static void +require_not_optimized_out (struct value *value) +{ + if (value->optimized_out) + error (_("value has been optimized out")); +} + const gdb_byte * -value_contents_all (struct value *value) +value_contents_for_printing (struct value *value) { if (value->lazy) value_fetch_lazy (value); return value->contents; } +const gdb_byte * +value_contents_all (struct value *value) +{ + const gdb_byte *result = value_contents_for_printing (value); + require_not_optimized_out (value); + return result; +} + int value_lazy (struct value *value) { @@ -443,7 +468,9 @@ set_value_stack (struct value *value, int val) const gdb_byte * value_contents (struct value *value) { - return value_contents_writeable (value); + const gdb_byte *result = value_contents_writeable (value); + require_not_optimized_out (value); + return result; } gdb_byte * @@ -486,6 +513,29 @@ set_value_optimized_out (struct value *value, int val) value->optimized_out = val; } +int +value_entirely_optimized_out (const struct value *value) +{ + if (!value->optimized_out) + return 0; + if (value->lval != lval_computed + || !value->location.computed.funcs->check_validity) + return 1; + return !value->location.computed.funcs->check_any_valid (value); +} + +int +value_bits_valid (const struct value *value, int offset, int length) +{ + if (value == NULL || !value->optimized_out) + return 1; + if (value->lval != lval_computed + || !value->location.computed.funcs->check_validity) + return 0; + return value->location.computed.funcs->check_validity (value, offset, + length); +} + int value_embedded_offset (struct value *value) { @@ -519,9 +569,9 @@ value_computed_funcs (struct value *v) } void * -value_computed_closure (struct value *v) +value_computed_closure (const struct value *v) { - gdb_assert (VALUE_LVAL (v) == lval_computed); + gdb_assert (v->lval == lval_computed); return v->location.computed.closure; } @@ -672,6 +722,20 @@ free_all_values (void) all_values = 0; } +/* Frees all the elements in a chain of values. */ + +void +free_value_chain (struct value *v) +{ + struct value *next; + + for (; v; v = next) + { + next = value_next (v); + value_free (v); + } +} + /* Remove VAL from the chain all_values so it will not be freed automatically. */ @@ -761,15 +825,16 @@ value_copy (struct value *arg) } void -set_value_component_location (struct value *component, struct value *whole) +set_value_component_location (struct value *component, + const struct value *whole) { - if (VALUE_LVAL (whole) == lval_internalvar) + if (whole->lval == lval_internalvar) VALUE_LVAL (component) = lval_internalvar_component; else - VALUE_LVAL (component) = VALUE_LVAL (whole); + VALUE_LVAL (component) = whole->lval; component->location = whole->location; - if (VALUE_LVAL (whole) == lval_computed) + if (whole->lval == lval_computed) { struct lval_funcs *funcs = whole->location.computed.funcs; @@ -810,7 +875,8 @@ record_latest_value (struct value *val) if (i == 0) { struct value_history_chunk *new - = (struct value_history_chunk *) + = (struct value_history_chunk *) + xmalloc (sizeof (struct value_history_chunk)); memset (new->values, 0, sizeof new->values); new->next = value_history_chain; @@ -887,6 +953,7 @@ show_values (char *num_exp, int from_tty) for (i = num; i < num + 10 && i <= value_history_count; i++) { struct value_print_options opts; + val = access_value_history (i); printf_filtered (("$%d = "), i); get_user_print_options (&opts); @@ -1047,6 +1114,7 @@ struct internalvar * create_internalvar (const char *name) { struct internalvar *var; + var = (struct internalvar *) xmalloc (sizeof (struct internalvar)); var->name = concat (name, (char *)NULL); var->kind = INTERNALVAR_VOID; @@ -1064,6 +1132,7 @@ struct internalvar * create_internalvar_type_lazy (char *name, internalvar_make_value fun) { struct internalvar *var = create_internalvar (name); + var->kind = INTERNALVAR_MAKE_VALUE; var->u.make_value = fun; return var; @@ -1347,6 +1416,7 @@ create_internal_function (const char *name, internal_function_fn handler, void *cookie) { struct internal_function *ifn = XNEW (struct internal_function); + ifn->name = xstrdup (name); ifn->handler = handler; ifn->cookie = cookie; @@ -1474,7 +1544,6 @@ preserve_values (struct objfile *objfile) htab_t copied_types; struct value_history_chunk *cur; struct internalvar *var; - struct value *val; int i; /* Create the hash table. We allocate on the objfile's obstack, since @@ -1795,7 +1864,7 @@ unpack_pointer (struct type *type, const gdb_byte *valaddr) } -/* Get the value of the FIELDN'th field (which must be static) of +/* Get the value of the FIELDNO'th field (which must be static) of TYPE. Return NULL if the field doesn't exist or has been optimized out. */ @@ -1804,26 +1873,31 @@ value_static_field (struct type *type, int fieldno) { struct value *retval; - if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR) + switch (TYPE_FIELD_LOC_KIND (type, fieldno)) { - retval = value_at (TYPE_FIELD_TYPE (type, fieldno), - TYPE_FIELD_STATIC_PHYSADDR (type, fieldno)); - } - else + case FIELD_LOC_KIND_PHYSADDR: + retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno), + TYPE_FIELD_STATIC_PHYSADDR (type, fieldno)); + break; + case FIELD_LOC_KIND_PHYSNAME: { char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno); + /*TYPE_FIELD_NAME (type, fieldno);*/ struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0); + if (sym == NULL) { - /* With some compilers, e.g. HP aCC, static data members are reported - as non-debuggable symbols */ - struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, NULL, NULL); + /* With some compilers, e.g. HP aCC, static data members are + reported as non-debuggable symbols */ + struct minimal_symbol *msym = lookup_minimal_symbol (phys_name, + NULL, NULL); + if (!msym) return NULL; else { - retval = value_at (TYPE_FIELD_TYPE (type, fieldno), - SYMBOL_VALUE_ADDRESS (msym)); + retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno), + SYMBOL_VALUE_ADDRESS (msym)); } } else @@ -1838,7 +1912,12 @@ value_static_field (struct type *type, int fieldno) if (retval && VALUE_LVAL (retval) == lval_memory) SET_FIELD_PHYSADDR (TYPE_FIELD (type, fieldno), value_address (retval)); + break; + } + default: + gdb_assert (0); } + return retval; } @@ -1874,6 +1953,14 @@ value_primitive_field (struct value *arg1, int offset, CHECK_TYPEDEF (arg_type); type = TYPE_FIELD_TYPE (arg_type, fieldno); + /* Call check_typedef on our type to make sure that, if TYPE + is a TYPE_CODE_TYPEDEF, its length is set to the length + of the target type instead of zero. However, we do not + replace the typedef type by the target type, because we want + to keep the typedef in order to be able to print the type + description correctly. */ + check_typedef (type); + /* Handle packed fields */ if (TYPE_FIELD_BITSIZE (arg_type, fieldno)) @@ -2177,6 +2264,43 @@ pack_long (gdb_byte *buf, struct type *type, LONGEST num) } +/* Pack NUM into BUF using a target format of TYPE. */ + +void +pack_unsigned_long (gdb_byte *buf, struct type *type, ULONGEST num) +{ + int len; + enum bfd_endian byte_order; + + type = check_typedef (type); + len = TYPE_LENGTH (type); + byte_order = gdbarch_byte_order (get_type_arch (type)); + + switch (TYPE_CODE (type)) + { + case TYPE_CODE_INT: + case TYPE_CODE_CHAR: + case TYPE_CODE_ENUM: + case TYPE_CODE_FLAGS: + case TYPE_CODE_BOOL: + case TYPE_CODE_RANGE: + case TYPE_CODE_MEMBERPTR: + store_unsigned_integer (buf, len, byte_order, num); + break; + + case TYPE_CODE_REF: + case TYPE_CODE_PTR: + store_typed_address (buf, type, (CORE_ADDR) num); + break; + + default: + error (_("\ +Unexpected type (%d) encountered for unsigned integer constant."), + TYPE_CODE (type)); + } +} + + /* Convert C numbers into newly allocated values. */ struct value * @@ -2185,6 +2309,18 @@ value_from_longest (struct type *type, LONGEST num) struct value *val = allocate_value (type); pack_long (value_contents_raw (val), type, num); + return val; +} + + +/* Convert C unsigned numbers into newly allocated values. */ + +struct value * +value_from_ulongest (struct type *type, ULONGEST num) +{ + struct value *val = allocate_value (type); + + pack_unsigned_long (value_contents_raw (val), type, num); return val; } @@ -2196,6 +2332,7 @@ struct value * value_from_pointer (struct type *type, CORE_ADDR addr) { struct value *val = allocate_value (type); + store_typed_address (value_contents_raw (val), check_typedef (type), addr); return val; } @@ -2211,6 +2348,7 @@ value_from_contents_and_address (struct type *type, CORE_ADDR address) { struct value *v = allocate_value (type); + if (valaddr == NULL) set_value_lazy (v, 1); else @@ -2226,7 +2364,6 @@ value_from_double (struct type *type, DOUBLEST num) struct value *val = allocate_value (type); struct type *base_type = check_typedef (type); enum type_code code = TYPE_CODE (base_type); - int len = TYPE_LENGTH (base_type); if (code == TYPE_CODE_FLT) { @@ -2244,7 +2381,6 @@ value_from_decfloat (struct type *type, const gdb_byte *dec) struct value *val = allocate_value (type); memcpy (value_contents_raw (val), dec, TYPE_LENGTH (type)); - return val; } @@ -2252,6 +2388,7 @@ struct value * coerce_ref (struct value *arg) { struct type *value_type_arg_tmp = check_typedef (value_type (arg)); + if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF) arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp), unpack_pointer (value_type (arg), diff --git a/contrib/gdb-7/gdb/value.h b/contrib/gdb-7/gdb/value.h index 51e6960ab8..12cbc0a702 100644 --- a/contrib/gdb-7/gdb/value.h +++ b/contrib/gdb-7/gdb/value.h @@ -2,7 +2,7 @@ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -50,7 +50,7 @@ struct value *value_next (struct value *); /* Type of the value. */ -extern struct type *value_type (struct value *); +extern struct type *value_type (const struct value *); /* This is being used to change the type of an existing value, that code should instead be creating a new value with the changed type @@ -61,14 +61,14 @@ extern void deprecated_set_value_type (struct value *value, /* Only used for bitfields; number of bits contained in them. */ -extern int value_bitsize (struct value *); +extern int value_bitsize (const struct value *); extern void set_value_bitsize (struct value *, int bit); /* Only used for bitfields; position of start of field. For gdbarch_bits_big_endian=0 targets, it is the position of the LSB. For gdbarch_bits_big_endian=1 targets, it is the position of the MSB. */ -extern int value_bitpos (struct value *); +extern int value_bitpos (const struct value *); extern void set_value_bitpos (struct value *, int bit); /* Only used for bitfields; the containing value. This allows a @@ -83,7 +83,7 @@ struct value *value_parent (struct value *); within the registers structure. Note also the member embedded_offset below. */ -extern int value_offset (struct value *); +extern int value_offset (const struct value *); extern void set_value_offset (struct value *, int offset); /* The comment from "struct value" reads: ``Is it modifiable? Only @@ -164,13 +164,21 @@ struct lval_funcs should call 'error'. */ void (*write) (struct value *toval, struct value *fromval); + /* Check the validity of some bits in VALUE. This should return 1 + if all the bits starting at OFFSET and extending for LENGTH bits + are valid, or 0 if any bit is invalid. */ + int (*check_validity) (const struct value *value, int offset, int length); + + /* Return 1 if any bit in VALUE is valid, 0 if they are all invalid. */ + int (*check_any_valid) (const struct value *value); + /* Return a duplicate of VALUE's closure, for use in a new value. This may simply return the same closure, if VALUE's is reference-counted or statically allocated. This may be NULL, in which case VALUE's closure is re-used in the new value. */ - void *(*copy_closure) (struct value *v); + void *(*copy_closure) (const struct value *v); /* Drop VALUE's reference to its closure. Maybe this frees the closure; maybe this decrements a reference count; maybe the @@ -195,7 +203,7 @@ extern struct lval_funcs *value_computed_funcs (struct value *value); /* If VALUE is lval_computed, return its closure. The meaning of the returned value depends on the functions VALUE uses. */ -extern void *value_computed_closure (struct value *value); +extern void *value_computed_closure (const struct value *value); /* If zero, contents of this value are in the contents field. If nonzero, contents are in inferior. If the lval field is lval_memory, @@ -249,6 +257,11 @@ extern gdb_byte *value_contents_writeable (struct value *); extern gdb_byte *value_contents_all_raw (struct value *); extern const gdb_byte *value_contents_all (struct value *); +/* Like value_contents_all, but does not require that the returned + bits be valid. This should only be used in situations where you + plan to check the validity manually. */ +extern const gdb_byte *value_contents_for_printing (struct value *value); + extern int value_fetch_lazy (struct value *val); extern int value_contents_equal (struct value *val1, struct value *val2); @@ -257,6 +270,10 @@ extern int value_contents_equal (struct value *val1, struct value *val2); extern int value_optimized_out (struct value *value); extern void set_value_optimized_out (struct value *value, int val); +/* Like value_optimized_out, but return false if any bit in the object + is valid. */ +extern int value_entirely_optimized_out (const struct value *value); + /* Set or return field indicating whether a variable is initialized or not, based on debugging information supplied by the compiler. 1 = initialized; 0 = uninitialized. */ @@ -266,7 +283,7 @@ extern void set_value_initialized (struct value *, int); /* Set COMPONENT's location as appropriate for a component of WHOLE --- regardless of what kind of lvalue WHOLE is. */ extern void set_value_component_location (struct value *component, - struct value *whole); + const struct value *whole); /* While the following fields are per- VALUE .CONTENT .PIECE (i.e., a single value might have multiple LVALs), this hacked interface is @@ -313,6 +330,13 @@ extern struct value *coerce_ref (struct value *value); extern struct value *coerce_array (struct value *value); +/* Given a value, determine whether the bits starting at OFFSET and + extending for LENGTH bits are valid. This returns nonzero if all + bits in the given range are valid, zero if any bit is invalid. */ + +extern int value_bits_valid (const struct value *value, + int offset, int length); + #include "symtab.h" @@ -342,6 +366,7 @@ extern LONGEST unpack_field_as_long (struct type *type, extern void pack_long (gdb_byte *buf, struct type *type, LONGEST num); extern struct value *value_from_longest (struct type *type, LONGEST num); +extern struct value *value_from_ulongest (struct type *type, ULONGEST num); extern struct value *value_from_pointer (struct type *type, CORE_ADDR addr); extern struct value *value_from_double (struct type *type, DOUBLEST num); extern struct value *value_from_decfloat (struct type *type, @@ -431,25 +456,30 @@ extern struct value *value_complement (struct value *arg1); extern struct value *value_struct_elt (struct value **argp, struct value **args, - char *name, int *static_memfuncp, - char *err); + const char *name, int *static_memfuncp, + const char *err); extern struct value *value_aggregate_elt (struct type *curtype, char *name, + struct type *expect_type, int want_address, enum noside noside); extern struct value *value_static_field (struct type *type, int fieldno); -extern struct fn_field *value_find_oload_method_list (struct value **, char *, +extern struct fn_field *value_find_oload_method_list (struct value **, + const char *, int, int *, struct type **, int *); +enum oload_search_type { NON_METHOD, METHOD, BOTH }; + extern int find_overload_match (struct type **arg_types, int nargs, - char *name, int method, int lax, + const char *name, + enum oload_search_type method, int lax, struct value **objp, struct symbol *fsym, struct value **valp, struct symbol **symp, - int *staticp); + int *staticp, const int no_adl); extern struct value *value_field (struct value *arg1, int fieldno); @@ -468,6 +498,11 @@ extern struct value *value_cast_pointers (struct type *, struct value *); extern struct value *value_cast (struct type *type, struct value *arg2); +extern struct value *value_reinterpret_cast (struct type *type, + struct value *arg); + +extern struct value *value_dynamic_cast (struct type *type, struct value *arg); + extern struct value *value_zero (struct type *type, enum lval_type lv); extern struct value *value_one (struct type *type, enum lval_type lv); @@ -503,6 +538,10 @@ extern struct value *evaluate_subexp (struct type *expect_type, extern struct value *evaluate_subexpression_type (struct expression *exp, int subexp); +extern void fetch_subexp_value (struct expression *exp, int *pc, + struct value **valp, struct value **resultp, + struct value **val_chain); + extern char *extract_field_op (struct expression *exp, int *subexp); extern struct value *evaluate_subexp_with_coercion (struct expression *, @@ -562,6 +601,8 @@ extern struct internalvar *lookup_internalvar (const char *name); extern int value_equal (struct value *arg1, struct value *arg2); +extern int value_equal_contents (struct value *arg1, struct value *arg2); + extern int value_less (struct value *arg1, struct value *arg2); extern int value_logical_not (struct value *arg1); @@ -581,6 +622,10 @@ extern struct value *value_x_unop (struct value *arg1, enum exp_opcode op, extern struct value *value_fn_field (struct value **arg1p, struct fn_field *f, int j, struct type *type, int offset); +extern int binop_types_user_defined_p (enum exp_opcode op, + struct type *type1, + struct type *type2); + extern int binop_user_defined_p (enum exp_opcode op, struct value *arg1, struct value *arg2); @@ -594,6 +639,8 @@ extern void value_free (struct value *val); extern void free_all_values (void); +extern void free_value_chain (struct value *v); + extern void release_value (struct value *val); extern int record_latest_value (struct value *val); @@ -631,6 +678,7 @@ extern struct value *value_release_to_mark (struct value *mark); extern int val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value *val, const struct value_print_options *options, const struct language_defn *language); diff --git a/contrib/gdb-7/gdb/varobj.c b/contrib/gdb-7/gdb/varobj.c index 8f22156e26..b9b8e91b86 100644 --- a/contrib/gdb-7/gdb/varobj.c +++ b/contrib/gdb-7/gdb/varobj.c @@ -1,7 +1,7 @@ /* Implementation of the GDB variable objects API. Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -293,9 +293,13 @@ static int varobj_value_is_changeable_p (struct varobj *var); static int is_root_p (struct varobj *var); +#if HAVE_PYTHON + static struct varobj * varobj_add_child (struct varobj *var, const char *name, struct value *value); +#endif /* HAVE_PYTHON */ + /* C implementation */ static int c_number_of_children (struct varobj *var); @@ -508,6 +512,7 @@ find_frame_addr_in_frame_chain (CORE_ADDR frame_addr) comparing it against our argument. */ CORE_ADDR frame_base = get_frame_base_address (frame); int addr_bit = gdbarch_addr_bit (get_frame_arch (frame)); + if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT)) frame_base &= ((CORE_ADDR) 1 << addr_bit) - 1; @@ -618,6 +623,7 @@ varobj_create (char *objname, /* Error getting the value. Try to at least get the right type. */ struct value *type_only_value = evaluate_type (var->root->exp); + var->type = value_type (type_only_value); } else @@ -759,12 +765,13 @@ varobj_delete (struct varobj *var, char ***dellist, int only_children) return delcount; } +#if HAVE_PYTHON + /* Convenience function for varobj_set_visualizer. Instantiate a pretty-printer for a given value. */ static PyObject * instantiate_pretty_printer (PyObject *constructor, struct value *value) { -#if HAVE_PYTHON PyObject *val_obj = NULL; PyObject *printer; @@ -775,10 +782,11 @@ instantiate_pretty_printer (PyObject *constructor, struct value *value) printer = PyObject_CallFunctionObjArgs (constructor, val_obj, NULL); Py_DECREF (val_obj); return printer; -#endif return NULL; } +#endif + /* Set/Get variable object display format */ enum varobj_display_formats @@ -899,6 +907,8 @@ restrict_range (VEC (varobj_p) *children, int *from, int *to) } } +#if HAVE_PYTHON + /* A helper for update_dynamic_varobj_children that installs a new child when needed. */ @@ -916,6 +926,7 @@ install_dynamic_child (struct varobj *var, { /* There's no child yet. */ struct varobj *child = varobj_add_child (var, name, value); + if (new) { VEC_safe_push (varobj_p, *new, child); @@ -925,6 +936,7 @@ install_dynamic_child (struct varobj *var, else { varobj_p existing = VEC_index (varobj_p, var->children, index); + if (install_new_value (existing, value, 0)) { if (changed) @@ -935,8 +947,6 @@ install_dynamic_child (struct varobj *var, } } -#if HAVE_PYTHON - static int dynamic_varobj_has_child_method (struct varobj *var) { @@ -1062,6 +1072,7 @@ update_dynamic_varobj_children (struct varobj *var, if (i < VEC_length (varobj_p, var->children)) { int j; + *cchanged = 1; for (j = i; j < VEC_length (varobj_p, var->children); ++j) varobj_delete (VEC_index (varobj_p, var->children, j), NULL, 0); @@ -1110,7 +1121,6 @@ varobj_get_num_children (struct varobj *var) VEC (varobj_p)* varobj_list_children (struct varobj *var, int *from, int *to) { - struct varobj *child; char *name; int i, children_changed; @@ -1158,16 +1168,21 @@ varobj_list_children (struct varobj *var, int *from, int *to) return var->children; } +#if HAVE_PYTHON + static struct varobj * varobj_add_child (struct varobj *var, const char *name, struct value *value) { varobj_p v = create_child_with_value (var, VEC_length (varobj_p, var->children), name, value); + VEC_safe_push (varobj_p, var->children, v); return v; } +#endif /* HAVE_PYTHON */ + /* Obtain the type of an object Variable as a string similar to the one gdb prints on the console */ @@ -1253,8 +1268,6 @@ int varobj_set_value (struct varobj *var, char *expression) { struct value *val; - int offset = 0; - int error = 0; /* The argument "expression" contains the variable's new value. We need to first construct a legal expression for this -- ugh! */ @@ -1263,7 +1276,6 @@ varobj_set_value (struct varobj *var, char *expression) struct value *value; int saved_input_radix = input_radix; char *s = expression; - int i; gdb_assert (varobj_editable_p (var)); @@ -1403,7 +1415,6 @@ install_new_value_visualizer (struct varobj *var) if (var->constructor != Py_None && var->value) { struct cleanup *cleanup; - PyObject *pretty_printer = NULL; cleanup = varobj_ensure_python_env (var); @@ -1481,6 +1492,7 @@ install_new_value (struct varobj *var, struct value *value, int initial) { struct varobj *parent = var->parent; int frozen = var->frozen; + for (; !frozen && parent; parent = parent->parent) frozen |= parent->frozen; @@ -1583,7 +1595,10 @@ install_new_value (struct varobj *var, struct value *value, int initial) { xfree (print_value); print_value = value_get_print_value (var->value, var->format, var); - if (!var->print_value || strcmp (var->print_value, print_value) != 0) + if ((var->print_value == NULL && print_value != NULL) + || (var->print_value != NULL && print_value == NULL) + || (var->print_value != NULL && print_value != NULL + && strcmp (var->print_value, print_value) != 0)) changed = 1; } if (var->print_value) @@ -1620,8 +1635,8 @@ void varobj_set_visualizer (struct varobj *var, const char *visualizer) { #if HAVE_PYTHON - PyObject *mainmod, *globals, *pretty_printer, *constructor; - struct cleanup *back_to, *value; + PyObject *mainmod, *globals, *constructor; + struct cleanup *back_to; back_to = varobj_ensure_python_env (var); @@ -1671,14 +1686,9 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit) int changed = 0; int type_changed = 0; int i; - int vleft; - struct varobj *v; - struct varobj **cv; - struct varobj **templist = NULL; struct value *new; VEC (varobj_update_result) *stack = NULL; VEC (varobj_update_result) *result = NULL; - struct frame_info *fi; /* Frozen means frozen -- we don't check for any change in this varobj, including its going out of scope, or @@ -1690,7 +1700,9 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit) if (!(*varp)->root->is_valid) { - varobj_update_result r = {*varp}; + varobj_update_result r = {0}; + + r.varobj = *varp; r.status = VAROBJ_INVALID; VEC_safe_push (varobj_update_result, result, &r); return result; @@ -1698,7 +1710,9 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit) if ((*varp)->root->rootvar == *varp) { - varobj_update_result r = {*varp}; + varobj_update_result r = {0}; + + r.varobj = *varp; r.status = VAROBJ_IN_SCOPE; /* Update the root variable. value_of_root can return NULL @@ -1728,7 +1742,9 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit) } else { - varobj_update_result r = {*varp}; + varobj_update_result r = {0}; + + r.varobj = *varp; VEC_safe_push (varobj_update_result, stack, &r); } @@ -1805,7 +1821,9 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit) for (i = VEC_length (varobj_p, changed) - 1; i >= 0; --i) { varobj_p tmp = VEC_index (varobj_p, changed, i); - varobj_update_result r = {tmp}; + varobj_update_result r = {0}; + + r.varobj = tmp; r.changed = 1; r.value_installed = 1; VEC_safe_push (varobj_update_result, stack, &r); @@ -1813,9 +1831,12 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit) for (i = VEC_length (varobj_p, unchanged) - 1; i >= 0; --i) { varobj_p tmp = VEC_index (varobj_p, unchanged, i); + if (!tmp->frozen) { - varobj_update_result r = {tmp}; + varobj_update_result r = {0}; + + r.varobj = tmp; r.value_installed = 1; VEC_safe_push (varobj_update_result, stack, &r); } @@ -1839,10 +1860,13 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit) for (i = VEC_length (varobj_p, v->children)-1; i >= 0; --i) { varobj_p c = VEC_index (varobj_p, v->children, i); + /* Child may be NULL if explicitly deleted by -var-delete. */ if (c != NULL && !c->frozen) { - varobj_update_result r = {c}; + varobj_update_result r = {0}; + + r.varobj = c; VEC_safe_push (varobj_update_result, stack, &r); } } @@ -1890,6 +1914,7 @@ delete_variable_1 (struct cpstack **resultp, int *delcountp, for (i = 0; i < VEC_length (varobj_p, var->children); ++i) { varobj_p child = VEC_index (varobj_p, var->children, i); + if (!child) continue; if (!remove_from_parent_p) @@ -2130,6 +2155,7 @@ static struct varobj * new_root_variable (void) { struct varobj *var = new_variable (); + var->root = (struct varobj_root *) xmalloc (sizeof (struct varobj_root));; var->root->lang = NULL; var->root->exp = NULL; @@ -2195,8 +2221,8 @@ static struct type * get_type (struct varobj *var) { struct type *type; - type = var->type; + type = var->type; if (type != NULL) type = check_typedef (type); @@ -2391,6 +2417,7 @@ value_of_root (struct varobj **var_handle, int *type_changed) correct in other frames, so update the expression. */ struct expression *tmp_exp = var->root->exp; + var->root->exp = tmp_var->root->exp; tmp_var->root->exp = tmp_exp; @@ -2453,11 +2480,15 @@ value_get_print_value (struct value *value, enum varobj_display_formats format, struct cleanup *old_chain; gdb_byte *thevalue = NULL; struct value_print_options opts; - int len = 0; + struct type *type = NULL; + long len = 0; + char *encoding = NULL; + struct gdbarch *gdbarch = NULL; if (value == NULL) return NULL; + gdbarch = get_type_arch (value_type (value)); #if HAVE_PYTHON { struct cleanup *back_to = varobj_ensure_python_env (var); @@ -2489,20 +2520,33 @@ value_get_print_value (struct value *value, enum varobj_display_formats format, &replacement); if (output) { - PyObject *py_str - = python_string_to_target_python_string (output); - if (py_str) + if (gdbpy_is_lazy_string (output)) { - char *s = PyString_AsString (py_str); - len = PyString_Size (py_str); - thevalue = xmemdup (s, len + 1, len + 1); - Py_DECREF (py_str); + thevalue = gdbpy_extract_lazy_string (output, &type, + &len, &encoding); + string_print = 1; + } + else + { + PyObject *py_str + = python_string_to_target_python_string (output); + + if (py_str) + { + char *s = PyString_AsString (py_str); + + len = PyString_Size (py_str); + thevalue = xmemdup (s, len + 1, len + 1); + type = builtin_type (gdbarch)->builtin_char; + Py_DECREF (py_str); + } } Py_DECREF (output); } if (thevalue && !string_print) { do_cleanups (back_to); + xfree (encoding); return thevalue; } if (replacement) @@ -2521,10 +2565,9 @@ value_get_print_value (struct value *value, enum varobj_display_formats format, opts.raw = 1; if (thevalue) { - struct gdbarch *gdbarch = get_type_arch (value_type (value)); make_cleanup (xfree, thevalue); - LA_PRINT_STRING (stb, builtin_type (gdbarch)->builtin_char, - thevalue, len, 0, &opts); + make_cleanup (xfree, encoding); + LA_PRINT_STRING (stb, type, thevalue, len, encoding, 0, &opts); } else common_val_print (value, stb, 0, &opts, current_language); @@ -2538,7 +2581,6 @@ int varobj_editable_p (struct varobj *var) { struct type *type; - struct value *value; if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value))) return 0; @@ -2649,7 +2691,8 @@ adjust_value_for_child_access (struct value **value, { if (value && *value) { - int success = gdb_value_ind (*value, value); + int success = gdb_value_ind (*value, value); + if (!success) *value = NULL; } @@ -2732,8 +2775,8 @@ value_struct_element_index (struct value *value, int type_index) { struct value *result = NULL; volatile struct gdb_exception e; - struct type *type = value_type (value); + type = check_typedef (type); gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT @@ -2793,12 +2836,14 @@ c_describe_child (struct varobj *parent, int index, { case TYPE_CODE_ARRAY: if (cname) - *cname = xstrprintf ("%d", index - + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type))); + *cname = xstrdup (int_string (index + + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)), + 10, 1, 0, 0)); if (cvalue && value) { int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)); + gdb_value_subscript (value, real_index, cvalue); } @@ -2806,9 +2851,11 @@ c_describe_child (struct varobj *parent, int index, *ctype = get_target_type (type); if (cfull_expression) - *cfull_expression = xstrprintf ("(%s)[%d]", parent_expression, - index - + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type))); + *cfull_expression = + xstrprintf ("(%s)[%s]", parent_expression, + int_string (index + + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)), + 10, 1, 0, 0)); break; @@ -2830,6 +2877,7 @@ c_describe_child (struct varobj *parent, int index, if (cfull_expression) { char *join = was_ptr ? "->" : "."; + *cfull_expression = xstrprintf ("(%s)%s%s", parent_expression, join, TYPE_FIELD_NAME (type, index)); } @@ -2843,6 +2891,7 @@ c_describe_child (struct varobj *parent, int index, if (cvalue && value) { int success = gdb_value_ind (value, cvalue); + if (!success) *cvalue = NULL; } @@ -2872,6 +2921,7 @@ static char * c_name_of_child (struct varobj *parent, int index) { char *name; + c_describe_child (parent, index, &name, NULL, NULL, NULL); return name; } @@ -2898,6 +2948,7 @@ check_scope (struct varobj *var) if (fi) { CORE_ADDR pc = get_frame_pc (fi); + if (pc < BLOCK_START (var->root->valid_block) || pc >= BLOCK_END (var->root->valid_block)) scope = 0; @@ -2912,7 +2963,6 @@ c_value_of_root (struct varobj **var_handle) { struct value *new_val = NULL; struct varobj *var = *var_handle; - struct frame_info *fi; int within_scope = 0; struct cleanup *back_to; @@ -2961,8 +3011,8 @@ static struct value * c_value_of_child (struct varobj *parent, int index) { struct value *value = NULL; - c_describe_child (parent, index, NULL, &value, NULL, NULL); + c_describe_child (parent, index, NULL, &value, NULL, NULL); return value; } @@ -2970,6 +3020,7 @@ static struct type * c_type_of_child (struct varobj *parent, int index) { struct type *type = NULL; + c_describe_child (parent, index, NULL, NULL, &type, NULL); return type; } @@ -3001,6 +3052,7 @@ c_value_of_variable (struct varobj *var, enum varobj_display_formats format) case TYPE_CODE_ARRAY: { char *number; + number = xstrprintf ("[%d]", var->num_children); return (number); } @@ -3103,16 +3155,21 @@ cplus_number_of_children (struct varobj *var) static void cplus_class_num_children (struct type *type, int children[3]) { - int i; + int i, vptr_fieldno; + struct type *basetype = NULL; children[v_public] = 0; children[v_private] = 0; children[v_protected] = 0; + vptr_fieldno = get_vptr_fieldno (type, &basetype); for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++) { - /* If we have a virtual table pointer, omit it. */ - if (TYPE_VPTR_BASETYPE (type) == type && TYPE_VPTR_FIELDNO (type) == i) + /* If we have a virtual table pointer, omit it. Even if virtual + table pointers are not specifically marked in the debug info, + they should be artificial. */ + if ((type == basetype && i == vptr_fieldno) + || TYPE_FIELD_ARTIFICIAL (type, i)) continue; if (TYPE_FIELD_PROTECTED (type, i)) @@ -3153,7 +3210,6 @@ cplus_describe_child (struct varobj *parent, int index, char **cname, struct value **cvalue, struct type **ctype, char **cfull_expression) { - char *name = NULL; struct value *value; struct type *type; int was_ptr; @@ -3189,6 +3245,7 @@ cplus_describe_child (struct varobj *parent, int index, || TYPE_CODE (type) == TYPE_CODE_UNION) { char *join = was_ptr ? "->" : "."; + if (CPLUS_FAKE_CHILD (parent)) { /* The fields of the class type are ordered as they @@ -3199,6 +3256,10 @@ cplus_describe_child (struct varobj *parent, int index, find the indexed field. */ int type_index = TYPE_N_BASECLASSES (type); enum accessibility acc = public_field; + int vptr_fieldno; + struct type *basetype = NULL; + + vptr_fieldno = get_vptr_fieldno (type, &basetype); if (strcmp (parent->name, "private") == 0) acc = private_field; else if (strcmp (parent->name, "protected") == 0) @@ -3206,8 +3267,8 @@ cplus_describe_child (struct varobj *parent, int index, while (index >= 0) { - if (TYPE_VPTR_BASETYPE (type) == type - && type_index == TYPE_VPTR_FIELDNO (type)) + if ((type == basetype && type_index == vptr_fieldno) + || TYPE_FIELD_ARTIFICIAL (type, type_index)) ; /* ignore vptr */ else if (match_accessibility (type, type_index, acc)) --index; @@ -3246,6 +3307,7 @@ cplus_describe_child (struct varobj *parent, int index, if (cfull_expression) { char *ptr = was_ptr ? "*" : ""; + /* Cast the parent to the base' type. Note that in gdb, expression like (Base1)d @@ -3264,6 +3326,7 @@ cplus_describe_child (struct varobj *parent, int index, { char *access = NULL; int children[3]; + cplus_class_num_children (type, children); /* Everything beyond the baseclasses can @@ -3319,6 +3382,7 @@ static char * cplus_name_of_child (struct varobj *parent, int index) { char *name = NULL; + cplus_describe_child (parent, index, &name, NULL, NULL, NULL); return name; } @@ -3341,6 +3405,7 @@ static struct value * cplus_value_of_child (struct varobj *parent, int index) { struct value *value = NULL; + cplus_describe_child (parent, index, NULL, &value, NULL, NULL); return value; } @@ -3349,12 +3414,14 @@ static struct type * cplus_type_of_child (struct varobj *parent, int index) { struct type *type = NULL; + cplus_describe_child (parent, index, NULL, NULL, &type, NULL); return type; } static char * -cplus_value_of_variable (struct varobj *var, enum varobj_display_formats format) +cplus_value_of_variable (struct varobj *var, + enum varobj_display_formats format) { /* If we have one of our special types, don't print out diff --git a/contrib/gdb-7/gdb/varobj.h b/contrib/gdb-7/gdb/varobj.h index f43c593741..ec7a5dd394 100644 --- a/contrib/gdb-7/gdb/varobj.h +++ b/contrib/gdb-7/gdb/varobj.h @@ -1,5 +1,5 @@ /* GDB variable objects API. - Copyright (C) 1999, 2000, 2001, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2001, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/contrib/gdb-7/gdb/vec.c b/contrib/gdb-7/gdb/vec.c index 9bf9fcf207..04fa27af23 100644 --- a/contrib/gdb-7/gdb/vec.c +++ b/contrib/gdb-7/gdb/vec.c @@ -1,5 +1,5 @@ /* Vector API for GDB. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Nathan Sidwell diff --git a/contrib/gdb-7/gdb/vec.h b/contrib/gdb-7/gdb/vec.h index 5906c5676a..e9d5a1583e 100644 --- a/contrib/gdb-7/gdb/vec.h +++ b/contrib/gdb-7/gdb/vec.h @@ -1,5 +1,5 @@ /* Vector API for GDB. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Nathan Sidwell @@ -184,6 +184,13 @@ #define VEC_free(T,V) (VEC_OP(T,free)(&V)) +/* A cleanup function for a vector. + void VEC_T_cleanup(void *); + + Clean up a vector. */ + +#define VEC_cleanup(T) (VEC_OP(T,cleanup)) + /* Use these to determine the required size and initialization of a vector embedded within another structure (as the final member). @@ -461,6 +468,15 @@ static inline void VEC_OP (T,free) \ *vec_ = NULL; \ } \ \ +static inline void VEC_OP (T,cleanup) \ + (void *arg_) \ +{ \ + VEC(T) **vec_ = arg_; \ + if (*vec_) \ + vec_free_ (*vec_); \ + *vec_ = NULL; \ +} \ + \ static inline int VEC_OP (T,reserve) \ (VEC(T) **vec_, int alloc_ VEC_ASSERT_DECL) \ { \ @@ -699,6 +715,15 @@ static inline void VEC_OP (T,free) \ *vec_ = NULL; \ } \ \ +static inline void VEC_OP (T,cleanup) \ + (void *arg_) \ +{ \ + VEC(T) **vec_ = arg_; \ + if (*vec_) \ + vec_free_ (*vec_); \ + *vec_ = NULL; \ +} \ + \ static inline VEC(T) *VEC_OP (T,copy) (VEC(T) *vec_) \ { \ size_t len_ = vec_ ? vec_->num : 0; \ @@ -957,6 +982,15 @@ static inline void VEC_OP (T,free) \ *vec_ = NULL; \ } \ \ +static inline void VEC_OP (T,cleanup) \ + (void *arg_) \ +{ \ + VEC(T) **vec_ = arg_; \ + if (*vec_) \ + vec_free_ (*vec_); \ + *vec_ = NULL; \ +} \ + \ static inline int VEC_OP (T,reserve) \ (VEC(T) **vec_, int alloc_ VEC_ASSERT_DECL) \ { \ diff --git a/contrib/gdb-7/gdb/version.h b/contrib/gdb-7/gdb/version.h index 83587346db..4a4d7c4964 100644 --- a/contrib/gdb-7/gdb/version.h +++ b/contrib/gdb-7/gdb/version.h @@ -1,5 +1,5 @@ /* Version information for GDB. - Copyright (C) 1999, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 1999, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/version.in b/contrib/gdb-7/gdb/version.in index 4fedf1d20e..5904f7adec 100644 --- a/contrib/gdb-7/gdb/version.in +++ b/contrib/gdb-7/gdb/version.in @@ -1 +1 @@ -7.0 +7.2 diff --git a/contrib/gdb-7/gdb/wrapper.c b/contrib/gdb-7/gdb/wrapper.c index 931ecbf810..02d88a578c 100644 --- a/contrib/gdb-7/gdb/wrapper.c +++ b/contrib/gdb-7/gdb/wrapper.c @@ -1,6 +1,6 @@ /* Longjump free calls to GDB internal routines. - Copyright (C) 1999, 2000, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/contrib/gdb-7/gdb/wrapper.h b/contrib/gdb-7/gdb/wrapper.h index bb1b4615e9..f83c14dd51 100644 --- a/contrib/gdb-7/gdb/wrapper.h +++ b/contrib/gdb-7/gdb/wrapper.h @@ -1,6 +1,6 @@ /* Longjump free calls to GDB internal routines. - Copyright (C) 1999, 2000, 2005, 2007, 2008, 2009 + Copyright (C) 1999, 2000, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/contrib/gdb-7/gdb/xcoffsolib.h b/contrib/gdb-7/gdb/xcoffsolib.h index fb17e3f637..448b15f4e0 100644 --- a/contrib/gdb-7/gdb/xcoffsolib.h +++ b/contrib/gdb-7/gdb/xcoffsolib.h @@ -1,6 +1,6 @@ /* Data structures for RS/6000 shared libraries, for GDB. - Copyright (C) 1991, 1992, 1993, 1994, 1996, 1997, 2000, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 1991, 1992, 1993, 1994, 1996, 1997, 2000, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/xml-support.c b/contrib/gdb-7/gdb/xml-support.c index ad20d3bf95..b5e8b507f4 100644 --- a/contrib/gdb-7/gdb/xml-support.c +++ b/contrib/gdb-7/gdb/xml-support.c @@ -1,6 +1,6 @@ /* Helper routines for parsing XML using Expat. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -560,6 +560,7 @@ gdb_xml_parse (struct gdb_xml_parser *parser, const char *buffer) else if (status == XML_STATUS_ERROR) { enum XML_Error err = XML_GetErrorCode (parser->expat_parser); + error_string = XML_ErrorString (err); } else @@ -720,7 +721,6 @@ xinclude_start_include (struct gdb_xml_parser *parser, char *href = VEC_index (gdb_xml_value_s, attributes, 0)->value; struct cleanup *back_to; char *text, *output; - int ret; gdb_xml_debug (parser, _("Processing XInclude of \"%s\""), href); @@ -832,7 +832,6 @@ xml_process_xincludes (const char *name, const char *text, xml_fetch_another fetcher, void *fetcher_baton, int depth) { - enum XML_Error err; struct gdb_xml_parser *parser; struct xinclude_parsing_data *data; struct cleanup *back_to; @@ -1018,6 +1017,7 @@ obstack_xml_printf (struct obstack *obstack, const char *format, ...) { char *p; char *a = va_arg (ap, char *); + obstack_grow (obstack, prev, f - prev - 1); p = xml_escape_text (a); obstack_grow_str (obstack, p); @@ -1048,6 +1048,7 @@ xml_fetch_content_from_file (const char *filename, void *baton) if (dirname && *dirname) { char *fullname = concat (dirname, "/", filename, (char *) NULL); + if (fullname == NULL) nomem (0); file = fopen (fullname, FOPEN_RT); diff --git a/contrib/gdb-7/gdb/xml-support.h b/contrib/gdb-7/gdb/xml-support.h index 135263d5d5..1f438cf5ac 100644 --- a/contrib/gdb-7/gdb/xml-support.h +++ b/contrib/gdb-7/gdb/xml-support.h @@ -1,6 +1,6 @@ /* Helper routines for parsing XML using Expat. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -199,13 +199,13 @@ int gdb_xml_parse (struct gdb_xml_parser *parser, const char *buffer); /* Issue a debugging message from one of PARSER's handlers. */ void gdb_xml_debug (struct gdb_xml_parser *parser, const char *format, ...) - ATTR_FORMAT (printf, 2, 0); + ATTRIBUTE_PRINTF (2, 0); /* Issue an error message from one of PARSER's handlers, and stop parsing. */ void gdb_xml_error (struct gdb_xml_parser *parser, const char *format, ...) - ATTR_NORETURN ATTR_FORMAT (printf, 2, 0); + ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 0); /* Parse an integer attribute into a ULONGEST. */ diff --git a/contrib/gdb-7/gdb/xml-syscall.c b/contrib/gdb-7/gdb/xml-syscall.c index 15bfe6fa18..9376ca11a1 100644 --- a/contrib/gdb-7/gdb/xml-syscall.c +++ b/contrib/gdb-7/gdb/xml-syscall.c @@ -1,9 +1,7 @@ /* Functions that provide the mechanism to parse a syscall XML file and get its values. - Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008 - Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -52,7 +50,7 @@ syscall_warn_user (void) void set_xml_syscall_file_name (const char *name) { - syscall_warn_user (); + return; } void @@ -80,9 +78,12 @@ get_syscall_names (void) return NULL; } - #else /* ! HAVE_LIBEXPAT */ +/* Variable that will hold the last known data-directory. This is useful to + know whether we should re-read the XML info for the target. */ +static char *my_gdb_datadir = NULL; + /* Structure which describes a syscall. */ typedef struct syscall_desc { @@ -114,7 +115,7 @@ struct syscall_parsing_data /* Structure used to store information about the available syscalls in the system. */ -static const struct syscalls_info *_sysinfo = NULL; +static const struct syscalls_info *sysinfo = NULL; /* A flag to tell if we already initialized the structure above. */ static int have_initialized_sysinfo = 0; @@ -168,17 +169,6 @@ syscall_create_syscall_desc (struct syscalls_info *sysinfo, VEC_safe_push (syscall_desc_p, sysinfo->syscalls, sysdesc); } -/* Handle the start of a element. */ -static void -syscall_start_syscalls_info (struct gdb_xml_parser *parser, - const struct gdb_xml_element *element, - void *user_data, - VEC(gdb_xml_value_s) *attributes) -{ - struct syscall_parsing_data *data = user_data; - struct syscalls_info *sysinfo = data->sysinfo; -} - /* Handle the start of a element. */ static void syscall_start_syscall (struct gdb_xml_parser *parser, @@ -225,7 +215,7 @@ static const struct gdb_xml_element syscalls_info_children[] = { static const struct gdb_xml_element syselements[] = { { "syscalls_info", NULL, syscalls_info_children, - GDB_XML_EF_NONE, syscall_start_syscalls_info, NULL }, + GDB_XML_EF_NONE, NULL, NULL }, { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } }; @@ -236,8 +226,6 @@ syscall_parse_xml (const char *document, xml_fetch_another fetcher, struct cleanup *result_cleanup; struct gdb_xml_parser *parser; struct syscall_parsing_data data; - char *expanded_text; - int i; parser = gdb_xml_create_parser_and_cleanup (_("syscalls info"), syselements, &data); @@ -275,10 +263,7 @@ xml_init_syscalls_info (const char *filename) full_file = xml_fetch_content_from_file (filename, gdb_datadir); if (full_file == NULL) - { - warning (_("Could not open \"%s\""), filename); - return NULL; - } + return NULL; back_to = make_cleanup (xfree, full_file); @@ -297,31 +282,43 @@ xml_init_syscalls_info (const char *filename) static void init_sysinfo (void) { + /* Should we re-read the XML info for this target? */ + if (my_gdb_datadir && strcmp (my_gdb_datadir, gdb_datadir) != 0) + { + /* The data-directory changed from the last time we used it. + It means that we have to re-read the XML info. */ + have_initialized_sysinfo = 0; + xfree (my_gdb_datadir); + my_gdb_datadir = NULL; + if (sysinfo) + free_syscalls_info ((void *) sysinfo); + } + /* Did we already try to initialize the structure? */ if (have_initialized_sysinfo) return; -/* if (xml_syscall_file == NULL) - internal_error (__FILE__, __LINE__, - _("This architecture has not set the XML syscall file " - "name. This is a bug and should not happen; please " - "report it.")); */ - _sysinfo = xml_init_syscalls_info (xml_syscall_file); + sysinfo = xml_init_syscalls_info (xml_syscall_file); have_initialized_sysinfo = 1; - if (_sysinfo == NULL) + if (sysinfo == NULL) { if (xml_syscall_file) - /* The initialization failed. Let's show a warning - message to the user (just this time) and leave. */ - warning (_("Could not load the syscall XML file `%s'.\n\ -GDB will not be able to display syscall names."), xml_syscall_file); + warning (_("\ +Could not load the syscall XML file `%s/%s'."), + gdb_datadir, xml_syscall_file); else - /* There's no file to open. Let's warn the user. */ - warning (_("There is no XML file to open.\n\ -GDB will not be able to display syscall names.")); + warning (_("\ +There is no XML file to open.")); + + warning (_("\ +GDB will not be able to display syscall names nor to verify if\n\ +any provided syscall numbers are valid.")); } + + /* Saving the data-directory used to read this XML info. */ + my_gdb_datadir = xstrdup (gdb_datadir); } static int @@ -364,13 +361,6 @@ xml_get_syscall_name (const struct syscalls_info *sysinfo, return NULL; } -static int -xml_number_of_syscalls (const struct syscalls_info *sysinfo) -{ - return (sysinfo == NULL ? 0 : VEC_length (syscall_desc_p, - sysinfo->syscalls)); -} - static const char ** xml_list_of_syscalls (const struct syscalls_info *sysinfo) { @@ -408,7 +398,7 @@ get_syscall_by_number (int syscall_number, init_sysinfo (); s->number = syscall_number; - s->name = xml_get_syscall_name (_sysinfo, syscall_number); + s->name = xml_get_syscall_name (sysinfo, syscall_number); } void @@ -417,7 +407,7 @@ get_syscall_by_name (const char *syscall_name, { init_sysinfo (); - s->number = xml_get_syscall_number (_sysinfo, syscall_name); + s->number = xml_get_syscall_number (sysinfo, syscall_name); s->name = syscall_name; } @@ -426,7 +416,7 @@ get_syscall_names (void) { init_sysinfo (); - return xml_list_of_syscalls (_sysinfo); + return xml_list_of_syscalls (sysinfo); } #endif /* ! HAVE_LIBEXPAT */ diff --git a/contrib/gdb-7/gdb/xml-syscall.h b/contrib/gdb-7/gdb/xml-syscall.h index 00d3a5456f..68d98252f4 100644 --- a/contrib/gdb-7/gdb/xml-syscall.h +++ b/contrib/gdb-7/gdb/xml-syscall.h @@ -1,7 +1,7 @@ /* Functions that provide the mechanism to parse a syscall XML file and get its values. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/gdb/xml-tdesc.c b/contrib/gdb-7/gdb/xml-tdesc.c index 102049f296..bccef11c19 100644 --- a/contrib/gdb-7/gdb/xml-tdesc.c +++ b/contrib/gdb-7/gdb/xml-tdesc.c @@ -1,6 +1,6 @@ /* XML target description support for GDB. - Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by CodeSourcery. @@ -85,8 +85,15 @@ struct tdesc_parsing_data it does not have its own. This starts at zero. */ int next_regnum; - /* The union we are currently parsing, or last parsed. */ - struct tdesc_type *current_union; + /* The struct or union we are currently parsing, or last parsed. */ + struct tdesc_type *current_type; + + /* The byte size of the current struct type, if specified. Zero + if not specified. */ + int current_type_size; + + /* Whether the current type is a flags type. */ + int current_type_is_flags; }; /* Handle the end of an element and its value. */ @@ -145,7 +152,6 @@ tdesc_start_target (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes) { - struct tdesc_parsing_data *data = user_data; char *version = VEC_index (gdb_xml_value_s, attributes, 0)->value; if (strcmp (version, "1.0") != 0) @@ -229,11 +235,58 @@ tdesc_start_union (struct gdb_xml_parser *parser, struct tdesc_parsing_data *data = user_data; char *id = VEC_index (gdb_xml_value_s, attributes, 0)->value; - data->current_union = tdesc_create_union (data->current_feature, id); + data->current_type = tdesc_create_union (data->current_feature, id); + data->current_type_size = 0; + data->current_type_is_flags = 0; +} + +/* Handle the start of a element. Initialize the type and + record it with the current feature. */ + +static void +tdesc_start_struct (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, VEC(gdb_xml_value_s) *attributes) +{ + struct tdesc_parsing_data *data = user_data; + char *id = VEC_index (gdb_xml_value_s, attributes, 0)->value; + struct tdesc_type *type; + + type = tdesc_create_struct (data->current_feature, id); + data->current_type = type; + data->current_type_size = 0; + data->current_type_is_flags = 0; + + if (VEC_length (gdb_xml_value_s, attributes) > 1) + { + int size = (int) * (ULONGEST *) + VEC_index (gdb_xml_value_s, attributes, 1)->value; + + tdesc_set_struct_size (type, size); + data->current_type_size = size; + } +} + +static void +tdesc_start_flags (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, VEC(gdb_xml_value_s) *attributes) +{ + struct tdesc_parsing_data *data = user_data; + char *id = VEC_index (gdb_xml_value_s, attributes, 0)->value; + int length = (int) * (ULONGEST *) + VEC_index (gdb_xml_value_s, attributes, 1)->value; + struct tdesc_type *type; + + type = tdesc_create_flags (data->current_feature, id, length); + + data->current_type = type; + data->current_type_size = 0; + data->current_type_is_flags = 1; } /* Handle the start of a element. Attach the field to the - current union. */ + current struct or union. */ static void tdesc_start_field (struct gdb_xml_parser *parser, @@ -241,20 +294,84 @@ tdesc_start_field (struct gdb_xml_parser *parser, void *user_data, VEC(gdb_xml_value_s) *attributes) { struct tdesc_parsing_data *data = user_data; + int ix = 0, length; struct gdb_xml_value *attrs = VEC_address (gdb_xml_value_s, attributes); struct tdesc_type *field_type; char *field_name, *field_type_id; + int start, end; - field_name = attrs[0].value; - field_type_id = attrs[1].value; + length = VEC_length (gdb_xml_value_s, attributes); - field_type = tdesc_named_type (data->current_feature, field_type_id); - if (field_type == NULL) - gdb_xml_error (parser, _("Union field \"%s\" references undefined " - "type \"%s\""), - field_name, field_type_id); + field_name = attrs[ix++].value; + + if (ix < length && strcmp (attrs[ix].name, "type") == 0) + field_type_id = attrs[ix++].value; + else + field_type_id = NULL; + + if (ix < length && strcmp (attrs[ix].name, "start") == 0) + start = * (ULONGEST *) attrs[ix++].value; + else + start = -1; + + if (ix < length && strcmp (attrs[ix].name, "end") == 0) + end = * (ULONGEST *) attrs[ix++].value; + else + end = -1; - tdesc_add_field (data->current_union, field_name, field_type); + if (field_type_id != NULL) + { + if (data->current_type_is_flags) + gdb_xml_error (parser, _("Cannot add typed field \"%s\" to flags"), + field_name); + if (data->current_type_size != 0) + gdb_xml_error (parser, + _("Explicitly sized type can not contain non-bitfield \"%s\""), + field_name); + + field_type = tdesc_named_type (data->current_feature, field_type_id); + if (field_type == NULL) + gdb_xml_error (parser, _("Field \"%s\" references undefined " + "type \"%s\""), + field_name, field_type_id); + + tdesc_add_field (data->current_type, field_name, field_type); + } + else if (start != -1 && end != -1) + { + struct tdesc_type *t = data->current_type; + + if (data->current_type_is_flags) + tdesc_add_flag (t, start, field_name); + else + { + if (data->current_type_size == 0) + gdb_xml_error (parser, + _("Implicitly sized type can not contain bitfield \"%s\""), + field_name); + + if (end >= 64) + gdb_xml_error (parser, + _("Bitfield \"%s\" goes past 64 bits (unsupported)"), + field_name); + + /* Assume that the bit numbering in XML is "lsb-zero". Most + architectures other than PowerPC use this ordering. In + the future, we can add an XML tag to indicate "msb-zero" + numbering. */ + if (start > end) + gdb_xml_error (parser, _("Bitfield \"%s\" has start after end"), + field_name); + + if (end >= data->current_type_size * TARGET_CHAR_BIT) + gdb_xml_error (parser, _("Bitfield \"%s\" does not fit in struct")); + + tdesc_add_bitfield (t, field_name, start, end); + } + } + else + gdb_xml_error (parser, _("Field \"%s\" has neither type nor bit position"), + field_name); } /* Handle the start of a element. Initialize the type and @@ -287,11 +404,13 @@ tdesc_start_vector (struct gdb_xml_parser *parser, static const struct gdb_xml_attribute field_attributes[] = { { "name", GDB_XML_AF_NONE, NULL, NULL }, - { "type", GDB_XML_AF_NONE, NULL, NULL }, + { "type", GDB_XML_AF_OPTIONAL, NULL, NULL }, + { "start", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL }, + { "end", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL }, { NULL, GDB_XML_AF_NONE, NULL, NULL } }; -static const struct gdb_xml_element union_children[] = { +static const struct gdb_xml_element struct_union_children[] = { { "field", field_attributes, NULL, GDB_XML_EF_REPEATABLE, tdesc_start_field, NULL }, { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } @@ -308,8 +427,15 @@ static const struct gdb_xml_attribute reg_attributes[] = { { NULL, GDB_XML_AF_NONE, NULL, NULL } }; -static const struct gdb_xml_attribute union_attributes[] = { +static const struct gdb_xml_attribute struct_union_attributes[] = { { "id", GDB_XML_AF_NONE, NULL, NULL }, + { "size", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL}, + { NULL, GDB_XML_AF_NONE, NULL, NULL } +}; + +static const struct gdb_xml_attribute flags_attributes[] = { + { "id", GDB_XML_AF_NONE, NULL, NULL }, + { "size", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL}, { NULL, GDB_XML_AF_NONE, NULL, NULL } }; @@ -329,9 +455,15 @@ static const struct gdb_xml_element feature_children[] = { { "reg", reg_attributes, NULL, GDB_XML_EF_OPTIONAL | GDB_XML_EF_REPEATABLE, tdesc_start_reg, NULL }, - { "union", union_attributes, union_children, + { "struct", struct_union_attributes, struct_union_children, + GDB_XML_EF_OPTIONAL | GDB_XML_EF_REPEATABLE, + tdesc_start_struct, NULL }, + { "union", struct_union_attributes, struct_union_children, GDB_XML_EF_OPTIONAL | GDB_XML_EF_REPEATABLE, tdesc_start_union, NULL }, + { "flags", flags_attributes, struct_union_children, + GDB_XML_EF_OPTIONAL | GDB_XML_EF_REPEATABLE, + tdesc_start_flags, NULL }, { "vector", vector_attributes, NULL, GDB_XML_EF_OPTIONAL | GDB_XML_EF_REPEATABLE, tdesc_start_vector, NULL }, diff --git a/contrib/gdb-7/gdb/xml-tdesc.h b/contrib/gdb-7/gdb/xml-tdesc.h index be3be7f998..e572977e4f 100644 --- a/contrib/gdb-7/gdb/xml-tdesc.h +++ b/contrib/gdb-7/gdb/xml-tdesc.h @@ -1,6 +1,6 @@ /* XML target description support for GDB. - Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by CodeSourcery. diff --git a/contrib/gdb-7/include/ansidecl.h b/contrib/gdb-7/include/ansidecl.h index 86b0944748..8b76647426 100644 --- a/contrib/gdb-7/include/ansidecl.h +++ b/contrib/gdb-7/include/ansidecl.h @@ -1,6 +1,6 @@ /* ANSI and traditional C compatability macros Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -178,7 +178,7 @@ So instead we use the macro below and test it against specific values. */ /* inline requires special treatment; it's in C99, and GCC >=2.7 supports it too, but it's not in C89. */ #undef inline -#if __STDC_VERSION__ > 199901L || defined(__cplusplus) +#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) || (defined(__SUNPRO_C) && defined(__C99FEATURES__)) /* it's a keyword */ #else # if GCC_VERSION >= 2007 diff --git a/contrib/gdb-7/include/aout/aout64.h b/contrib/gdb-7/include/aout/aout64.h index 2e289b3925..384909e05e 100644 --- a/contrib/gdb-7/include/aout/aout64.h +++ b/contrib/gdb-7/include/aout/aout64.h @@ -1,10 +1,10 @@ /* `a.out' object-file definitions, including extensions to 64-bit fields - Copyright 1999, 2000, 2001, 2003 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2003, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -14,7 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #ifndef __A_OUT_64_H__ #define __A_OUT_64_H__ @@ -141,11 +142,7 @@ struct external_exec /* Sun shared libraries, not linux. This macro is only relevant for ZMAGIC files. */ #ifndef N_SHARED_LIB -#if defined (TEXT_START_ADDR) && TEXT_START_ADDR == 0 #define N_SHARED_LIB(x) (0) -#else -#define N_SHARED_LIB(x) ((x).a_entry < TEXT_START_ADDR) -#endif #endif /* Returning 0 not TEXT_START_ADDR for OMAGIC and NMAGIC is based on diff --git a/contrib/gdb-7/include/aout/ar.h b/contrib/gdb-7/include/aout/ar.h index 7b77997915..de0438222d 100644 --- a/contrib/gdb-7/include/aout/ar.h +++ b/contrib/gdb-7/include/aout/ar.h @@ -1,10 +1,10 @@ /* archive file definition for GNU software - Copyright 2001, 2008 Free Software Foundation, Inc. + Copyright 2001, 2008, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -14,7 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* So far this is correct for BSDish archives. Don't forget that files must begin on an even byte boundary. */ diff --git a/contrib/gdb-7/include/aout/ranlib.h b/contrib/gdb-7/include/aout/ranlib.h index 8695b0502d..92bec46890 100644 --- a/contrib/gdb-7/include/aout/ranlib.h +++ b/contrib/gdb-7/include/aout/ranlib.h @@ -1,19 +1,20 @@ /* ranlib.h -- archive library index member definition for GNU. - Copyright 1990, 1991 Free Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 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, write to the Free Software -Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Copyright 1990, 1991, 2010 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* The Symdef member of an archive contains two things: a table that maps symbol-string offsets to file offsets, diff --git a/contrib/gdb-7/include/aout/stab.def b/contrib/gdb-7/include/aout/stab.def index 3fe8084dec..ad1c62ed88 100644 --- a/contrib/gdb-7/include/aout/stab.def +++ b/contrib/gdb-7/include/aout/stab.def @@ -1,10 +1,10 @@ /* Table of DBX symbol codes for the GNU system. - Copyright 1988, 1991, 1992, 1993, 1994, 1996, 1998, 2004 + Copyright 1988, 1991, 1992, 1993, 1994, 1996, 1998, 2004, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the + 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, @@ -14,7 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* New stab from Solaris 2. This uses an n_type of 0, which in a.out files overlaps the N_UNDF used for ordinary symbols. In ELF files, the diff --git a/contrib/gdb-7/include/aout/stab_gnu.h b/contrib/gdb-7/include/aout/stab_gnu.h index 29dc99062e..60b5272c59 100644 --- a/contrib/gdb-7/include/aout/stab_gnu.h +++ b/contrib/gdb-7/include/aout/stab_gnu.h @@ -1,10 +1,10 @@ /* gnu_stab.h Definitions for GNU extensions to STABS - Copyright 2001 Free Software Foundation, Inc. + Copyright 2001, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -14,7 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #ifndef __GNU_STAB__ /* Indicate the GNU stab.h is in use. */ diff --git a/contrib/gdb-7/include/bfdlink.h b/contrib/gdb-7/include/bfdlink.h index 61cfc7aed4..af3c5c4f5a 100644 --- a/contrib/gdb-7/include/bfdlink.h +++ b/contrib/gdb-7/include/bfdlink.h @@ -67,7 +67,7 @@ enum bfd_link_hash_type bfd_link_hash_warning /* Like indirect, but warn if referenced. */ }; -enum bfd_link_common_skip_ar_aymbols +enum bfd_link_common_skip_ar_symbols { bfd_link_common_skip_none, bfd_link_common_skip_text, @@ -371,9 +371,9 @@ struct bfd_link_info /* Which local symbols to discard. */ enum bfd_link_discard discard; - /* Criteria for skipping symbols when detemining + /* Criteria for skipping symbols when determining whether to include an object from an archive. */ - enum bfd_link_common_skip_ar_aymbols common_skip_ar_aymbols; + enum bfd_link_common_skip_ar_symbols common_skip_ar_symbols; /* Char that may appear as the first char of a symbol, but should be skipped (like symbol_leading_char) when looking up symbols in @@ -540,11 +540,11 @@ struct bfd_link_callbacks /* A function which is called when a relocation is attempted against an undefined symbol. NAME is the symbol which is undefined. ABFD, SECTION and ADDRESS identify the location from which the - reference is made. FATAL indicates whether an undefined symbol is + reference is made. IS_FATAL indicates whether an undefined symbol is a fatal error or not. In some cases SECTION may be NULL. */ bfd_boolean (*undefined_symbol) (struct bfd_link_info *, const char *name, bfd *abfd, - asection *section, bfd_vma address, bfd_boolean fatal); + asection *section, bfd_vma address, bfd_boolean is_fatal); /* A function which is called when a reloc overflow occurs. ENTRY is the link hash table entry for the symbol the reloc is against. NAME is the name of the local symbol or section the reloc is diff --git a/contrib/gdb-7/include/cgen/basic-modes.h b/contrib/gdb-7/include/cgen/basic-modes.h new file mode 100644 index 0000000000..bd87f3acb0 --- /dev/null +++ b/contrib/gdb-7/include/cgen/basic-modes.h @@ -0,0 +1,52 @@ +/* Basic CGEN modes. + Copyright 2005, 2007, 2009 Free Software Foundation, Inc. + Contributed by Red Hat. + + This file is part of the GNU opcodes library. + + This library 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, or (at your option) + any later version. + + It 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 library; see the file COPYING3. If not, write to the + Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#ifndef CGEN_BASIC_MODES_H +#define CGEN_BASIC_MODES_H + +/* This file doesn't contain all modes, + just the basic/portable ones. + It also provides access to stdint.h (*1) so the includer doesn't have + to deal with the portability issues. + (*1): To the extent that bfd_stdint.h does for now. */ + +/* IWBN to avoid unnecessary dependencies on bfd-anything. */ +#include "bfd_stdint.h" + +typedef int8_t QI; +typedef uint8_t UQI; + +typedef int16_t HI; +typedef uint16_t UHI; + +typedef int32_t SI; +typedef uint32_t USI; + +typedef int64_t DI; +typedef uint64_t UDI; + +typedef int INT; +typedef unsigned int UINT; + +/* Cover macro to create a 64-bit integer. */ +#define MAKEDI(hi, lo) ((((DI) (SI) (hi)) << 32) | ((UDI) (USI) (lo))) + +#endif /* CGEN_BASIC_MODES_H */ diff --git a/contrib/gdb-7/include/cgen/basic-ops.h b/contrib/gdb-7/include/cgen/basic-ops.h new file mode 100644 index 0000000000..324f0b15eb --- /dev/null +++ b/contrib/gdb-7/include/cgen/basic-ops.h @@ -0,0 +1,347 @@ +/* Basic semantics ops support for CGEN. + Copyright 2005, 2007, 2009 Free Software Foundation, Inc. + Contributed by Red Hat. + + This file is part of the GNU opcodes library. + + This library 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, or (at your option) + any later version. + + It 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 library; see the file COPYING3. If not, write to the + Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#ifndef CGEN_BASIC_OPS_H +#define CGEN_BASIC_OPS_H + +#include + +#if defined (__GNUC__) && ! defined (SEMOPS_DEFINE_INLINE) +#define SEMOPS_DEFINE_INLINE +#define SEMOPS_INLINE extern inline +#else +#define SEMOPS_INLINE +#endif + +/* These don't really have a mode. */ +#define ANDIF(x, y) ((x) && (y)) +#define ORIF(x, y) ((x) || (y)) + +#define SUBBI(x, y) ((x) - (y)) +#define ANDBI(x, y) ((x) & (y)) +#define ORBI(x, y) ((x) | (y)) +#define XORBI(x, y) ((x) ^ (y)) +#define NEGBI(x) (- (x)) +#define NOTBI(x) (! (BI) (x)) +#define INVBI(x) (~ (x)) +#define EQBI(x, y) ((BI) (x) == (BI) (y)) +#define NEBI(x, y) ((BI) (x) != (BI) (y)) +#define LTBI(x, y) ((BI) (x) < (BI) (y)) +#define LEBI(x, y) ((BI) (x) <= (BI) (y)) +#define GTBI(x, y) ((BI) (x) > (BI) (y)) +#define GEBI(x, y) ((BI) (x) >= (BI) (y)) +#define LTUBI(x, y) ((BI) (x) < (BI) (y)) +#define LEUBI(x, y) ((BI) (x) <= (BI) (y)) +#define GTUBI(x, y) ((BI) (x) > (BI) (y)) +#define GEUBI(x, y) ((BI) (x) >= (BI) (y)) + +#define ADDQI(x, y) ((x) + (y)) +#define SUBQI(x, y) ((x) - (y)) +#define MULQI(x, y) ((x) * (y)) +#define DIVQI(x, y) ((QI) (x) / (QI) (y)) +#define UDIVQI(x, y) ((UQI) (x) / (UQI) (y)) +#define MODQI(x, y) ((QI) (x) % (QI) (y)) +#define UMODQI(x, y) ((UQI) (x) % (UQI) (y)) +#define SRAQI(x, y) ((QI) (x) >> (y)) +#define SRLQI(x, y) ((UQI) (x) >> (y)) +#define SLLQI(x, y) ((UQI) (x) << (y)) +extern QI RORQI (QI, int); +extern QI ROLQI (QI, int); +#define ANDQI(x, y) ((x) & (y)) +#define ORQI(x, y) ((x) | (y)) +#define XORQI(x, y) ((x) ^ (y)) +#define NEGQI(x) (- (x)) +#define NOTQI(x) (! (QI) (x)) +#define INVQI(x) (~ (x)) +#define ABSQI(x) ((x) < 0 ? -(x) : (x)) +#define EQQI(x, y) ((QI) (x) == (QI) (y)) +#define NEQI(x, y) ((QI) (x) != (QI) (y)) +#define LTQI(x, y) ((QI) (x) < (QI) (y)) +#define LEQI(x, y) ((QI) (x) <= (QI) (y)) +#define GTQI(x, y) ((QI) (x) > (QI) (y)) +#define GEQI(x, y) ((QI) (x) >= (QI) (y)) +#define LTUQI(x, y) ((UQI) (x) < (UQI) (y)) +#define LEUQI(x, y) ((UQI) (x) <= (UQI) (y)) +#define GTUQI(x, y) ((UQI) (x) > (UQI) (y)) +#define GEUQI(x, y) ((UQI) (x) >= (UQI) (y)) + +#define ADDHI(x, y) ((x) + (y)) +#define SUBHI(x, y) ((x) - (y)) +#define MULHI(x, y) ((x) * (y)) +#define DIVHI(x, y) ((HI) (x) / (HI) (y)) +#define UDIVHI(x, y) ((UHI) (x) / (UHI) (y)) +#define MODHI(x, y) ((HI) (x) % (HI) (y)) +#define UMODHI(x, y) ((UHI) (x) % (UHI) (y)) +#define SRAHI(x, y) ((HI) (x) >> (y)) +#define SRLHI(x, y) ((UHI) (x) >> (y)) +#define SLLHI(x, y) ((UHI) (x) << (y)) +extern HI RORHI (HI, int); +extern HI ROLHI (HI, int); +#define ANDHI(x, y) ((x) & (y)) +#define ORHI(x, y) ((x) | (y)) +#define XORHI(x, y) ((x) ^ (y)) +#define NEGHI(x) (- (x)) +#define NOTHI(x) (! (HI) (x)) +#define INVHI(x) (~ (x)) +#define ABSHI(x) ((x) < 0 ? -(x) : (x)) +#define EQHI(x, y) ((HI) (x) == (HI) (y)) +#define NEHI(x, y) ((HI) (x) != (HI) (y)) +#define LTHI(x, y) ((HI) (x) < (HI) (y)) +#define LEHI(x, y) ((HI) (x) <= (HI) (y)) +#define GTHI(x, y) ((HI) (x) > (HI) (y)) +#define GEHI(x, y) ((HI) (x) >= (HI) (y)) +#define LTUHI(x, y) ((UHI) (x) < (UHI) (y)) +#define LEUHI(x, y) ((UHI) (x) <= (UHI) (y)) +#define GTUHI(x, y) ((UHI) (x) > (UHI) (y)) +#define GEUHI(x, y) ((UHI) (x) >= (UHI) (y)) + +#define ADDSI(x, y) ((x) + (y)) +#define SUBSI(x, y) ((x) - (y)) +#define MULSI(x, y) ((x) * (y)) +#define DIVSI(x, y) ((SI) (x) / (SI) (y)) +#define UDIVSI(x, y) ((USI) (x) / (USI) (y)) +#define MODSI(x, y) ((SI) (x) % (SI) (y)) +#define UMODSI(x, y) ((USI) (x) % (USI) (y)) +#define SRASI(x, y) ((SI) (x) >> (y)) +#define SRLSI(x, y) ((USI) (x) >> (y)) +#define SLLSI(x, y) ((USI) (x) << (y)) +extern SI RORSI (SI, int); +extern SI ROLSI (SI, int); +#define ANDSI(x, y) ((x) & (y)) +#define ORSI(x, y) ((x) | (y)) +#define XORSI(x, y) ((x) ^ (y)) +#define NEGSI(x) (- (x)) +#define NOTSI(x) (! (SI) (x)) +#define INVSI(x) (~ (x)) +#define ABSSI(x) ((x) < 0 ? -(x) : (x)) +#define EQSI(x, y) ((SI) (x) == (SI) (y)) +#define NESI(x, y) ((SI) (x) != (SI) (y)) +#define LTSI(x, y) ((SI) (x) < (SI) (y)) +#define LESI(x, y) ((SI) (x) <= (SI) (y)) +#define GTSI(x, y) ((SI) (x) > (SI) (y)) +#define GESI(x, y) ((SI) (x) >= (SI) (y)) +#define LTUSI(x, y) ((USI) (x) < (USI) (y)) +#define LEUSI(x, y) ((USI) (x) <= (USI) (y)) +#define GTUSI(x, y) ((USI) (x) > (USI) (y)) +#define GEUSI(x, y) ((USI) (x) >= (USI) (y)) + +#ifdef DI_FN_SUPPORT +extern DI ADDDI (DI, DI); +extern DI SUBDI (DI, DI); +extern DI MULDI (DI, DI); +extern DI DIVDI (DI, DI); +extern DI UDIVDI (DI, DI); +extern DI MODDI (DI, DI); +extern DI UMODDI (DI, DI); +extern DI SRADI (DI, int); +extern UDI SRLDI (UDI, int); +extern UDI SLLDI (UDI, int); +extern DI RORDI (DI, int); +extern DI ROLDI (DI, int); +extern DI ANDDI (DI, DI); +extern DI ORDI (DI, DI); +extern DI XORDI (DI, DI); +extern DI NEGDI (DI); +extern int NOTDI (DI); +extern DI INVDI (DI); +extern int EQDI (DI, DI); +extern int NEDI (DI, DI); +extern int LTDI (DI, DI); +extern int LEDI (DI, DI); +extern int GTDI (DI, DI); +extern int GEDI (DI, DI); +extern int LTUDI (UDI, UDI); +extern int LEUDI (UDI, UDI); +extern int GTUDI (UDI, UDI); +extern int GEUDI (UDI, UDI); +#else /* ! DI_FN_SUPPORT */ +#define ADDDI(x, y) ((x) + (y)) +#define SUBDI(x, y) ((x) - (y)) +#define MULDI(x, y) ((x) * (y)) +#define DIVDI(x, y) ((DI) (x) / (DI) (y)) +#define UDIVDI(x, y) ((UDI) (x) / (UDI) (y)) +#define MODDI(x, y) ((DI) (x) % (DI) (y)) +#define UMODDI(x, y) ((UDI) (x) % (UDI) (y)) +#define SRADI(x, y) ((DI) (x) >> (y)) +#define SRLDI(x, y) ((UDI) (x) >> (y)) +#define SLLDI(x, y) ((UDI) (x) << (y)) +extern DI RORDI (DI, int); +extern DI ROLDI (DI, int); +#define ANDDI(x, y) ((x) & (y)) +#define ORDI(x, y) ((x) | (y)) +#define XORDI(x, y) ((x) ^ (y)) +#define NEGDI(x) (- (x)) +#define NOTDI(x) (! (DI) (x)) +#define INVDI(x) (~ (x)) +#define ABSDI(x) ((x) < 0 ? -(x) : (x)) +#define EQDI(x, y) ((DI) (x) == (DI) (y)) +#define NEDI(x, y) ((DI) (x) != (DI) (y)) +#define LTDI(x, y) ((DI) (x) < (DI) (y)) +#define LEDI(x, y) ((DI) (x) <= (DI) (y)) +#define GTDI(x, y) ((DI) (x) > (DI) (y)) +#define GEDI(x, y) ((DI) (x) >= (DI) (y)) +#define LTUDI(x, y) ((UDI) (x) < (UDI) (y)) +#define LEUDI(x, y) ((UDI) (x) <= (UDI) (y)) +#define GTUDI(x, y) ((UDI) (x) > (UDI) (y)) +#define GEUDI(x, y) ((UDI) (x) >= (UDI) (y)) +#endif /* DI_FN_SUPPORT */ + +#define EXTBIQI(x) ((QI) (BI) (x)) +#define EXTBIHI(x) ((HI) (BI) (x)) +#define EXTBISI(x) ((SI) (BI) (x)) +#if defined (DI_FN_SUPPORT) +extern DI EXTBIDI (BI); +#else +#define EXTBIDI(x) ((DI) (BI) (x)) +#endif +#define EXTQIHI(x) ((HI) (QI) (x)) +#define EXTQISI(x) ((SI) (QI) (x)) +#if defined (DI_FN_SUPPORT) +extern DI EXTQIDI (QI); +#else +#define EXTQIDI(x) ((DI) (QI) (x)) +#endif +#define EXTHIHI(x) ((HI) (HI) (x)) +#define EXTHISI(x) ((SI) (HI) (x)) +#define EXTSISI(x) ((SI) (SI) (x)) +#if defined (DI_FN_SUPPORT) +extern DI EXTHIDI (HI); +#else +#define EXTHIDI(x) ((DI) (HI) (x)) +#endif +#if defined (DI_FN_SUPPORT) +extern DI EXTSIDI (SI); +#else +#define EXTSIDI(x) ((DI) (SI) (x)) +#endif + +#define ZEXTBIQI(x) ((QI) (BI) (x)) +#define ZEXTBIHI(x) ((HI) (BI) (x)) +#define ZEXTBISI(x) ((SI) (BI) (x)) +#if defined (DI_FN_SUPPORT) +extern DI ZEXTBIDI (BI); +#else +#define ZEXTBIDI(x) ((DI) (BI) (x)) +#endif +#define ZEXTQIHI(x) ((HI) (UQI) (x)) +#define ZEXTQISI(x) ((SI) (UQI) (x)) +#if defined (DI_FN_SUPPORT) +extern DI ZEXTQIDI (QI); +#else +#define ZEXTQIDI(x) ((DI) (UQI) (x)) +#endif +#define ZEXTHISI(x) ((SI) (UHI) (x)) +#define ZEXTHIHI(x) ((HI) (UHI) (x)) +#define ZEXTSISI(x) ((SI) (USI) (x)) +#if defined (DI_FN_SUPPORT) +extern DI ZEXTHIDI (HI); +#else +#define ZEXTHIDI(x) ((DI) (UHI) (x)) +#endif +#if defined (DI_FN_SUPPORT) +extern DI ZEXTSIDI (SI); +#else +#define ZEXTSIDI(x) ((DI) (USI) (x)) +#endif + +#define TRUNCQIBI(x) ((BI) (QI) (x)) +#define TRUNCHIBI(x) ((BI) (HI) (x)) +#define TRUNCHIQI(x) ((QI) (HI) (x)) +#define TRUNCSIBI(x) ((BI) (SI) (x)) +#define TRUNCSIQI(x) ((QI) (SI) (x)) +#define TRUNCSIHI(x) ((HI) (SI) (x)) +#define TRUNCSISI(x) ((SI) (SI) (x)) +#if defined (DI_FN_SUPPORT) +extern BI TRUNCDIBI (DI); +#else +#define TRUNCDIBI(x) ((BI) (DI) (x)) +#endif +#if defined (DI_FN_SUPPORT) +extern QI TRUNCDIQI (DI); +#else +#define TRUNCDIQI(x) ((QI) (DI) (x)) +#endif +#if defined (DI_FN_SUPPORT) +extern HI TRUNCDIHI (DI); +#else +#define TRUNCDIHI(x) ((HI) (DI) (x)) +#endif +#if defined (DI_FN_SUPPORT) +extern SI TRUNCDISI (DI); +#else +#define TRUNCDISI(x) ((SI) (DI) (x)) +#endif + +/* Composing/decomposing the various types. + Word ordering is endian-independent. Words are specified most to least + significant and word number 0 is the most significant word. + ??? May also wish an endian-dependent version. Later. */ + +QI SUBWORDSIQI (SI, int); +HI SUBWORDSIHI (SI, int); +QI SUBWORDDIQI (DI, int); +HI SUBWORDDIHI (DI, int); +SI SUBWORDDISI (DI, int); + +#ifdef SEMOPS_DEFINE_INLINE + +SEMOPS_INLINE QI +SUBWORDSIQI (SI in, int byte) +{ + assert (byte >= 0 && byte <= 3); + return (UQI) (in >> (8 * (3 - byte))) & 0xFF; +} + +SEMOPS_INLINE HI +SUBWORDSIHI (SI in, int word) +{ + if (word == 0) + return (USI) in >> 16; + else + return in; +} + +SEMOPS_INLINE QI +SUBWORDDIQI (DI in, int byte) +{ + assert (byte >= 0 && byte <= 7); + return (UQI) (in >> (8 * (7 - byte))) & 0xFF; +} + +SEMOPS_INLINE HI +SUBWORDDIHI (DI in, int word) +{ + assert (word >= 0 && word <= 3); + return (UHI) (in >> (16 * (3 - word))) & 0xFFFF; +} + +SEMOPS_INLINE SI +SUBWORDDISI (DI in, int word) +{ + if (word == 0) + return (UDI) in >> 32; + else + return in; +} + +#endif /* SUBWORD,JOIN */ + +#endif /* CGEN_BASIC_OPS_H */ diff --git a/contrib/gdb-7/include/cgen/bitset.h b/contrib/gdb-7/include/cgen/bitset.h new file mode 100644 index 0000000000..7a6a993045 --- /dev/null +++ b/contrib/gdb-7/include/cgen/bitset.h @@ -0,0 +1,56 @@ +/* Header file the type CGEN_BITSET. + Copyright 2002, 2005, 2009 Free Software Foundation, Inc. + + This file is part of the GNU opcodes library. + + This library 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, or (at your option) + any later version. + + It 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 library; see the file COPYING3. If not, write to the + Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#ifndef CGEN_BITSET_H +#define CGEN_BITSET_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* A bitmask represented as a string. + Each member of the set is represented as a bit + in the string. Bytes are indexed from left to right in the string and + bits from most significant to least within each byte. + + For example, the bit representing member number 6 is (set->bits[0] & 0x02). +*/ +typedef struct cgen_bitset +{ + unsigned length; + char *bits; +} CGEN_BITSET; + +extern CGEN_BITSET *cgen_bitset_create PARAMS ((unsigned)); +extern void cgen_bitset_init PARAMS ((CGEN_BITSET *, unsigned)); +extern void cgen_bitset_clear PARAMS ((CGEN_BITSET *)); +extern void cgen_bitset_add PARAMS ((CGEN_BITSET *, unsigned)); +extern void cgen_bitset_set PARAMS ((CGEN_BITSET *, unsigned)); +extern int cgen_bitset_compare PARAMS ((CGEN_BITSET *, CGEN_BITSET *)); +extern void cgen_bitset_union PARAMS ((CGEN_BITSET *, CGEN_BITSET *, CGEN_BITSET *)); +extern int cgen_bitset_intersect_p PARAMS ((CGEN_BITSET *, CGEN_BITSET *)); +extern int cgen_bitset_contains PARAMS ((CGEN_BITSET *, unsigned)); +extern CGEN_BITSET *cgen_bitset_copy PARAMS ((CGEN_BITSET *)); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/contrib/gdb-7/include/coff/ecoff.h b/contrib/gdb-7/include/coff/ecoff.h index d4d3fa52d2..a7991a998b 100644 --- a/contrib/gdb-7/include/coff/ecoff.h +++ b/contrib/gdb-7/include/coff/ecoff.h @@ -2,11 +2,11 @@ This does not include symbol information, found in sym.h and symconst.h. - Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003, 2004, 2005, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -16,7 +16,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #ifndef ECOFF_H #define ECOFF_H diff --git a/contrib/gdb-7/include/coff/internal.h b/contrib/gdb-7/include/coff/internal.h index 4ac96c3bce..a6ead9e5f6 100644 --- a/contrib/gdb-7/include/coff/internal.h +++ b/contrib/gdb-7/include/coff/internal.h @@ -1,12 +1,12 @@ /* Internal format of COFF object file data structures, for GNU BFD. This file is part of BFD, the Binary File Descriptor library. - Copyright 1999, 2000, 2001, 2002, 2003, 2004. 2005, 2006, 2007, 2009 - Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2003, 2004. 2005, 2006, 2007, 2009, + 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -16,7 +16,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #ifndef GNU_COFF_INTERNAL_H #define GNU_COFF_INTERNAL_H 1 diff --git a/contrib/gdb-7/include/demangle.h b/contrib/gdb-7/include/demangle.h index 4b3565bfbb..8ad073de53 100644 --- a/contrib/gdb-7/include/demangle.h +++ b/contrib/gdb-7/include/demangle.h @@ -160,6 +160,9 @@ java_demangle_v3_callback (const char *mangled, extern char* java_demangle_v3 (const char *mangled); +char * +ada_demangle (const char *mangled, int options); + enum gnu_v3_ctor_kinds { gnu_v3_complete_object_ctor = 1, gnu_v3_base_object_ctor, @@ -323,6 +326,9 @@ enum demangle_component_type DEMANGLE_COMPONENT_PTRMEM_TYPE, /* A fixed-point type. */ DEMANGLE_COMPONENT_FIXED_TYPE, + /* A vector type. The left subtree is the number of elements, + the right subtree is the element type. */ + DEMANGLE_COMPONENT_VECTOR_TYPE, /* An argument list. The left subtree is the current argument, and the right subtree is either NULL or another ARGLIST node. */ DEMANGLE_COMPONENT_ARGLIST, @@ -375,12 +381,20 @@ enum demangle_component_type DEMANGLE_COMPONENT_COMPOUND_NAME, /* A name formed by a single character. */ DEMANGLE_COMPONENT_CHARACTER, + /* A number. */ + DEMANGLE_COMPONENT_NUMBER, /* A decltype type. */ DEMANGLE_COMPONENT_DECLTYPE, /* Global constructors keyed to name. */ DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS, /* Global destructors keyed to name. */ DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS, + /* A lambda closure type. */ + DEMANGLE_COMPONENT_LAMBDA, + /* A default argument scope. */ + DEMANGLE_COMPONENT_DEFAULT_ARG, + /* An unnamed type. */ + DEMANGLE_COMPONENT_UNNAMED_TYPE, /* A pack expansion. */ DEMANGLE_COMPONENT_PACK_EXPANSION }; @@ -494,6 +508,14 @@ struct demangle_component struct demangle_component *right; } s_binary; + struct + { + /* subtree, same place as d_left. */ + struct demangle_component *sub; + /* integer. */ + int num; + } s_unary_num; + } u; }; diff --git a/contrib/gdb-7/include/dis-asm.h b/contrib/gdb-7/include/dis-asm.h index 47236a0d0d..63366d9e55 100644 --- a/contrib/gdb-7/include/dis-asm.h +++ b/contrib/gdb-7/include/dis-asm.h @@ -1,11 +1,11 @@ /* Interface between the opcode library and its callers. - Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -127,18 +127,18 @@ typedef struct disassemble_info Returns an errno value or 0 for success. */ int (*read_memory_func) (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length, - struct disassemble_info *info); + struct disassemble_info *dinfo); /* Function which should be called if we get an error that we can't recover from. STATUS is the errno value from read_memory_func and MEMADDR is the address that we were trying to read. INFO is a pointer to this struct. */ void (*memory_error_func) - (int status, bfd_vma memaddr, struct disassemble_info *info); + (int status, bfd_vma memaddr, struct disassemble_info *dinfo); /* Function called to print ADDR. */ void (*print_address_func) - (bfd_vma addr, struct disassemble_info *info); + (bfd_vma addr, struct disassemble_info *dinfo); /* Function called to determine if there is a symbol at the given ADDR. If there is, the function returns 1, otherwise it returns 0. @@ -148,13 +148,13 @@ typedef struct disassemble_info address, (normally because there is a symbol associated with that address), but sometimes we want to mask out the overlay bits. */ int (* symbol_at_address_func) - (bfd_vma addr, struct disassemble_info * info); + (bfd_vma addr, struct disassemble_info *dinfo); /* Function called to check if a SYMBOL is can be displayed to the user. This is used by some ports that want to hide special symbols when displaying debugging outout. */ bfd_boolean (* symbol_is_valid) - (asymbol *, struct disassemble_info * info); + (asymbol *, struct disassemble_info *dinfo); /* These are for buffer_read_memory. */ bfd_byte *buffer; @@ -261,8 +261,6 @@ extern int print_insn_m68hc11 (bfd_vma, disassemble_info *); extern int print_insn_m68hc12 (bfd_vma, disassemble_info *); extern int print_insn_m68k (bfd_vma, disassemble_info *); extern int print_insn_m88k (bfd_vma, disassemble_info *); -extern int print_insn_maxq_big (bfd_vma, disassemble_info *); -extern int print_insn_maxq_little (bfd_vma, disassemble_info *); extern int print_insn_mcore (bfd_vma, disassemble_info *); extern int print_insn_mep (bfd_vma, disassemble_info *); extern int print_insn_microblaze (bfd_vma, disassemble_info *); @@ -286,6 +284,7 @@ extern int print_insn_spu (bfd_vma, disassemble_info *); extern int print_insn_tic30 (bfd_vma, disassemble_info *); extern int print_insn_tic4x (bfd_vma, disassemble_info *); extern int print_insn_tic54x (bfd_vma, disassemble_info *); +extern int print_insn_tic6x (bfd_vma, disassemble_info *); extern int print_insn_tic80 (bfd_vma, disassemble_info *); extern int print_insn_v850 (bfd_vma, disassemble_info *); extern int print_insn_vax (bfd_vma, disassemble_info *); @@ -296,6 +295,7 @@ extern int print_insn_xtensa (bfd_vma, disassemble_info *); extern int print_insn_z80 (bfd_vma, disassemble_info *); extern int print_insn_z8001 (bfd_vma, disassemble_info *); extern int print_insn_z8002 (bfd_vma, disassemble_info *); +extern int print_insn_rx (bfd_vma, disassemble_info *); extern disassembler_ftype arc_get_disassembler (void *); extern disassembler_ftype cris_get_disassembler (bfd *); @@ -316,7 +316,7 @@ extern disassembler_ftype disassembler (bfd *); /* Amend the disassemble_info structure as necessary for the target architecture. Should only be called after initialising the info->arch field. */ -extern void disassemble_init_for_target (struct disassemble_info * info); +extern void disassemble_init_for_target (struct disassemble_info * dinfo); /* Document any target specific options available from the disassembler. */ extern void disassembler_usage (FILE *); @@ -351,7 +351,7 @@ extern bfd_boolean generic_symbol_is_valid /* Method to initialize a disassemble_info struct. This should be called by all applications creating such a struct. */ -extern void init_disassemble_info (struct disassemble_info *info, void *stream, +extern void init_disassemble_info (struct disassemble_info *dinfo, void *stream, fprintf_ftype fprintf_func); /* For compatibility with existing code. */ diff --git a/contrib/gdb-7/include/dwarf2.h b/contrib/gdb-7/include/dwarf2.h index befaceb7eb..03c25812d0 100644 --- a/contrib/gdb-7/include/dwarf2.h +++ b/contrib/gdb-7/include/dwarf2.h @@ -1,7 +1,8 @@ /* Declarations and definitions of codes relating to the DWARF2 and DWARF3 symbolic debugging information formats. Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Written by Gary Funck (gary@intrepid.com) The Ada Joint Program Office (AJPO), Florida State University and Silicon Graphics Inc. @@ -66,6 +67,7 @@ typedef struct unsigned short li_version; unsigned int li_prologue_length; unsigned char li_min_insn_length; + unsigned char li_max_ops_per_insn; unsigned char li_default_is_stmt; int li_line_base; unsigned char li_line_range; @@ -196,14 +198,20 @@ enum dwarf_tag DW_TAG_shared_type = 0x40, /* DWARF 4. */ DW_TAG_type_unit = 0x41, + DW_TAG_rvalue_reference_type = 0x42, + DW_TAG_template_alias = 0x43, DW_TAG_lo_user = 0x4080, DW_TAG_hi_user = 0xffff, /* SGI/MIPS Extensions. */ DW_TAG_MIPS_loop = 0x4081, + /* HP extensions. See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz . */ DW_TAG_HP_array_descriptor = 0x4090, + DW_TAG_HP_Bliss_field = 0x4091, + DW_TAG_HP_Bliss_field_set = 0x4092, + /* GNU extensions. */ DW_TAG_format_label = 0x4101, /* For FORTRAN 77 and Fortran 90. */ DW_TAG_function_template = 0x4102, /* For C++. */ @@ -213,6 +221,13 @@ enum dwarf_tag /* Template template parameter. See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ DW_TAG_GNU_template_template_param = 0x4106, + + /* Template parameter pack extension, specified at + http://wiki.dwarfstd.org/index.php?title=C%2B%2B0x:_Variadic_templates + The values of these two TAGS are in the DW_TAG_GNU_* space until the tags + are properly part of DWARF 5. */ + DW_TAG_GNU_template_parameter_pack = 0x4107, + DW_TAG_GNU_formal_parameter_pack = 0x4108, /* Extensions for UPC. See: http://upc.gwu.edu/~upc. */ DW_TAG_upc_shared_type = 0x8765, DW_TAG_upc_strict_type = 0x8766, @@ -254,7 +269,8 @@ enum dwarf_form DW_FORM_sec_offset = 0x17, DW_FORM_exprloc = 0x18, DW_FORM_flag_present = 0x19, - DW_FORM_sig8 = 0x20 + DW_FORM_ref_sig8 = 0x20 +#define DW_FORM_sig8 DW_FORM_ref_sig8 /* Note: The use of DW_FORM_sig8 is deprecated. */ }; /* Attribute names and codes. */ @@ -353,7 +369,12 @@ enum dwarf_attribute DW_AT_pure = 0x67, DW_AT_recursive = 0x68, /* DWARF 4. */ - DW_AT_signature = 0x69, + DW_AT_signature = 0x69, + DW_AT_main_subprogram = 0x6a, + DW_AT_data_bit_offset = 0x6b, + DW_AT_const_expr = 0x6c, + DW_AT_enum_class = 0x6d, + DW_AT_linkage_name = 0x6e, DW_AT_lo_user = 0x2000, /* Implementation-defined range start. */ DW_AT_hi_user = 0x3ff0, /* Implementation-defined range end. */ @@ -373,6 +394,8 @@ enum dwarf_attribute /* HP extensions. */ DW_AT_HP_block_index = 0x2000, DW_AT_HP_unmodifiable = 0x2001, /* Same as DW_AT_MIPS_fde. */ + DW_AT_HP_prologue = 0x2005, /* Same as DW_AT_MIPS_loop_unroll. */ + DW_AT_HP_epilogue = 0x2008, /* Same as DW_AT_MIPS_stride. */ DW_AT_HP_actuals_stmt_list = 0x2010, DW_AT_HP_proc_per_section = 0x2011, DW_AT_HP_raw_data_ptr = 0x2012, @@ -385,6 +408,13 @@ enum dwarf_attribute DW_AT_HP_all_variables_modifiable = 0x2019, DW_AT_HP_linkage_name = 0x201a, DW_AT_HP_prof_flags = 0x201b, /* In comp unit of procs_info for -g. */ + DW_AT_HP_unit_name = 0x201f, + DW_AT_HP_unit_size = 0x2020, + DW_AT_HP_widened_byte_size = 0x2021, + DW_AT_HP_definition_points = 0x2022, + DW_AT_HP_default_location = 0x2023, + DW_AT_HP_is_result_param = 0x2029, + /* GNU extensions. */ DW_AT_sf_names = 0x2101, DW_AT_src_info = 0x2102, @@ -393,11 +423,28 @@ enum dwarf_attribute DW_AT_body_begin = 0x2105, DW_AT_body_end = 0x2106, DW_AT_GNU_vector = 0x2107, + /* Thread-safety annotations. + See http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */ + DW_AT_GNU_guarded_by = 0x2108, + DW_AT_GNU_pt_guarded_by = 0x2109, + DW_AT_GNU_guarded = 0x210a, + DW_AT_GNU_pt_guarded = 0x210b, + DW_AT_GNU_locks_excluded = 0x210c, + DW_AT_GNU_exclusive_locks_required = 0x210d, + DW_AT_GNU_shared_locks_required = 0x210e, + /* One-definition rule violation detection. + See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo . */ + DW_AT_GNU_odr_signature = 0x210f, /* Template template argument name. See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ DW_AT_GNU_template_name = 0x2110, /* VMS extensions. */ DW_AT_VMS_rtnbeg_pd_address = 0x2201, + /* GNAT extensions. */ + /* GNAT descriptive type. + See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */ + DW_AT_use_GNAT_descriptive_type = 0x2301, + DW_AT_GNAT_descriptive_type = 0x2302, /* UPC extension. */ DW_AT_upc_threads_scaled = 0x3210, /* PGI (STMicroelectronics) extensions. */ @@ -607,18 +654,29 @@ enum dwarf_type DW_ATE_signed_fixed = 0xd, DW_ATE_unsigned_fixed = 0xe, DW_ATE_decimal_float = 0xf, + /* DWARF 4. */ + DW_ATE_UTF = 0x10, DW_ATE_lo_user = 0x80, DW_ATE_hi_user = 0xff, /* HP extensions. */ - DW_ATE_HP_float80 = 0x80, /* Floating-point (80 bit). */ - DW_ATE_HP_complex_float80 = 0x81, /* Complex floating-point (80 bit). */ - DW_ATE_HP_float128 = 0x82, /* Floating-point (128 bit). */ - DW_ATE_HP_complex_float128 = 0x83, /* Complex floating-point (128 bit). */ - DW_ATE_HP_floathpintel = 0x84, /* Floating-point (82 bit IA64). */ - DW_ATE_HP_imaginary_float80 = 0x85, - DW_ATE_HP_imaginary_float128 = 0x86 + DW_ATE_HP_float80 = 0x80, /* Floating-point (80 bit). */ + DW_ATE_HP_complex_float80 = 0x81, /* Complex floating-point (80 bit). */ + DW_ATE_HP_float128 = 0x82, /* Floating-point (128 bit). */ + DW_ATE_HP_complex_float128 = 0x83, /* Complex fp (128 bit). */ + DW_ATE_HP_floathpintel = 0x84, /* Floating-point (82 bit IA64). */ + DW_ATE_HP_imaginary_float80 = 0x85, + DW_ATE_HP_imaginary_float128 = 0x86, + DW_ATE_HP_VAX_float = 0x88, /* F or G floating. */ + DW_ATE_HP_VAX_float_d = 0x89, /* D floating. */ + DW_ATE_HP_packed_decimal = 0x8a, /* Cobol. */ + DW_ATE_HP_zoned_decimal = 0x8b, /* Cobol. */ + DW_ATE_HP_edited = 0x8c, /* Cobol. */ + DW_ATE_HP_signed_fixed = 0x8d, /* Cobol. */ + DW_ATE_HP_unsigned_fixed = 0x8e, /* Cobol. */ + DW_ATE_HP_VAX_complex_float = 0x8f, /* F or G floating complex. */ + DW_ATE_HP_VAX_complex_float_d = 0x90 /* D floating complex. */ }; /* Decimal sign encodings. */ @@ -694,7 +752,8 @@ enum dwarf_calling_convention DW_CC_lo_user = 0x40, DW_CC_hi_user = 0xff, - DW_CC_GNU_renesas_sh = 0x40 + DW_CC_GNU_renesas_sh = 0x40, + DW_CC_GNU_borland_fastcall_i386 = 0x41 }; /* Inline attribute. */ @@ -750,6 +809,7 @@ enum dwarf_line_number_x_ops DW_LNE_HP_negate_function_exit = 0x18, DW_LNE_HP_negate_front_end_logical = 0x19, DW_LNE_HP_define_proc = 0x20, + DW_LNE_HP_source_file_correlation = 0x80, DW_LNE_lo_user = 0x80, DW_LNE_hi_user = 0xff @@ -831,6 +891,8 @@ enum dwarf_source_language DW_LANG_ObjC_plus_plus = 0x0011, DW_LANG_UPC = 0x0012, DW_LANG_D = 0x0013, + /* DWARF 4. */ + DW_LANG_Python = 0x0014, DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */ DW_LANG_hi_user = 0xffff, /* Implementation-defined range start. */ @@ -838,7 +900,13 @@ enum dwarf_source_language /* MIPS. */ DW_LANG_Mips_Assembler = 0x8001, /* UPC. */ - DW_LANG_Upc = 0x8765 + DW_LANG_Upc = 0x8765, + /* HP extensions. */ + DW_LANG_HP_Bliss = 0x8003, + DW_LANG_HP_Basic91 = 0x8004, + DW_LANG_HP_Pascal91 = 0x8005, + DW_LANG_HP_IMacro = 0x8006, + DW_LANG_HP_Assembler = 0x8007 }; /* Names and codes for macro information. */ diff --git a/contrib/gdb-7/include/elf/common.h b/contrib/gdb-7/include/elf/common.h index 37883958cb..01c519dd0d 100644 --- a/contrib/gdb-7/include/elf/common.h +++ b/contrib/gdb-7/include/elf/common.h @@ -1,6 +1,6 @@ /* ELF support for BFD. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support, from information published @@ -11,7 +11,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -21,8 +21,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* This file is part of ELF support for BFD, and contains the portions that are common to both the internal and external representations. @@ -74,6 +74,9 @@ #define ELFOSABI_OPENVMS 13 /* OpenVMS */ #define ELFOSABI_NSK 14 /* Hewlett-Packard Non-Stop Kernel */ #define ELFOSABI_AROS 15 /* AROS */ +#define ELFOSABI_FENIXOS 16 /* FenixOS */ +#define ELFOSABI_C6000_ELFABI 64 /* Bare-metal TMS320C6000 */ +#define ELFOSABI_C6000_LINUX 65 /* Linux TMS320C6000 */ #define ELFOSABI_ARM 97 /* ARM */ #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ @@ -240,9 +243,9 @@ #define EM_VIDEOCORE3 137 /* Broadcom VideoCore III processor */ #define EM_LATTICEMICO32 138 /* RISC processor for Lattice FPGA architecture */ #define EM_SE_C17 139 /* Seiko Epson C17 family */ -#define EM_res140 140 /* Reserved */ -#define EM_res141 141 /* Reserved */ -#define EM_res142 142 /* Reserved */ +#define EM_TI_C6000 140 /* Texas Instruments TMS320C6000 DSP family */ +#define EM_TI_C2000 141 /* Texas Instruments TMS320C2000 DSP family */ +#define EM_TI_C5500 142 /* Texas Instruments TMS320C55x DSP family */ #define EM_res143 143 /* Reserved */ #define EM_res144 144 /* Reserved */ #define EM_res145 145 /* Reserved */ @@ -291,6 +294,7 @@ #define EM_TILE64 187 /* Tilera TILE64 multicore architecture family */ #define EM_TILEPRO 188 /* Tilera TILEPro multicore architecture family */ #define EM_MICROBLAZE 189 /* Xilinx MicroBlaze 32-bit RISC soft processor core */ +#define EM_CUDA 190 /* NVIDIA CUDA architecture */ /* If it is necessary to assign new unofficial EM_* values, please pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision @@ -403,6 +407,9 @@ #define EV_NONE 0 /* Invalid ELF version */ #define EV_CURRENT 1 /* Current version */ +/* Value for e_phnum. */ +#define PN_XNUM 0xffff /* Extended numbering */ + /* Values for program header, p_type field. */ #define PT_NULL 0 /* Program header table entry unused */ @@ -495,6 +502,15 @@ #define SHF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */ #define SHF_MASKPROC 0xF0000000 /* Processor-specific semantics */ +/* This used to be implemented as a processor specific section flag. + We just make it generic. */ +#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude + this section from executable + and shared library that it + builds when those objects + are not to be further + relocated. */ + /* Values of note segment descriptor types for core files. */ #define NT_PRSTATUS 1 /* Contains copy of prstatus struct */ @@ -508,6 +524,20 @@ /* note name must be "LINUX". */ #define NT_PPC_VSX 0x102 /* PowerPC VSX registers */ /* note name must be "LINUX". */ +#define NT_X86_XSTATE 0x202 /* x86 XSAVE extended state */ + /* note name must be "LINUX". */ +#define NT_S390_HIGH_GPRS 0x300 /* S/390 upper halves of GPRs */ + /* note name must be "LINUX". */ +#define NT_S390_TIMER 0x301 /* S390 timer */ + /* note name must be "LINUX". */ +#define NT_S390_TODCMP 0x302 /* S390 TOD clock comparator */ + /* note name must be "LINUX". */ +#define NT_S390_TODPREG 0x303 /* S390 TOD programmable register */ + /* note name must be "LINUX". */ +#define NT_S390_CTRS 0x304 /* S390 control registers */ + /* note name must be "LINUX". */ +#define NT_S390_PREFIX 0x305 /* S390 prefix register */ + /* note name must be "LINUX". */ /* Note segments for core files on dir-style procfs systems. */ @@ -793,10 +823,16 @@ #define VER_DEF_CURRENT 1 /* These constants appear in the vd_flags field of a Elf32_Verdef - structure. */ + structure. + + Cf. the Solaris Linker and Libraries Guide, Ch. 7, Object File Format, + Versioning Sections, for a description: + + http://docs.sun.com/app/docs/doc/819-0690/chapter6-93046?l=en&a=view */ #define VER_FLG_BASE 0x1 #define VER_FLG_WEAK 0x2 +#define VER_FLG_INFO 0x4 /* These special constants can be found in an Elf32_Versym field. */ diff --git a/contrib/gdb-7/include/elf/dwarf.h b/contrib/gdb-7/include/elf/dwarf.h index 6f1bca3703..c2e6a67e86 100644 --- a/contrib/gdb-7/include/elf/dwarf.h +++ b/contrib/gdb-7/include/elf/dwarf.h @@ -3,31 +3,30 @@ Written by Ron Guilmette (rfg@netcom.com) -Copyright 1992, 1993, 1995, 1999, 2005 Free Software Foundation, Inc. + Copyright 1992, 1993, 1995, 1999, 2005, 2010 Free Software Foundation, Inc. -This file is part of GCC. + This file is part of both GCC and the BFD library. -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. + This program is 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. -GCC 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. + 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 GCC; see the file COPYING. If not, write to the Free -Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA -02110-1301, USA. */ + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not, write to the Free + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ /* This file is derived from the DWARF specification (a public document) Revision 1.0.1 (April 8, 1992) developed by the UNIX International Programming Languages Special Interest Group (UI/PLSIG) and distributed by UNIX International. Copies of this specification are available from - UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. -*/ + UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. */ #ifndef _ELF_DWARF_H #define _ELF_DWARF_H diff --git a/contrib/gdb-7/include/elf/external.h b/contrib/gdb-7/include/elf/external.h index 3d4ba7960e..ef7724e94b 100644 --- a/contrib/gdb-7/include/elf/external.h +++ b/contrib/gdb-7/include/elf/external.h @@ -1,33 +1,33 @@ /* ELF support for BFD. Copyright 1991, 1992, 1993, 1995, 1997, 1998, 1999, 2001, 2003, 2005, - 2008 Free Software Foundation, Inc. + 2008, 2010 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support, from information published in "UNIX System V Release 4, Programmers Guide: ANSI C and Programming Support Tools". -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + 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, write to the Free Software -Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + 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, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* This file is part of ELF support for BFD, and contains the portions that describe how ELF is represented externally by the BFD library. I.E. it describes the in-file representation of ELF. It requires the elf/common.h file which contains the portions that are common to - both the internal and external representations. */ + both the internal and external representations. */ /* The 64-bit stuff is kind of random. Perhaps someone will publish a spec someday. */ diff --git a/contrib/gdb-7/include/elf/i386.h b/contrib/gdb-7/include/elf/i386.h index a25fb1c897..a12225faa2 100644 --- a/contrib/gdb-7/include/elf/i386.h +++ b/contrib/gdb-7/include/elf/i386.h @@ -1,12 +1,12 @@ /* ix86 ELF support for BFD. - Copyright 1998, 1999, 2000, 2002, 2004, 2005, 2006, 2009 + Copyright 1998, 1999, 2000, 2002, 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, diff --git a/contrib/gdb-7/include/elf/internal.h b/contrib/gdb-7/include/elf/internal.h index 9ea175c9de..1dd336dd6d 100644 --- a/contrib/gdb-7/include/elf/internal.h +++ b/contrib/gdb-7/include/elf/internal.h @@ -1,34 +1,33 @@ /* ELF support for BFD. Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002, - 2003, 2006, 2007, 2008 Free Software Foundation, Inc. + 2003, 2006, 2007, 2008, 2010 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support, from information published in "UNIX System V Release 4, Programmers Guide: ANSI C and Programming Support Tools". -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + 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, write to the Free Software -Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + 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, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* This file is part of ELF support for BFD, and contains the portions that describe how ELF is represented internally in the BFD library. I.E. it describes the in-memory representation of ELF. It requires the elf-common.h file which contains the portions that are common to - both the internal and external representations. */ - + both the internal and external representations. */ /* NOTE that these structures are not kept in the same order as they appear in the object file. In some cases they've been reordered for more optimal @@ -293,41 +292,36 @@ struct elf_segment_map /* .tbss is special. It doesn't contribute memory space to normal segments and it doesn't take file space in normal segments. */ #define ELF_SECTION_SIZE(sec_hdr, segment) \ - (((sec_hdr->sh_flags & SHF_TLS) == 0 \ - || sec_hdr->sh_type != SHT_NOBITS \ - || segment->p_type == PT_TLS) ? sec_hdr->sh_size : 0) + ((!(((sec_hdr)->sh_flags & SHF_TLS) != 0 \ + && (sec_hdr)->sh_type == SHT_NOBITS) \ + || (segment)->p_type == PT_TLS) ? (sec_hdr)->sh_size : 0) /* Decide if the given sec_hdr is in the given segment. PT_TLS segment contains only SHF_TLS sections. Only PT_LOAD, PT_GNU_RELRO and and PT_TLS segments can contain SHF_TLS sections. */ -#define ELF_IS_SECTION_IN_SEGMENT(sec_hdr, segment) \ - (((((sec_hdr->sh_flags & SHF_TLS) != 0) \ - && (segment->p_type == PT_TLS \ - || segment->p_type == PT_GNU_RELRO \ - || segment->p_type == PT_LOAD)) \ - || ((sec_hdr->sh_flags & SHF_TLS) == 0 \ - && segment->p_type != PT_TLS)) \ +#define ELF_SECTION_IN_SEGMENT_1(sec_hdr, segment, check_vma) \ + ((((((sec_hdr)->sh_flags & SHF_TLS) != 0) \ + && ((segment)->p_type == PT_TLS \ + || (segment)->p_type == PT_GNU_RELRO \ + || (segment)->p_type == PT_LOAD)) \ + || (((sec_hdr)->sh_flags & SHF_TLS) == 0 \ + && (segment)->p_type != PT_TLS \ + && (segment)->p_type != PT_PHDR)) \ /* Any section besides one of type SHT_NOBITS must have a file \ offset within the segment. */ \ - && (sec_hdr->sh_type == SHT_NOBITS \ - || ((bfd_vma) sec_hdr->sh_offset >= segment->p_offset \ - && (sec_hdr->sh_offset + ELF_SECTION_SIZE(sec_hdr, segment) \ - <= segment->p_offset + segment->p_filesz))) \ + && ((sec_hdr)->sh_type == SHT_NOBITS \ + || ((bfd_vma) (sec_hdr)->sh_offset >= (segment)->p_offset \ + && ((sec_hdr)->sh_offset + ELF_SECTION_SIZE(sec_hdr, segment) \ + <= (segment)->p_offset + (segment)->p_filesz))) \ /* SHF_ALLOC sections must have VMAs within the segment. Be \ careful about segments right at the end of memory. */ \ - && ((sec_hdr->sh_flags & SHF_ALLOC) == 0 \ - || (sec_hdr->sh_addr >= segment->p_vaddr \ - && (sec_hdr->sh_addr - segment->p_vaddr \ - + ELF_SECTION_SIZE(sec_hdr, segment) <= segment->p_memsz)))) - -/* Decide if the given sec_hdr is in the given segment in file. */ -#define ELF_IS_SECTION_IN_SEGMENT_FILE(sec_hdr, segment) \ - (sec_hdr->sh_size > 0 \ - && ELF_IS_SECTION_IN_SEGMENT (sec_hdr, segment)) - -/* Decide if the given sec_hdr is in the given segment in memory. */ -#define ELF_IS_SECTION_IN_SEGMENT_MEMORY(sec_hdr, segment) \ - (ELF_SECTION_SIZE(sec_hdr, segment) > 0 \ - && ELF_IS_SECTION_IN_SEGMENT (sec_hdr, segment)) + && (!(check_vma) \ + || ((sec_hdr)->sh_flags & SHF_ALLOC) == 0 \ + || ((sec_hdr)->sh_addr >= (segment)->p_vaddr \ + && ((sec_hdr)->sh_addr - (segment)->p_vaddr \ + + ELF_SECTION_SIZE(sec_hdr, segment) <= (segment)->p_memsz)))) + +#define ELF_SECTION_IN_SEGMENT(sec_hdr, segment) \ + (ELF_SECTION_IN_SEGMENT_1 (sec_hdr, segment, 1)) #endif /* _ELF_INTERNAL_H */ diff --git a/contrib/gdb-7/include/elf/mips.h b/contrib/gdb-7/include/elf/mips.h index 1ef72bb248..6f0c022122 100644 --- a/contrib/gdb-7/include/elf/mips.h +++ b/contrib/gdb-7/include/elf/mips.h @@ -1,27 +1,28 @@ /* MIPS ELF support for BFD. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2008, 2009 + 2003, 2004, 2005, 2008, 2009, 2010 Free Software Foundation, Inc. By Ian Lance Taylor, Cygnus Support, , from information in the System V Application Binary Interface, MIPS Processor Supplement. -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + 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. + 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, write to the Free Software -Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* This file holds definitions specific to the MIPS ELF ABI. Note that most of this is not actually implemented by BFD. */ @@ -215,6 +216,7 @@ END_RELOC_NUMBERS (R_MIPS_maxext) #define E_MIPS_MACH_SB1 0x008a0000 #define E_MIPS_MACH_OCTEON 0x008b0000 #define E_MIPS_MACH_XLR 0x008c0000 +#define E_MIPS_MACH_OCTEON2 0x008d0000 #define E_MIPS_MACH_5400 0x00910000 #define E_MIPS_MACH_5500 0x00980000 #define E_MIPS_MACH_9000 0x00990000 diff --git a/contrib/gdb-7/include/elf/reloc-macros.h b/contrib/gdb-7/include/elf/reloc-macros.h index aefb85f2c1..c0228a9916 100644 --- a/contrib/gdb-7/include/elf/reloc-macros.h +++ b/contrib/gdb-7/include/elf/reloc-macros.h @@ -1,11 +1,11 @@ /* Generic relocation support for BFD. - Copyright 1998, 1999, 2000, 2003 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2003, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, diff --git a/contrib/gdb-7/include/elf/vxworks.h b/contrib/gdb-7/include/elf/vxworks.h index 394de30dd4..f25f012951 100644 --- a/contrib/gdb-7/include/elf/vxworks.h +++ b/contrib/gdb-7/include/elf/vxworks.h @@ -1,25 +1,25 @@ /* VxWorks ELF support for BFD. - Copyright 2007 + Copyright 2007, 2010 Free Software Foundation, Inc. Contributed by Nathan Sidwell -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -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 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. + 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, write to the Free Software -Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, -MA 02110-1301, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #ifndef _ELF_VXWORKS_H #define _ELF_VXWORKS_H diff --git a/contrib/gdb-7/include/elf/x86-64.h b/contrib/gdb-7/include/elf/x86-64.h index eec54388c2..56254d25f1 100644 --- a/contrib/gdb-7/include/elf/x86-64.h +++ b/contrib/gdb-7/include/elf/x86-64.h @@ -1,5 +1,5 @@ /* x86_64 ELF support for BFD. - Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2008, 2009 + Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Jan Hubicka @@ -7,7 +7,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, diff --git a/contrib/gdb-7/include/filenames.h b/contrib/gdb-7/include/filenames.h index 0d411cc126..ca23d32531 100644 --- a/contrib/gdb-7/include/filenames.h +++ b/contrib/gdb-7/include/filenames.h @@ -5,7 +5,7 @@ use forward- and back-slash in path names interchangeably, and some of them have case-insensitive file names. - Copyright 2000, 2001, 2007 Free Software Foundation, Inc. + Copyright 2000, 2001, 2007, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -31,24 +31,44 @@ extern "C" { #endif #if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__) || defined (__CYGWIN__) - -#ifndef HAVE_DOS_BASED_FILE_SYSTEM -#define HAVE_DOS_BASED_FILE_SYSTEM 1 +# ifndef HAVE_DOS_BASED_FILE_SYSTEM +# define HAVE_DOS_BASED_FILE_SYSTEM 1 +# endif +# define HAS_DRIVE_SPEC(f) HAS_DOS_DRIVE_SPEC (f) +# define IS_DIR_SEPARATOR(c) IS_DOS_DIR_SEPARATOR (c) +# define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f) +#else /* not DOSish */ +# define HAS_DRIVE_SPEC(f) (0) +# define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c) +# define IS_ABSOLUTE_PATH(f) IS_UNIX_ABSOLUTE_PATH (f) #endif -#define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == '\\') -/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is - only semi-absolute. This is because the users of IS_ABSOLUTE_PATH - want to know whether to prepend the current working directory to - a file name, which should not be done with a name like d:foo. */ -#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':'))) +#define IS_DIR_SEPARATOR_1(dos_based, c) \ + (((c) == '/') \ + || (((c) == '\\') && (dos_based))) + +#define HAS_DRIVE_SPEC_1(dos_based, f) \ + ((f)[0] && ((f)[1] == ':') && (dos_based)) + +/* Remove the drive spec from F, assuming HAS_DRIVE_SPEC (f). + The result is a pointer to the remainder of F. */ +#define STRIP_DRIVE_SPEC(f) ((f) + 2) -#else /* not DOSish */ +#define IS_DOS_DIR_SEPARATOR(c) IS_DIR_SEPARATOR_1 (1, c) +#define IS_DOS_ABSOLUTE_PATH(f) IS_ABSOLUTE_PATH_1 (1, f) +#define HAS_DOS_DRIVE_SPEC(f) HAS_DRIVE_SPEC_1 (1, f) -#define IS_DIR_SEPARATOR(c) ((c) == '/') -#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0])) +#define IS_UNIX_DIR_SEPARATOR(c) IS_DIR_SEPARATOR_1 (0, c) +#define IS_UNIX_ABSOLUTE_PATH(f) IS_ABSOLUTE_PATH_1 (0, f) -#endif /* not DOSish */ +/* Note that when DOS_BASED is true, IS_ABSOLUTE_PATH accepts d:foo as + well, although it is only semi-absolute. This is because the users + of IS_ABSOLUTE_PATH want to know whether to prepend the current + working directory to a file name, which should not be done with a + name like d:foo. */ +#define IS_ABSOLUTE_PATH_1(dos_based, f) \ + (IS_DIR_SEPARATOR_1 (dos_based, (f)[0]) \ + || HAS_DRIVE_SPEC_1 (dos_based, f)) extern int filename_cmp (const char *s1, const char *s2); #define FILENAME_CMP(s1, s2) filename_cmp(s1, s2) diff --git a/contrib/gdb-7/include/floatformat.h b/contrib/gdb-7/include/floatformat.h index c5f60a3cd9..0fc8e75dc8 100644 --- a/contrib/gdb-7/include/floatformat.h +++ b/contrib/gdb-7/include/floatformat.h @@ -96,6 +96,8 @@ struct floatformat /* floatformats for IEEE single and double, big and little endian. */ +extern const struct floatformat floatformat_ieee_half_big; +extern const struct floatformat floatformat_ieee_half_little; extern const struct floatformat floatformat_ieee_single_big; extern const struct floatformat floatformat_ieee_single_little; extern const struct floatformat floatformat_ieee_double_big; diff --git a/contrib/gdb-7/include/gdb/fileio.h b/contrib/gdb-7/include/gdb/fileio.h index ddf5ed5ca9..b9c7360ad8 100644 --- a/contrib/gdb-7/include/gdb/fileio.h +++ b/contrib/gdb-7/include/gdb/fileio.h @@ -1,6 +1,6 @@ /* Hosted File I/O interface definitions, for GDB, the GNU Debugger. - Copyright 2003, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/contrib/gdb-7/include/gdb/signals.h b/contrib/gdb-7/include/gdb/signals.h index 1074294baa..a7eb19ce99 100644 --- a/contrib/gdb-7/include/gdb/signals.h +++ b/contrib/gdb-7/include/gdb/signals.h @@ -1,6 +1,6 @@ /* Target signal numbers for GDB and the GDB remote protocol. Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2007, 2008, 2009 + 1998, 1999, 2000, 2001, 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GDB. diff --git a/contrib/gdb-7/include/hashtab.h b/contrib/gdb-7/include/hashtab.h index 1cd406daf3..4bb65d6c7a 100644 --- a/contrib/gdb-7/include/hashtab.h +++ b/contrib/gdb-7/include/hashtab.h @@ -1,5 +1,5 @@ /* An expandable hash tables datatype. - Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2009 + Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2009, 2010 Free Software Foundation, Inc. Contributed by Vladimir Makarov (vmakarov@cygnus.com). @@ -157,6 +157,9 @@ extern htab_t htab_create_alloc_ex (size_t, htab_hash, void *, htab_alloc_with_arg, htab_free_with_arg); +extern htab_t htab_create_typed_alloc (size_t, htab_hash, htab_eq, htab_del, + htab_alloc, htab_alloc, htab_free); + /* Backward-compatibility functions. */ extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del); extern htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del); diff --git a/contrib/gdb-7/include/libiberty.h b/contrib/gdb-7/include/libiberty.h index a7716e4a41..b320b18e98 100644 --- a/contrib/gdb-7/include/libiberty.h +++ b/contrib/gdb-7/include/libiberty.h @@ -116,6 +116,17 @@ extern char *basename (const char *); extern const char *lbasename (const char *); +/* Same, but assumes DOS semantics (drive name, backslash is also a + dir separator) regardless of host. */ + +extern const char *dos_lbasename (const char *); + +/* Same, but assumes Unix semantics (absolute paths always start with + a slash, only forward slash is accepted as dir separator) + regardless of host. */ + +extern const char *unix_lbasename (const char *); + /* A well-defined realpath () that is always compiled in. */ extern char *lrealpath (const char *); diff --git a/contrib/gdb-7/include/lto-symtab.h b/contrib/gdb-7/include/lto-symtab.h new file mode 100644 index 0000000000..9312c5d9d3 --- /dev/null +++ b/contrib/gdb-7/include/lto-symtab.h @@ -0,0 +1,41 @@ +/* Data types used in the IL symbol table. + Copyright (C) 2009 Free Software Foundation, Inc. + Contributed by Rafael Espindola + +This file is part of GCC. + +GCC 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, or (at your option) any later +version. + +GCC 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 GCC; see the file COPYING3. If not see +. */ + +#ifndef GCC_LTO_SYMTAB_H +#define GCC_LTO_SYMTAB_H + +enum gcc_plugin_symbol_kind + { + GCCPK_DEF, + GCCPK_WEAKDEF, + GCCPK_UNDEF, + GCCPK_WEAKUNDEF, + GCCPK_COMMON + }; + +enum gcc_plugin_symbol_visibility + { + GCCPV_DEFAULT, + GCCPV_PROTECTED, + GCCPV_INTERNAL, + GCCPV_HIDDEN + }; + +#endif /* GCC_LTO_SYMTAB_H */ diff --git a/contrib/gdb-7/include/opcode/i386.h b/contrib/gdb-7/include/opcode/i386.h index a0447b9d54..b635334e41 100644 --- a/contrib/gdb-7/include/opcode/i386.h +++ b/contrib/gdb-7/include/opcode/i386.h @@ -1,13 +1,13 @@ /* opcode/i386.h -- Intel 80386 opcode macros Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler, and GDB, the GNU Debugger. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + 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, @@ -17,7 +17,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ /* The SystemV/386 SVR3.2 assembler, and probably all AT&T derived ix86 Unix assemblers, generate floating point instructions with diff --git a/contrib/gdb-7/include/splay-tree.h b/contrib/gdb-7/include/splay-tree.h index 8a56a20cdc..480b2c43e7 100644 --- a/contrib/gdb-7/include/splay-tree.h +++ b/contrib/gdb-7/include/splay-tree.h @@ -1,5 +1,5 @@ /* A splay-tree datatype. - Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009 + Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009, 2010 Free Software Foundation, Inc. Contributed by Mark Mitchell (mark@markmitchell.com). @@ -41,7 +41,13 @@ extern "C" { typedef unsigned long int libi_uhostptr_t; typedef long int libi_shostptr_t; #else +#ifdef __GNUC__ + __extension__ +#endif typedef unsigned long long libi_uhostptr_t; +#ifdef __GNUC__ + __extension__ +#endif typedef long long libi_shostptr_t; #endif @@ -113,9 +119,13 @@ struct GTY(()) splay_tree_s { /* The deallocate-value function. NULL if no cleanup is necessary. */ splay_tree_delete_value_fn delete_value; - /* Allocate/free functions, and a data pointer to pass to them. */ + /* Node allocate function. Takes allocate_data as a parameter. */ splay_tree_allocate_fn allocate; + + /* Free function for nodes and trees. Takes allocate_data as a parameter. */ splay_tree_deallocate_fn deallocate; + + /* Parameter for allocate/free functions. */ void * GTY((skip)) allocate_data; }; @@ -130,6 +140,13 @@ extern splay_tree splay_tree_new_with_allocator (splay_tree_compare_fn, splay_tree_allocate_fn, splay_tree_deallocate_fn, void *); +extern splay_tree splay_tree_new_typed_alloc (splay_tree_compare_fn, + splay_tree_delete_key_fn, + splay_tree_delete_value_fn, + splay_tree_allocate_fn, + splay_tree_allocate_fn, + splay_tree_deallocate_fn, + void *); extern void splay_tree_delete (splay_tree); extern splay_tree_node splay_tree_insert (splay_tree, splay_tree_key, diff --git a/contrib/gdb-7/include/symcat.h b/contrib/gdb-7/include/symcat.h index 03a1292104..b46128796b 100644 --- a/contrib/gdb-7/include/symcat.h +++ b/contrib/gdb-7/include/symcat.h @@ -1,6 +1,6 @@ /* Symbol concatenation utilities. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 2000, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,6 +23,8 @@ #define CONCAT2(a,b) a##b #define CONCAT3(a,b,c) a##b##c #define CONCAT4(a,b,c,d) a##b##c##d +#define CONCAT5(a,b,c,d,e) a##b##c##d##e +#define CONCAT6(a,b,c,d,e,f) a##b##c##d##e##f #define STRINGX(s) #s #else /* Note one should never pass extra whitespace to the CONCATn macros, @@ -32,12 +34,16 @@ #define CONCAT2(a,b) a/**/b #define CONCAT3(a,b,c) a/**/b/**/c #define CONCAT4(a,b,c,d) a/**/b/**/c/**/d +#define CONCAT5(a,b,c,d,e) a/**/b/**/c/**/d/**/e +#define CONCAT6(a,b,c,d,e,f) a/**/b/**/c/**/d/**/e/**/f #define STRINGX(s) "s" #endif #define XCONCAT2(a,b) CONCAT2(a,b) #define XCONCAT3(a,b,c) CONCAT3(a,b,c) #define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d) +#define XCONCAT5(a,b,c,d,e) CONCAT5(a,b,c,d,e) +#define XCONCAT6(a,b,c,d,e,f) CONCAT6(a,b,c,d,e,f) /* Note the layer of indirection here is typically used to allow stringification of the expansion of macros. I.e. "#define foo diff --git a/contrib/gdb-7/libdecnumber/Makefile.in b/contrib/gdb-7/libdecnumber/Makefile.in deleted file mode 100644 index de91f6f614..0000000000 --- a/contrib/gdb-7/libdecnumber/Makefile.in +++ /dev/null @@ -1,190 +0,0 @@ -# @configure_input@ -# Makefile for libdecnumber. Run 'configure' to generate Makefile from Makefile.in - -# Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. - -#This file is part of GCC. - -#GCC 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, or (at your option) -#any later version. - -#GCC 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 GCC; see the file COPYING3. If not see -#. - -@SET_MAKE@ - -srcdir = @srcdir@ -top_builddir = . -VPATH = @srcdir@ -INSTALL = @INSTALL@ -AR = ar -ARFLAGS = cru -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -CC = @CC@ -CFLAGS = @CFLAGS@ -WARN_CFLAGS = @WARN_CFLAGS@ @WARN_PEDANTIC@ @WERROR@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBICONV = @LIBICONV@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -SHELL = @SHELL@ - -datarootdir = @datarootdir@ -datadir = @datadir@ -exec_prefix = @prefix@ -libdir = @libdir@ -localedir = $(datadir)/locale -prefix = @prefix@ - -ADDITIONAL_OBJS = @ADDITIONAL_OBJS@ - -enable_decimal_float= @enable_decimal_float@ - -INCLUDES = -I$(srcdir) -I. - -ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) - -bid_OBJS = bid2dpd_dpd2bid.o host-ieee32.o host-ieee64.o host-ieee128.o - -libdecnumber_a_OBJS = decNumber.o decContext.o \ - decimal32.o decimal64.o decimal128.o $(ADDITIONAL_OBJS) - -libdecnumber_a_SOURCES = decContext.c decContext.h decDPD.h \ - decNumber.c decNumber.h decNumberLocal.h \ - decContextSymbols.h decDPDSymbols.h decNumberSymbols.h \ - dpd/decimal128.c dpd/decimal128.h dpd/decimal128Symbols.h \ - dpd/decimal32.c dpd/decimal32.h dpd/decimal32Symbols.h \ - dpd/decimal64.c dpd/decimal64.h dpd/decimal64Symbols.h \ - bid/decimal128.c bid/decimal128.h \ - bid/decimal32.c bid/decimal32.h \ - bid/decimal64.c bid/decimal64.h - -all: libdecnumber.a - -.SUFFIXES: -.SUFFIXES: .c .o .obj - -libdecnumber.a: $(libdecnumber_a_OBJS) - -rm -f $@ - $(AR) $(ARFLAGS) $@ $(libdecnumber_a_OBJS) - $(RANLIB) $@ - -# Rules to rebuild the configuration - -Makefile: $(srcdir)/Makefile.in config.status - $(SHELL) ./config.status Makefile - -config.status: $(srcdir)/configure - $(SHELL) ./config.status --recheck - -$(srcdir)/configure: @MAINT@ $(srcdir)/aclocal.m4 - cd $(srcdir) && $(AUTOCONF) - -aclocal_deps = \ - $(srcdir)/../config/stdint.m4 \ - $(srcdir)/../config/warnings.m4 \ - $(srcdir)/../config/override.m4 \ - $(srcdir)/configure.ac - -$(srcdir)/aclocal.m4: @MAINT@ $(aclocal_deps) - cd $(srcdir) && $(ACLOCAL) -I ../config - -config.h: stamp-h1 - test -f config.h || (rm -f stamp-h1 && $(MAKE) stamp-h1) - -stamp-h1: $(srcdir)/config.in config.status - -rm -f stamp-h1 - $(SHELL) ./config.status config.h - -$(srcdir)/config.in: @MAINT@ $(srcdir)/configure - cd $(srcdir) && $(AUTOHEADER) - -rm -f stamp-h1 - -# Dependencies. - -decContext.o: decContext.c decContext.h decNumberLocal.h \ - decContextSymbols.h -decNumber.o: decNumber.c decNumber.h decContext.h decNumberLocal.h \ - decNumberSymbols.h -decimal32.o: $(srcdir)/$(enable_decimal_float)/decimal32.c \ - $(srcdir)/$(enable_decimal_float)/decimal32.h \ - $(srcdir)/$(enable_decimal_float)/decimal32Symbols.h \ - decNumber.h decContext.h decNumberLocal.h - $(COMPILE) $(srcdir)/$(enable_decimal_float)/decimal32.c -decimal64.o: $(srcdir)/$(enable_decimal_float)/decimal64.c \ - $(srcdir)/$(enable_decimal_float)/decimal64.h \ - $(srcdir)/$(enable_decimal_float)/decimal64Symbols.h \ - decNumber.h decContext.h decNumberLocal.h - $(COMPILE) $(srcdir)/$(enable_decimal_float)/decimal64.c -decimal128.o: $(srcdir)/$(enable_decimal_float)/decimal128.c \ - $(srcdir)/$(enable_decimal_float)/decimal128.h \ - $(srcdir)/$(enable_decimal_float)/decimal128Symbols.h\ - $(srcdir)/$(enable_decimal_float)/decimal128Local.h\ - decNumber.h decContext.h decNumberLocal.h - $(COMPILE) $(srcdir)/$(enable_decimal_float)/decimal128.c -bid2dpd_dpd2bid.o : $(srcdir)/bid/bid2dpd_dpd2bid.c $(srcdir)/bid/bid2dpd_dpd2bid.h - $(COMPILE) $(srcdir)/bid/bid2dpd_dpd2bid.c -host-ieee32.o : $(srcdir)/bid/host-ieee32.c $(srcdir)/bid/decimal32.h - $(COMPILE) $(srcdir)/bid/host-ieee32.c -host-ieee64.o : $(srcdir)/bid/host-ieee64.c $(srcdir)/bid/decimal64.h - $(COMPILE) $(srcdir)/bid/host-ieee64.c -host-ieee128.o : $(srcdir)/bid/host-ieee128.c $(srcdir)/bid/decimal128.h - $(COMPILE) $(srcdir)/bid/host-ieee128.c -# Other miscellaneous targets. - -mostlyclean: - -rm -f *.o - -clean: mostlyclean - -rm -rf libdecnumber.a $(srcdir)/autom4te.cache - -distclean: clean - -rm -f config.h stamp-h1 config.status config.cache config.log \ - configure.lineno configure.status.lineno Makefile localedir.h \ - localedir.hs gstdint.h - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -rm -f $(srcdir)/configure $(srcdir)/aclocal.m4 - -check: -installcheck: -dvi: -pdf: -html: -info: -install-info: -install-pdf: -install-man: -install-html: -install: - -.PHONY: installdirs install install-strip mostlyclean clean distclean \ - maintainer-clean check installcheck dvi pdf html info install-info \ - install-pdf install-man update-po install-html - -COMPILE = source='$<' object='$@' libtool=no $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(ALL_CFLAGS) -c - -# Implicit rules - -.c.o: - $(COMPILE) $< - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/gdb-7/libdecnumber/decContext.c b/contrib/gdb-7/libdecnumber/decContext.c index 1756dcb252..aa8195928e 100644 --- a/contrib/gdb-7/libdecnumber/decContext.c +++ b/contrib/gdb-7/libdecnumber/decContext.c @@ -393,11 +393,11 @@ Int decContextTestEndian(Flag quiet) { if (dle>1) dle=1; /* ensure 0 or 1 */ if (LITEND!=DECLITEND) { - const char *adj; if (!quiet) { +#if DECCHECK + const char *adj; if (LITEND) adj="little"; else adj="big"; -#if DECCHECK printf("Warning: DECLITEND is set to %d, but this computer appears to be %s-endian\n", DECLITEND, adj); #endif diff --git a/contrib/gdb-7/libiberty/Makefile.in b/contrib/gdb-7/libiberty/Makefile.in deleted file mode 100644 index 5d2adffc7b..0000000000 --- a/contrib/gdb-7/libiberty/Makefile.in +++ /dev/null @@ -1,1176 +0,0 @@ -# Makefile for the libiberty library. -# Originally written by K. Richard Pixley . -# -# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software -# Foundation -# -# This file is part of the libiberty library. -# Libiberty is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# Libiberty 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 -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with libiberty; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, -# Boston, MA 02110-1301, USA. - -libiberty_topdir = @libiberty_topdir@ -srcdir = @srcdir@ - -prefix = @prefix@ - -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -target_header_dir = @target_header_dir@ - -SHELL = @SHELL@ - -# Multilib support variables. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -mkinstalldirs = $(SHELL) $(libiberty_topdir)/mkinstalldirs - -# Some compilers can't handle cc -c blah.c -o foo/blah.o. -OUTPUT_OPTION = @OUTPUT_OPTION@ - -AR = @AR@ -AR_FLAGS = rc - -CC = @CC@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -RANLIB = @RANLIB@ -MAKEINFO = @MAKEINFO@ -PERL = @PERL@ - -PICFLAG = @PICFLAG@ - -MAKEOVERRIDES = - -TARGETLIB = ./libiberty.a -TESTLIB = ./testlib.a - -LIBOBJS = @LIBOBJS@ - -# A configuration can specify extra .o files that should be included, -# even if they are in libc. (Perhaps the libc version is buggy.) -EXTRA_OFILES = - -# Flags to pass to a recursive make. -FLAGS_TO_PASS = \ - "AR=$(AR)" \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC=$(CC)" \ - "CFLAGS=$(CFLAGS)" \ - "CPPFLAGS=$(CPPFLAGS)" \ - "DESTDIR=$(DESTDIR)" \ - "EXTRA_OFILES=$(EXTRA_OFILES)" \ - "HDEFINES=$(HDEFINES)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LOADLIBES=$(LOADLIBES)" \ - "RANLIB=$(RANLIB)" \ - "SHELL=$(SHELL)" \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "libdir=$(libdir)" \ - "libsubdir=$(libsubdir)" \ - "tooldir=$(tooldir)" - -# Subdirectories to recurse into. We need to override this during cleaning -SUBDIRS = testsuite - -# FIXME: add @BUILD_INFO@ once we're sure it works for everyone. -all: stamp-picdir $(TARGETLIB) required-list all-subdir - @: $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all - -.PHONY: check installcheck -check: check-subdir -installcheck: installcheck-subdir - -@host_makefile_frag@ - -INCDIR=$(srcdir)/$(MULTISRCTOP)../include - -COMPILE.c = $(CC) -c @DEFS@ $(CFLAGS) $(CPPFLAGS) -I. -I$(INCDIR) $(HDEFINES) @ac_libiberty_warn_cflags@ - -# Just to make sure we don't use a built-in rule with VPATH -.c.o: - false - -# NOTE: If you add new files to the library, add them to this list -# (alphabetical), and add them to REQUIRED_OFILES, or -# CONFIGURED_OFILES and funcs in configure.ac. Also run "make maint-deps" -# to build the new rules. -CFILES = alloca.c argv.c asprintf.c atexit.c \ - basename.c bcmp.c bcopy.c bsearch.c bzero.c \ - calloc.c choose-temp.c clock.c concat.c cp-demangle.c \ - cp-demint.c cplus-dem.c crc32.c \ - dyn-string.c \ - fdmatch.c ffs.c fibheap.c filename_cmp.c floatformat.c \ - fnmatch.c fopen_unlocked.c \ - getcwd.c getopt.c getopt1.c getpagesize.c getpwd.c getruntime.c \ - gettimeofday.c \ - hashtab.c hex.c \ - index.c insque.c \ - lbasename.c \ - lrealpath.c \ - make-relative-prefix.c \ - make-temp-file.c md5.c memchr.c memcmp.c memcpy.c memmem.c \ - memmove.c mempcpy.c memset.c mkstemps.c \ - objalloc.c obstack.c \ - partition.c pexecute.c \ - pex-common.c pex-djgpp.c pex-msdos.c pex-one.c \ - pex-unix.c pex-win32.c \ - physmem.c putenv.c \ - random.c regex.c rename.c rindex.c \ - safe-ctype.c setenv.c sha1.c sigsetmask.c snprintf.c sort.c \ - spaces.c splay-tree.c stpcpy.c stpncpy.c strcasecmp.c \ - strchr.c strdup.c strerror.c strncasecmp.c strncmp.c \ - strrchr.c strsignal.c strstr.c strtod.c strtol.c strtoul.c \ - strndup.c strverscmp.c \ - tmpnam.c \ - unlink-if-ordinary.c \ - vasprintf.c vfork.c vfprintf.c vprintf.c vsnprintf.c vsprintf.c \ - waitpid.c \ - xatexit.c xexit.c xmalloc.c xmemdup.c xstrdup.c xstrerror.c \ - xstrndup.c - -# These are always included in the library. The first four are listed -# first and by compile time to optimize parallel builds. -REQUIRED_OFILES = \ - ./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./sha1.o \ - ./alloca.o ./argv.o \ - ./choose-temp.o ./concat.o ./cp-demint.o ./crc32.o \ - ./dyn-string.o \ - ./fdmatch.o ./fibheap.o ./filename_cmp.o ./floatformat.o \ - ./fnmatch.o ./fopen_unlocked.o \ - ./getopt.o ./getopt1.o ./getpwd.o ./getruntime.o \ - ./hashtab.o ./hex.o \ - ./lbasename.o ./lrealpath.o \ - ./make-relative-prefix.o ./make-temp-file.o \ - ./objalloc.o ./obstack.o \ - ./partition.o ./pexecute.o ./physmem.o \ - ./pex-common.o ./pex-one.o @pexecute@ \ - ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o \ - ./strsignal.o \ - ./unlink-if-ordinary.o \ - ./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o \ - ./xstrerror.o ./xstrndup.o - -# These are all the objects that configure may add to the library via -# $funcs or EXTRA_OFILES. This list exists here only for "make -# maint-missing" and "make check". -CONFIGURED_OFILES = ./asprintf.o ./atexit.o \ - ./basename.o ./bcmp.o ./bcopy.o ./bsearch.o ./bzero.o \ - ./calloc.o ./clock.o ./copysign.o \ - ./_doprnt.o \ - ./ffs.o \ - ./getcwd.o ./getpagesize.o ./gettimeofday.o \ - ./index.o ./insque.o \ - ./memchr.o ./memcmp.o ./memcpy.o ./memmem.o ./memmove.o \ - ./mempcpy.o ./memset.o ./mkstemps.o \ - ./pex-djgpp.o ./pex-msdos.o \ - ./pex-unix.o ./pex-win32.o \ - ./putenv.o \ - ./random.o ./rename.o ./rindex.o \ - ./setenv.o ./sigsetmask.o ./snprintf.o ./stpcpy.o ./stpncpy.o \ - ./strcasecmp.o ./strchr.o ./strdup.o ./strncasecmp.o \ - ./strncmp.o ./strndup.o ./strrchr.o ./strstr.o \ - ./strtod.o ./strtol.o ./strtoul.o ./strverscmp.o \ - ./tmpnam.o \ - ./vasprintf.o ./vfork.o ./vfprintf.o ./vprintf.o ./vsnprintf.o \ - ./vsprintf.o \ - ./waitpid.o - -# These files are installed if the library has been configured to do so. -INSTALLED_HEADERS = \ - $(INCDIR)/ansidecl.h \ - $(INCDIR)/demangle.h \ - $(INCDIR)/dyn-string.h \ - $(INCDIR)/fibheap.h \ - $(INCDIR)/floatformat.h \ - $(INCDIR)/hashtab.h \ - $(INCDIR)/libiberty.h \ - $(INCDIR)/objalloc.h \ - $(INCDIR)/partition.h \ - $(INCDIR)/safe-ctype.h \ - $(INCDIR)/sort.h \ - $(INCDIR)/splay-tree.h - -$(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) - -rm -f $(TARGETLIB) pic/$(TARGETLIB) - $(AR) $(AR_FLAGS) $(TARGETLIB) \ - $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) - $(RANLIB) $(TARGETLIB) - if [ x"$(PICFLAG)" != x ]; then \ - cd pic; \ - $(AR) $(AR_FLAGS) $(TARGETLIB) \ - $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \ - $(RANLIB) $(TARGETLIB); \ - cd ..; \ - else true; fi - -$(TESTLIB): $(REQUIRED_OFILES) $(CONFIGURED_OFILES) - -rm -f $(TESTLIB) - $(AR) $(AR_FLAGS) $(TESTLIB) \ - $(REQUIRED_OFILES) $(CONFIGURED_OFILES) - $(RANLIB) $(TESTLIB) - -info: libiberty.info info-subdir -install-info: install-info-subdir -clean-info: clean-info-subdir -dvi: libiberty.dvi dvi-subdir - -LIBIBERTY_PDFFILES = libiberty.pdf - -pdf: $(LIBIBERTY_PDFFILES) pdf-subdir - -.PHONY: install-pdf - -pdf__strip_dir = `echo $$p | sed -e 's|^.*/||'`; - -install-pdf: $(LIBIBERTY_PDFFILES) - @$(NORMAL_INSTALL) - test -z "$(pdfdir)" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)" - @list='$(LIBIBERTY_PDFFILES)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(pdf__strip_dir) \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ - done - -# html, install-html targets -HTMLS = libiberty.html - -html: $(HTMLS) - -.PHONY: install-html install-html-am - -NORMAL_INSTALL = : -mkdir_p = mkdir -p -- - -html__strip_dir = `echo $$p | sed -e 's|^.*/||'`; - -install-html: install-html-am - -install-html-am: $(HTMLS) - @$(NORMAL_INSTALL) - test -z "$(htmldir)" || $(mkdir_p) "$(DESTDIR)$(htmldir)" - @list='$(HTMLS)'; for p in $$list; do \ - if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \ - f=$(html__strip_dir) \ - if test -d "$$d$$p"; then \ - echo " $(mkdir_p) '$(DESTDIR)$(htmldir)/$$f'"; \ - $(mkdir_p) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ - echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ - else \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ - fi; \ - done - -TEXISRC = \ - $(srcdir)/libiberty.texi \ - $(srcdir)/copying-lib.texi \ - $(srcdir)/obstacks.texi \ - $(srcdir)/functions.texi - -# Additional files that have texi snippets that need to be collected -# and sorted. Some are here because the sources are imported from -# elsewhere. Others represent headers in ../include. -TEXIFILES = fnmatch.txh pexecute.txh - -libiberty.info : $(srcdir)/libiberty.texi $(TEXISRC) - $(MAKEINFO) -I$(srcdir) $(srcdir)/libiberty.texi - -libiberty.dvi : $(srcdir)/libiberty.texi $(TEXISRC) - texi2dvi $(srcdir)/libiberty.texi - -libiberty.pdf : $(srcdir)/libiberty.texi $(TEXISRC) - texi2pdf $(srcdir)/libiberty.texi - -libiberty.html : $(srcdir)/libiberty.texi $(TEXISRC) - $(MAKEINFO) --no-split --html -I$(srcdir) -o $@ $< - -@MAINT@$(srcdir)/functions.texi : stamp-functions -@MAINT@ @true - -@MAINT@stamp-functions : $(CFILES:%=$(srcdir)/%) $(TEXIFILES:%=$(srcdir)/%) $(srcdir)/gather-docs Makefile -@MAINT@@HAVE_PERL@ $(PERL) $(srcdir)/gather-docs $(srcdir) $(srcdir)/functions.texi $(CFILES) $(TEXIFILES) -@MAINT@ echo stamp > stamp-functions - -INSTALL_DEST = @INSTALL_DEST@ -install: install_to_$(INSTALL_DEST) install-subdir - -# This is tricky. Even though CC in the Makefile contains -# multilib-specific flags, it's overridden by FLAGS_TO_PASS from the -# default multilib, so we have to take CFLAGS into account as well, -# since it will be passed the multilib flags. -MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory` -install_to_libdir: all - ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR) - $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n - ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ) - mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB) - if test -n "${target_header_dir}"; then \ - case "${target_header_dir}" in \ - /*) thd=${target_header_dir};; \ - *) thd=${includedir}/${target_header_dir};; \ - esac; \ - ${mkinstalldirs} $(DESTDIR)$${thd}; \ - for h in ${INSTALLED_HEADERS}; do \ - ${INSTALL_DATA} $$h $(DESTDIR)$${thd}; \ - done; \ - fi - @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install - -install_to_tooldir: all - ${mkinstalldirs} $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) - $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n - ( cd $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n; $(RANLIB) $(TARGETLIB)n ) - mv -f $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB) - @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install - -# required-list was used when building a shared bfd/opcodes/libiberty -# library. I don't know if it used by anything currently. -required-list: Makefile - echo $(REQUIRED_OFILES) > required-list - -stamp-picdir: - if [ x"$(PICFLAG)" != x ] && [ ! -d pic ]; then \ - mkdir pic; \ - else true; fi - touch stamp-picdir - -.PHONY: all etags tags ls clean stage1 stage2 - -etags tags: TAGS etags-subdir - -TAGS: $(CFILES) - etags `for i in $(CFILES); do echo $(srcdir)/$$i ; done` - -# The standalone demangler (c++filt) has been moved to binutils. -demangle: - @echo "The standalone demangler, now named c++filt, is now" - @echo "a part of binutils." - @false - -ls: - @echo Makefile $(CFILES) - -# Various targets for maintainers. - -maint-missing : - @$(PERL) $(srcdir)/maint-tool -s $(srcdir) missing $(CFILES) $(REQUIRED_OFILES) $(CONFIGURED_OFILES) - -maint-buildall : $(REQUIRED_OFILES) $(CONFIGURED_OFILES) - @true - -maint-undoc : $(srcdir)/functions.texi - @$(PERL) $(srcdir)/maint-tool -s $(srcdir) undoc - -maint-deps : - @$(PERL) $(srcdir)/maint-tool -s $(srcdir) deps $(INCDIR) - -# Need to deal with profiled libraries, too. - -# Cleaning has to be done carefully to ensure that we don't clean our SUBDIRS -# multiple times, hence our explicit recursion with an empty SUBDIRS. -mostlyclean: mostlyclean-subdir - -rm -rf *.o pic core errs \#* *.E a.out - -rm -f errors dummy config.h stamp-* - -rm -f $(CONFIG_H) stamp-picdir - -rm -f libiberty.aux libiberty.cp libiberty.cps libiberty.fn libiberty.ky - -rm -f libiberty.log libiberty.tmp libiberty.tps libiberty.pg - -rm -f libiberty.pgs libiberty.toc libiberty.tp libiberty.tpl libiberty.vr - -rm -f libtexi.stamp - @$(MULTICLEAN) multi-clean DO=mostlyclean -clean: clean-subdir - $(MAKE) SUBDIRS="" mostlyclean - -rm -f *.a required-list tmpmulti.out - -rm -f libiberty.dvi libiberty.pdf libiberty.info* libiberty.html - @$(MULTICLEAN) multi-clean DO=clean -distclean: distclean-subdir - $(MAKE) SUBDIRS="" clean - @$(MULTICLEAN) multi-clean DO=distclean - -rm -f *~ Makefile config.cache config.status xhost-mkfrag TAGS multilib.out - -rm -f config.log - -rmdir testsuite 2>/dev/null -maintainer-clean realclean: maintainer-clean-subdir - $(MAKE) SUBDIRS="" distclean - -force: - -Makefile: $(srcdir)/Makefile.in config.status - CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status - -# Depending on Makefile makes sure that config.status has been re-run -# if needed. This prevents problems with parallel builds. -config.h: stamp-h ; @true -stamp-h: $(srcdir)/config.in config.status Makefile - CONFIG_FILES= CONFIG_HEADERS=config.h:$(srcdir)/config.in $(SHELL) ./config.status - -config.status: $(srcdir)/configure - $(SHELL) ./config.status --recheck - -AUTOCONF = autoconf -configure_deps = $(srcdir)/aclocal.m4 \ - $(srcdir)/../config/acx.m4 \ - $(srcdir)/../config/no-executables.m4 \ - $(srcdir)/../config/override.m4 \ - $(srcdir)/../config/warnings.m4 \ - -$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(configure_deps) - cd $(srcdir) && $(AUTOCONF) - -# Depending on config.h makes sure that config.status has been re-run -# if needed. This prevents problems with parallel builds, in case -# subdirectories need to run config.status also. -all-subdir check-subdir installcheck-subdir info-subdir \ -install-info-subdir clean-info-subdir dvi-subdir pdf-subdir install-subdir \ -etags-subdir mostlyclean-subdir clean-subdir distclean-subdir \ -maintainer-clean-subdir: config.h - @subdirs='$(SUBDIRS)'; \ - target=`echo $@ | sed -e 's/-subdir//'`; \ - for dir in $$subdirs ; do \ - cd $$dir && $(MAKE) $(FLAGS_TO_PASS) $$target; \ - done - -$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS): stamp-picdir -$(CONFIGURED_OFILES): stamp-picdir - -# Don't export variables to the environment, in order to not confuse -# configure. -.NOEXPORT: - -# The dependencies in the remainder of this file are automatically -# generated by "make maint-deps". Manual edits will be lost. - -./_doprnt.o: $(srcdir)/_doprnt.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/_doprnt.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/_doprnt.c $(OUTPUT_OPTION) - -./alloca.o: $(srcdir)/alloca.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/alloca.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/alloca.c $(OUTPUT_OPTION) - -./argv.o: $(srcdir)/argv.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/argv.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/argv.c $(OUTPUT_OPTION) - -./asprintf.o: $(srcdir)/asprintf.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/asprintf.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/asprintf.c $(OUTPUT_OPTION) - -./atexit.o: $(srcdir)/atexit.c config.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/atexit.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/atexit.c $(OUTPUT_OPTION) - -./basename.o: $(srcdir)/basename.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/basename.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/basename.c $(OUTPUT_OPTION) - -./bcmp.o: $(srcdir)/bcmp.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/bcmp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/bcmp.c $(OUTPUT_OPTION) - -./bcopy.o: $(srcdir)/bcopy.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/bcopy.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/bcopy.c $(OUTPUT_OPTION) - -./bsearch.o: $(srcdir)/bsearch.c config.h $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/bsearch.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/bsearch.c $(OUTPUT_OPTION) - -./bzero.o: $(srcdir)/bzero.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/bzero.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/bzero.c $(OUTPUT_OPTION) - -./calloc.o: $(srcdir)/calloc.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/calloc.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/calloc.c $(OUTPUT_OPTION) - -./choose-temp.o: $(srcdir)/choose-temp.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/choose-temp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/choose-temp.c $(OUTPUT_OPTION) - -./clock.o: $(srcdir)/clock.c config.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/clock.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/clock.c $(OUTPUT_OPTION) - -./concat.o: $(srcdir)/concat.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/concat.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/concat.c $(OUTPUT_OPTION) - -./copysign.o: $(srcdir)/copysign.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/copysign.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/copysign.c $(OUTPUT_OPTION) - -./cp-demangle.o: $(srcdir)/cp-demangle.c config.h $(INCDIR)/ansidecl.h \ - $(srcdir)/cp-demangle.h $(INCDIR)/demangle.h \ - $(INCDIR)/dyn-string.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/cp-demangle.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/cp-demangle.c $(OUTPUT_OPTION) - -./cp-demint.o: $(srcdir)/cp-demint.c config.h $(INCDIR)/ansidecl.h \ - $(srcdir)/cp-demangle.h $(INCDIR)/demangle.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/cp-demint.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/cp-demint.c $(OUTPUT_OPTION) - -./cplus-dem.o: $(srcdir)/cplus-dem.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/demangle.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/cplus-dem.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/cplus-dem.c $(OUTPUT_OPTION) - -./crc32.o: $(srcdir)/crc32.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/crc32.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/crc32.c $(OUTPUT_OPTION) - -./dyn-string.o: $(srcdir)/dyn-string.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/dyn-string.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/dyn-string.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/dyn-string.c $(OUTPUT_OPTION) - -./fdmatch.o: $(srcdir)/fdmatch.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/fdmatch.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/fdmatch.c $(OUTPUT_OPTION) - -./ffs.o: $(srcdir)/ffs.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/ffs.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/ffs.c $(OUTPUT_OPTION) - -./fibheap.o: $(srcdir)/fibheap.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/fibheap.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/fibheap.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/fibheap.c $(OUTPUT_OPTION) - -./filename_cmp.o: $(srcdir)/filename_cmp.c config.h $(INCDIR)/filenames.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/filename_cmp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/filename_cmp.c $(OUTPUT_OPTION) - -./floatformat.o: $(srcdir)/floatformat.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/floatformat.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/floatformat.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/floatformat.c $(OUTPUT_OPTION) - -./fnmatch.o: $(srcdir)/fnmatch.c config.h $(INCDIR)/fnmatch.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/fnmatch.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/fnmatch.c $(OUTPUT_OPTION) - -./fopen_unlocked.o: $(srcdir)/fopen_unlocked.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/fopen_unlocked.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/fopen_unlocked.c $(OUTPUT_OPTION) - -./getcwd.o: $(srcdir)/getcwd.c config.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/getcwd.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/getcwd.c $(OUTPUT_OPTION) - -./getopt.o: $(srcdir)/getopt.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/getopt.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/getopt.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/getopt.c $(OUTPUT_OPTION) - -./getopt1.o: $(srcdir)/getopt1.c config.h $(INCDIR)/getopt.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/getopt1.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/getopt1.c $(OUTPUT_OPTION) - -./getpagesize.o: $(srcdir)/getpagesize.c config.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/getpagesize.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/getpagesize.c $(OUTPUT_OPTION) - -./getpwd.o: $(srcdir)/getpwd.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/getpwd.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/getpwd.c $(OUTPUT_OPTION) - -./getruntime.o: $(srcdir)/getruntime.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/getruntime.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/getruntime.c $(OUTPUT_OPTION) - -./gettimeofday.o: $(srcdir)/gettimeofday.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/gettimeofday.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/gettimeofday.c $(OUTPUT_OPTION) - -./hashtab.o: $(srcdir)/hashtab.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/hashtab.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/hashtab.c $(OUTPUT_OPTION) - -./hex.o: $(srcdir)/hex.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/hex.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/hex.c $(OUTPUT_OPTION) - -./index.o: $(srcdir)/index.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/index.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/index.c $(OUTPUT_OPTION) - -./insque.o: $(srcdir)/insque.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/insque.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/insque.c $(OUTPUT_OPTION) - -./lbasename.o: $(srcdir)/lbasename.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/lbasename.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/lbasename.c $(OUTPUT_OPTION) - -./lrealpath.o: $(srcdir)/lrealpath.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/lrealpath.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/lrealpath.c $(OUTPUT_OPTION) - -./make-relative-prefix.o: $(srcdir)/make-relative-prefix.c config.h \ - $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/make-relative-prefix.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/make-relative-prefix.c $(OUTPUT_OPTION) - -./make-temp-file.o: $(srcdir)/make-temp-file.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/make-temp-file.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/make-temp-file.c $(OUTPUT_OPTION) - -./md5.o: $(srcdir)/md5.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/md5.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/md5.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/md5.c $(OUTPUT_OPTION) - -./memchr.o: $(srcdir)/memchr.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/memchr.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/memchr.c $(OUTPUT_OPTION) - -./memcmp.o: $(srcdir)/memcmp.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/memcmp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/memcmp.c $(OUTPUT_OPTION) - -./memcpy.o: $(srcdir)/memcpy.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/memcpy.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/memcpy.c $(OUTPUT_OPTION) - -./memmem.o: $(srcdir)/memmem.c config.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/memmem.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/memmem.c $(OUTPUT_OPTION) - -./memmove.o: $(srcdir)/memmove.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/memmove.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/memmove.c $(OUTPUT_OPTION) - -./mempcpy.o: $(srcdir)/mempcpy.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/mempcpy.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/mempcpy.c $(OUTPUT_OPTION) - -./memset.o: $(srcdir)/memset.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/memset.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/memset.c $(OUTPUT_OPTION) - -./mkstemps.o: $(srcdir)/mkstemps.c config.h $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/mkstemps.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/mkstemps.c $(OUTPUT_OPTION) - -./msdos.o: $(srcdir)/msdos.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/msdos.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/msdos.c $(OUTPUT_OPTION) - -./objalloc.o: $(srcdir)/objalloc.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/objalloc.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/objalloc.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/objalloc.c $(OUTPUT_OPTION) - -./obstack.o: $(srcdir)/obstack.c config.h $(INCDIR)/obstack.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/obstack.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/obstack.c $(OUTPUT_OPTION) - -./partition.o: $(srcdir)/partition.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(INCDIR)/partition.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/partition.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/partition.c $(OUTPUT_OPTION) - -./pex-common.o: $(srcdir)/pex-common.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(srcdir)/pex-common.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-common.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/pex-common.c $(OUTPUT_OPTION) - -./pex-djgpp.o: $(srcdir)/pex-djgpp.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(srcdir)/pex-common.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-djgpp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/pex-djgpp.c $(OUTPUT_OPTION) - -./pex-msdos.o: $(srcdir)/pex-msdos.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(srcdir)/pex-common.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-msdos.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/pex-msdos.c $(OUTPUT_OPTION) - -./pex-one.o: $(srcdir)/pex-one.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-one.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/pex-one.c $(OUTPUT_OPTION) - -./pex-unix.o: $(srcdir)/pex-unix.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(srcdir)/pex-common.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-unix.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/pex-unix.c $(OUTPUT_OPTION) - -./pex-win32.o: $(srcdir)/pex-win32.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(srcdir)/pex-common.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-win32.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/pex-win32.c $(OUTPUT_OPTION) - -./pexecute.o: $(srcdir)/pexecute.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/pexecute.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/pexecute.c $(OUTPUT_OPTION) - -./physmem.o: $(srcdir)/physmem.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/physmem.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/physmem.c $(OUTPUT_OPTION) - -./putenv.o: $(srcdir)/putenv.c config.h $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/putenv.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/putenv.c $(OUTPUT_OPTION) - -./random.o: $(srcdir)/random.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/random.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/random.c $(OUTPUT_OPTION) - -./regex.o: $(srcdir)/regex.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/xregex.h \ - $(INCDIR)/xregex2.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/regex.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/regex.c $(OUTPUT_OPTION) - -./rename.o: $(srcdir)/rename.c config.h $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/rename.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/rename.c $(OUTPUT_OPTION) - -./rindex.o: $(srcdir)/rindex.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/rindex.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/rindex.c $(OUTPUT_OPTION) - -./safe-ctype.o: $(srcdir)/safe-ctype.c $(INCDIR)/ansidecl.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/safe-ctype.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/safe-ctype.c $(OUTPUT_OPTION) - -./setenv.o: $(srcdir)/setenv.c config.h $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/setenv.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/setenv.c $(OUTPUT_OPTION) - -./sha1.o: $(srcdir)/sha1.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/sha1.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/sha1.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/sha1.c $(OUTPUT_OPTION) - -./sigsetmask.o: $(srcdir)/sigsetmask.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/sigsetmask.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/sigsetmask.c $(OUTPUT_OPTION) - -./snprintf.o: $(srcdir)/snprintf.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/snprintf.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/snprintf.c $(OUTPUT_OPTION) - -./sort.o: $(srcdir)/sort.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - $(INCDIR)/sort.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/sort.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/sort.c $(OUTPUT_OPTION) - -./spaces.o: $(srcdir)/spaces.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/spaces.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/spaces.c $(OUTPUT_OPTION) - -./splay-tree.o: $(srcdir)/splay-tree.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h $(INCDIR)/splay-tree.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/splay-tree.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/splay-tree.c $(OUTPUT_OPTION) - -./stpcpy.o: $(srcdir)/stpcpy.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/stpcpy.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/stpcpy.c $(OUTPUT_OPTION) - -./stpncpy.o: $(srcdir)/stpncpy.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/stpncpy.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/stpncpy.c $(OUTPUT_OPTION) - -./strcasecmp.o: $(srcdir)/strcasecmp.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strcasecmp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strcasecmp.c $(OUTPUT_OPTION) - -./strchr.o: $(srcdir)/strchr.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strchr.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strchr.c $(OUTPUT_OPTION) - -./strdup.o: $(srcdir)/strdup.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strdup.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strdup.c $(OUTPUT_OPTION) - -./strerror.o: $(srcdir)/strerror.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strerror.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strerror.c $(OUTPUT_OPTION) - -./strncasecmp.o: $(srcdir)/strncasecmp.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strncasecmp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strncasecmp.c $(OUTPUT_OPTION) - -./strncmp.o: $(srcdir)/strncmp.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strncmp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strncmp.c $(OUTPUT_OPTION) - -./strndup.o: $(srcdir)/strndup.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strndup.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strndup.c $(OUTPUT_OPTION) - -./strrchr.o: $(srcdir)/strrchr.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strrchr.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strrchr.c $(OUTPUT_OPTION) - -./strsignal.o: $(srcdir)/strsignal.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strsignal.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strsignal.c $(OUTPUT_OPTION) - -./strstr.o: $(srcdir)/strstr.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strstr.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strstr.c $(OUTPUT_OPTION) - -./strtod.o: $(srcdir)/strtod.c $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strtod.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strtod.c $(OUTPUT_OPTION) - -./strtol.o: $(srcdir)/strtol.c config.h $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strtol.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strtol.c $(OUTPUT_OPTION) - -./strtoul.o: $(srcdir)/strtoul.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strtoul.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strtoul.c $(OUTPUT_OPTION) - -./strverscmp.o: $(srcdir)/strverscmp.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \ - $(INCDIR)/safe-ctype.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/strverscmp.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/strverscmp.c $(OUTPUT_OPTION) - -./tmpnam.o: $(srcdir)/tmpnam.c - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/tmpnam.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/tmpnam.c $(OUTPUT_OPTION) - -./unlink-if-ordinary.o: $(srcdir)/unlink-if-ordinary.c config.h \ - $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/unlink-if-ordinary.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/unlink-if-ordinary.c $(OUTPUT_OPTION) - -./vasprintf.o: $(srcdir)/vasprintf.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/vasprintf.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/vasprintf.c $(OUTPUT_OPTION) - -./vfork.o: $(srcdir)/vfork.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/vfork.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/vfork.c $(OUTPUT_OPTION) - -./vfprintf.o: $(srcdir)/vfprintf.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/vfprintf.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/vfprintf.c $(OUTPUT_OPTION) - -./vprintf.o: $(srcdir)/vprintf.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/vprintf.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/vprintf.c $(OUTPUT_OPTION) - -./vsnprintf.o: $(srcdir)/vsnprintf.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/vsnprintf.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/vsnprintf.c $(OUTPUT_OPTION) - -./vsprintf.o: $(srcdir)/vsprintf.c $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/vsprintf.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/vsprintf.c $(OUTPUT_OPTION) - -./waitpid.o: $(srcdir)/waitpid.c config.h $(INCDIR)/ansidecl.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/waitpid.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/waitpid.c $(OUTPUT_OPTION) - -./xatexit.o: $(srcdir)/xatexit.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/xatexit.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/xatexit.c $(OUTPUT_OPTION) - -./xexit.o: $(srcdir)/xexit.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/xexit.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/xexit.c $(OUTPUT_OPTION) - -./xmalloc.o: $(srcdir)/xmalloc.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/xmalloc.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/xmalloc.c $(OUTPUT_OPTION) - -./xmemdup.o: $(srcdir)/xmemdup.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/xmemdup.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/xmemdup.c $(OUTPUT_OPTION) - -./xstrdup.o: $(srcdir)/xstrdup.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrdup.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/xstrdup.c $(OUTPUT_OPTION) - -./xstrerror.o: $(srcdir)/xstrerror.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrerror.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/xstrerror.c $(OUTPUT_OPTION) - -./xstrndup.o: $(srcdir)/xstrndup.c config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/libiberty.h - if [ x"$(PICFLAG)" != x ]; then \ - $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrndup.c -o pic/$@; \ - else true; fi - $(COMPILE.c) $(srcdir)/xstrndup.c $(OUTPUT_OPTION) - diff --git a/contrib/gdb-7/libiberty/README b/contrib/gdb-7/libiberty/README index 886bd67bc9..9f1cc979e4 100644 --- a/contrib/gdb-7/libiberty/README +++ b/contrib/gdb-7/libiberty/README @@ -25,13 +25,14 @@ There are two sets of files: Those that are "required" will be included in the library for all configurations, while those that are "optional" will be included in the library only if "needed." -To add a new required file, edit Makefile to add the source file +To add a new required file, edit Makefile.in to add the source file name to CFILES and the object file to REQUIRED_OFILES. To add a new optional file, it must provide a single function, and the name of the function must be the same as the name of the file. - * Add the source file name to CFILES. + * Add the source file name to CFILES in Makefile.in and the object + file to CONFIGURED_OFILES. * Add the function to name to the funcs shell variable in configure.ac. @@ -48,6 +49,11 @@ name of the function must be the same as the name of the file. object file to LIBOBJS, and add the function name to the case controlling whether to define HAVE_func. +Finally, in the build directory of libiberty, configure with +"--enable-maintainer-mode", run "make maint-deps" to update +Makefile.in, and run 'make stamp-functions' to regenerate +functions.texi. + The optional file you've added (e.g. getcwd.c) should compile and work on all hosts where it is needed. It does not have to work or even compile on hosts where it is not needed. diff --git a/contrib/gdb-7/libiberty/argv.c b/contrib/gdb-7/libiberty/argv.c index 38bd449709..3084248b96 100644 --- a/contrib/gdb-7/libiberty/argv.c +++ b/contrib/gdb-7/libiberty/argv.c @@ -119,6 +119,24 @@ void freeargv (char **vector) } } +static void +consume_whitespace (const char **input) +{ + while (ISSPACE (**input)) + { + (*input)++; + } +} + +static int +only_whitespace (const char* input) +{ + while (*input != EOS && ISSPACE (*input)) + input++; + + return (*input == EOS); +} + /* @deftypefn Extension char** buildargv (char *@var{sp}) @@ -179,10 +197,8 @@ char **buildargv (const char *input) do { /* Pick off argv[argc] */ - while (ISBLANK (*input)) - { - input++; - } + consume_whitespace (&input); + if ((maxargc == 0) || (argc >= (maxargc - 1))) { /* argv needs initialization, or expansion */ @@ -278,10 +294,7 @@ char **buildargv (const char *input) argc++; argv[argc] = NULL; - while (ISSPACE (*input)) - { - input++; - } + consume_whitespace (&input); } while (*input != EOS); } @@ -420,8 +433,17 @@ expandargv (int *argcp, char ***argvp) goto error; /* Add a NUL terminator. */ buffer[len] = '\0'; - /* Parse the string. */ - file_argv = buildargv (buffer); + /* If the file is empty or contains only whitespace, buildargv would + return a single empty argument. In this context we want no arguments, + instead. */ + if (only_whitespace (buffer)) + { + file_argv = (char **) xmalloc (sizeof (char *)); + file_argv[0] = NULL; + } + else + /* Parse the string. */ + file_argv = buildargv (buffer); /* If *ARGVP is not already dynamically allocated, copy it. */ if (!argv_dynamic) { @@ -434,7 +456,7 @@ expandargv (int *argcp, char ***argvp) } /* Count the number of arguments. */ file_argc = 0; - while (file_argv[file_argc] && *file_argv[file_argc]) + while (file_argv[file_argc]) ++file_argc; /* Now, insert FILE_ARGV into ARGV. The "+1" below handles the NULL terminator at the end of ARGV. */ diff --git a/contrib/gdb-7/libiberty/cp-demangle.c b/contrib/gdb-7/libiberty/cp-demangle.c index 2c7296f7ee..d2d15e9b91 100644 --- a/contrib/gdb-7/libiberty/cp-demangle.c +++ b/contrib/gdb-7/libiberty/cp-demangle.c @@ -1,5 +1,5 @@ /* Demangler for g++ V3 ABI. - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Ian Lance Taylor . @@ -302,6 +302,8 @@ struct d_print_info /* The current index into any template argument packs we are using for printing. */ int pack_index; + /* Number of d_print_flush calls so far. */ + unsigned long int flush_count; }; #ifdef CP_DEMANGLE_DEBUG @@ -389,6 +391,8 @@ d_class_enum_type (struct d_info *); static struct demangle_component *d_array_type (struct d_info *); +static struct demangle_component *d_vector_type (struct d_info *); + static struct demangle_component * d_pointer_to_member_type (struct d_info *); @@ -408,6 +412,10 @@ static struct demangle_component *d_local_name (struct d_info *); static int d_discriminator (struct d_info *); +static struct demangle_component *d_lambda (struct d_info *); + +static struct demangle_component *d_unnamed_type (struct d_info *); + static int d_add_substitution (struct d_info *, struct demangle_component *); @@ -792,6 +800,7 @@ d_make_comp (struct d_info *di, enum demangle_component_type type, case DEMANGLE_COMPONENT_LITERAL: case DEMANGLE_COMPONENT_LITERAL_NEG: case DEMANGLE_COMPONENT_COMPOUND_NAME: + case DEMANGLE_COMPONENT_VECTOR_TYPE: if (left == NULL || right == NULL) return NULL; break; @@ -922,6 +931,20 @@ d_make_extended_operator (struct d_info *di, int args, return p; } +static struct demangle_component * +d_make_default_arg (struct d_info *di, int num, + struct demangle_component *sub) +{ + struct demangle_component *p = d_make_empty (di); + if (p) + { + p->type = DEMANGLE_COMPONENT_DEFAULT_ARG; + p->u.s_unary_num.num = num; + p->u.s_unary_num.sub = sub; + } + return p; +} + /* Add a new constructor component. */ static struct demangle_component * @@ -1153,8 +1176,9 @@ d_name (struct d_info *di) return d_local_name (di); case 'L': + case 'U': return d_unqualified_name (di); - + case 'S': { int subst; @@ -1276,6 +1300,7 @@ d_prefix (struct d_info *di) || IS_LOWER (peek) || peek == 'C' || peek == 'D' + || peek == 'U' || peek == 'L') dc = d_unqualified_name (di); else if (peek == 'S') @@ -1291,6 +1316,16 @@ d_prefix (struct d_info *di) dc = d_template_param (di); else if (peek == 'E') return ret; + else if (peek == 'M') + { + /* Initializer scope for a lambda. We don't need to represent + this; the normal code will just treat the variable as a type + scope, which gives appropriate output. */ + if (ret == NULL) + return NULL; + d_advance (di, 1); + continue; + } else return NULL; @@ -1347,6 +1382,18 @@ d_unqualified_name (struct d_info *di) return NULL; return ret; } + else if (peek == 'U') + { + switch (d_peek_next_char (di)) + { + case 'l': + return d_lambda (di); + case 't': + return d_unnamed_type (di); + default: + return NULL; + } + } else return NULL; } @@ -1400,6 +1447,20 @@ d_number (struct d_info *di) } } +/* Like d_number, but returns a demangle_component. */ + +static struct demangle_component * +d_number_component (struct d_info *di) +{ + struct demangle_component *ret = d_make_empty (di); + if (ret) + { + ret->type = DEMANGLE_COMPONENT_NUMBER; + ret->u.s_number.number = d_number (di); + } + return ret; +} + /* identifier ::= <(unqualified source code identifier)> */ static struct demangle_component * @@ -1928,6 +1989,8 @@ cplus_demangle_builtin_types[D_BUILTIN_TYPE_COUNT] = /* 29 */ { NL ("half"), NL ("half"), D_PRINT_FLOAT }, /* 30 */ { NL ("char16_t"), NL ("char16_t"), D_PRINT_DEFAULT }, /* 31 */ { NL ("char32_t"), NL ("char32_t"), D_PRINT_DEFAULT }, + /* 32 */ { NL ("decltype(nullptr)"), NL ("decltype(nullptr)"), + D_PRINT_DEFAULT }, }; CP_STATIC_IF_GLIBCPP_V3 @@ -2151,11 +2214,23 @@ cplus_demangle_type (struct d_info *di) /* For demangling we don't care about the bits. */ d_number (di); ret->u.s_fixed.length = cplus_demangle_type (di); + if (ret->u.s_fixed.length == NULL) + return NULL; d_number (di); peek = d_next_char (di); ret->u.s_fixed.sat = (peek == 's'); break; + case 'v': + ret = d_vector_type (di); + break; + + case 'n': + /* decltype(nullptr) */ + ret = d_make_builtin_type (di, &cplus_demangle_builtin_types[32]); + di->expansion += ret->u.s_builtin.type->len; + break; + default: return NULL; } @@ -2242,50 +2317,30 @@ d_function_type (struct d_info *di) return ret; } -/* ::= [J]+ */ +/* + */ static struct demangle_component * -d_bare_function_type (struct d_info *di, int has_return_type) +d_parmlist (struct d_info *di) { - struct demangle_component *return_type; struct demangle_component *tl; struct demangle_component **ptl; - char peek; - /* Detect special qualifier indicating that the first argument - is the return type. */ - peek = d_peek_char (di); - if (peek == 'J') - { - d_advance (di, 1); - has_return_type = 1; - } - - return_type = NULL; tl = NULL; ptl = &tl; while (1) { struct demangle_component *type; - peek = d_peek_char (di); + char peek = d_peek_char (di); if (peek == '\0' || peek == 'E') break; type = cplus_demangle_type (di); if (type == NULL) return NULL; - if (has_return_type) - { - return_type = type; - has_return_type = 0; - } - else - { - *ptl = d_make_comp (di, DEMANGLE_COMPONENT_ARGLIST, type, NULL); - if (*ptl == NULL) - return NULL; - ptl = &d_right (*ptl); - } + *ptl = d_make_comp (di, DEMANGLE_COMPONENT_ARGLIST, type, NULL); + if (*ptl == NULL) + return NULL; + ptl = &d_right (*ptl); } /* There should be at least one parameter type besides the optional @@ -2300,10 +2355,45 @@ d_bare_function_type (struct d_info *di, int has_return_type) && d_left (tl)->u.s_builtin.type->print == D_PRINT_VOID) { di->expansion -= d_left (tl)->u.s_builtin.type->len; - tl = NULL; + d_left (tl) = NULL; } - return d_make_comp (di, DEMANGLE_COMPONENT_FUNCTION_TYPE, return_type, tl); + return tl; +} + +/* ::= [J]+ */ + +static struct demangle_component * +d_bare_function_type (struct d_info *di, int has_return_type) +{ + struct demangle_component *return_type; + struct demangle_component *tl; + char peek; + + /* Detect special qualifier indicating that the first argument + is the return type. */ + peek = d_peek_char (di); + if (peek == 'J') + { + d_advance (di, 1); + has_return_type = 1; + } + + if (has_return_type) + { + return_type = cplus_demangle_type (di); + if (return_type == NULL) + return NULL; + } + else + return_type = NULL; + + tl = d_parmlist (di); + if (tl == NULL) + return NULL; + + return d_make_comp (di, DEMANGLE_COMPONENT_FUNCTION_TYPE, + return_type, tl); } /* ::= */ @@ -2359,6 +2449,34 @@ d_array_type (struct d_info *di) cplus_demangle_type (di)); } +/* ::= Dv _ + ::= Dv _ _ */ + +static struct demangle_component * +d_vector_type (struct d_info *di) +{ + char peek; + struct demangle_component *dim; + + peek = d_peek_char (di); + if (peek == '_') + { + d_advance (di, 1); + dim = d_expression (di); + } + else + dim = d_number_component (di); + + if (dim == NULL) + return NULL; + + if (! d_check_char (di, '_')) + return NULL; + + return d_make_comp (di, DEMANGLE_COMPONENT_VECTOR_TYPE, dim, + cplus_demangle_type (di)); +} + /* ::= M <(class) type> <(member) type> */ static struct demangle_component * @@ -2405,6 +2523,24 @@ d_pointer_to_member_type (struct d_info *di) return d_make_comp (di, DEMANGLE_COMPONENT_PTRMEM_TYPE, cl, mem); } +/* _ */ + +static long +d_compact_number (struct d_info *di) +{ + long num; + if (d_peek_char (di) == '_') + num = 0; + else if (d_peek_char (di) == 'n') + return -1; + else + num = d_number (di) + 1; + + if (! d_check_char (di, '_')) + return -1; + return num; +} + /* ::= T_ ::= T <(parameter-2 non-negative) number> _ */ @@ -2417,17 +2553,8 @@ d_template_param (struct d_info *di) if (! d_check_char (di, 'T')) return NULL; - if (d_peek_char (di) == '_') - param = 0; - else - { - param = d_number (di); - if (param < 0) - return NULL; - param += 1; - } - - if (! d_check_char (di, '_')) + param = d_compact_number (di); + if (param < 0) return NULL; ++di->did_subs; @@ -2599,26 +2726,24 @@ d_expression (struct d_info *di) /* Function parameter used in a late-specified return type. */ int index; d_advance (di, 2); - if (d_peek_char (di) == '_') - index = 1; - else - { - index = d_number (di); - if (index < 0) - return NULL; - index += 2; - } - - if (! d_check_char (di, '_')) + index = d_compact_number (di); + if (index < 0) return NULL; return d_make_function_param (di, index); } - else if (IS_DIGIT (peek)) + else if (IS_DIGIT (peek) + || (peek == 'o' && d_peek_next_char (di) == 'n')) { /* We can get an unqualified name as an expression in the case of - a dependent member access, i.e. decltype(T().i). */ - struct demangle_component *name = d_unqualified_name (di); + a dependent function call, i.e. decltype(f(t)). */ + struct demangle_component *name; + + if (peek == 'o') + /* operator-function-id, i.e. operator+(t). */ + d_advance (di, 2); + + name = d_unqualified_name (di); if (name == NULL) return NULL; if (d_peek_char (di) == 'I') @@ -2676,10 +2801,18 @@ d_expression (struct d_info *di) { struct demangle_component *left; struct demangle_component *right; + const char *code = op->u.s_operator.op->code; left = d_expression (di); - if (!strcmp (op->u.s_operator.op->code, "cl")) + if (!strcmp (code, "cl")) right = d_exprlist (di); + else if (!strcmp (code, "dt") || !strcmp (code, "pt")) + { + right = d_unqualified_name (di); + if (d_peek_char (di) == 'I') + right = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, + right, d_template_args (di)); + } else right = d_expression (di); @@ -2802,10 +2935,31 @@ d_local_name (struct d_info *di) else { struct demangle_component *name; + int num = -1; + + if (d_peek_char (di) == 'd') + { + /* Default argument scope: d _. */ + d_advance (di, 1); + num = d_compact_number (di); + if (num < 0) + return NULL; + } name = d_name (di); - if (! d_discriminator (di)) - return NULL; + if (name) + switch (name->type) + { + /* Lambdas and unnamed types have internal discriminators. */ + case DEMANGLE_COMPONENT_LAMBDA: + case DEMANGLE_COMPONENT_UNNAMED_TYPE: + break; + default: + if (! d_discriminator (di)) + return NULL; + } + if (num >= 0) + name = d_make_default_arg (di, num, name); return d_make_comp (di, DEMANGLE_COMPONENT_LOCAL_NAME, function, name); } } @@ -2829,6 +2983,75 @@ d_discriminator (struct d_info *di) return 1; } +/* ::= Ul E [ ] _ */ + +static struct demangle_component * +d_lambda (struct d_info *di) +{ + struct demangle_component *tl; + struct demangle_component *ret; + int num; + + if (! d_check_char (di, 'U')) + return NULL; + if (! d_check_char (di, 'l')) + return NULL; + + tl = d_parmlist (di); + if (tl == NULL) + return NULL; + + if (! d_check_char (di, 'E')) + return NULL; + + num = d_compact_number (di); + if (num < 0) + return NULL; + + ret = d_make_empty (di); + if (ret) + { + ret->type = DEMANGLE_COMPONENT_LAMBDA; + ret->u.s_unary_num.sub = tl; + ret->u.s_unary_num.num = num; + } + + if (! d_add_substitution (di, ret)) + return NULL; + + return ret; +} + +/* ::= Ut [ ] _ */ + +static struct demangle_component * +d_unnamed_type (struct d_info *di) +{ + struct demangle_component *ret; + long num; + + if (! d_check_char (di, 'U')) + return NULL; + if (! d_check_char (di, 't')) + return NULL; + + num = d_compact_number (di); + if (num < 0) + return NULL; + + ret = d_make_empty (di); + if (ret) + { + ret->type = DEMANGLE_COMPONENT_UNNAMED_TYPE; + ret->u.s_number.number = num; + } + + if (! d_add_substitution (di, ret)) + return NULL; + + return ret; +} + /* Add a new substitution. */ static int @@ -3064,6 +3287,7 @@ d_print_init (struct d_print_info *dpi, int options, dpi->last_char = '\0'; dpi->templates = NULL; dpi->modifiers = NULL; + dpi->flush_count = 0; dpi->callback = callback; dpi->opaque = opaque; @@ -3093,6 +3317,7 @@ d_print_flush (struct d_print_info *dpi) dpi->buf[dpi->len] = '\0'; dpi->callback (dpi->buf, dpi->len, dpi->opaque); dpi->len = 0; + dpi->flush_count++; } /* Append characters and buffers for printing. */ @@ -3122,6 +3347,14 @@ d_append_string (struct d_print_info *dpi, const char *s) d_append_buffer (dpi, s, strlen (s)); } +static inline void +d_append_num (struct d_print_info *dpi, long l) +{ + char buf[25]; + sprintf (buf,"%ld", l); + d_append_string (dpi, buf); +} + static inline char d_last_char (struct d_print_info *dpi) { @@ -3398,6 +3631,8 @@ d_print_comp (struct d_print_info *dpi, struct demangle_component *local_name; local_name = d_right (typed_name); + if (local_name->type == DEMANGLE_COMPONENT_DEFAULT_ARG) + local_name = local_name->u.s_unary_num.sub; while (local_name->type == DEMANGLE_COMPONENT_RESTRICT_THIS || local_name->type == DEMANGLE_COMPONENT_VOLATILE_THIS || local_name->type == DEMANGLE_COMPONENT_CONST_THIS) @@ -3771,6 +4006,7 @@ d_print_comp (struct d_print_info *dpi, } case DEMANGLE_COMPONENT_PTRMEM_TYPE: + case DEMANGLE_COMPONENT_VECTOR_TYPE: { struct d_print_mod dpm; @@ -3785,11 +4021,7 @@ d_print_comp (struct d_print_info *dpi, /* If the modifier didn't get printed by the type, print it now. */ if (! dpm.printed) - { - d_append_char (dpi, ' '); - d_print_comp (dpi, d_left (dc)); - d_append_string (dpi, "::*"); - } + d_print_mod (dpi, dc); dpi->modifiers = dpm.next; @@ -3819,12 +4051,18 @@ d_print_comp (struct d_print_info *dpi, if (d_right (dc) != NULL) { size_t len; + unsigned long int flush_count; + /* Make sure ", " isn't flushed by d_append_string, otherwise + dpi->len -= 2 wouldn't work. */ + if (dpi->len >= sizeof (dpi->buf) - 2) + d_print_flush (dpi); d_append_string (dpi, ", "); len = dpi->len; + flush_count = dpi->flush_count; d_print_comp (dpi, d_right (dc)); /* If that didn't print anything (which can happen with empty template argument packs), remove the comma and space. */ - if (dpi->len == len) + if (dpi->flush_count == flush_count && dpi->len == len) dpi->len -= 2; } return; @@ -3880,9 +4118,18 @@ d_print_comp (struct d_print_info *dpi, d_append_char (dpi, '('); d_print_subexpr (dpi, d_left (d_right (dc))); - if (strcmp (d_left (dc)->u.s_operator.op->code, "cl") != 0) - d_print_expr_op (dpi, d_left (dc)); - d_print_subexpr (dpi, d_right (d_right (dc))); + if (strcmp (d_left (dc)->u.s_operator.op->code, "ix") == 0) + { + d_append_char (dpi, '['); + d_print_comp (dpi, d_right (d_right (dc))); + d_append_char (dpi, ']'); + } + else + { + if (strcmp (d_left (dc)->u.s_operator.op->code, "cl") != 0) + d_print_expr_op (dpi, d_left (dc)); + d_print_subexpr (dpi, d_right (d_right (dc))); + } if (d_left (dc)->type == DEMANGLE_COMPONENT_OPERATOR && d_left (dc)->u.s_operator.op->len == 1 @@ -4000,6 +4247,10 @@ d_print_comp (struct d_print_info *dpi, } return; + case DEMANGLE_COMPONENT_NUMBER: + d_append_num (dpi, dc->u.s_number.number); + return; + case DEMANGLE_COMPONENT_JAVA_RESOURCE: d_append_string (dpi, "java resource "); d_print_comp (dpi, d_left (dc)); @@ -4048,13 +4299,10 @@ d_print_comp (struct d_print_info *dpi, return; case DEMANGLE_COMPONENT_FUNCTION_PARAM: - { - char buf[25]; - d_append_string (dpi, "parm#"); - sprintf(buf,"%ld", dc->u.s_number.number); - d_append_string (dpi, buf); - return; - } + d_append_string (dpi, "{parm#"); + d_append_num (dpi, dc->u.s_number.number + 1); + d_append_char (dpi, '}'); + return; case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS: d_append_string (dpi, "global constructors keyed to "); @@ -4066,6 +4314,20 @@ d_print_comp (struct d_print_info *dpi, d_print_comp (dpi, dc->u.s_binary.left); return; + case DEMANGLE_COMPONENT_LAMBDA: + d_append_string (dpi, "{lambda("); + d_print_comp (dpi, dc->u.s_unary_num.sub); + d_append_string (dpi, ")#"); + d_append_num (dpi, dc->u.s_unary_num.num + 1); + d_append_char (dpi, '}'); + return; + + case DEMANGLE_COMPONENT_UNNAMED_TYPE: + d_append_string (dpi, "{unnamed type#"); + d_append_num (dpi, dc->u.s_number.number + 1); + d_append_char (dpi, '}'); + return; + default: d_print_error (dpi); return; @@ -4184,6 +4446,15 @@ d_print_mod_list (struct d_print_info *dpi, d_append_char (dpi, '.'); dc = d_right (mods->mod); + + if (dc->type == DEMANGLE_COMPONENT_DEFAULT_ARG) + { + d_append_string (dpi, "{default arg#"); + d_append_num (dpi, dc->u.s_unary_num.num + 1); + d_append_string (dpi, "}::"); + dc = dc->u.s_unary_num.sub; + } + while (dc->type == DEMANGLE_COMPONENT_RESTRICT_THIS || dc->type == DEMANGLE_COMPONENT_VOLATILE_THIS || dc->type == DEMANGLE_COMPONENT_CONST_THIS) @@ -4252,6 +4523,12 @@ d_print_mod (struct d_print_info *dpi, case DEMANGLE_COMPONENT_TYPED_NAME: d_print_comp (dpi, d_left (mod)); return; + case DEMANGLE_COMPONENT_VECTOR_TYPE: + d_append_string (dpi, " __vector("); + d_print_comp (dpi, d_left (mod)); + d_append_char (dpi, ')'); + return; + default: /* Otherwise, we have something that won't go back on the modifier stack, so we can just print it. */ @@ -4600,7 +4877,7 @@ d_demangle (const char *mangled, int options, size_t *palc) return NULL; } - *palc = dgs.allocation_failure ? 1 : 0; + *palc = dgs.allocation_failure ? 1 : dgs.alc; return dgs.buf; } diff --git a/contrib/gdb-7/libiberty/cp-demangle.h b/contrib/gdb-7/libiberty/cp-demangle.h index aad3743740..eac054ed1e 100644 --- a/contrib/gdb-7/libiberty/cp-demangle.h +++ b/contrib/gdb-7/libiberty/cp-demangle.h @@ -147,7 +147,7 @@ struct d_info extern const struct demangle_operator_info cplus_demangle_operators[]; #endif -#define D_BUILTIN_TYPE_COUNT (32) +#define D_BUILTIN_TYPE_COUNT (33) CP_STATIC_IF_GLIBCPP_V3 const struct demangle_builtin_type_info diff --git a/contrib/gdb-7/libiberty/cplus-dem.c b/contrib/gdb-7/libiberty/cplus-dem.c index 4167467536..f20a5ef9d8 100644 --- a/contrib/gdb-7/libiberty/cplus-dem.c +++ b/contrib/gdb-7/libiberty/cplus-dem.c @@ -62,8 +62,6 @@ void * realloc (); #include "libiberty.h" -static char *ada_demangle (const char *, int); - #define min(X,Y) (((X) < (Y)) ? (X) : (Y)) /* A value at least one greater than the maximum number of characters @@ -478,8 +476,6 @@ demangle_arm_hp_template (struct work_stuff *, const char **, int, string *); static void recursively_demangle (struct work_stuff *, const char **, string *, int); -static void grow_vect (char **, size_t *, size_t, int); - /* Translate count to integer, consuming tokens in the process. Conversion terminates on the first non-digit character. @@ -872,126 +868,194 @@ cplus_demangle (const char *mangled, int options) } if (GNAT_DEMANGLING) - return ada_demangle(mangled,options); + return ada_demangle (mangled, options); ret = internal_cplus_demangle (work, mangled); squangle_mop_up (work); return (ret); } +/* Demangle ada names. The encoding is documented in gcc/ada/exp_dbug.ads. */ -/* Assuming *OLD_VECT points to an array of *SIZE objects of size - ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects, - updating *OLD_VECT and *SIZE as necessary. */ - -static void -grow_vect (char **old_vect, size_t *size, size_t min_size, int element_size) -{ - if (*size < min_size) - { - *size *= 2; - if (*size < min_size) - *size = min_size; - *old_vect = XRESIZEVAR (char, *old_vect, *size * element_size); - } -} - -/* Demangle ada names: - 1. Discard final __{DIGIT}+ or ${DIGIT}+ - 2. Convert other instances of embedded "__" to `.'. - 3. Discard leading _ada_. - 4. Remove everything after first ___ if it is followed by 'X'. - 5. Put symbols that should be suppressed in <...> brackets. - The resulting string is valid until the next call of ada_demangle. */ - -static char * +char * ada_demangle (const char *mangled, int option ATTRIBUTE_UNUSED) { - int i, j; int len0; const char* p; - char *demangled = NULL; - int changed; - size_t demangled_size = 0; + char *d; + char *demangled; - changed = 0; - + /* Discard leading _ada_, which is used for library level subprograms. */ if (strncmp (mangled, "_ada_", 5) == 0) - { - mangled += 5; - changed = 1; - } - - if (mangled[0] == '_' || mangled[0] == '<') - goto Suppress; + mangled += 5; + + /* All ada unit names are lower-case. */ + if (!ISLOWER (mangled[0])) + goto unknown; + + /* Most of the demangling will trivially remove chars. Operator names + may add one char but because they are always preceeded by '__' which is + replaced by '.', they eventually never expand the size. '___elabs' and + '___elabb' add only 2 chars, but they occur only once. */ + len0 = strlen (mangled) + 2 + 1; + demangled = XNEWVEC (char, len0); - p = strstr (mangled, "___"); - if (p == NULL) - len0 = strlen (mangled); - else + d = demangled; + p = mangled; + while (1) { - if (p[3] == 'X') - { - len0 = p - mangled; - changed = 1; - } + /* Convert name, which is always lower-case. */ + if (ISLOWER (*p)) + { + do + *d++ = *p++; + while (ISLOWER(*p) || ISDIGIT (*p) + || (p[0] == '_' && (ISLOWER (p[1]) || ISDIGIT (p[1])))); + } + else if (p[0] == 'O') + { + static const char * const operators[][2] = + {{"Oabs", "abs"}, {"Oand", "and"}, {"Omod", "mod"}, + {"Onot", "not"}, {"Oor", "or"}, {"Orem", "rem"}, + {"Oxor", "xor"}, {"Oeq", "="}, {"One", "/="}, + {"Olt", "<"}, {"Ole", "<="}, {"Ogt", ">"}, + {"Oge", ">="}, {"Oadd", "+"}, {"Osubtract", "-"}, + {"Oconcat", "&"}, {"Omultiply", "*"}, {"Odivide", "/"}, + {"Oexpon", "**"}, {NULL, NULL}}; + int k; + + for (k = 0; operators[k][0]; k++) + { + int l = strlen (operators[k][0]); + if (!strncmp (p, operators[k][0], l)) + { + p += l; + l = strlen (operators[k][1]); + *d++ = '"'; + memcpy (d, operators[k][1], l); + d += l; + *d++ = '"'; + break; + } + } + /* Operator not found. */ + if (!operators[k][0]) + goto unknown; + } else - goto Suppress; - } - - /* Make demangled big enough for possible expansion by operator name. */ - grow_vect (&demangled, - &demangled_size, 2 * len0 + 1, - sizeof (char)); - - if (ISDIGIT ((unsigned char) mangled[len0 - 1])) { - for (i = len0 - 2; i >= 0 && ISDIGIT ((unsigned char) mangled[i]); i -= 1) - ; - if (i > 1 && mangled[i] == '_' && mangled[i - 1] == '_') - { - len0 = i - 1; - changed = 1; - } - else if (mangled[i] == '$') - { - len0 = i; - changed = 1; - } - } - - for (i = 0, j = 0; i < len0 && ! ISALPHA ((unsigned char)mangled[i]); - i += 1, j += 1) - demangled[j] = mangled[i]; - - while (i < len0) - { - if (i < len0 - 2 && mangled[i] == '_' && mangled[i + 1] == '_') - { - demangled[j] = '.'; - changed = 1; - i += 2; j += 1; - } + { + /* Not a GNAT encoding. */ + goto unknown; + } + + if (p[0] == '_') + { + /* Separator. */ + if (p[1] == '_') + { + /* Standard separator. Handled first. */ + p += 2; + if (ISDIGIT (*p)) + { + /* Overloading. */ + do + p++; + while (ISDIGIT (*p) || (p[0] == '_' && ISDIGIT (p[1]))); + } + else if (*p == '_' && !strcmp (p + 1, "elabb")) + { + memcpy (d, "'Elab_Body", 10); + d += 10; + break; + } + else if (*p == '_' && !strcmp (p + 1, "elabs")) + { + memcpy (d, "'Elab_Spec", 10); + d += 10; + break; + } + else + { + *d++ = '.'; + continue; + } + } + else if (p[1] == 'B' || p[1] == 'E') + { + /* Entry Body or barrier Evaluation. */ + p += 2; + while (ISDIGIT (*p)) + p++; + if (p[0] == 's' && p[1] == 0) + break; + else + goto unknown; + } + else + goto unknown; + } + + if (p[0] == 'T' && p[1] == 'K') + { + if (p[2] == 'B' && p[3] == 0) + { + /* Subprogram for task body. */ + break; + } + else if (p[2] == '_' && p[3] == '_') + { + /* Inner declarations in a task. */ + p += 4; + *d++ = '.'; + continue; + } + else + goto unknown; + } + if ((p[0] == 'P' || p[0] == 'N') && p[1] == 0) + { + /* Protected type subprogram. */ + break; + } + if (p[0] == 'E' && p[1] == 0) + { + /* Exception name. */ + goto unknown; + } + if (*p == 'N' || *p == 'S') + { + /* Enumerated type name table. */ + goto unknown; + } + if (p[0] == 'X') + { + /* Body nested. */ + if (p[1] == 'n' || p[1] == 'b') + p += 2; + else if (p[1] == 0) + p++; + } + if (p[0] == '.' && ISDIGIT (p[1])) + { + /* Nested subprogram. */ + p += 2; + while (ISDIGIT (*p)) + p++; + } + if (*p == 0) + { + /* End of mangled name. */ + break; + } else - { - demangled[j] = mangled[i]; - i += 1; j += 1; - } + goto unknown; } - demangled[j] = '\000'; - - for (i = 0; demangled[i] != '\0'; i += 1) - if (ISUPPER ((unsigned char)demangled[i]) || demangled[i] == ' ') - goto Suppress; + *d = 0; + return demangled; - if (! changed) - return NULL; - else - return demangled; - - Suppress: - grow_vect (&demangled, - &demangled_size, strlen (mangled) + 3, - sizeof (char)); + unknown: + len0 = strlen (mangled); + demangled = XNEWVEC (char, len0 + 3); if (mangled[0] == '<') strcpy (demangled, mangled); diff --git a/contrib/gdb-7/libiberty/floatformat.c b/contrib/gdb-7/libiberty/floatformat.c index cbf13ea340..4819507cbd 100644 --- a/contrib/gdb-7/libiberty/floatformat.c +++ b/contrib/gdb-7/libiberty/floatformat.c @@ -77,7 +77,23 @@ floatformat_always_valid (const struct floatformat *fmt ATTRIBUTE_UNUSED, a system header, what we do if not, etc. */ #define FLOATFORMAT_CHAR_BIT 8 -/* floatformats for IEEE single and double, big and little endian. */ +/* floatformats for IEEE half, single and double, big and little endian. */ +const struct floatformat floatformat_ieee_half_big = +{ + floatformat_big, 16, 0, 1, 5, 15, 31, 6, 10, + floatformat_intbit_no, + "floatformat_ieee_half_big", + floatformat_always_valid, + NULL +}; +const struct floatformat floatformat_ieee_half_little = +{ + floatformat_little, 16, 0, 1, 5, 15, 31, 6, 10, + floatformat_intbit_no, + "floatformat_ieee_half_little", + floatformat_always_valid, + NULL +}; const struct floatformat floatformat_ieee_single_big = { floatformat_big, 32, 0, 1, 8, 127, 255, 9, 23, diff --git a/contrib/gdb-7/libiberty/hashtab.c b/contrib/gdb-7/libiberty/hashtab.c index 8c89bfcd83..359e3ea569 100644 --- a/contrib/gdb-7/libiberty/hashtab.c +++ b/contrib/gdb-7/libiberty/hashtab.c @@ -1,5 +1,5 @@ /* An expandable hash tables datatype. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2009 + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2009, 2010 Free Software Foundation, Inc. Contributed by Vladimir Makarov (vmakarov@cygnus.com). @@ -290,6 +290,19 @@ htab_mod_m2 (hashval_t hash, htab_t htab) htab_t htab_create_alloc (size_t size, htab_hash hash_f, htab_eq eq_f, htab_del del_f, htab_alloc alloc_f, htab_free free_f) +{ + return htab_create_typed_alloc (size, hash_f, eq_f, del_f, alloc_f, alloc_f, + free_f); +} + +/* As above, but uses the variants of ALLOC_F and FREE_F which accept + an extra argument. */ + +htab_t +htab_create_alloc_ex (size_t size, htab_hash hash_f, htab_eq eq_f, + htab_del del_f, void *alloc_arg, + htab_alloc_with_arg alloc_f, + htab_free_with_arg free_f) { htab_t result; unsigned int size_prime_index; @@ -297,14 +310,14 @@ htab_create_alloc (size_t size, htab_hash hash_f, htab_eq eq_f, size_prime_index = higher_prime_index (size); size = prime_tab[size_prime_index].prime; - result = (htab_t) (*alloc_f) (1, sizeof (struct htab)); + result = (htab_t) (*alloc_f) (alloc_arg, 1, sizeof (struct htab)); if (result == NULL) return NULL; - result->entries = (PTR *) (*alloc_f) (size, sizeof (PTR)); + result->entries = (PTR *) (*alloc_f) (alloc_arg, size, sizeof (PTR)); if (result->entries == NULL) { if (free_f != NULL) - (*free_f) (result); + (*free_f) (alloc_arg, result); return NULL; } result->size = size; @@ -312,19 +325,37 @@ htab_create_alloc (size_t size, htab_hash hash_f, htab_eq eq_f, result->hash_f = hash_f; result->eq_f = eq_f; result->del_f = del_f; - result->alloc_f = alloc_f; - result->free_f = free_f; + result->alloc_arg = alloc_arg; + result->alloc_with_arg_f = alloc_f; + result->free_with_arg_f = free_f; return result; } -/* As above, but use the variants of alloc_f and free_f which accept - an extra argument. */ +/* + +@deftypefn Supplemental htab_t htab_create_typed_alloc (size_t @var{size}, +htab_hash @var{hash_f}, htab_eq @var{eq_f}, htab_del @var{del_f}, +htab_alloc @var{alloc_tab_f}, htab_alloc @var{alloc_f}, +htab_free @var{free_f}) + +This function creates a hash table that uses two different allocators +@var{alloc_tab_f} and @var{alloc_f} to use for allocating the table itself +and its entries respectively. This is useful when variables of different +types need to be allocated with different allocators. + +The created hash table is slightly larger than @var{size} and it is +initially empty (all the hash table entries are @code{HTAB_EMPTY_ENTRY}). +The function returns the created hash table, or @code{NULL} if memory +allocation fails. + +@end deftypefn + +*/ htab_t -htab_create_alloc_ex (size_t size, htab_hash hash_f, htab_eq eq_f, - htab_del del_f, void *alloc_arg, - htab_alloc_with_arg alloc_f, - htab_free_with_arg free_f) +htab_create_typed_alloc (size_t size, htab_hash hash_f, htab_eq eq_f, + htab_del del_f, htab_alloc alloc_tab_f, + htab_alloc alloc_f, htab_free free_f) { htab_t result; unsigned int size_prime_index; @@ -332,14 +363,14 @@ htab_create_alloc_ex (size_t size, htab_hash hash_f, htab_eq eq_f, size_prime_index = higher_prime_index (size); size = prime_tab[size_prime_index].prime; - result = (htab_t) (*alloc_f) (alloc_arg, 1, sizeof (struct htab)); + result = (htab_t) (*alloc_tab_f) (1, sizeof (struct htab)); if (result == NULL) return NULL; - result->entries = (PTR *) (*alloc_f) (alloc_arg, size, sizeof (PTR)); + result->entries = (PTR *) (*alloc_f) (size, sizeof (PTR)); if (result->entries == NULL) { if (free_f != NULL) - (*free_f) (alloc_arg, result); + (*free_f) (result); return NULL; } result->size = size; @@ -347,12 +378,12 @@ htab_create_alloc_ex (size_t size, htab_hash hash_f, htab_eq eq_f, result->hash_f = hash_f; result->eq_f = eq_f; result->del_f = del_f; - result->alloc_arg = alloc_arg; - result->alloc_with_arg_f = alloc_f; - result->free_with_arg_f = free_f; + result->alloc_f = alloc_f; + result->free_f = free_f; return result; } + /* Update the function pointers and allocation parameter in the htab_t. */ void diff --git a/contrib/gdb-7/libiberty/lbasename.c b/contrib/gdb-7/libiberty/lbasename.c index 56fcd62507..ed1dd1fdee 100644 --- a/contrib/gdb-7/libiberty/lbasename.c +++ b/contrib/gdb-7/libiberty/lbasename.c @@ -46,19 +46,39 @@ and a path ending in @code{/} returns the empty string after it. #include "filenames.h" const char * -lbasename (const char *name) +unix_lbasename (const char *name) +{ + const char *base; + + for (base = name; *name; name++) + if (IS_UNIX_DIR_SEPARATOR (*name)) + base = name + 1; + + return base; +} + +const char * +dos_lbasename (const char *name) { const char *base; -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over a possible disk name. */ if (ISALPHA (name[0]) && name[1] == ':') name += 2; -#endif for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) + if (IS_DOS_DIR_SEPARATOR (*name)) base = name + 1; return base; } + +const char * +lbasename (const char *name) +{ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + return dos_lbasename (name); +#else + return unix_lbasename (name); +#endif +} diff --git a/contrib/gdb-7/libiberty/pex-unix.c b/contrib/gdb-7/libiberty/pex-unix.c index baf2bb4995..85733a6692 100644 --- a/contrib/gdb-7/libiberty/pex-unix.c +++ b/contrib/gdb-7/libiberty/pex-unix.c @@ -368,7 +368,8 @@ static void pex_child_error (struct pex_obj *obj, const char *executable, const char *errmsg, int err) { -#define writeerr(s) (void) write (STDERR_FILE_NO, s, strlen (s)) + int retval = 0; +#define writeerr(s) retval |= (write (STDERR_FILE_NO, s, strlen (s)) < 0) writeerr (obj->pname); writeerr (": error trying to exec '"); writeerr (executable); @@ -377,7 +378,9 @@ pex_child_error (struct pex_obj *obj, const char *executable, writeerr (": "); writeerr (xstrerror (err)); writeerr ("\n"); - _exit (-1); +#undef writeerr + /* Exit with -2 if the error output failed, too. */ + _exit (retval == 0 ? -1 : -2); } /* Execute a child. */ @@ -397,6 +400,12 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, volatile int sleep_interval; volatile int retries; + /* We vfork and then set environ in the child before calling execvp. + This clobbers the parent's environ so we need to restore it. + It would be nice to use one of the exec* functions that takes an + environment as a parameter, but that may have portability issues. */ + char **save_environ = environ; + sleep_interval = 1; pid = -1; for (retries = 0; retries < 4; ++retries) @@ -450,7 +459,12 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, } if (env) - environ = (char**) env; + { + /* NOTE: In a standard vfork implementation this clobbers the + parent's copy of environ "too" (in reality there's only one copy). + This is ok as we restore it below. */ + environ = (char**) env; + } if ((flags & PEX_SEARCH) != 0) { @@ -468,6 +482,14 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, default: /* Parent process. */ + + /* Restore environ. + Note that the parent either doesn't run until the child execs/exits + (standard vfork behaviour), or if it does run then vfork is behaving + more like fork. In either case we needn't worry about clobbering + the child's copy of environ. */ + environ = save_environ; + if (in != STDIN_FILE_NO) { if (close (in) < 0) diff --git a/contrib/gdb-7/libiberty/regex.c b/contrib/gdb-7/libiberty/regex.c index fa1df197ce..420c7f4a47 100644 --- a/contrib/gdb-7/libiberty/regex.c +++ b/contrib/gdb-7/libiberty/regex.c @@ -4,7 +4,7 @@ internationalization features.) Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2005 Free Software Foundation, Inc. + 2002, 2005, 2010 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 @@ -5910,11 +5910,14 @@ byte_re_match_2_internal (struct re_pattern_buffer *bufp, { /* 1 if this match ends in the same string (string1 or string2) as the best previous match. */ - boolean same_str_p = (FIRST_STRING_P (match_end) - == MATCHING_IN_FIRST_STRING); + boolean same_str_p; + /* 1 if this match is the best seen so far. */ boolean best_match_p; + same_str_p = (FIRST_STRING_P (match_end) + == MATCHING_IN_FIRST_STRING); + /* AIX compiler got confused when this was combined with the previous declaration. */ if (same_str_p) @@ -7137,8 +7140,8 @@ byte_re_match_2_internal (struct re_pattern_buffer *bufp, register from the stack, since lowest will == highest in `pop_failure_point'. */ active_reg_t dummy_low_reg, dummy_high_reg; - UCHAR_T *pdummy = NULL; - const CHAR_T *sdummy = NULL; + UCHAR_T *pdummy ATTRIBUTE_UNUSED = NULL; + const CHAR_T *sdummy ATTRIBUTE_UNUSED = NULL; DEBUG_PRINT1 ("EXECUTING pop_failure_jump.\n"); POP_FAILURE_POINT (sdummy, pdummy, diff --git a/contrib/gdb-7/libiberty/splay-tree.c b/contrib/gdb-7/libiberty/splay-tree.c index d7ed86813d..bf1a0f3f15 100644 --- a/contrib/gdb-7/libiberty/splay-tree.c +++ b/contrib/gdb-7/libiberty/splay-tree.c @@ -1,5 +1,6 @@ /* A splay-tree datatype. - Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2009, + 2010 Free Software Foundation, Inc. Contributed by Mark Mitchell (mark@markmitchell.com). This file is part of GNU CC. @@ -265,13 +266,53 @@ splay_tree_new_with_allocator (splay_tree_compare_fn compare_fn, splay_tree_deallocate_fn deallocate_fn, void *allocate_data) { - splay_tree sp = (splay_tree) (*allocate_fn) (sizeof (struct splay_tree_s), - allocate_data); + return + splay_tree_new_typed_alloc (compare_fn, delete_key_fn, delete_value_fn, + allocate_fn, allocate_fn, deallocate_fn, + allocate_data); +} + +/* + +@deftypefn Supplemental splay_tree splay_tree_new_with_typed_alloc +(splay_tree_compare_fn @var{compare_fn}, +splay_tree_delete_key_fn @var{delete_key_fn}, +splay_tree_delete_value_fn @var{delete_value_fn}, +splay_tree_allocate_fn @var{tree_allocate_fn}, +splay_tree_allocate_fn @var{node_allocate_fn}, +splay_tree_deallocate_fn @var{deallocate_fn}, +void * @var{allocate_data}) + +This function creates a splay tree that uses two different allocators +@var{tree_allocate_fn} and @var{node_allocate_fn} to use for allocating the +tree itself and its nodes respectively. This is useful when variables of +different types need to be allocated with different allocators. + +The splay tree will use @var{compare_fn} to compare nodes, +@var{delete_key_fn} to deallocate keys, and @var{delete_value_fn} to +deallocate values. + +@end deftypefn + +*/ + +splay_tree +splay_tree_new_typed_alloc (splay_tree_compare_fn compare_fn, + splay_tree_delete_key_fn delete_key_fn, + splay_tree_delete_value_fn delete_value_fn, + splay_tree_allocate_fn tree_allocate_fn, + splay_tree_allocate_fn node_allocate_fn, + splay_tree_deallocate_fn deallocate_fn, + void * allocate_data) +{ + splay_tree sp = (splay_tree) (*tree_allocate_fn) + (sizeof (struct splay_tree_s), allocate_data); + sp->root = 0; sp->comp = compare_fn; sp->delete_key = delete_key_fn; sp->delete_value = delete_value_fn; - sp->allocate = allocate_fn; + sp->allocate = node_allocate_fn; sp->deallocate = deallocate_fn; sp->allocate_data = allocate_data; @@ -313,10 +354,10 @@ splay_tree_insert (splay_tree sp, splay_tree_key key, splay_tree_value value) { /* Create a new node, and insert it at the root. */ splay_tree_node node; - + node = ((splay_tree_node) - (*sp->allocate) (sizeof (struct splay_tree_node_s), - sp->allocate_data)); + (*sp->allocate) (sizeof (struct splay_tree_node_s), + sp->allocate_data)); node->key = key; node->value = value; diff --git a/contrib/gdb-7/opcodes/Makefile.in b/contrib/gdb-7/opcodes/Makefile.in deleted file mode 100644 index 5b4721af85..0000000000 --- a/contrib/gdb-7/opcodes/Makefile.in +++ /dev/null @@ -1,1354 +0,0 @@ -# Makefile.in generated by automake 1.11 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -@INSTALL_LIBBFD_FALSE@am__append_1 = -rpath $(rpath_bfdlibdir) -subdir = . -DIST_COMMON = ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/configure $(am__configure_deps) \ - $(srcdir)/config.in $(srcdir)/../mkinstalldirs \ - $(top_srcdir)/po/Make-in $(srcdir)/../depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \ - $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ - $(top_srcdir)/../config/gettext-sister.m4 \ - $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/nls.m4 \ - $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../config/po.m4 \ - $(top_srcdir)/../config/progtest.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = po/Makefile.in -CONFIG_CLEAN_VPATH_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -libopcodes_a_AR = $(AR) $(ARFLAGS) -libopcodes_a_LIBADD = -libopcodes_a_SOURCES = libopcodes.c -libopcodes_a_OBJECTS = libopcodes.$(OBJEXT) -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(bfdlibdir)" \ - "$(DESTDIR)$(bfdincludedir)" -LTLIBRARIES = $(bfdlib_LTLIBRARIES) $(noinst_LTLIBRARIES) -am__DEPENDENCIES_1 = -am_libopcodes_la_OBJECTS = dis-buf.lo disassemble.lo dis-init.lo -libopcodes_la_OBJECTS = $(am_libopcodes_la_OBJECTS) -libopcodes_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libopcodes_la_LDFLAGS) $(LDFLAGS) -o $@ -@INSTALL_LIBBFD_FALSE@am_libopcodes_la_rpath = -@INSTALL_LIBBFD_TRUE@am_libopcodes_la_rpath = -rpath $(bfdlibdir) -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/../depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = libopcodes.c $(libopcodes_la_SOURCES) \ - $(EXTRA_libopcodes_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -DATA = $(bfdinclude_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BFD_MACHINES = @BFD_MACHINES@ -BUILD_LIBS = @BUILD_LIBS@ -BUILD_LIB_DEPS = @BUILD_LIB_DEPS@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_FOR_BUILD = @CC_FOR_BUILD@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ -FGREP = @FGREP@ -GENCAT = @GENCAT@ -GMSGFMT = @GMSGFMT@ -GREP = @GREP@ -HDEFINES = @HDEFINES@ -INCINTL = @INCINTL@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBINTL = @LIBINTL@ -LIBINTL_DEP = @LIBINTL_DEP@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NO_WERROR = @NO_WERROR@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHARED_DEPENDENCIES = @SHARED_DEPENDENCIES@ -SHARED_LDFLAGS = @SHARED_LDFLAGS@ -SHARED_LIBADD = @SHARED_LIBADD@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -WARN_CFLAGS = @WARN_CFLAGS@ -XGETTEXT = @XGETTEXT@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -archdefs = @archdefs@ -@INSTALL_LIBBFD_FALSE@bfdincludedir = -@INSTALL_LIBBFD_TRUE@bfdincludedir = @bfdincludedir@ -# Empty these so that the respective installation directories will not be created. -@INSTALL_LIBBFD_FALSE@bfdlibdir = -@INSTALL_LIBBFD_TRUE@bfdlibdir = @bfdlibdir@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -cgendir = @cgendir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_noncanonical = @host_noncanonical@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_noncanonical = @target_noncanonical@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.11 foreign no-dist -ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd - -# Build '.' first so all generated files exist. -SUBDIRS = . po -INCDIR = $(srcdir)/../include -BFDDIR = $(srcdir)/../bfd -AM_CFLAGS = $(WARN_CFLAGS) -COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CFLAGS_FOR_BUILD) - -LINK_FOR_BUILD = $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) \ - $(LDFLAGS_FOR_BUILD) -o $@ - -libopcodes_la_LDFLAGS = $(am__append_1) -release `cat \ - ../bfd/libtool-soversion` @SHARED_LDFLAGS@ -@INSTALL_LIBBFD_TRUE@bfdlib_LTLIBRARIES = libopcodes.la -@INSTALL_LIBBFD_TRUE@bfdinclude_DATA = $(INCDIR)/dis-asm.h -@INSTALL_LIBBFD_FALSE@rpath_bfdlibdir = @bfdlibdir@ -@INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libopcodes.la - -# This is where bfd.h lives. -BFD_H = ../bfd/bfd.h - -# Header files. -HFILES = \ - cgen-ops.h cgen-types.h \ - fr30-desc.h fr30-opc.h \ - frv-desc.h frv-opc.h \ - h8500-opc.h \ - i386-init.h \ - i386-opc.h \ - i386-tbl.h \ - ia64-asmtab.h \ - ia64-opc.h \ - ip2k-desc.h ip2k-opc.h \ - iq2000-desc.h iq2000-opc.h \ - lm32-desc.h \ - lm32-opc.h \ - m32c-desc.h m32c-opc.h \ - m32r-desc.h m32r-opc.h \ - mcore-opc.h \ - mep-desc.h mep-opc.h \ - microblaze-opc.h \ - mt-desc.h mt-opc.h \ - openrisc-desc.h openrisc-opc.h \ - score-opc.h \ - sh-opc.h \ - sh64-opc.h \ - sysdep.h \ - w65-opc.h \ - xc16x-desc.h xc16x-opc.h \ - xstormy16-desc.h xstormy16-opc.h \ - z8k-opc.h - - -# C source files that correspond to .o's ending up in libopcodes -# for all machines. -TARGET_LIBOPCODES_CFILES = \ - alpha-dis.c \ - alpha-opc.c \ - arc-dis.c \ - arc-ext.c \ - arc-opc.c \ - arm-dis.c \ - avr-dis.c \ - bfin-dis.c \ - cgen-asm.c \ - cgen-bitset.c \ - cgen-dis.c \ - cgen-opc.c \ - cr16-dis.c \ - cr16-opc.c \ - cris-dis.c \ - cris-opc.c \ - crx-dis.c \ - crx-opc.c \ - d10v-dis.c \ - d10v-opc.c \ - d30v-dis.c \ - d30v-opc.c \ - dlx-dis.c \ - fr30-asm.c \ - fr30-desc.c \ - fr30-dis.c \ - fr30-ibld.c \ - fr30-opc.c \ - frv-asm.c \ - frv-desc.c \ - frv-dis.c \ - frv-ibld.c \ - frv-opc.c \ - h8300-dis.c \ - h8500-dis.c \ - hppa-dis.c \ - i370-dis.c \ - i370-opc.c \ - i386-dis.c \ - i386-opc.c \ - i860-dis.c \ - i960-dis.c \ - ia64-dis.c \ - ia64-opc.c \ - ip2k-asm.c \ - ip2k-desc.c \ - ip2k-dis.c \ - ip2k-ibld.c \ - ip2k-opc.c \ - iq2000-asm.c \ - iq2000-desc.c \ - iq2000-dis.c \ - iq2000-ibld.c \ - iq2000-opc.c \ - lm32-asm.c \ - lm32-desc.c \ - lm32-dis.c \ - lm32-ibld.c \ - lm32-opc.c \ - lm32-opinst.c \ - m10200-dis.c \ - m10200-opc.c \ - m10300-dis.c \ - m10300-opc.c \ - m32c-asm.c \ - m32c-desc.c \ - m32c-dis.c \ - m32c-ibld.c \ - m32c-opc.c \ - m32r-asm.c \ - m32r-desc.c \ - m32r-dis.c \ - m32r-ibld.c \ - m32r-opc.c \ - m32r-opinst.c \ - m68hc11-dis.c \ - m68hc11-opc.c \ - m68k-dis.c \ - m68k-opc.c \ - m88k-dis.c \ - maxq-dis.c \ - mcore-dis.c \ - mep-asm.c \ - mep-desc.c \ - mep-dis.c \ - mep-ibld.c \ - mep-opc.c \ - microblaze-dis.c \ - mips-dis.c \ - mips-opc.c \ - mips16-opc.c \ - mmix-dis.c \ - mmix-opc.c \ - moxie-dis.c \ - moxie-opc.c \ - msp430-dis.c \ - mt-asm.c \ - mt-desc.c \ - mt-dis.c \ - mt-ibld.c \ - mt-opc.c \ - ns32k-dis.c \ - openrisc-asm.c \ - openrisc-desc.c \ - openrisc-dis.c \ - openrisc-ibld.c \ - openrisc-opc.c \ - or32-dis.c \ - or32-opc.c \ - pdp11-dis.c \ - pdp11-opc.c \ - pj-dis.c \ - pj-opc.c \ - ppc-dis.c \ - ppc-opc.c \ - s390-dis.c \ - s390-opc.c \ - score-dis.c \ - score7-dis.c \ - sh-dis.c \ - sh64-dis.c \ - sh64-opc.c \ - sparc-dis.c \ - sparc-opc.c \ - spu-dis.c \ - spu-opc.c \ - tic30-dis.c \ - tic4x-dis.c \ - tic54x-dis.c \ - tic54x-opc.c \ - tic80-dis.c \ - tic80-opc.c \ - v850-dis.c \ - v850-opc.c \ - vax-dis.c \ - w65-dis.c \ - xc16x-asm.c \ - xc16x-desc.c \ - xc16x-dis.c \ - xc16x-ibld.c \ - xc16x-opc.c \ - xstormy16-asm.c \ - xstormy16-desc.c \ - xstormy16-dis.c \ - xstormy16-ibld.c \ - xstormy16-opc.c \ - xtensa-dis.c \ - z80-dis.c \ - z8k-dis.c - - -# C source files that correspond to .o's ending up in libopcodes. -LIBOPCODES_CFILES = \ - $(TARGET_LIBOPCODES_CFILES) \ - dis-buf.c \ - dis-init.c \ - disassemble.c - - -# C source files that correspond to .o's. -CFILES = \ - $(LIBOPCODES_CFILES) \ - i386-gen.c \ - ia64-asmtab.c \ - ia64-gen.c \ - ia64-opc-a.c \ - ia64-opc-b.c \ - ia64-opc-f.c \ - ia64-opc-i.c \ - ia64-opc-m.c \ - ia64-opc-d.c \ - s390-mkopc.c \ - z8kgen.c - -ALL_MACHINES = $(TARGET_LIBOPCODES_CFILES:.c=.lo) -OFILES = @BFD_MACHINES@ - -# We should reconfigure whenever bfd/configure.in changes, because -# that's where the version number in Makefile comes from. -CONFIG_STATUS_DEPENDENCIES = $(BFDDIR)/configure.in -AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(INCDIR) -I$(BFDDIR) @HDEFINES@ @INCINTL@ -libopcodes_la_SOURCES = dis-buf.c disassemble.c dis-init.c -# It's desirable to list ../bfd/libbfd.la in DEPENDENCIES and LIBADD. -# Unfortunately this causes libtool to add -L$(libdir), referring to the -# planned install directory of libbfd. This can cause us to pick up an -# old version of libbfd, or to pick up libbfd for the wrong architecture -# if host != build. So for building with shared libraries we use a -# hardcoded path to libbfd.so instead of relying on the entries in libbfd.la. -libopcodes_la_DEPENDENCIES = $(OFILES) @SHARED_DEPENDENCIES@ -libopcodes_la_LIBADD = $(OFILES) @SHARED_LIBADD@ -# Allow dependency tracking to work on all the source files. -EXTRA_libopcodes_la_SOURCES = $(LIBOPCODES_CFILES) - -# libtool will build .libs/libopcodes.a. We create libopcodes.a in -# the build directory so that we don't have to convert all the -# programs that use libopcodes.a simultaneously. This is a hack which -# should be removed if everything else starts using libtool. FIXME. -noinst_LIBRARIES = libopcodes.a -POTFILES = $(HFILES) $(CFILES) -CLEANFILES = \ - stamp-ip2k stamp-m32c stamp-m32r stamp-fr30 stamp-frv \ - stamp-openrisc stamp-iq2000 stamp-mep stamp-mt stamp-xstormy16 stamp-xc16x\ - libopcodes.a stamp-lib dep.sed DEP DEPA DEP1 DEP2 - -CGENDIR = @cgendir@ -CPUDIR = $(CGENDIR)/cpu -CGEN = "`if test -f ../guile/libguile/guile ; then echo ../guile/libguile/guile; else echo guile ; fi` -l ${cgendir}/guile.scm -s" -CGENFLAGS = -v -CGENDEPS = \ - $(CGENDIR)/desc.scm $(CGENDIR)/desc-cpu.scm \ - $(CGENDIR)/opcodes.scm $(CGENDIR)/opc-asmdis.scm \ - $(CGENDIR)/opc-ibld.scm $(CGENDIR)/opc-itab.scm \ - $(CGENDIR)/opc-opinst.scm \ - cgen-asm.in cgen-dis.in cgen-ibld.in - -CGEN_CPUS = fr30 frv ip2k m32c m32r mep mt openrisc xc16x xstormy16 -@CGEN_MAINT_FALSE@IP2K_DEPS = -@CGEN_MAINT_TRUE@IP2K_DEPS = stamp-ip2k -@CGEN_MAINT_FALSE@LM32_DEPS = -@CGEN_MAINT_TRUE@LM32_DEPS = stamp-lm32 -@CGEN_MAINT_FALSE@M32C_DEPS = -@CGEN_MAINT_TRUE@M32C_DEPS = stamp-m32c -@CGEN_MAINT_FALSE@M32R_DEPS = -@CGEN_MAINT_TRUE@M32R_DEPS = stamp-m32r -@CGEN_MAINT_FALSE@FR30_DEPS = -@CGEN_MAINT_TRUE@FR30_DEPS = stamp-fr30 -@CGEN_MAINT_FALSE@FRV_DEPS = -@CGEN_MAINT_TRUE@FRV_DEPS = stamp-frv -@CGEN_MAINT_FALSE@MEP_DEPS = -@CGEN_MAINT_TRUE@MEP_DEPS = stamp-mep -@CGEN_MAINT_FALSE@MT_DEPS = -@CGEN_MAINT_TRUE@MT_DEPS = stamp-mt -@CGEN_MAINT_FALSE@OPENRISC_DEPS = -@CGEN_MAINT_TRUE@OPENRISC_DEPS = stamp-openrisc -@CGEN_MAINT_FALSE@IQ2000_DEPS = -@CGEN_MAINT_TRUE@IQ2000_DEPS = stamp-iq2000 -@CGEN_MAINT_FALSE@XC16X_DEPS = -@CGEN_MAINT_TRUE@XC16X_DEPS = stamp-xc16x -@CGEN_MAINT_FALSE@XSTORMY16_DEPS = -@CGEN_MAINT_TRUE@XSTORMY16_DEPS = stamp-xstormy16 -MOSTLYCLEANFILES = i386-gen$(EXEEXT_FOR_BUILD) ia64-gen$(EXEEXT_FOR_BUILD) \ - s390-mkopc$(EXEEXT_FOR_BUILD) z8kgen$(EXEEXT_FOR_BUILD) - -MAINTAINERCLEANFILES = $(srcdir)/i386-tbl.h $(srcdir)/i386-init.h \ - $(srcdir)/ia64-asmtab.c s390-opc.tab $(srcdir)/z8k-opc.h - - -# Use a helper variable for the dependencies to avoid 'make' issues -# with continuations in comments, as @MAINT@ can be expanded to '#'. -ia64_asmtab_deps = ia64-gen$(EXEEXT_FOR_BUILD) ia64-ic.tbl \ - ia64-raw.tbl ia64-waw.tbl ia64-war.tbl - -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -am--refresh: - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -po/Makefile.in: $(top_builddir)/config.status $(top_srcdir)/po/Make-in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -install-bfdlibLTLIBRARIES: $(bfdlib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(bfdlibdir)" || $(MKDIR_P) "$(DESTDIR)$(bfdlibdir)" - @list='$(bfdlib_LTLIBRARIES)'; test -n "$(bfdlibdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(bfdlibdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(bfdlibdir)"; \ - } - -uninstall-bfdlibLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(bfdlib_LTLIBRARIES)'; test -n "$(bfdlibdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(bfdlibdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(bfdlibdir)/$$f"; \ - done - -clean-bfdlibLTLIBRARIES: - -test -z "$(bfdlib_LTLIBRARIES)" || rm -f $(bfdlib_LTLIBRARIES) - @list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libopcodes.la: $(libopcodes_la_OBJECTS) $(libopcodes_la_DEPENDENCIES) - $(libopcodes_la_LINK) $(am_libopcodes_la_rpath) $(libopcodes_la_OBJECTS) $(libopcodes_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arc-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arc-ext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arc-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avr-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfin-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgen-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgen-bitset.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgen-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgen-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cr16-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cr16-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cris-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cris-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crx-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crx-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/d10v-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/d10v-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/d30v-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/d30v-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dis-buf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dis-init.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disassemble.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlx-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr30-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frv-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frv-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frv-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frv-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frv-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h8300-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h8500-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hppa-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i370-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i370-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i860-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i960-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ip2k-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ip2k-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ip2k-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ip2k-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ip2k-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iq2000-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iq2000-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iq2000-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iq2000-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iq2000-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopcodes.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm32-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm32-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm32-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm32-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm32-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lm32-opinst.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m10200-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m10200-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m10300-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m10300-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32c-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32c-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32c-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32c-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32c-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32r-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32r-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32r-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32r-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32r-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m32r-opinst.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68hc11-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68hc11-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68k-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68k-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m88k-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxq-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mcore-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mep-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/microblaze-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mips-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mips-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mips16-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmix-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmix-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moxie-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moxie-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msp430-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mt-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mt-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mt-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mt-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mt-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ns32k-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openrisc-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openrisc-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openrisc-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openrisc-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openrisc-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/or32-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/or32-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdp11-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdp11-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pj-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pj-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/score-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/score7-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh64-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh64-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spu-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spu-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tic30-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tic4x-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tic54x-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tic54x-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tic80-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tic80-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/v850-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/v850-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vax-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/w65-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xc16x-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xc16x-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xc16x-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xc16x-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xc16x-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstormy16-asm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstormy16-desc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstormy16-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstormy16-ibld.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstormy16-opc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/z80-dis.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/z8k-dis.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-bfdincludeDATA: $(bfdinclude_DATA) - @$(NORMAL_INSTALL) - test -z "$(bfdincludedir)" || $(MKDIR_P) "$(DESTDIR)$(bfdincludedir)" - @list='$(bfdinclude_DATA)'; test -n "$(bfdincludedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(bfdincludedir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(bfdincludedir)" || exit $$?; \ - done - -uninstall-bfdincludeDATA: - @$(NORMAL_UNINSTALL) - @list='$(bfdinclude_DATA)'; test -n "$(bfdincludedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bfdincludedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bfdincludedir)" && rm -f $$files - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-am: all-am -check: check-recursive -all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(bfdlibdir)" "$(DESTDIR)$(bfdincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-recursive - -clean-am: clean-bfdlibLTLIBRARIES clean-generic clean-libtool \ - clean-noinstLIBRARIES clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-bfdincludeDATA install-bfdlibLTLIBRARIES - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-bfdincludeDATA uninstall-bfdlibLTLIBRARIES - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean \ - clean-bfdlibLTLIBRARIES clean-generic clean-libtool \ - clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \ - ctags-recursive distclean distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags dvi dvi-am html \ - html-am info info-am install install-am install-bfdincludeDATA \ - install-bfdlibLTLIBRARIES install-data install-data-am \ - install-dvi install-dvi-am install-exec install-exec-am \ - install-html install-html-am install-info install-info-am \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-bfdincludeDATA uninstall-bfdlibLTLIBRARIES - - -disassemble.lo: disassemble.c -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ @archdefs@ $(srcdir)/disassemble.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disassemble.c' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ @archdefs@ $(srcdir)/disassemble.c - -stamp-lib: libopcodes.la - libtooldir=`$(LIBTOOL) --config | sed -n -e 's/^objdir=//p'`; \ - if [ -f $$libtooldir/libopcodes.a ]; then \ - cp $$libtooldir/libopcodes.a libopcodes.tmp; \ - $(RANLIB) libopcodes.tmp; \ - $(SHELL) $(srcdir)/../move-if-change libopcodes.tmp libopcodes.a; \ - else true; fi - touch stamp-lib - -libopcodes.a: stamp-lib ; @true -po/POTFILES.in: @MAINT@ Makefile - for f in $(POTFILES); do echo $$f; done | LC_ALL=C sort > tmp \ - && mv tmp $(srcdir)/po/POTFILES.in - -run-cgen: - $(SHELL) $(srcdir)/cgen.sh opcodes $(srcdir) $(CGEN) \ - $(CGENDIR) "$(CGENFLAGS)" $(arch) $(prefix) $(archfile) $(opcfile) \ - "$(options)" "$(extrafiles)" - touch stamp-${prefix} -.PHONY: run-cgen - -# Maintainer utility rule to regenerate all cgen files. -run-cgen-all: - for c in $(CGEN_CPUS) ; \ - do \ - $(MAKE) stamp-$$c || exit 1 ; \ - done -.PHONY: run-cgen-all - -# For now, require developers to configure with --enable-cgen-maint. -$(srcdir)/ip2k-desc.h $(srcdir)/ip2k-desc.c $(srcdir)/ip2k-opc.h $(srcdir)/ip2k-opc.c $(srcdir)/ip2k-ibld.c $(srcdir)/ip2k-asm.c $(srcdir)/ip2k-dis.c: $(IP2K_DEPS) - @true -stamp-ip2k: $(CGENDEPS) $(CPUDIR)/ip2k.cpu $(CPUDIR)/ip2k.opc - $(MAKE) run-cgen arch=ip2k prefix=ip2k options= \ - archfile=$(CPUDIR)/ip2k.cpu opcfile=$(CPUDIR)/ip2k.opc extrafiles= - -$(srcdir)lm32-desc.h $(srcdir)/lm32-desc.c $(srcdir)/lm32-opc.h $(srcdir)/lm32-opc.c $(srcdir)/lm32-ibld.c $(srcdir)/lm32-opinst.c $(srcdir)/lm32-asm.c $(srcdir)/lm32-dis.c: $(LM32_DEPS) - @true -stamp-lm32: $(CGENDEPS) $(srcdir)/../cpu/lm32.cpu $(srcdir)/../cpu/lm32.opc - $(MAKE) run-cgen arch=lm32 prefix=lm32 options=opinst \ - archfile=$(srcdir)/../cpu/lm32.cpu \ - opcfile=$(srcdir)/../cpu/lm32.opc \ - extrafiles=opinst - -$(srcdir)/m32c-desc.h $(srcdir)/m32c-desc.c $(srcdir)/m32c-opc.h $(srcdir)/m32c-opc.c $(srcdir)/m32c-ibld.c $(srcdir)/m32c-asm.c $(srcdir)/m32c-dis.c: $(M32C_DEPS) -# @true -stamp-m32c: $(CGENDEPS) $(srcdir)/../cpu/m32c.cpu $(srcdir)/../cpu/m32c.opc - $(MAKE) run-cgen arch=m32c prefix=m32c options= \ - archfile=$(srcdir)/../cpu/m32c.cpu \ - opcfile=$(srcdir)/../cpu/m32c.opc extrafiles= - -$(srcdir)/m32r-desc.h $(srcdir)/m32r-desc.c $(srcdir)/m32r-opc.h $(srcdir)/m32r-opc.c $(srcdir)/m32r-ibld.c $(srcdir)/m32r-opinst.c $(srcdir)/m32r-asm.c $(srcdir)/m32r-dis.c: $(M32R_DEPS) - @true -stamp-m32r: $(CGENDEPS) $(srcdir)/../cpu/m32r.cpu $(srcdir)/../cpu/m32r.opc - $(MAKE) run-cgen arch=m32r prefix=m32r options=opinst \ - archfile=$(srcdir)/../cpu/m32r.cpu \ - opcfile=$(srcdir)/../cpu/m32r.opc extrafiles=opinst - -$(srcdir)/fr30-desc.h $(srcdir)/fr30-desc.c $(srcdir)/fr30-opc.h $(srcdir)/fr30-opc.c $(srcdir)/fr30-ibld.c $(srcdir)/fr30-asm.c $(srcdir)/fr30-dis.c: $(FR30_DEPS) - @true -stamp-fr30: $(CGENDEPS) $(CPUDIR)/fr30.cpu $(CPUDIR)/fr30.opc - $(MAKE) run-cgen arch=fr30 prefix=fr30 options= \ - archfile=$(CPUDIR)/fr30.cpu opcfile=$(CPUDIR)/fr30.opc extrafiles= - -$(srcdir)/frv-desc.h $(srcdir)/frv-desc.c $(srcdir)/frv-opc.h $(srcdir)/frv-opc.c $(srcdir)/frv-ibld.c $(srcdir)/frv-asm.c $(srcdir)/frv-dis.c: $(FRV_DEPS) - @true -stamp-frv: $(CGENDEPS) $(srcdir)/../cpu/frv.cpu $(srcdir)/../cpu/frv.opc - $(MAKE) run-cgen arch=frv prefix=frv options= \ - archfile=$(srcdir)/../cpu/frv.cpu opcfile=$(srcdir)/../cpu/frv.opc extrafiles= - -$(srcdir)/mep-desc.h $(srcdir)/mep-desc.c $(srcdir)/mep-opc.h $(srcdir)/mep-opc.c $(srcdir)/mep-ibld.c $(srcdir)/mep-asm.c $(srcdir)/mep-dis.c: $(MEP_DEPS) - @true -stamp-mep: $(CGENDEPS) $(CPUDIR)/mep.cpu $(CPUDIR)/mep-default.cpu $(CPUDIR)/mep-core.cpu $(CPUDIR)/mep-h1.cpu $(CPUDIR)/mep-ext-cop.cpu $(CPUDIR)/mep-sample-ucidsp.cpu $(CPUDIR)/mep-rhcop.cpu $(CPUDIR)/mep-fmax.cpu $(CPUDIR)/mep.opc - $(MAKE) run-cgen arch=mep prefix=mep options= \ - archfile=$(CPUDIR)/mep.cpu opcfile=$(CPUDIR)/mep.opc extrafiles= - -$(srcdir)/mt-desc.h $(srcdir)/mt-desc.c $(srcdir)/mt-opc.h $(srcdir)/mt-opc.c $(srcdir)/mt-ibld.c $(srcdir)/mt-asm.c $(srcdir)/mt-dis.c: $(MT_DEPS) - @true -stamp-mt: $(CGENDEPS) $(srcdir)/../cpu/mt.cpu $(srcdir)/../cpu/mt.opc - $(MAKE) run-cgen arch=mt prefix=mt options= \ - archfile=$(srcdir)/../cpu/mt.cpu \ - opcfile=$(srcdir)/../cpu/mt.opc extrafiles= - -$(srcdir)/openrisc-desc.h $(srcdir)/openrisc-desc.c $(srcdir)/openrisc-opc.h $(srcdir)/openrisc-opc.c $(srcdir)/openrisc-ibld.c $(srcdir)/openrisc-asm.c $(srcdir)/openrisc-dis.c: $(OPENRISC_DEPS) - @true -stamp-openrisc: $(CGENDEPS) $(CPUDIR)/openrisc.cpu $(CPUDIR)/openrisc.opc - $(MAKE) run-cgen arch=openrisc prefix=openrisc options= \ - archfile=$(CPUDIR)/openrisc.cpu opcfile=$(CPUDIR)/openrisc.opc extrafiles= - -$(srcdir)/iq2000-desc.h $(srcdir)/iq2000-desc.c $(srcdir)/iq2000-opc.h $(srcdir)/iq2000-opc.c $(srcdir)/iq2000-ibld.c $(srcdir)/iq2000-asm.c $(srcdir)/iq2000-dis.c: $(IQ2000_DEPS) - @true -stamp-iq2000: $(CGENDEPS) $(srcdir)/../cpu/iq2000.cpu \ - $(srcdir)/../cpu/iq2000.opc $(srcdir)/../cpu/iq2000m.cpu \ - $(srcdir)/../cpu/iq10.cpu - $(MAKE) run-cgen arch=iq2000 prefix=iq2000 options= \ - archfile=$(srcdir)/../cpu/iq2000.cpu \ - opcfile=$(srcdir)/../cpu/iq2000.opc extrafiles= - -$(srcdir)/xstormy16-desc.h $(srcdir)/xstormy16-desc.c $(srcdir)/xstormy16-opc.h $(srcdir)/xstormy16-opc.c $(srcdir)/xstormy16-ibld.c $(srcdir)/xstormy16-asm.c $(srcdir)/xstormy16-dis.c: $(XSTORMY16_DEPS) - @true -stamp-xstormy16: $(CGENDEPS) $(CPUDIR)/xstormy16.cpu $(CPUDIR)/xstormy16.opc - $(MAKE) run-cgen arch=xstormy16 prefix=xstormy16 options= \ - archfile=$(CPUDIR)/xstormy16.cpu opcfile=$(CPUDIR)/xstormy16.opc extrafiles= - -$(srcdir)/xc16x-desc.h $(srcdir)/xc16x-desc.c $(srcdir)/xc16x-opc.h $(srcdir)/xc16x-opc.c $(srcdir)/xc16x-ibld.c $(srcdir)/xc16x-asm.c $(srcdir)/xc16x-dis.c: $(XC16X_DEPS) - @true -stamp-xc16x: $(CGENDEPS) $(CPUDIR)/xc16x.cpu $(CPUDIR)/xc16x.opc - $(MAKE) run-cgen arch=xc16x prefix=xc16x options= \ - archfile=$(CPUDIR)/xc16x.cpu opcfile=$(CPUDIR)/xc16x.opc extrafiles= - -i386-gen$(EXEEXT_FOR_BUILD): i386-gen.o $(BUILD_LIB_DEPS) - $(LINK_FOR_BUILD) i386-gen.o $(BUILD_LIBS) - -i386-gen.o: i386-gen.c i386-opc.h $(srcdir)/../include/opcode/i386.h \ - $(INCDIR)/ansidecl.h $(INCDIR)/getopt.h $(INCDIR)/hashtab.h \ - $(INCDIR)/libiberty.h $(INCDIR)/opcode/i386.h $(INCDIR)/safe-ctype.h \ - config.h i386-opc.h sysdep.h - $(COMPILE_FOR_BUILD) -c $(srcdir)/i386-gen.c - -$(srcdir)/i386-tbl.h: $(srcdir)/i386-init.h - @echo $@ - -$(srcdir)/i386-init.h: @MAINT@ i386-gen$(EXEEXT_FOR_BUILD) i386-opc.tbl i386-reg.tbl - ./i386-gen$(EXEEXT_FOR_BUILD) --srcdir $(srcdir) - -i386-opc.lo: $(srcdir)/i386-tbl.h - -ia64-gen$(EXEEXT_FOR_BUILD): ia64-gen.o $(BUILD_LIB_DEPS) - $(LINK_FOR_BUILD) ia64-gen.o $(BUILD_LIBS) - -ia64-gen.o: ia64-gen.c $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/getopt.h \ - $(INCDIR)/libiberty.h $(INCDIR)/opcode/ia64.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/symcat.h config.h ia64-opc-a.c ia64-opc-b.c \ - ia64-opc-d.c ia64-opc-f.c ia64-opc-i.c ia64-opc-m.c \ - ia64-opc-x.c ia64-opc.h sysdep.h - $(COMPILE_FOR_BUILD) -c $(srcdir)/ia64-gen.c -$(srcdir)/ia64-asmtab.c: @MAINT@ $(ia64_asmtab_deps) - ./ia64-gen$(EXEEXT_FOR_BUILD) --srcdir $(srcdir) > $@ - -ia64-opc.lo: $(srcdir)/ia64-asmtab.c - -s390-mkopc$(EXEEXT_FOR_BUILD): s390-mkopc.c - $(COMPILE_FOR_BUILD) -o s390-mkopc $(srcdir)/s390-mkopc.c - -s390-opc.tab: s390-mkopc$(EXEEXT_FOR_BUILD) s390-opc.txt - ./s390-mkopc$(EXEEXT_FOR_BUILD) < $(srcdir)/s390-opc.txt > s390-opc.tab - -s390-opc.lo: s390-opc.tab - -z8kgen$(EXEEXT_FOR_BUILD): z8kgen.o $(BUILD_LIB_DEPS) - $(LINK_FOR_BUILD) z8kgen.o $(BUILD_LIBS) - -z8kgen.o: z8kgen.c - $(COMPILE_FOR_BUILD) -c $(srcdir)/z8kgen.c - -$(srcdir)/z8k-opc.h: @MAINT@ z8kgen$(EXEEXT_FOR_BUILD) - ./z8kgen$(EXEEXT_FOR_BUILD) -a > $@ - -z8k-dis.lo: $(srcdir)/z8k-opc.h - -sh-dis.lo: sh-dis.c -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ @archdefs@ $(srcdir)/sh-dis.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sh-dis.c' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ @archdefs@ $(srcdir)/sh-dis.c - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/gdb-7/opcodes/dis-buf.c b/contrib/gdb-7/opcodes/dis-buf.c index 7e3fd63a88..372fb96b28 100644 --- a/contrib/gdb-7/opcodes/dis-buf.c +++ b/contrib/gdb-7/opcodes/dis-buf.c @@ -1,6 +1,6 @@ /* Disassemble from a buffer, for GNU. Copyright 1993, 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2005, - 2007, 2009 Free Software Foundation, Inc. + 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -38,6 +38,7 @@ buffer_read_memory (bfd_vma memaddr, unsigned int octets = (memaddr - info->buffer_vma) * opb; if (memaddr < info->buffer_vma + || memaddr - info->buffer_vma > max_addr_offset || memaddr - info->buffer_vma + end_addr_offset > max_addr_offset) /* Out of bounds. Use EIO because GDB uses it. */ return EIO; diff --git a/contrib/gdb-7/opcodes/disassemble.c b/contrib/gdb-7/opcodes/disassemble.c index 04d5d0c71f..b0cb4e38cc 100644 --- a/contrib/gdb-7/opcodes/disassemble.c +++ b/contrib/gdb-7/opcodes/disassemble.c @@ -1,6 +1,6 @@ /* Select disassembly routine for specified architecture. Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -53,7 +53,6 @@ #define ARCH_m68hc12 #define ARCH_m68k #define ARCH_m88k -#define ARCH_maxq #define ARCH_mcore #define ARCH_mep #define ARCH_microblaze @@ -71,6 +70,7 @@ #define ARCH_pj #define ARCH_powerpc #define ARCH_rs6000 +#define ARCH_rx #define ARCH_s390 #define ARCH_score #define ARCH_sh @@ -79,6 +79,7 @@ #define ARCH_tic30 #define ARCH_tic4x #define ARCH_tic54x +#define ARCH_tic6x #define ARCH_tic80 #define ARCH_v850 #define ARCH_vax @@ -255,11 +256,6 @@ disassembler (abfd) disassemble = print_insn_m88k; break; #endif -#ifdef ARCH_maxq - case bfd_arch_maxq: - disassemble = print_insn_maxq_little; - break; -#endif #ifdef ARCH_mt case bfd_arch_mt: disassemble = print_insn_mt; @@ -352,6 +348,11 @@ disassembler (abfd) disassemble = print_insn_rs6000; break; #endif +#ifdef ARCH_rx + case bfd_arch_rx: + disassemble = print_insn_rx; + break; +#endif #ifdef ARCH_s390 case bfd_arch_s390: disassemble = print_insn_s390; @@ -395,6 +396,11 @@ disassembler (abfd) disassemble = print_insn_tic54x; break; #endif +#ifdef ARCH_tic6x + case bfd_arch_tic6x: + disassemble = print_insn_tic6x; + break; +#endif #ifdef ARCH_tic80 case bfd_arch_tic80: disassemble = print_insn_tic80; diff --git a/contrib/gdb-7/opcodes/i386-dis.c b/contrib/gdb-7/opcodes/i386-dis.c index e6b80497d4..1f9d01db10 100644 --- a/contrib/gdb-7/opcodes/i386-dis.c +++ b/contrib/gdb-7/opcodes/i386-dis.c @@ -1,6 +1,6 @@ /* Print i386 instructions for GDB, the GNU debugger. Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -42,9 +42,6 @@ #include -static int fetch_data (struct disassemble_info *, bfd_byte *); -static void ckprefix (void); -static const char *prefix_name (int, int); static int print_insn (bfd_vma, disassemble_info *); static void dofloat (int); static void OP_ST (int, int); @@ -56,7 +53,6 @@ static void OP_indirE (int, int); static void print_operand_value (char *, int, bfd_vma); static void OP_E_register (int, int); static void OP_E_memory (int, int); -static void OP_E_extended (int, int); static void print_displacement (char *, bfd_vma); static void OP_E (int, int); static void OP_G (int, int); @@ -93,9 +89,9 @@ static void OP_MS (int, int); static void OP_XS (int, int); static void OP_M (int, int); static void OP_VEX (int, int); -static void OP_VEX_FMA (int, int); static void OP_EX_Vex (int, int); static void OP_EX_VexW (int, int); +static void OP_EX_VexImmW (int, int); static void OP_XMM_Vex (int, int); static void OP_XMM_VexW (int, int); static void OP_REG_VexI4 (int, int); @@ -115,6 +111,11 @@ static void REP_Fixup (int, int); static void CMPXCHG8B_Fixup (int, int); static void XMM_Fixup (int, int); static void CRC32_Fixup (int, int); +static void FXSAVE_Fixup (int, int); +static void OP_LWPCB_E (int, int); +static void OP_LWP_E (int, int); +static void OP_Vex_2src_1 (int, int); +static void OP_Vex_2src_2 (int, int); static void MOVBE_Fixup (int, int); @@ -143,10 +144,7 @@ static int prefixes; static int rex; /* Bits of REX we've already used. */ static int rex_used; -/* Original REX prefix. */ -static int rex_original; -/* REX bits in original REX prefix ignored. It may not be the same - as rex_original since some bits may not be ignored. */ +/* REX bits in original REX prefix ignored. */ static int rex_ignored; /* Mark parts used in the REX prefix. When we are testing for empty prefix (for 8bit register REX extension), just mask it @@ -218,6 +216,7 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) } #define XX { NULL, 0 } +#define Bad_Opcode NULL, { { NULL, 0 } } #define Eb { OP_E, b_mode } #define EbS { OP_E, b_swap_mode } @@ -335,6 +334,7 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define MX { OP_MMX, 0 } #define XM { OP_XMM, 0 } +#define XMScalar { OP_XMM, scalar_mode } #define XMM { OP_XMM, xmm_mode } #define EM { OP_EM, v_mode } #define EMS { OP_EM, v_swap_mode } @@ -342,8 +342,11 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define EMx { OP_EM, x_mode } #define EXw { OP_EX, w_mode } #define EXd { OP_EX, d_mode } +#define EXdScalar { OP_EX, d_scalar_mode } #define EXdS { OP_EX, d_swap_mode } #define EXq { OP_EX, q_mode } +#define EXqScalar { OP_EX, q_scalar_mode } +#define EXqScalarS { OP_EX, q_scalar_swap_mode } #define EXqS { OP_EX, q_swap_mode } #define EXx { OP_EX, x_mode } #define EXxS { OP_EX, x_swap_mode } @@ -351,6 +354,7 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define EXxmmq { OP_EX, xmmq_mode } #define EXymmq { OP_EX, ymmq_mode } #define EXVexWdq { OP_EX, vex_w_dq_mode } +#define EXVexWdqScalar { OP_EX, vex_scalar_w_dq_mode } #define MS { OP_MS, v_mode } #define XS { OP_XS, v_mode } #define EMCq { OP_EMC, q_mode } @@ -358,21 +362,27 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define OPSUF { OP_3DNowSuffix, 0 } #define CMP { CMP_Fixup, 0 } #define XMM0 { XMM_Fixup, 0 } +#define FXSAVE { FXSAVE_Fixup, 0 } +#define Vex_2src_1 { OP_Vex_2src_1, 0 } +#define Vex_2src_2 { OP_Vex_2src_2, 0 } #define Vex { OP_VEX, vex_mode } +#define VexScalar { OP_VEX, vex_scalar_mode } #define Vex128 { OP_VEX, vex128_mode } #define Vex256 { OP_VEX, vex256_mode } #define VexI4 { VEXI4_Fixup, 0} -#define VexFMA { OP_VEX_FMA, vex_mode } -#define Vex128FMA { OP_VEX_FMA, vex128_mode } #define EXdVex { OP_EX_Vex, d_mode } #define EXdVexS { OP_EX_Vex, d_swap_mode } +#define EXdVexScalarS { OP_EX_Vex, d_scalar_swap_mode } #define EXqVex { OP_EX_Vex, q_mode } #define EXqVexS { OP_EX_Vex, q_swap_mode } +#define EXqVexScalarS { OP_EX_Vex, q_scalar_swap_mode } #define EXVexW { OP_EX_VexW, x_mode } #define EXdVexW { OP_EX_VexW, d_mode } #define EXqVexW { OP_EX_VexW, q_mode } +#define EXVexImmW { OP_EX_VexImmW, x_mode } #define XMVex { OP_XMM_Vex, 0 } +#define XMVexScalar { OP_XMM_Vex, scalar_mode } #define XMVexW { OP_XMM_VexW, 0 } #define XMVexI4 { OP_REG_VexI4, x_mode } #define PCLMUL { PCLMUL_Fixup, 0 } @@ -397,127 +407,147 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define AFLAG 2 #define DFLAG 1 -/* byte operand */ -#define b_mode 1 -/* byte operand with operand swapped */ -#define b_swap_mode (b_mode + 1) -/* operand size depends on prefixes */ -#define v_mode (b_swap_mode + 1) -/* operand size depends on prefixes with operand swapped */ -#define v_swap_mode (v_mode + 1) -/* word operand */ -#define w_mode (v_swap_mode + 1) -/* double word operand */ -#define d_mode (w_mode + 1) -/* double word operand with operand swapped */ -#define d_swap_mode (d_mode + 1) -/* quad word operand */ -#define q_mode (d_swap_mode + 1) -/* quad word operand with operand swapped */ -#define q_swap_mode (q_mode + 1) -/* ten-byte operand */ -#define t_mode (q_swap_mode + 1) -/* 16-byte XMM or 32-byte YMM operand */ -#define x_mode (t_mode + 1) -/* 16-byte XMM or 32-byte YMM operand with operand swapped */ -#define x_swap_mode (x_mode + 1) -/* 16-byte XMM operand */ -#define xmm_mode (x_swap_mode + 1) -/* 16-byte XMM or quad word operand */ -#define xmmq_mode (xmm_mode + 1) -/* 32-byte YMM or quad word operand */ -#define ymmq_mode (xmmq_mode + 1) -/* d_mode in 32bit, q_mode in 64bit mode. */ -#define m_mode (ymmq_mode + 1) -/* pair of v_mode operands */ -#define a_mode (m_mode + 1) -#define cond_jump_mode (a_mode + 1) -#define loop_jcxz_mode (cond_jump_mode + 1) -/* operand size depends on REX prefixes. */ -#define dq_mode (loop_jcxz_mode + 1) -/* registers like dq_mode, memory like w_mode. */ -#define dqw_mode (dq_mode + 1) -/* 4- or 6-byte pointer operand */ -#define f_mode (dqw_mode + 1) -#define const_1_mode (f_mode + 1) -/* v_mode for stack-related opcodes. */ -#define stack_v_mode (const_1_mode + 1) -/* non-quad operand size depends on prefixes */ -#define z_mode (stack_v_mode + 1) -/* 16-byte operand */ -#define o_mode (z_mode + 1) -/* registers like dq_mode, memory like b_mode. */ -#define dqb_mode (o_mode + 1) -/* registers like dq_mode, memory like d_mode. */ -#define dqd_mode (dqb_mode + 1) -/* normal vex mode */ -#define vex_mode (dqd_mode + 1) -/* 128bit vex mode */ -#define vex128_mode (vex_mode + 1) -/* 256bit vex mode */ -#define vex256_mode (vex128_mode + 1) -/* operand size depends on the VEX.W bit. */ -#define vex_w_dq_mode (vex256_mode + 1) - -#define es_reg (vex_w_dq_mode + 1) -#define cs_reg (es_reg + 1) -#define ss_reg (cs_reg + 1) -#define ds_reg (ss_reg + 1) -#define fs_reg (ds_reg + 1) -#define gs_reg (fs_reg + 1) - -#define eAX_reg (gs_reg + 1) -#define eCX_reg (eAX_reg + 1) -#define eDX_reg (eCX_reg + 1) -#define eBX_reg (eDX_reg + 1) -#define eSP_reg (eBX_reg + 1) -#define eBP_reg (eSP_reg + 1) -#define eSI_reg (eBP_reg + 1) -#define eDI_reg (eSI_reg + 1) - -#define al_reg (eDI_reg + 1) -#define cl_reg (al_reg + 1) -#define dl_reg (cl_reg + 1) -#define bl_reg (dl_reg + 1) -#define ah_reg (bl_reg + 1) -#define ch_reg (ah_reg + 1) -#define dh_reg (ch_reg + 1) -#define bh_reg (dh_reg + 1) - -#define ax_reg (bh_reg + 1) -#define cx_reg (ax_reg + 1) -#define dx_reg (cx_reg + 1) -#define bx_reg (dx_reg + 1) -#define sp_reg (bx_reg + 1) -#define bp_reg (sp_reg + 1) -#define si_reg (bp_reg + 1) -#define di_reg (si_reg + 1) - -#define rAX_reg (di_reg + 1) -#define rCX_reg (rAX_reg + 1) -#define rDX_reg (rCX_reg + 1) -#define rBX_reg (rDX_reg + 1) -#define rSP_reg (rBX_reg + 1) -#define rBP_reg (rSP_reg + 1) -#define rSI_reg (rBP_reg + 1) -#define rDI_reg (rSI_reg + 1) - -#define z_mode_ax_reg (rDI_reg + 1) -#define indir_dx_reg (z_mode_ax_reg + 1) - -#define MAX_BYTEMODE indir_dx_reg - - -#define FLOATCODE 1 -#define USE_REG_TABLE (FLOATCODE + 1) -#define USE_MOD_TABLE (USE_REG_TABLE + 1) -#define USE_RM_TABLE (USE_MOD_TABLE + 1) -#define USE_PREFIX_TABLE (USE_RM_TABLE + 1) -#define USE_X86_64_TABLE (USE_PREFIX_TABLE + 1) -#define USE_3BYTE_TABLE (USE_X86_64_TABLE + 1) -#define USE_VEX_C4_TABLE (USE_3BYTE_TABLE + 1) -#define USE_VEX_C5_TABLE (USE_VEX_C4_TABLE + 1) -#define USE_VEX_LEN_TABLE (USE_VEX_C5_TABLE + 1) +enum +{ + /* byte operand */ + b_mode = 1, + /* byte operand with operand swapped */ + b_swap_mode, + /* operand size depends on prefixes */ + v_mode, + /* operand size depends on prefixes with operand swapped */ + v_swap_mode, + /* word operand */ + w_mode, + /* double word operand */ + d_mode, + /* double word operand with operand swapped */ + d_swap_mode, + /* quad word operand */ + q_mode, + /* quad word operand with operand swapped */ + q_swap_mode, + /* ten-byte operand */ + t_mode, + /* 16-byte XMM or 32-byte YMM operand */ + x_mode, + /* 16-byte XMM or 32-byte YMM operand with operand swapped */ + x_swap_mode, + /* 16-byte XMM operand */ + xmm_mode, + /* 16-byte XMM or quad word operand */ + xmmq_mode, + /* 32-byte YMM or quad word operand */ + ymmq_mode, + /* d_mode in 32bit, q_mode in 64bit mode. */ + m_mode, + /* pair of v_mode operands */ + a_mode, + cond_jump_mode, + loop_jcxz_mode, + /* operand size depends on REX prefixes. */ + dq_mode, + /* registers like dq_mode, memory like w_mode. */ + dqw_mode, + /* 4- or 6-byte pointer operand */ + f_mode, + const_1_mode, + /* v_mode for stack-related opcodes. */ + stack_v_mode, + /* non-quad operand size depends on prefixes */ + z_mode, + /* 16-byte operand */ + o_mode, + /* registers like dq_mode, memory like b_mode. */ + dqb_mode, + /* registers like dq_mode, memory like d_mode. */ + dqd_mode, + /* normal vex mode */ + vex_mode, + /* 128bit vex mode */ + vex128_mode, + /* 256bit vex mode */ + vex256_mode, + /* operand size depends on the VEX.W bit. */ + vex_w_dq_mode, + + /* scalar, ignore vector length. */ + scalar_mode, + /* like d_mode, ignore vector length. */ + d_scalar_mode, + /* like d_swap_mode, ignore vector length. */ + d_scalar_swap_mode, + /* like q_mode, ignore vector length. */ + q_scalar_mode, + /* like q_swap_mode, ignore vector length. */ + q_scalar_swap_mode, + /* like vex_mode, ignore vector length. */ + vex_scalar_mode, + /* like vex_w_dq_mode, ignore vector length. */ + vex_scalar_w_dq_mode, + + es_reg, + cs_reg, + ss_reg, + ds_reg, + fs_reg, + gs_reg, + + eAX_reg, + eCX_reg, + eDX_reg, + eBX_reg, + eSP_reg, + eBP_reg, + eSI_reg, + eDI_reg, + + al_reg, + cl_reg, + dl_reg, + bl_reg, + ah_reg, + ch_reg, + dh_reg, + bh_reg, + + ax_reg, + cx_reg, + dx_reg, + bx_reg, + sp_reg, + bp_reg, + si_reg, + di_reg, + + rAX_reg, + rCX_reg, + rDX_reg, + rBX_reg, + rSP_reg, + rBP_reg, + rSI_reg, + rDI_reg, + + z_mode_ax_reg, + indir_dx_reg +}; + +enum +{ + FLOATCODE = 1, + USE_REG_TABLE, + USE_MOD_TABLE, + USE_RM_TABLE, + USE_PREFIX_TABLE, + USE_X86_64_TABLE, + USE_3BYTE_TABLE, + USE_XOP_8F_TABLE, + USE_VEX_C4_TABLE, + USE_VEX_C5_TABLE, + USE_VEX_LEN_TABLE, + USE_VEX_W_TABLE +}; #define FLOAT NULL, { { NULL, FLOATCODE } } @@ -528,734 +558,1038 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define PREFIX_TABLE(I) DIS386 (USE_PREFIX_TABLE, (I)) #define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I)) #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I)) +#define XOP_8F_TABLE(I) DIS386 (USE_XOP_8F_TABLE, (I)) #define VEX_C4_TABLE(I) DIS386 (USE_VEX_C4_TABLE, (I)) #define VEX_C5_TABLE(I) DIS386 (USE_VEX_C5_TABLE, (I)) #define VEX_LEN_TABLE(I) DIS386 (USE_VEX_LEN_TABLE, (I)) +#define VEX_W_TABLE(I) DIS386 (USE_VEX_W_TABLE, (I)) + +enum +{ + REG_80 = 0, + REG_81, + REG_82, + REG_8F, + REG_C0, + REG_C1, + REG_C6, + REG_C7, + REG_D0, + REG_D1, + REG_D2, + REG_D3, + REG_F6, + REG_F7, + REG_FE, + REG_FF, + REG_0F00, + REG_0F01, + REG_0F0D, + REG_0F18, + REG_0F71, + REG_0F72, + REG_0F73, + REG_0FA6, + REG_0FA7, + REG_0FAE, + REG_0FBA, + REG_0FC7, + REG_VEX_71, + REG_VEX_72, + REG_VEX_73, + REG_VEX_AE, + REG_XOP_LWPCB, + REG_XOP_LWP +}; + +enum +{ + MOD_8D = 0, + MOD_0F01_REG_0, + MOD_0F01_REG_1, + MOD_0F01_REG_2, + MOD_0F01_REG_3, + MOD_0F01_REG_7, + MOD_0F12_PREFIX_0, + MOD_0F13, + MOD_0F16_PREFIX_0, + MOD_0F17, + MOD_0F18_REG_0, + MOD_0F18_REG_1, + MOD_0F18_REG_2, + MOD_0F18_REG_3, + MOD_0F20, + MOD_0F21, + MOD_0F22, + MOD_0F23, + MOD_0F24, + MOD_0F26, + MOD_0F2B_PREFIX_0, + MOD_0F2B_PREFIX_1, + MOD_0F2B_PREFIX_2, + MOD_0F2B_PREFIX_3, + MOD_0F51, + MOD_0F71_REG_2, + MOD_0F71_REG_4, + MOD_0F71_REG_6, + MOD_0F72_REG_2, + MOD_0F72_REG_4, + MOD_0F72_REG_6, + MOD_0F73_REG_2, + MOD_0F73_REG_3, + MOD_0F73_REG_6, + MOD_0F73_REG_7, + MOD_0FAE_REG_0, + MOD_0FAE_REG_1, + MOD_0FAE_REG_2, + MOD_0FAE_REG_3, + MOD_0FAE_REG_4, + MOD_0FAE_REG_5, + MOD_0FAE_REG_6, + MOD_0FAE_REG_7, + MOD_0FB2, + MOD_0FB4, + MOD_0FB5, + MOD_0FC7_REG_6, + MOD_0FC7_REG_7, + MOD_0FD7, + MOD_0FE7_PREFIX_2, + MOD_0FF0_PREFIX_3, + MOD_0F382A_PREFIX_2, + MOD_62_32BIT, + MOD_C4_32BIT, + MOD_C5_32BIT, + MOD_VEX_12_PREFIX_0, + MOD_VEX_13, + MOD_VEX_16_PREFIX_0, + MOD_VEX_17, + MOD_VEX_2B, + MOD_VEX_50, + MOD_VEX_71_REG_2, + MOD_VEX_71_REG_4, + MOD_VEX_71_REG_6, + MOD_VEX_72_REG_2, + MOD_VEX_72_REG_4, + MOD_VEX_72_REG_6, + MOD_VEX_73_REG_2, + MOD_VEX_73_REG_3, + MOD_VEX_73_REG_6, + MOD_VEX_73_REG_7, + MOD_VEX_AE_REG_2, + MOD_VEX_AE_REG_3, + MOD_VEX_D7_PREFIX_2, + MOD_VEX_E7_PREFIX_2, + MOD_VEX_F0_PREFIX_3, + MOD_VEX_3818_PREFIX_2, + MOD_VEX_3819_PREFIX_2, + MOD_VEX_381A_PREFIX_2, + MOD_VEX_382A_PREFIX_2, + MOD_VEX_382C_PREFIX_2, + MOD_VEX_382D_PREFIX_2, + MOD_VEX_382E_PREFIX_2, + MOD_VEX_382F_PREFIX_2 +}; + +enum +{ + RM_0F01_REG_0 = 0, + RM_0F01_REG_1, + RM_0F01_REG_2, + RM_0F01_REG_3, + RM_0F01_REG_7, + RM_0FAE_REG_5, + RM_0FAE_REG_6, + RM_0FAE_REG_7 +}; + +enum +{ + PREFIX_90 = 0, + PREFIX_0F10, + PREFIX_0F11, + PREFIX_0F12, + PREFIX_0F16, + PREFIX_0F2A, + PREFIX_0F2B, + PREFIX_0F2C, + PREFIX_0F2D, + PREFIX_0F2E, + PREFIX_0F2F, + PREFIX_0F51, + PREFIX_0F52, + PREFIX_0F53, + PREFIX_0F58, + PREFIX_0F59, + PREFIX_0F5A, + PREFIX_0F5B, + PREFIX_0F5C, + PREFIX_0F5D, + PREFIX_0F5E, + PREFIX_0F5F, + PREFIX_0F60, + PREFIX_0F61, + PREFIX_0F62, + PREFIX_0F6C, + PREFIX_0F6D, + PREFIX_0F6F, + PREFIX_0F70, + PREFIX_0F73_REG_3, + PREFIX_0F73_REG_7, + PREFIX_0F78, + PREFIX_0F79, + PREFIX_0F7C, + PREFIX_0F7D, + PREFIX_0F7E, + PREFIX_0F7F, + PREFIX_0FAE_REG_0, + PREFIX_0FAE_REG_1, + PREFIX_0FAE_REG_2, + PREFIX_0FAE_REG_3, + PREFIX_0FB8, + PREFIX_0FBD, + PREFIX_0FC2, + PREFIX_0FC3, + PREFIX_0FC7_REG_6, + PREFIX_0FD0, + PREFIX_0FD6, + PREFIX_0FE6, + PREFIX_0FE7, + PREFIX_0FF0, + PREFIX_0FF7, + PREFIX_0F3810, + PREFIX_0F3814, + PREFIX_0F3815, + PREFIX_0F3817, + PREFIX_0F3820, + PREFIX_0F3821, + PREFIX_0F3822, + PREFIX_0F3823, + PREFIX_0F3824, + PREFIX_0F3825, + PREFIX_0F3828, + PREFIX_0F3829, + PREFIX_0F382A, + PREFIX_0F382B, + PREFIX_0F3830, + PREFIX_0F3831, + PREFIX_0F3832, + PREFIX_0F3833, + PREFIX_0F3834, + PREFIX_0F3835, + PREFIX_0F3837, + PREFIX_0F3838, + PREFIX_0F3839, + PREFIX_0F383A, + PREFIX_0F383B, + PREFIX_0F383C, + PREFIX_0F383D, + PREFIX_0F383E, + PREFIX_0F383F, + PREFIX_0F3840, + PREFIX_0F3841, + PREFIX_0F3880, + PREFIX_0F3881, + PREFIX_0F38DB, + PREFIX_0F38DC, + PREFIX_0F38DD, + PREFIX_0F38DE, + PREFIX_0F38DF, + PREFIX_0F38F0, + PREFIX_0F38F1, + PREFIX_0F3A08, + PREFIX_0F3A09, + PREFIX_0F3A0A, + PREFIX_0F3A0B, + PREFIX_0F3A0C, + PREFIX_0F3A0D, + PREFIX_0F3A0E, + PREFIX_0F3A14, + PREFIX_0F3A15, + PREFIX_0F3A16, + PREFIX_0F3A17, + PREFIX_0F3A20, + PREFIX_0F3A21, + PREFIX_0F3A22, + PREFIX_0F3A40, + PREFIX_0F3A41, + PREFIX_0F3A42, + PREFIX_0F3A44, + PREFIX_0F3A60, + PREFIX_0F3A61, + PREFIX_0F3A62, + PREFIX_0F3A63, + PREFIX_0F3ADF, + PREFIX_VEX_10, + PREFIX_VEX_11, + PREFIX_VEX_12, + PREFIX_VEX_16, + PREFIX_VEX_2A, + PREFIX_VEX_2C, + PREFIX_VEX_2D, + PREFIX_VEX_2E, + PREFIX_VEX_2F, + PREFIX_VEX_51, + PREFIX_VEX_52, + PREFIX_VEX_53, + PREFIX_VEX_58, + PREFIX_VEX_59, + PREFIX_VEX_5A, + PREFIX_VEX_5B, + PREFIX_VEX_5C, + PREFIX_VEX_5D, + PREFIX_VEX_5E, + PREFIX_VEX_5F, + PREFIX_VEX_60, + PREFIX_VEX_61, + PREFIX_VEX_62, + PREFIX_VEX_63, + PREFIX_VEX_64, + PREFIX_VEX_65, + PREFIX_VEX_66, + PREFIX_VEX_67, + PREFIX_VEX_68, + PREFIX_VEX_69, + PREFIX_VEX_6A, + PREFIX_VEX_6B, + PREFIX_VEX_6C, + PREFIX_VEX_6D, + PREFIX_VEX_6E, + PREFIX_VEX_6F, + PREFIX_VEX_70, + PREFIX_VEX_71_REG_2, + PREFIX_VEX_71_REG_4, + PREFIX_VEX_71_REG_6, + PREFIX_VEX_72_REG_2, + PREFIX_VEX_72_REG_4, + PREFIX_VEX_72_REG_6, + PREFIX_VEX_73_REG_2, + PREFIX_VEX_73_REG_3, + PREFIX_VEX_73_REG_6, + PREFIX_VEX_73_REG_7, + PREFIX_VEX_74, + PREFIX_VEX_75, + PREFIX_VEX_76, + PREFIX_VEX_77, + PREFIX_VEX_7C, + PREFIX_VEX_7D, + PREFIX_VEX_7E, + PREFIX_VEX_7F, + PREFIX_VEX_C2, + PREFIX_VEX_C4, + PREFIX_VEX_C5, + PREFIX_VEX_D0, + PREFIX_VEX_D1, + PREFIX_VEX_D2, + PREFIX_VEX_D3, + PREFIX_VEX_D4, + PREFIX_VEX_D5, + PREFIX_VEX_D6, + PREFIX_VEX_D7, + PREFIX_VEX_D8, + PREFIX_VEX_D9, + PREFIX_VEX_DA, + PREFIX_VEX_DB, + PREFIX_VEX_DC, + PREFIX_VEX_DD, + PREFIX_VEX_DE, + PREFIX_VEX_DF, + PREFIX_VEX_E0, + PREFIX_VEX_E1, + PREFIX_VEX_E2, + PREFIX_VEX_E3, + PREFIX_VEX_E4, + PREFIX_VEX_E5, + PREFIX_VEX_E6, + PREFIX_VEX_E7, + PREFIX_VEX_E8, + PREFIX_VEX_E9, + PREFIX_VEX_EA, + PREFIX_VEX_EB, + PREFIX_VEX_EC, + PREFIX_VEX_ED, + PREFIX_VEX_EE, + PREFIX_VEX_EF, + PREFIX_VEX_F0, + PREFIX_VEX_F1, + PREFIX_VEX_F2, + PREFIX_VEX_F3, + PREFIX_VEX_F4, + PREFIX_VEX_F5, + PREFIX_VEX_F6, + PREFIX_VEX_F7, + PREFIX_VEX_F8, + PREFIX_VEX_F9, + PREFIX_VEX_FA, + PREFIX_VEX_FB, + PREFIX_VEX_FC, + PREFIX_VEX_FD, + PREFIX_VEX_FE, + PREFIX_VEX_3800, + PREFIX_VEX_3801, + PREFIX_VEX_3802, + PREFIX_VEX_3803, + PREFIX_VEX_3804, + PREFIX_VEX_3805, + PREFIX_VEX_3806, + PREFIX_VEX_3807, + PREFIX_VEX_3808, + PREFIX_VEX_3809, + PREFIX_VEX_380A, + PREFIX_VEX_380B, + PREFIX_VEX_380C, + PREFIX_VEX_380D, + PREFIX_VEX_380E, + PREFIX_VEX_380F, + PREFIX_VEX_3813, + PREFIX_VEX_3817, + PREFIX_VEX_3818, + PREFIX_VEX_3819, + PREFIX_VEX_381A, + PREFIX_VEX_381C, + PREFIX_VEX_381D, + PREFIX_VEX_381E, + PREFIX_VEX_3820, + PREFIX_VEX_3821, + PREFIX_VEX_3822, + PREFIX_VEX_3823, + PREFIX_VEX_3824, + PREFIX_VEX_3825, + PREFIX_VEX_3828, + PREFIX_VEX_3829, + PREFIX_VEX_382A, + PREFIX_VEX_382B, + PREFIX_VEX_382C, + PREFIX_VEX_382D, + PREFIX_VEX_382E, + PREFIX_VEX_382F, + PREFIX_VEX_3830, + PREFIX_VEX_3831, + PREFIX_VEX_3832, + PREFIX_VEX_3833, + PREFIX_VEX_3834, + PREFIX_VEX_3835, + PREFIX_VEX_3837, + PREFIX_VEX_3838, + PREFIX_VEX_3839, + PREFIX_VEX_383A, + PREFIX_VEX_383B, + PREFIX_VEX_383C, + PREFIX_VEX_383D, + PREFIX_VEX_383E, + PREFIX_VEX_383F, + PREFIX_VEX_3840, + PREFIX_VEX_3841, + PREFIX_VEX_3896, + PREFIX_VEX_3897, + PREFIX_VEX_3898, + PREFIX_VEX_3899, + PREFIX_VEX_389A, + PREFIX_VEX_389B, + PREFIX_VEX_389C, + PREFIX_VEX_389D, + PREFIX_VEX_389E, + PREFIX_VEX_389F, + PREFIX_VEX_38A6, + PREFIX_VEX_38A7, + PREFIX_VEX_38A8, + PREFIX_VEX_38A9, + PREFIX_VEX_38AA, + PREFIX_VEX_38AB, + PREFIX_VEX_38AC, + PREFIX_VEX_38AD, + PREFIX_VEX_38AE, + PREFIX_VEX_38AF, + PREFIX_VEX_38B6, + PREFIX_VEX_38B7, + PREFIX_VEX_38B8, + PREFIX_VEX_38B9, + PREFIX_VEX_38BA, + PREFIX_VEX_38BB, + PREFIX_VEX_38BC, + PREFIX_VEX_38BD, + PREFIX_VEX_38BE, + PREFIX_VEX_38BF, + PREFIX_VEX_38DB, + PREFIX_VEX_38DC, + PREFIX_VEX_38DD, + PREFIX_VEX_38DE, + PREFIX_VEX_38DF, + PREFIX_VEX_3A04, + PREFIX_VEX_3A05, + PREFIX_VEX_3A06, + PREFIX_VEX_3A08, + PREFIX_VEX_3A09, + PREFIX_VEX_3A0A, + PREFIX_VEX_3A0B, + PREFIX_VEX_3A0C, + PREFIX_VEX_3A0D, + PREFIX_VEX_3A0E, + PREFIX_VEX_3A0F, + PREFIX_VEX_3A14, + PREFIX_VEX_3A15, + PREFIX_VEX_3A16, + PREFIX_VEX_3A17, + PREFIX_VEX_3A18, + PREFIX_VEX_3A19, + PREFIX_VEX_3A1D, + PREFIX_VEX_3A20, + PREFIX_VEX_3A21, + PREFIX_VEX_3A22, + PREFIX_VEX_3A40, + PREFIX_VEX_3A41, + PREFIX_VEX_3A42, + PREFIX_VEX_3A44, + PREFIX_VEX_3A48, + PREFIX_VEX_3A49, + PREFIX_VEX_3A4A, + PREFIX_VEX_3A4B, + PREFIX_VEX_3A4C, + PREFIX_VEX_3A5C, + PREFIX_VEX_3A5D, + PREFIX_VEX_3A5E, + PREFIX_VEX_3A5F, + PREFIX_VEX_3A60, + PREFIX_VEX_3A61, + PREFIX_VEX_3A62, + PREFIX_VEX_3A63, + PREFIX_VEX_3A68, + PREFIX_VEX_3A69, + PREFIX_VEX_3A6A, + PREFIX_VEX_3A6B, + PREFIX_VEX_3A6C, + PREFIX_VEX_3A6D, + PREFIX_VEX_3A6E, + PREFIX_VEX_3A6F, + PREFIX_VEX_3A78, + PREFIX_VEX_3A79, + PREFIX_VEX_3A7A, + PREFIX_VEX_3A7B, + PREFIX_VEX_3A7C, + PREFIX_VEX_3A7D, + PREFIX_VEX_3A7E, + PREFIX_VEX_3A7F, + PREFIX_VEX_3ADF +}; + +enum +{ + X86_64_06 = 0, + X86_64_07, + X86_64_0D, + X86_64_16, + X86_64_17, + X86_64_1E, + X86_64_1F, + X86_64_27, + X86_64_2F, + X86_64_37, + X86_64_3F, + X86_64_60, + X86_64_61, + X86_64_62, + X86_64_63, + X86_64_6D, + X86_64_6F, + X86_64_9A, + X86_64_C4, + X86_64_C5, + X86_64_CE, + X86_64_D4, + X86_64_D5, + X86_64_EA, + X86_64_0F01_REG_0, + X86_64_0F01_REG_1, + X86_64_0F01_REG_2, + X86_64_0F01_REG_3 +}; + +enum +{ + THREE_BYTE_0F38 = 0, + THREE_BYTE_0F3A, + THREE_BYTE_0F7A +}; + +enum +{ + XOP_08 = 0, + XOP_09, + XOP_0A +}; + +enum +{ + VEX_0F = 0, + VEX_0F38, + VEX_0F3A +}; + +enum +{ + VEX_LEN_10_P_1 = 0, + VEX_LEN_10_P_3, + VEX_LEN_11_P_1, + VEX_LEN_11_P_3, + VEX_LEN_12_P_0_M_0, + VEX_LEN_12_P_0_M_1, + VEX_LEN_12_P_2, + VEX_LEN_13_M_0, + VEX_LEN_16_P_0_M_0, + VEX_LEN_16_P_0_M_1, + VEX_LEN_16_P_2, + VEX_LEN_17_M_0, + VEX_LEN_2A_P_1, + VEX_LEN_2A_P_3, + VEX_LEN_2C_P_1, + VEX_LEN_2C_P_3, + VEX_LEN_2D_P_1, + VEX_LEN_2D_P_3, + VEX_LEN_2E_P_0, + VEX_LEN_2E_P_2, + VEX_LEN_2F_P_0, + VEX_LEN_2F_P_2, + VEX_LEN_51_P_1, + VEX_LEN_51_P_3, + VEX_LEN_52_P_1, + VEX_LEN_53_P_1, + VEX_LEN_58_P_1, + VEX_LEN_58_P_3, + VEX_LEN_59_P_1, + VEX_LEN_59_P_3, + VEX_LEN_5A_P_1, + VEX_LEN_5A_P_3, + VEX_LEN_5C_P_1, + VEX_LEN_5C_P_3, + VEX_LEN_5D_P_1, + VEX_LEN_5D_P_3, + VEX_LEN_5E_P_1, + VEX_LEN_5E_P_3, + VEX_LEN_5F_P_1, + VEX_LEN_5F_P_3, + VEX_LEN_60_P_2, + VEX_LEN_61_P_2, + VEX_LEN_62_P_2, + VEX_LEN_63_P_2, + VEX_LEN_64_P_2, + VEX_LEN_65_P_2, + VEX_LEN_66_P_2, + VEX_LEN_67_P_2, + VEX_LEN_68_P_2, + VEX_LEN_69_P_2, + VEX_LEN_6A_P_2, + VEX_LEN_6B_P_2, + VEX_LEN_6C_P_2, + VEX_LEN_6D_P_2, + VEX_LEN_6E_P_2, + VEX_LEN_70_P_1, + VEX_LEN_70_P_2, + VEX_LEN_70_P_3, + VEX_LEN_71_R_2_P_2, + VEX_LEN_71_R_4_P_2, + VEX_LEN_71_R_6_P_2, + VEX_LEN_72_R_2_P_2, + VEX_LEN_72_R_4_P_2, + VEX_LEN_72_R_6_P_2, + VEX_LEN_73_R_2_P_2, + VEX_LEN_73_R_3_P_2, + VEX_LEN_73_R_6_P_2, + VEX_LEN_73_R_7_P_2, + VEX_LEN_74_P_2, + VEX_LEN_75_P_2, + VEX_LEN_76_P_2, + VEX_LEN_7E_P_1, + VEX_LEN_7E_P_2, + VEX_LEN_AE_R_2_M_0, + VEX_LEN_AE_R_3_M_0, + VEX_LEN_C2_P_1, + VEX_LEN_C2_P_3, + VEX_LEN_C4_P_2, + VEX_LEN_C5_P_2, + VEX_LEN_D1_P_2, + VEX_LEN_D2_P_2, + VEX_LEN_D3_P_2, + VEX_LEN_D4_P_2, + VEX_LEN_D5_P_2, + VEX_LEN_D6_P_2, + VEX_LEN_D7_P_2_M_1, + VEX_LEN_D8_P_2, + VEX_LEN_D9_P_2, + VEX_LEN_DA_P_2, + VEX_LEN_DB_P_2, + VEX_LEN_DC_P_2, + VEX_LEN_DD_P_2, + VEX_LEN_DE_P_2, + VEX_LEN_DF_P_2, + VEX_LEN_E0_P_2, + VEX_LEN_E1_P_2, + VEX_LEN_E2_P_2, + VEX_LEN_E3_P_2, + VEX_LEN_E4_P_2, + VEX_LEN_E5_P_2, + VEX_LEN_E8_P_2, + VEX_LEN_E9_P_2, + VEX_LEN_EA_P_2, + VEX_LEN_EB_P_2, + VEX_LEN_EC_P_2, + VEX_LEN_ED_P_2, + VEX_LEN_EE_P_2, + VEX_LEN_EF_P_2, + VEX_LEN_F1_P_2, + VEX_LEN_F2_P_2, + VEX_LEN_F3_P_2, + VEX_LEN_F4_P_2, + VEX_LEN_F5_P_2, + VEX_LEN_F6_P_2, + VEX_LEN_F7_P_2, + VEX_LEN_F8_P_2, + VEX_LEN_F9_P_2, + VEX_LEN_FA_P_2, + VEX_LEN_FB_P_2, + VEX_LEN_FC_P_2, + VEX_LEN_FD_P_2, + VEX_LEN_FE_P_2, + VEX_LEN_3800_P_2, + VEX_LEN_3801_P_2, + VEX_LEN_3802_P_2, + VEX_LEN_3803_P_2, + VEX_LEN_3804_P_2, + VEX_LEN_3805_P_2, + VEX_LEN_3806_P_2, + VEX_LEN_3807_P_2, + VEX_LEN_3808_P_2, + VEX_LEN_3809_P_2, + VEX_LEN_380A_P_2, + VEX_LEN_380B_P_2, + VEX_LEN_3819_P_2_M_0, + VEX_LEN_381A_P_2_M_0, + VEX_LEN_381C_P_2, + VEX_LEN_381D_P_2, + VEX_LEN_381E_P_2, + VEX_LEN_3820_P_2, + VEX_LEN_3821_P_2, + VEX_LEN_3822_P_2, + VEX_LEN_3823_P_2, + VEX_LEN_3824_P_2, + VEX_LEN_3825_P_2, + VEX_LEN_3828_P_2, + VEX_LEN_3829_P_2, + VEX_LEN_382A_P_2_M_0, + VEX_LEN_382B_P_2, + VEX_LEN_3830_P_2, + VEX_LEN_3831_P_2, + VEX_LEN_3832_P_2, + VEX_LEN_3833_P_2, + VEX_LEN_3834_P_2, + VEX_LEN_3835_P_2, + VEX_LEN_3837_P_2, + VEX_LEN_3838_P_2, + VEX_LEN_3839_P_2, + VEX_LEN_383A_P_2, + VEX_LEN_383B_P_2, + VEX_LEN_383C_P_2, + VEX_LEN_383D_P_2, + VEX_LEN_383E_P_2, + VEX_LEN_383F_P_2, + VEX_LEN_3840_P_2, + VEX_LEN_3841_P_2, + VEX_LEN_38DB_P_2, + VEX_LEN_38DC_P_2, + VEX_LEN_38DD_P_2, + VEX_LEN_38DE_P_2, + VEX_LEN_38DF_P_2, + VEX_LEN_3A06_P_2, + VEX_LEN_3A0A_P_2, + VEX_LEN_3A0B_P_2, + VEX_LEN_3A0E_P_2, + VEX_LEN_3A0F_P_2, + VEX_LEN_3A14_P_2, + VEX_LEN_3A15_P_2, + VEX_LEN_3A16_P_2, + VEX_LEN_3A17_P_2, + VEX_LEN_3A18_P_2, + VEX_LEN_3A19_P_2, + VEX_LEN_3A20_P_2, + VEX_LEN_3A21_P_2, + VEX_LEN_3A22_P_2, + VEX_LEN_3A41_P_2, + VEX_LEN_3A42_P_2, + VEX_LEN_3A44_P_2, + VEX_LEN_3A4C_P_2, + VEX_LEN_3A60_P_2, + VEX_LEN_3A61_P_2, + VEX_LEN_3A62_P_2, + VEX_LEN_3A63_P_2, + VEX_LEN_3A6A_P_2, + VEX_LEN_3A6B_P_2, + VEX_LEN_3A6E_P_2, + VEX_LEN_3A6F_P_2, + VEX_LEN_3A7A_P_2, + VEX_LEN_3A7B_P_2, + VEX_LEN_3A7E_P_2, + VEX_LEN_3A7F_P_2, + VEX_LEN_3ADF_P_2, + VEX_LEN_XOP_09_80, + VEX_LEN_XOP_09_81 +}; -#define REG_80 0 -#define REG_81 (REG_80 + 1) -#define REG_82 (REG_81 + 1) -#define REG_8F (REG_82 + 1) -#define REG_C0 (REG_8F + 1) -#define REG_C1 (REG_C0 + 1) -#define REG_C6 (REG_C1 + 1) -#define REG_C7 (REG_C6 + 1) -#define REG_D0 (REG_C7 + 1) -#define REG_D1 (REG_D0 + 1) -#define REG_D2 (REG_D1 + 1) -#define REG_D3 (REG_D2 + 1) -#define REG_F6 (REG_D3 + 1) -#define REG_F7 (REG_F6 + 1) -#define REG_FE (REG_F7 + 1) -#define REG_FF (REG_FE + 1) -#define REG_0F00 (REG_FF + 1) -#define REG_0F01 (REG_0F00 + 1) -#define REG_0F0D (REG_0F01 + 1) -#define REG_0F18 (REG_0F0D + 1) -#define REG_0F71 (REG_0F18 + 1) -#define REG_0F72 (REG_0F71 + 1) -#define REG_0F73 (REG_0F72 + 1) -#define REG_0FA6 (REG_0F73 + 1) -#define REG_0FA7 (REG_0FA6 + 1) -#define REG_0FAE (REG_0FA7 + 1) -#define REG_0FBA (REG_0FAE + 1) -#define REG_0FC7 (REG_0FBA + 1) -#define REG_VEX_71 (REG_0FC7 + 1) -#define REG_VEX_72 (REG_VEX_71 + 1) -#define REG_VEX_73 (REG_VEX_72 + 1) -#define REG_VEX_AE (REG_VEX_73 + 1) - -#define MOD_8D 0 -#define MOD_0F01_REG_0 (MOD_8D + 1) -#define MOD_0F01_REG_1 (MOD_0F01_REG_0 + 1) -#define MOD_0F01_REG_2 (MOD_0F01_REG_1 + 1) -#define MOD_0F01_REG_3 (MOD_0F01_REG_2 + 1) -#define MOD_0F01_REG_7 (MOD_0F01_REG_3 + 1) -#define MOD_0F12_PREFIX_0 (MOD_0F01_REG_7 + 1) -#define MOD_0F13 (MOD_0F12_PREFIX_0 + 1) -#define MOD_0F16_PREFIX_0 (MOD_0F13 + 1) -#define MOD_0F17 (MOD_0F16_PREFIX_0 + 1) -#define MOD_0F18_REG_0 (MOD_0F17 + 1) -#define MOD_0F18_REG_1 (MOD_0F18_REG_0 + 1) -#define MOD_0F18_REG_2 (MOD_0F18_REG_1 + 1) -#define MOD_0F18_REG_3 (MOD_0F18_REG_2 + 1) -#define MOD_0F20 (MOD_0F18_REG_3 + 1) -#define MOD_0F21 (MOD_0F20 + 1) -#define MOD_0F22 (MOD_0F21 + 1) -#define MOD_0F23 (MOD_0F22 + 1) -#define MOD_0F24 (MOD_0F23 + 1) -#define MOD_0F26 (MOD_0F24 + 1) -#define MOD_0F2B_PREFIX_0 (MOD_0F26 + 1) -#define MOD_0F2B_PREFIX_1 (MOD_0F2B_PREFIX_0 + 1) -#define MOD_0F2B_PREFIX_2 (MOD_0F2B_PREFIX_1 + 1) -#define MOD_0F2B_PREFIX_3 (MOD_0F2B_PREFIX_2 + 1) -#define MOD_0F51 (MOD_0F2B_PREFIX_3 + 1) -#define MOD_0F71_REG_2 (MOD_0F51 + 1) -#define MOD_0F71_REG_4 (MOD_0F71_REG_2 + 1) -#define MOD_0F71_REG_6 (MOD_0F71_REG_4 + 1) -#define MOD_0F72_REG_2 (MOD_0F71_REG_6 + 1) -#define MOD_0F72_REG_4 (MOD_0F72_REG_2 + 1) -#define MOD_0F72_REG_6 (MOD_0F72_REG_4 + 1) -#define MOD_0F73_REG_2 (MOD_0F72_REG_6 + 1) -#define MOD_0F73_REG_3 (MOD_0F73_REG_2 + 1) -#define MOD_0F73_REG_6 (MOD_0F73_REG_3 + 1) -#define MOD_0F73_REG_7 (MOD_0F73_REG_6 + 1) -#define MOD_0FAE_REG_0 (MOD_0F73_REG_7 + 1) -#define MOD_0FAE_REG_1 (MOD_0FAE_REG_0 + 1) -#define MOD_0FAE_REG_2 (MOD_0FAE_REG_1 + 1) -#define MOD_0FAE_REG_3 (MOD_0FAE_REG_2 + 1) -#define MOD_0FAE_REG_4 (MOD_0FAE_REG_3 + 1) -#define MOD_0FAE_REG_5 (MOD_0FAE_REG_4 + 1) -#define MOD_0FAE_REG_6 (MOD_0FAE_REG_5 + 1) -#define MOD_0FAE_REG_7 (MOD_0FAE_REG_6 + 1) -#define MOD_0FB2 (MOD_0FAE_REG_7 + 1) -#define MOD_0FB4 (MOD_0FB2 + 1) -#define MOD_0FB5 (MOD_0FB4 + 1) -#define MOD_0FC7_REG_6 (MOD_0FB5 + 1) -#define MOD_0FC7_REG_7 (MOD_0FC7_REG_6 + 1) -#define MOD_0FD7 (MOD_0FC7_REG_7 + 1) -#define MOD_0FE7_PREFIX_2 (MOD_0FD7 + 1) -#define MOD_0FF0_PREFIX_3 (MOD_0FE7_PREFIX_2 + 1) -#define MOD_0F382A_PREFIX_2 (MOD_0FF0_PREFIX_3 + 1) -#define MOD_62_32BIT (MOD_0F382A_PREFIX_2 + 1) -#define MOD_C4_32BIT (MOD_62_32BIT + 1) -#define MOD_C5_32BIT (MOD_C4_32BIT + 1) -#define MOD_VEX_12_PREFIX_0 (MOD_C5_32BIT + 1) -#define MOD_VEX_13 (MOD_VEX_12_PREFIX_0 + 1) -#define MOD_VEX_16_PREFIX_0 (MOD_VEX_13 + 1) -#define MOD_VEX_17 (MOD_VEX_16_PREFIX_0 + 1) -#define MOD_VEX_2B (MOD_VEX_17 + 1) -#define MOD_VEX_51 (MOD_VEX_2B + 1) -#define MOD_VEX_71_REG_2 (MOD_VEX_51 + 1) -#define MOD_VEX_71_REG_4 (MOD_VEX_71_REG_2 + 1) -#define MOD_VEX_71_REG_6 (MOD_VEX_71_REG_4 + 1) -#define MOD_VEX_72_REG_2 (MOD_VEX_71_REG_6 + 1) -#define MOD_VEX_72_REG_4 (MOD_VEX_72_REG_2 + 1) -#define MOD_VEX_72_REG_6 (MOD_VEX_72_REG_4 + 1) -#define MOD_VEX_73_REG_2 (MOD_VEX_72_REG_6 + 1) -#define MOD_VEX_73_REG_3 (MOD_VEX_73_REG_2 + 1) -#define MOD_VEX_73_REG_6 (MOD_VEX_73_REG_3 + 1) -#define MOD_VEX_73_REG_7 (MOD_VEX_73_REG_6 + 1) -#define MOD_VEX_AE_REG_2 (MOD_VEX_73_REG_7 + 1) -#define MOD_VEX_AE_REG_3 (MOD_VEX_AE_REG_2 + 1) -#define MOD_VEX_D7_PREFIX_2 (MOD_VEX_AE_REG_3 + 1) -#define MOD_VEX_E7_PREFIX_2 (MOD_VEX_D7_PREFIX_2 + 1) -#define MOD_VEX_F0_PREFIX_3 (MOD_VEX_E7_PREFIX_2 + 1) -#define MOD_VEX_3818_PREFIX_2 (MOD_VEX_F0_PREFIX_3 + 1) -#define MOD_VEX_3819_PREFIX_2 (MOD_VEX_3818_PREFIX_2 + 1) -#define MOD_VEX_381A_PREFIX_2 (MOD_VEX_3819_PREFIX_2 + 1) -#define MOD_VEX_382A_PREFIX_2 (MOD_VEX_381A_PREFIX_2 + 1) -#define MOD_VEX_382C_PREFIX_2 (MOD_VEX_382A_PREFIX_2 + 1) -#define MOD_VEX_382D_PREFIX_2 (MOD_VEX_382C_PREFIX_2 + 1) -#define MOD_VEX_382E_PREFIX_2 (MOD_VEX_382D_PREFIX_2 + 1) -#define MOD_VEX_382F_PREFIX_2 (MOD_VEX_382E_PREFIX_2 + 1) - -#define RM_0F01_REG_0 0 -#define RM_0F01_REG_1 (RM_0F01_REG_0 + 1) -#define RM_0F01_REG_2 (RM_0F01_REG_1 + 1) -#define RM_0F01_REG_3 (RM_0F01_REG_2 + 1) -#define RM_0F01_REG_7 (RM_0F01_REG_3 + 1) -#define RM_0FAE_REG_5 (RM_0F01_REG_7 + 1) -#define RM_0FAE_REG_6 (RM_0FAE_REG_5 + 1) -#define RM_0FAE_REG_7 (RM_0FAE_REG_6 + 1) - -#define PREFIX_90 0 -#define PREFIX_0F10 (PREFIX_90 + 1) -#define PREFIX_0F11 (PREFIX_0F10 + 1) -#define PREFIX_0F12 (PREFIX_0F11 + 1) -#define PREFIX_0F16 (PREFIX_0F12 + 1) -#define PREFIX_0F2A (PREFIX_0F16 + 1) -#define PREFIX_0F2B (PREFIX_0F2A + 1) -#define PREFIX_0F2C (PREFIX_0F2B + 1) -#define PREFIX_0F2D (PREFIX_0F2C + 1) -#define PREFIX_0F2E (PREFIX_0F2D + 1) -#define PREFIX_0F2F (PREFIX_0F2E + 1) -#define PREFIX_0F51 (PREFIX_0F2F + 1) -#define PREFIX_0F52 (PREFIX_0F51 + 1) -#define PREFIX_0F53 (PREFIX_0F52 + 1) -#define PREFIX_0F58 (PREFIX_0F53 + 1) -#define PREFIX_0F59 (PREFIX_0F58 + 1) -#define PREFIX_0F5A (PREFIX_0F59 + 1) -#define PREFIX_0F5B (PREFIX_0F5A + 1) -#define PREFIX_0F5C (PREFIX_0F5B + 1) -#define PREFIX_0F5D (PREFIX_0F5C + 1) -#define PREFIX_0F5E (PREFIX_0F5D + 1) -#define PREFIX_0F5F (PREFIX_0F5E + 1) -#define PREFIX_0F60 (PREFIX_0F5F + 1) -#define PREFIX_0F61 (PREFIX_0F60 + 1) -#define PREFIX_0F62 (PREFIX_0F61 + 1) -#define PREFIX_0F6C (PREFIX_0F62 + 1) -#define PREFIX_0F6D (PREFIX_0F6C + 1) -#define PREFIX_0F6F (PREFIX_0F6D + 1) -#define PREFIX_0F70 (PREFIX_0F6F + 1) -#define PREFIX_0F73_REG_3 (PREFIX_0F70 + 1) -#define PREFIX_0F73_REG_7 (PREFIX_0F73_REG_3 + 1) -#define PREFIX_0F78 (PREFIX_0F73_REG_7 + 1) -#define PREFIX_0F79 (PREFIX_0F78 + 1) -#define PREFIX_0F7C (PREFIX_0F79 + 1) -#define PREFIX_0F7D (PREFIX_0F7C + 1) -#define PREFIX_0F7E (PREFIX_0F7D + 1) -#define PREFIX_0F7F (PREFIX_0F7E + 1) -#define PREFIX_0FB8 (PREFIX_0F7F + 1) -#define PREFIX_0FBD (PREFIX_0FB8 + 1) -#define PREFIX_0FC2 (PREFIX_0FBD + 1) -#define PREFIX_0FC3 (PREFIX_0FC2 + 1) -#define PREFIX_0FC7_REG_6 (PREFIX_0FC3 + 1) -#define PREFIX_0FD0 (PREFIX_0FC7_REG_6 + 1) -#define PREFIX_0FD6 (PREFIX_0FD0 + 1) -#define PREFIX_0FE6 (PREFIX_0FD6 + 1) -#define PREFIX_0FE7 (PREFIX_0FE6 + 1) -#define PREFIX_0FF0 (PREFIX_0FE7 + 1) -#define PREFIX_0FF7 (PREFIX_0FF0 + 1) -#define PREFIX_0F3810 (PREFIX_0FF7 + 1) -#define PREFIX_0F3814 (PREFIX_0F3810 + 1) -#define PREFIX_0F3815 (PREFIX_0F3814 + 1) -#define PREFIX_0F3817 (PREFIX_0F3815 + 1) -#define PREFIX_0F3820 (PREFIX_0F3817 + 1) -#define PREFIX_0F3821 (PREFIX_0F3820 + 1) -#define PREFIX_0F3822 (PREFIX_0F3821 + 1) -#define PREFIX_0F3823 (PREFIX_0F3822 + 1) -#define PREFIX_0F3824 (PREFIX_0F3823 + 1) -#define PREFIX_0F3825 (PREFIX_0F3824 + 1) -#define PREFIX_0F3828 (PREFIX_0F3825 + 1) -#define PREFIX_0F3829 (PREFIX_0F3828 + 1) -#define PREFIX_0F382A (PREFIX_0F3829 + 1) -#define PREFIX_0F382B (PREFIX_0F382A + 1) -#define PREFIX_0F3830 (PREFIX_0F382B + 1) -#define PREFIX_0F3831 (PREFIX_0F3830 + 1) -#define PREFIX_0F3832 (PREFIX_0F3831 + 1) -#define PREFIX_0F3833 (PREFIX_0F3832 + 1) -#define PREFIX_0F3834 (PREFIX_0F3833 + 1) -#define PREFIX_0F3835 (PREFIX_0F3834 + 1) -#define PREFIX_0F3837 (PREFIX_0F3835 + 1) -#define PREFIX_0F3838 (PREFIX_0F3837 + 1) -#define PREFIX_0F3839 (PREFIX_0F3838 + 1) -#define PREFIX_0F383A (PREFIX_0F3839 + 1) -#define PREFIX_0F383B (PREFIX_0F383A + 1) -#define PREFIX_0F383C (PREFIX_0F383B + 1) -#define PREFIX_0F383D (PREFIX_0F383C + 1) -#define PREFIX_0F383E (PREFIX_0F383D + 1) -#define PREFIX_0F383F (PREFIX_0F383E + 1) -#define PREFIX_0F3840 (PREFIX_0F383F + 1) -#define PREFIX_0F3841 (PREFIX_0F3840 + 1) -#define PREFIX_0F3880 (PREFIX_0F3841 + 1) -#define PREFIX_0F3881 (PREFIX_0F3880 + 1) -#define PREFIX_0F38DB (PREFIX_0F3881 + 1) -#define PREFIX_0F38DC (PREFIX_0F38DB + 1) -#define PREFIX_0F38DD (PREFIX_0F38DC + 1) -#define PREFIX_0F38DE (PREFIX_0F38DD + 1) -#define PREFIX_0F38DF (PREFIX_0F38DE + 1) -#define PREFIX_0F38F0 (PREFIX_0F38DF + 1) -#define PREFIX_0F38F1 (PREFIX_0F38F0 + 1) -#define PREFIX_0F3A08 (PREFIX_0F38F1 + 1) -#define PREFIX_0F3A09 (PREFIX_0F3A08 + 1) -#define PREFIX_0F3A0A (PREFIX_0F3A09 + 1) -#define PREFIX_0F3A0B (PREFIX_0F3A0A + 1) -#define PREFIX_0F3A0C (PREFIX_0F3A0B + 1) -#define PREFIX_0F3A0D (PREFIX_0F3A0C + 1) -#define PREFIX_0F3A0E (PREFIX_0F3A0D + 1) -#define PREFIX_0F3A14 (PREFIX_0F3A0E + 1) -#define PREFIX_0F3A15 (PREFIX_0F3A14 + 1) -#define PREFIX_0F3A16 (PREFIX_0F3A15 + 1) -#define PREFIX_0F3A17 (PREFIX_0F3A16 + 1) -#define PREFIX_0F3A20 (PREFIX_0F3A17 + 1) -#define PREFIX_0F3A21 (PREFIX_0F3A20 + 1) -#define PREFIX_0F3A22 (PREFIX_0F3A21 + 1) -#define PREFIX_0F3A40 (PREFIX_0F3A22 + 1) -#define PREFIX_0F3A41 (PREFIX_0F3A40 + 1) -#define PREFIX_0F3A42 (PREFIX_0F3A41 + 1) -#define PREFIX_0F3A44 (PREFIX_0F3A42 + 1) -#define PREFIX_0F3A60 (PREFIX_0F3A44 + 1) -#define PREFIX_0F3A61 (PREFIX_0F3A60 + 1) -#define PREFIX_0F3A62 (PREFIX_0F3A61 + 1) -#define PREFIX_0F3A63 (PREFIX_0F3A62 + 1) -#define PREFIX_0F3ADF (PREFIX_0F3A63 + 1) -#define PREFIX_VEX_10 (PREFIX_0F3ADF + 1) -#define PREFIX_VEX_11 (PREFIX_VEX_10 + 1) -#define PREFIX_VEX_12 (PREFIX_VEX_11 + 1) -#define PREFIX_VEX_16 (PREFIX_VEX_12 + 1) -#define PREFIX_VEX_2A (PREFIX_VEX_16 + 1) -#define PREFIX_VEX_2C (PREFIX_VEX_2A + 1) -#define PREFIX_VEX_2D (PREFIX_VEX_2C + 1) -#define PREFIX_VEX_2E (PREFIX_VEX_2D + 1) -#define PREFIX_VEX_2F (PREFIX_VEX_2E + 1) -#define PREFIX_VEX_51 (PREFIX_VEX_2F + 1) -#define PREFIX_VEX_52 (PREFIX_VEX_51 + 1) -#define PREFIX_VEX_53 (PREFIX_VEX_52 + 1) -#define PREFIX_VEX_58 (PREFIX_VEX_53 + 1) -#define PREFIX_VEX_59 (PREFIX_VEX_58 + 1) -#define PREFIX_VEX_5A (PREFIX_VEX_59 + 1) -#define PREFIX_VEX_5B (PREFIX_VEX_5A + 1) -#define PREFIX_VEX_5C (PREFIX_VEX_5B + 1) -#define PREFIX_VEX_5D (PREFIX_VEX_5C + 1) -#define PREFIX_VEX_5E (PREFIX_VEX_5D + 1) -#define PREFIX_VEX_5F (PREFIX_VEX_5E + 1) -#define PREFIX_VEX_60 (PREFIX_VEX_5F + 1) -#define PREFIX_VEX_61 (PREFIX_VEX_60 + 1) -#define PREFIX_VEX_62 (PREFIX_VEX_61 + 1) -#define PREFIX_VEX_63 (PREFIX_VEX_62 + 1) -#define PREFIX_VEX_64 (PREFIX_VEX_63 + 1) -#define PREFIX_VEX_65 (PREFIX_VEX_64 + 1) -#define PREFIX_VEX_66 (PREFIX_VEX_65 + 1) -#define PREFIX_VEX_67 (PREFIX_VEX_66 + 1) -#define PREFIX_VEX_68 (PREFIX_VEX_67 + 1) -#define PREFIX_VEX_69 (PREFIX_VEX_68 + 1) -#define PREFIX_VEX_6A (PREFIX_VEX_69 + 1) -#define PREFIX_VEX_6B (PREFIX_VEX_6A + 1) -#define PREFIX_VEX_6C (PREFIX_VEX_6B + 1) -#define PREFIX_VEX_6D (PREFIX_VEX_6C + 1) -#define PREFIX_VEX_6E (PREFIX_VEX_6D + 1) -#define PREFIX_VEX_6F (PREFIX_VEX_6E + 1) -#define PREFIX_VEX_70 (PREFIX_VEX_6F + 1) -#define PREFIX_VEX_71_REG_2 (PREFIX_VEX_70 + 1) -#define PREFIX_VEX_71_REG_4 (PREFIX_VEX_71_REG_2 + 1) -#define PREFIX_VEX_71_REG_6 (PREFIX_VEX_71_REG_4 + 1) -#define PREFIX_VEX_72_REG_2 (PREFIX_VEX_71_REG_6 + 1) -#define PREFIX_VEX_72_REG_4 (PREFIX_VEX_72_REG_2 + 1) -#define PREFIX_VEX_72_REG_6 (PREFIX_VEX_72_REG_4 + 1) -#define PREFIX_VEX_73_REG_2 (PREFIX_VEX_72_REG_6 + 1) -#define PREFIX_VEX_73_REG_3 (PREFIX_VEX_73_REG_2 + 1) -#define PREFIX_VEX_73_REG_6 (PREFIX_VEX_73_REG_3 + 1) -#define PREFIX_VEX_73_REG_7 (PREFIX_VEX_73_REG_6 + 1) -#define PREFIX_VEX_74 (PREFIX_VEX_73_REG_7 + 1) -#define PREFIX_VEX_75 (PREFIX_VEX_74 + 1) -#define PREFIX_VEX_76 (PREFIX_VEX_75 + 1) -#define PREFIX_VEX_77 (PREFIX_VEX_76 + 1) -#define PREFIX_VEX_7C (PREFIX_VEX_77 + 1) -#define PREFIX_VEX_7D (PREFIX_VEX_7C + 1) -#define PREFIX_VEX_7E (PREFIX_VEX_7D + 1) -#define PREFIX_VEX_7F (PREFIX_VEX_7E + 1) -#define PREFIX_VEX_C2 (PREFIX_VEX_7F + 1) -#define PREFIX_VEX_C4 (PREFIX_VEX_C2 + 1) -#define PREFIX_VEX_C5 (PREFIX_VEX_C4 + 1) -#define PREFIX_VEX_D0 (PREFIX_VEX_C5 + 1) -#define PREFIX_VEX_D1 (PREFIX_VEX_D0 + 1) -#define PREFIX_VEX_D2 (PREFIX_VEX_D1 + 1) -#define PREFIX_VEX_D3 (PREFIX_VEX_D2 + 1) -#define PREFIX_VEX_D4 (PREFIX_VEX_D3 + 1) -#define PREFIX_VEX_D5 (PREFIX_VEX_D4 + 1) -#define PREFIX_VEX_D6 (PREFIX_VEX_D5 + 1) -#define PREFIX_VEX_D7 (PREFIX_VEX_D6 + 1) -#define PREFIX_VEX_D8 (PREFIX_VEX_D7 + 1) -#define PREFIX_VEX_D9 (PREFIX_VEX_D8 + 1) -#define PREFIX_VEX_DA (PREFIX_VEX_D9 + 1) -#define PREFIX_VEX_DB (PREFIX_VEX_DA + 1) -#define PREFIX_VEX_DC (PREFIX_VEX_DB + 1) -#define PREFIX_VEX_DD (PREFIX_VEX_DC + 1) -#define PREFIX_VEX_DE (PREFIX_VEX_DD + 1) -#define PREFIX_VEX_DF (PREFIX_VEX_DE + 1) -#define PREFIX_VEX_E0 (PREFIX_VEX_DF + 1) -#define PREFIX_VEX_E1 (PREFIX_VEX_E0 + 1) -#define PREFIX_VEX_E2 (PREFIX_VEX_E1 + 1) -#define PREFIX_VEX_E3 (PREFIX_VEX_E2 + 1) -#define PREFIX_VEX_E4 (PREFIX_VEX_E3 + 1) -#define PREFIX_VEX_E5 (PREFIX_VEX_E4 + 1) -#define PREFIX_VEX_E6 (PREFIX_VEX_E5 + 1) -#define PREFIX_VEX_E7 (PREFIX_VEX_E6 + 1) -#define PREFIX_VEX_E8 (PREFIX_VEX_E7 + 1) -#define PREFIX_VEX_E9 (PREFIX_VEX_E8 + 1) -#define PREFIX_VEX_EA (PREFIX_VEX_E9 + 1) -#define PREFIX_VEX_EB (PREFIX_VEX_EA + 1) -#define PREFIX_VEX_EC (PREFIX_VEX_EB + 1) -#define PREFIX_VEX_ED (PREFIX_VEX_EC + 1) -#define PREFIX_VEX_EE (PREFIX_VEX_ED + 1) -#define PREFIX_VEX_EF (PREFIX_VEX_EE + 1) -#define PREFIX_VEX_F0 (PREFIX_VEX_EF + 1) -#define PREFIX_VEX_F1 (PREFIX_VEX_F0 + 1) -#define PREFIX_VEX_F2 (PREFIX_VEX_F1 + 1) -#define PREFIX_VEX_F3 (PREFIX_VEX_F2 + 1) -#define PREFIX_VEX_F4 (PREFIX_VEX_F3 + 1) -#define PREFIX_VEX_F5 (PREFIX_VEX_F4 + 1) -#define PREFIX_VEX_F6 (PREFIX_VEX_F5 + 1) -#define PREFIX_VEX_F7 (PREFIX_VEX_F6 + 1) -#define PREFIX_VEX_F8 (PREFIX_VEX_F7 + 1) -#define PREFIX_VEX_F9 (PREFIX_VEX_F8 + 1) -#define PREFIX_VEX_FA (PREFIX_VEX_F9 + 1) -#define PREFIX_VEX_FB (PREFIX_VEX_FA + 1) -#define PREFIX_VEX_FC (PREFIX_VEX_FB + 1) -#define PREFIX_VEX_FD (PREFIX_VEX_FC + 1) -#define PREFIX_VEX_FE (PREFIX_VEX_FD + 1) -#define PREFIX_VEX_3800 (PREFIX_VEX_FE + 1) -#define PREFIX_VEX_3801 (PREFIX_VEX_3800 + 1) -#define PREFIX_VEX_3802 (PREFIX_VEX_3801 + 1) -#define PREFIX_VEX_3803 (PREFIX_VEX_3802 + 1) -#define PREFIX_VEX_3804 (PREFIX_VEX_3803 + 1) -#define PREFIX_VEX_3805 (PREFIX_VEX_3804 + 1) -#define PREFIX_VEX_3806 (PREFIX_VEX_3805 + 1) -#define PREFIX_VEX_3807 (PREFIX_VEX_3806 + 1) -#define PREFIX_VEX_3808 (PREFIX_VEX_3807 + 1) -#define PREFIX_VEX_3809 (PREFIX_VEX_3808 + 1) -#define PREFIX_VEX_380A (PREFIX_VEX_3809 + 1) -#define PREFIX_VEX_380B (PREFIX_VEX_380A + 1) -#define PREFIX_VEX_380C (PREFIX_VEX_380B + 1) -#define PREFIX_VEX_380D (PREFIX_VEX_380C + 1) -#define PREFIX_VEX_380E (PREFIX_VEX_380D + 1) -#define PREFIX_VEX_380F (PREFIX_VEX_380E + 1) -#define PREFIX_VEX_3817 (PREFIX_VEX_380F + 1) -#define PREFIX_VEX_3818 (PREFIX_VEX_3817 + 1) -#define PREFIX_VEX_3819 (PREFIX_VEX_3818 + 1) -#define PREFIX_VEX_381A (PREFIX_VEX_3819 + 1) -#define PREFIX_VEX_381C (PREFIX_VEX_381A + 1) -#define PREFIX_VEX_381D (PREFIX_VEX_381C + 1) -#define PREFIX_VEX_381E (PREFIX_VEX_381D + 1) -#define PREFIX_VEX_3820 (PREFIX_VEX_381E + 1) -#define PREFIX_VEX_3821 (PREFIX_VEX_3820 + 1) -#define PREFIX_VEX_3822 (PREFIX_VEX_3821 + 1) -#define PREFIX_VEX_3823 (PREFIX_VEX_3822 + 1) -#define PREFIX_VEX_3824 (PREFIX_VEX_3823 + 1) -#define PREFIX_VEX_3825 (PREFIX_VEX_3824 + 1) -#define PREFIX_VEX_3828 (PREFIX_VEX_3825 + 1) -#define PREFIX_VEX_3829 (PREFIX_VEX_3828 + 1) -#define PREFIX_VEX_382A (PREFIX_VEX_3829 + 1) -#define PREFIX_VEX_382B (PREFIX_VEX_382A + 1) -#define PREFIX_VEX_382C (PREFIX_VEX_382B + 1) -#define PREFIX_VEX_382D (PREFIX_VEX_382C + 1) -#define PREFIX_VEX_382E (PREFIX_VEX_382D + 1) -#define PREFIX_VEX_382F (PREFIX_VEX_382E + 1) -#define PREFIX_VEX_3830 (PREFIX_VEX_382F + 1) -#define PREFIX_VEX_3831 (PREFIX_VEX_3830 + 1) -#define PREFIX_VEX_3832 (PREFIX_VEX_3831 + 1) -#define PREFIX_VEX_3833 (PREFIX_VEX_3832 + 1) -#define PREFIX_VEX_3834 (PREFIX_VEX_3833 + 1) -#define PREFIX_VEX_3835 (PREFIX_VEX_3834 + 1) -#define PREFIX_VEX_3837 (PREFIX_VEX_3835 + 1) -#define PREFIX_VEX_3838 (PREFIX_VEX_3837 + 1) -#define PREFIX_VEX_3839 (PREFIX_VEX_3838 + 1) -#define PREFIX_VEX_383A (PREFIX_VEX_3839 + 1) -#define PREFIX_VEX_383B (PREFIX_VEX_383A + 1) -#define PREFIX_VEX_383C (PREFIX_VEX_383B + 1) -#define PREFIX_VEX_383D (PREFIX_VEX_383C + 1) -#define PREFIX_VEX_383E (PREFIX_VEX_383D + 1) -#define PREFIX_VEX_383F (PREFIX_VEX_383E + 1) -#define PREFIX_VEX_3840 (PREFIX_VEX_383F + 1) -#define PREFIX_VEX_3841 (PREFIX_VEX_3840 + 1) -#define PREFIX_VEX_3896 (PREFIX_VEX_3841 + 1) -#define PREFIX_VEX_3897 (PREFIX_VEX_3896 + 1) -#define PREFIX_VEX_3898 (PREFIX_VEX_3897 + 1) -#define PREFIX_VEX_3899 (PREFIX_VEX_3898 + 1) -#define PREFIX_VEX_389A (PREFIX_VEX_3899 + 1) -#define PREFIX_VEX_389B (PREFIX_VEX_389A + 1) -#define PREFIX_VEX_389C (PREFIX_VEX_389B + 1) -#define PREFIX_VEX_389D (PREFIX_VEX_389C + 1) -#define PREFIX_VEX_389E (PREFIX_VEX_389D + 1) -#define PREFIX_VEX_389F (PREFIX_VEX_389E + 1) -#define PREFIX_VEX_38A6 (PREFIX_VEX_389F + 1) -#define PREFIX_VEX_38A7 (PREFIX_VEX_38A6 + 1) -#define PREFIX_VEX_38A8 (PREFIX_VEX_38A7 + 1) -#define PREFIX_VEX_38A9 (PREFIX_VEX_38A8 + 1) -#define PREFIX_VEX_38AA (PREFIX_VEX_38A9 + 1) -#define PREFIX_VEX_38AB (PREFIX_VEX_38AA + 1) -#define PREFIX_VEX_38AC (PREFIX_VEX_38AB + 1) -#define PREFIX_VEX_38AD (PREFIX_VEX_38AC + 1) -#define PREFIX_VEX_38AE (PREFIX_VEX_38AD + 1) -#define PREFIX_VEX_38AF (PREFIX_VEX_38AE + 1) -#define PREFIX_VEX_38B6 (PREFIX_VEX_38AF + 1) -#define PREFIX_VEX_38B7 (PREFIX_VEX_38B6 + 1) -#define PREFIX_VEX_38B8 (PREFIX_VEX_38B7 + 1) -#define PREFIX_VEX_38B9 (PREFIX_VEX_38B8 + 1) -#define PREFIX_VEX_38BA (PREFIX_VEX_38B9 + 1) -#define PREFIX_VEX_38BB (PREFIX_VEX_38BA + 1) -#define PREFIX_VEX_38BC (PREFIX_VEX_38BB + 1) -#define PREFIX_VEX_38BD (PREFIX_VEX_38BC + 1) -#define PREFIX_VEX_38BE (PREFIX_VEX_38BD + 1) -#define PREFIX_VEX_38BF (PREFIX_VEX_38BE + 1) -#define PREFIX_VEX_38DB (PREFIX_VEX_38BF + 1) -#define PREFIX_VEX_38DC (PREFIX_VEX_38DB + 1) -#define PREFIX_VEX_38DD (PREFIX_VEX_38DC + 1) -#define PREFIX_VEX_38DE (PREFIX_VEX_38DD + 1) -#define PREFIX_VEX_38DF (PREFIX_VEX_38DE + 1) -#define PREFIX_VEX_3A04 (PREFIX_VEX_38DF + 1) -#define PREFIX_VEX_3A05 (PREFIX_VEX_3A04 + 1) -#define PREFIX_VEX_3A06 (PREFIX_VEX_3A05 + 1) -#define PREFIX_VEX_3A08 (PREFIX_VEX_3A06 + 1) -#define PREFIX_VEX_3A09 (PREFIX_VEX_3A08 + 1) -#define PREFIX_VEX_3A0A (PREFIX_VEX_3A09 + 1) -#define PREFIX_VEX_3A0B (PREFIX_VEX_3A0A + 1) -#define PREFIX_VEX_3A0C (PREFIX_VEX_3A0B + 1) -#define PREFIX_VEX_3A0D (PREFIX_VEX_3A0C + 1) -#define PREFIX_VEX_3A0E (PREFIX_VEX_3A0D + 1) -#define PREFIX_VEX_3A0F (PREFIX_VEX_3A0E + 1) -#define PREFIX_VEX_3A14 (PREFIX_VEX_3A0F + 1) -#define PREFIX_VEX_3A15 (PREFIX_VEX_3A14 + 1) -#define PREFIX_VEX_3A16 (PREFIX_VEX_3A15 + 1) -#define PREFIX_VEX_3A17 (PREFIX_VEX_3A16 + 1) -#define PREFIX_VEX_3A18 (PREFIX_VEX_3A17 + 1) -#define PREFIX_VEX_3A19 (PREFIX_VEX_3A18 + 1) -#define PREFIX_VEX_3A20 (PREFIX_VEX_3A19 + 1) -#define PREFIX_VEX_3A21 (PREFIX_VEX_3A20 + 1) -#define PREFIX_VEX_3A22 (PREFIX_VEX_3A21 + 1) -#define PREFIX_VEX_3A40 (PREFIX_VEX_3A22 + 1) -#define PREFIX_VEX_3A41 (PREFIX_VEX_3A40 + 1) -#define PREFIX_VEX_3A42 (PREFIX_VEX_3A41 + 1) -#define PREFIX_VEX_3A44 (PREFIX_VEX_3A42 + 1) -#define PREFIX_VEX_3A4A (PREFIX_VEX_3A44 + 1) -#define PREFIX_VEX_3A4B (PREFIX_VEX_3A4A + 1) -#define PREFIX_VEX_3A4C (PREFIX_VEX_3A4B + 1) -#define PREFIX_VEX_3A5C (PREFIX_VEX_3A4C + 1) -#define PREFIX_VEX_3A5D (PREFIX_VEX_3A5C + 1) -#define PREFIX_VEX_3A5E (PREFIX_VEX_3A5D + 1) -#define PREFIX_VEX_3A5F (PREFIX_VEX_3A5E + 1) -#define PREFIX_VEX_3A60 (PREFIX_VEX_3A5F + 1) -#define PREFIX_VEX_3A61 (PREFIX_VEX_3A60 + 1) -#define PREFIX_VEX_3A62 (PREFIX_VEX_3A61 + 1) -#define PREFIX_VEX_3A63 (PREFIX_VEX_3A62 + 1) -#define PREFIX_VEX_3A68 (PREFIX_VEX_3A63 + 1) -#define PREFIX_VEX_3A69 (PREFIX_VEX_3A68 + 1) -#define PREFIX_VEX_3A6A (PREFIX_VEX_3A69 + 1) -#define PREFIX_VEX_3A6B (PREFIX_VEX_3A6A + 1) -#define PREFIX_VEX_3A6C (PREFIX_VEX_3A6B + 1) -#define PREFIX_VEX_3A6D (PREFIX_VEX_3A6C + 1) -#define PREFIX_VEX_3A6E (PREFIX_VEX_3A6D + 1) -#define PREFIX_VEX_3A6F (PREFIX_VEX_3A6E + 1) -#define PREFIX_VEX_3A78 (PREFIX_VEX_3A6F + 1) -#define PREFIX_VEX_3A79 (PREFIX_VEX_3A78 + 1) -#define PREFIX_VEX_3A7A (PREFIX_VEX_3A79 + 1) -#define PREFIX_VEX_3A7B (PREFIX_VEX_3A7A + 1) -#define PREFIX_VEX_3A7C (PREFIX_VEX_3A7B + 1) -#define PREFIX_VEX_3A7D (PREFIX_VEX_3A7C + 1) -#define PREFIX_VEX_3A7E (PREFIX_VEX_3A7D + 1) -#define PREFIX_VEX_3A7F (PREFIX_VEX_3A7E + 1) -#define PREFIX_VEX_3ADF (PREFIX_VEX_3A7F + 1) - -#define X86_64_06 0 -#define X86_64_07 (X86_64_06 + 1) -#define X86_64_0D (X86_64_07 + 1) -#define X86_64_16 (X86_64_0D + 1) -#define X86_64_17 (X86_64_16 + 1) -#define X86_64_1E (X86_64_17 + 1) -#define X86_64_1F (X86_64_1E + 1) -#define X86_64_27 (X86_64_1F + 1) -#define X86_64_2F (X86_64_27 + 1) -#define X86_64_37 (X86_64_2F + 1) -#define X86_64_3F (X86_64_37 + 1) -#define X86_64_60 (X86_64_3F + 1) -#define X86_64_61 (X86_64_60 + 1) -#define X86_64_62 (X86_64_61 + 1) -#define X86_64_63 (X86_64_62 + 1) -#define X86_64_6D (X86_64_63 + 1) -#define X86_64_6F (X86_64_6D + 1) -#define X86_64_9A (X86_64_6F + 1) -#define X86_64_C4 (X86_64_9A + 1) -#define X86_64_C5 (X86_64_C4 + 1) -#define X86_64_CE (X86_64_C5 + 1) -#define X86_64_D4 (X86_64_CE + 1) -#define X86_64_D5 (X86_64_D4 + 1) -#define X86_64_EA (X86_64_D5 + 1) -#define X86_64_0F01_REG_0 (X86_64_EA + 1) -#define X86_64_0F01_REG_1 (X86_64_0F01_REG_0 + 1) -#define X86_64_0F01_REG_2 (X86_64_0F01_REG_1 + 1) -#define X86_64_0F01_REG_3 (X86_64_0F01_REG_2 + 1) - -#define THREE_BYTE_0F38 0 -#define THREE_BYTE_0F3A (THREE_BYTE_0F38 + 1) -#define THREE_BYTE_0F7A (THREE_BYTE_0F3A + 1) - -#define VEX_0F 0 -#define VEX_0F38 (VEX_0F + 1) -#define VEX_0F3A (VEX_0F38 + 1) - -#define VEX_LEN_10_P_1 0 -#define VEX_LEN_10_P_3 (VEX_LEN_10_P_1 + 1) -#define VEX_LEN_11_P_1 (VEX_LEN_10_P_3 + 1) -#define VEX_LEN_11_P_3 (VEX_LEN_11_P_1 + 1) -#define VEX_LEN_12_P_0_M_0 (VEX_LEN_11_P_3 + 1) -#define VEX_LEN_12_P_0_M_1 (VEX_LEN_12_P_0_M_0 + 1) -#define VEX_LEN_12_P_2 (VEX_LEN_12_P_0_M_1 + 1) -#define VEX_LEN_13_M_0 (VEX_LEN_12_P_2 + 1) -#define VEX_LEN_16_P_0_M_0 (VEX_LEN_13_M_0 + 1) -#define VEX_LEN_16_P_0_M_1 (VEX_LEN_16_P_0_M_0 + 1) -#define VEX_LEN_16_P_2 (VEX_LEN_16_P_0_M_1 + 1) -#define VEX_LEN_17_M_0 (VEX_LEN_16_P_2 + 1) -#define VEX_LEN_2A_P_1 (VEX_LEN_17_M_0 + 1) -#define VEX_LEN_2A_P_3 (VEX_LEN_2A_P_1 + 1) -#define VEX_LEN_2C_P_1 (VEX_LEN_2A_P_3 + 1) -#define VEX_LEN_2C_P_3 (VEX_LEN_2C_P_1 + 1) -#define VEX_LEN_2D_P_1 (VEX_LEN_2C_P_3 + 1) -#define VEX_LEN_2D_P_3 (VEX_LEN_2D_P_1 + 1) -#define VEX_LEN_2E_P_0 (VEX_LEN_2D_P_3 + 1) -#define VEX_LEN_2E_P_2 (VEX_LEN_2E_P_0 + 1) -#define VEX_LEN_2F_P_0 (VEX_LEN_2E_P_2 + 1) -#define VEX_LEN_2F_P_2 (VEX_LEN_2F_P_0 + 1) -#define VEX_LEN_51_P_1 (VEX_LEN_2F_P_2 + 1) -#define VEX_LEN_51_P_3 (VEX_LEN_51_P_1 + 1) -#define VEX_LEN_52_P_1 (VEX_LEN_51_P_3 + 1) -#define VEX_LEN_53_P_1 (VEX_LEN_52_P_1 + 1) -#define VEX_LEN_58_P_1 (VEX_LEN_53_P_1 + 1) -#define VEX_LEN_58_P_3 (VEX_LEN_58_P_1 + 1) -#define VEX_LEN_59_P_1 (VEX_LEN_58_P_3 + 1) -#define VEX_LEN_59_P_3 (VEX_LEN_59_P_1 + 1) -#define VEX_LEN_5A_P_1 (VEX_LEN_59_P_3 + 1) -#define VEX_LEN_5A_P_3 (VEX_LEN_5A_P_1 + 1) -#define VEX_LEN_5C_P_1 (VEX_LEN_5A_P_3 + 1) -#define VEX_LEN_5C_P_3 (VEX_LEN_5C_P_1 + 1) -#define VEX_LEN_5D_P_1 (VEX_LEN_5C_P_3 + 1) -#define VEX_LEN_5D_P_3 (VEX_LEN_5D_P_1 + 1) -#define VEX_LEN_5E_P_1 (VEX_LEN_5D_P_3 + 1) -#define VEX_LEN_5E_P_3 (VEX_LEN_5E_P_1 + 1) -#define VEX_LEN_5F_P_1 (VEX_LEN_5E_P_3 + 1) -#define VEX_LEN_5F_P_3 (VEX_LEN_5F_P_1 + 1) -#define VEX_LEN_60_P_2 (VEX_LEN_5F_P_3 + 1) -#define VEX_LEN_61_P_2 (VEX_LEN_60_P_2 + 1) -#define VEX_LEN_62_P_2 (VEX_LEN_61_P_2 + 1) -#define VEX_LEN_63_P_2 (VEX_LEN_62_P_2 + 1) -#define VEX_LEN_64_P_2 (VEX_LEN_63_P_2 + 1) -#define VEX_LEN_65_P_2 (VEX_LEN_64_P_2 + 1) -#define VEX_LEN_66_P_2 (VEX_LEN_65_P_2 + 1) -#define VEX_LEN_67_P_2 (VEX_LEN_66_P_2 + 1) -#define VEX_LEN_68_P_2 (VEX_LEN_67_P_2 + 1) -#define VEX_LEN_69_P_2 (VEX_LEN_68_P_2 + 1) -#define VEX_LEN_6A_P_2 (VEX_LEN_69_P_2 + 1) -#define VEX_LEN_6B_P_2 (VEX_LEN_6A_P_2 + 1) -#define VEX_LEN_6C_P_2 (VEX_LEN_6B_P_2 + 1) -#define VEX_LEN_6D_P_2 (VEX_LEN_6C_P_2 + 1) -#define VEX_LEN_6E_P_2 (VEX_LEN_6D_P_2 + 1) -#define VEX_LEN_70_P_1 (VEX_LEN_6E_P_2 + 1) -#define VEX_LEN_70_P_2 (VEX_LEN_70_P_1 + 1) -#define VEX_LEN_70_P_3 (VEX_LEN_70_P_2 + 1) -#define VEX_LEN_71_R_2_P_2 (VEX_LEN_70_P_3 + 1) -#define VEX_LEN_71_R_4_P_2 (VEX_LEN_71_R_2_P_2 + 1) -#define VEX_LEN_71_R_6_P_2 (VEX_LEN_71_R_4_P_2 + 1) -#define VEX_LEN_72_R_2_P_2 (VEX_LEN_71_R_6_P_2 + 1) -#define VEX_LEN_72_R_4_P_2 (VEX_LEN_72_R_2_P_2 + 1) -#define VEX_LEN_72_R_6_P_2 (VEX_LEN_72_R_4_P_2 + 1) -#define VEX_LEN_73_R_2_P_2 (VEX_LEN_72_R_6_P_2 + 1) -#define VEX_LEN_73_R_3_P_2 (VEX_LEN_73_R_2_P_2 + 1) -#define VEX_LEN_73_R_6_P_2 (VEX_LEN_73_R_3_P_2 + 1) -#define VEX_LEN_73_R_7_P_2 (VEX_LEN_73_R_6_P_2 + 1) -#define VEX_LEN_74_P_2 (VEX_LEN_73_R_7_P_2 + 1) -#define VEX_LEN_75_P_2 (VEX_LEN_74_P_2 + 1) -#define VEX_LEN_76_P_2 (VEX_LEN_75_P_2 + 1) -#define VEX_LEN_7E_P_1 (VEX_LEN_76_P_2 + 1) -#define VEX_LEN_7E_P_2 (VEX_LEN_7E_P_1 + 1) -#define VEX_LEN_AE_R_2_M_0 (VEX_LEN_7E_P_2 + 1) -#define VEX_LEN_AE_R_3_M_0 (VEX_LEN_AE_R_2_M_0 + 1) -#define VEX_LEN_C2_P_1 (VEX_LEN_AE_R_3_M_0 + 1) -#define VEX_LEN_C2_P_3 (VEX_LEN_C2_P_1 + 1) -#define VEX_LEN_C4_P_2 (VEX_LEN_C2_P_3 + 1) -#define VEX_LEN_C5_P_2 (VEX_LEN_C4_P_2 + 1) -#define VEX_LEN_D1_P_2 (VEX_LEN_C5_P_2 + 1) -#define VEX_LEN_D2_P_2 (VEX_LEN_D1_P_2 + 1) -#define VEX_LEN_D3_P_2 (VEX_LEN_D2_P_2 + 1) -#define VEX_LEN_D4_P_2 (VEX_LEN_D3_P_2 + 1) -#define VEX_LEN_D5_P_2 (VEX_LEN_D4_P_2 + 1) -#define VEX_LEN_D6_P_2 (VEX_LEN_D5_P_2 + 1) -#define VEX_LEN_D7_P_2_M_1 (VEX_LEN_D6_P_2 + 1) -#define VEX_LEN_D8_P_2 (VEX_LEN_D7_P_2_M_1 + 1) -#define VEX_LEN_D9_P_2 (VEX_LEN_D8_P_2 + 1) -#define VEX_LEN_DA_P_2 (VEX_LEN_D9_P_2 + 1) -#define VEX_LEN_DB_P_2 (VEX_LEN_DA_P_2 + 1) -#define VEX_LEN_DC_P_2 (VEX_LEN_DB_P_2 + 1) -#define VEX_LEN_DD_P_2 (VEX_LEN_DC_P_2 + 1) -#define VEX_LEN_DE_P_2 (VEX_LEN_DD_P_2 + 1) -#define VEX_LEN_DF_P_2 (VEX_LEN_DE_P_2 + 1) -#define VEX_LEN_E0_P_2 (VEX_LEN_DF_P_2 + 1) -#define VEX_LEN_E1_P_2 (VEX_LEN_E0_P_2 + 1) -#define VEX_LEN_E2_P_2 (VEX_LEN_E1_P_2 + 1) -#define VEX_LEN_E3_P_2 (VEX_LEN_E2_P_2 + 1) -#define VEX_LEN_E4_P_2 (VEX_LEN_E3_P_2 + 1) -#define VEX_LEN_E5_P_2 (VEX_LEN_E4_P_2 + 1) -#define VEX_LEN_E8_P_2 (VEX_LEN_E5_P_2 + 1) -#define VEX_LEN_E9_P_2 (VEX_LEN_E8_P_2 + 1) -#define VEX_LEN_EA_P_2 (VEX_LEN_E9_P_2 + 1) -#define VEX_LEN_EB_P_2 (VEX_LEN_EA_P_2 + 1) -#define VEX_LEN_EC_P_2 (VEX_LEN_EB_P_2 + 1) -#define VEX_LEN_ED_P_2 (VEX_LEN_EC_P_2 + 1) -#define VEX_LEN_EE_P_2 (VEX_LEN_ED_P_2 + 1) -#define VEX_LEN_EF_P_2 (VEX_LEN_EE_P_2 + 1) -#define VEX_LEN_F1_P_2 (VEX_LEN_EF_P_2 + 1) -#define VEX_LEN_F2_P_2 (VEX_LEN_F1_P_2 + 1) -#define VEX_LEN_F3_P_2 (VEX_LEN_F2_P_2 + 1) -#define VEX_LEN_F4_P_2 (VEX_LEN_F3_P_2 + 1) -#define VEX_LEN_F5_P_2 (VEX_LEN_F4_P_2 + 1) -#define VEX_LEN_F6_P_2 (VEX_LEN_F5_P_2 + 1) -#define VEX_LEN_F7_P_2 (VEX_LEN_F6_P_2 + 1) -#define VEX_LEN_F8_P_2 (VEX_LEN_F7_P_2 + 1) -#define VEX_LEN_F9_P_2 (VEX_LEN_F8_P_2 + 1) -#define VEX_LEN_FA_P_2 (VEX_LEN_F9_P_2 + 1) -#define VEX_LEN_FB_P_2 (VEX_LEN_FA_P_2 + 1) -#define VEX_LEN_FC_P_2 (VEX_LEN_FB_P_2 + 1) -#define VEX_LEN_FD_P_2 (VEX_LEN_FC_P_2 + 1) -#define VEX_LEN_FE_P_2 (VEX_LEN_FD_P_2 + 1) -#define VEX_LEN_3800_P_2 (VEX_LEN_FE_P_2 + 1) -#define VEX_LEN_3801_P_2 (VEX_LEN_3800_P_2 + 1) -#define VEX_LEN_3802_P_2 (VEX_LEN_3801_P_2 + 1) -#define VEX_LEN_3803_P_2 (VEX_LEN_3802_P_2 + 1) -#define VEX_LEN_3804_P_2 (VEX_LEN_3803_P_2 + 1) -#define VEX_LEN_3805_P_2 (VEX_LEN_3804_P_2 + 1) -#define VEX_LEN_3806_P_2 (VEX_LEN_3805_P_2 + 1) -#define VEX_LEN_3807_P_2 (VEX_LEN_3806_P_2 + 1) -#define VEX_LEN_3808_P_2 (VEX_LEN_3807_P_2 + 1) -#define VEX_LEN_3809_P_2 (VEX_LEN_3808_P_2 + 1) -#define VEX_LEN_380A_P_2 (VEX_LEN_3809_P_2 + 1) -#define VEX_LEN_380B_P_2 (VEX_LEN_380A_P_2 + 1) -#define VEX_LEN_3819_P_2_M_0 (VEX_LEN_380B_P_2 + 1) -#define VEX_LEN_381A_P_2_M_0 (VEX_LEN_3819_P_2_M_0 + 1) -#define VEX_LEN_381C_P_2 (VEX_LEN_381A_P_2_M_0 + 1) -#define VEX_LEN_381D_P_2 (VEX_LEN_381C_P_2 + 1) -#define VEX_LEN_381E_P_2 (VEX_LEN_381D_P_2 + 1) -#define VEX_LEN_3820_P_2 (VEX_LEN_381E_P_2 + 1) -#define VEX_LEN_3821_P_2 (VEX_LEN_3820_P_2 + 1) -#define VEX_LEN_3822_P_2 (VEX_LEN_3821_P_2 + 1) -#define VEX_LEN_3823_P_2 (VEX_LEN_3822_P_2 + 1) -#define VEX_LEN_3824_P_2 (VEX_LEN_3823_P_2 + 1) -#define VEX_LEN_3825_P_2 (VEX_LEN_3824_P_2 + 1) -#define VEX_LEN_3828_P_2 (VEX_LEN_3825_P_2 + 1) -#define VEX_LEN_3829_P_2 (VEX_LEN_3828_P_2 + 1) -#define VEX_LEN_382A_P_2_M_0 (VEX_LEN_3829_P_2 + 1) -#define VEX_LEN_382B_P_2 (VEX_LEN_382A_P_2_M_0 + 1) -#define VEX_LEN_3830_P_2 (VEX_LEN_382B_P_2 + 1) -#define VEX_LEN_3831_P_2 (VEX_LEN_3830_P_2 + 1) -#define VEX_LEN_3832_P_2 (VEX_LEN_3831_P_2 + 1) -#define VEX_LEN_3833_P_2 (VEX_LEN_3832_P_2 + 1) -#define VEX_LEN_3834_P_2 (VEX_LEN_3833_P_2 + 1) -#define VEX_LEN_3835_P_2 (VEX_LEN_3834_P_2 + 1) -#define VEX_LEN_3837_P_2 (VEX_LEN_3835_P_2 + 1) -#define VEX_LEN_3838_P_2 (VEX_LEN_3837_P_2 + 1) -#define VEX_LEN_3839_P_2 (VEX_LEN_3838_P_2 + 1) -#define VEX_LEN_383A_P_2 (VEX_LEN_3839_P_2 + 1) -#define VEX_LEN_383B_P_2 (VEX_LEN_383A_P_2 + 1) -#define VEX_LEN_383C_P_2 (VEX_LEN_383B_P_2 + 1) -#define VEX_LEN_383D_P_2 (VEX_LEN_383C_P_2 + 1) -#define VEX_LEN_383E_P_2 (VEX_LEN_383D_P_2 + 1) -#define VEX_LEN_383F_P_2 (VEX_LEN_383E_P_2 + 1) -#define VEX_LEN_3840_P_2 (VEX_LEN_383F_P_2 + 1) -#define VEX_LEN_3841_P_2 (VEX_LEN_3840_P_2 + 1) -#define VEX_LEN_38DB_P_2 (VEX_LEN_3841_P_2 + 1) -#define VEX_LEN_38DC_P_2 (VEX_LEN_38DB_P_2 + 1) -#define VEX_LEN_38DD_P_2 (VEX_LEN_38DC_P_2 + 1) -#define VEX_LEN_38DE_P_2 (VEX_LEN_38DD_P_2 + 1) -#define VEX_LEN_38DF_P_2 (VEX_LEN_38DE_P_2 + 1) -#define VEX_LEN_3A06_P_2 (VEX_LEN_38DF_P_2 + 1) -#define VEX_LEN_3A0A_P_2 (VEX_LEN_3A06_P_2 + 1) -#define VEX_LEN_3A0B_P_2 (VEX_LEN_3A0A_P_2 + 1) -#define VEX_LEN_3A0E_P_2 (VEX_LEN_3A0B_P_2 + 1) -#define VEX_LEN_3A0F_P_2 (VEX_LEN_3A0E_P_2 + 1) -#define VEX_LEN_3A14_P_2 (VEX_LEN_3A0F_P_2 + 1) -#define VEX_LEN_3A15_P_2 (VEX_LEN_3A14_P_2 + 1) -#define VEX_LEN_3A16_P_2 (VEX_LEN_3A15_P_2 + 1) -#define VEX_LEN_3A17_P_2 (VEX_LEN_3A16_P_2 + 1) -#define VEX_LEN_3A18_P_2 (VEX_LEN_3A17_P_2 + 1) -#define VEX_LEN_3A19_P_2 (VEX_LEN_3A18_P_2 + 1) -#define VEX_LEN_3A20_P_2 (VEX_LEN_3A19_P_2 + 1) -#define VEX_LEN_3A21_P_2 (VEX_LEN_3A20_P_2 + 1) -#define VEX_LEN_3A22_P_2 (VEX_LEN_3A21_P_2 + 1) -#define VEX_LEN_3A41_P_2 (VEX_LEN_3A22_P_2 + 1) -#define VEX_LEN_3A42_P_2 (VEX_LEN_3A41_P_2 + 1) -#define VEX_LEN_3A44_P_2 (VEX_LEN_3A42_P_2 + 1) -#define VEX_LEN_3A4C_P_2 (VEX_LEN_3A44_P_2 + 1) -#define VEX_LEN_3A60_P_2 (VEX_LEN_3A4C_P_2 + 1) -#define VEX_LEN_3A61_P_2 (VEX_LEN_3A60_P_2 + 1) -#define VEX_LEN_3A62_P_2 (VEX_LEN_3A61_P_2 + 1) -#define VEX_LEN_3A63_P_2 (VEX_LEN_3A62_P_2 + 1) -#define VEX_LEN_3A6A_P_2 (VEX_LEN_3A63_P_2 + 1) -#define VEX_LEN_3A6B_P_2 (VEX_LEN_3A6A_P_2 + 1) -#define VEX_LEN_3A6E_P_2 (VEX_LEN_3A6B_P_2 + 1) -#define VEX_LEN_3A6F_P_2 (VEX_LEN_3A6E_P_2 + 1) -#define VEX_LEN_3A7A_P_2 (VEX_LEN_3A6F_P_2 + 1) -#define VEX_LEN_3A7B_P_2 (VEX_LEN_3A7A_P_2 + 1) -#define VEX_LEN_3A7E_P_2 (VEX_LEN_3A7B_P_2 + 1) -#define VEX_LEN_3A7F_P_2 (VEX_LEN_3A7E_P_2 + 1) -#define VEX_LEN_3ADF_P_2 (VEX_LEN_3A7F_P_2 + 1) +enum +{ + VEX_W_10_P_0 = 0, + VEX_W_10_P_1, + VEX_W_10_P_2, + VEX_W_10_P_3, + VEX_W_11_P_0, + VEX_W_11_P_1, + VEX_W_11_P_2, + VEX_W_11_P_3, + VEX_W_12_P_0_M_0, + VEX_W_12_P_0_M_1, + VEX_W_12_P_1, + VEX_W_12_P_2, + VEX_W_12_P_3, + VEX_W_13_M_0, + VEX_W_14, + VEX_W_15, + VEX_W_16_P_0_M_0, + VEX_W_16_P_0_M_1, + VEX_W_16_P_1, + VEX_W_16_P_2, + VEX_W_17_M_0, + VEX_W_28, + VEX_W_29, + VEX_W_2B_M_0, + VEX_W_2E_P_0, + VEX_W_2E_P_2, + VEX_W_2F_P_0, + VEX_W_2F_P_2, + VEX_W_50_M_0, + VEX_W_51_P_0, + VEX_W_51_P_1, + VEX_W_51_P_2, + VEX_W_51_P_3, + VEX_W_52_P_0, + VEX_W_52_P_1, + VEX_W_53_P_0, + VEX_W_53_P_1, + VEX_W_58_P_0, + VEX_W_58_P_1, + VEX_W_58_P_2, + VEX_W_58_P_3, + VEX_W_59_P_0, + VEX_W_59_P_1, + VEX_W_59_P_2, + VEX_W_59_P_3, + VEX_W_5A_P_0, + VEX_W_5A_P_1, + VEX_W_5A_P_3, + VEX_W_5B_P_0, + VEX_W_5B_P_1, + VEX_W_5B_P_2, + VEX_W_5C_P_0, + VEX_W_5C_P_1, + VEX_W_5C_P_2, + VEX_W_5C_P_3, + VEX_W_5D_P_0, + VEX_W_5D_P_1, + VEX_W_5D_P_2, + VEX_W_5D_P_3, + VEX_W_5E_P_0, + VEX_W_5E_P_1, + VEX_W_5E_P_2, + VEX_W_5E_P_3, + VEX_W_5F_P_0, + VEX_W_5F_P_1, + VEX_W_5F_P_2, + VEX_W_5F_P_3, + VEX_W_60_P_2, + VEX_W_61_P_2, + VEX_W_62_P_2, + VEX_W_63_P_2, + VEX_W_64_P_2, + VEX_W_65_P_2, + VEX_W_66_P_2, + VEX_W_67_P_2, + VEX_W_68_P_2, + VEX_W_69_P_2, + VEX_W_6A_P_2, + VEX_W_6B_P_2, + VEX_W_6C_P_2, + VEX_W_6D_P_2, + VEX_W_6F_P_1, + VEX_W_6F_P_2, + VEX_W_70_P_1, + VEX_W_70_P_2, + VEX_W_70_P_3, + VEX_W_71_R_2_P_2, + VEX_W_71_R_4_P_2, + VEX_W_71_R_6_P_2, + VEX_W_72_R_2_P_2, + VEX_W_72_R_4_P_2, + VEX_W_72_R_6_P_2, + VEX_W_73_R_2_P_2, + VEX_W_73_R_3_P_2, + VEX_W_73_R_6_P_2, + VEX_W_73_R_7_P_2, + VEX_W_74_P_2, + VEX_W_75_P_2, + VEX_W_76_P_2, + VEX_W_77_P_0, + VEX_W_7C_P_2, + VEX_W_7C_P_3, + VEX_W_7D_P_2, + VEX_W_7D_P_3, + VEX_W_7E_P_1, + VEX_W_7F_P_1, + VEX_W_7F_P_2, + VEX_W_AE_R_2_M_0, + VEX_W_AE_R_3_M_0, + VEX_W_C2_P_0, + VEX_W_C2_P_1, + VEX_W_C2_P_2, + VEX_W_C2_P_3, + VEX_W_C4_P_2, + VEX_W_C5_P_2, + VEX_W_D0_P_2, + VEX_W_D0_P_3, + VEX_W_D1_P_2, + VEX_W_D2_P_2, + VEX_W_D3_P_2, + VEX_W_D4_P_2, + VEX_W_D5_P_2, + VEX_W_D6_P_2, + VEX_W_D7_P_2_M_1, + VEX_W_D8_P_2, + VEX_W_D9_P_2, + VEX_W_DA_P_2, + VEX_W_DB_P_2, + VEX_W_DC_P_2, + VEX_W_DD_P_2, + VEX_W_DE_P_2, + VEX_W_DF_P_2, + VEX_W_E0_P_2, + VEX_W_E1_P_2, + VEX_W_E2_P_2, + VEX_W_E3_P_2, + VEX_W_E4_P_2, + VEX_W_E5_P_2, + VEX_W_E6_P_1, + VEX_W_E6_P_2, + VEX_W_E6_P_3, + VEX_W_E7_P_2_M_0, + VEX_W_E8_P_2, + VEX_W_E9_P_2, + VEX_W_EA_P_2, + VEX_W_EB_P_2, + VEX_W_EC_P_2, + VEX_W_ED_P_2, + VEX_W_EE_P_2, + VEX_W_EF_P_2, + VEX_W_F0_P_3_M_0, + VEX_W_F1_P_2, + VEX_W_F2_P_2, + VEX_W_F3_P_2, + VEX_W_F4_P_2, + VEX_W_F5_P_2, + VEX_W_F6_P_2, + VEX_W_F7_P_2, + VEX_W_F8_P_2, + VEX_W_F9_P_2, + VEX_W_FA_P_2, + VEX_W_FB_P_2, + VEX_W_FC_P_2, + VEX_W_FD_P_2, + VEX_W_FE_P_2, + VEX_W_3800_P_2, + VEX_W_3801_P_2, + VEX_W_3802_P_2, + VEX_W_3803_P_2, + VEX_W_3804_P_2, + VEX_W_3805_P_2, + VEX_W_3806_P_2, + VEX_W_3807_P_2, + VEX_W_3808_P_2, + VEX_W_3809_P_2, + VEX_W_380A_P_2, + VEX_W_380B_P_2, + VEX_W_380C_P_2, + VEX_W_380D_P_2, + VEX_W_380E_P_2, + VEX_W_380F_P_2, + VEX_W_3817_P_2, + VEX_W_3818_P_2_M_0, + VEX_W_3819_P_2_M_0, + VEX_W_381A_P_2_M_0, + VEX_W_381C_P_2, + VEX_W_381D_P_2, + VEX_W_381E_P_2, + VEX_W_3820_P_2, + VEX_W_3821_P_2, + VEX_W_3822_P_2, + VEX_W_3823_P_2, + VEX_W_3824_P_2, + VEX_W_3825_P_2, + VEX_W_3828_P_2, + VEX_W_3829_P_2, + VEX_W_382A_P_2_M_0, + VEX_W_382B_P_2, + VEX_W_382C_P_2_M_0, + VEX_W_382D_P_2_M_0, + VEX_W_382E_P_2_M_0, + VEX_W_382F_P_2_M_0, + VEX_W_3830_P_2, + VEX_W_3831_P_2, + VEX_W_3832_P_2, + VEX_W_3833_P_2, + VEX_W_3834_P_2, + VEX_W_3835_P_2, + VEX_W_3837_P_2, + VEX_W_3838_P_2, + VEX_W_3839_P_2, + VEX_W_383A_P_2, + VEX_W_383B_P_2, + VEX_W_383C_P_2, + VEX_W_383D_P_2, + VEX_W_383E_P_2, + VEX_W_383F_P_2, + VEX_W_3840_P_2, + VEX_W_3841_P_2, + VEX_W_38DB_P_2, + VEX_W_38DC_P_2, + VEX_W_38DD_P_2, + VEX_W_38DE_P_2, + VEX_W_38DF_P_2, + VEX_W_3A04_P_2, + VEX_W_3A05_P_2, + VEX_W_3A06_P_2, + VEX_W_3A08_P_2, + VEX_W_3A09_P_2, + VEX_W_3A0A_P_2, + VEX_W_3A0B_P_2, + VEX_W_3A0C_P_2, + VEX_W_3A0D_P_2, + VEX_W_3A0E_P_2, + VEX_W_3A0F_P_2, + VEX_W_3A14_P_2, + VEX_W_3A15_P_2, + VEX_W_3A18_P_2, + VEX_W_3A19_P_2, + VEX_W_3A20_P_2, + VEX_W_3A21_P_2, + VEX_W_3A40_P_2, + VEX_W_3A41_P_2, + VEX_W_3A42_P_2, + VEX_W_3A44_P_2, + VEX_W_3A48_P_2, + VEX_W_3A49_P_2, + VEX_W_3A4A_P_2, + VEX_W_3A4B_P_2, + VEX_W_3A4C_P_2, + VEX_W_3A60_P_2, + VEX_W_3A61_P_2, + VEX_W_3A62_P_2, + VEX_W_3A63_P_2, + VEX_W_3ADF_P_2 +}; typedef void (*op_rtn) (int bytemode, int sizeflag); @@ -1307,9 +1641,12 @@ struct dis386 { 2 upper case letter macros: "XY" => print 'x' or 'y' if no register operands or suffix_always is true. - 'XW' => print 's', 'd' depending on the VEX.W bit (for FMA) - 'LQ' => print 'l' ('d' in Intel mode) or 'q' for memory operand + "XW" => print 's', 'd' depending on the VEX.W bit (for FMA) + "LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand or suffix_always is true + "LB" => print "abs" in 64bit mode and behave as 'B' otherwise + "LS" => print "abs" in 64bit mode and behave as 'S' otherwise + "LV" => print "abs" for 64bit operand and behave as 'S' otherwise Many of the above letters print nothing in Intel mode. See "putop" for the details. @@ -1335,7 +1672,7 @@ static const struct dis386 dis386[] = { { "orB", { AL, Ib } }, { "orS", { eAX, Iv } }, { X86_64_TABLE (X86_64_0D) }, - { "(bad)", { XX } }, /* 0x0f extended opcode escape */ + { Bad_Opcode }, /* 0x0f extended opcode escape */ /* 10 */ { "adcB", { Eb, Gb } }, { "adcS", { Ev, Gv } }, @@ -1361,7 +1698,7 @@ static const struct dis386 dis386[] = { { "andS", { Gv, EvS } }, { "andB", { AL, Ib } }, { "andS", { eAX, Iv } }, - { "(bad)", { XX } }, /* SEG ES prefix */ + { Bad_Opcode }, /* SEG ES prefix */ { X86_64_TABLE (X86_64_27) }, /* 28 */ { "subB", { Eb, Gb } }, @@ -1370,7 +1707,7 @@ static const struct dis386 dis386[] = { { "subS", { Gv, EvS } }, { "subB", { AL, Ib } }, { "subS", { eAX, Iv } }, - { "(bad)", { XX } }, /* SEG CS prefix */ + { Bad_Opcode }, /* SEG CS prefix */ { X86_64_TABLE (X86_64_2F) }, /* 30 */ { "xorB", { Eb, Gb } }, @@ -1379,7 +1716,7 @@ static const struct dis386 dis386[] = { { "xorS", { Gv, EvS } }, { "xorB", { AL, Ib } }, { "xorS", { eAX, Iv } }, - { "(bad)", { XX } }, /* SEG SS prefix */ + { Bad_Opcode }, /* SEG SS prefix */ { X86_64_TABLE (X86_64_37) }, /* 38 */ { "cmpB", { Eb, Gb } }, @@ -1388,7 +1725,7 @@ static const struct dis386 dis386[] = { { "cmpS", { Gv, EvS } }, { "cmpB", { AL, Ib } }, { "cmpS", { eAX, Iv } }, - { "(bad)", { XX } }, /* SEG DS prefix */ + { Bad_Opcode }, /* SEG DS prefix */ { X86_64_TABLE (X86_64_3F) }, /* 40 */ { "inc{S|}", { RMeAX } }, @@ -1431,10 +1768,10 @@ static const struct dis386 dis386[] = { { X86_64_TABLE (X86_64_61) }, { X86_64_TABLE (X86_64_62) }, { X86_64_TABLE (X86_64_63) }, - { "(bad)", { XX } }, /* seg fs */ - { "(bad)", { XX } }, /* seg gs */ - { "(bad)", { XX } }, /* op size prefix */ - { "(bad)", { XX } }, /* adr size prefix */ + { Bad_Opcode }, /* seg fs */ + { Bad_Opcode }, /* seg gs */ + { Bad_Opcode }, /* op size prefix */ + { Bad_Opcode }, /* adr size prefix */ /* 68 */ { "pushT", { Iq } }, { "imulS", { Gv, Ev, Iv } }, @@ -1465,7 +1802,7 @@ static const struct dis386 dis386[] = { /* 80 */ { REG_TABLE (REG_80) }, { REG_TABLE (REG_81) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { REG_TABLE (REG_82) }, { "testB", { Eb, Gb } }, { "testS", { Ev, Gv } }, @@ -1493,16 +1830,16 @@ static const struct dis386 dis386[] = { { "cW{t|}R", { XX } }, { "cR{t|}O", { XX } }, { X86_64_TABLE (X86_64_9A) }, - { "(bad)", { XX } }, /* fwait */ + { Bad_Opcode }, /* fwait */ { "pushfT", { XX } }, { "popfT", { XX } }, { "sahf", { XX } }, { "lahf", { XX } }, /* a0 */ - { "movB", { AL, Ob } }, - { "movS", { eAX, Ov } }, - { "movB", { Ob, AL } }, - { "movS", { Ov, eAX } }, + { "mov%LB", { AL, Ob } }, + { "mov%LS", { eAX, Ov } }, + { "mov%LB", { Ob, AL } }, + { "mov%LS", { Ov, eAX } }, { "movs{b|}", { Ybr, Xb } }, { "movs{R|}", { Yvr, Xv } }, { "cmps{b|}", { Xb, Yb } }, @@ -1526,14 +1863,14 @@ static const struct dis386 dis386[] = { { "movB", { RMDH, Ib } }, { "movB", { RMBH, Ib } }, /* b8 */ - { "movS", { RMeAX, Iv64 } }, - { "movS", { RMeCX, Iv64 } }, - { "movS", { RMeDX, Iv64 } }, - { "movS", { RMeBX, Iv64 } }, - { "movS", { RMeSP, Iv64 } }, - { "movS", { RMeBP, Iv64 } }, - { "movS", { RMeSI, Iv64 } }, - { "movS", { RMeDI, Iv64 } }, + { "mov%LV", { RMeAX, Iv64 } }, + { "mov%LV", { RMeCX, Iv64 } }, + { "mov%LV", { RMeDX, Iv64 } }, + { "mov%LV", { RMeBX, Iv64 } }, + { "mov%LV", { RMeSP, Iv64 } }, + { "mov%LV", { RMeBP, Iv64 } }, + { "mov%LV", { RMeSI, Iv64 } }, + { "mov%LV", { RMeDI, Iv64 } }, /* c0 */ { REG_TABLE (REG_C0) }, { REG_TABLE (REG_C1) }, @@ -1559,7 +1896,7 @@ static const struct dis386 dis386[] = { { REG_TABLE (REG_D3) }, { X86_64_TABLE (X86_64_D4) }, { X86_64_TABLE (X86_64_D5) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "xlat", { DSBX } }, /* d8 */ { FLOAT }, @@ -1589,10 +1926,10 @@ static const struct dis386 dis386[] = { { "outB", { indirDX, AL } }, { "outG", { indirDX, zAX } }, /* f0 */ - { "(bad)", { XX } }, /* lock prefix */ + { Bad_Opcode }, /* lock prefix */ { "icebp", { XX } }, - { "(bad)", { XX } }, /* repne */ - { "(bad)", { XX } }, /* repz */ + { Bad_Opcode }, /* repne */ + { Bad_Opcode }, /* repz */ { "hlt", { XX } }, { "cmc", { XX } }, { REG_TABLE (REG_F6) }, @@ -1614,16 +1951,16 @@ static const struct dis386 dis386_twobyte[] = { { REG_TABLE (REG_0F01 ) }, { "larS", { Gv, Ew } }, { "lslS", { Gv, Ew } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "syscall", { XX } }, { "clts", { XX } }, { "sysretP", { XX } }, /* 08 */ { "invd", { XX } }, { "wbinvd", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "ud2a", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { REG_TABLE (REG_0F0D) }, { "femms", { XX } }, { "", { MX, EM, OPSUF } }, /* See OP_3DNowSuffix. */ @@ -1651,9 +1988,9 @@ static const struct dis386 dis386_twobyte[] = { { MOD_TABLE (MOD_0F22) }, { MOD_TABLE (MOD_0F23) }, { MOD_TABLE (MOD_0F24) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F26) }, - { "(bad)", { XX } }, + { Bad_Opcode }, /* 28 */ { "movapX", { XM, EXx } }, { "movapX", { EXxS, XM } }, @@ -1670,17 +2007,17 @@ static const struct dis386 dis386_twobyte[] = { { "rdpmc", { XX } }, { "sysenter", { XX } }, { "sysexit", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "getsec", { XX } }, /* 38 */ { THREE_BYTE_TABLE (THREE_BYTE_0F38) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { THREE_BYTE_TABLE (THREE_BYTE_0F3A) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 40 */ { "cmovoS", { Gv, Ev } }, { "cmovnoS", { Gv, Ev } }, @@ -1748,7 +2085,7 @@ static const struct dis386 dis386_twobyte[] = { { PREFIX_TABLE (PREFIX_0F78) }, { PREFIX_TABLE (PREFIX_0F79) }, { THREE_BYTE_TABLE (THREE_BYTE_0F7A) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F7C) }, { PREFIX_TABLE (PREFIX_0F7D) }, { PREFIX_TABLE (PREFIX_0F7E) }, @@ -1896,7 +2233,7 @@ static const struct dis386 dis386_twobyte[] = { { "paddb", { MX, EM } }, { "paddw", { MX, EM } }, { "paddd", { MX, EM } }, - { "(bad)", { XX } }, + { Bad_Opcode }, }; static const unsigned char onebyte_has_modrm[256] = { @@ -1952,11 +2289,17 @@ static char scratchbuf[100]; static unsigned char *start_codep; static unsigned char *insn_codep; static unsigned char *codep; -static const char *lock_prefix; -static const char *data_prefix; -static const char *addr_prefix; -static const char *repz_prefix; -static const char *repnz_prefix; +static int last_lock_prefix; +static int last_repz_prefix; +static int last_repnz_prefix; +static int last_data_prefix; +static int last_addr_prefix; +static int last_rex_prefix; +static int last_seg_prefix; +#define MAX_CODE_LENGTH 15 +/* We can up to 14 prefixes since the maximum instruction length is + 15bytes. */ +static int all_prefixes[MAX_CODE_LENGTH - 1]; static disassemble_info *the_info; static struct { @@ -1966,6 +2309,13 @@ static struct } modrm; static unsigned char need_modrm; +static struct + { + int scale; + int index; + int base; + } +sib; static struct { int register_specifier; @@ -2055,6 +2405,44 @@ static const char *att_index16[] = { "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx" }; +static const char **names_mm; +static const char *intel_names_mm[] = { + "mm0", "mm1", "mm2", "mm3", + "mm4", "mm5", "mm6", "mm7" +}; +static const char *att_names_mm[] = { + "%mm0", "%mm1", "%mm2", "%mm3", + "%mm4", "%mm5", "%mm6", "%mm7" +}; + +static const char **names_xmm; +static const char *intel_names_xmm[] = { + "xmm0", "xmm1", "xmm2", "xmm3", + "xmm4", "xmm5", "xmm6", "xmm7", + "xmm8", "xmm9", "xmm10", "xmm11", + "xmm12", "xmm13", "xmm14", "xmm15" +}; +static const char *att_names_xmm[] = { + "%xmm0", "%xmm1", "%xmm2", "%xmm3", + "%xmm4", "%xmm5", "%xmm6", "%xmm7", + "%xmm8", "%xmm9", "%xmm10", "%xmm11", + "%xmm12", "%xmm13", "%xmm14", "%xmm15" +}; + +static const char **names_ymm; +static const char *intel_names_ymm[] = { + "ymm0", "ymm1", "ymm2", "ymm3", + "ymm4", "ymm5", "ymm6", "ymm7", + "ymm8", "ymm9", "ymm10", "ymm11", + "ymm12", "ymm13", "ymm14", "ymm15" +}; +static const char *att_names_ymm[] = { + "%ymm0", "%ymm1", "%ymm2", "%ymm3", + "%ymm4", "%ymm5", "%ymm6", "%ymm7", + "%ymm8", "%ymm9", "%ymm10", "%ymm11", + "%ymm12", "%ymm13", "%ymm14", "%ymm15" +}; + static const struct dis386 reg_table[][8] = { /* REG_80 */ { @@ -2092,13 +2480,11 @@ static const struct dis386 reg_table[][8] = { /* REG_8F */ { { "popU", { stackEv } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { XOP_8F_TABLE (XOP_09) }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { XOP_8F_TABLE (XOP_09) }, }, /* REG_C0 */ { @@ -2108,7 +2494,7 @@ static const struct dis386 reg_table[][8] = { { "rcrA", { Eb, Ib } }, { "shlA", { Eb, Ib } }, { "shrA", { Eb, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "sarA", { Eb, Ib } }, }, /* REG_C1 */ @@ -2119,30 +2505,16 @@ static const struct dis386 reg_table[][8] = { { "rcrQ", { Ev, Ib } }, { "shlQ", { Ev, Ib } }, { "shrQ", { Ev, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "sarQ", { Ev, Ib } }, }, /* REG_C6 */ { { "movA", { Eb, Ib } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* REG_C7 */ { { "movQ", { Ev, Iv } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* REG_D0 */ { @@ -2152,7 +2524,7 @@ static const struct dis386 reg_table[][8] = { { "rcrA", { Eb, I1 } }, { "shlA", { Eb, I1 } }, { "shrA", { Eb, I1 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "sarA", { Eb, I1 } }, }, /* REG_D1 */ @@ -2163,7 +2535,7 @@ static const struct dis386 reg_table[][8] = { { "rcrQ", { Ev, I1 } }, { "shlQ", { Ev, I1 } }, { "shrQ", { Ev, I1 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "sarQ", { Ev, I1 } }, }, /* REG_D2 */ @@ -2174,7 +2546,7 @@ static const struct dis386 reg_table[][8] = { { "rcrA", { Eb, CL } }, { "shlA", { Eb, CL } }, { "shrA", { Eb, CL } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "sarA", { Eb, CL } }, }, /* REG_D3 */ @@ -2185,13 +2557,13 @@ static const struct dis386 reg_table[][8] = { { "rcrQ", { Ev, CL } }, { "shlQ", { Ev, CL } }, { "shrQ", { Ev, CL } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "sarQ", { Ev, CL } }, }, /* REG_F6 */ { { "testA", { Eb, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "notA", { Eb } }, { "negA", { Eb } }, { "mulA", { Eb } }, /* Don't print the implicit %al register, */ @@ -2202,7 +2574,7 @@ static const struct dis386 reg_table[][8] = { /* REG_F7 */ { { "testQ", { Ev, Iv } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "notQ", { Ev } }, { "negQ", { Ev } }, { "mulQ", { Ev } }, /* Don't print the implicit register. */ @@ -2214,12 +2586,6 @@ static const struct dis386 reg_table[][8] = { { { "incA", { Eb } }, { "decA", { Eb } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* REG_FF */ { @@ -2230,7 +2596,7 @@ static const struct dis386 reg_table[][8] = { { "jmpT", { indirEv } }, { "JjmpT", { indirEp } }, { "pushU", { stackEv } }, - { "(bad)", { XX } }, + { Bad_Opcode }, }, /* REG_0F00 */ { @@ -2240,8 +2606,8 @@ static const struct dis386 reg_table[][8] = { { "ltr", { Ew } }, { "verr", { Ew } }, { "verw", { Ew } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, }, /* REG_0F01 */ { @@ -2250,7 +2616,7 @@ static const struct dis386 reg_table[][8] = { { MOD_TABLE (MOD_0F01_REG_2) }, { MOD_TABLE (MOD_0F01_REG_3) }, { "smswD", { Sv } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "lmsw", { Ew } }, { MOD_TABLE (MOD_0F01_REG_7) }, }, @@ -2258,12 +2624,6 @@ static const struct dis386 reg_table[][8] = { { { "prefetch", { Eb } }, { "prefetchw", { Eb } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* REG_0F18 */ { @@ -2271,41 +2631,35 @@ static const struct dis386 reg_table[][8] = { { MOD_TABLE (MOD_0F18_REG_1) }, { MOD_TABLE (MOD_0F18_REG_2) }, { MOD_TABLE (MOD_0F18_REG_3) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* REG_0F71 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F71_REG_2) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F71_REG_4) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F71_REG_6) }, - { "(bad)", { XX } }, }, /* REG_0F72 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F72_REG_2) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F72_REG_4) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F72_REG_6) }, - { "(bad)", { XX } }, }, /* REG_0F73 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F73_REG_2) }, { MOD_TABLE (MOD_0F73_REG_3) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F73_REG_6) }, { MOD_TABLE (MOD_0F73_REG_7) }, }, @@ -2314,11 +2668,6 @@ static const struct dis386 reg_table[][8] = { { "montmul", { { OP_0f07, 0 } } }, { "xsha1", { { OP_0f07, 0 } } }, { "xsha256", { { OP_0f07, 0 } } }, - { "(bad)", { { OP_0f07, 0 } } }, - { "(bad)", { { OP_0f07, 0 } } }, - { "(bad)", { { OP_0f07, 0 } } }, - { "(bad)", { { OP_0f07, 0 } } }, - { "(bad)", { { OP_0f07, 0 } } }, }, /* REG_0FA7 */ { @@ -2328,8 +2677,6 @@ static const struct dis386 reg_table[][8] = { { "xcrypt-ctr", { { OP_0f07, 0 } } }, { "xcrypt-cfb", { { OP_0f07, 0 } } }, { "xcrypt-ofb", { { OP_0f07, 0 } } }, - { "(bad)", { { OP_0f07, 0 } } }, - { "(bad)", { { OP_0f07, 0 } } }, }, /* REG_0FAE */ { @@ -2344,10 +2691,10 @@ static const struct dis386 reg_table[][8] = { }, /* REG_0FBA */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { "btQ", { Ev, Ib } }, { "btsQ", { Ev, Ib } }, { "btrQ", { Ev, Ib } }, @@ -2355,58 +2702,62 @@ static const struct dis386 reg_table[][8] = { }, /* REG_0FC7 */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_0FC7_REG_6) }, { MOD_TABLE (MOD_0FC7_REG_7) }, }, /* REG_VEX_71 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_71_REG_2) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_71_REG_4) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_71_REG_6) }, - { "(bad)", { XX } }, }, /* REG_VEX_72 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_72_REG_2) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_72_REG_4) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_72_REG_6) }, - { "(bad)", { XX } }, }, /* REG_VEX_73 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_73_REG_2) }, { MOD_TABLE (MOD_VEX_73_REG_3) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_73_REG_6) }, { MOD_TABLE (MOD_VEX_73_REG_7) }, }, /* REG_VEX_AE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_AE_REG_2) }, { MOD_TABLE (MOD_VEX_AE_REG_3) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + }, + /* REG_XOP_LWPCB */ + { + { "llwpcb", { { OP_LWPCB_E, 0 } } }, + { "slwpcb", { { OP_LWPCB_E, 0 } } }, + }, + /* REG_XOP_LWP */ + { + { "lwpins", { { OP_LWP_E, 0 }, Ed, Iq } }, + { "lwpval", { { OP_LWP_E, 0 }, Ed, Iq } }, }, }; @@ -2416,7 +2767,6 @@ static const struct dis386 prefix_table[][4] = { { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, { "pause", { XX } }, { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, - { "(bad)", { XX } }, }, /* PREFIX_0F10 */ @@ -2448,7 +2798,6 @@ static const struct dis386 prefix_table[][4] = { { MOD_TABLE (MOD_0F16_PREFIX_0) }, { "movshdup", { XM, EXx } }, { "movhpd", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F2A */ @@ -2486,17 +2835,15 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F2E */ { { "ucomiss",{ XM, EXd } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "ucomisd",{ XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F2F */ { { "comiss", { XM, EXd } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "comisd", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F51 */ @@ -2511,16 +2858,12 @@ static const struct dis386 prefix_table[][4] = { { { "rsqrtps",{ XM, EXx } }, { "rsqrtss",{ XM, EXd } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* PREFIX_0F53 */ { { "rcpps", { XM, EXx } }, { "rcpss", { XM, EXd } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* PREFIX_0F58 */ @@ -2552,7 +2895,6 @@ static const struct dis386 prefix_table[][4] = { { "cvtdq2ps", { XM, EXx } }, { "cvttps2dq", { XM, EXx } }, { "cvtps2dq", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F5C */ @@ -2590,41 +2932,36 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F60 */ { { "punpcklbw",{ MX, EMd } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "punpcklbw",{ MX, EMx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F61 */ { { "punpcklwd",{ MX, EMd } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "punpcklwd",{ MX, EMx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F62 */ { { "punpckldq",{ MX, EMd } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "punpckldq",{ MX, EMx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F6C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "punpcklqdq", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F6D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "punpckhqdq", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F6F */ @@ -2632,7 +2969,6 @@ static const struct dis386 prefix_table[][4] = { { "movq", { MX, EM } }, { "movdqu", { XM, EXx } }, { "movdqa", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F70 */ @@ -2645,24 +2981,22 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F73_REG_3 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "psrldq", { XS, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F73_REG_7 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pslldq", { XS, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F78 */ { {"vmread", { Em, Gm } }, - {"(bad)", { XX } }, + { Bad_Opcode }, {"extrq", { XS, Ib, Ib } }, {"insertq", { XM, XS, Ib, Ib } }, }, @@ -2670,23 +3004,23 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F79 */ { {"vmwrite", { Gm, Em } }, - {"(bad)", { XX } }, + { Bad_Opcode }, {"extrq", { XM, XS } }, {"insertq", { XM, XS } }, }, /* PREFIX_0F7C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "haddpd", { XM, EXx } }, { "haddps", { XM, EXx } }, }, /* PREFIX_0F7D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "hsubpd", { XM, EXx } }, { "hsubps", { XM, EXx } }, }, @@ -2696,7 +3030,6 @@ static const struct dis386 prefix_table[][4] = { { "movK", { Edq, MX } }, { "movq", { XM, EXq } }, { "movK", { Edq, XM } }, - { "(bad)", { XX } }, }, /* PREFIX_0F7F */ @@ -2704,15 +3037,36 @@ static const struct dis386 prefix_table[][4] = { { "movq", { EMS, MX } }, { "movdqu", { EXxS, XM } }, { "movdqa", { EXxS, XM } }, - { "(bad)", { XX } }, + }, + + /* PREFIX_0FAE_REG_0 */ + { + { Bad_Opcode }, + { "rdfsbase", { Ev } }, + }, + + /* PREFIX_0FAE_REG_1 */ + { + { Bad_Opcode }, + { "rdgsbase", { Ev } }, + }, + + /* PREFIX_0FAE_REG_2 */ + { + { Bad_Opcode }, + { "wrfsbase", { Ev } }, + }, + + /* PREFIX_0FAE_REG_3 */ + { + { Bad_Opcode }, + { "wrgsbase", { Ev } }, }, /* PREFIX_0FB8 */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { "popcntS", { Gv, Ev } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* PREFIX_0FBD */ @@ -2720,7 +3074,6 @@ static const struct dis386 prefix_table[][4] = { { "bsrS", { Gv, Ev } }, { "lzcntS", { Gv, Ev } }, { "bsrS", { Gv, Ev } }, - { "(bad)", { XX } }, }, /* PREFIX_0FC2 */ @@ -2734,9 +3087,6 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0FC3 */ { { "movntiS", { Ma, Gv } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* PREFIX_0FC7_REG_6 */ @@ -2744,20 +3094,19 @@ static const struct dis386 prefix_table[][4] = { { "vmptrld",{ Mq } }, { "vmxon", { Mq } }, { "vmclear",{ Mq } }, - { "(bad)", { XX } }, }, /* PREFIX_0FD0 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "addsubpd", { XM, EXx } }, { "addsubps", { XM, EXx } }, }, /* PREFIX_0FD6 */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { "movq2dq",{ XM, MS } }, { "movq", { EXqS, XM } }, { "movdq2q",{ MX, XS } }, @@ -2765,7 +3114,7 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0FE6 */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { "cvtdq2pd", { XM, EXq } }, { "cvttpd2dq", { XM, EXx } }, { "cvtpd2dq", { XM, EXx } }, @@ -2774,335 +3123,295 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0FE7 */ { { "movntq", { Mq, MX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { MOD_TABLE (MOD_0FE7_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_0FF0 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_0FF0_PREFIX_3) }, }, /* PREFIX_0FF7 */ { { "maskmovq", { MX, MS } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "maskmovdqu", { XM, XS } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3810 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pblendvb", { XM, EXx, XMM0 } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3814 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "blendvps", { XM, EXx, XMM0 } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3815 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "blendvpd", { XM, EXx, XMM0 } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3817 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "ptest", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3820 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovsxbw", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3821 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovsxbd", { XM, EXd } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3822 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovsxbq", { XM, EXw } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3823 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovsxwd", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3824 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovsxwq", { XM, EXd } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3825 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovsxdq", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3828 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmuldq", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3829 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pcmpeqq", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F382A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_0F382A_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_0F382B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "packusdw", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3830 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovzxbw", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3831 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovzxbd", { XM, EXd } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3832 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovzxbq", { XM, EXw } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3833 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovzxwd", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3834 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovzxwq", { XM, EXd } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3835 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmovzxdq", { XM, EXq } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3837 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pcmpgtq", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3838 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pminsb", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3839 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pminsd", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F383A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pminuw", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F383B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pminud", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F383C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmaxsb", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F383D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmaxsd", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F383E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmaxuw", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F383F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmaxud", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3840 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pmulld", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3841 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "phminposuw", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3880 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "invept", { Gm, Mo } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3881 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "invvpid", { Gm, Mo } }, - { "(bad)", { XX } }, }, /* PREFIX_0F38DB */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "aesimc", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F38DC */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "aesenc", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F38DD */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "aesenclast", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F38DE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "aesdec", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F38DF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "aesdeclast", { XM, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_0F38F0 */ { { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } }, { "crc32", { Gdq, { CRC32_Fixup, b_mode } } }, }, @@ -3110,310 +3419,280 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F38F1 */ { { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } }, { "crc32", { Gdq, { CRC32_Fixup, v_mode } } }, }, /* PREFIX_0F3A08 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "roundps", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A09 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "roundpd", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A0A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "roundss", { XM, EXd, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A0B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "roundsd", { XM, EXq, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A0C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "blendps", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A0D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "blendpd", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A0E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pblendw", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A14 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pextrb", { Edqb, XM, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A15 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pextrw", { Edqw, XM, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A16 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pextrK", { Edq, XM, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A17 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "extractps", { Edqd, XM, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A20 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pinsrb", { XM, Edqb, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A21 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "insertps", { XM, EXd, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A22 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pinsrK", { XM, Edq, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A40 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "dpps", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A41 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "dppd", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A42 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "mpsadbw", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A44 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pclmulqdq", { XM, EXx, PCLMUL } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A60 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pcmpestrm", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A61 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pcmpestri", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A62 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pcmpistrm", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3A63 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "pcmpistri", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_0F3ADF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "aeskeygenassist", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_10 */ { - { "vmovups", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_10_P_0) }, { VEX_LEN_TABLE (VEX_LEN_10_P_1) }, - { "vmovupd", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_10_P_2) }, { VEX_LEN_TABLE (VEX_LEN_10_P_3) }, }, /* PREFIX_VEX_11 */ { - { "vmovups", { EXxS, XM } }, + { VEX_W_TABLE (VEX_W_11_P_0) }, { VEX_LEN_TABLE (VEX_LEN_11_P_1) }, - { "vmovupd", { EXxS, XM } }, + { VEX_W_TABLE (VEX_W_11_P_2) }, { VEX_LEN_TABLE (VEX_LEN_11_P_3) }, }, /* PREFIX_VEX_12 */ { { MOD_TABLE (MOD_VEX_12_PREFIX_0) }, - { "vmovsldup", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_12_P_1) }, { VEX_LEN_TABLE (VEX_LEN_12_P_2) }, - { "vmovddup", { XM, EXymmq } }, + { VEX_W_TABLE (VEX_W_12_P_3) }, }, /* PREFIX_VEX_16 */ { { MOD_TABLE (MOD_VEX_16_PREFIX_0) }, - { "vmovshdup", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_16_P_1) }, { VEX_LEN_TABLE (VEX_LEN_16_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_2A */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2A_P_1) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2A_P_3) }, }, /* PREFIX_VEX_2C */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2C_P_1) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2C_P_3) }, }, /* PREFIX_VEX_2D */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2D_P_1) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2D_P_3) }, }, /* PREFIX_VEX_2E */ { { VEX_LEN_TABLE (VEX_LEN_2E_P_0) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_2F */ { { VEX_LEN_TABLE (VEX_LEN_2F_P_0) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_2F_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_51 */ { - { "vsqrtps", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_51_P_0) }, { VEX_LEN_TABLE (VEX_LEN_51_P_1) }, - { "vsqrtpd", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_51_P_2) }, { VEX_LEN_TABLE (VEX_LEN_51_P_3) }, }, /* PREFIX_VEX_52 */ { - { "vrsqrtps", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_52_P_0) }, { VEX_LEN_TABLE (VEX_LEN_52_P_1) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_53 */ { - { "vrcpps", { XM, EXx } }, + { VEX_W_TABLE (VEX_W_53_P_0) }, { VEX_LEN_TABLE (VEX_LEN_53_P_1) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_58 */ { - { "vaddps", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_58_P_0) }, { VEX_LEN_TABLE (VEX_LEN_58_P_1) }, - { "vaddpd", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_58_P_2) }, { VEX_LEN_TABLE (VEX_LEN_58_P_3) }, }, /* PREFIX_VEX_59 */ { - { "vmulps", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_59_P_0) }, { VEX_LEN_TABLE (VEX_LEN_59_P_1) }, - { "vmulpd", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_59_P_2) }, { VEX_LEN_TABLE (VEX_LEN_59_P_3) }, }, /* PREFIX_VEX_5A */ { - { "vcvtps2pd", { XM, EXxmmq } }, + { VEX_W_TABLE (VEX_W_5A_P_0) }, { VEX_LEN_TABLE (VEX_LEN_5A_P_1) }, { "vcvtpd2ps%XY", { XMM, EXx } }, { VEX_LEN_TABLE (VEX_LEN_5A_P_3) }, @@ -3421,175 +3700,158 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_VEX_5B */ { - { "vcvtdq2ps", { XM, EXx } }, - { "vcvttps2dq", { XM, EXx } }, - { "vcvtps2dq", { XM, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5B_P_0) }, + { VEX_W_TABLE (VEX_W_5B_P_1) }, + { VEX_W_TABLE (VEX_W_5B_P_2) }, }, /* PREFIX_VEX_5C */ { - { "vsubps", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5C_P_0) }, { VEX_LEN_TABLE (VEX_LEN_5C_P_1) }, - { "vsubpd", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5C_P_2) }, { VEX_LEN_TABLE (VEX_LEN_5C_P_3) }, }, /* PREFIX_VEX_5D */ { - { "vminps", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5D_P_0) }, { VEX_LEN_TABLE (VEX_LEN_5D_P_1) }, - { "vminpd", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5D_P_2) }, { VEX_LEN_TABLE (VEX_LEN_5D_P_3) }, }, /* PREFIX_VEX_5E */ { - { "vdivps", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5E_P_0) }, { VEX_LEN_TABLE (VEX_LEN_5E_P_1) }, - { "vdivpd", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5E_P_2) }, { VEX_LEN_TABLE (VEX_LEN_5E_P_3) }, }, /* PREFIX_VEX_5F */ { - { "vmaxps", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5F_P_0) }, { VEX_LEN_TABLE (VEX_LEN_5F_P_1) }, - { "vmaxpd", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_5F_P_2) }, { VEX_LEN_TABLE (VEX_LEN_5F_P_3) }, }, /* PREFIX_VEX_60 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_60_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_61 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_61_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_62 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_62_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_63 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_63_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_64 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_64_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_65 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_65_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_66 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_66_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_67 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_67_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_68 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_68_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_69 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_69_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_6A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_6A_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_6B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_6B_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_6C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_6C_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_6D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_6D_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_6E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_6E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_6F */ { - { "(bad)", { XX } }, - { "vmovdqu", { XM, EXx } }, - { "vmovdqa", { XM, EXx } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_6F_P_1) }, + { VEX_W_TABLE (VEX_W_6F_P_2) }, }, /* PREFIX_VEX_70 */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_70_P_1) }, { VEX_LEN_TABLE (VEX_LEN_70_P_2) }, { VEX_LEN_TABLE (VEX_LEN_70_P_3) }, @@ -3597,1674 +3859,1500 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_VEX_71_REG_2 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_71_R_2_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_71_REG_4 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_71_R_4_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_71_REG_6 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_71_R_6_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_72_REG_2 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_72_R_2_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_72_REG_4 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_72_R_4_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_72_REG_6 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_72_R_6_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_73_REG_2 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_73_R_2_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_73_REG_3 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_73_R_3_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_73_REG_6 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_73_R_6_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_73_REG_7 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_73_R_7_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_74 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_74_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_75 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_75_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_76 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_76_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_77 */ { - { "", { VZERO } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_77_P_0) }, }, /* PREFIX_VEX_7C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vhaddpd", { XM, Vex, EXx } }, - { "vhaddps", { XM, Vex, EXx } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_7C_P_2) }, + { VEX_W_TABLE (VEX_W_7C_P_3) }, }, /* PREFIX_VEX_7D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vhsubpd", { XM, Vex, EXx } }, - { "vhsubps", { XM, Vex, EXx } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_7D_P_2) }, + { VEX_W_TABLE (VEX_W_7D_P_3) }, }, /* PREFIX_VEX_7E */ { - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_7E_P_1) }, { VEX_LEN_TABLE (VEX_LEN_7E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_7F */ { - { "(bad)", { XX } }, - { "vmovdqu", { EXxS, XM } }, - { "vmovdqa", { EXxS, XM } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_7F_P_1) }, + { VEX_W_TABLE (VEX_W_7F_P_2) }, }, /* PREFIX_VEX_C2 */ { - { "vcmpps", { XM, Vex, EXx, VCMP } }, + { VEX_W_TABLE (VEX_W_C2_P_0) }, { VEX_LEN_TABLE (VEX_LEN_C2_P_1) }, - { "vcmppd", { XM, Vex, EXx, VCMP } }, + { VEX_W_TABLE (VEX_W_C2_P_2) }, { VEX_LEN_TABLE (VEX_LEN_C2_P_3) }, }, /* PREFIX_VEX_C4 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_C4_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_C5 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_C5_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D0 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vaddsubpd", { XM, Vex, EXx } }, - { "vaddsubps", { XM, Vex, EXx } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_D0_P_2) }, + { VEX_W_TABLE (VEX_W_D0_P_3) }, }, /* PREFIX_VEX_D1 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D1_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D2 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D2_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D3 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D3_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D4 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D4_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D5 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D5_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D6 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D6_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D7 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_D7_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D8 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D8_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_D9 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D9_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_DA */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_DA_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_DB */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_DB_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_DC */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_DC_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_DD */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_DD_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_DE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_DE_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_DF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_DF_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E0 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E0_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E1 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E1_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E2 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E2_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E3 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E3_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E4 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E4_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E5 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E5_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E6 */ { - { "(bad)", { XX } }, - { "vcvtdq2pd", { XM, EXxmmq } }, - { "vcvttpd2dq%XY", { XMM, EXx } }, - { "vcvtpd2dq%XY", { XMM, EXx } }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_E6_P_1) }, + { VEX_W_TABLE (VEX_W_E6_P_2) }, + { VEX_W_TABLE (VEX_W_E6_P_3) }, }, /* PREFIX_VEX_E7 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_E7_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E8 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E8_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_E9 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_E9_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_EA */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_EA_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_EB */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_EB_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_EC */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_EC_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_ED */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_ED_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_EE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_EE_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_EF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_EF_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F0 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_F0_PREFIX_3) }, }, /* PREFIX_VEX_F1 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F1_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F2 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F2_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F3 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F3_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F4 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F4_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F5 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F5_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F6 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F6_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F7 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F7_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F8 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F8_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_F9 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_F9_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_FA */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_FA_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_FB */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_FB_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_FC */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_FC_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_FD */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_FD_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_FE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_FE_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3800 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3800_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3801 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3801_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3802 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3802_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3803 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3803_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3804 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3804_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3805 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3805_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3806 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3806_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3807 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3807_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3808 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3808_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3809 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3809_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_380A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_380A_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_380B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_380B_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_380C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vpermilps", { XM, Vex, EXx } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_380C_P_2) }, }, /* PREFIX_VEX_380D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vpermilpd", { XM, Vex, EXx } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_380D_P_2) }, }, /* PREFIX_VEX_380E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vtestps", { XM, EXx } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_380E_P_2) }, }, /* PREFIX_VEX_380F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vtestpd", { XM, EXx } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_380F_P_2) }, + }, + + /* PREFIX_VEX_3813 */ + { + { Bad_Opcode }, + { Bad_Opcode }, + { "vcvtph2ps", { XM, EXxmmq } }, }, /* PREFIX_VEX_3817 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vptest", { XM, EXx } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3817_P_2) }, }, /* PREFIX_VEX_3818 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_3818_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3819 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_3819_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_381A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_381A_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_381C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_381C_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_381D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_381D_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_381E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_381E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3820 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3820_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3821 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3821_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3822 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3822_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3823 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3823_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3824 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3824_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3825 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3825_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3828 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3828_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3829 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3829_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_382A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_382A_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_382B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_382B_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_382C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_382C_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_382D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_382D_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_382E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_382E_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_382F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { MOD_TABLE (MOD_VEX_382F_PREFIX_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3830 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3830_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3831 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3831_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3832 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3832_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3833 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3833_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3834 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3834_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3835 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3835_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3837 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3837_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3838 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3838_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3839 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3839_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_383A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_383A_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_383B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_383B_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_383C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_383C_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_383D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_383D_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_383E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_383E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_383F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_383F_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3840 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3840_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3841 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3841_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3896 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmaddsub132p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3897 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmsubadd132p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3898 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmadd132p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3899 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmadd132s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_389A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmsub132p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_389B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmsub132s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_389C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfnmadd132p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_389D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmadd132s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_389E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfnmsub132p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_389F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmsub132s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38A6 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmaddsub213p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, + { Bad_Opcode }, }, /* PREFIX_VEX_38A7 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmsubadd213p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38A8 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmadd213p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38A9 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmadd213s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38AA */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmsub213p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38AB */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmsub213s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38AC */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfnmadd213p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38AD */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmadd213s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38AE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfnmsub213p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38AF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmsub213s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38B6 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmaddsub231p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38B7 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmsubadd231p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38B8 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmadd231p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38B9 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmadd231s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38BA */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfmsub231p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38BB */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmsub231s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38BC */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfnmadd231p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38BD */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmadd231s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38BE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "vfnmsub231p%XW", { XM, Vex, EXx } }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38BF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmsub231s%XW", { XM, Vex, EXVexWdq } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } }, }, /* PREFIX_VEX_38DB */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_38DB_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38DC */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_38DC_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38DD */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_38DD_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38DE */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_38DE_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_38DF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_38DF_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A04 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vpermilps", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A04_P_2) }, }, /* PREFIX_VEX_3A05 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vpermilpd", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A05_P_2) }, }, /* PREFIX_VEX_3A06 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A06_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A08 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vroundps", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A08_P_2) }, }, /* PREFIX_VEX_3A09 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vroundpd", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A09_P_2) }, }, /* PREFIX_VEX_3A0A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A0A_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A0B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A0B_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A0C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vblendps", { XM, Vex, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A0C_P_2) }, }, /* PREFIX_VEX_3A0D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vblendpd", { XM, Vex, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A0D_P_2) }, }, /* PREFIX_VEX_3A0E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A0E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A0F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A0F_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A14 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A14_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A15 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A15_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A16 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A16_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A17 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A17_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A18 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A18_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A19 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A19_P_2) }, - { "(bad)", { XX } }, + }, + + /* PREFIX_VEX_3A1D */ + { + { Bad_Opcode }, + { Bad_Opcode }, + { "vcvtps2ph", { EXxmmq, XM, Ib } }, }, /* PREFIX_VEX_3A20 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A20_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A21 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A21_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A22 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A22_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A40 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vdpps", { XM, Vex, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A40_P_2) }, }, /* PREFIX_VEX_3A41 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A41_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A42 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A42_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A44 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A44_P_2) }, - { "(bad)", { XX } }, + }, + + /* PREFIX_VEX_3A48 */ + { + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A48_P_2) }, + }, + + /* PREFIX_VEX_3A49 */ + { + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A49_P_2) }, }, /* PREFIX_VEX_3A4A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vblendvps", { XM, Vex, EXx, XMVexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A4A_P_2) }, }, /* PREFIX_VEX_3A4B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vblendvpd", { XM, Vex, EXx, XMVexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A4B_P_2) }, }, /* PREFIX_VEX_3A4C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A4C_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A5C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmaddsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmaddsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A5D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmaddsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmaddsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A5E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmsubaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmsubaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A5F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmsubaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmsubaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A60 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A60_P_2) }, - { "(bad)", { XX } }, + { Bad_Opcode }, }, /* PREFIX_VEX_3A61 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A61_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A62 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A62_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A63 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A63_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A68 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A69 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A6A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A6A_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A6B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A6B_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A6C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A6D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfmsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A6E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A6E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A6F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A6F_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A78 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A79 */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A7A */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A7A_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A7B */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A7B_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A7C */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { Bad_Opcode }, }, /* PREFIX_VEX_3A7D */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "vfnmsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vfnmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, }, /* PREFIX_VEX_3A7E */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A7E_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3A7F */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3A7F_P_2) }, - { "(bad)", { XX } }, }, /* PREFIX_VEX_3ADF */ { - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_3ADF_P_2) }, - { "(bad)", { XX } }, }, }; @@ -5272,85 +5360,71 @@ static const struct dis386 x86_64_table[][2] = { /* X86_64_06 */ { { "push{T|}", { es } }, - { "(bad)", { XX } }, }, /* X86_64_07 */ { { "pop{T|}", { es } }, - { "(bad)", { XX } }, }, /* X86_64_0D */ { { "push{T|}", { cs } }, - { "(bad)", { XX } }, }, /* X86_64_16 */ { { "push{T|}", { ss } }, - { "(bad)", { XX } }, }, /* X86_64_17 */ { { "pop{T|}", { ss } }, - { "(bad)", { XX } }, }, /* X86_64_1E */ { { "push{T|}", { ds } }, - { "(bad)", { XX } }, }, /* X86_64_1F */ { { "pop{T|}", { ds } }, - { "(bad)", { XX } }, }, /* X86_64_27 */ { { "daa", { XX } }, - { "(bad)", { XX } }, }, /* X86_64_2F */ { { "das", { XX } }, - { "(bad)", { XX } }, }, /* X86_64_37 */ { { "aaa", { XX } }, - { "(bad)", { XX } }, }, /* X86_64_3F */ { { "aas", { XX } }, - { "(bad)", { XX } }, }, /* X86_64_60 */ { { "pusha{P|}", { XX } }, - { "(bad)", { XX } }, }, /* X86_64_61 */ { { "popa{P|}", { XX } }, - { "(bad)", { XX } }, }, /* X86_64_62 */ { { MOD_TABLE (MOD_62_32BIT) }, - { "(bad)", { XX } }, }, /* X86_64_63 */ @@ -5374,7 +5448,6 @@ static const struct dis386 x86_64_table[][2] = { /* X86_64_9A */ { { "Jcall{T|}", { Ap } }, - { "(bad)", { XX } }, }, /* X86_64_C4 */ @@ -5392,25 +5465,21 @@ static const struct dis386 x86_64_table[][2] = { /* X86_64_CE */ { { "into", { XX } }, - { "(bad)", { XX } }, }, /* X86_64_D4 */ { { "aam", { sIb } }, - { "(bad)", { XX } }, }, /* X86_64_D5 */ { { "aad", { sIb } }, - { "(bad)", { XX } }, }, /* X86_64_EA */ { { "Jjmp{T|}", { Ap } }, - { "(bad)", { XX } }, }, /* X86_64_0F01_REG_0 */ @@ -5456,28 +5525,28 @@ static const struct dis386 three_byte_table[][256] = { { "psignw", { MX, EM } }, { "psignd", { MX, EM } }, { "pmulhrsw", { MX, EM } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 10 */ { PREFIX_TABLE (PREFIX_0F3810) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F3814) }, { PREFIX_TABLE (PREFIX_0F3815) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F3817) }, /* 18 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { "pabsb", { MX, EM } }, { "pabsw", { MX, EM } }, { "pabsd", { MX, EM } }, - { "(bad)", { XX } }, + { Bad_Opcode }, /* 20 */ { PREFIX_TABLE (PREFIX_0F3820) }, { PREFIX_TABLE (PREFIX_0F3821) }, @@ -5485,17 +5554,17 @@ static const struct dis386 three_byte_table[][256] = { { PREFIX_TABLE (PREFIX_0F3823) }, { PREFIX_TABLE (PREFIX_0F3824) }, { PREFIX_TABLE (PREFIX_0F3825) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, /* 28 */ { PREFIX_TABLE (PREFIX_0F3828) }, { PREFIX_TABLE (PREFIX_0F3829) }, { PREFIX_TABLE (PREFIX_0F382A) }, { PREFIX_TABLE (PREFIX_0F382B) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 30 */ { PREFIX_TABLE (PREFIX_0F3830) }, { PREFIX_TABLE (PREFIX_0F3831) }, @@ -5503,7 +5572,7 @@ static const struct dis386 three_byte_table[][256] = { { PREFIX_TABLE (PREFIX_0F3833) }, { PREFIX_TABLE (PREFIX_0F3834) }, { PREFIX_TABLE (PREFIX_0F3835) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F3837) }, /* 38 */ { PREFIX_TABLE (PREFIX_0F3838) }, @@ -5517,231 +5586,231 @@ static const struct dis386 three_byte_table[][256] = { /* 40 */ { PREFIX_TABLE (PREFIX_0F3840) }, { PREFIX_TABLE (PREFIX_0F3841) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 48 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 50 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 58 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 60 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 68 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 70 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 78 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 80 */ { PREFIX_TABLE (PREFIX_0F3880) }, { PREFIX_TABLE (PREFIX_0F3881) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 88 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 90 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 98 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F38DB) }, { PREFIX_TABLE (PREFIX_0F38DC) }, { PREFIX_TABLE (PREFIX_0F38DD) }, { PREFIX_TABLE (PREFIX_0F38DE) }, { PREFIX_TABLE (PREFIX_0F38DF) }, /* e0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* e8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f0 */ { PREFIX_TABLE (PREFIX_0F38F0) }, { PREFIX_TABLE (PREFIX_0F38F1) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, }, /* THREE_BYTE_0F3A */ { /* 00 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 08 */ { PREFIX_TABLE (PREFIX_0F3A08) }, { PREFIX_TABLE (PREFIX_0F3A09) }, @@ -5752,622 +5821,1497 @@ static const struct dis386 three_byte_table[][256] = { { PREFIX_TABLE (PREFIX_0F3A0E) }, { "palignr", { MX, EM, Ib } }, /* 10 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F3A14) }, { PREFIX_TABLE (PREFIX_0F3A15) }, { PREFIX_TABLE (PREFIX_0F3A16) }, { PREFIX_TABLE (PREFIX_0F3A17) }, /* 18 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 20 */ { PREFIX_TABLE (PREFIX_0F3A20) }, { PREFIX_TABLE (PREFIX_0F3A21) }, { PREFIX_TABLE (PREFIX_0F3A22) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 28 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 30 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 38 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 40 */ { PREFIX_TABLE (PREFIX_0F3A40) }, { PREFIX_TABLE (PREFIX_0F3A41) }, { PREFIX_TABLE (PREFIX_0F3A42) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F3A44) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 48 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 50 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 58 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 60 */ { PREFIX_TABLE (PREFIX_0F3A60) }, { PREFIX_TABLE (PREFIX_0F3A61) }, { PREFIX_TABLE (PREFIX_0F3A62) }, { PREFIX_TABLE (PREFIX_0F3A63) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 68 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 70 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 78 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 80 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 88 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 90 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 98 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F3ADF) }, /* e0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* e8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, }, /* THREE_BYTE_0F7A */ { /* 00 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 08 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 10 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 18 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 20 */ { "ptest", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 28 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 30 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 38 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 40 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "phaddbw", { XM, EXq } }, { "phaddbd", { XM, EXq } }, { "phaddbq", { XM, EXq } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "phaddwd", { XM, EXq } }, { "phaddwq", { XM, EXq } }, /* 48 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { "phadddq", { XM, EXq } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 50 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "phaddubw", { XM, EXq } }, { "phaddubd", { XM, EXq } }, { "phaddubq", { XM, EXq } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "phadduwd", { XM, EXq } }, { "phadduwq", { XM, EXq } }, /* 58 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { "phaddudq", { XM, EXq } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 60 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "phsubbw", { XM, EXq } }, { "phsubbd", { XM, EXq } }, { "phsubbq", { XM, EXq } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 68 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 70 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 78 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 80 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 88 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 90 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 98 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* e0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* e8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, }, }; +static const struct dis386 xop_table[][256] = { + /* XOP_08 */ + { + /* 00 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 08 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 10 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 18 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 20 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 28 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 30 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 38 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 40 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 48 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 50 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 58 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 60 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 68 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 70 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 78 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 80 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpmacssww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { "vpmacsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { "vpmacssdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + /* 88 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpmacssdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { "vpmacssdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + /* 90 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpmacsww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { "vpmacswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { "vpmacsdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + /* 98 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpmacsdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { "vpmacsdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + /* a0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { "vpcmov", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { "vpperm", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpmadcsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { Bad_Opcode }, + /* a8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* b0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpmadcswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } }, + { Bad_Opcode }, + /* b8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* c0 */ + { "vprotb", { XM, Vex_2src_1, Ib } }, + { "vprotw", { XM, Vex_2src_1, Ib } }, + { "vprotd", { XM, Vex_2src_1, Ib } }, + { "vprotq", { XM, Vex_2src_1, Ib } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* c8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpcomb", { XM, Vex128, EXx, Ib } }, + { "vpcomw", { XM, Vex128, EXx, Ib } }, + { "vpcomd", { XM, Vex128, EXx, Ib } }, + { "vpcomq", { XM, Vex128, EXx, Ib } }, + /* d0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* d8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* e0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* e8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vpcomub", { XM, Vex128, EXx, Ib } }, + { "vpcomuw", { XM, Vex128, EXx, Ib } }, + { "vpcomud", { XM, Vex128, EXx, Ib } }, + { "vpcomuq", { XM, Vex128, EXx, Ib } }, + /* f0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* f8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + }, + /* XOP_09 */ + { + /* 00 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 08 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 10 */ + { Bad_Opcode }, + { Bad_Opcode }, + { REG_TABLE (REG_XOP_LWPCB) }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 18 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 20 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 28 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 30 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 38 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 40 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 48 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 50 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 58 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 60 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 68 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 70 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 78 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 80 */ + { VEX_LEN_TABLE (VEX_LEN_XOP_09_80) }, + { VEX_LEN_TABLE (VEX_LEN_XOP_09_81) }, + { "vfrczss", { XM, EXd } }, + { "vfrczsd", { XM, EXq } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 88 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 90 */ + { "vprotb", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vprotw", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vprotd", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vprotq", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vpshlb", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vpshlw", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vpshld", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vpshlq", { XM, Vex_2src_1, Vex_2src_2 } }, + /* 98 */ + { "vpshab", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vpshaw", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vpshad", { XM, Vex_2src_1, Vex_2src_2 } }, + { "vpshaq", { XM, Vex_2src_1, Vex_2src_2 } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* a0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* a8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* b0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* b8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* c0 */ + { Bad_Opcode }, + { "vphaddbw", { XM, EXxmm } }, + { "vphaddbd", { XM, EXxmm } }, + { "vphaddbq", { XM, EXxmm } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vphaddwd", { XM, EXxmm } }, + { "vphaddwq", { XM, EXxmm } }, + /* c8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vphadddq", { XM, EXxmm } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* d0 */ + { Bad_Opcode }, + { "vphaddubw", { XM, EXxmm } }, + { "vphaddubd", { XM, EXxmm } }, + { "vphaddubq", { XM, EXxmm } }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vphadduwd", { XM, EXxmm } }, + { "vphadduwq", { XM, EXxmm } }, + /* d8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "vphaddudq", { XM, EXxmm } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* e0 */ + { Bad_Opcode }, + { "vphsubbw", { XM, EXxmm } }, + { "vphsubwd", { XM, EXxmm } }, + { "vphsubdq", { XM, EXxmm } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* e8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* f0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* f8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + }, + /* XOP_0A */ + { + /* 00 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 08 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 10 */ + { Bad_Opcode }, + { Bad_Opcode }, + { REG_TABLE (REG_XOP_LWP) }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 18 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 20 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 28 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 30 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 38 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 40 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 48 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 50 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 58 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 60 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 68 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 70 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 78 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 80 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 88 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 90 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* 98 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* a0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* a8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* b0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* b8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* c0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* c8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* d0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* d8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* e0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* e8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* f0 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + /* f8 */ + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + }, +}; static const struct dis386 vex_table[][256] = { /* VEX_0F */ { /* 00 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 08 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 10 */ { PREFIX_TABLE (PREFIX_VEX_10) }, { PREFIX_TABLE (PREFIX_VEX_11) }, { PREFIX_TABLE (PREFIX_VEX_12) }, { MOD_TABLE (MOD_VEX_13) }, - { "vunpcklpX", { XM, Vex, EXx } }, - { "vunpckhpX", { XM, Vex, EXx } }, + { VEX_W_TABLE (VEX_W_14) }, + { VEX_W_TABLE (VEX_W_15) }, { PREFIX_TABLE (PREFIX_VEX_16) }, { MOD_TABLE (MOD_VEX_17) }, /* 18 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 20 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 28 */ - { "vmovapX", { XM, EXx } }, - { "vmovapX", { EXxS, XM } }, + { VEX_W_TABLE (VEX_W_28) }, + { VEX_W_TABLE (VEX_W_29) }, { PREFIX_TABLE (PREFIX_VEX_2A) }, { MOD_TABLE (MOD_VEX_2B) }, { PREFIX_TABLE (PREFIX_VEX_2C) }, @@ -6375,43 +7319,43 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_2E) }, { PREFIX_TABLE (PREFIX_VEX_2F) }, /* 30 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 38 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 40 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 48 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 50 */ - { MOD_TABLE (MOD_VEX_51) }, + { MOD_TABLE (MOD_VEX_50) }, { PREFIX_TABLE (PREFIX_VEX_51) }, { PREFIX_TABLE (PREFIX_VEX_52) }, { PREFIX_TABLE (PREFIX_VEX_53) }, @@ -6456,104 +7400,104 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_76) }, { PREFIX_TABLE (PREFIX_VEX_77) }, /* 78 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_7C) }, { PREFIX_TABLE (PREFIX_VEX_7D) }, { PREFIX_TABLE (PREFIX_VEX_7E) }, { PREFIX_TABLE (PREFIX_VEX_7F) }, /* 80 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 88 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 90 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 98 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { REG_TABLE (REG_VEX_AE) }, - { "(bad)", { XX } }, + { Bad_Opcode }, /* b0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_C2) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_C4) }, { PREFIX_TABLE (PREFIX_VEX_C5) }, { "vshufpX", { XM, Vex, EXx, Ib } }, - { "(bad)", { XX } }, + { Bad_Opcode }, /* c8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d0 */ { PREFIX_TABLE (PREFIX_VEX_D0) }, { PREFIX_TABLE (PREFIX_VEX_D1) }, @@ -6607,7 +7551,7 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_FC) }, { PREFIX_TABLE (PREFIX_VEX_FD) }, { PREFIX_TABLE (PREFIX_VEX_FE) }, - { "(bad)", { XX } }, + { Bad_Opcode }, }, /* VEX_0F38 */ { @@ -6630,23 +7574,23 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_380E) }, { PREFIX_TABLE (PREFIX_VEX_380F) }, /* 10 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_VEX_3813) }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3817) }, /* 18 */ { PREFIX_TABLE (PREFIX_VEX_3818) }, { PREFIX_TABLE (PREFIX_VEX_3819) }, { PREFIX_TABLE (PREFIX_VEX_381A) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_381C) }, { PREFIX_TABLE (PREFIX_VEX_381D) }, { PREFIX_TABLE (PREFIX_VEX_381E) }, - { "(bad)", { XX } }, + { Bad_Opcode }, /* 20 */ { PREFIX_TABLE (PREFIX_VEX_3820) }, { PREFIX_TABLE (PREFIX_VEX_3821) }, @@ -6654,8 +7598,8 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_3823) }, { PREFIX_TABLE (PREFIX_VEX_3824) }, { PREFIX_TABLE (PREFIX_VEX_3825) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, /* 28 */ { PREFIX_TABLE (PREFIX_VEX_3828) }, { PREFIX_TABLE (PREFIX_VEX_3829) }, @@ -6672,7 +7616,7 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_3833) }, { PREFIX_TABLE (PREFIX_VEX_3834) }, { PREFIX_TABLE (PREFIX_VEX_3835) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3837) }, /* 38 */ { PREFIX_TABLE (PREFIX_VEX_3838) }, @@ -6686,100 +7630,100 @@ static const struct dis386 vex_table[][256] = { /* 40 */ { PREFIX_TABLE (PREFIX_VEX_3840) }, { PREFIX_TABLE (PREFIX_VEX_3841) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 48 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 50 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 58 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 60 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 68 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 70 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 78 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 80 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 88 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 90 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3896) }, { PREFIX_TABLE (PREFIX_VEX_3897) }, /* 98 */ @@ -6792,12 +7736,12 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_389E) }, { PREFIX_TABLE (PREFIX_VEX_389F) }, /* a0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_38A6) }, { PREFIX_TABLE (PREFIX_VEX_38A7) }, /* a8 */ @@ -6810,12 +7754,12 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_38AE) }, { PREFIX_TABLE (PREFIX_VEX_38AF) }, /* b0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_38B6) }, { PREFIX_TABLE (PREFIX_VEX_38B7) }, /* b8 */ @@ -6828,89 +7772,89 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_38BE) }, { PREFIX_TABLE (PREFIX_VEX_38BF) }, /* c0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_38DB) }, { PREFIX_TABLE (PREFIX_VEX_38DC) }, { PREFIX_TABLE (PREFIX_VEX_38DD) }, { PREFIX_TABLE (PREFIX_VEX_38DE) }, { PREFIX_TABLE (PREFIX_VEX_38DF) }, /* e0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* e8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, }, /* VEX_0F3A */ { /* 00 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3A04) }, { PREFIX_TABLE (PREFIX_VEX_3A05) }, { PREFIX_TABLE (PREFIX_VEX_3A06) }, - { "(bad)", { XX } }, + { Bad_Opcode }, /* 08 */ { PREFIX_TABLE (PREFIX_VEX_3A08) }, { PREFIX_TABLE (PREFIX_VEX_3A09) }, @@ -6921,10 +7865,10 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_3A0E) }, { PREFIX_TABLE (PREFIX_VEX_3A0F) }, /* 10 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3A14) }, { PREFIX_TABLE (PREFIX_VEX_3A15) }, { PREFIX_TABLE (PREFIX_VEX_3A16) }, @@ -6932,80 +7876,80 @@ static const struct dis386 vex_table[][256] = { /* 18 */ { PREFIX_TABLE (PREFIX_VEX_3A18) }, { PREFIX_TABLE (PREFIX_VEX_3A19) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_VEX_3A1D) }, + { Bad_Opcode }, + { Bad_Opcode }, /* 20 */ { PREFIX_TABLE (PREFIX_VEX_3A20) }, { PREFIX_TABLE (PREFIX_VEX_3A21) }, { PREFIX_TABLE (PREFIX_VEX_3A22) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 28 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 30 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 38 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 40 */ { PREFIX_TABLE (PREFIX_VEX_3A40) }, { PREFIX_TABLE (PREFIX_VEX_3A41) }, { PREFIX_TABLE (PREFIX_VEX_3A42) }, - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3A44) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 48 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { PREFIX_TABLE (PREFIX_VEX_3A48) }, + { PREFIX_TABLE (PREFIX_VEX_3A49) }, { PREFIX_TABLE (PREFIX_VEX_3A4A) }, { PREFIX_TABLE (PREFIX_VEX_3A4B) }, { PREFIX_TABLE (PREFIX_VEX_3A4C) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 50 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 58 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3A5C) }, { PREFIX_TABLE (PREFIX_VEX_3A5D) }, { PREFIX_TABLE (PREFIX_VEX_3A5E) }, @@ -7015,10 +7959,10 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_3A61) }, { PREFIX_TABLE (PREFIX_VEX_3A62) }, { PREFIX_TABLE (PREFIX_VEX_3A63) }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 68 */ { PREFIX_TABLE (PREFIX_VEX_3A68) }, { PREFIX_TABLE (PREFIX_VEX_3A69) }, @@ -7029,14 +7973,14 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_3A6E) }, { PREFIX_TABLE (PREFIX_VEX_3A6F) }, /* 70 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 78 */ { PREFIX_TABLE (PREFIX_VEX_3A78) }, { PREFIX_TABLE (PREFIX_VEX_3A79) }, @@ -7047,1363 +7991,2243 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_3A7E) }, { PREFIX_TABLE (PREFIX_VEX_3A7F) }, /* 80 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 88 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 90 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* 98 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* a8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* b8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* c8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* d8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_3ADF) }, /* e0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* e8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f0 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, /* f8 */ - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, }, }; static const struct dis386 vex_len_table[][2] = { /* VEX_LEN_10_P_1 */ { - { "vmovss", { XMVex, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_10_P_1) }, + { VEX_W_TABLE (VEX_W_10_P_1) }, }, /* VEX_LEN_10_P_3 */ { - { "vmovsd", { XMVex, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_10_P_3) }, + { VEX_W_TABLE (VEX_W_10_P_3) }, }, /* VEX_LEN_11_P_1 */ { - { "vmovss", { EXdVexS, Vex128, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_11_P_1) }, + { VEX_W_TABLE (VEX_W_11_P_1) }, }, /* VEX_LEN_11_P_3 */ { - { "vmovsd", { EXqVexS, Vex128, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_11_P_3) }, + { VEX_W_TABLE (VEX_W_11_P_3) }, }, /* VEX_LEN_12_P_0_M_0 */ { - { "vmovlps", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_12_P_0_M_0) }, }, /* VEX_LEN_12_P_0_M_1 */ { - { "vmovhlps", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_12_P_0_M_1) }, }, /* VEX_LEN_12_P_2 */ { - { "vmovlpd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_12_P_2) }, }, /* VEX_LEN_13_M_0 */ { - { "vmovlpX", { EXq, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_13_M_0) }, }, /* VEX_LEN_16_P_0_M_0 */ { - { "vmovhps", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_16_P_0_M_0) }, }, /* VEX_LEN_16_P_0_M_1 */ { - { "vmovlhps", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_16_P_0_M_1) }, }, /* VEX_LEN_16_P_2 */ { - { "vmovhpd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_16_P_2) }, }, /* VEX_LEN_17_M_0 */ { - { "vmovhpX", { EXq, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_17_M_0) }, }, /* VEX_LEN_2A_P_1 */ { - { "vcvtsi2ss%LQ", { XM, Vex128, Ev } }, - { "(bad)", { XX } }, + { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev } }, + { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev } }, }, /* VEX_LEN_2A_P_3 */ { - { "vcvtsi2sd%LQ", { XM, Vex128, Ev } }, - { "(bad)", { XX } }, + { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev } }, + { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev } }, }, /* VEX_LEN_2C_P_1 */ { - { "vcvttss2siY", { Gv, EXd } }, - { "(bad)", { XX } }, + { "vcvttss2siY", { Gv, EXdScalar } }, + { "vcvttss2siY", { Gv, EXdScalar } }, }, /* VEX_LEN_2C_P_3 */ { - { "vcvttsd2siY", { Gv, EXq } }, - { "(bad)", { XX } }, + { "vcvttsd2siY", { Gv, EXqScalar } }, + { "vcvttsd2siY", { Gv, EXqScalar } }, }, /* VEX_LEN_2D_P_1 */ { - { "vcvtss2siY", { Gv, EXd } }, - { "(bad)", { XX } }, + { "vcvtss2siY", { Gv, EXdScalar } }, + { "vcvtss2siY", { Gv, EXdScalar } }, }, /* VEX_LEN_2D_P_3 */ { - { "vcvtsd2siY", { Gv, EXq } }, - { "(bad)", { XX } }, + { "vcvtsd2siY", { Gv, EXqScalar } }, + { "vcvtsd2siY", { Gv, EXqScalar } }, }, /* VEX_LEN_2E_P_0 */ { - { "vucomiss", { XM, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_2E_P_0) }, + { VEX_W_TABLE (VEX_W_2E_P_0) }, }, /* VEX_LEN_2E_P_2 */ { - { "vucomisd", { XM, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_2E_P_2) }, + { VEX_W_TABLE (VEX_W_2E_P_2) }, }, /* VEX_LEN_2F_P_0 */ { - { "vcomiss", { XM, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_2F_P_0) }, + { VEX_W_TABLE (VEX_W_2F_P_0) }, }, /* VEX_LEN_2F_P_2 */ { - { "vcomisd", { XM, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_2F_P_2) }, + { VEX_W_TABLE (VEX_W_2F_P_2) }, }, /* VEX_LEN_51_P_1 */ { - { "vsqrtss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_51_P_1) }, + { VEX_W_TABLE (VEX_W_51_P_1) }, }, /* VEX_LEN_51_P_3 */ { - { "vsqrtsd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_51_P_3) }, + { VEX_W_TABLE (VEX_W_51_P_3) }, }, /* VEX_LEN_52_P_1 */ { - { "vrsqrtss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_52_P_1) }, + { VEX_W_TABLE (VEX_W_52_P_1) }, }, /* VEX_LEN_53_P_1 */ { - { "vrcpss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_53_P_1) }, + { VEX_W_TABLE (VEX_W_53_P_1) }, }, /* VEX_LEN_58_P_1 */ { - { "vaddss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_58_P_1) }, + { VEX_W_TABLE (VEX_W_58_P_1) }, }, /* VEX_LEN_58_P_3 */ { - { "vaddsd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_58_P_3) }, + { VEX_W_TABLE (VEX_W_58_P_3) }, }, /* VEX_LEN_59_P_1 */ { - { "vmulss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_59_P_1) }, + { VEX_W_TABLE (VEX_W_59_P_1) }, }, /* VEX_LEN_59_P_3 */ { - { "vmulsd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_59_P_3) }, + { VEX_W_TABLE (VEX_W_59_P_3) }, }, /* VEX_LEN_5A_P_1 */ { - { "vcvtss2sd", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5A_P_1) }, + { VEX_W_TABLE (VEX_W_5A_P_1) }, }, /* VEX_LEN_5A_P_3 */ { - { "vcvtsd2ss", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5A_P_3) }, + { VEX_W_TABLE (VEX_W_5A_P_3) }, }, /* VEX_LEN_5C_P_1 */ { - { "vsubss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5C_P_1) }, + { VEX_W_TABLE (VEX_W_5C_P_1) }, }, /* VEX_LEN_5C_P_3 */ { - { "vsubsd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5C_P_3) }, + { VEX_W_TABLE (VEX_W_5C_P_3) }, }, /* VEX_LEN_5D_P_1 */ { - { "vminss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5D_P_1) }, + { VEX_W_TABLE (VEX_W_5D_P_1) }, }, /* VEX_LEN_5D_P_3 */ { - { "vminsd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5D_P_3) }, + { VEX_W_TABLE (VEX_W_5D_P_3) }, }, /* VEX_LEN_5E_P_1 */ { - { "vdivss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5E_P_1) }, + { VEX_W_TABLE (VEX_W_5E_P_1) }, }, /* VEX_LEN_5E_P_3 */ { - { "vdivsd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5E_P_3) }, + { VEX_W_TABLE (VEX_W_5E_P_3) }, }, /* VEX_LEN_5F_P_1 */ { - { "vmaxss", { XM, Vex128, EXd } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5F_P_1) }, + { VEX_W_TABLE (VEX_W_5F_P_1) }, }, /* VEX_LEN_5F_P_3 */ { - { "vmaxsd", { XM, Vex128, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_5F_P_3) }, + { VEX_W_TABLE (VEX_W_5F_P_3) }, }, /* VEX_LEN_60_P_2 */ { - { "vpunpcklbw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_60_P_2) }, }, /* VEX_LEN_61_P_2 */ { - { "vpunpcklwd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_61_P_2) }, }, /* VEX_LEN_62_P_2 */ { - { "vpunpckldq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_62_P_2) }, }, /* VEX_LEN_63_P_2 */ { - { "vpacksswb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_63_P_2) }, }, /* VEX_LEN_64_P_2 */ { - { "vpcmpgtb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_64_P_2) }, }, /* VEX_LEN_65_P_2 */ { - { "vpcmpgtw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_65_P_2) }, }, /* VEX_LEN_66_P_2 */ { - { "vpcmpgtd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_66_P_2) }, }, /* VEX_LEN_67_P_2 */ { - { "vpackuswb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_67_P_2) }, }, /* VEX_LEN_68_P_2 */ { - { "vpunpckhbw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_68_P_2) }, }, /* VEX_LEN_69_P_2 */ { - { "vpunpckhwd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_69_P_2) }, }, /* VEX_LEN_6A_P_2 */ { - { "vpunpckhdq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_6A_P_2) }, }, /* VEX_LEN_6B_P_2 */ { - { "vpackssdw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_6B_P_2) }, }, /* VEX_LEN_6C_P_2 */ { - { "vpunpcklqdq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_6C_P_2) }, }, /* VEX_LEN_6D_P_2 */ { - { "vpunpckhqdq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_6D_P_2) }, }, /* VEX_LEN_6E_P_2 */ { - { "vmovK", { XM, Edq } }, - { "(bad)", { XX } }, + { "vmovK", { XMScalar, Edq } }, + { "vmovK", { XMScalar, Edq } }, }, /* VEX_LEN_70_P_1 */ { - { "vpshufhw", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_70_P_1) }, }, /* VEX_LEN_70_P_2 */ { - { "vpshufd", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_70_P_2) }, }, /* VEX_LEN_70_P_3 */ { - { "vpshuflw", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_70_P_3) }, }, /* VEX_LEN_71_R_2_P_2 */ { - { "vpsrlw", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_71_R_2_P_2) }, }, /* VEX_LEN_71_R_4_P_2 */ { - { "vpsraw", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_71_R_4_P_2) }, }, /* VEX_LEN_71_R_6_P_2 */ { - { "vpsllw", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_71_R_6_P_2) }, }, /* VEX_LEN_72_R_2_P_2 */ { - { "vpsrld", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_72_R_2_P_2) }, }, /* VEX_LEN_72_R_4_P_2 */ { - { "vpsrad", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_72_R_4_P_2) }, }, /* VEX_LEN_72_R_6_P_2 */ { - { "vpslld", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_72_R_6_P_2) }, }, /* VEX_LEN_73_R_2_P_2 */ { - { "vpsrlq", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_73_R_2_P_2) }, }, /* VEX_LEN_73_R_3_P_2 */ { - { "vpsrldq", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_73_R_3_P_2) }, }, /* VEX_LEN_73_R_6_P_2 */ { - { "vpsllq", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_73_R_6_P_2) }, }, /* VEX_LEN_73_R_7_P_2 */ { - { "vpslldq", { Vex128, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_73_R_7_P_2) }, }, /* VEX_LEN_74_P_2 */ { - { "vpcmpeqb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_74_P_2) }, }, /* VEX_LEN_75_P_2 */ { - { "vpcmpeqw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_75_P_2) }, }, /* VEX_LEN_76_P_2 */ { - { "vpcmpeqd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_76_P_2) }, }, /* VEX_LEN_7E_P_1 */ { - { "vmovq", { XM, EXq } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_7E_P_1) }, + { VEX_W_TABLE (VEX_W_7E_P_1) }, }, /* VEX_LEN_7E_P_2 */ { - { "vmovK", { Edq, XM } }, - { "(bad)", { XX } }, + { "vmovK", { Edq, XMScalar } }, + { "vmovK", { Edq, XMScalar } }, }, /* VEX_LEN_AE_R_2_M_0 */ { - { "vldmxcsr", { Md } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_AE_R_2_M_0) }, }, /* VEX_LEN_AE_R_3_M_0 */ { - { "vstmxcsr", { Md } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_AE_R_3_M_0) }, }, /* VEX_LEN_C2_P_1 */ { - { "vcmpss", { XM, Vex128, EXd, VCMP } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_C2_P_1) }, + { VEX_W_TABLE (VEX_W_C2_P_1) }, }, /* VEX_LEN_C2_P_3 */ { - { "vcmpsd", { XM, Vex128, EXq, VCMP } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_C2_P_3) }, + { VEX_W_TABLE (VEX_W_C2_P_3) }, }, /* VEX_LEN_C4_P_2 */ { - { "vpinsrw", { XM, Vex128, Edqw, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_C4_P_2) }, }, /* VEX_LEN_C5_P_2 */ { - { "vpextrw", { Gdq, XS, Ib } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_C5_P_2) }, }, /* VEX_LEN_D1_P_2 */ { - { "vpsrlw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D1_P_2) }, }, /* VEX_LEN_D2_P_2 */ { - { "vpsrld", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D2_P_2) }, }, /* VEX_LEN_D3_P_2 */ { - { "vpsrlq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D3_P_2) }, }, /* VEX_LEN_D4_P_2 */ { - { "vpaddq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D4_P_2) }, }, /* VEX_LEN_D5_P_2 */ { - { "vpmullw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D5_P_2) }, }, /* VEX_LEN_D6_P_2 */ { - { "vmovq", { EXqS, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D6_P_2) }, + { VEX_W_TABLE (VEX_W_D6_P_2) }, }, /* VEX_LEN_D7_P_2_M_1 */ { - { "vpmovmskb", { Gdq, XS } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D7_P_2_M_1) }, }, /* VEX_LEN_D8_P_2 */ { - { "vpsubusb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D8_P_2) }, }, /* VEX_LEN_D9_P_2 */ { - { "vpsubusw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_D9_P_2) }, }, /* VEX_LEN_DA_P_2 */ { - { "vpminub", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_DA_P_2) }, }, /* VEX_LEN_DB_P_2 */ { - { "vpand", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_DB_P_2) }, }, /* VEX_LEN_DC_P_2 */ { - { "vpaddusb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_DC_P_2) }, }, /* VEX_LEN_DD_P_2 */ { - { "vpaddusw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_DD_P_2) }, }, /* VEX_LEN_DE_P_2 */ { - { "vpmaxub", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_DE_P_2) }, }, /* VEX_LEN_DF_P_2 */ { - { "vpandn", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_DF_P_2) }, }, /* VEX_LEN_E0_P_2 */ { - { "vpavgb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E0_P_2) }, }, /* VEX_LEN_E1_P_2 */ { - { "vpsraw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E1_P_2) }, }, /* VEX_LEN_E2_P_2 */ { - { "vpsrad", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E2_P_2) }, }, /* VEX_LEN_E3_P_2 */ { - { "vpavgw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E3_P_2) }, }, /* VEX_LEN_E4_P_2 */ { - { "vpmulhuw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E4_P_2) }, }, /* VEX_LEN_E5_P_2 */ { - { "vpmulhw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E5_P_2) }, }, /* VEX_LEN_E8_P_2 */ { - { "vpsubsb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E8_P_2) }, }, /* VEX_LEN_E9_P_2 */ { - { "vpsubsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E9_P_2) }, }, /* VEX_LEN_EA_P_2 */ { - { "vpminsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_EA_P_2) }, }, /* VEX_LEN_EB_P_2 */ { - { "vpor", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_EB_P_2) }, }, /* VEX_LEN_EC_P_2 */ { - { "vpaddsb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_EC_P_2) }, }, /* VEX_LEN_ED_P_2 */ { - { "vpaddsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_ED_P_2) }, }, /* VEX_LEN_EE_P_2 */ { - { "vpmaxsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_EE_P_2) }, }, /* VEX_LEN_EF_P_2 */ { - { "vpxor", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_EF_P_2) }, }, /* VEX_LEN_F1_P_2 */ { - { "vpsllw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F1_P_2) }, }, /* VEX_LEN_F2_P_2 */ { - { "vpslld", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F2_P_2) }, }, /* VEX_LEN_F3_P_2 */ { - { "vpsllq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F3_P_2) }, }, /* VEX_LEN_F4_P_2 */ { - { "vpmuludq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F4_P_2) }, }, /* VEX_LEN_F5_P_2 */ { - { "vpmaddwd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F5_P_2) }, }, /* VEX_LEN_F6_P_2 */ { - { "vpsadbw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F6_P_2) }, }, /* VEX_LEN_F7_P_2 */ { - { "vmaskmovdqu", { XM, XS } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F7_P_2) }, }, /* VEX_LEN_F8_P_2 */ { - { "vpsubb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F8_P_2) }, }, /* VEX_LEN_F9_P_2 */ { - { "vpsubw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F9_P_2) }, }, /* VEX_LEN_FA_P_2 */ { - { "vpsubd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_FA_P_2) }, }, /* VEX_LEN_FB_P_2 */ { - { "vpsubq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_FB_P_2) }, }, /* VEX_LEN_FC_P_2 */ { - { "vpaddb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_FC_P_2) }, }, /* VEX_LEN_FD_P_2 */ { - { "vpaddw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_FD_P_2) }, }, /* VEX_LEN_FE_P_2 */ { - { "vpaddd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_FE_P_2) }, }, /* VEX_LEN_3800_P_2 */ { - { "vpshufb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3800_P_2) }, }, /* VEX_LEN_3801_P_2 */ { - { "vphaddw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3801_P_2) }, }, /* VEX_LEN_3802_P_2 */ { - { "vphaddd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3802_P_2) }, }, /* VEX_LEN_3803_P_2 */ { - { "vphaddsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3803_P_2) }, }, /* VEX_LEN_3804_P_2 */ { - { "vpmaddubsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3804_P_2) }, }, /* VEX_LEN_3805_P_2 */ { - { "vphsubw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3805_P_2) }, }, /* VEX_LEN_3806_P_2 */ { - { "vphsubd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3806_P_2) }, }, /* VEX_LEN_3807_P_2 */ { - { "vphsubsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3807_P_2) }, }, /* VEX_LEN_3808_P_2 */ { - { "vpsignb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3808_P_2) }, }, /* VEX_LEN_3809_P_2 */ { - { "vpsignw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3809_P_2) }, + }, + + /* VEX_LEN_380A_P_2 */ + { + { VEX_W_TABLE (VEX_W_380A_P_2) }, + }, + + /* VEX_LEN_380B_P_2 */ + { + { VEX_W_TABLE (VEX_W_380B_P_2) }, + }, + + /* VEX_LEN_3819_P_2_M_0 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3819_P_2_M_0) }, + }, + + /* VEX_LEN_381A_P_2_M_0 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_381A_P_2_M_0) }, + }, + + /* VEX_LEN_381C_P_2 */ + { + { VEX_W_TABLE (VEX_W_381C_P_2) }, + }, + + /* VEX_LEN_381D_P_2 */ + { + { VEX_W_TABLE (VEX_W_381D_P_2) }, + }, + + /* VEX_LEN_381E_P_2 */ + { + { VEX_W_TABLE (VEX_W_381E_P_2) }, + }, + + /* VEX_LEN_3820_P_2 */ + { + { VEX_W_TABLE (VEX_W_3820_P_2) }, + }, + + /* VEX_LEN_3821_P_2 */ + { + { VEX_W_TABLE (VEX_W_3821_P_2) }, + }, + + /* VEX_LEN_3822_P_2 */ + { + { VEX_W_TABLE (VEX_W_3822_P_2) }, + }, + + /* VEX_LEN_3823_P_2 */ + { + { VEX_W_TABLE (VEX_W_3823_P_2) }, + }, + + /* VEX_LEN_3824_P_2 */ + { + { VEX_W_TABLE (VEX_W_3824_P_2) }, + }, + + /* VEX_LEN_3825_P_2 */ + { + { VEX_W_TABLE (VEX_W_3825_P_2) }, + }, + + /* VEX_LEN_3828_P_2 */ + { + { VEX_W_TABLE (VEX_W_3828_P_2) }, + }, + + /* VEX_LEN_3829_P_2 */ + { + { VEX_W_TABLE (VEX_W_3829_P_2) }, + }, + + /* VEX_LEN_382A_P_2_M_0 */ + { + { VEX_W_TABLE (VEX_W_382A_P_2_M_0) }, + }, + + /* VEX_LEN_382B_P_2 */ + { + { VEX_W_TABLE (VEX_W_382B_P_2) }, + }, + + /* VEX_LEN_3830_P_2 */ + { + { VEX_W_TABLE (VEX_W_3830_P_2) }, + }, + + /* VEX_LEN_3831_P_2 */ + { + { VEX_W_TABLE (VEX_W_3831_P_2) }, + }, + + /* VEX_LEN_3832_P_2 */ + { + { VEX_W_TABLE (VEX_W_3832_P_2) }, + }, + + /* VEX_LEN_3833_P_2 */ + { + { VEX_W_TABLE (VEX_W_3833_P_2) }, + }, + + /* VEX_LEN_3834_P_2 */ + { + { VEX_W_TABLE (VEX_W_3834_P_2) }, + }, + + /* VEX_LEN_3835_P_2 */ + { + { VEX_W_TABLE (VEX_W_3835_P_2) }, + }, + + /* VEX_LEN_3837_P_2 */ + { + { VEX_W_TABLE (VEX_W_3837_P_2) }, + }, + + /* VEX_LEN_3838_P_2 */ + { + { VEX_W_TABLE (VEX_W_3838_P_2) }, + }, + + /* VEX_LEN_3839_P_2 */ + { + { VEX_W_TABLE (VEX_W_3839_P_2) }, + }, + + /* VEX_LEN_383A_P_2 */ + { + { VEX_W_TABLE (VEX_W_383A_P_2) }, + }, + + /* VEX_LEN_383B_P_2 */ + { + { VEX_W_TABLE (VEX_W_383B_P_2) }, + }, + + /* VEX_LEN_383C_P_2 */ + { + { VEX_W_TABLE (VEX_W_383C_P_2) }, + }, + + /* VEX_LEN_383D_P_2 */ + { + { VEX_W_TABLE (VEX_W_383D_P_2) }, + }, + + /* VEX_LEN_383E_P_2 */ + { + { VEX_W_TABLE (VEX_W_383E_P_2) }, + }, + + /* VEX_LEN_383F_P_2 */ + { + { VEX_W_TABLE (VEX_W_383F_P_2) }, + }, + + /* VEX_LEN_3840_P_2 */ + { + { VEX_W_TABLE (VEX_W_3840_P_2) }, + }, + + /* VEX_LEN_3841_P_2 */ + { + { VEX_W_TABLE (VEX_W_3841_P_2) }, + }, + + /* VEX_LEN_38DB_P_2 */ + { + { VEX_W_TABLE (VEX_W_38DB_P_2) }, + }, + + /* VEX_LEN_38DC_P_2 */ + { + { VEX_W_TABLE (VEX_W_38DC_P_2) }, + }, + + /* VEX_LEN_38DD_P_2 */ + { + { VEX_W_TABLE (VEX_W_38DD_P_2) }, + }, + + /* VEX_LEN_38DE_P_2 */ + { + { VEX_W_TABLE (VEX_W_38DE_P_2) }, + }, + + /* VEX_LEN_38DF_P_2 */ + { + { VEX_W_TABLE (VEX_W_38DF_P_2) }, + }, + + /* VEX_LEN_3A06_P_2 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A06_P_2) }, + }, + + /* VEX_LEN_3A0A_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A0A_P_2) }, + { VEX_W_TABLE (VEX_W_3A0A_P_2) }, + }, + + /* VEX_LEN_3A0B_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A0B_P_2) }, + { VEX_W_TABLE (VEX_W_3A0B_P_2) }, + }, + + /* VEX_LEN_3A0E_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A0E_P_2) }, + }, + + /* VEX_LEN_3A0F_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A0F_P_2) }, + }, + + /* VEX_LEN_3A14_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A14_P_2) }, + }, + + /* VEX_LEN_3A15_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A15_P_2) }, + }, + + /* VEX_LEN_3A16_P_2 */ + { + { "vpextrK", { Edq, XM, Ib } }, + }, + + /* VEX_LEN_3A17_P_2 */ + { + { "vextractps", { Edqd, XM, Ib } }, + }, + + /* VEX_LEN_3A18_P_2 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A18_P_2) }, + }, + + /* VEX_LEN_3A19_P_2 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_3A19_P_2) }, + }, + + /* VEX_LEN_3A20_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A20_P_2) }, + }, + + /* VEX_LEN_3A21_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A21_P_2) }, + }, + + /* VEX_LEN_3A22_P_2 */ + { + { "vpinsrK", { XM, Vex128, Edq, Ib } }, + }, + + /* VEX_LEN_3A41_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A41_P_2) }, + }, + + /* VEX_LEN_3A42_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A42_P_2) }, + }, + + /* VEX_LEN_3A44_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A44_P_2) }, + }, + + /* VEX_LEN_3A4C_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A4C_P_2) }, + }, + + /* VEX_LEN_3A60_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A60_P_2) }, + }, + + /* VEX_LEN_3A61_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A61_P_2) }, + }, + + /* VEX_LEN_3A62_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A62_P_2) }, + }, + + /* VEX_LEN_3A63_P_2 */ + { + { VEX_W_TABLE (VEX_W_3A63_P_2) }, + }, + + /* VEX_LEN_3A6A_P_2 */ + { + { "vfmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } }, + }, + + /* VEX_LEN_3A6B_P_2 */ + { + { "vfmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } }, + }, + + /* VEX_LEN_3A6E_P_2 */ + { + { "vfmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } }, + }, + + /* VEX_LEN_3A6F_P_2 */ + { + { "vfmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } }, + }, + + /* VEX_LEN_3A7A_P_2 */ + { + { "vfnmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } }, + }, + + /* VEX_LEN_3A7B_P_2 */ + { + { "vfnmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } }, + }, + + /* VEX_LEN_3A7E_P_2 */ + { + { "vfnmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } }, + }, + + /* VEX_LEN_3A7F_P_2 */ + { + { "vfnmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } }, + }, + + /* VEX_LEN_3ADF_P_2 */ + { + { VEX_W_TABLE (VEX_W_3ADF_P_2) }, + }, + + /* VEX_LEN_XOP_09_80 */ + { + { "vfrczps", { XM, EXxmm } }, + { "vfrczps", { XM, EXymmq } }, + }, + + /* VEX_LEN_XOP_09_81 */ + { + { "vfrczpd", { XM, EXxmm } }, + { "vfrczpd", { XM, EXymmq } }, + }, +}; + +static const struct dis386 vex_w_table[][2] = { + { + /* VEX_W_10_P_0 */ + { "vmovups", { XM, EXx } }, + }, + { + /* VEX_W_10_P_1 */ + { "vmovss", { XMVexScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_10_P_2 */ + { "vmovupd", { XM, EXx } }, + }, + { + /* VEX_W_10_P_3 */ + { "vmovsd", { XMVexScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_11_P_0 */ + { "vmovups", { EXxS, XM } }, + }, + { + /* VEX_W_11_P_1 */ + { "vmovss", { EXdVexScalarS, VexScalar, XMScalar } }, + }, + { + /* VEX_W_11_P_2 */ + { "vmovupd", { EXxS, XM } }, + }, + { + /* VEX_W_11_P_3 */ + { "vmovsd", { EXqVexScalarS, VexScalar, XMScalar } }, + }, + { + /* VEX_W_12_P_0_M_0 */ + { "vmovlps", { XM, Vex128, EXq } }, + }, + { + /* VEX_W_12_P_0_M_1 */ + { "vmovhlps", { XM, Vex128, EXq } }, + }, + { + /* VEX_W_12_P_1 */ + { "vmovsldup", { XM, EXx } }, + }, + { + /* VEX_W_12_P_2 */ + { "vmovlpd", { XM, Vex128, EXq } }, + }, + { + /* VEX_W_12_P_3 */ + { "vmovddup", { XM, EXymmq } }, + }, + { + /* VEX_W_13_M_0 */ + { "vmovlpX", { EXq, XM } }, + }, + { + /* VEX_W_14 */ + { "vunpcklpX", { XM, Vex, EXx } }, + }, + { + /* VEX_W_15 */ + { "vunpckhpX", { XM, Vex, EXx } }, + }, + { + /* VEX_W_16_P_0_M_0 */ + { "vmovhps", { XM, Vex128, EXq } }, + }, + { + /* VEX_W_16_P_0_M_1 */ + { "vmovlhps", { XM, Vex128, EXq } }, + }, + { + /* VEX_W_16_P_1 */ + { "vmovshdup", { XM, EXx } }, + }, + { + /* VEX_W_16_P_2 */ + { "vmovhpd", { XM, Vex128, EXq } }, + }, + { + /* VEX_W_17_M_0 */ + { "vmovhpX", { EXq, XM } }, + }, + { + /* VEX_W_28 */ + { "vmovapX", { XM, EXx } }, + }, + { + /* VEX_W_29 */ + { "vmovapX", { EXxS, XM } }, + }, + { + /* VEX_W_2B_M_0 */ + { "vmovntpX", { Mx, XM } }, + }, + { + /* VEX_W_2E_P_0 */ + { "vucomiss", { XMScalar, EXdScalar } }, + }, + { + /* VEX_W_2E_P_2 */ + { "vucomisd", { XMScalar, EXqScalar } }, + }, + { + /* VEX_W_2F_P_0 */ + { "vcomiss", { XMScalar, EXdScalar } }, + }, + { + /* VEX_W_2F_P_2 */ + { "vcomisd", { XMScalar, EXqScalar } }, + }, + { + /* VEX_W_50_M_0 */ + { "vmovmskpX", { Gdq, XS } }, + }, + { + /* VEX_W_51_P_0 */ + { "vsqrtps", { XM, EXx } }, + }, + { + /* VEX_W_51_P_1 */ + { "vsqrtss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_51_P_2 */ + { "vsqrtpd", { XM, EXx } }, + }, + { + /* VEX_W_51_P_3 */ + { "vsqrtsd", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_52_P_0 */ + { "vrsqrtps", { XM, EXx } }, + }, + { + /* VEX_W_52_P_1 */ + { "vrsqrtss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_53_P_0 */ + { "vrcpps", { XM, EXx } }, + }, + { + /* VEX_W_53_P_1 */ + { "vrcpss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_58_P_0 */ + { "vaddps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_58_P_1 */ + { "vaddss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_58_P_2 */ + { "vaddpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_58_P_3 */ + { "vaddsd", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_59_P_0 */ + { "vmulps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_59_P_1 */ + { "vmulss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_59_P_2 */ + { "vmulpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_59_P_3 */ + { "vmulsd", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_5A_P_0 */ + { "vcvtps2pd", { XM, EXxmmq } }, + }, + { + /* VEX_W_5A_P_1 */ + { "vcvtss2sd", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_5A_P_3 */ + { "vcvtsd2ss", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_5B_P_0 */ + { "vcvtdq2ps", { XM, EXx } }, + }, + { + /* VEX_W_5B_P_1 */ + { "vcvttps2dq", { XM, EXx } }, + }, + { + /* VEX_W_5B_P_2 */ + { "vcvtps2dq", { XM, EXx } }, + }, + { + /* VEX_W_5C_P_0 */ + { "vsubps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5C_P_1 */ + { "vsubss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_5C_P_2 */ + { "vsubpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5C_P_3 */ + { "vsubsd", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_5D_P_0 */ + { "vminps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5D_P_1 */ + { "vminss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_5D_P_2 */ + { "vminpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5D_P_3 */ + { "vminsd", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_5E_P_0 */ + { "vdivps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5E_P_1 */ + { "vdivss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_5E_P_2 */ + { "vdivpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5E_P_3 */ + { "vdivsd", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_5F_P_0 */ + { "vmaxps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5F_P_1 */ + { "vmaxss", { XMScalar, VexScalar, EXdScalar } }, + }, + { + /* VEX_W_5F_P_2 */ + { "vmaxpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_5F_P_3 */ + { "vmaxsd", { XMScalar, VexScalar, EXqScalar } }, + }, + { + /* VEX_W_60_P_2 */ + { "vpunpcklbw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_61_P_2 */ + { "vpunpcklwd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_62_P_2 */ + { "vpunpckldq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_63_P_2 */ + { "vpacksswb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_64_P_2 */ + { "vpcmpgtb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_65_P_2 */ + { "vpcmpgtw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_66_P_2 */ + { "vpcmpgtd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_67_P_2 */ + { "vpackuswb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_68_P_2 */ + { "vpunpckhbw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_69_P_2 */ + { "vpunpckhwd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_6A_P_2 */ + { "vpunpckhdq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_6B_P_2 */ + { "vpackssdw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_6C_P_2 */ + { "vpunpcklqdq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_6D_P_2 */ + { "vpunpckhqdq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_6F_P_1 */ + { "vmovdqu", { XM, EXx } }, + }, + { + /* VEX_W_6F_P_2 */ + { "vmovdqa", { XM, EXx } }, + }, + { + /* VEX_W_70_P_1 */ + { "vpshufhw", { XM, EXx, Ib } }, + }, + { + /* VEX_W_70_P_2 */ + { "vpshufd", { XM, EXx, Ib } }, + }, + { + /* VEX_W_70_P_3 */ + { "vpshuflw", { XM, EXx, Ib } }, + }, + { + /* VEX_W_71_R_2_P_2 */ + { "vpsrlw", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_71_R_4_P_2 */ + { "vpsraw", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_71_R_6_P_2 */ + { "vpsllw", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_72_R_2_P_2 */ + { "vpsrld", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_72_R_4_P_2 */ + { "vpsrad", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_72_R_6_P_2 */ + { "vpslld", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_73_R_2_P_2 */ + { "vpsrlq", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_73_R_3_P_2 */ + { "vpsrldq", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_73_R_6_P_2 */ + { "vpsllq", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_73_R_7_P_2 */ + { "vpslldq", { Vex128, XS, Ib } }, + }, + { + /* VEX_W_74_P_2 */ + { "vpcmpeqb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_75_P_2 */ + { "vpcmpeqw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_76_P_2 */ + { "vpcmpeqd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_77_P_0 */ + { "", { VZERO } }, + }, + { + /* VEX_W_7C_P_2 */ + { "vhaddpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_7C_P_3 */ + { "vhaddps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_7D_P_2 */ + { "vhsubpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_7D_P_3 */ + { "vhsubps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_7E_P_1 */ + { "vmovq", { XMScalar, EXqScalar } }, + }, + { + /* VEX_W_7F_P_1 */ + { "vmovdqu", { EXxS, XM } }, + }, + { + /* VEX_W_7F_P_2 */ + { "vmovdqa", { EXxS, XM } }, + }, + { + /* VEX_W_AE_R_2_M_0 */ + { "vldmxcsr", { Md } }, + }, + { + /* VEX_W_AE_R_3_M_0 */ + { "vstmxcsr", { Md } }, + }, + { + /* VEX_W_C2_P_0 */ + { "vcmpps", { XM, Vex, EXx, VCMP } }, + }, + { + /* VEX_W_C2_P_1 */ + { "vcmpss", { XMScalar, VexScalar, EXdScalar, VCMP } }, + }, + { + /* VEX_W_C2_P_2 */ + { "vcmppd", { XM, Vex, EXx, VCMP } }, + }, + { + /* VEX_W_C2_P_3 */ + { "vcmpsd", { XMScalar, VexScalar, EXqScalar, VCMP } }, + }, + { + /* VEX_W_C4_P_2 */ + { "vpinsrw", { XM, Vex128, Edqw, Ib } }, + }, + { + /* VEX_W_C5_P_2 */ + { "vpextrw", { Gdq, XS, Ib } }, + }, + { + /* VEX_W_D0_P_2 */ + { "vaddsubpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_D0_P_3 */ + { "vaddsubps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_D1_P_2 */ + { "vpsrlw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_D2_P_2 */ + { "vpsrld", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_D3_P_2 */ + { "vpsrlq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_D4_P_2 */ + { "vpaddq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_D5_P_2 */ + { "vpmullw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_D6_P_2 */ + { "vmovq", { EXqScalarS, XMScalar } }, + }, + { + /* VEX_W_D7_P_2_M_1 */ + { "vpmovmskb", { Gdq, XS } }, + }, + { + /* VEX_W_D8_P_2 */ + { "vpsubusb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_D9_P_2 */ + { "vpsubusw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_DA_P_2 */ + { "vpminub", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_DB_P_2 */ + { "vpand", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_DC_P_2 */ + { "vpaddusb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_DD_P_2 */ + { "vpaddusw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_DE_P_2 */ + { "vpmaxub", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_DF_P_2 */ + { "vpandn", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E0_P_2 */ + { "vpavgb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E1_P_2 */ + { "vpsraw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E2_P_2 */ + { "vpsrad", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E3_P_2 */ + { "vpavgw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E4_P_2 */ + { "vpmulhuw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E5_P_2 */ + { "vpmulhw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E6_P_1 */ + { "vcvtdq2pd", { XM, EXxmmq } }, + }, + { + /* VEX_W_E6_P_2 */ + { "vcvttpd2dq%XY", { XMM, EXx } }, + }, + { + /* VEX_W_E6_P_3 */ + { "vcvtpd2dq%XY", { XMM, EXx } }, + }, + { + /* VEX_W_E7_P_2_M_0 */ + { "vmovntdq", { Mx, XM } }, + }, + { + /* VEX_W_E8_P_2 */ + { "vpsubsb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_E9_P_2 */ + { "vpsubsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_EA_P_2 */ + { "vpminsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_EB_P_2 */ + { "vpor", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_EC_P_2 */ + { "vpaddsb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_ED_P_2 */ + { "vpaddsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_EE_P_2 */ + { "vpmaxsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_EF_P_2 */ + { "vpxor", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F0_P_3_M_0 */ + { "vlddqu", { XM, M } }, + }, + { + /* VEX_W_F1_P_2 */ + { "vpsllw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F2_P_2 */ + { "vpslld", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F3_P_2 */ + { "vpsllq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F4_P_2 */ + { "vpmuludq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F5_P_2 */ + { "vpmaddwd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F6_P_2 */ + { "vpsadbw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F7_P_2 */ + { "vmaskmovdqu", { XM, XS } }, + }, + { + /* VEX_W_F8_P_2 */ + { "vpsubb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_F9_P_2 */ + { "vpsubw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_FA_P_2 */ + { "vpsubd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_FB_P_2 */ + { "vpsubq", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_FC_P_2 */ + { "vpaddb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_FD_P_2 */ + { "vpaddw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_FE_P_2 */ + { "vpaddd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3800_P_2 */ + { "vpshufb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3801_P_2 */ + { "vphaddw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3802_P_2 */ + { "vphaddd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3803_P_2 */ + { "vphaddsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3804_P_2 */ + { "vpmaddubsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3805_P_2 */ + { "vphsubw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3806_P_2 */ + { "vphsubd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3807_P_2 */ + { "vphsubsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3808_P_2 */ + { "vpsignb", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_3809_P_2 */ + { "vpsignw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_380A_P_2 */ + { "vpsignd", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_380B_P_2 */ + { "vpmulhrsw", { XM, Vex128, EXx } }, + }, + { + /* VEX_W_380C_P_2 */ + { "vpermilps", { XM, Vex, EXx } }, + }, + { + /* VEX_W_380D_P_2 */ + { "vpermilpd", { XM, Vex, EXx } }, + }, + { + /* VEX_W_380E_P_2 */ + { "vtestps", { XM, EXx } }, + }, + { + /* VEX_W_380F_P_2 */ + { "vtestpd", { XM, EXx } }, }, - - /* VEX_LEN_380A_P_2 */ { - { "vpsignd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + /* VEX_W_3817_P_2 */ + { "vptest", { XM, EXx } }, }, - - /* VEX_LEN_380B_P_2 */ { - { "vpmulhrsw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, + /* VEX_W_3818_P_2_M_0 */ + { "vbroadcastss", { XM, Md } }, }, - - /* VEX_LEN_3819_P_2_M_0 */ { - { "(bad)", { XX } }, + /* VEX_W_3819_P_2_M_0 */ { "vbroadcastsd", { XM, Mq } }, }, - - /* VEX_LEN_381A_P_2_M_0 */ { - { "(bad)", { XX } }, + /* VEX_W_381A_P_2_M_0 */ { "vbroadcastf128", { XM, Mxmm } }, }, - - /* VEX_LEN_381C_P_2 */ { + /* VEX_W_381C_P_2 */ { "vpabsb", { XM, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_381D_P_2 */ { + /* VEX_W_381D_P_2 */ { "vpabsw", { XM, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_381E_P_2 */ { + /* VEX_W_381E_P_2 */ { "vpabsd", { XM, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3820_P_2 */ { + /* VEX_W_3820_P_2 */ { "vpmovsxbw", { XM, EXq } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3821_P_2 */ { + /* VEX_W_3821_P_2 */ { "vpmovsxbd", { XM, EXd } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3822_P_2 */ { + /* VEX_W_3822_P_2 */ { "vpmovsxbq", { XM, EXw } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3823_P_2 */ { + /* VEX_W_3823_P_2 */ { "vpmovsxwd", { XM, EXq } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3824_P_2 */ { + /* VEX_W_3824_P_2 */ { "vpmovsxwq", { XM, EXd } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3825_P_2 */ { + /* VEX_W_3825_P_2 */ { "vpmovsxdq", { XM, EXq } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3828_P_2 */ { + /* VEX_W_3828_P_2 */ { "vpmuldq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3829_P_2 */ { + /* VEX_W_3829_P_2 */ { "vpcmpeqq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_382A_P_2_M_0 */ { + /* VEX_W_382A_P_2_M_0 */ { "vmovntdqa", { XM, Mx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_382B_P_2 */ { + /* VEX_W_382B_P_2 */ { "vpackusdw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3830_P_2 */ { + /* VEX_W_382C_P_2_M_0 */ + { "vmaskmovps", { XM, Vex, Mx } }, + }, + { + /* VEX_W_382D_P_2_M_0 */ + { "vmaskmovpd", { XM, Vex, Mx } }, + }, + { + /* VEX_W_382E_P_2_M_0 */ + { "vmaskmovps", { Mx, Vex, XM } }, + }, + { + /* VEX_W_382F_P_2_M_0 */ + { "vmaskmovpd", { Mx, Vex, XM } }, + }, + { + /* VEX_W_3830_P_2 */ { "vpmovzxbw", { XM, EXq } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3831_P_2 */ { + /* VEX_W_3831_P_2 */ { "vpmovzxbd", { XM, EXd } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3832_P_2 */ { + /* VEX_W_3832_P_2 */ { "vpmovzxbq", { XM, EXw } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3833_P_2 */ { + /* VEX_W_3833_P_2 */ { "vpmovzxwd", { XM, EXq } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3834_P_2 */ { + /* VEX_W_3834_P_2 */ { "vpmovzxwq", { XM, EXd } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3835_P_2 */ { + /* VEX_W_3835_P_2 */ { "vpmovzxdq", { XM, EXq } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3837_P_2 */ { + /* VEX_W_3837_P_2 */ { "vpcmpgtq", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3838_P_2 */ { + /* VEX_W_3838_P_2 */ { "vpminsb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3839_P_2 */ { + /* VEX_W_3839_P_2 */ { "vpminsd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_383A_P_2 */ { + /* VEX_W_383A_P_2 */ { "vpminuw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_383B_P_2 */ { + /* VEX_W_383B_P_2 */ { "vpminud", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_383C_P_2 */ { + /* VEX_W_383C_P_2 */ { "vpmaxsb", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_383D_P_2 */ { + /* VEX_W_383D_P_2 */ { "vpmaxsd", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_383E_P_2 */ { + /* VEX_W_383E_P_2 */ { "vpmaxuw", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_383F_P_2 */ { + /* VEX_W_383F_P_2 */ { "vpmaxud", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3840_P_2 */ { + /* VEX_W_3840_P_2 */ { "vpmulld", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3841_P_2 */ { + /* VEX_W_3841_P_2 */ { "vphminposuw", { XM, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_38DB_P_2 */ { + /* VEX_W_38DB_P_2 */ { "vaesimc", { XM, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_38DC_P_2 */ { + /* VEX_W_38DC_P_2 */ { "vaesenc", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_38DD_P_2 */ { + /* VEX_W_38DD_P_2 */ { "vaesenclast", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_38DE_P_2 */ { + /* VEX_W_38DE_P_2 */ { "vaesdec", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_38DF_P_2 */ { + /* VEX_W_38DF_P_2 */ { "vaesdeclast", { XM, Vex128, EXx } }, - { "(bad)", { XX } }, }, - - /* VEX_LEN_3A06_P_2 */ { - { "(bad)", { XX } }, - { "vperm2f128", { XM, Vex256, EXx, Ib } }, + /* VEX_W_3A04_P_2 */ + { "vpermilps", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3A0A_P_2 */ { - { "vroundss", { XM, Vex128, EXd, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A05_P_2 */ + { "vpermilpd", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3A0B_P_2 */ { - { "vroundsd", { XM, Vex128, EXq, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A06_P_2 */ + { "vperm2f128", { XM, Vex256, EXx, Ib } }, }, - - /* VEX_LEN_3A0E_P_2 */ { - { "vpblendw", { XM, Vex128, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A08_P_2 */ + { "vroundps", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3A0F_P_2 */ { - { "vpalignr", { XM, Vex128, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A09_P_2 */ + { "vroundpd", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3A14_P_2 */ { - { "vpextrb", { Edqb, XM, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A0A_P_2 */ + { "vroundss", { XMScalar, VexScalar, EXdScalar, Ib } }, }, - - /* VEX_LEN_3A15_P_2 */ { - { "vpextrw", { Edqw, XM, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A0B_P_2 */ + { "vroundsd", { XMScalar, VexScalar, EXqScalar, Ib } }, }, - - /* VEX_LEN_3A16_P_2 */ { - { "vpextrK", { Edq, XM, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A0C_P_2 */ + { "vblendps", { XM, Vex, EXx, Ib } }, }, - - /* VEX_LEN_3A17_P_2 */ { - { "vextractps", { Edqd, XM, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A0D_P_2 */ + { "vblendpd", { XM, Vex, EXx, Ib } }, }, - - /* VEX_LEN_3A18_P_2 */ { - { "(bad)", { XX } }, - { "vinsertf128", { XM, Vex256, EXxmm, Ib } }, + /* VEX_W_3A0E_P_2 */ + { "vpblendw", { XM, Vex128, EXx, Ib } }, }, - - /* VEX_LEN_3A19_P_2 */ { - { "(bad)", { XX } }, - { "vextractf128", { EXxmm, XM, Ib } }, + /* VEX_W_3A0F_P_2 */ + { "vpalignr", { XM, Vex128, EXx, Ib } }, }, - - /* VEX_LEN_3A20_P_2 */ { - { "vpinsrb", { XM, Vex128, Edqb, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A14_P_2 */ + { "vpextrb", { Edqb, XM, Ib } }, }, - - /* VEX_LEN_3A21_P_2 */ { - { "vinsertps", { XM, Vex128, EXd, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A15_P_2 */ + { "vpextrw", { Edqw, XM, Ib } }, }, - - /* VEX_LEN_3A22_P_2 */ { - { "vpinsrK", { XM, Vex128, Edq, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A18_P_2 */ + { "vinsertf128", { XM, Vex256, EXxmm, Ib } }, }, - - /* VEX_LEN_3A41_P_2 */ { - { "vdppd", { XM, Vex128, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A19_P_2 */ + { "vextractf128", { EXxmm, XM, Ib } }, }, - - /* VEX_LEN_3A42_P_2 */ { - { "vmpsadbw", { XM, Vex128, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A20_P_2 */ + { "vpinsrb", { XM, Vex128, Edqb, Ib } }, }, - - /* VEX_LEN_3A44_P_2 */ { - { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL } }, - { "(bad)", { XX } }, + /* VEX_W_3A21_P_2 */ + { "vinsertps", { XM, Vex128, EXd, Ib } }, }, - - /* VEX_LEN_3A4C_P_2 */ { - { "vpblendvb", { XM, Vex128, EXx, XMVexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A40_P_2 */ + { "vdpps", { XM, Vex, EXx, Ib } }, }, - - /* VEX_LEN_3A60_P_2 */ { - { "vpcmpestrm", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A41_P_2 */ + { "vdppd", { XM, Vex128, EXx, Ib } }, }, - - /* VEX_LEN_3A61_P_2 */ { - { "vpcmpestri", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A42_P_2 */ + { "vmpsadbw", { XM, Vex128, EXx, Ib } }, }, - - /* VEX_LEN_3A62_P_2 */ { - { "vpcmpistrm", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A44_P_2 */ + { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL } }, }, - - /* VEX_LEN_3A63_P_2 */ { - { "vpcmpistri", { XM, EXx, Ib } }, - { "(bad)", { XX } }, + /* VEX_W_3A48_P_2 */ + { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } }, + { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } }, }, - - /* VEX_LEN_3A6A_P_2 */ { - { "vfmaddss", { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A49_P_2 */ + { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } }, + { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } }, }, - - /* VEX_LEN_3A6B_P_2 */ { - { "vfmaddsd", { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A4A_P_2 */ + { "vblendvps", { XM, Vex, EXx, XMVexI4 } }, }, - - /* VEX_LEN_3A6E_P_2 */ { - { "vfmsubss", { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A4B_P_2 */ + { "vblendvpd", { XM, Vex, EXx, XMVexI4 } }, }, - - /* VEX_LEN_3A6F_P_2 */ { - { "vfmsubsd", { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A4C_P_2 */ + { "vpblendvb", { XM, Vex128, EXx, XMVexI4 } }, }, - - /* VEX_LEN_3A7A_P_2 */ { - { "vfnmaddss", { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A60_P_2 */ + { "vpcmpestrm", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3A7B_P_2 */ { - { "vfnmaddsd", { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A61_P_2 */ + { "vpcmpestri", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3A7E_P_2 */ { - { "vfnmsubss", { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A62_P_2 */ + { "vpcmpistrm", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3A7F_P_2 */ { - { "vfnmsubsd", { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } }, - { "(bad)", { XX } }, + /* VEX_W_3A63_P_2 */ + { "vpcmpistri", { XM, EXx, Ib } }, }, - - /* VEX_LEN_3ADF_P_2 */ { + /* VEX_W_3ADF_P_2 */ { "vaeskeygenassist", { XM, EXx, Ib } }, - { "(bad)", { XX } }, }, }; @@ -8411,7 +10235,6 @@ static const struct dis386 mod_table[][2] = { { /* MOD_8D */ { "leaS", { Gv, M } }, - { "(bad)", { XX } }, }, { /* MOD_0F01_REG_0 */ @@ -8446,7 +10269,6 @@ static const struct dis386 mod_table[][2] = { { /* MOD_0F13 */ { "movlpX", { EXq, XM } }, - { "(bad)", { XX } }, }, { /* MOD_0F16_PREFIX_0 */ @@ -8456,166 +10278,156 @@ static const struct dis386 mod_table[][2] = { { /* MOD_0F17 */ { "movhpX", { EXq, XM } }, - { "(bad)", { XX } }, }, { /* MOD_0F18_REG_0 */ { "prefetchnta", { Mb } }, - { "(bad)", { XX } }, }, { /* MOD_0F18_REG_1 */ { "prefetcht0", { Mb } }, - { "(bad)", { XX } }, }, { /* MOD_0F18_REG_2 */ { "prefetcht1", { Mb } }, - { "(bad)", { XX } }, }, { /* MOD_0F18_REG_3 */ { "prefetcht2", { Mb } }, - { "(bad)", { XX } }, }, { /* MOD_0F20 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "movZ", { Rm, Cm } }, }, { /* MOD_0F21 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "movZ", { Rm, Dm } }, }, { /* MOD_0F22 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "movZ", { Cm, Rm } }, }, { /* MOD_0F23 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "movZ", { Dm, Rm } }, }, { /* MOD_0F24 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "movL", { Rd, Td } }, }, { /* MOD_0F26 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "movL", { Td, Rd } }, }, { /* MOD_0F2B_PREFIX_0 */ {"movntps", { Mx, XM } }, - { "(bad)", { XX } }, }, { /* MOD_0F2B_PREFIX_1 */ {"movntss", { Md, XM } }, - { "(bad)", { XX } }, }, { /* MOD_0F2B_PREFIX_2 */ {"movntpd", { Mx, XM } }, - { "(bad)", { XX } }, }, { /* MOD_0F2B_PREFIX_3 */ {"movntsd", { Mq, XM } }, - { "(bad)", { XX } }, }, { /* MOD_0F51 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "movmskpX", { Gdq, XS } }, }, { /* MOD_0F71_REG_2 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "psrlw", { MS, Ib } }, }, { /* MOD_0F71_REG_4 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "psraw", { MS, Ib } }, }, { /* MOD_0F71_REG_6 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "psllw", { MS, Ib } }, }, { /* MOD_0F72_REG_2 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "psrld", { MS, Ib } }, }, { /* MOD_0F72_REG_4 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "psrad", { MS, Ib } }, }, { /* MOD_0F72_REG_6 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "pslld", { MS, Ib } }, }, { /* MOD_0F73_REG_2 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "psrlq", { MS, Ib } }, }, { /* MOD_0F73_REG_3 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F73_REG_3) }, }, { /* MOD_0F73_REG_6 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "psllq", { MS, Ib } }, }, { /* MOD_0F73_REG_7 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F73_REG_7) }, }, { /* MOD_0FAE_REG_0 */ - { "fxsave", { M } }, - { "(bad)", { XX } }, + { "fxsave", { FXSAVE } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_0) }, }, { /* MOD_0FAE_REG_1 */ - { "fxrstor", { M } }, - { "(bad)", { XX } }, + { "fxrstor", { FXSAVE } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_1) }, }, { /* MOD_0FAE_REG_2 */ { "ldmxcsr", { Md } }, - { "(bad)", { XX } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_2) }, }, { /* MOD_0FAE_REG_3 */ { "stmxcsr", { Md } }, - { "(bad)", { XX } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_3) }, }, { /* MOD_0FAE_REG_4 */ - { "xsave", { M } }, - { "(bad)", { XX } }, + { "xsave", { FXSAVE } }, }, { /* MOD_0FAE_REG_5 */ - { "xrstor", { M } }, + { "xrstor", { FXSAVE } }, { RM_TABLE (RM_0FAE_REG_5) }, }, { /* MOD_0FAE_REG_6 */ - { "xsaveopt", { M } }, + { "xsaveopt", { FXSAVE } }, { RM_TABLE (RM_0FAE_REG_6) }, }, { @@ -8626,52 +10438,44 @@ static const struct dis386 mod_table[][2] = { { /* MOD_0FB2 */ { "lssS", { Gv, Mp } }, - { "(bad)", { XX } }, }, { /* MOD_0FB4 */ { "lfsS", { Gv, Mp } }, - { "(bad)", { XX } }, }, { /* MOD_0FB5 */ { "lgsS", { Gv, Mp } }, - { "(bad)", { XX } }, }, { /* MOD_0FC7_REG_6 */ { PREFIX_TABLE (PREFIX_0FC7_REG_6) }, - { "(bad)", { XX } }, + { "rdrand", { Ev } }, }, { /* MOD_0FC7_REG_7 */ { "vmptrst", { Mq } }, - { "(bad)", { XX } }, }, { /* MOD_0FD7 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "pmovmskb", { Gdq, MS } }, }, { /* MOD_0FE7_PREFIX_2 */ { "movntdq", { Mx, XM } }, - { "(bad)", { XX } }, }, { /* MOD_0FF0_PREFIX_3 */ { "lddqu", { XM, M } }, - { "(bad)", { XX } }, }, { /* MOD_0F382A_PREFIX_2 */ { "movntdqa", { XM, Mx } }, - { "(bad)", { XX } }, }, { /* MOD_62_32BIT */ { "bound{S|}", { Gv, Ma } }, - { "(bad)", { XX } }, }, { /* MOD_C4_32BIT */ @@ -8691,7 +10495,6 @@ static const struct dis386 mod_table[][2] = { { /* MOD_VEX_13 */ { VEX_LEN_TABLE (VEX_LEN_13_M_0) }, - { "(bad)", { XX } }, }, { /* MOD_VEX_16_PREFIX_0 */ @@ -8701,168 +10504,139 @@ static const struct dis386 mod_table[][2] = { { /* MOD_VEX_17 */ { VEX_LEN_TABLE (VEX_LEN_17_M_0) }, - { "(bad)", { XX } }, }, { /* MOD_VEX_2B */ - { "vmovntpX", { Mx, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_2B_M_0) }, }, { - /* MOD_VEX_51 */ - { "(bad)", { XX } }, - { "vmovmskpX", { Gdq, XS } }, + /* MOD_VEX_50 */ + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_50_M_0) }, }, { /* MOD_VEX_71_REG_2 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_71_REG_2) }, }, { /* MOD_VEX_71_REG_4 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_71_REG_4) }, }, { /* MOD_VEX_71_REG_6 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_71_REG_6) }, }, { /* MOD_VEX_72_REG_2 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_72_REG_2) }, }, { /* MOD_VEX_72_REG_4 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_72_REG_4) }, }, { /* MOD_VEX_72_REG_6 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_72_REG_6) }, }, { /* MOD_VEX_73_REG_2 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_73_REG_2) }, }, { /* MOD_VEX_73_REG_3 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_73_REG_3) }, }, { /* MOD_VEX_73_REG_6 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_73_REG_6) }, }, { /* MOD_VEX_73_REG_7 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_73_REG_7) }, }, { /* MOD_VEX_AE_REG_2 */ { VEX_LEN_TABLE (VEX_LEN_AE_R_2_M_0) }, - { "(bad)", { XX } }, }, { /* MOD_VEX_AE_REG_3 */ { VEX_LEN_TABLE (VEX_LEN_AE_R_3_M_0) }, - { "(bad)", { XX } }, }, { /* MOD_VEX_D7_PREFIX_2 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_D7_P_2_M_1) }, }, { /* MOD_VEX_E7_PREFIX_2 */ - { "vmovntdq", { Mx, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_E7_P_2_M_0) }, }, { /* MOD_VEX_F0_PREFIX_3 */ - { "vlddqu", { XM, M } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_F0_P_3_M_0) }, }, { /* MOD_VEX_3818_PREFIX_2 */ - { "vbroadcastss", { XM, Md } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_3818_P_2_M_0) }, }, { /* MOD_VEX_3819_PREFIX_2 */ { VEX_LEN_TABLE (VEX_LEN_3819_P_2_M_0) }, - { "(bad)", { XX } }, }, { /* MOD_VEX_381A_PREFIX_2 */ { VEX_LEN_TABLE (VEX_LEN_381A_P_2_M_0) }, - { "(bad)", { XX } }, }, { /* MOD_VEX_382A_PREFIX_2 */ { VEX_LEN_TABLE (VEX_LEN_382A_P_2_M_0) }, - { "(bad)", { XX } }, }, { /* MOD_VEX_382C_PREFIX_2 */ - { "vmaskmovps", { XM, Vex, Mx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_382C_P_2_M_0) }, }, { /* MOD_VEX_382D_PREFIX_2 */ - { "vmaskmovpd", { XM, Vex, Mx } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_382D_P_2_M_0) }, }, { /* MOD_VEX_382E_PREFIX_2 */ - { "vmaskmovps", { Mx, Vex, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_382E_P_2_M_0) }, }, { /* MOD_VEX_382F_PREFIX_2 */ - { "vmaskmovpd", { Mx, Vex, XM } }, - { "(bad)", { XX } }, + { VEX_W_TABLE (VEX_W_382F_P_2_M_0) }, }, }; static const struct dis386 rm_table[][8] = { { /* RM_0F01_REG_0 */ - { "(bad)", { XX } }, + { Bad_Opcode }, { "vmcall", { Skip_MODRM } }, { "vmlaunch", { Skip_MODRM } }, { "vmresume", { Skip_MODRM } }, { "vmxoff", { Skip_MODRM } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, { /* RM_0F01_REG_1 */ { "monitor", { { OP_Monitor, 0 } } }, { "mwait", { { OP_Mwait, 0 } } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, { /* RM_0F01_REG_2 */ { "xgetbv", { Skip_MODRM } }, { "xsetbv", { Skip_MODRM } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, { /* RM_0F01_REG_3 */ @@ -8879,61 +10653,53 @@ static const struct dis386 rm_table[][8] = { /* RM_0F01_REG_7 */ { "swapgs", { Skip_MODRM } }, { "rdtscp", { Skip_MODRM } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, { /* RM_0FAE_REG_5 */ { "lfence", { Skip_MODRM } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, { /* RM_0FAE_REG_6 */ { "mfence", { Skip_MODRM } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, { /* RM_0FAE_REG_7 */ { "sfence", { Skip_MODRM } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, }, }; #define INTERNAL_DISASSEMBLER_ERROR _("") -static void +/* We use the high bit to indicate different name for the same + prefix. */ +#define ADDR16_PREFIX (0x67 | 0x100) +#define ADDR32_PREFIX (0x67 | 0x200) +#define DATA16_PREFIX (0x66 | 0x100) +#define DATA32_PREFIX (0x66 | 0x200) +#define REP_PREFIX (0xf3 | 0x100) + +static int ckprefix (void) { - int newrex; + int newrex, i, length; rex = 0; - rex_original = 0; rex_ignored = 0; prefixes = 0; used_prefixes = 0; rex_used = 0; - while (1) + last_lock_prefix = -1; + last_repz_prefix = -1; + last_repnz_prefix = -1; + last_data_prefix = -1; + last_addr_prefix = -1; + last_rex_prefix = -1; + last_seg_prefix = -1; + for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++) + all_prefixes[i] = 0; + i = 0; + length = 0; + /* The maximum instruction length is 15bytes. */ + while (length < MAX_CODE_LENGTH - 1) { FETCH_DATA (the_info, codep + 1); newrex = 0; @@ -8956,43 +10722,55 @@ ckprefix (void) case 0x4d: case 0x4e: case 0x4f: - if (address_mode == mode_64bit) - newrex = *codep; - else - return; + if (address_mode == mode_64bit) + newrex = *codep; + else + return 1; + last_rex_prefix = i; break; case 0xf3: prefixes |= PREFIX_REPZ; + last_repz_prefix = i; break; case 0xf2: prefixes |= PREFIX_REPNZ; + last_repnz_prefix = i; break; case 0xf0: prefixes |= PREFIX_LOCK; + last_lock_prefix = i; break; case 0x2e: prefixes |= PREFIX_CS; + last_seg_prefix = i; break; case 0x36: prefixes |= PREFIX_SS; + last_seg_prefix = i; break; case 0x3e: prefixes |= PREFIX_DS; + last_seg_prefix = i; break; case 0x26: prefixes |= PREFIX_ES; + last_seg_prefix = i; break; case 0x64: prefixes |= PREFIX_FS; + last_seg_prefix = i; break; case 0x65: prefixes |= PREFIX_GS; + last_seg_prefix = i; break; case 0x66: prefixes |= PREFIX_DATA; + last_data_prefix = i; break; case 0x67: prefixes |= PREFIX_ADDR; + last_addr_prefix = i; break; case FWAIT_OPCODE: /* fwait is really an instruction. If there are prefixes @@ -9002,22 +10780,47 @@ ckprefix (void) { prefixes |= PREFIX_FWAIT; codep++; - return; + return 1; } prefixes = PREFIX_FWAIT; break; default: - return; + return 1; } /* Rex is ignored when followed by another prefix. */ if (rex) { rex_used = rex; - return; + return 1; } + if (*codep != FWAIT_OPCODE) + all_prefixes[i++] = *codep; rex = newrex; - rex_original = rex; codep++; + length++; + } + return 0; +} + +static int +seg_prefix (int pref) +{ + switch (pref) + { + case 0x2e: + return PREFIX_CS; + case 0x36: + return PREFIX_SS; + case 0x3e: + return PREFIX_DS; + case 0x26: + return PREFIX_ES; + case 0x64: + return PREFIX_FS; + case 0x65: + return PREFIX_GS; + default: + return 0; } } @@ -9094,6 +10897,16 @@ prefix_name (int pref, int sizeflag) return (sizeflag & AFLAG) ? "addr16" : "addr32"; case FWAIT_OPCODE: return "fwait"; + case ADDR16_PREFIX: + return "addr16"; + case ADDR32_PREFIX: + return "addr32"; + case DATA16_PREFIX: + return "data16"; + case DATA32_PREFIX: + return "data32"; + case REP_PREFIX: + return "rep"; default: return NULL; } @@ -9173,12 +10986,15 @@ with the -M switch (multiple options should be separated by commas):\n")); fprintf (stream, _(" suffix Always display instruction suffix in AT&T syntax\n")); } +/* Bad opcode. */ +static const struct dis386 bad_opcode = { "(bad)", { XX } }; + /* Get a pointer to struct dis386 with a valid name. */ static const struct dis386 * get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) { - int index, vex_table_index; + int vindex, vex_table_index; if (dp->name != NULL) return dp; @@ -9190,8 +11006,8 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) break; case USE_MOD_TABLE: - index = modrm.mod == 0x3 ? 1 : 0; - dp = &mod_table[dp->op[1].bytemode][index]; + vindex = modrm.mod == 0x3 ? 1 : 0; + dp = &mod_table[dp->op[1].bytemode][vindex]; break; case USE_RM_TABLE: @@ -9205,16 +11021,16 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) switch (vex.prefix) { case 0: - index = 0; + vindex = 0; break; case REPE_PREFIX_OPCODE: - index = 1; + vindex = 1; break; case DATA_PREFIX_OPCODE: - index = 2; + vindex = 2; break; case REPNE_PREFIX_OPCODE: - index = 3; + vindex = 3; break; default: abort (); @@ -9223,12 +11039,12 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) } else { - index = 0; + vindex = 0; used_prefixes |= (prefixes & PREFIX_REPZ); if (prefixes & PREFIX_REPZ) { - index = 1; - repz_prefix = NULL; + vindex = 1; + all_prefixes[last_repz_prefix] = 0; } else { @@ -9237,55 +11053,118 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) used_prefixes |= (prefixes & PREFIX_REPNZ); if (prefixes & PREFIX_REPNZ) { - index = 3; - repnz_prefix = NULL; + vindex = 3; + all_prefixes[last_repnz_prefix] = 0; } else { used_prefixes |= (prefixes & PREFIX_DATA); if (prefixes & PREFIX_DATA) { - index = 2; - data_prefix = NULL; + vindex = 2; + all_prefixes[last_data_prefix] = 0; } } } } - dp = &prefix_table[dp->op[1].bytemode][index]; + dp = &prefix_table[dp->op[1].bytemode][vindex]; break; case USE_X86_64_TABLE: - index = address_mode == mode_64bit ? 1 : 0; - dp = &x86_64_table[dp->op[1].bytemode][index]; + vindex = address_mode == mode_64bit ? 1 : 0; + dp = &x86_64_table[dp->op[1].bytemode][vindex]; break; case USE_3BYTE_TABLE: FETCH_DATA (info, codep + 2); - index = *codep++; - dp = &three_byte_table[dp->op[1].bytemode][index]; + vindex = *codep++; + dp = &three_byte_table[dp->op[1].bytemode][vindex]; modrm.mod = (*codep >> 6) & 3; modrm.reg = (*codep >> 3) & 7; modrm.rm = *codep & 7; break; - case USE_VEX_LEN_TABLE: - if (!need_vex) - abort (); + case USE_VEX_LEN_TABLE: + if (!need_vex) + abort (); + + switch (vex.length) + { + case 128: + vindex = 0; + break; + case 256: + vindex = 1; + break; + default: + abort (); + break; + } + + dp = &vex_len_table[dp->op[1].bytemode][vindex]; + break; + + case USE_XOP_8F_TABLE: + FETCH_DATA (info, codep + 3); + /* All bits in the REX prefix are ignored. */ + rex_ignored = rex; + rex = ~(*codep >> 5) & 0x7; + + /* VEX_TABLE_INDEX is the mmmmm part of the XOP byte 1 "RCB.mmmmm". */ + switch ((*codep & 0x1f)) + { + default: + dp = &bad_opcode; + return dp; + case 0x8: + vex_table_index = XOP_08; + break; + case 0x9: + vex_table_index = XOP_09; + break; + case 0xa: + vex_table_index = XOP_0A; + break; + } + codep++; + vex.w = *codep & 0x80; + if (vex.w && address_mode == mode_64bit) + rex |= REX_W; + + vex.register_specifier = (~(*codep >> 3)) & 0xf; + if (address_mode != mode_64bit + && vex.register_specifier > 0x7) + { + dp = &bad_opcode; + return dp; + } - switch (vex.length) + vex.length = (*codep & 0x4) ? 256 : 128; + switch ((*codep & 0x3)) { - case 128: - index = 0; + case 0: + vex.prefix = 0; break; - case 256: - index = 1; + case 1: + vex.prefix = DATA_PREFIX_OPCODE; break; - default: - abort (); + case 2: + vex.prefix = REPE_PREFIX_OPCODE; + break; + case 3: + vex.prefix = REPNE_PREFIX_OPCODE; break; } + need_vex = 1; + need_vex_reg = 1; + codep++; + vindex = *codep++; + dp = &xop_table[vex_table_index][vindex]; - dp = &vex_len_table[dp->op[1].bytemode][index]; + FETCH_DATA (info, codep + 1); + modrm.mod = (*codep >> 6) & 3; + modrm.reg = (*codep >> 3) & 7; + modrm.rm = *codep & 7; break; case USE_VEX_C4_TABLE: @@ -9296,15 +11175,16 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) switch ((*codep & 0x1f)) { default: - BadOp (); + dp = &bad_opcode; + return dp; case 0x1: - vex_table_index = 0; + vex_table_index = VEX_0F; break; case 0x2: - vex_table_index = 1; + vex_table_index = VEX_0F38; break; case 0x3: - vex_table_index = 2; + vex_table_index = VEX_0F3A; break; } codep++; @@ -9315,7 +11195,10 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) vex.register_specifier = (~(*codep >> 3)) & 0xf; if (address_mode != mode_64bit && vex.register_specifier > 0x7) - BadOp (); + { + dp = &bad_opcode; + return dp; + } vex.length = (*codep & 0x4) ? 256 : 128; switch ((*codep & 0x3)) @@ -9336,10 +11219,10 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) need_vex = 1; need_vex_reg = 1; codep++; - index = *codep++; - dp = &vex_table[vex_table_index][index]; + vindex = *codep++; + dp = &vex_table[vex_table_index][vindex]; /* There is no MODRM byte for VEX [82|77]. */ - if (index != 0x77 && index != 0x82) + if (vindex != 0x77 && vindex != 0x82) { FETCH_DATA (info, codep + 1); modrm.mod = (*codep >> 6) & 3; @@ -9357,7 +11240,12 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) vex.register_specifier = (~(*codep >> 3)) & 0xf; if (address_mode != mode_64bit && vex.register_specifier > 0x7) - BadOp (); + { + dp = &bad_opcode; + return dp; + } + + vex.w = 0; vex.length = (*codep & 0x4) ? 256 : 128; switch ((*codep & 0x3)) @@ -9378,10 +11266,10 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) need_vex = 1; need_vex_reg = 1; codep++; - index = *codep++; - dp = &vex_table[dp->op[1].bytemode][index]; + vindex = *codep++; + dp = &vex_table[dp->op[1].bytemode][vindex]; /* There is no MODRM byte for VEX [82|77]. */ - if (index != 0x77 && index != 0x82) + if (vindex != 0x77 && vindex != 0x82) { FETCH_DATA (info, codep + 1); modrm.mod = (*codep >> 6) & 3; @@ -9390,6 +11278,17 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) } break; + case USE_VEX_W_TABLE: + if (!need_vex) + abort (); + + dp = &vex_w_table[dp->op[1].bytemode][vex.w ? 1 : 0]; + break; + + case 0: + dp = &bad_opcode; + break; + default: abort (); } @@ -9400,6 +11299,22 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) return get_valid_dis386 (dp, info); } +static void +get_sib (disassemble_info *info) +{ + /* If modrm.mod == 3, operand must be register. */ + if (need_modrm + && address_mode != mode_16bit + && modrm.mod != 3 + && modrm.rm == 4) + { + FETCH_DATA (info, codep + 2); + sib.index = (codep [1] >> 3) & 7; + sib.scale = (codep [1] >> 6) & 3; + sib.base = codep [1] & 7; + } +} + static int print_insn (bfd_vma pc, disassemble_info *info) { @@ -9410,9 +11325,8 @@ print_insn (bfd_vma pc, disassemble_info *info) int sizeflag; const char *p; struct dis_private priv; - unsigned char op; - char prefix_obuf[32]; - char *prefix_obufp; + int prefix_length; + int default_prefixes; if (info->mach == bfd_mach_x86_64_intel_syntax || info->mach == bfd_mach_x86_64 @@ -9508,6 +11422,9 @@ print_insn (bfd_vma pc, disassemble_info *info) names8 = intel_names8; names8rex = intel_names8rex; names_seg = intel_names_seg; + names_mm = intel_names_mm; + names_xmm = intel_names_xmm; + names_ymm = intel_names_ymm; index64 = intel_index64; index32 = intel_index32; index16 = intel_index16; @@ -9524,6 +11441,9 @@ print_insn (bfd_vma pc, disassemble_info *info) names8 = att_names8; names8rex = att_names8rex; names_seg = att_names_seg; + names_mm = att_names_mm; + names_xmm = att_names_xmm; + names_ymm = att_names_ymm; index64 = att_index64; index32 = att_index32; index16 = att_index16; @@ -9584,31 +11504,31 @@ print_insn (bfd_vma pc, disassemble_info *info) } obufp = obuf; - ckprefix (); + sizeflag = priv.orig_sizeflag; + + if (!ckprefix () || rex_used) + { + /* Too many prefixes or unused REX prefixes. */ + for (i = 0; + all_prefixes[i] && i < (int) ARRAY_SIZE (all_prefixes); + i++) + (*info->fprintf_func) (info->stream, "%s", + prefix_name (all_prefixes[i], sizeflag)); + return 1; + } insn_codep = codep; - sizeflag = priv.orig_sizeflag; FETCH_DATA (info, codep + 1); two_source_ops = (*codep == 0x62) || (*codep == 0xc8); if (((prefixes & PREFIX_FWAIT) - && ((*codep < 0xd8) || (*codep > 0xdf))) - || (rex && rex_used)) + && ((*codep < 0xd8) || (*codep > 0xdf)))) { - const char *name; - - /* fwait not followed by floating point instruction, or rex followed - by other prefixes. Print the first prefix. */ - name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag); - if (name == NULL) - name = INTERNAL_DISASSEMBLER_ERROR; - (*info->fprintf_func) (info->stream, "%s", name); + (*info->fprintf_func) (info->stream, "fwait"); return 1; } - op = 0; - if (*codep == 0x0f) { unsigned char threebyte; @@ -9626,44 +11546,26 @@ print_insn (bfd_vma pc, disassemble_info *info) } if ((prefixes & PREFIX_REPZ)) - { - repz_prefix = "repz "; - used_prefixes |= PREFIX_REPZ; - } - else - repz_prefix = NULL; - + used_prefixes |= PREFIX_REPZ; if ((prefixes & PREFIX_REPNZ)) - { - repnz_prefix = "repnz "; - used_prefixes |= PREFIX_REPNZ; - } - else - repnz_prefix = NULL; - + used_prefixes |= PREFIX_REPNZ; if ((prefixes & PREFIX_LOCK)) - { - lock_prefix = "lock "; - used_prefixes |= PREFIX_LOCK; - } - else - lock_prefix = NULL; + used_prefixes |= PREFIX_LOCK; - addr_prefix = NULL; + default_prefixes = 0; if (prefixes & PREFIX_ADDR) { sizeflag ^= AFLAG; if (dp->op[2].bytemode != loop_jcxz_mode || intel_syntax) { if ((sizeflag & AFLAG) || address_mode == mode_64bit) - addr_prefix = "addr32 "; + all_prefixes[last_addr_prefix] = ADDR32_PREFIX; else - addr_prefix = "addr16 "; - used_prefixes |= PREFIX_ADDR; + all_prefixes[last_addr_prefix] = ADDR16_PREFIX; + default_prefixes |= PREFIX_ADDR; } } - data_prefix = NULL; if ((prefixes & PREFIX_DATA)) { sizeflag ^= DFLAG; @@ -9672,10 +11574,15 @@ print_insn (bfd_vma pc, disassemble_info *info) && !intel_syntax) { if (sizeflag & DFLAG) - data_prefix = "data32 "; + all_prefixes[last_data_prefix] = DATA32_PREFIX; else - data_prefix = "data16 "; - used_prefixes |= PREFIX_DATA; + all_prefixes[last_data_prefix] = DATA16_PREFIX; + default_prefixes |= PREFIX_DATA; + } + else if (rex & REX_W) + { + /* REX_W will override PREFIX_DATA. */ + default_prefixes |= PREFIX_DATA; } } @@ -9687,18 +11594,21 @@ print_insn (bfd_vma pc, disassemble_info *info) modrm.rm = *codep & 7; } + need_vex = 0; + need_vex_reg = 0; + vex_w_done = 0; + if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE) { + get_sib (info); dofloat (sizeflag); } else { - need_vex = 0; - need_vex_reg = 0; - vex_w_done = 0; dp = get_valid_dis386 (dp, info); if (dp != NULL && putop (dp->name, sizeflag) == 0) { + get_sib (info); for (i = 0; i < MAX_OPERANDS; ++i) { obufp = op_out[i]; @@ -9713,43 +11623,62 @@ print_insn (bfd_vma pc, disassemble_info *info) separately. If we don't do this, we'll wind up printing an instruction stream which does not precisely correspond to the bytes we are disassembling. */ - if ((prefixes & ~used_prefixes) != 0) + if ((prefixes & ~(used_prefixes | default_prefixes)) != 0) { - const char *name; - - name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag); - if (name == NULL) - name = INTERNAL_DISASSEMBLER_ERROR; - (*info->fprintf_func) (info->stream, "%s", name); - return 1; + for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++) + if (all_prefixes[i]) + { + const char *name; + name = prefix_name (all_prefixes[i], priv.orig_sizeflag); + if (name == NULL) + name = INTERNAL_DISASSEMBLER_ERROR; + (*info->fprintf_func) (info->stream, "%s", name); + return 1; + } } - if ((rex_original & ~rex_used) || rex_ignored) + + /* Check if the REX prefix is used. */ + if (rex_ignored == 0 && (rex ^ rex_used) == 0) + all_prefixes[last_rex_prefix] = 0; + + /* Check if the SEG prefix is used. */ + if ((prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS | PREFIX_ES + | PREFIX_FS | PREFIX_GS)) != 0 + && (used_prefixes + & seg_prefix (all_prefixes[last_seg_prefix])) != 0) + all_prefixes[last_seg_prefix] = 0; + + /* Check if the ADDR prefix is used. */ + if ((prefixes & PREFIX_ADDR) != 0 + && (used_prefixes & PREFIX_ADDR) != 0) + all_prefixes[last_addr_prefix] = 0; + + /* Check if the DATA prefix is used. */ + if ((prefixes & PREFIX_DATA) != 0 + && (used_prefixes & PREFIX_DATA) != 0) + all_prefixes[last_data_prefix] = 0; + + prefix_length = 0; + for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++) + if (all_prefixes[i]) + { + const char *name; + name = prefix_name (all_prefixes[i], sizeflag); + if (name == NULL) + abort (); + prefix_length += strlen (name) + 1; + (*info->fprintf_func) (info->stream, "%s ", name); + } + + /* Check maximum code length. */ + if ((codep - start_codep) > MAX_CODE_LENGTH) { - const char *name; - name = prefix_name (rex_original, priv.orig_sizeflag); - if (name == NULL) - name = INTERNAL_DISASSEMBLER_ERROR; - (*info->fprintf_func) (info->stream, "%s ", name); + (*info->fprintf_func) (info->stream, "(bad)"); + return MAX_CODE_LENGTH; } - prefix_obuf[0] = 0; - prefix_obufp = prefix_obuf; - if (lock_prefix) - prefix_obufp = stpcpy (prefix_obufp, lock_prefix); - if (repz_prefix) - prefix_obufp = stpcpy (prefix_obufp, repz_prefix); - if (repnz_prefix) - prefix_obufp = stpcpy (prefix_obufp, repnz_prefix); - if (addr_prefix) - prefix_obufp = stpcpy (prefix_obufp, addr_prefix); - if (data_prefix) - prefix_obufp = stpcpy (prefix_obufp, data_prefix); - - if (prefix_obuf[0] != 0) - (*info->fprintf_func) (info->stream, "%s", prefix_obuf); - obufp = mnemonicendp; - for (i = strlen (obuf) + strlen (prefix_obuf); i < 6; i++) + for (i = strlen (obuf) + prefix_length; i < 6; i++) oappend (" "); oappend (" "); (*info->fprintf_func) (info->stream, "%s", obuf); @@ -9983,7 +11912,7 @@ static const struct dis386 float_reg[][8] = { { "fld", { STi } }, { "fxch", { STi } }, { FGRPd9_2 }, - { "(bad)", { XX } }, + { Bad_Opcode }, { FGRPd9_4 }, { FGRPd9_5 }, { FGRPd9_6 }, @@ -9995,10 +11924,10 @@ static const struct dis386 float_reg[][8] = { { "fcmove", { ST, STi } }, { "fcmovbe",{ ST, STi } }, { "fcmovu", { ST, STi } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { FGRPda_5 }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, }, /* db */ { @@ -10009,14 +11938,14 @@ static const struct dis386 float_reg[][8] = { { FGRPdb_4 }, { "fucomi", { ST, STi } }, { "fcomi", { ST, STi } }, - { "(bad)", { XX } }, + { Bad_Opcode }, }, /* dc */ { { "fadd", { STi, ST } }, { "fmul", { STi, ST } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, { "fsub!M", { STi, ST } }, { "fsubM", { STi, ST } }, { "fdiv!M", { STi, ST } }, @@ -10025,19 +11954,19 @@ static const struct dis386 float_reg[][8] = { /* dd */ { { "ffree", { STi } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { "fst", { STi } }, { "fstp", { STi } }, { "fucom", { STi } }, { "fucomp", { STi } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, }, /* de */ { { "faddp", { STi, ST } }, { "fmulp", { STi, ST } }, - { "(bad)", { XX } }, + { Bad_Opcode }, { FGRPde_3 }, { "fsub!Mp", { STi, ST } }, { "fsubMp", { STi, ST } }, @@ -10047,13 +11976,13 @@ static const struct dis386 float_reg[][8] = { /* df */ { { "ffreep", { STi } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, { FGRPdf_4 }, { "fucomip", { ST, STi } }, { "fcomip", { ST, STi } }, - { "(bad)", { XX } }, + { Bad_Opcode }, }, }; @@ -10239,10 +12168,34 @@ putop (const char *in_template, int sizeflag) *obufp++ = 'b'; break; case 'B': - if (intel_syntax) - break; - if (sizeflag & SUFFIX_ALWAYS) - *obufp++ = 'b'; + if (l == 0 && len == 1) + { +case_B: + if (intel_syntax) + break; + if (sizeflag & SUFFIX_ALWAYS) + *obufp++ = 'b'; + } + else + { + if (l != 1 + || len != 2 + || last[0] != 'L') + { + SAVE_LAST (*p); + break; + } + + if (address_mode == mode_64bit + && !(prefixes & PREFIX_ADDR)) + { + *obufp++ = 'a'; + *obufp++ = 'b'; + *obufp++ = 's'; + } + + goto case_B; + } break; case 'C': if (intel_syntax && !alt) @@ -10264,11 +12217,14 @@ putop (const char *in_template, int sizeflag) { if (rex & REX_W) *obufp++ = 'q'; - else if (sizeflag & DFLAG) - *obufp++ = intel_syntax ? 'd' : 'l'; else - *obufp++ = 'w'; - used_prefixes |= (prefixes & PREFIX_DATA); + { + if (sizeflag & DFLAG) + *obufp++ = intel_syntax ? 'd' : 'l'; + else + *obufp++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); + } } else *obufp++ = 'w'; @@ -10403,8 +12359,8 @@ case_L: *obufp++ = 'l'; else *obufp++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); } - used_prefixes |= (prefixes & PREFIX_DATA); } break; case 'U': @@ -10435,8 +12391,8 @@ case_Q: *obufp++ = intel_syntax ? 'd' : 'l'; else *obufp++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); } - used_prefixes |= (prefixes & PREFIX_DATA); } } else @@ -10478,30 +12434,75 @@ case_Q: used_prefixes |= (prefixes & PREFIX_DATA); break; case 'V': - if (intel_syntax) - break; - if (address_mode == mode_64bit && (sizeflag & DFLAG)) + if (l == 0 && len == 1) { - if (sizeflag & SUFFIX_ALWAYS) - *obufp++ = 'q'; - break; + if (intel_syntax) + break; + if (address_mode == mode_64bit && (sizeflag & DFLAG)) + { + if (sizeflag & SUFFIX_ALWAYS) + *obufp++ = 'q'; + break; + } + } + else + { + if (l != 1 + || len != 2 + || last[0] != 'L') + { + SAVE_LAST (*p); + break; + } + + if (rex & REX_W) + { + *obufp++ = 'a'; + *obufp++ = 'b'; + *obufp++ = 's'; + } } /* Fall through. */ + goto case_S; case 'S': - if (intel_syntax) - break; - if (sizeflag & SUFFIX_ALWAYS) + if (l == 0 && len == 1) { - if (rex & REX_W) - *obufp++ = 'q'; - else +case_S: + if (intel_syntax) + break; + if (sizeflag & SUFFIX_ALWAYS) { - if (sizeflag & DFLAG) - *obufp++ = 'l'; + if (rex & REX_W) + *obufp++ = 'q'; else - *obufp++ = 'w'; - used_prefixes |= (prefixes & PREFIX_DATA); + { + if (sizeflag & DFLAG) + *obufp++ = 'l'; + else + *obufp++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); + } + } + } + else + { + if (l != 1 + || len != 2 + || last[0] != 'L') + { + SAVE_LAST (*p); + break; + } + + if (address_mode == mode_64bit + && !(prefixes & PREFIX_ADDR)) + { + *obufp++ = 'a'; + *obufp++ = 'b'; + *obufp++ = 's'; } + + goto case_S; } break; case 'X': @@ -10517,11 +12518,14 @@ case_Q: else *obufp++ = 's'; } - else if (prefixes & PREFIX_DATA) - *obufp++ = 'd'; else - *obufp++ = 's'; - used_prefixes |= (prefixes & PREFIX_DATA); + { + if (prefixes & PREFIX_DATA) + *obufp++ = 'd'; + else + *obufp++ = 's'; + used_prefixes |= (prefixes & PREFIX_DATA); + } break; case 'Y': if (l == 0 && len == 1) @@ -10767,7 +12771,6 @@ intel_operand_size (int bytemode, int sizeflag) if (address_mode == mode_64bit && (sizeflag & DFLAG)) { oappend ("QWORD PTR "); - used_prefixes |= (prefixes & PREFIX_DATA); break; } /* FALLTHRU */ @@ -10777,11 +12780,14 @@ intel_operand_size (int bytemode, int sizeflag) USED_REX (REX_W); if (rex & REX_W) oappend ("QWORD PTR "); - else if ((sizeflag & DFLAG) || bytemode == dq_mode) - oappend ("DWORD PTR "); else - oappend ("WORD PTR "); - used_prefixes |= (prefixes & PREFIX_DATA); + { + if ((sizeflag & DFLAG) || bytemode == dq_mode) + oappend ("DWORD PTR "); + else + oappend ("WORD PTR "); + used_prefixes |= (prefixes & PREFIX_DATA); + } break; case z_mode: if ((rex & REX_W) || (sizeflag & DFLAG)) @@ -10798,11 +12804,15 @@ intel_operand_size (int bytemode, int sizeflag) used_prefixes |= (prefixes & PREFIX_DATA); break; case d_mode: + case d_scalar_mode: + case d_scalar_swap_mode: case d_swap_mode: case dqd_mode: oappend ("DWORD PTR "); break; case q_mode: + case q_scalar_mode: + case q_scalar_swap_mode: case q_swap_mode: oappend ("QWORD PTR "); break; @@ -10880,6 +12890,7 @@ intel_operand_size (int bytemode, int sizeflag) oappend ("OWORD PTR "); break; case vex_w_dq_mode: + case vex_scalar_w_dq_mode: if (!need_vex) abort (); @@ -10933,7 +12944,6 @@ OP_E_register (int bytemode, int sizeflag) if (address_mode == mode_64bit && (sizeflag & DFLAG)) { names = names64; - used_prefixes |= (prefixes & PREFIX_DATA); break; } bytemode = v_mode; @@ -10947,13 +12957,16 @@ OP_E_register (int bytemode, int sizeflag) USED_REX (REX_W); if (rex & REX_W) names = names64; - else if ((sizeflag & DFLAG) - || (bytemode != v_mode - && bytemode != v_swap_mode)) - names = names32; else - names = names16; - used_prefixes |= (prefixes & PREFIX_DATA); + { + if ((sizeflag & DFLAG) + || (bytemode != v_mode + && bytemode != v_swap_mode)) + names = names32; + else + names = names16; + used_prefixes |= (prefixes & PREFIX_DATA); + } break; case 0: return; @@ -10985,7 +12998,7 @@ OP_E_memory (int bytemode, int sizeflag) int haveindex; int needindex; int base, rbase; - int index = 0; + int vindex = 0; int scale = 0; havesib = 0; @@ -10996,14 +13009,13 @@ OP_E_memory (int bytemode, int sizeflag) if (base == 4) { havesib = 1; - FETCH_DATA (the_info, codep + 1); - index = (*codep >> 3) & 7; - scale = (*codep >> 6) & 3; - base = *codep & 7; + vindex = sib.index; + scale = sib.scale; + base = sib.base; USED_REX (REX_X); if (rex & REX_X) - index += 8; - haveindex = index != 4; + vindex += 8; + haveindex = vindex != 4; codep++; } rbase = base + add; @@ -11087,7 +13099,7 @@ OP_E_memory (int bytemode, int sizeflag) if (haveindex) oappend (address_mode == mode_64bit && (sizeflag & AFLAG) - ? names64[index] : names32[index]); + ? names64[vindex] : names32[vindex]); else oappend (address_mode == mode_64bit && (sizeflag & AFLAG) @@ -11142,7 +13154,9 @@ OP_E_memory (int bytemode, int sizeflag) } } else - { /* 16 bit address mode */ + { + /* 16 bit address mode */ + used_prefixes |= prefixes & PREFIX_ADDR; switch (modrm.mod) { case 0: @@ -11217,7 +13231,7 @@ OP_E_memory (int bytemode, int sizeflag) } static void -OP_E_extended (int bytemode, int sizeflag) +OP_E (int bytemode, int sizeflag) { /* Skip mod/rm byte. */ MODRM_CHECK; @@ -11229,13 +13243,6 @@ OP_E_extended (int bytemode, int sizeflag) OP_E_memory (bytemode, sizeflag); } -static void -OP_E (int bytemode, int sizeflag) -{ - OP_E_extended (bytemode, sizeflag); -} - - static void OP_G (int bytemode, int sizeflag) { @@ -11269,11 +13276,14 @@ OP_G (int bytemode, int sizeflag) USED_REX (REX_W); if (rex & REX_W) oappend (names64[modrm.reg + add]); - else if ((sizeflag & DFLAG) || bytemode != v_mode) - oappend (names32[modrm.reg + add]); else - oappend (names16[modrm.reg + add]); - used_prefixes |= (prefixes & PREFIX_DATA); + { + if ((sizeflag & DFLAG) || bytemode != v_mode) + oappend (names32[modrm.reg + add]); + else + oappend (names16[modrm.reg + add]); + used_prefixes |= (prefixes & PREFIX_DATA); + } break; case m_mode: if (address_mode == mode_64bit) @@ -11412,11 +13422,14 @@ OP_REG (int code, int sizeflag) USED_REX (REX_W); if (rex & REX_W) s = names64[code - eAX_reg + add]; - else if (sizeflag & DFLAG) - s = names32[code - eAX_reg + add]; else - s = names16[code - eAX_reg + add]; - used_prefixes |= (prefixes & PREFIX_DATA); + { + if (sizeflag & DFLAG) + s = names32[code - eAX_reg + add]; + else + s = names16[code - eAX_reg + add]; + used_prefixes |= (prefixes & PREFIX_DATA); + } break; default: s = INTERNAL_DISASSEMBLER_ERROR; @@ -11459,11 +13472,14 @@ OP_IMREG (int code, int sizeflag) USED_REX (REX_W); if (rex & REX_W) s = names64[code - eAX_reg]; - else if (sizeflag & DFLAG) - s = names32[code - eAX_reg]; else - s = names16[code - eAX_reg]; - used_prefixes |= (prefixes & PREFIX_DATA); + { + if (sizeflag & DFLAG) + s = names32[code - eAX_reg]; + else + s = names16[code - eAX_reg]; + used_prefixes |= (prefixes & PREFIX_DATA); + } break; case z_mode_ax_reg: if ((rex & REX_W) || (sizeflag & DFLAG)) @@ -11504,17 +13520,20 @@ OP_I (int bytemode, int sizeflag) USED_REX (REX_W); if (rex & REX_W) op = get32s (); - else if (sizeflag & DFLAG) - { - op = get32 (); - mask = 0xffffffff; - } else { - op = get16 (); - mask = 0xfffff; + if (sizeflag & DFLAG) + { + op = get32 (); + mask = 0xffffffff; + } + else + { + op = get16 (); + mask = 0xfffff; + } + used_prefixes |= (prefixes & PREFIX_DATA); } - used_prefixes |= (prefixes & PREFIX_DATA); break; case w_mode: mask = 0xfffff; @@ -11559,17 +13578,20 @@ OP_I64 (int bytemode, int sizeflag) USED_REX (REX_W); if (rex & REX_W) op = get64 (); - else if (sizeflag & DFLAG) - { - op = get32 (); - mask = 0xffffffff; - } else { - op = get16 (); - mask = 0xfffff; + if (sizeflag & DFLAG) + { + op = get32 (); + mask = 0xffffffff; + } + else + { + op = get16 (); + mask = 0xfffff; + } + used_prefixes |= (prefixes & PREFIX_DATA); } - used_prefixes |= (prefixes & PREFIX_DATA); break; case w_mode: mask = 0xfffff; @@ -11591,7 +13613,6 @@ static void OP_sI (int bytemode, int sizeflag) { bfd_signed_vma op; - bfd_signed_vma mask = -1; switch (bytemode) { @@ -11600,29 +13621,28 @@ OP_sI (int bytemode, int sizeflag) op = *codep++; if ((op & 0x80) != 0) op -= 0x100; - mask = 0xffffffff; break; case v_mode: USED_REX (REX_W); if (rex & REX_W) op = get32s (); - else if (sizeflag & DFLAG) - { - op = get32s (); - mask = 0xffffffff; - } else { - mask = 0xffffffff; - op = get16 (); - if ((op & 0x8000) != 0) - op -= 0x10000; + if (sizeflag & DFLAG) + { + op = get32s (); + } + else + { + op = get16 (); + if ((op & 0x8000) != 0) + op -= 0x10000; + } + used_prefixes |= (prefixes & PREFIX_DATA); } - used_prefixes |= (prefixes & PREFIX_DATA); break; case w_mode: op = get16 (); - mask = 0xffffffff; if ((op & 0x8000) != 0) op -= 0x10000; break; @@ -11652,6 +13672,7 @@ OP_J (int bytemode, int sizeflag) disp -= 0x100; break; case v_mode: + USED_REX (REX_W); if ((sizeflag & DFLAG) || (rex & REX_W)) disp = get32s (); else @@ -11668,7 +13689,8 @@ OP_J (int bytemode, int sizeflag) segment = ((start_pc + codep - start_codep) & ~((bfd_vma) 0xffff)); } - used_prefixes |= (prefixes & PREFIX_DATA); + if (!(rex & REX_W)) + used_prefixes |= (prefixes & PREFIX_DATA); break; default: oappend (INTERNAL_DISASSEMBLER_ERROR); @@ -11859,7 +13881,7 @@ OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) } else if (address_mode != mode_64bit && (prefixes & PREFIX_LOCK)) { - lock_prefix = NULL; + all_prefixes[last_lock_prefix] = 0; used_prefixes |= PREFIX_LOCK; add = 8; } @@ -11904,53 +13926,58 @@ OP_R (int bytemode, int sizeflag) static void OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) { + int reg = modrm.reg; + const char **names; + used_prefixes |= (prefixes & PREFIX_DATA); if (prefixes & PREFIX_DATA) { - int add; + names = names_xmm; USED_REX (REX_R); if (rex & REX_R) - add = 8; - else - add = 0; - sprintf (scratchbuf, "%%xmm%d", modrm.reg + add); + reg += 8; } else - sprintf (scratchbuf, "%%mm%d", modrm.reg); - oappend (scratchbuf + intel_syntax); + names = names_mm; + oappend (names[reg]); } static void OP_XMM (int bytemode, int sizeflag ATTRIBUTE_UNUSED) { - int add; + int reg = modrm.reg; + const char **names; + USED_REX (REX_R); if (rex & REX_R) - add = 8; - else - add = 0; - if (need_vex && bytemode != xmm_mode) + reg += 8; + if (need_vex + && bytemode != xmm_mode + && bytemode != scalar_mode) { switch (vex.length) { case 128: - sprintf (scratchbuf, "%%xmm%d", modrm.reg + add); + names = names_xmm; break; case 256: - sprintf (scratchbuf, "%%ymm%d", modrm.reg + add); + names = names_ymm; break; default: abort (); } } else - sprintf (scratchbuf, "%%xmm%d", modrm.reg + add); - oappend (scratchbuf + intel_syntax); + names = names_xmm; + oappend (names[reg]); } static void OP_EM (int bytemode, int sizeflag) { + int reg; + const char **names; + if (modrm.mod != 3) { if (intel_syntax @@ -11970,20 +13997,17 @@ OP_EM (int bytemode, int sizeflag) MODRM_CHECK; codep++; used_prefixes |= (prefixes & PREFIX_DATA); + reg = modrm.rm; if (prefixes & PREFIX_DATA) { - int add; - + names = names_xmm; USED_REX (REX_B); if (rex & REX_B) - add = 8; - else - add = 0; - sprintf (scratchbuf, "%%xmm%d", modrm.rm + add); + reg += 8; } else - sprintf (scratchbuf, "%%mm%d", modrm.rm); - oappend (scratchbuf + intel_syntax); + names = names_mm; + oappend (names[reg]); } /* cvt* are the only instructions in sse2 which have @@ -12009,22 +14033,21 @@ OP_EMC (int bytemode, int sizeflag) MODRM_CHECK; codep++; used_prefixes |= (prefixes & PREFIX_DATA); - sprintf (scratchbuf, "%%mm%d", modrm.rm); - oappend (scratchbuf + intel_syntax); + oappend (names_mm[modrm.rm]); } static void OP_MXC (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) { used_prefixes |= (prefixes & PREFIX_DATA); - sprintf (scratchbuf, "%%mm%d", modrm.reg); - oappend (scratchbuf + intel_syntax); + oappend (names_mm[modrm.reg]); } static void OP_EX (int bytemode, int sizeflag) { - int add; + int reg; + const char **names; /* Skip mod/rm byte. */ MODRM_CHECK; @@ -12036,37 +14059,43 @@ OP_EX (int bytemode, int sizeflag) return; } + reg = modrm.rm; USED_REX (REX_B); if (rex & REX_B) - add = 8; - else - add = 0; + reg += 8; if ((sizeflag & SUFFIX_ALWAYS) && (bytemode == x_swap_mode || bytemode == d_swap_mode - || bytemode == q_swap_mode)) + || bytemode == d_scalar_swap_mode + || bytemode == q_swap_mode + || bytemode == q_scalar_swap_mode)) swap_operand (); if (need_vex && bytemode != xmm_mode - && bytemode != xmmq_mode) + && bytemode != xmmq_mode + && bytemode != d_scalar_mode + && bytemode != d_scalar_swap_mode + && bytemode != q_scalar_mode + && bytemode != q_scalar_swap_mode + && bytemode != vex_scalar_w_dq_mode) { switch (vex.length) { case 128: - sprintf (scratchbuf, "%%xmm%d", modrm.rm + add); + names = names_xmm; break; case 256: - sprintf (scratchbuf, "%%ymm%d", modrm.rm + add); + names = names_ymm; break; default: abort (); } } else - sprintf (scratchbuf, "%%xmm%d", modrm.rm + add); - oappend (scratchbuf + intel_syntax); + names = names_xmm; + oappend (names[reg]); } static void @@ -12298,7 +14327,7 @@ OP_Monitor (int bytemode ATTRIBUTE_UNUSED, else { /* Remove "addr16/addr32". */ - addr_prefix = NULL; + all_prefixes[last_addr_prefix] = 0; op1_names = (address_mode != mode_32bit ? names32 : names16); used_prefixes |= PREFIX_ADDR; @@ -12327,7 +14356,7 @@ REP_Fixup (int bytemode, int sizeflag) /* The 0xf3 prefix should be displayed as "rep" for ins, outs, movs, lods and stos. */ if (prefixes & PREFIX_REPZ) - repz_prefix = "rep "; + all_prefixes[last_repz_prefix] = REP_PREFIX; switch (bytemode) { @@ -12365,23 +14394,25 @@ CMPXCHG8B_Fixup (int bytemode, int sizeflag) static void XMM_Fixup (int reg, int sizeflag ATTRIBUTE_UNUSED) { + const char **names; + if (need_vex) { switch (vex.length) { case 128: - sprintf (scratchbuf, "%%xmm%d", reg); + names = names_xmm; break; case 256: - sprintf (scratchbuf, "%%ymm%d", reg); + names = names_ymm; break; default: abort (); } } else - sprintf (scratchbuf, "%%xmm%d", reg); - oappend (scratchbuf + intel_syntax); + names = names_xmm; + oappend (names[reg]); } static void @@ -12405,11 +14436,14 @@ CRC32_Fixup (int bytemode, int sizeflag) USED_REX (REX_W); if (rex & REX_W) *p++ = 'q'; - else if (sizeflag & DFLAG) - *p++ = 'l'; - else - *p++ = 'w'; - used_prefixes |= (prefixes & PREFIX_DATA); + else + { + if (sizeflag & DFLAG) + *p++ = 'l'; + else + *p++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); + } break; default: oappend (INTERNAL_DISASSEMBLER_ERROR); @@ -12452,18 +14486,44 @@ skip: OP_E (bytemode, sizeflag); } +static void +FXSAVE_Fixup (int bytemode, int sizeflag) +{ + /* Add proper suffix to "fxsave" and "fxrstor". */ + USED_REX (REX_W); + if (rex & REX_W) + { + char *p = mnemonicendp; + *p++ = '6'; + *p++ = '4'; + *p = '\0'; + mnemonicendp = p; + } + OP_M (bytemode, sizeflag); +} + /* Display the destination register operand for instructions with VEX. */ static void OP_VEX (int bytemode, int sizeflag ATTRIBUTE_UNUSED) { + int reg; + const char **names; + if (!need_vex) abort (); if (!need_vex_reg) return; + reg = vex.register_specifier; + if (bytemode == vex_scalar_mode) + { + oappend (names_xmm[reg]); + return; + } + switch (vex.length) { case 128: @@ -12477,7 +14537,7 @@ OP_VEX (int bytemode, int sizeflag ATTRIBUTE_UNUSED) return; } - sprintf (scratchbuf, "%%xmm%d", vex.register_specifier); + names = names_xmm; break; case 256: switch (bytemode) @@ -12490,77 +14550,96 @@ OP_VEX (int bytemode, int sizeflag ATTRIBUTE_UNUSED) return; } - sprintf (scratchbuf, "%%ymm%d", vex.register_specifier); + names = names_ymm; break; default: abort (); break; } - oappend (scratchbuf + intel_syntax); + oappend (names[reg]); } /* Get the VEX immediate byte without moving codep. */ static unsigned char -get_vex_imm8 (int sizeflag) +get_vex_imm8 (int sizeflag, int opnum) { int bytes_before_imm = 0; - /* Skip mod/rm byte. */ - MODRM_CHECK; - codep++; - if (modrm.mod != 3) { /* There are SIB/displacement bytes. */ if ((sizeflag & AFLAG) || address_mode == mode_64bit) - { + { /* 32/64 bit address mode */ - int base = modrm.rm; + int base = modrm.rm; /* Check SIB byte. */ - if (base == 4) - { - FETCH_DATA (the_info, codep + 1); - base = *codep & 7; - bytes_before_imm++; - } - - switch (modrm.mod) - { - case 0: - /* When modrm.rm == 5 or modrm.rm == 4 and base in - SIB == 5, there is a 4 byte displacement. */ - if (base != 5) - /* No displacement. */ - break; - case 2: - /* 4 byte displacement. */ - bytes_before_imm += 4; - break; - case 1: - /* 1 byte displacement. */ - bytes_before_imm++; - break; - } - } + if (base == 4) + { + FETCH_DATA (the_info, codep + 1); + base = *codep & 7; + /* When decoding the third source, don't increase + bytes_before_imm as this has already been incremented + by one in OP_E_memory while decoding the second + source operand. */ + if (opnum == 0) + bytes_before_imm++; + } + + /* Don't increase bytes_before_imm when decoding the third source, + it has already been incremented by OP_E_memory while decoding + the second source operand. */ + if (opnum == 0) + { + switch (modrm.mod) + { + case 0: + /* When modrm.rm == 5 or modrm.rm == 4 and base in + SIB == 5, there is a 4 byte displacement. */ + if (base != 5) + /* No displacement. */ + break; + case 2: + /* 4 byte displacement. */ + bytes_before_imm += 4; + break; + case 1: + /* 1 byte displacement. */ + bytes_before_imm++; + break; + } + } + } else - { /* 16 bit address mode */ - switch (modrm.mod) - { - case 0: - /* When modrm.rm == 6, there is a 2 byte displacement. */ - if (modrm.rm != 6) - /* No displacement. */ - break; - case 2: - /* 2 byte displacement. */ - bytes_before_imm += 2; - break; - case 1: - /* 1 byte displacement. */ - bytes_before_imm++; - break; + { + /* 16 bit address mode */ + /* Don't increase bytes_before_imm when decoding the third source, + it has already been incremented by OP_E_memory while decoding + the second source operand. */ + if (opnum == 0) + { + switch (modrm.mod) + { + case 0: + /* When modrm.rm == 6, there is a 2 byte displacement. */ + if (modrm.rm != 6) + /* No displacement. */ + break; + case 2: + /* 2 byte displacement. */ + bytes_before_imm += 2; + break; + case 1: + /* 1 byte displacement: when decoding the third source, + don't increase bytes_before_imm as this has already + been incremented by one in OP_E_memory while decoding + the second source operand. */ + if (opnum == 0) + bytes_before_imm++; + + break; + } } } } @@ -12572,6 +14651,8 @@ get_vex_imm8 (int sizeflag) static void OP_EX_VexReg (int bytemode, int sizeflag, int reg) { + const char **names; + if (reg == -1 && modrm.mod != 3) { OP_E_memory (bytemode, sizeflag); @@ -12593,76 +14674,129 @@ OP_EX_VexReg (int bytemode, int sizeflag, int reg) switch (vex.length) { case 128: - sprintf (scratchbuf, "%%xmm%d", reg); + names = names_xmm; break; case 256: - sprintf (scratchbuf, "%%ymm%d", reg); + names = names_ymm; break; default: abort (); } - oappend (scratchbuf + intel_syntax); + oappend (names[reg]); } static void -OP_EX_VexW (int bytemode, int sizeflag) +OP_EX_VexImmW (int bytemode, int sizeflag) { int reg = -1; + static unsigned char vex_imm8; - if (!vex_w_done) + if (vex_w_done == 0) { vex_w_done = 1; + + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + + vex_imm8 = get_vex_imm8 (sizeflag, 0); + if (vex.w) - reg = vex.register_specifier; + reg = vex_imm8 >> 4; + + OP_EX_VexReg (bytemode, sizeflag, reg); } - else + else if (vex_w_done == 1) { + vex_w_done = 2; + if (!vex.w) - reg = vex.register_specifier; + reg = vex_imm8 >> 4; + + OP_EX_VexReg (bytemode, sizeflag, reg); + } + else + { + /* Output the imm8 directly. */ + scratchbuf[0] = '$'; + print_operand_value (scratchbuf + 1, 1, vex_imm8 & 0xf); + oappend (scratchbuf + intel_syntax); + scratchbuf[0] = '\0'; + codep++; } +} - OP_EX_VexReg (bytemode, sizeflag, reg); +static void +OP_Vex_2src (int bytemode, int sizeflag) +{ + if (modrm.mod == 3) + { + int reg = modrm.rm; + USED_REX (REX_B); + if (rex & REX_B) + reg += 8; + oappend (names_xmm[reg]); + } + else + { + if (intel_syntax + && (bytemode == v_mode || bytemode == v_swap_mode)) + { + bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode; + used_prefixes |= (prefixes & PREFIX_DATA); + } + OP_E (bytemode, sizeflag); + } } static void -OP_VEX_FMA (int bytemode, int sizeflag) +OP_Vex_2src_1 (int bytemode, int sizeflag) { - int reg = get_vex_imm8 (sizeflag) >> 4; + if (modrm.mod == 3) + { + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + } - if (reg > 7 && address_mode != mode_64bit) - BadOp (); + if (vex.w) + oappend (names_xmm[vex.register_specifier]); + else + OP_Vex_2src (bytemode, sizeflag); +} - switch (vex.length) +static void +OP_Vex_2src_2 (int bytemode, int sizeflag) +{ + if (vex.w) + OP_Vex_2src (bytemode, sizeflag); + else + oappend (names_xmm[vex.register_specifier]); +} + +static void +OP_EX_VexW (int bytemode, int sizeflag) +{ + int reg = -1; + + if (!vex_w_done) { - case 128: - switch (bytemode) - { - case vex_mode: - case vex128_mode: - break; - default: - abort (); - return; - } + vex_w_done = 1; - sprintf (scratchbuf, "%%xmm%d", reg); - break; - case 256: - switch (bytemode) - { - case vex_mode: - break; - default: - abort (); - return; - } + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; - sprintf (scratchbuf, "%%ymm%d", reg); - break; - default: - abort (); + if (vex.w) + reg = get_vex_imm8 (sizeflag, 0) >> 4; } - oappend (scratchbuf + intel_syntax); + else + { + if (!vex.w) + reg = get_vex_imm8 (sizeflag, 1) >> 4; + } + + OP_EX_VexReg (bytemode, sizeflag, reg); } static void @@ -12679,6 +14813,8 @@ static void OP_REG_VexI4 (int bytemode, int sizeflag ATTRIBUTE_UNUSED) { int reg; + const char **names; + FETCH_DATA (the_info, codep + 1); reg = *codep++; @@ -12695,15 +14831,15 @@ OP_REG_VexI4 (int bytemode, int sizeflag ATTRIBUTE_UNUSED) switch (vex.length) { case 128: - sprintf (scratchbuf, "%%xmm%d", reg); + names = names_xmm; break; case 256: - sprintf (scratchbuf, "%%ymm%d", reg); + names = names_ymm; break; default: abort (); } - oappend (scratchbuf + intel_syntax); + oappend (names[reg]); } static void @@ -12883,12 +15019,15 @@ MOVBE_Fixup (int bytemode, int sizeflag) { if (rex & REX_W) *p++ = 'q'; - else if (sizeflag & DFLAG) - *p++ = 'l'; else - *p++ = 'w'; + { + if (sizeflag & DFLAG) + *p++ = 'l'; + else + *p++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); + } } - used_prefixes |= (prefixes & PREFIX_DATA); break; default: oappend (INTERNAL_DISASSEMBLER_ERROR); @@ -12900,3 +15039,40 @@ MOVBE_Fixup (int bytemode, int sizeflag) skip: OP_M (bytemode, sizeflag); } + +static void +OP_LWPCB_E (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + int reg; + const char **names; + + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + + if (vex.w) + names = names64; + else + names = names32; + + reg = modrm.rm; + USED_REX (REX_B); + if (rex & REX_B) + reg += 8; + + oappend (names[reg]); +} + +static void +OP_LWP_E (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + const char **names; + + if (vex.w) + names = names64; + else + names = names32; + + oappend (names[vex.register_specifier]); +} + diff --git a/contrib/gdb-7/opcodes/i386-opc.h b/contrib/gdb-7/opcodes/i386-opc.h index 2dd8eeda66..9442211f22 100644 --- a/contrib/gdb-7/opcodes/i386-opc.h +++ b/contrib/gdb-7/opcodes/i386-opc.h @@ -1,5 +1,5 @@ /* Declarations for Intel 80386 opcode table - Copyright 2007, 2008, 2009 + Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -30,90 +30,105 @@ /* Position of cpu flags bitfiled. */ -/* i186 or better required */ -#define Cpu186 0 -/* i286 or better required */ -#define Cpu286 (Cpu186 + 1) -/* i386 or better required */ -#define Cpu386 (Cpu286 + 1) -/* i486 or better required */ -#define Cpu486 (Cpu386 + 1) -/* i585 or better required */ -#define Cpu586 (Cpu486 + 1) -/* i686 or better required */ -#define Cpu686 (Cpu586 + 1) -/* CLFLUSH Instuction support required */ -#define CpuClflush (Cpu686 + 1) -/* SYSCALL Instuctions support required */ -#define CpuSYSCALL (CpuClflush + 1) -/* Floating point support required */ -#define Cpu8087 (CpuSYSCALL + 1) -/* i287 support required */ -#define Cpu287 (Cpu8087 + 1) -/* i387 support required */ -#define Cpu387 (Cpu287 + 1) -/* i686 and floating point support required */ -#define Cpu687 (Cpu387 + 1) -/* SSE3 and floating point support required */ -#define CpuFISTTP (Cpu687 + 1) -/* MMX support required */ -#define CpuMMX (CpuFISTTP + 1) -/* SSE support required */ -#define CpuSSE (CpuMMX + 1) -/* SSE2 support required */ -#define CpuSSE2 (CpuSSE + 1) -/* 3dnow! support required */ -#define Cpu3dnow (CpuSSE2 + 1) -/* 3dnow! Extensions support required */ -#define Cpu3dnowA (Cpu3dnow + 1) -/* SSE3 support required */ -#define CpuSSE3 (Cpu3dnowA + 1) -/* VIA PadLock required */ -#define CpuPadLock (CpuSSE3 + 1) -/* AMD Secure Virtual Machine Ext-s required */ -#define CpuSVME (CpuPadLock + 1) -/* VMX Instructions required */ -#define CpuVMX (CpuSVME + 1) -/* SMX Instructions required */ -#define CpuSMX (CpuVMX + 1) -/* SSSE3 support required */ -#define CpuSSSE3 (CpuSMX + 1) -/* SSE4a support required */ -#define CpuSSE4a (CpuSSSE3 + 1) -/* ABM New Instructions required */ -#define CpuABM (CpuSSE4a + 1) -/* SSE4.1 support required */ -#define CpuSSE4_1 (CpuABM + 1) -/* SSE4.2 support required */ -#define CpuSSE4_2 (CpuSSE4_1 + 1) -/* AVX support required */ -#define CpuAVX (CpuSSE4_2 + 1) -/* Intel L1OM support required */ -#define CpuL1OM (CpuAVX + 1) -/* Xsave/xrstor New Instuctions support required */ -#define CpuXsave (CpuL1OM + 1) -/* AES support required */ -#define CpuAES (CpuXsave + 1) -/* PCLMUL support required */ -#define CpuPCLMUL (CpuAES + 1) -/* FMA support required */ -#define CpuFMA (CpuPCLMUL + 1) -/* FMA4 support required */ -#define CpuFMA4 (CpuFMA + 1) -/* MOVBE Instuction support required */ -#define CpuMovbe (CpuFMA4 + 1) -/* EPT Instructions required */ -#define CpuEPT (CpuMovbe + 1) -/* RDTSCP Instuction support required */ -#define CpuRdtscp (CpuEPT + 1) -/* 64bit support available, used by -march= in assembler. */ -#define CpuLM (CpuRdtscp + 1) -/* 64bit support required */ -#define Cpu64 (CpuLM + 1) -/* Not supported in the 64bit mode */ -#define CpuNo64 (Cpu64 + 1) -/* The last bitfield in i386_cpu_flags. */ -#define CpuMax CpuNo64 +enum +{ + /* i186 or better required */ + Cpu186 = 0, + /* i286 or better required */ + Cpu286, + /* i386 or better required */ + Cpu386, + /* i486 or better required */ + Cpu486, + /* i585 or better required */ + Cpu586, + /* i686 or better required */ + Cpu686, + /* CLFLUSH Instuction support required */ + CpuClflush, + /* SYSCALL Instuctions support required */ + CpuSYSCALL, + /* Floating point support required */ + Cpu8087, + /* i287 support required */ + Cpu287, + /* i387 support required */ + Cpu387, + /* i686 and floating point support required */ + Cpu687, + /* SSE3 and floating point support required */ + CpuFISTTP, + /* MMX support required */ + CpuMMX, + /* SSE support required */ + CpuSSE, + /* SSE2 support required */ + CpuSSE2, + /* 3dnow! support required */ + Cpu3dnow, + /* 3dnow! Extensions support required */ + Cpu3dnowA, + /* SSE3 support required */ + CpuSSE3, + /* VIA PadLock required */ + CpuPadLock, + /* AMD Secure Virtual Machine Ext-s required */ + CpuSVME, + /* VMX Instructions required */ + CpuVMX, + /* SMX Instructions required */ + CpuSMX, + /* SSSE3 support required */ + CpuSSSE3, + /* SSE4a support required */ + CpuSSE4a, + /* ABM New Instructions required */ + CpuABM, + /* SSE4.1 support required */ + CpuSSE4_1, + /* SSE4.2 support required */ + CpuSSE4_2, + /* AVX support required */ + CpuAVX, + /* Intel L1OM support required */ + CpuL1OM, + /* Xsave/xrstor New Instuctions support required */ + CpuXsave, + /* Xsaveopt New Instuctions support required */ + CpuXsaveopt, + /* AES support required */ + CpuAES, + /* PCLMUL support required */ + CpuPCLMUL, + /* FMA support required */ + CpuFMA, + /* FMA4 support required */ + CpuFMA4, + /* XOP support required */ + CpuXOP, + /* LWP support required */ + CpuLWP, + /* MOVBE Instuction support required */ + CpuMovbe, + /* EPT Instructions required */ + CpuEPT, + /* RDTSCP Instuction support required */ + CpuRdtscp, + /* FSGSBASE Instructions required */ + CpuFSGSBase, + /* RDRND Instructions required */ + CpuRdRnd, + /* F16C Instructions required */ + CpuF16C, + /* 64bit support available, used by -march= in assembler. */ + CpuLM, + /* 64bit support required */ + Cpu64, + /* Not supported in the 64bit mode */ + CpuNo64, + /* The last bitfield in i386_cpu_flags. */ + CpuMax = CpuNo64 +}; #define CpuNumOfUints \ (CpuMax / sizeof (unsigned int) / CHAR_BIT + 1) @@ -161,13 +176,19 @@ typedef union i386_cpu_flags unsigned int cpuavx:1; unsigned int cpul1om:1; unsigned int cpuxsave:1; + unsigned int cpuxsaveopt:1; unsigned int cpuaes:1; unsigned int cpupclmul:1; unsigned int cpufma:1; unsigned int cpufma4:1; + unsigned int cpuxop:1; + unsigned int cpulwp:1; unsigned int cpumovbe:1; unsigned int cpuept:1; unsigned int cpurdtscp:1; + unsigned int cpufsgsbase:1; + unsigned int cpurdrnd:1; + unsigned int cpuf16c:1; unsigned int cpulm:1; unsigned int cpu64:1; unsigned int cpuno64:1; @@ -180,122 +201,159 @@ typedef union i386_cpu_flags /* Position of opcode_modifier bits. */ -/* has direction bit. */ -#define D 0 -/* set if operands can be words or dwords encoded the canonical way */ -#define W (D + 1) -/* Skip the current insn and use the next insn in i386-opc.tbl to swap - operand in encoding. */ -#define S (W + 1) -/* insn has a modrm byte. */ -#define Modrm (S + 1) -/* register is in low 3 bits of opcode */ -#define ShortForm (Modrm + 1) -/* special case for jump insns. */ -#define Jump (ShortForm + 1) -/* call and jump */ -#define JumpDword (Jump + 1) -/* loop and jecxz */ -#define JumpByte (JumpDword + 1) -/* special case for intersegment leaps/calls */ -#define JumpInterSegment (JumpByte + 1) -/* FP insn memory format bit, sized by 0x4 */ -#define FloatMF (JumpInterSegment + 1) -/* src/dest swap for floats. */ -#define FloatR (FloatMF + 1) -/* has float insn direction bit. */ -#define FloatD (FloatR + 1) -/* needs size prefix if in 32-bit mode */ -#define Size16 (FloatD + 1) -/* needs size prefix if in 16-bit mode */ -#define Size32 (Size16 + 1) -/* needs size prefix if in 64-bit mode */ -#define Size64 (Size32 + 1) -/* instruction ignores operand size prefix and in Intel mode ignores - mnemonic size suffix check. */ -#define IgnoreSize (Size64 + 1) -/* default insn size depends on mode */ -#define DefaultSize (IgnoreSize + 1) -/* b suffix on instruction illegal */ -#define No_bSuf (DefaultSize + 1) -/* w suffix on instruction illegal */ -#define No_wSuf (No_bSuf + 1) -/* l suffix on instruction illegal */ -#define No_lSuf (No_wSuf + 1) -/* s suffix on instruction illegal */ -#define No_sSuf (No_lSuf + 1) -/* q suffix on instruction illegal */ -#define No_qSuf (No_sSuf + 1) -/* long double suffix on instruction illegal */ -#define No_ldSuf (No_qSuf + 1) -/* instruction needs FWAIT */ -#define FWait (No_ldSuf + 1) -/* quick test for string instructions */ -#define IsString (FWait + 1) -/* fake an extra reg operand for clr, imul and special register - processing for some instructions. */ -#define RegKludge (IsString + 1) -/* The first operand must be xmm0 */ -#define FirstXmm0 (RegKludge + 1) -/* An implicit xmm0 as the first operand */ -#define Implicit1stXmm0 (FirstXmm0 + 1) -/* BYTE is OK in Intel syntax. */ -#define ByteOkIntel (Implicit1stXmm0 + 1) -/* Convert to DWORD */ -#define ToDword (ByteOkIntel + 1) -/* Convert to QWORD */ -#define ToQword (ToDword + 1) -/* Address prefix changes operand 0 */ -#define AddrPrefixOp0 (ToQword + 1) -/* opcode is a prefix */ -#define IsPrefix (AddrPrefixOp0 + 1) -/* instruction has extension in 8 bit imm */ -#define ImmExt (IsPrefix + 1) -/* instruction don't need Rex64 prefix. */ -#define NoRex64 (ImmExt + 1) -/* instruction require Rex64 prefix. */ -#define Rex64 (NoRex64 + 1) -/* deprecated fp insn, gets a warning */ -#define Ugh (Rex64 + 1) -/* insn has VEX prefix. */ -#define Vex (Ugh + 1) -/* insn has 256bit VEX prefix. */ -#define Vex256 (Vex + 1) -/* insn has VEX NDS. Register-only source is encoded in Vex prefix. - We use VexNDS on insns with VEX DDS since the register-only source - is the second source register. */ -#define VexNDS (Vex256 + 1) -/* insn has VEX NDD. Register destination is encoded in Vex - prefix. */ -#define VexNDD (VexNDS + 1) -/* insn has VEX W0. */ -#define VexW0 (VexNDD + 1) -/* insn has VEX W1. */ -#define VexW1 (VexW0 + 1) -/* insn has VEX 0x0F opcode prefix. */ -#define Vex0F (VexW1 + 1) -/* insn has VEX 0x0F38 opcode prefix. */ -#define Vex0F38 (Vex0F + 1) -/* insn has VEX 0x0F3A opcode prefix. */ -#define Vex0F3A (Vex0F38 + 1) -/* insn has VEX prefix with 3 soures. */ -#define Vex3Sources (Vex0F3A + 1) -/* instruction has VEX 8 bit imm */ -#define VexImmExt (Vex3Sources + 1) -/* SSE to AVX support required */ -#define SSE2AVX (VexImmExt + 1) -/* No AVX equivalent */ -#define NoAVX (SSE2AVX + 1) -/* Compatible with old (<= 2.8.1) versions of gcc */ -#define OldGcc (NoAVX + 1) -/* AT&T mnemonic. */ -#define ATTMnemonic (OldGcc + 1) -/* AT&T syntax. */ -#define ATTSyntax (ATTMnemonic + 1) -/* Intel syntax. */ -#define IntelSyntax (ATTSyntax + 1) -/* The last bitfield in i386_opcode_modifier. */ -#define Opcode_Modifier_Max IntelSyntax +enum +{ + /* has direction bit. */ + D = 0, + /* set if operands can be words or dwords encoded the canonical way */ + W, + /* Skip the current insn and use the next insn in i386-opc.tbl to swap + operand in encoding. */ + S, + /* insn has a modrm byte. */ + Modrm, + /* register is in low 3 bits of opcode */ + ShortForm, + /* special case for jump insns. */ + Jump, + /* call and jump */ + JumpDword, + /* loop and jecxz */ + JumpByte, + /* special case for intersegment leaps/calls */ + JumpInterSegment, + /* FP insn memory format bit, sized by 0x4 */ + FloatMF, + /* src/dest swap for floats. */ + FloatR, + /* has float insn direction bit. */ + FloatD, + /* needs size prefix if in 32-bit mode */ + Size16, + /* needs size prefix if in 16-bit mode */ + Size32, + /* needs size prefix if in 64-bit mode */ + Size64, + /* instruction ignores operand size prefix and in Intel mode ignores + mnemonic size suffix check. */ + IgnoreSize, + /* default insn size depends on mode */ + DefaultSize, + /* b suffix on instruction illegal */ + No_bSuf, + /* w suffix on instruction illegal */ + No_wSuf, + /* l suffix on instruction illegal */ + No_lSuf, + /* s suffix on instruction illegal */ + No_sSuf, + /* q suffix on instruction illegal */ + No_qSuf, + /* long double suffix on instruction illegal */ + No_ldSuf, + /* instruction needs FWAIT */ + FWait, + /* quick test for string instructions */ + IsString, + /* quick test for lockable instructions */ + IsLockable, + /* fake an extra reg operand for clr, imul and special register + processing for some instructions. */ + RegKludge, + /* The first operand must be xmm0 */ + FirstXmm0, + /* An implicit xmm0 as the first operand */ + Implicit1stXmm0, + /* Convert to DWORD */ + ToDword, + /* Convert to QWORD */ + ToQword, + /* Address prefix changes operand 0 */ + AddrPrefixOp0, + /* opcode is a prefix */ + IsPrefix, + /* instruction has extension in 8 bit imm */ + ImmExt, + /* instruction don't need Rex64 prefix. */ + NoRex64, + /* instruction require Rex64 prefix. */ + Rex64, + /* deprecated fp insn, gets a warning */ + Ugh, + /* insn has VEX prefix: + 1: 128bit VEX prefix. + 2: 256bit VEX prefix. + 3: Scalar VEX prefix. + */ +#define VEX128 1 +#define VEX256 2 +#define VEXScalar 3 + Vex, + /* How to encode VEX.vvvv: + 0: VEX.vvvv must be 1111b. + 1: VEX.NDS. Register-only source is encoded in VEX.vvvv where + the content of source registers will be preserved. + VEX.DDS. The second register operand is encoded in VEX.vvvv + where the content of first source register will be overwritten + by the result. + For assembler, there are no difference between VEX.NDS and + VEX.DDS. + 2. VEX.NDD. Register destination is encoded in VEX.vvvv. + 3. VEX.LWP. Register destination is encoded in VEX.vvvv and one + of the operands can access a memory location. + */ +#define VEXXDS 1 +#define VEXNDD 2 +#define VEXLWP 3 + VexVVVV, + /* How the VEX.W bit is used: + 0: Set by the REX.W bit. + 1: VEX.W0. Should always be 0. + 2: VEX.W1. Should always be 1. + */ +#define VEXW0 1 +#define VEXW1 2 + VexW, + /* VEX opcode prefix: + 0: VEX 0x0F opcode prefix. + 1: VEX 0x0F38 opcode prefix. + 2: VEX 0x0F3A opcode prefix + 3: XOP 0x08 opcode prefix. + 4: XOP 0x09 opcode prefix + 5: XOP 0x0A opcode prefix. + */ +#define VEX0F 0 +#define VEX0F38 1 +#define VEX0F3A 2 +#define XOP08 3 +#define XOP09 4 +#define XOP0A 5 + VexOpcode, + /* number of VEX source operands: + 0: <= 2 source operands. + 1: 2 XOP source operands. + 2: 3 source operands. + */ +#define XOP2SOURCES 1 +#define VEX3SOURCES 2 + VexSources, + /* instruction has VEX 8 bit imm */ + VexImmExt, + /* SSE to AVX support required */ + SSE2AVX, + /* No AVX equivalent */ + NoAVX, + /* Compatible with old (<= 2.8.1) versions of gcc */ + OldGcc, + /* AT&T mnemonic. */ + ATTMnemonic, + /* AT&T syntax. */ + ATTSyntax, + /* Intel syntax. */ + IntelSyntax, + /* The last bitfield in i386_opcode_modifier. */ + Opcode_Modifier_Max +}; typedef struct i386_opcode_modifier { @@ -324,10 +382,10 @@ typedef struct i386_opcode_modifier unsigned int no_ldsuf:1; unsigned int fwait:1; unsigned int isstring:1; + unsigned int islockable:1; unsigned int regkludge:1; unsigned int firstxmm0:1; unsigned int implicit1stxmm0:1; - unsigned int byteokintel:1; unsigned int todword:1; unsigned int toqword:1; unsigned int addrprefixop0:1; @@ -336,16 +394,11 @@ typedef struct i386_opcode_modifier unsigned int norex64:1; unsigned int rex64:1; unsigned int ugh:1; - unsigned int vex:1; - unsigned int vex256:1; - unsigned int vexnds:1; - unsigned int vexndd:1; - unsigned int vexw0:1; - unsigned int vexw1:1; - unsigned int vex0f:1; - unsigned int vex0f38:1; - unsigned int vex0f3a:1; - unsigned int vex3sources:1; + unsigned int vex:2; + unsigned int vexvvvv:2; + unsigned int vexw:2; + unsigned int vexopcode:3; + unsigned int vexsources:2; unsigned int veximmext:1; unsigned int sse2avx:1; unsigned int noavx:1; @@ -357,108 +410,114 @@ typedef struct i386_opcode_modifier /* Position of operand_type bits. */ -/* 8bit register */ -#define Reg8 0 -/* 16bit register */ -#define Reg16 (Reg8 + 1) -/* 32bit register */ -#define Reg32 (Reg16 + 1) -/* 64bit register */ -#define Reg64 (Reg32 + 1) -/* Floating pointer stack register */ -#define FloatReg (Reg64 + 1) -/* MMX register */ -#define RegMMX (FloatReg + 1) -/* SSE register */ -#define RegXMM (RegMMX + 1) -/* AVX registers */ -#define RegYMM (RegXMM + 1) -/* Control register */ -#define Control (RegYMM + 1) -/* Debug register */ -#define Debug (Control + 1) -/* Test register */ -#define Test (Debug + 1) -/* 2 bit segment register */ -#define SReg2 (Test + 1) -/* 3 bit segment register */ -#define SReg3 (SReg2 + 1) -/* 1 bit immediate */ -#define Imm1 (SReg3 + 1) -/* 8 bit immediate */ -#define Imm8 (Imm1 + 1) -/* 8 bit immediate sign extended */ -#define Imm8S (Imm8 + 1) -/* 16 bit immediate */ -#define Imm16 (Imm8S + 1) -/* 32 bit immediate */ -#define Imm32 (Imm16 + 1) -/* 32 bit immediate sign extended */ -#define Imm32S (Imm32 + 1) -/* 64 bit immediate */ -#define Imm64 (Imm32S + 1) -/* 8bit/16bit/32bit displacements are used in different ways, - depending on the instruction. For jumps, they specify the - size of the PC relative displacement, for instructions with - memory operand, they specify the size of the offset relative - to the base register, and for instructions with memory offset - such as `mov 1234,%al' they specify the size of the offset - relative to the segment base. */ -/* 8 bit displacement */ -#define Disp8 (Imm64 + 1) -/* 16 bit displacement */ -#define Disp16 (Disp8 + 1) -/* 32 bit displacement */ -#define Disp32 (Disp16 + 1) -/* 32 bit signed displacement */ -#define Disp32S (Disp32 + 1) -/* 64 bit displacement */ -#define Disp64 (Disp32S + 1) -/* Accumulator %al/%ax/%eax/%rax */ -#define Acc (Disp64 + 1) -/* Floating pointer top stack register %st(0) */ -#define FloatAcc (Acc + 1) -/* Register which can be used for base or index in memory operand. */ -#define BaseIndex (FloatAcc + 1) -/* Register to hold in/out port addr = dx */ -#define InOutPortReg (BaseIndex + 1) -/* Register to hold shift count = cl */ -#define ShiftCount (InOutPortReg + 1) -/* Absolute address for jump. */ -#define JumpAbsolute (ShiftCount + 1) -/* String insn operand with fixed es segment */ -#define EsSeg (JumpAbsolute + 1) -/* RegMem is for instructions with a modrm byte where the register - destination operand should be encoded in the mod and regmem fields. - Normally, it will be encoded in the reg field. We add a RegMem - flag to the destination register operand to indicate that it should - be encoded in the regmem field. */ -#define RegMem (EsSeg + 1) -/* Memory. */ -#define Mem (RegMem + 1) -/* BYTE memory. */ -#define Byte (Mem + 1) -/* WORD memory. 2 byte */ -#define Word (Byte + 1) -/* DWORD memory. 4 byte */ -#define Dword (Word + 1) -/* FWORD memory. 6 byte */ -#define Fword (Dword + 1) -/* QWORD memory. 8 byte */ -#define Qword (Fword + 1) -/* TBYTE memory. 10 byte */ -#define Tbyte (Qword + 1) -/* XMMWORD memory. */ -#define Xmmword (Tbyte + 1) -/* YMMWORD memory. */ -#define Ymmword (Xmmword + 1) -/* Unspecified memory size. */ -#define Unspecified (Ymmword + 1) -/* Any memory size. */ -#define Anysize (Unspecified + 1) - -/* The last bitfield in i386_operand_type. */ -#define OTMax Anysize +enum +{ + /* 8bit register */ + Reg8 = 0, + /* 16bit register */ + Reg16, + /* 32bit register */ + Reg32, + /* 64bit register */ + Reg64, + /* Floating pointer stack register */ + FloatReg, + /* MMX register */ + RegMMX, + /* SSE register */ + RegXMM, + /* AVX registers */ + RegYMM, + /* Control register */ + Control, + /* Debug register */ + Debug, + /* Test register */ + Test, + /* 2 bit segment register */ + SReg2, + /* 3 bit segment register */ + SReg3, + /* 1 bit immediate */ + Imm1, + /* 8 bit immediate */ + Imm8, + /* 8 bit immediate sign extended */ + Imm8S, + /* 16 bit immediate */ + Imm16, + /* 32 bit immediate */ + Imm32, + /* 32 bit immediate sign extended */ + Imm32S, + /* 64 bit immediate */ + Imm64, + /* 8bit/16bit/32bit displacements are used in different ways, + depending on the instruction. For jumps, they specify the + size of the PC relative displacement, for instructions with + memory operand, they specify the size of the offset relative + to the base register, and for instructions with memory offset + such as `mov 1234,%al' they specify the size of the offset + relative to the segment base. */ + /* 8 bit displacement */ + Disp8, + /* 16 bit displacement */ + Disp16, + /* 32 bit displacement */ + Disp32, + /* 32 bit signed displacement */ + Disp32S, + /* 64 bit displacement */ + Disp64, + /* Accumulator %al/%ax/%eax/%rax */ + Acc, + /* Floating pointer top stack register %st(0) */ + FloatAcc, + /* Register which can be used for base or index in memory operand. */ + BaseIndex, + /* Register to hold in/out port addr = dx */ + InOutPortReg, + /* Register to hold shift count = cl */ + ShiftCount, + /* Absolute address for jump. */ + JumpAbsolute, + /* String insn operand with fixed es segment */ + EsSeg, + /* RegMem is for instructions with a modrm byte where the register + destination operand should be encoded in the mod and regmem fields. + Normally, it will be encoded in the reg field. We add a RegMem + flag to the destination register operand to indicate that it should + be encoded in the regmem field. */ + RegMem, + /* Memory. */ + Mem, + /* BYTE memory. */ + Byte, + /* WORD memory. 2 byte */ + Word, + /* DWORD memory. 4 byte */ + Dword, + /* FWORD memory. 6 byte */ + Fword, + /* QWORD memory. 8 byte */ + Qword, + /* TBYTE memory. 10 byte */ + Tbyte, + /* XMMWORD memory. */ + Xmmword, + /* YMMWORD memory. */ + Ymmword, + /* Unspecified memory size. */ + Unspecified, + /* Any memory size. */ + Anysize, + + /* Vector 4 bit immediate. */ + Vec_Imm4, + + /* The last bitfield in i386_operand_type. */ + OTMax +}; #define OTNumOfUints \ (OTMax / sizeof (unsigned int) / CHAR_BIT + 1) @@ -517,6 +576,7 @@ typedef union i386_operand_type unsigned int ymmword:1; unsigned int unspecified:1; unsigned int anysize:1; + unsigned int vec_imm4:1; #ifdef OTUnused unsigned int unused:(OTNumOfBits - OTUnused); #endif diff --git a/contrib/gdb-7/opcodes/i386-tbl.h b/contrib/gdb-7/opcodes/i386-tbl.h index aa24c533a5..806ad6ef2d 100644 --- a/contrib/gdb-7/opcodes/i386-tbl.h +++ b/contrib/gdb-7/opcodes/i386-tbl.h @@ -1,5 +1,5 @@ /* This file is automatically generated by i386-gen. Do not edit! */ -/* Copyright 2007, 2008, 2009 +/* Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -25,30782 +25,33469 @@ const insn_template i386_optab[] = { { "mov", 2, 0xa0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0xa0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0x88, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "mov", 2, 0xb0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0xc6, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "mov", 2, 0xb0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0x8c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0x8c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "mov", 2, 0x8c, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0x8c, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "mov", 2, 0x8e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0x8e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0x8e, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0x8e, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0xf20, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0xf20, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0xf21, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0xf21, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mov", 2, 0xf24, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movabs", 2, 0xa0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movabs", 2, 0xb0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movbe", 2, 0x0f38f0, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movbe", 2, 0x0f38f1, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movsbl", 2, 0xfbe, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsbw", 2, 0xfbe, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movswl", 2, 0xfbf, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsbq", 2, 0xfbe, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movswq", 2, 0xfbf, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movslq", 2, 0x63, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsx", 2, 0xfbe, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsx", 2, 0xfbf, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsx", 2, 0x63, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsx", 2, 0xfbe, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsx", 2, 0xfbf, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsx", 2, 0x63, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsxd", 2, 0x63, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzb", 2, 0xfb6, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzbl", 2, 0xfb6, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzbw", 2, 0xfb6, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzwl", 2, 0xfb7, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzbq", 2, 0xfb6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzwq", 2, 0xfb7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzx", 2, 0xfb6, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzx", 2, 0xfb7, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzx", 2, 0xfb6, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movzx", 2, 0xfb7, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0x50, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0xff, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "push", 1, 0x6a, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0x68, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0x6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0xfa0, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0x50, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0xff, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "push", 1, 0x6a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0x68, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "push", 1, 0xfa0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pusha", 0, 0x60, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pop", 1, 0x58, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pop", 1, 0x8f, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pop", 1, 0x7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pop", 1, 0xfa1, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pop", 1, 0x58, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pop", 1, 0x8f, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pop", 1, 0xfa1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "popa", 0, 0x61, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xchg", 2, 0x90, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xchg", 2, 0x90, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xchg", 2, 0x86, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "xchg", 2, 0x86, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "in", 2, 0xe4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "in", 2, 0xec, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "in", 1, 0xe4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "in", 1, 0xec, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "out", 2, 0xe6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "out", 2, 0xee, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "out", 1, 0xe6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "out", 1, 0xee, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lea", 2, 0x8d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0 } }, + 0, 0, 0, 1, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lds", 2, 0xc5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "les", 2, 0xc4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lfs", 2, 0xfb4, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lgs", 2, 0xfb5, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lss", 2, 0xfb2, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "clc", 0, 0xf8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cld", 0, 0xfc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cli", 0, 0xfa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "clts", 0, 0xf06, None, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmc", 0, 0xf5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lahf", 0, 0x9f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sahf", 0, 0x9e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pushf", 0, 0x9c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pushf", 0, 0x9c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "popf", 0, 0x9d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "popf", 0, 0x9d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "stc", 0, 0xf9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "std", 0, 0xfd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sti", 0, 0xfb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "add", 2, 0x0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "add", 2, 0x83, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "add", 2, 0x4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "add", 2, 0x80, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "inc", 1, 0x40, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "inc", 1, 0xfe, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sub", 2, 0x28, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sub", 2, 0x83, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sub", 2, 0x2c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sub", 2, 0x80, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "dec", 1, 0x48, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "dec", 1, 0xfe, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sbb", 2, 0x18, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sbb", 2, 0x83, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sbb", 2, 0x1c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sbb", 2, 0x80, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "cmp", 2, 0x38, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "cmp", 2, 0x83, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "cmp", 2, 0x3c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmp", 2, 0x80, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "test", 2, 0x84, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "test", 2, 0x84, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "test", 2, 0xa8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "test", 2, 0xf6, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "and", 2, 0x20, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "and", 2, 0x83, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "and", 2, 0x24, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "and", 2, 0x80, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "or", 2, 0x8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "or", 2, 0x83, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "or", 2, 0xc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "or", 2, 0x80, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "xor", 2, 0x30, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "xor", 2, 0x83, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "xor", 2, 0x34, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xor", 2, 0x80, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "clr", 1, 0x30, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "adc", 2, 0x10, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "adc", 2, 0x83, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "adc", 2, 0x14, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "adc", 2, 0x80, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "neg", 1, 0xf6, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "not", 1, 0xf6, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "aaa", 0, 0x37, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aas", 0, 0x3f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "daa", 0, 0x27, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "das", 0, 0x2f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aad", 0, 0xd50a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aad", 1, 0xd5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aam", 0, 0xd40a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aam", 1, 0xd4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cbw", 0, 0x98, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cdqe", 0, 0x98, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cwde", 0, 0x98, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cwd", 0, 0x99, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cdq", 0, 0x99, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cqo", 0, 0x99, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cbtw", 0, 0x98, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cltq", 0, 0x98, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cwtl", 0, 0x98, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cwtd", 0, 0x99, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cltd", 0, 0x99, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cqto", 0, 0x99, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mul", 1, 0xf6, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "imul", 1, 0xf6, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "imul", 2, 0xfaf, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "imul", 3, 0x6b, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "imul", 3, 0x69, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "imul", 2, 0x6b, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "imul", 2, 0x69, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "div", 1, 0xf6, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "div", 2, 0xf6, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "idiv", 1, 0xf6, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "idiv", 2, 0xf6, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rol", 2, 0xd0, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rol", 2, 0xc0, 0x0, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rol", 2, 0xd2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rol", 1, 0xd0, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ror", 2, 0xd0, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ror", 2, 0xc0, 0x1, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ror", 2, 0xd2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ror", 1, 0xd0, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcl", 2, 0xd0, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcl", 2, 0xc0, 0x2, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcl", 2, 0xd2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcl", 1, 0xd0, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcr", 2, 0xd0, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcr", 2, 0xc0, 0x3, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcr", 2, 0xd2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rcr", 1, 0xd0, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sal", 2, 0xd0, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sal", 2, 0xc0, 0x4, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sal", 2, 0xd2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sal", 1, 0xd0, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shl", 2, 0xd0, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shl", 2, 0xc0, 0x4, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shl", 2, 0xd2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shl", 1, 0xd0, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shr", 2, 0xd0, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shr", 2, 0xc0, 0x5, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shr", 2, 0xd2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shr", 1, 0xd0, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sar", 2, 0xd0, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sar", 2, 0xc0, 0x7, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sar", 2, 0xd2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sar", 1, 0xd0, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shld", 3, 0xfa4, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shld", 3, 0xfa5, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shld", 2, 0xfa5, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shrd", 3, 0xfac, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shrd", 3, 0xfad, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "shrd", 2, 0xfad, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "call", 1, 0xe8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "call", 1, 0xe8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "call", 1, 0xff, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "call", 1, 0xff, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "call", 2, 0x9a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "call", 1, 0xff, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lcall", 2, 0x9a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lcall", 1, 0xff, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "jmp", 1, 0xeb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jmp", 1, 0xff, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "jmp", 1, 0xff, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "jmp", 2, 0xea, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "jmp", 1, 0xff, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ljmp", 2, 0xea, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ljmp", 1, 0xff, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ret", 0, 0xc3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ret", 1, 0xc2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ret", 0, 0xc3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ret", 1, 0xc2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lret", 0, 0xcb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lret", 1, 0xca, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "retf", 0, 0xcb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "retf", 1, 0xca, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "enter", 2, 0xc8, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "enter", 2, 0xc8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "leave", 0, 0xc9, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "leave", 0, 0xc9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "jo", 1, 0x70, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jno", 1, 0x71, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jb", 1, 0x72, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jc", 1, 0x72, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnae", 1, 0x72, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnb", 1, 0x73, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnc", 1, 0x73, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jae", 1, 0x73, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "je", 1, 0x74, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jz", 1, 0x74, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jne", 1, 0x75, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnz", 1, 0x75, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jbe", 1, 0x76, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jna", 1, 0x76, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnbe", 1, 0x77, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "ja", 1, 0x77, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "js", 1, 0x78, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jns", 1, 0x79, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jp", 1, 0x7a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jpe", 1, 0x7a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnp", 1, 0x7b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jpo", 1, 0x7b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jl", 1, 0x7c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnge", 1, 0x7c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnl", 1, 0x7d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jge", 1, 0x7d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jle", 1, 0x7e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jng", 1, 0x7e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jnle", 1, 0x7f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jg", 1, 0x7f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jcxz", 1, 0xe3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "jecxz", 1, 0xe3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "jecxz", 1, 0x67e3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "jrcxz", 1, 0xe3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "loop", 1, 0xe2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "loop", 1, 0xe2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "loopz", 1, 0xe1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "loopz", 1, 0xe1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "loope", 1, 0xe1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "loope", 1, 0xe1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "loopnz", 1, 0xe0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "loopnz", 1, 0xe0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "loopne", 1, 0xe0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "loopne", 1, 0xe0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, { "seto", 1, 0xf90, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setno", 1, 0xf91, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setb", 1, 0xf92, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setc", 1, 0xf92, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnae", 1, 0xf92, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnb", 1, 0xf93, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnc", 1, 0xf93, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setae", 1, 0xf93, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sete", 1, 0xf94, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setz", 1, 0xf94, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setne", 1, 0xf95, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnz", 1, 0xf95, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setbe", 1, 0xf96, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setna", 1, 0xf96, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnbe", 1, 0xf97, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "seta", 1, 0xf97, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sets", 1, 0xf98, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setns", 1, 0xf99, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setp", 1, 0xf9a, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setpe", 1, 0xf9a, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnp", 1, 0xf9b, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setpo", 1, 0xf9b, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setl", 1, 0xf9c, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnge", 1, 0xf9c, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnl", 1, 0xf9d, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setge", 1, 0xf9d, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setle", 1, 0xf9e, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setng", 1, 0xf9e, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setnle", 1, 0xf9f, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "setg", 1, 0xf9f, 0x0, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "cmps", 0, 0xa6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmps", 2, 0xa6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "scmp", 0, 0xa6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "scmp", 2, 0xa6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ins", 0, 0x6c, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ins", 2, 0x6c, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "outs", 0, 0x6e, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "outs", 2, 0x6e, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lods", 0, 0xac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lods", 1, 0xac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lods", 2, 0xac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "slod", 0, 0xac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "slod", 1, 0xac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "slod", 2, 0xac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movs", 0, 0xa4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movs", 2, 0xa4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "smov", 0, 0xa4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "smov", 2, 0xa4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "scas", 0, 0xae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "scas", 1, 0xae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "scas", 2, 0xae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ssca", 0, 0xae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ssca", 1, 0xae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ssca", 2, 0xae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "stos", 0, 0xaa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "stos", 1, 0xaa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "stos", 2, 0xaa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ssto", 0, 0xaa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ssto", 1, 0xaa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ssto", 2, 0xaa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "xlat", 0, 0xd7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xlat", 1, 0xd7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "bsf", 2, 0xfbc, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "bsr", 2, 0xfbd, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "bt", 2, 0xfa3, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "bt", 2, 0xfba, 0x4, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "btc", 2, 0xfbb, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "btc", 2, 0xfba, 0x7, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "btr", 2, 0xfb3, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "btr", 2, 0xfba, 0x6, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "bts", 2, 0xfab, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "bts", 2, 0xfba, 0x5, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "int", 1, 0xcd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "int3", 0, 0xcc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "into", 0, 0xce, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "iret", 0, 0xcf, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rsm", 0, 0xfaa, None, 2, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "bound", 2, 0x62, None, 1, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "hlt", 0, 0xf4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "nop", 1, 0xf1f, 0x0, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "nop", 0, 0x90, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "arpl", 2, 0x63, None, 1, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lar", 2, 0xf02, None, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lgdt", 1, 0xf01, 0x2, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lgdt", 1, 0xf01, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lidt", 1, 0xf01, 0x3, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lidt", 1, 0xf01, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lldt", 1, 0xf00, 0x2, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lmsw", 1, 0xf01, 0x6, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lsl", 2, 0xf03, None, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ltr", 1, 0xf00, 0x3, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sgdt", 1, 0xf01, 0x0, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sgdt", 1, 0xf01, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sidt", 1, 0xf01, 0x1, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sidt", 1, 0xf01, 0x1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sldt", 1, 0xf00, 0x0, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sldt", 1, 0xf00, 0x0, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "smsw", 1, 0xf01, 0x4, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "smsw", 1, 0xf01, 0x4, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "str", 1, 0xf00, 0x1, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "str", 1, 0xf00, 0x1, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "verr", 1, 0xf00, 0x4, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "verw", 1, 0xf00, 0x5, 2, { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fld", 1, 0xd9c0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fld", 1, 0xd9, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fld", 1, 0xd9c0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fld", 1, 0xdb, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fild", 1, 0xdf, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fild", 1, 0xdf, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fildll", 1, 0xdf, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fldt", 1, 0xdb, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fbld", 1, 0xdf, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fst", 1, 0xddd0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fst", 1, 0xd9, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fst", 1, 0xddd0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fist", 1, 0xdf, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fstp", 1, 0xddd8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fstp", 1, 0xd9, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fstp", 1, 0xddd8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fstp", 1, 0xdb, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fistp", 1, 0xdf, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fistp", 1, 0xdf, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fistpll", 1, 0xdf, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fstpt", 1, 0xdb, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fbstp", 1, 0xdf, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fxch", 1, 0xd9c8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fxch", 0, 0xd9c9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcom", 1, 0xd8d0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcom", 0, 0xd8d1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcom", 1, 0xd8, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fcom", 1, 0xd8d0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ficom", 1, 0xde, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fcomp", 1, 0xd8d8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomp", 0, 0xd8d9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomp", 1, 0xd8, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fcomp", 1, 0xd8d8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ficomp", 1, 0xde, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fcompp", 0, 0xded9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucom", 1, 0xdde0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucom", 0, 0xdde1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomp", 1, 0xdde8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomp", 0, 0xdde9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucompp", 0, 0xdae9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ftst", 0, 0xd9e4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fxam", 0, 0xd9e5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fld1", 0, 0xd9e8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fldl2t", 0, 0xd9e9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fldl2e", 0, 0xd9ea, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fldpi", 0, 0xd9eb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fldlg2", 0, 0xd9ec, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fldln2", 0, 0xd9ed, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fldz", 0, 0xd9ee, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fadd", 2, 0xd8c0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fadd", 1, 0xd8c0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fadd", 0, 0xdec1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fadd", 1, 0xd8, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fiadd", 1, 0xde, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "faddp", 2, 0xdec0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "faddp", 1, 0xdec0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "faddp", 0, 0xdec1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "faddp", 2, 0xdec0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsub", 1, 0xd8e0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsub", 2, 0xd8e0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsub", 0, 0xdee1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsub", 0, 0xdee9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsub", 2, 0xd8e0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsub", 1, 0xd8, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fisub", 1, 0xde, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fsubp", 2, 0xdee0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubp", 1, 0xdee0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubp", 0, 0xdee1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubp", 2, 0xdee0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0 }, + 0, 0, 0, 0, 0, 1, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubp", 2, 0xdee9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 }, + 0, 0, 0, 0, 0, 1, 1, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubp", 2, 0xdee8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubp", 1, 0xdee8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubp", 0, 0xdee9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubr", 1, 0xd8e8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubr", 2, 0xd8e8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubr", 0, 0xdee9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubr", 0, 0xdee1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubr", 2, 0xd8e8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubr", 1, 0xd8, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fisubr", 1, 0xde, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fsubrp", 2, 0xdee8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubrp", 1, 0xdee8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubrp", 0, 0xdee9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubrp", 2, 0xdee8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0 }, + 0, 0, 0, 0, 0, 1, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubrp", 2, 0xdee0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 }, + 0, 0, 0, 0, 0, 1, 1, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubrp", 2, 0xdee0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubrp", 1, 0xdee0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsubrp", 0, 0xdee1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fmul", 2, 0xd8c8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fmul", 1, 0xd8c8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fmul", 0, 0xdec9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fmul", 1, 0xd8, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fimul", 1, 0xde, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fmulp", 2, 0xdec8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fmulp", 1, 0xdec8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fmulp", 0, 0xdec9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fmulp", 2, 0xdec8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdiv", 1, 0xd8f0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdiv", 2, 0xd8f0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdiv", 0, 0xdef1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdiv", 0, 0xdef9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdiv", 2, 0xd8f0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdiv", 1, 0xd8, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fidiv", 1, 0xde, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fdivp", 2, 0xdef0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivp", 1, 0xdef0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivp", 0, 0xdef1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivp", 2, 0xdef0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0 }, + 0, 0, 0, 0, 0, 1, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivp", 2, 0xdef8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 }, + 0, 0, 0, 0, 0, 1, 1, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivp", 2, 0xdef8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivp", 1, 0xdef8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivp", 0, 0xdef9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivr", 1, 0xd8f8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivr", 2, 0xd8f8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivr", 0, 0xdef9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivr", 0, 0xdef1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivr", 2, 0xd8f8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivr", 1, 0xd8, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fidivr", 1, 0xde, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fdivrp", 2, 0xdef8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivrp", 1, 0xdef8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivrp", 0, 0xdef9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, + 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivrp", 2, 0xdef8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0 }, + 0, 0, 0, 0, 0, 1, 1, 1, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivrp", 2, 0xdef0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 }, + 0, 0, 0, 0, 0, 1, 1, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivrp", 2, 0xdef0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivrp", 1, 0xdef0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdivrp", 0, 0xdef1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "f2xm1", 0, 0xd9f0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fyl2x", 0, 0xd9f1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fptan", 0, 0xd9f2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fpatan", 0, 0xd9f3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fxtract", 0, 0xd9f4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fprem1", 0, 0xd9f5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdecstp", 0, 0xd9f6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fincstp", 0, 0xd9f7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fprem", 0, 0xd9f8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fyl2xp1", 0, 0xd9f9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsqrt", 0, 0xd9fa, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsincos", 0, 0xd9fb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "frndint", 0, 0xd9fc, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fscale", 0, 0xd9fd, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsin", 0, 0xd9fe, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcos", 0, 0xd9ff, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fchs", 0, 0xd9e0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fabs", 0, 0xd9e1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fninit", 0, 0xdbe3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "finit", 0, 0xdbe3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fldcw", 1, 0xd9, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fnstcw", 1, 0xd9, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fstcw", 1, 0xd9, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fnstsw", 1, 0xdfe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fnstsw", 1, 0xdd, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fnstsw", 0, 0xdfe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fstsw", 1, 0xdfe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fstsw", 1, 0xdd, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fstsw", 0, 0xdfe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fnclex", 0, 0xdbe2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fclex", 0, 0xdbe2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fnstenv", 1, 0xd9, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fstenv", 1, 0xd9, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fldenv", 1, 0xd9, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fnsave", 1, 0xdd, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fsave", 1, 0xdd, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "frstor", 1, 0xdd, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fneni", 0, 0xdbe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "feni", 0, 0xdbe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fndisi", 0, 0xdbe1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fdisi", 0, 0xdbe1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fnsetpm", 0, 0xdbe4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fsetpm", 0, 0xdbe4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "frstpm", 0, 0xdbe5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ffree", 1, 0xddc0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ffreep", 1, 0xdfc0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fnop", 0, 0xd9d0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fwait", 0, 0x9b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addr16", 0, 0x67, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addr32", 0, 0x67, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aword", 0, 0x67, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "adword", 0, 0x67, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "data16", 0, 0x66, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "data32", 0, 0x66, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "word", 0, 0x66, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "dword", 0, 0x66, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lock", 0, 0xf0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "wait", 0, 0x9b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cs", 0, 0x2e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ds", 0, 0x3e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "es", 0, 0x26, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fs", 0, 0x64, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "gs", 0, 0x65, None, 1, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ss", 0, 0x36, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rep", 0, 0xf3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "repe", 0, 0xf3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "repz", 0, 0xf3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "repne", 0, 0xf2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "repnz", 0, 0xf2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ht", 0, 0x3e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "hnt", 0, 0x2e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex", 0, 0x40, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rexz", 0, 0x41, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rexy", 0, 0x42, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rexyz", 0, 0x43, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rexx", 0, 0x44, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rexxz", 0, 0x45, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rexxy", 0, 0x46, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rexxyz", 0, 0x47, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64", 0, 0x48, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64z", 0, 0x49, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64y", 0, 0x4a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64yz", 0, 0x4b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64x", 0, 0x4c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64xz", 0, 0x4d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64xy", 0, 0x4e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex64xyz", 0, 0x4f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.b", 0, 0x41, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.x", 0, 0x42, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.xb", 0, 0x43, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.r", 0, 0x44, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.rb", 0, 0x45, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.rx", 0, 0x46, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.rxb", 0, 0x47, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.w", 0, 0x48, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.wb", 0, 0x49, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.wx", 0, 0x4a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.wxb", 0, 0x4b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.wr", 0, 0x4c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.wrb", 0, 0x4d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.wrx", 0, 0x4e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rex.wrxb", 0, 0x4f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "bswap", 1, 0xfc8, None, 2, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xadd", 2, 0xfc0, None, 2, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "cmpxchg", 2, 0xfb0, None, 2, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "invd", 0, 0xf08, None, 2, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "wbinvd", 0, 0xf09, None, 2, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "invlpg", 1, 0xf01, 0x7, 2, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "cpuid", 0, 0xfa2, None, 2, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "wrmsr", 0, 0xf30, None, 2, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rdtsc", 0, 0xf31, None, 2, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rdmsr", 0, 0xf32, None, 2, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpxchg8b", 1, 0xfc7, 0x1, 2, { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "sysenter", 0, 0xf34, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sysexit", 0, 0xf35, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fxsave", 1, 0xfae, 0x0, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, + { "fxsave64", 1, 0xfae, 0x0, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fxrstor", 1, 0xfae, 0x1, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, + { "fxrstor64", 1, 0xfae, 0x1, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "rdpmc", 0, 0xf33, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ud2", 0, 0xf0b, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ud2a", 0, 0xf0b, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ud2b", 0, 0xfb9, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovo", 2, 0xf40, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovno", 2, 0xf41, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovb", 2, 0xf42, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovc", 2, 0xf42, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnae", 2, 0xf42, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovae", 2, 0xf43, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnc", 2, 0xf43, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnb", 2, 0xf43, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmove", 2, 0xf44, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovz", 2, 0xf44, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovne", 2, 0xf45, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnz", 2, 0xf45, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovbe", 2, 0xf46, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovna", 2, 0xf46, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmova", 2, 0xf47, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnbe", 2, 0xf47, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovs", 2, 0xf48, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovns", 2, 0xf49, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovp", 2, 0xf4a, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnp", 2, 0xf4b, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovl", 2, 0xf4c, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnge", 2, 0xf4c, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovge", 2, 0xf4d, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnl", 2, 0xf4d, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovle", 2, 0xf4e, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovng", 2, 0xf4e, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovg", 2, 0xf4f, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovnle", 2, 0xf4f, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovpe", 2, 0xf4a, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmovpo", 2, 0xf4b, None, 2, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovb", 2, 0xdac0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovnae", 2, 0xdac0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmove", 2, 0xdac8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovbe", 2, 0xdad0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovna", 2, 0xdad0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovu", 2, 0xdad8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovae", 2, 0xdbc0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovnb", 2, 0xdbc0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovne", 2, 0xdbc8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmova", 2, 0xdbd0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovnbe", 2, 0xdbd0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcmovnu", 2, 0xdbd8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomi", 2, 0xdbf0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomi", 0, 0xdbf1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomi", 1, 0xdbf0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomi", 2, 0xdbe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomi", 0, 0xdbe9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomi", 1, 0xdbe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomip", 2, 0xdff0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomip", 0, 0xdff1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcomip", 1, 0xdff0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcompi", 2, 0xdff0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcompi", 0, 0xdff1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fcompi", 1, 0xdff0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomip", 2, 0xdfe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomip", 0, 0xdfe9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucomip", 1, 0xdfe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucompi", 2, 0xdfe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucompi", 0, 0xdfe9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "fucompi", 1, 0xdfe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movnti", 2, 0xfc3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "clflush", 1, 0xfae, 0x7, 2, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "lfence", 0, 0xfae, 0xe8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mfence", 0, 0xfae, 0xf0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pause", 0, 0xf390, None, 2, { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "emms", 0, 0xf77, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movd", 2, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0x660f6e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0x660f6e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0x660f7e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movd", 2, 0x660f7e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0xf6e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0xf6e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movd", 2, 0xf7e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movd", 2, 0xf7e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0xa0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0x88, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0xc6, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0xb0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0xf37e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0x66d6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0xf30f7e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0x660fd6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0x660f6e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0x660f7e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0xf6f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0xf7f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0xf6e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0xf7e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movq", 2, 0x8c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0x8e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0xf20, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq", 2, 0xf21, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packssdw", 2, 0x666b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packssdw", 2, 0x660f6b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packssdw", 2, 0xf6b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packsswb", 2, 0x6663, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packsswb", 2, 0x660f63, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packsswb", 2, 0xf63, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packuswb", 2, 0x6667, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packuswb", 2, 0x660f67, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packuswb", 2, 0xf67, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddb", 2, 0x66fc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddb", 2, 0x660ffc, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddb", 2, 0xffc, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddw", 2, 0x66fd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddw", 2, 0x660ffd, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddw", 2, 0xffd, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddd", 2, 0x66fe, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddd", 2, 0x660ffe, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddd", 2, 0xffe, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddq", 2, 0x66d4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddq", 2, 0x660fd4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddq", 2, 0xfd4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddsb", 2, 0x66ec, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddsb", 2, 0x660fec, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddsb", 2, 0xfec, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddsw", 2, 0x66ed, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddsw", 2, 0x660fed, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddsw", 2, 0xfed, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddusb", 2, 0x66dc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddusb", 2, 0x660fdc, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddusb", 2, 0xfdc, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddusw", 2, 0x66dd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddusw", 2, 0x660fdd, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "paddusw", 2, 0xfdd, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pand", 2, 0x66db, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pand", 2, 0x660fdb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pand", 2, 0xfdb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pandn", 2, 0x66df, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pandn", 2, 0x660fdf, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pandn", 2, 0xfdf, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqb", 2, 0x6674, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqb", 2, 0x660f74, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqb", 2, 0xf74, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqw", 2, 0x6675, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqw", 2, 0x660f75, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqw", 2, 0xf75, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqd", 2, 0x6676, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqd", 2, 0x660f76, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqd", 2, 0xf76, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtb", 2, 0x6664, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtb", 2, 0x660f64, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtb", 2, 0xf64, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtw", 2, 0x6665, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtw", 2, 0x660f65, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtw", 2, 0xf65, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtd", 2, 0x6666, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtd", 2, 0x660f66, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtd", 2, 0xf66, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaddwd", 2, 0x66f5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaddwd", 2, 0x660ff5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaddwd", 2, 0xff5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhw", 2, 0x66e5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhw", 2, 0x660fe5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhw", 2, 0xfe5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmullw", 2, 0x66d5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmullw", 2, 0x660fd5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmullw", 2, 0xfd5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "por", 2, 0x66eb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "por", 2, 0x660feb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "por", 2, 0xfeb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllw", 2, 0x6671, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllw", 2, 0x66f1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllw", 2, 0x660f71, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllw", 2, 0x660ff1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllw", 2, 0xf71, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllw", 2, 0xff1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslld", 2, 0x6672, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslld", 2, 0x66f2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslld", 2, 0x660f72, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslld", 2, 0x660ff2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslld", 2, 0xf72, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslld", 2, 0xff2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllq", 2, 0x6673, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllq", 2, 0x66f3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllq", 2, 0x660f73, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllq", 2, 0x660ff3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllq", 2, 0xf73, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psllq", 2, 0xff3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psraw", 2, 0x6671, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psraw", 2, 0x66e1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psraw", 2, 0x660f71, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psraw", 2, 0x660fe1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psraw", 2, 0xf71, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psraw", 2, 0xfe1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrad", 2, 0x6672, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrad", 2, 0x66e2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrad", 2, 0x660f72, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrad", 2, 0x660fe2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrad", 2, 0xf72, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrad", 2, 0xfe2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlw", 2, 0x6671, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlw", 2, 0x66d1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlw", 2, 0x660f71, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlw", 2, 0x660fd1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlw", 2, 0xf71, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlw", 2, 0xfd1, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrld", 2, 0x6672, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrld", 2, 0x66d2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrld", 2, 0x660f72, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrld", 2, 0x660fd2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrld", 2, 0xf72, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrld", 2, 0xfd2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlq", 2, 0x6673, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlq", 2, 0x66d3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlq", 2, 0x660f73, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlq", 2, 0x660fd3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlq", 2, 0xf73, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrlq", 2, 0xfd3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubb", 2, 0x66f8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubb", 2, 0x660ff8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubb", 2, 0xff8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubw", 2, 0x66f9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubw", 2, 0x660ff9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubw", 2, 0xff9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubd", 2, 0x66fa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubd", 2, 0x660ffa, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubd", 2, 0xffa, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubq", 2, 0x66fb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubq", 2, 0x660ffb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubq", 2, 0xffb, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubsb", 2, 0x66e8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubsb", 2, 0x660fe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubsb", 2, 0xfe8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubsw", 2, 0x66e9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubsw", 2, 0x660fe9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubsw", 2, 0xfe9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubusb", 2, 0x66d8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubusb", 2, 0x660fd8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubusb", 2, 0xfd8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubusw", 2, 0x66d9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubusw", 2, 0x660fd9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psubusw", 2, 0xfd9, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhbw", 2, 0x6668, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhbw", 2, 0x660f68, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhbw", 2, 0xf68, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhwd", 2, 0x6669, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhwd", 2, 0x660f69, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhwd", 2, 0xf69, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhdq", 2, 0x666a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhdq", 2, 0x660f6a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhdq", 2, 0xf6a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklbw", 2, 0x6660, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklbw", 2, 0x660f60, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklbw", 2, 0xf60, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklwd", 2, 0x6661, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklwd", 2, 0x660f61, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklwd", 2, 0xf61, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckldq", 2, 0x6662, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckldq", 2, 0x660f62, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckldq", 2, 0xf62, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pxor", 2, 0x66ef, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pxor", 2, 0x660fef, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pxor", 2, 0xfef, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addps", 2, 0x58, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addps", 2, 0xf58, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addss", 2, 0xf358, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addss", 2, 0xf30f58, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andnps", 2, 0x55, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andnps", 2, 0xf55, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andps", 2, 0x54, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andps", 2, 0xf54, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqps", 2, 0xc2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqps", 2, 0xfc2, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqss", 2, 0xf3c2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqss", 2, 0xf30fc2, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpleps", 2, 0xc2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpleps", 2, 0xfc2, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpless", 2, 0xf3c2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpless", 2, 0xf30fc2, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltps", 2, 0xc2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltps", 2, 0xfc2, 0x1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltss", 2, 0xf3c2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltss", 2, 0xf30fc2, 0x1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqps", 2, 0xc2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqps", 2, 0xfc2, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqss", 2, 0xf3c2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqss", 2, 0xf30fc2, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnleps", 2, 0xc2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnleps", 2, 0xfc2, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnless", 2, 0xf3c2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnless", 2, 0xf30fc2, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltps", 2, 0xc2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltps", 2, 0xfc2, 0x5, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltss", 2, 0xf3c2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltss", 2, 0xf30fc2, 0x5, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordps", 2, 0xc2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordps", 2, 0xfc2, 0x7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordss", 2, 0xf3c2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordss", 2, 0xf30fc2, 0x7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordps", 2, 0xc2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordps", 2, 0xfc2, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordss", 2, 0xf3c2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordss", 2, 0xf30fc2, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpps", 3, 0xc2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpps", 3, 0xfc2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpss", 3, 0xf3c2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpss", 3, 0xf30fc2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "comiss", 2, 0x2f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "comiss", 2, 0xf2f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtpi2ps", 2, 0xf2a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtps2pi", 2, 0xf2d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2ss", 2, 0xf32a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2ss", 2, 0xf32a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2ss", 2, 0xf30f2a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2ss", 2, 0xf30f2a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtss2si", 2, 0xf32d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtss2si", 2, 0xf30f2d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttps2pi", 2, 0xf2c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttss2si", 2, 0xf32c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttss2si", 2, 0xf30f2c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divps", 2, 0x5e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divps", 2, 0xf5e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divss", 2, 0xf35e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divss", 2, 0xf30f5e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ldmxcsr", 1, 0xae, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "ldmxcsr", 1, 0xfae, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "maskmovq", 2, 0xff7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxps", 2, 0x5f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxps", 2, 0xf5f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxss", 2, 0xf35f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxss", 2, 0xf30f5f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minps", 2, 0x5d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minps", 2, 0xf5d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minss", 2, 0xf35d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minss", 2, 0xf30f5d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movaps", 2, 0x28, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movaps", 2, 0x29, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movaps", 2, 0xf28, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movaps", 2, 0xf29, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movhlps", 2, 0x12, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movhlps", 2, 0xf12, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movhps", 2, 0x16, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movhps", 2, 0x17, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movhps", 2, 0xf16, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movhps", 2, 0xf17, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movlhps", 2, 0x16, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movlhps", 2, 0xf16, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movlps", 2, 0x12, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movlps", 2, 0x13, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movlps", 2, 0xf12, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movlps", 2, 0xf13, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movmskps", 2, 0x50, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movmskps", 2, 0xf50, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movntps", 2, 0x2b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movntps", 2, 0xf2b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movntq", 2, 0xfe7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movntdq", 2, 0x66e7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movntdq", 2, 0x660fe7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movss", 2, 0xf311, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movss", 2, 0xf310, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movss", 2, 0xf310, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movss", 2, 0xf311, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movss", 2, 0xf30f10, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movss", 2, 0xf30f11, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movups", 2, 0x10, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movups", 2, 0x11, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movups", 2, 0xf10, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movups", 2, 0xf11, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "mulps", 2, 0x59, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mulps", 2, 0xf59, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mulss", 2, 0xf359, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mulss", 2, 0xf30f59, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "orps", 2, 0x56, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "orps", 2, 0xf56, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pavgb", 2, 0xfe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pavgb", 2, 0x66e0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pavgb", 2, 0x660fe0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pavgw", 2, 0xfe3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pavgw", 2, 0x66e3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pavgw", 2, 0x660fe3, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pextrw", 3, 0x66c5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pextrw", 3, 0x6615, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pextrw", 3, 0x660fc5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pextrw", 3, 0x660f3a15, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pextrw", 3, 0xfc5, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrw", 3, 0x66c4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrw", 3, 0x660fc4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrw", 3, 0xfc4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxsw", 2, 0x66ee, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxsw", 2, 0x660fee, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxsw", 2, 0xfee, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxub", 2, 0x66de, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxub", 2, 0x660fde, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxub", 2, 0xfde, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminsw", 2, 0x66ea, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminsw", 2, 0x660fea, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminsw", 2, 0xfea, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminub", 2, 0x66da, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminub", 2, 0x660fda, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminub", 2, 0xfda, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovmskb", 2, 0x66d7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovmskb", 2, 0x660fd7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovmskb", 2, 0xfd7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhuw", 2, 0x66e4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhuw", 2, 0x660fe4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhuw", 2, 0xfe4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "prefetchnta", 1, 0xf18, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "prefetcht0", 1, 0xf18, 0x1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "prefetcht1", 1, 0xf18, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "prefetcht2", 1, 0xf18, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "psadbw", 2, 0xff6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psadbw", 2, 0x66f6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psadbw", 2, 0x660ff6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufw", 3, 0xf70, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rcpps", 2, 0x53, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rcpps", 2, 0xf53, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rcpss", 2, 0xf353, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rcpss", 2, 0xf30f53, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rsqrtps", 2, 0x52, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rsqrtps", 2, 0xf52, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rsqrtss", 2, 0xf352, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rsqrtss", 2, 0xf30f52, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sfence", 0, 0xfae, 0xf8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "shufps", 3, 0xc6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "shufps", 3, 0xfc6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtps", 2, 0x51, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtps", 2, 0xf51, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtss", 2, 0xf351, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtss", 2, 0xf30f51, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "stmxcsr", 1, 0xae, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "stmxcsr", 1, 0xfae, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "subps", 2, 0x5c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "subps", 2, 0xf5c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "subss", 2, 0xf35c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "subss", 2, 0xf30f5c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ucomiss", 2, 0x2e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ucomiss", 2, 0xf2e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpckhps", 2, 0x15, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpckhps", 2, 0xf15, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpcklps", 2, 0x14, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpcklps", 2, 0xf14, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xorps", 2, 0x57, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xorps", 2, 0xf57, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addpd", 2, 0x6658, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addpd", 2, 0x660f58, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addsd", 2, 0xf258, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addsd", 2, 0xf20f58, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andnpd", 2, 0x6655, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andnpd", 2, 0x660f55, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andpd", 2, 0x6654, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "andpd", 2, 0x660f54, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqpd", 2, 0x66c2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqpd", 2, 0x660fc2, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqsd", 2, 0xf2c2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpeqsd", 2, 0xf20fc2, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmplepd", 2, 0x66c2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmplepd", 2, 0x660fc2, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmplesd", 2, 0xf2c2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmplesd", 2, 0xf20fc2, 0x2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltpd", 2, 0x66c2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltpd", 2, 0x660fc2, 0x1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltsd", 2, 0xf2c2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpltsd", 2, 0xf20fc2, 0x1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqpd", 2, 0x66c2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqpd", 2, 0x660fc2, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqsd", 2, 0xf2c2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpneqsd", 2, 0xf20fc2, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnlepd", 2, 0x66c2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnlepd", 2, 0x660fc2, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnlesd", 2, 0xf2c2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnlesd", 2, 0xf20fc2, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltpd", 2, 0x66c2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltpd", 2, 0x660fc2, 0x5, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltsd", 2, 0xf2c2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpnltsd", 2, 0xf20fc2, 0x5, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordpd", 2, 0x66c2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordpd", 2, 0x660fc2, 0x7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordsd", 2, 0xf2c2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpordsd", 2, 0xf20fc2, 0x7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordpd", 2, 0x66c2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordpd", 2, 0x660fc2, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordsd", 2, 0xf2c2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpunordsd", 2, 0xf20fc2, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmppd", 3, 0x66c2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmppd", 3, 0x660fc2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpsd", 0, 0xa7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpsd", 2, 0xa7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "cmpsd", 3, 0xf2c2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpsd", 3, 0xf20fc2, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "comisd", 2, 0x662f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "comisd", 2, 0x660f2f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtpi2pd", 2, 0x660f2a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2sd", 2, 0xf22a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2sd", 2, 0xf22a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2sd", 2, 0xf20f2a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsi2sd", 2, 0xf20f2a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divpd", 2, 0x665e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divpd", 2, 0x660f5e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divsd", 2, 0xf25e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "divsd", 2, 0xf20f5e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxpd", 2, 0x665f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxpd", 2, 0x660f5f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxsd", 2, 0xf25f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maxsd", 2, 0xf20f5f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minpd", 2, 0x665d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minpd", 2, 0x660f5d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minsd", 2, 0xf25d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "minsd", 2, 0xf20f5d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movapd", 2, 0x6628, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movapd", 2, 0x6629, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movapd", 2, 0x660f28, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movapd", 2, 0x660f29, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movhpd", 2, 0x6616, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movhpd", 2, 0x6617, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movhpd", 2, 0x660f16, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movhpd", 2, 0x660f17, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movlpd", 2, 0x6612, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movlpd", 2, 0x6613, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movlpd", 2, 0x660f12, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movlpd", 2, 0x660f13, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movmskpd", 2, 0x6650, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movmskpd", 2, 0x660f50, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movntpd", 2, 0x662b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movntpd", 2, 0x660f2b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movsd", 0, 0xa5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsd", 2, 0xa5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movsd", 2, 0xf211, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movsd", 2, 0xf210, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsd", 2, 0xf210, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsd", 2, 0xf211, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsd", 2, 0xf20f10, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsd", 2, 0xf20f11, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movupd", 2, 0x6610, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movupd", 2, 0x6611, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movupd", 2, 0x660f10, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movupd", 2, 0x660f11, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "mulpd", 2, 0x6659, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mulpd", 2, 0x660f59, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mulsd", 2, 0xf259, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mulsd", 2, 0xf20f59, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "orpd", 2, 0x6656, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "orpd", 2, 0x660f56, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "shufpd", 3, 0x66c6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "shufpd", 3, 0x660fc6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtpd", 2, 0x6651, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtpd", 2, 0x660f51, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtsd", 2, 0xf251, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sqrtsd", 2, 0xf20f51, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "subpd", 2, 0x665c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "subpd", 2, 0x660f5c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "subsd", 2, 0xf25c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "subsd", 2, 0xf20f5c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ucomisd", 2, 0x662e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ucomisd", 2, 0x660f2e, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpckhpd", 2, 0x6615, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpckhpd", 2, 0x660f15, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpcklpd", 2, 0x6614, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "unpcklpd", 2, 0x660f14, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xorpd", 2, 0x6657, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xorpd", 2, 0x660f57, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtdq2pd", 2, 0xf3e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtdq2pd", 2, 0xf30fe6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtpd2dq", 2, 0xf2e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtpd2dq", 2, 0xf20fe6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtdq2ps", 2, 0x5b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtdq2ps", 2, 0xf5b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtpd2pi", 2, 0x660f2d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtpd2ps", 2, 0x665a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtpd2ps", 2, 0x660f5a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtps2pd", 2, 0x5a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtps2pd", 2, 0xf5a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtps2dq", 2, 0x665b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtps2dq", 2, 0x660f5b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsd2si", 2, 0xf22d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsd2si", 2, 0xf20f2d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsd2ss", 2, 0xf25a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtsd2ss", 2, 0xf20f5a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtss2sd", 2, 0xf35a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvtss2sd", 2, 0xf30f5a, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttpd2pi", 2, 0x660f2c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttsd2si", 2, 0xf22c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttsd2si", 2, 0xf20f2c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttpd2dq", 2, 0x66e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttpd2dq", 2, 0x660fe6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttps2dq", 2, 0xf35b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cvttps2dq", 2, 0xf30f5b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maskmovdqu", 2, 0x66f7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "maskmovdqu", 2, 0x660ff7, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movdqa", 2, 0x666f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movdqa", 2, 0x667f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movdqa", 2, 0x660f6f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movdqa", 2, 0x660f7f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movdqu", 2, 0xf36f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movdqu", 2, 0xf37f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movdqu", 2, 0xf30f6f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movdqu", 2, 0xf30f7f, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "movdq2q", 2, 0xf20fd6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movq2dq", 2, 0xf30fd6, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmuludq", 2, 0x66f4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmuludq", 2, 0x660ff4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmuludq", 2, 0xff4, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufd", 3, 0x6670, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufd", 3, 0x660f70, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufhw", 3, 0xf370, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufhw", 3, 0xf30f70, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshuflw", 3, 0xf270, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshuflw", 3, 0xf20f70, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslldq", 2, 0x6673, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pslldq", 2, 0x660f73, 0x7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrldq", 2, 0x6673, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psrldq", 2, 0x660f73, 0x3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhqdq", 2, 0x666d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpckhqdq", 2, 0x660f6d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklqdq", 2, 0x666c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "punpcklqdq", 2, 0x660f6c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addsubpd", 2, 0x66d0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addsubpd", 2, 0x660fd0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addsubps", 2, 0xf2d0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "addsubps", 2, 0xf20fd0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "cmpxchg16b", 1, 0xfc7, 0x1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "fisttp", 1, 0xdf, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fisttp", 1, 0xdd, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "fisttpll", 1, 0xdd, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "haddpd", 2, 0x667c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "haddpd", 2, 0x660f7c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "haddps", 2, 0xf27c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "haddps", 2, 0xf20f7c, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "hsubpd", 2, 0x667d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "hsubpd", 2, 0x660f7d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "hsubps", 2, 0xf27d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "hsubps", 2, 0xf20f7d, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lddqu", 2, 0xf2f0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lddqu", 2, 0xf20ff0, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "monitor", 0, 0xf01, 0xc8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "monitor", 3, 0xf01, 0xc8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "monitor", 3, 0xf01, 0xc8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movddup", 2, 0xf212, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movddup", 2, 0xf20f12, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movshdup", 2, 0xf316, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movshdup", 2, 0xf30f16, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsldup", 2, 0xf312, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movsldup", 2, 0xf30f12, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mwait", 0, 0xf01, 0xc9, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mwait", 2, 0xf01, 0xc9, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mwait", 2, 0xf01, 0xc9, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmcall", 0, 0xf01, 0xc1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmclear", 1, 0x660fc7, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmlaunch", 0, 0xf01, 0xc2, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmresume", 0, 0xf01, 0xc3, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmptrld", 1, 0xfc7, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmptrst", 1, 0xfc7, 0x7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmread", 2, 0xf78, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmread", 2, 0xf78, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmwrite", 2, 0xf79, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmwrite", 2, 0xf79, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmxoff", 0, 0xf01, 0xc4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmxon", 1, 0xf30fc7, 0x6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "getsec", 0, 0xf37, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "invept", 2, 0x660f3880, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "invept", 2, 0x660f3880, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "invvpid", 2, 0x660f3881, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "invvpid", 2, 0x660f3881, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddw", 2, 0x6601, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddw", 2, 0x660f3801, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddw", 2, 0xf3801, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddd", 2, 0x6602, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddd", 2, 0x660f3802, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddd", 2, 0xf3802, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddsw", 2, 0x6603, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddsw", 2, 0x660f3803, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phaddsw", 2, 0xf3803, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubw", 2, 0x6605, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubw", 2, 0x660f3805, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubw", 2, 0xf3805, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubd", 2, 0x6606, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubd", 2, 0x660f3806, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubd", 2, 0xf3806, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubsw", 2, 0x6607, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubsw", 2, 0x660f3807, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phsubsw", 2, 0xf3807, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaddubsw", 2, 0x6604, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaddubsw", 2, 0x660f3804, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaddubsw", 2, 0xf3804, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhrsw", 2, 0x660b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhrsw", 2, 0x660f380b, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhrsw", 2, 0xf380b, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufb", 2, 0x6600, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufb", 2, 0x660f3800, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pshufb", 2, 0xf3800, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignb", 2, 0x6608, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignb", 2, 0x660f3808, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignb", 2, 0xf3808, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignw", 2, 0x6609, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignw", 2, 0x660f3809, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignw", 2, 0xf3809, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignd", 2, 0x660a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignd", 2, 0x660f380a, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "psignd", 2, 0xf380a, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "palignr", 3, 0x660f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "palignr", 3, 0x660f3a0f, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "palignr", 3, 0xf3a0f, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsb", 2, 0x661c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsb", 2, 0x660f381c, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsb", 2, 0xf381c, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsw", 2, 0x661d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsw", 2, 0x660f381d, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsw", 2, 0xf381d, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsd", 2, 0x661e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsd", 2, 0x660f381e, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pabsd", 2, 0xf381e, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendpd", 3, 0x660d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendpd", 3, 0x660f3a0d, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendps", 3, 0x660c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendps", 3, 0x660f3a0c, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvpd", 3, 0x664b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvpd", 2, 0x664b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvpd", 3, 0x660f3815, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvpd", 2, 0x660f3815, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvps", 3, 0x664a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvps", 2, 0x664a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvps", 3, 0x660f3814, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "blendvps", 2, 0x660f3814, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "dppd", 3, 0x6641, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "dppd", 3, 0x660f3a41, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "dpps", 3, 0x6640, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "dpps", 3, 0x660f3a40, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "extractps", 3, 0x6617, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "extractps", 3, 0x660f3a17, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "insertps", 3, 0x6621, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "insertps", 3, 0x660f3a21, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movntdqa", 2, 0x662a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movntdqa", 2, 0x660f382a, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mpsadbw", 3, 0x6642, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "mpsadbw", 3, 0x660f3a42, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packusdw", 2, 0x662b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "packusdw", 2, 0x660f382b, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pblendvb", 3, 0x664c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pblendvb", 2, 0x664c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pblendvb", 3, 0x660f3810, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pblendvb", 2, 0x660f3810, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pblendw", 3, 0x660e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pblendw", 3, 0x660f3a0e, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqq", 2, 0x6629, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpeqq", 2, 0x660f3829, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pextrb", 3, 0x6614, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pextrb", 3, 0x660f3a14, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pextrd", 3, 0x6616, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pextrd", 3, 0x660f3a16, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pextrq", 3, 0x6616, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "pextrq", 3, 0x660f3a16, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "phminposuw", 2, 0x6641, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "phminposuw", 2, 0x660f3841, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrb", 3, 0x6620, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrb", 3, 0x660f3a20, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrd", 3, 0x6622, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrd", 3, 0x660f3a22, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrq", 3, 0x6622, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pinsrq", 3, 0x660f3a22, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxsb", 2, 0x663c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxsb", 2, 0x660f383c, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxsd", 2, 0x663d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxsd", 2, 0x660f383d, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxud", 2, 0x663f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxud", 2, 0x660f383f, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxuw", 2, 0x663e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmaxuw", 2, 0x660f383e, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminsb", 2, 0x6638, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminsb", 2, 0x660f3838, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminsd", 2, 0x6639, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminsd", 2, 0x660f3839, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminud", 2, 0x663b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminud", 2, 0x660f383b, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminuw", 2, 0x663a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pminuw", 2, 0x660f383a, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxbw", 2, 0x6620, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxbw", 2, 0x660f3820, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxbd", 2, 0x6621, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxbd", 2, 0x660f3821, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxbq", 2, 0x6622, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxbq", 2, 0x660f3822, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxwd", 2, 0x6623, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxwd", 2, 0x660f3823, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxwq", 2, 0x6624, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxwq", 2, 0x660f3824, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxdq", 2, 0x6625, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovsxdq", 2, 0x660f3825, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxbw", 2, 0x6630, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxbw", 2, 0x660f3830, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxbd", 2, 0x6631, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxbd", 2, 0x660f3831, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxbq", 2, 0x6632, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxbq", 2, 0x660f3832, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxwd", 2, 0x6633, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxwd", 2, 0x660f3833, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxwq", 2, 0x6634, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxwq", 2, 0x660f3834, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxdq", 2, 0x6635, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmovzxdq", 2, 0x660f3835, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmuldq", 2, 0x6628, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmuldq", 2, 0x660f3828, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulld", 2, 0x6640, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulld", 2, 0x660f3840, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ptest", 2, 0x6617, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "ptest", 2, 0x660f3817, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundpd", 3, 0x6609, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundpd", 3, 0x660f3a09, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundps", 3, 0x6608, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundps", 3, 0x660f3a08, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundsd", 3, 0x660b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundsd", 3, 0x660f3a0b, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundss", 3, 0x660a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "roundss", 3, 0x660f3a0a, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtq", 2, 0x6637, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpgtq", 2, 0x660f3837, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpestri", 3, 0x6661, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpestri", 3, 0x660f3a61, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpestrm", 3, 0x6660, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpestrm", 3, 0x660f3a60, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpistri", 3, 0x6663, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpistri", 3, 0x660f3a63, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpistrm", 3, 0x6662, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pcmpistrm", 3, 0x660f3a62, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "crc32", 2, 0xf20f38f1, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "crc32", 2, 0xf20f38f1, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "crc32", 2, 0xf20f38f0, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "crc32", 2, 0xf20f38f0, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xsave", 1, 0xfae, 0x4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, + { "xsave64", 1, 0xfae, 0x4, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, { "xrstor", 1, 0xfae, 0x5, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, + { "xrstor64", 1, 0xfae, 0x5, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "xgetbv", 0, 0xf01, 0xd0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xsetbv", 0, 0xf01, 0xd1, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "xsaveopt", 1, 0xfae, 0x6, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, + { "xsaveopt64", 1, 0xfae, 0x6, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, { "aesdec", 2, 0x66de, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesdec", 2, 0x660f38de, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesdeclast", 2, 0x66df, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesdeclast", 2, 0x660f38df, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesenc", 2, 0x66dc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesenc", 2, 0x660f38dc, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesenclast", 2, 0x66dd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesenclast", 2, 0x660f38dd, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesimc", 2, 0x66db, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aesimc", 2, 0x660f38db, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aeskeygenassist", 3, 0x66df, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "aeskeygenassist", 3, 0x660f3adf, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmulqdq", 3, 0x6644, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmulqdq", 3, 0x660f3a44, None, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmullqlqdq", 2, 0x6644, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmullqlqdq", 2, 0x660f3a44, 0x0, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmulhqlqdq", 2, 0x6644, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmulhqlqdq", 2, 0x660f3a44, 0x1, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmullqhqdq", 2, 0x6644, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmullqhqdq", 2, 0x660f3a44, 0x10, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmulhqhqdq", 2, 0x6644, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pclmulhqhqdq", 2, 0x660f3a44, 0x11, 3, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddpd", 3, 0x6658, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddpd", 3, 0x6658, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddps", 3, 0x58, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddps", 3, 0x58, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddsd", 3, 0xf258, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddss", 3, 0xf358, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddsubpd", 3, 0x66d0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddsubpd", 3, 0x66d0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddsubps", 3, 0xf2d0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaddsubps", 3, 0xf2d0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandnpd", 3, 0x6655, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandnpd", 3, 0x6655, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandnps", 3, 0x55, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandnps", 3, 0x55, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandpd", 3, 0x6654, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandpd", 3, 0x6654, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandps", 3, 0x54, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vandps", 3, 0x54, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendpd", 4, 0x660d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendpd", 4, 0x660d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendps", 4, 0x660c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendps", 4, 0x660c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendvpd", 4, 0x664b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendvpd", 4, 0x664b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendvps", 4, 0x664a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vblendvps", 4, 0x664a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vbroadcastf128", 2, 0x661a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vbroadcastsd", 2, 0x6619, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vbroadcastss", 2, 0x6618, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vbroadcastss", 2, 0x6618, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_ospd", 3, 0x66c2, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_ospd", 3, 0x66c2, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_osps", 3, 0xc2, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_osps", 3, 0xc2, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_ossd", 3, 0xf2c2, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_osss", 3, 0xf3c2, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeqpd", 3, 0x66c2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeqpd", 3, 0x66c2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeqps", 3, 0xc2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeqps", 3, 0xc2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeqsd", 3, 0xf2c2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeqss", 3, 0xf3c2, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uqpd", 3, 0x66c2, 0x8, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uqpd", 3, 0x66c2, 0x8, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uqps", 3, 0xc2, 0x8, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uqps", 3, 0xc2, 0x8, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uqsd", 3, 0xf2c2, 0x8, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uqss", 3, 0xf3c2, 0x8, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uspd", 3, 0x66c2, 0x18, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_uspd", 3, 0x66c2, 0x18, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_usps", 3, 0xc2, 0x18, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_usps", 3, 0xc2, 0x18, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_ussd", 3, 0xf2c2, 0x18, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpeq_usss", 3, 0xf3c2, 0x18, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalse_ospd", 3, 0x66c2, 0x1b, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalse_ospd", 3, 0x66c2, 0x1b, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalse_osps", 3, 0xc2, 0x1b, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalse_osps", 3, 0xc2, 0x1b, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalse_ossd", 3, 0xf2c2, 0x1b, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalse_osss", 3, 0xf3c2, 0x1b, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalsepd", 3, 0x66c2, 0xb, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalsepd", 3, 0x66c2, 0xb, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalseps", 3, 0xc2, 0xb, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalseps", 3, 0xc2, 0xb, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalsesd", 3, 0xf2c2, 0xb, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpfalsess", 3, 0xf3c2, 0xb, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpge_oqpd", 3, 0x66c2, 0x1d, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpge_oqpd", 3, 0x66c2, 0x1d, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpge_oqps", 3, 0xc2, 0x1d, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpge_oqps", 3, 0xc2, 0x1d, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpge_oqsd", 3, 0xf2c2, 0x1d, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpge_oqss", 3, 0xf3c2, 0x1d, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgepd", 3, 0x66c2, 0xd, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgepd", 3, 0x66c2, 0xd, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgeps", 3, 0xc2, 0xd, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgeps", 3, 0xc2, 0xd, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgesd", 3, 0xf2c2, 0xd, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgess", 3, 0xf3c2, 0xd, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgt_oqpd", 3, 0x66c2, 0x1e, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgt_oqpd", 3, 0x66c2, 0x1e, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgt_oqps", 3, 0xc2, 0x1e, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgt_oqps", 3, 0xc2, 0x1e, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgt_oqsd", 3, 0xf2c2, 0x1e, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgt_oqss", 3, 0xf3c2, 0x1e, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgtpd", 3, 0x66c2, 0xe, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgtpd", 3, 0x66c2, 0xe, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgtps", 3, 0xc2, 0xe, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgtps", 3, 0xc2, 0xe, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgtsd", 3, 0xf2c2, 0xe, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpgtss", 3, 0xf3c2, 0xe, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmple_oqpd", 3, 0x66c2, 0x12, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmple_oqpd", 3, 0x66c2, 0x12, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmple_oqps", 3, 0xc2, 0x12, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmple_oqps", 3, 0xc2, 0x12, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmple_oqsd", 3, 0xf2c2, 0x12, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmple_oqss", 3, 0xf3c2, 0x12, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplepd", 3, 0x66c2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplepd", 3, 0x66c2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpleps", 3, 0xc2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpleps", 3, 0xc2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplesd", 3, 0xf2c2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpless", 3, 0xf3c2, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplt_oqpd", 3, 0x66c2, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplt_oqpd", 3, 0x66c2, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplt_oqps", 3, 0xc2, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplt_oqps", 3, 0xc2, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplt_oqsd", 3, 0xf2c2, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmplt_oqss", 3, 0xf3c2, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpltpd", 3, 0x66c2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpltpd", 3, 0x66c2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpltps", 3, 0xc2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpltps", 3, 0xc2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpltsd", 3, 0xf2c2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpltss", 3, 0xf3c2, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_oqpd", 3, 0x66c2, 0xc, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_oqpd", 3, 0x66c2, 0xc, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_oqps", 3, 0xc2, 0xc, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_oqps", 3, 0xc2, 0xc, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_oqsd", 3, 0xf2c2, 0xc, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_oqss", 3, 0xf3c2, 0xc, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_ospd", 3, 0x66c2, 0x1c, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_ospd", 3, 0x66c2, 0x1c, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_osps", 3, 0xc2, 0x1c, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_osps", 3, 0xc2, 0x1c, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_ossd", 3, 0xf2c2, 0x1c, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_osss", 3, 0xf3c2, 0x1c, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneqpd", 3, 0x66c2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneqpd", 3, 0x66c2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneqps", 3, 0xc2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneqps", 3, 0xc2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneqsd", 3, 0xf2c2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneqss", 3, 0xf3c2, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_uspd", 3, 0x66c2, 0x14, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_uspd", 3, 0x66c2, 0x14, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_usps", 3, 0xc2, 0x14, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_usps", 3, 0xc2, 0x14, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_ussd", 3, 0xf2c2, 0x14, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpneq_usss", 3, 0xf3c2, 0x14, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngepd", 3, 0x66c2, 0x9, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngepd", 3, 0x66c2, 0x9, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngeps", 3, 0xc2, 0x9, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngeps", 3, 0xc2, 0x9, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngesd", 3, 0xf2c2, 0x9, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngess", 3, 0xf3c2, 0x9, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnge_uqpd", 3, 0x66c2, 0x19, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnge_uqpd", 3, 0x66c2, 0x19, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnge_uqps", 3, 0xc2, 0x19, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnge_uqps", 3, 0xc2, 0x19, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnge_uqsd", 3, 0xf2c2, 0x19, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnge_uqss", 3, 0xf3c2, 0x19, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngtpd", 3, 0x66c2, 0xa, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngtpd", 3, 0x66c2, 0xa, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngtps", 3, 0xc2, 0xa, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngtps", 3, 0xc2, 0xa, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngtsd", 3, 0xf2c2, 0xa, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngtss", 3, 0xf3c2, 0xa, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngt_uqpd", 3, 0x66c2, 0x1a, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngt_uqpd", 3, 0x66c2, 0x1a, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngt_uqps", 3, 0xc2, 0x1a, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngt_uqps", 3, 0xc2, 0x1a, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngt_uqsd", 3, 0xf2c2, 0x1a, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpngt_uqss", 3, 0xf3c2, 0x1a, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlepd", 3, 0x66c2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlepd", 3, 0x66c2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnleps", 3, 0xc2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnleps", 3, 0xc2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlesd", 3, 0xf2c2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnless", 3, 0xf3c2, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnle_uqpd", 3, 0x66c2, 0x16, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnle_uqpd", 3, 0x66c2, 0x16, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnle_uqps", 3, 0xc2, 0x16, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnle_uqps", 3, 0xc2, 0x16, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnle_uqsd", 3, 0xf2c2, 0x16, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnle_uqss", 3, 0xf3c2, 0x16, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnltpd", 3, 0x66c2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnltpd", 3, 0x66c2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnltps", 3, 0xc2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnltps", 3, 0xc2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnltsd", 3, 0xf2c2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnltss", 3, 0xf3c2, 0x5, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlt_uqpd", 3, 0x66c2, 0x15, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlt_uqpd", 3, 0x66c2, 0x15, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlt_uqps", 3, 0xc2, 0x15, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlt_uqps", 3, 0xc2, 0x15, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlt_uqsd", 3, 0xf2c2, 0x15, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpnlt_uqss", 3, 0xf3c2, 0x15, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpordpd", 3, 0x66c2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpordpd", 3, 0x66c2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpordps", 3, 0xc2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpordps", 3, 0xc2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpordsd", 3, 0xf2c2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpord_spd", 3, 0x66c2, 0x17, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpord_spd", 3, 0x66c2, 0x17, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpord_sps", 3, 0xc2, 0x17, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpord_sps", 3, 0xc2, 0x17, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpordss", 3, 0xf3c2, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpord_ssd", 3, 0xf2c2, 0x17, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpord_sss", 3, 0xf3c2, 0x17, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmppd", 4, 0x66c2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmppd", 4, 0x66c2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpps", 4, 0xc2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpps", 4, 0xc2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpsd", 4, 0xf2c2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpss", 4, 0xf3c2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptruepd", 3, 0x66c2, 0xf, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptruepd", 3, 0x66c2, 0xf, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrueps", 3, 0xc2, 0xf, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrueps", 3, 0xc2, 0xf, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptruesd", 3, 0xf2c2, 0xf, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptruess", 3, 0xf3c2, 0xf, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrue_uspd", 3, 0x66c2, 0x1f, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrue_uspd", 3, 0x66c2, 0x1f, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrue_usps", 3, 0xc2, 0x1f, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrue_usps", 3, 0xc2, 0x1f, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrue_ussd", 3, 0xf2c2, 0x1f, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmptrue_usss", 3, 0xf3c2, 0x1f, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunordpd", 3, 0x66c2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunordpd", 3, 0x66c2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunordps", 3, 0xc2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunordps", 3, 0xc2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunordsd", 3, 0xf2c2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunord_spd", 3, 0x66c2, 0x13, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunord_spd", 3, 0x66c2, 0x13, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunord_sps", 3, 0xc2, 0x13, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunord_sps", 3, 0xc2, 0x13, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunordss", 3, 0xf3c2, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunord_ssd", 3, 0xf2c2, 0x13, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcmpunord_sss", 3, 0xf3c2, 0x13, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcomisd", 2, 0x662f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcomiss", 2, 0x2f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtdq2pd", 2, 0xf3e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtdq2pd", 2, 0xf3e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtdq2ps", 2, 0x5b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtdq2ps", 2, 0x5b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2dq", 2, 0xf2e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2dq", 2, 0xf2e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0 } }, + 1, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2dq", 2, 0xf2e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2dq", 2, 0xf2e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0 } }, + 0, 1, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2dqx", 2, 0xf2e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2dqy", 2, 0xf2e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2ps", 2, 0x665a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2ps", 2, 0x665a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0 } }, + 1, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2ps", 2, 0x665a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2ps", 2, 0x665a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0 } }, + 0, 1, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2psx", 2, 0x665a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtpd2psy", 2, 0x665a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtps2dq", 2, 0x665b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtps2dq", 2, 0x665b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtps2pd", 2, 0x5a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtps2pd", 2, 0x5a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtsd2si", 2, 0xf22d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtsd2ss", 3, 0xf25a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtsi2sd", 3, 0xf22a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtsi2sd", 3, 0xf22a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtsi2ss", 3, 0xf32a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0 } }, + 0, 0, 0, 0, 0, 0, 1, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtsi2ss", 3, 0xf32a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtss2sd", 3, 0xf35a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvtss2si", 2, 0xf32d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttpd2dq", 2, 0x66e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttpd2dq", 2, 0x66e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0 } }, + 1, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttpd2dq", 2, 0x66e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttpd2dq", 2, 0x66e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0 } }, + 0, 1, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttpd2dqx", 2, 0x66e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttpd2dqy", 2, 0x66e6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttps2dq", 2, 0xf35b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttps2dq", 2, 0xf35b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttsd2si", 2, 0xf22c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vcvttss2si", 2, 0xf32c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdivpd", 3, 0x665e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdivpd", 3, 0x665e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdivps", 3, 0x5e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdivps", 3, 0x5e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdivsd", 3, 0xf25e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdivss", 3, 0xf35e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdppd", 4, 0x6641, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdpps", 4, 0x6640, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vdpps", 4, 0x6640, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vextractf128", 3, 0x6619, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vextractps", 3, 0x6617, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vhaddpd", 3, 0x667c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vhaddpd", 3, 0x667c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vhaddps", 3, 0xf27c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vhaddps", 3, 0xf27c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vhsubpd", 3, 0x667d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vhsubpd", 3, 0x667d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vhsubps", 3, 0xf27d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vhsubps", 3, 0xf27d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vinsertf128", 4, 0x6618, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vinsertps", 4, 0x6621, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vlddqu", 2, 0xf2f0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vlddqu", 2, 0xf2f0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vldmxcsr", 1, 0xae, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmaskmovdqu", 2, 0x66f7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaskmovpd", 3, 0x662f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmaskmovpd", 3, 0x662f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmaskmovpd", 3, 0x662d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaskmovpd", 3, 0x662d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaskmovps", 3, 0x662e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmaskmovps", 3, 0x662e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmaskmovps", 3, 0x662c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaskmovps", 3, 0x662c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaxpd", 3, 0x665f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaxpd", 3, 0x665f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaxps", 3, 0x5f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaxps", 3, 0x5f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaxsd", 3, 0xf25f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmaxss", 3, 0xf35f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vminpd", 3, 0x665d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vminpd", 3, 0x665d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vminps", 3, 0x5d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vminps", 3, 0x5d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vminsd", 3, 0xf25d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vminss", 3, 0xf35d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovapd", 2, 0x6628, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovapd", 2, 0x6629, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovapd", 2, 0x6628, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovapd", 2, 0x6629, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovaps", 2, 0x28, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovaps", 2, 0x29, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovaps", 2, 0x28, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovaps", 2, 0x29, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovd", 2, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovd", 2, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovd", 2, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovd", 2, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovddup", 2, 0xf212, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovddup", 2, 0xf212, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovdqa", 2, 0x666f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovdqa", 2, 0x667f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovdqa", 2, 0x666f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovdqa", 2, 0x667f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovdqu", 2, 0xf36f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovdqu", 2, 0xf37f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovdqu", 2, 0xf36f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovdqu", 2, 0xf37f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovhlps", 3, 0x12, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovhpd", 3, 0x6616, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovhpd", 2, 0x6617, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovhps", 3, 0x16, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovhps", 2, 0x17, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovlhps", 3, 0x16, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovlpd", 3, 0x6612, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovlpd", 2, 0x6613, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovlps", 3, 0x12, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovlps", 2, 0x13, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovmskpd", 2, 0x6650, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovmskpd", 2, 0x6650, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovmskps", 2, 0x50, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovmskps", 2, 0x50, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovntdq", 2, 0x66e7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovntdq", 2, 0x66e7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovntdqa", 2, 0x662a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovntpd", 2, 0x662b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovntpd", 2, 0x662b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovntps", 2, 0x2b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovntps", 2, 0x2b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovq", 2, 0xf37e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovq", 2, 0x66d6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovq", 2, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovq", 2, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovsd", 2, 0xf211, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovsd", 2, 0xf210, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovsd", 3, 0xf210, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovsd", 3, 0xf211, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovshdup", 2, 0xf316, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovshdup", 2, 0xf316, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovsldup", 2, 0xf312, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovsldup", 2, 0xf312, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovss", 2, 0xf311, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vmovss", 2, 0xf310, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovss", 3, 0xf310, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovss", 3, 0xf311, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovupd", 2, 0x6610, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovupd", 2, 0x6611, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovupd", 2, 0x6610, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovupd", 2, 0x6611, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmovups", 2, 0x10, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovups", 2, 0x11, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } } } }, + 1, 0, 1, 0, 0, 0 } } } }, { "vmovups", 2, 0x10, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmovups", 2, 0x11, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } } } }, + 0, 1, 1, 0, 0, 0 } } } }, { "vmpsadbw", 4, 0x6642, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmulpd", 3, 0x6659, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmulpd", 3, 0x6659, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmulps", 3, 0x59, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmulps", 3, 0x59, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmulsd", 3, 0xf259, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmulss", 3, 0xf359, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vorpd", 3, 0x6656, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vorpd", 3, 0x6656, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vorps", 3, 0x56, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vorps", 3, 0x56, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpabsb", 2, 0x661c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpabsd", 2, 0x661e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpabsw", 2, 0x661d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpackssdw", 3, 0x666b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpacksswb", 3, 0x6663, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpackusdw", 3, 0x662b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpackuswb", 3, 0x6667, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddsb", 3, 0x66ec, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddsw", 3, 0x66ed, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddb", 3, 0x66fc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddd", 3, 0x66fe, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddq", 3, 0x66d4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddw", 3, 0x66fd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddusb", 3, 0x66dc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpaddusw", 3, 0x66dd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpalignr", 4, 0x660f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpand", 3, 0x66db, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpandn", 3, 0x66df, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpavgb", 3, 0x66e0, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpavgw", 3, 0x66e3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpblendvb", 4, 0x664c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpblendw", 4, 0x660e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpeqb", 3, 0x6674, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpeqd", 3, 0x6676, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpeqq", 3, 0x6629, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpeqw", 3, 0x6675, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpestri", 3, 0x6661, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpestrm", 3, 0x6660, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpgtb", 3, 0x6664, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpgtd", 3, 0x6666, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpgtq", 3, 0x6637, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpgtw", 3, 0x6665, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpistri", 3, 0x6663, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpcmpistrm", 3, 0x6662, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vperm2f128", 4, 0x6606, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilpd", 3, 0x660d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilpd", 3, 0x660d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilpd", 3, 0x6605, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilpd", 3, 0x6605, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilps", 3, 0x660c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilps", 3, 0x660c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilps", 3, 0x6604, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpermilps", 3, 0x6604, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpextrb", 3, 0x6614, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vpextrd", 3, 0x6616, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vpextrq", 3, 0x6616, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vpextrw", 3, 0x66c5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpextrw", 3, 0x6615, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vphaddd", 3, 0x6602, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vphaddsw", 3, 0x6603, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vphaddw", 3, 0x6601, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vphminposuw", 2, 0x6641, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vphsubd", 3, 0x6606, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vphsubsw", 3, 0x6607, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vphsubw", 3, 0x6605, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpinsrb", 4, 0x6620, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpinsrd", 4, 0x6622, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpinsrq", 4, 0x6622, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpinsrw", 4, 0x66c4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaddubsw", 3, 0x6604, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaddwd", 3, 0x66f5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaxsb", 3, 0x663c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaxsd", 3, 0x663d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaxsw", 3, 0x66ee, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaxub", 3, 0x66de, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaxud", 3, 0x663f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmaxuw", 3, 0x663e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpminsb", 3, 0x6638, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpminsd", 3, 0x6639, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpminsw", 3, 0x66ea, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpminub", 3, 0x66da, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpminud", 3, 0x663b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpminuw", 3, 0x663a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovmskb", 2, 0x66d7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovsxbd", 2, 0x6621, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovsxbq", 2, 0x6622, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovsxbw", 2, 0x6620, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovsxdq", 2, 0x6625, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovsxwd", 2, 0x6623, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovsxwq", 2, 0x6624, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovzxbd", 2, 0x6631, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovzxbq", 2, 0x6632, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovzxbw", 2, 0x6630, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovzxdq", 2, 0x6635, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovzxwd", 2, 0x6633, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmovzxwq", 2, 0x6634, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmuldq", 3, 0x6628, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmulhrsw", 3, 0x660b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmulhuw", 3, 0x66e4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmulhw", 3, 0x66e5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmulld", 3, 0x6640, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmullw", 3, 0x66d5, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpmuludq", 3, 0x66f4, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpor", 3, 0x66eb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsadbw", 3, 0x66f6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpshufb", 3, 0x6600, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpshufd", 3, 0x6670, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpshufhw", 3, 0xf370, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpshuflw", 3, 0xf270, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsignb", 3, 0x6608, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsignd", 3, 0x660a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsignw", 3, 0x6609, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpslld", 3, 0x6672, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpslld", 3, 0x66f2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpslldq", 3, 0x6673, 0x7, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsllq", 3, 0x6673, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsllq", 3, 0x66f3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsllw", 3, 0x6671, 0x6, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsllw", 3, 0x66f1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrad", 3, 0x6672, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrad", 3, 0x66e2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsraw", 3, 0x6671, 0x4, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsraw", 3, 0x66e1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrld", 3, 0x6672, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrld", 3, 0x66d2, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrldq", 3, 0x6673, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrlq", 3, 0x6673, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrlq", 3, 0x66d3, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrlw", 3, 0x6671, 0x2, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsrlw", 3, 0x66d1, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubb", 3, 0x66f8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubd", 3, 0x66fa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubq", 3, 0x66fb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubsb", 3, 0x66e8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubsw", 3, 0x66e9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubusb", 3, 0x66d8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubusw", 3, 0x66d9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpsubw", 3, 0x66f9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vptest", 2, 0x6617, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vptest", 2, 0x6617, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpckhbw", 3, 0x6668, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpckhdq", 3, 0x666a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpckhqdq", 3, 0x666d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpckhwd", 3, 0x6669, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpcklbw", 3, 0x6660, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpckldq", 3, 0x6662, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpcklqdq", 3, 0x666c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpunpcklwd", 3, 0x6661, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpxor", 3, 0x66ef, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vrcpps", 2, 0x53, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vrcpps", 2, 0x53, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vrcpss", 3, 0xf353, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vroundpd", 3, 0x6609, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vroundpd", 3, 0x6609, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vroundps", 3, 0x6608, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vroundps", 3, 0x6608, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vroundsd", 4, 0x660b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vroundss", 4, 0x660a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vrsqrtps", 2, 0x52, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vrsqrtps", 2, 0x52, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vrsqrtss", 3, 0xf352, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vshufpd", 4, 0x66c6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vshufpd", 4, 0x66c6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vshufps", 4, 0xc6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vshufps", 4, 0xc6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsqrtpd", 2, 0x6651, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsqrtpd", 2, 0x6651, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsqrtps", 2, 0x51, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsqrtps", 2, 0x51, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsqrtsd", 3, 0xf251, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsqrtss", 3, 0xf351, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vstmxcsr", 1, 0xae, 0x3, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "vsubpd", 3, 0x665c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsubpd", 3, 0x665c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsubps", 3, 0x5c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsubps", 3, 0x5c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsubsd", 3, 0xf25c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vsubss", 3, 0xf35c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vtestpd", 2, 0x660f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vtestpd", 2, 0x660f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vtestps", 2, 0x660e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vtestps", 2, 0x660e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vucomisd", 2, 0x662e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vucomiss", 2, 0x2e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpckhpd", 3, 0x6615, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpckhpd", 3, 0x6615, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpckhps", 3, 0x15, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpckhps", 3, 0x15, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpcklpd", 3, 0x6614, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpcklpd", 3, 0x6614, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpcklps", 3, 0x14, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vunpcklps", 3, 0x14, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vxorpd", 3, 0x6657, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vxorpd", 3, 0x6657, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vxorps", 3, 0x57, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vxorps", 3, 0x57, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vzeroall", 0, 0x77, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vzeroupper", 0, 0x77, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaesdec", 3, 0x66de, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaesdeclast", 3, 0x66df, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaesenc", 3, 0x66dc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaesenclast", 3, 0x66dd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaesimc", 2, 0x66db, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vaeskeygenassist", 3, 0x66df, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpclmulqdq", 4, 0x6644, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpclmullqlqdq", 3, 0x6644, 0x0, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpclmulhqlqdq", 3, 0x6644, 0x1, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpclmullqhqdq", 3, 0x6644, 0x10, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vpclmulhqhqdq", 3, 0x6644, 0x11, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "vfmadd132pd", 3, 0x6698, None, 1, + 0, 0, 0, 0, 0, 0 } } } }, + { "rdfsbase", 1, 0xf30fae, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "rdgsbase", 1, 0xf30fae, 0x1, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "rdrand", 1, 0xfc7, 0x6, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "wrfsbase", 1, 0xf30fae, 0x2, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "wrgsbase", 1, 0xf30fae, 0x3, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vcvtph2ps", 2, 0x6613, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vcvtph2ps", 2, 0x6613, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vcvtps2ph", 3, 0x661d, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } } } }, + { "vcvtps2ph", 3, 0x661d, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } } } }, { "vfmadd132pd", 3, 0x6698, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vfmadd132pd", 3, 0x6698, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd132ps", 3, 0x6698, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd132ps", 3, 0x6698, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd213pd", 3, 0x66a8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd213pd", 3, 0x66a8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd213ps", 3, 0x66a8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd213ps", 3, 0x66a8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd231pd", 3, 0x66b8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd231pd", 3, 0x66b8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd231ps", 3, 0x66b8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd231ps", 3, 0x66b8, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd132sd", 3, 0x6699, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd132ss", 3, 0x6699, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd213sd", 3, 0x66a9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd213ss", 3, 0x66a9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd231sd", 3, 0x66b9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmadd231ss", 3, 0x66b9, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub132pd", 3, 0x6696, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub132pd", 3, 0x6696, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub132ps", 3, 0x6696, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub132ps", 3, 0x6696, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub213pd", 3, 0x66a6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub213pd", 3, 0x66a6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub213ps", 3, 0x66a6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub213ps", 3, 0x66a6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub231pd", 3, 0x66b6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub231pd", 3, 0x66b6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub231ps", 3, 0x66b6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsub231ps", 3, 0x66b6, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd132pd", 3, 0x6697, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd132pd", 3, 0x6697, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd132ps", 3, 0x6697, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd132ps", 3, 0x6697, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd213pd", 3, 0x66a7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd213pd", 3, 0x66a7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd213ps", 3, 0x66a7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd213ps", 3, 0x66a7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd231pd", 3, 0x66b7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd231pd", 3, 0x66b7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd231ps", 3, 0x66b7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubadd231ps", 3, 0x66b7, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub132pd", 3, 0x669a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub132pd", 3, 0x669a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub132ps", 3, 0x669a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub132ps", 3, 0x669a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub213pd", 3, 0x66aa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub213pd", 3, 0x66aa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub213ps", 3, 0x66aa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub213ps", 3, 0x66aa, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub231pd", 3, 0x66ba, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub231pd", 3, 0x66ba, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub231ps", 3, 0x66ba, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub231ps", 3, 0x66ba, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub132sd", 3, 0x669b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub132ss", 3, 0x669b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub213sd", 3, 0x66ab, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub213ss", 3, 0x66ab, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub231sd", 3, 0x66bb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsub231ss", 3, 0x66bb, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd132pd", 3, 0x669c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd132pd", 3, 0x669c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd132ps", 3, 0x669c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd132ps", 3, 0x669c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd213pd", 3, 0x66ac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd213pd", 3, 0x66ac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd213ps", 3, 0x66ac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd213ps", 3, 0x66ac, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd231pd", 3, 0x66bc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd231pd", 3, 0x66bc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd231ps", 3, 0x66bc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd231ps", 3, 0x66bc, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd132sd", 3, 0x669d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd132ss", 3, 0x669d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd213sd", 3, 0x66ad, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd213ss", 3, 0x66ad, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd231sd", 3, 0x66bd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmadd231ss", 3, 0x66bd, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub132pd", 3, 0x669e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub132pd", 3, 0x669e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub132ps", 3, 0x669e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub132ps", 3, 0x669e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub213pd", 3, 0x66ae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub213pd", 3, 0x66ae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub213ps", 3, 0x66ae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub213ps", 3, 0x66ae, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub231pd", 3, 0x66be, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub231pd", 3, 0x66be, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub231ps", 3, 0x66be, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub231ps", 3, 0x66be, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub132sd", 3, 0x669f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub132ss", 3, 0x669f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub213sd", 3, 0x66af, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub213ss", 3, 0x66af, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub231sd", 3, 0x66bf, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsub231ss", 3, 0x66bf, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddpd", 4, 0x6669, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddpd", 4, 0x6669, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddpd", 4, 0x6669, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddpd", 4, 0x6669, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddps", 4, 0x6668, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddps", 4, 0x6668, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddps", 4, 0x6668, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddps", 4, 0x6668, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsd", 4, 0x666b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsd", 4, 0x666b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddss", 4, 0x666a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddss", 4, 0x666a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubpd", 4, 0x665d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubpd", 4, 0x665d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubpd", 4, 0x665d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubpd", 4, 0x665d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubps", 4, 0x665c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubps", 4, 0x665c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubps", 4, 0x665c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmaddsubps", 4, 0x665c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddpd", 4, 0x665f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddpd", 4, 0x665f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddpd", 4, 0x665f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddpd", 4, 0x665f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddps", 4, 0x665e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddps", 4, 0x665e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddps", 4, 0x665e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubaddps", 4, 0x665e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubpd", 4, 0x666d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubpd", 4, 0x666d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubpd", 4, 0x666d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubpd", 4, 0x666d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubps", 4, 0x666c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubps", 4, 0x666c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubps", 4, 0x666c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubps", 4, 0x666c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubsd", 4, 0x666f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubsd", 4, 0x666f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubss", 4, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfmsubss", 4, 0x666e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddpd", 4, 0x6679, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddpd", 4, 0x6679, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddpd", 4, 0x6679, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddpd", 4, 0x6679, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddps", 4, 0x6678, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddps", 4, 0x6678, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddps", 4, 0x6678, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddps", 4, 0x6678, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddsd", 4, 0x667b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddsd", 4, 0x667b, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddss", 4, 0x667a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmaddss", 4, 0x667a, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubpd", 4, 0x667d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubpd", 4, 0x667d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubpd", 4, 0x667d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubpd", 4, 0x667d, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubps", 4, 0x667c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubps", 4, 0x667c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0 } }, + 1, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubps", 4, 0x667c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubps", 4, 0x667c, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0 } }, + 0, 1, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubsd", 4, 0x667f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubsd", 4, 0x667f, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubss", 4, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vfnmsubss", 4, 0x667e, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "prefetch", 1, 0xf0d, 0x0, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, - { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, - { "prefetchw", 1, 0xf0d, 0x1, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "vfrczpd", 2, 0x81, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, - { "femms", 0, 0xf0e, None, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pavgusb", 2, 0xf0f, 0xbf, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "vfrczpd", 2, 0x81, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, - { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pf2id", 2, 0xf0f, 0x1d, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "vfrczps", 2, 0x80, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, - { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pf2iw", 2, 0xf0f, 0x1c, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "vfrczps", 2, 0x80, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, - { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pfacc", 2, 0xf0f, 0xae, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "vfrczsd", 2, 0x83, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, - { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pfadd", 2, 0xf0f, 0x9e, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "vfrczss", 2, 0x82, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, - { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pfcmpeq", 2, 0xf0f, 0xb0, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcmov", 4, 0xa2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, - { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pfcmpge", 2, 0xf0f, 0x90, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, - { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, - { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, - { "pfcmpgt", 2, 0xf0f, 0xa0, 2, - { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcmov", 4, 0xa2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcmov", 4, 0xa2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcmov", 4, 0xa2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomb", 4, 0xcc, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomd", 4, 0xce, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomq", 4, 0xcf, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomub", 4, 0xec, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomud", 4, 0xee, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomuq", 4, 0xef, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomuw", 4, 0xed, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomw", 4, 0xcd, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2pd", 5, 0x6649, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2pd", 5, 0x6649, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2pd", 5, 0x6649, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2pd", 5, 0x6649, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2ps", 5, 0x6648, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2ps", 5, 0x6648, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2ps", 5, 0x6648, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpermil2ps", 5, 0x6648, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltb", 3, 0xcc, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltd", 3, 0xce, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltq", 3, 0xcf, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltub", 3, 0xec, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltud", 3, 0xee, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltuq", 3, 0xef, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltuw", 3, 0xed, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomltw", 3, 0xcd, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomleb", 3, 0xcc, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomled", 3, 0xce, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomleq", 3, 0xcf, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomleub", 3, 0xec, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomleud", 3, 0xee, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomleuq", 3, 0xef, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomleuw", 3, 0xed, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomlew", 3, 0xcd, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtb", 3, 0xcc, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtd", 3, 0xce, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtq", 3, 0xcf, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtub", 3, 0xec, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtud", 3, 0xee, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtuq", 3, 0xef, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtuw", 3, 0xed, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgtw", 3, 0xcd, 0x2, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgeb", 3, 0xcc, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomged", 3, 0xce, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgeq", 3, 0xcf, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgeub", 3, 0xec, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgeud", 3, 0xee, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgeuq", 3, 0xef, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgeuw", 3, 0xed, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomgew", 3, 0xcd, 0x3, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomeqb", 3, 0xcc, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomeqd", 3, 0xce, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomeqq", 3, 0xcf, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomequb", 3, 0xec, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomequd", 3, 0xee, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomequq", 3, 0xef, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomequw", 3, 0xed, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomeqw", 3, 0xcd, 0x4, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomneqb", 3, 0xcc, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomneqd", 3, 0xce, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomneqq", 3, 0xcf, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomnequb", 3, 0xec, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomnequd", 3, 0xee, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomnequq", 3, 0xef, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomnequw", 3, 0xed, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomneqw", 3, 0xcd, 0x5, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalseb", 3, 0xcc, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalsed", 3, 0xce, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalseq", 3, 0xcf, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalseub", 3, 0xec, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalseud", 3, 0xee, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalseuq", 3, 0xef, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalseuw", 3, 0xed, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomfalsew", 3, 0xcd, 0x6, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtrueb", 3, 0xcc, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtrued", 3, 0xce, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtrueq", 3, 0xcf, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtrueub", 3, 0xec, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtrueud", 3, 0xee, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtrueuq", 3, 0xef, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtrueuw", 3, 0xed, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpcomtruew", 3, 0xcd, 0x7, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddbd", 2, 0xc2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddbq", 2, 0xc3, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddbw", 2, 0xc1, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphadddq", 2, 0xcb, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddubd", 2, 0xd2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddubq", 2, 0xd3, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddubw", 2, 0xd1, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddudq", 2, 0xdb, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphadduwd", 2, 0xd6, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphadduwq", 2, 0xd7, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddwd", 2, 0xc6, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphaddwq", 2, 0xc7, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphsubbw", 2, 0xe1, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphsubdq", 2, 0xe3, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vphsubwd", 2, 0xe2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacsdd", 4, 0x9e, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacsdqh", 4, 0x9f, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacsdql", 4, 0x97, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacssdd", 4, 0x8e, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacssdqh", 4, 0x8f, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacssdql", 4, 0x87, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacsswd", 4, 0x86, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacssww", 4, 0x85, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacswd", 4, 0x96, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmacsww", 4, 0x95, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmadcsswd", 4, 0xa6, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpmadcswd", 4, 0xb6, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpperm", 4, 0xa3, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpperm", 4, 0xa3, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, + 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotb", 3, 0x90, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotb", 3, 0x90, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotb", 3, 0xc0, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 3, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotd", 3, 0x92, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotd", 3, 0x92, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotd", 3, 0xc2, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 3, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotq", 3, 0x93, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotq", 3, 0x93, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotq", 3, 0xc3, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 3, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotw", 3, 0x91, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotw", 3, 0x91, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vprotw", 3, 0xc1, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 3, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshab", 3, 0x98, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshab", 3, 0x98, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshad", 3, 0x9a, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshad", 3, 0x9a, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshaq", 3, 0x9b, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshaq", 3, 0x9b, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshaw", 3, 0x99, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshaw", 3, 0x99, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshlb", 3, 0x94, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshlb", 3, 0x94, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshld", 3, 0x96, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshld", 3, 0x96, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshlq", 3, 0x97, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshlq", 3, 0x97, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshlw", 3, 0x95, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "vpshlw", 3, 0x95, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 4, 1, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "llwpcb", 1, 0x12, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "llwpcb", 1, 0x12, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 2, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "slwpcb", 1, 0x12, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "slwpcb", 1, 0x12, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 2, + 4, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "lwpval", 3, 0x12, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, + 5, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "lwpval", 3, 0x12, 0x1, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 3, 2, + 5, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "lwpins", 3, 0x12, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, + 5, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "lwpins", 3, 0x12, 0x0, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 3, 2, + 5, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "prefetch", 1, 0xf0d, 0x0, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, + { "prefetchw", 1, 0xf0d, 0x1, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0 } } } }, + { "femms", 0, 0xf0e, None, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pavgusb", 2, 0xf0f, 0xbf, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pf2id", 2, 0xf0f, 0x1d, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pf2iw", 2, 0xf0f, 0x1c, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pfacc", 2, 0xf0f, 0xae, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pfadd", 2, 0xf0f, 0x9e, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pfcmpeq", 2, 0xf0f, 0xb0, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pfcmpge", 2, 0xf0f, 0x90, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0 } }, + { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 } } } }, + { "pfcmpgt", 2, 0xf0f, 0xa0, 2, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfmax", 2, 0xf0f, 0xa4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfmin", 2, 0xf0f, 0x94, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfmul", 2, 0xf0f, 0xb4, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfnacc", 2, 0xf0f, 0x8a, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfpnacc", 2, 0xf0f, 0x8e, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfrcp", 2, 0xf0f, 0x96, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfrcpit1", 2, 0xf0f, 0xa6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfrcpit2", 2, 0xf0f, 0xb6, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfrsqit1", 2, 0xf0f, 0xa7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfrsqrt", 2, 0xf0f, 0x97, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfsub", 2, 0xf0f, 0x9a, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pfsubr", 2, 0xf0f, 0xaa, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pi2fd", 2, 0xf0f, 0xd, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pi2fw", 2, 0xf0f, 0xc, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pmulhrw", 2, 0xf0f, 0xb7, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "pswapd", 2, 0xf0f, 0xbb, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "syscall", 0, 0xf05, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "syscall", 0, 0xf05, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sysret", 0, 0xf07, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "sysret", 0, 0xf07, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "swapgs", 0, 0xf01, 0xf8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "rdtscp", 0, 0xf01, 0xf9, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "clgi", 0, 0xf01, 0xdd, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "invlpga", 0, 0xf01, 0xdf, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "invlpga", 2, 0xf01, 0xdf, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "skinit", 0, 0xf01, 0xde, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "skinit", 1, 0xf01, 0xde, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "stgi", 0, 0xf01, 0xdc, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmload", 0, 0xf01, 0xda, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmload", 1, 0xf01, 0xda, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmmcall", 0, 0xf01, 0xd9, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmrun", 0, 0xf01, 0xd8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmrun", 1, 0xf01, 0xd8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmsave", 0, 0xf01, 0xdb, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "vmsave", 1, 0xf01, 0xdb, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "movntsd", 2, 0xf20f2b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "movntss", 2, 0xf30f2b, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0 } } } }, + 0, 0, 1, 0, 0, 0 } } } }, { "extrq", 3, 0x660f78, 0x0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "extrq", 2, 0x660f79, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "insertq", 2, 0xf20f79, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "insertq", 4, 0xf20f78, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "popcnt", 2, 0xf30fb8, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "lzcnt", 2, 0xf30fbd, None, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, - 0, 0, 1, 0, 0 } }, + 0, 0, 1, 0, 0, 0 } }, { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xstore-rng", 0, 0xfa7, 0xc0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcrypt-ecb", 0, 0xf30fa7, 0xc8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcrypt-cbc", 0, 0xf30fa7, 0xd0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcrypt-ctr", 0, 0xf30fa7, 0xd8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcrypt-cfb", 0, 0xf30fa7, 0xe0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcrypt-ofb", 0, 0xf30fa7, 0xe8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "montmul", 0, 0xf30fa6, 0xc0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xsha1", 0, 0xf30fa6, 0xc8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xsha256", 0, 0xf30fa6, 0xd0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xstorerng", 0, 0xfa7, 0xc0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcryptecb", 0, 0xf30fa7, 0xc8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcryptcbc", 0, 0xf30fa7, 0xd0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcryptctr", 0, 0xf30fa7, 0xd8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcryptcfb", 0, 0xf30fa7, 0xe0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xcryptofb", 0, 0xf30fa7, 0xe8, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { "xstore", 0, 0xfa7, 0xc0, 2, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } }, + 0, 0, 0, 0, 0, 0 } } } }, { NULL, 0, 0, 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 } }, + 0, 0, 0, 0, 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } } } } + 0, 0, 0, 0, 0, 0 } } } } }; /* i386 register table. */ @@ -30810,1027 +33497,1027 @@ const reg_entry i386_regtab[] = { "st", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 11, 33 } }, { "al", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, Dw2Inval } }, { "cl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, Dw2Inval } }, { "dl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, Dw2Inval } }, { "bl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, Dw2Inval } }, { "ah", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, Dw2Inval } }, { "ch", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, Dw2Inval } }, { "dh", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, Dw2Inval } }, { "bh", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, Dw2Inval } }, { "axl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 0, { Dw2Inval, Dw2Inval } }, { "cxl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 1, { Dw2Inval, Dw2Inval } }, { "dxl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 2, { Dw2Inval, Dw2Inval } }, { "bxl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 3, { Dw2Inval, Dw2Inval } }, { "spl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 4, { Dw2Inval, Dw2Inval } }, { "bpl", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 5, { Dw2Inval, Dw2Inval } }, { "sil", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 6, { Dw2Inval, Dw2Inval } }, { "dil", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, 7, { Dw2Inval, Dw2Inval } }, { "r8b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 0, { Dw2Inval, Dw2Inval } }, { "r9b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 1, { Dw2Inval, Dw2Inval } }, { "r10b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 2, { Dw2Inval, Dw2Inval } }, { "r11b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 3, { Dw2Inval, Dw2Inval } }, { "r12b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 4, { Dw2Inval, Dw2Inval } }, { "r13b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 5, { Dw2Inval, Dw2Inval } }, { "r14b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 6, { Dw2Inval, Dw2Inval } }, { "r15b", { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex|RegRex64, 7, { Dw2Inval, Dw2Inval } }, { "ax", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, Dw2Inval } }, { "cx", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, Dw2Inval } }, { "dx", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, Dw2Inval } }, { "bx", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, Dw2Inval } }, { "sp", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, Dw2Inval } }, { "bp", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, Dw2Inval } }, { "si", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, Dw2Inval } }, { "di", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, Dw2Inval } }, { "r8w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, Dw2Inval } }, { "r9w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, Dw2Inval } }, { "r10w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, Dw2Inval } }, { "r11w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, Dw2Inval } }, { "r12w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, Dw2Inval } }, { "r13w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, Dw2Inval } }, { "r14w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, Dw2Inval } }, { "r15w", { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, Dw2Inval } }, { "eax", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 0, Dw2Inval } }, { "ecx", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { 1, Dw2Inval } }, { "edx", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { 2, Dw2Inval } }, { "ebx", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { 3, Dw2Inval } }, { "esp", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { 4, Dw2Inval } }, { "ebp", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { 5, Dw2Inval } }, { "esi", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { 6, Dw2Inval } }, { "edi", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { 7, Dw2Inval } }, { "r8d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, Dw2Inval } }, { "r9d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, Dw2Inval } }, { "r10d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, Dw2Inval } }, { "r11d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, Dw2Inval } }, { "r12d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, Dw2Inval } }, { "r13d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, Dw2Inval } }, { "r14d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, Dw2Inval } }, { "r15d", { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, Dw2Inval } }, { "rax", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, 0 } }, { "rcx", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, 2 } }, { "rdx", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, 1 } }, { "rbx", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, 3 } }, { "rsp", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, 7 } }, { "rbp", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, 6 } }, { "rsi", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, 4 } }, { "rdi", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, 5 } }, { "r8", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, 8 } }, { "r9", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, 9 } }, { "r10", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, 10 } }, { "r11", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, 11 } }, { "r12", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, 12 } }, { "r13", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, 13 } }, { "r14", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, 14 } }, { "r15", { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, 15 } }, { "es", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 40, 50 } }, { "cs", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { 41, 51 } }, { "ss", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { 42, 52 } }, { "ds", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { 43, 53 } }, { "fs", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { 44, 54 } }, { "gs", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { 45, 55 } }, { "flat", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, RegFlat, { Dw2Inval, Dw2Inval } }, { "cr0", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, Dw2Inval } }, { "cr1", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, Dw2Inval } }, { "cr2", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, Dw2Inval } }, { "cr3", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, Dw2Inval } }, { "cr4", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, Dw2Inval } }, { "cr5", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, Dw2Inval } }, { "cr6", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, Dw2Inval } }, { "cr7", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, Dw2Inval } }, { "cr8", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, Dw2Inval } }, { "cr9", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, Dw2Inval } }, { "cr10", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, Dw2Inval } }, { "cr11", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, Dw2Inval } }, { "cr12", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, Dw2Inval } }, { "cr13", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, Dw2Inval } }, { "cr14", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, Dw2Inval } }, { "cr15", { { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, Dw2Inval } }, { "db0", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, Dw2Inval } }, { "db1", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, Dw2Inval } }, { "db2", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, Dw2Inval } }, { "db3", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, Dw2Inval } }, { "db4", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, Dw2Inval } }, { "db5", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, Dw2Inval } }, { "db6", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, Dw2Inval } }, { "db7", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, Dw2Inval } }, { "db8", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, Dw2Inval } }, { "db9", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, Dw2Inval } }, { "db10", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, Dw2Inval } }, { "db11", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, Dw2Inval } }, { "db12", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, Dw2Inval } }, { "db13", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, Dw2Inval } }, { "db14", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, Dw2Inval } }, { "db15", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, Dw2Inval } }, { "dr0", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, Dw2Inval } }, { "dr1", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, Dw2Inval } }, { "dr2", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, Dw2Inval } }, { "dr3", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, Dw2Inval } }, { "dr4", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, Dw2Inval } }, { "dr5", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, Dw2Inval } }, { "dr6", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, Dw2Inval } }, { "dr7", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, Dw2Inval } }, { "dr8", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, Dw2Inval } }, { "dr9", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, Dw2Inval } }, { "dr10", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, Dw2Inval } }, { "dr11", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, Dw2Inval } }, { "dr12", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, Dw2Inval } }, { "dr13", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, Dw2Inval } }, { "dr14", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, Dw2Inval } }, { "dr15", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, Dw2Inval } }, { "tr0", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, Dw2Inval } }, { "tr1", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, Dw2Inval } }, { "tr2", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, Dw2Inval } }, { "tr3", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, Dw2Inval } }, { "tr4", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, Dw2Inval } }, { "tr5", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, Dw2Inval } }, { "tr6", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, Dw2Inval } }, { "tr7", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, Dw2Inval } }, { "mm0", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 29, 41 } }, { "mm1", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { 30, 42 } }, { "mm2", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { 31, 43 } }, { "mm3", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { 32, 44 } }, { "mm4", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { 33, 45 } }, { "mm5", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { 34, 46 } }, { "mm6", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { 35, 47 } }, { "mm7", { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { 36, 48 } }, { "xmm0", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 21, 17 } }, { "xmm1", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { 22, 18 } }, { "xmm2", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { 23, 19 } }, { "xmm3", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { 24, 20 } }, { "xmm4", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { 25, 21 } }, { "xmm5", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { 26, 22 } }, { "xmm6", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { 27, 23 } }, { "xmm7", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { 28, 24 } }, { "xmm8", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, 25 } }, { "xmm9", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, 26 } }, { "xmm10", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, 27 } }, { "xmm11", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, 28 } }, { "xmm12", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, 29 } }, { "xmm13", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, 30 } }, { "xmm14", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, 31 } }, { "xmm15", { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, 32 } }, { "ymm0", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, Dw2Inval } }, { "ymm1", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { Dw2Inval, Dw2Inval } }, { "ymm2", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { Dw2Inval, Dw2Inval } }, { "ymm3", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { Dw2Inval, Dw2Inval } }, { "ymm4", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { Dw2Inval, Dw2Inval } }, { "ymm5", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { Dw2Inval, Dw2Inval } }, { "ymm6", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { Dw2Inval, Dw2Inval } }, { "ymm7", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { Dw2Inval, Dw2Inval } }, { "ymm8", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 0, { Dw2Inval, Dw2Inval } }, { "ymm9", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 1, { Dw2Inval, Dw2Inval } }, { "ymm10", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 2, { Dw2Inval, Dw2Inval } }, { "ymm11", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 3, { Dw2Inval, Dw2Inval } }, { "ymm12", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 4, { Dw2Inval, Dw2Inval } }, { "ymm13", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 5, { Dw2Inval, Dw2Inval } }, { "ymm14", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 6, { Dw2Inval, Dw2Inval } }, { "ymm15", { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex, 7, { Dw2Inval, Dw2Inval } }, { "rip", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, RegRip, { Dw2Inval, 16 } }, { "eip", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, RegRex64, RegEip, { 8, Dw2Inval } }, { "eiz", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, RegEiz, { Dw2Inval, Dw2Inval } }, { "riz", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, RegRiz, { Dw2Inval, Dw2Inval } }, { "st(0)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 11, 33 } }, { "st(1)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { 12, 34 } }, { "st(2)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { 13, 35 } }, { "st(3)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { 14, 36 } }, { "st(4)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { 15, 37 } }, { "st(5)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { 16, 38 } }, { "st(6)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { 17, 39 } }, { "st(7)", { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { 18, 40 } }, { "eflags", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 9, 49 } }, { "rflags", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, 49 } }, { "fs.base", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, 58 } }, { "gs.base", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { Dw2Inval, 59 } }, { "tr", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 48, 62 } }, { "ldtr", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 49, 63 } }, { "st0", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 11, 33 } }, { "st1", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 1, { 12, 34 } }, { "st2", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 2, { 13, 35 } }, { "st3", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 3, { 14, 36 } }, { "st4", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 4, { 15, 37 } }, { "st5", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 5, { 16, 38 } }, { "st6", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 6, { 17, 39 } }, { "st7", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 7, { 18, 40 } }, { "fcw", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 37, 65 } }, { "fsw", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 38, 66 } }, { "mxcsr", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 } }, + 0, 0, 0, 0, 0, 0 } }, 0, 0, { 39, 64 } }, }; diff --git a/contrib/gdb-7/readline/Makefile.in b/contrib/gdb-7/readline/Makefile.in deleted file mode 100644 index 4423b237b4..0000000000 --- a/contrib/gdb-7/readline/Makefile.in +++ /dev/null @@ -1,557 +0,0 @@ -## -*- text -*- ## -# Master Makefile for the GNU readline library. -# Copyright (C) 1994-2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. -RL_LIBRARY_VERSION = @LIBVERSION@ -RL_LIBRARY_NAME = readline - -PACKAGE = @PACKAGE_NAME@ -VERSION = @PACKAGE_VERSION@ - -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_VERSION = @PACKAGE_VERSION@ - -srcdir = @srcdir@ -VPATH = @srcdir@ -top_srcdir = @top_srcdir@ -BUILD_DIR = @BUILD_DIR@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -CC = @CC@ -RANLIB = @RANLIB@ -AR = @AR@ -ARFLAGS = @ARFLAGS@ -RM = rm -f -CP = cp -MV = mv - -PURIFY = @PURIFY@ - -@SET_MAKE@ -SHELL = @MAKE_SHELL@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -datarootdir = @datarootdir@ - -bindir = @bindir@ -libdir = @libdir@ -mandir = @mandir@ -includedir = @includedir@ -datadir = @datadir@ -localedir = $(datadir)/locale - -infodir = @infodir@ - -man3dir = $(mandir)/man3 - -# Support an alternate destination root directory for package building -DESTDIR = - -# Programs to make tags files. -ETAGS = etags -tw -CTAGS = ctags -tw - -CFLAGS = @CFLAGS@ -LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' -CPPFLAGS = @CPPFLAGS@ - -DEFS = @DEFS@ @CROSS_COMPILE@ -LOCAL_DEFS = @LOCAL_DEFS@ - -TERMCAP_LIB = @TERMCAP_LIB@ - -# For libraries which include headers from other libraries. -INCLUDES = -I. -I$(srcdir) - -XCCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES) -CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) - -# could add -Werror here -GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \ - -Wwrite-strings -Wstrict-prototypes \ - -Wmissing-prototypes -Wno-implicit -pedantic -GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@ - -.c.o: - ${RM} $@ - $(CC) -c $(CCFLAGS) $< - -# The name of the main library target. -LIBRARY_NAME = libreadline.a -STATIC_LIBS = libreadline.a libhistory.a - -WCWIDTH_OBJ = @WCWIDTH_OBJ@ - -# The C code source files for this library. -CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \ - $(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \ - $(srcdir)/complete.c $(srcdir)/bind.c $(srcdir)/isearch.c \ - $(srcdir)/display.c $(srcdir)/signals.c $(srcdir)/emacs_keymap.c \ - $(srcdir)/vi_keymap.c $(srcdir)/util.c $(srcdir)/kill.c \ - $(srcdir)/undo.c $(srcdir)/macro.c $(srcdir)/input.c \ - $(srcdir)/callback.c $(srcdir)/terminal.c $(srcdir)/xmalloc.c \ - $(srcdir)/history.c $(srcdir)/histsearch.c $(srcdir)/histexpand.c \ - $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \ - $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \ - $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \ - $(srcdir)/mbutil.c $(srcdir)/support/wcwidth.c - -# The header files for this library. -HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ - posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \ - ansi_stdlib.h tcap.h rlstdc.h xmalloc.h rlprivate.h rlshell.h \ - rltypedefs.h rlmbutil.h - -HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o mbutil.o -TILDEOBJ = tilde.o -OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \ - rltty.o complete.o bind.o isearch.o display.o signals.o \ - util.o kill.o undo.o macro.o input.o callback.o terminal.o \ - text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ) \ - $(WCWIDTH_OBJ) - -# The texinfo files which document this library. -DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo -DOCOBJECT = doc/readline.dvi -DOCSUPPORT = doc/Makefile -DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT) - -CREATED_MAKEFILES = Makefile doc/Makefile examples/Makefile shlib/Makefile -CREATED_CONFIGURE = config.status config.h config.cache config.log \ - stamp-config stamp-h -CREATED_TAGS = TAGS tags - -INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h \ - rlstdc.h rlconf.h rltypedefs.h - -########################################################################## -TARGETS = @STATIC_TARGET@ @SHARED_TARGET@ -INSTALL_TARGETS = @STATIC_INSTALL_TARGET@ @SHARED_INSTALL_TARGET@ - -all: $(TARGETS) - -everything: all examples - -static: $(STATIC_LIBS) - -libreadline.a: $(OBJECTS) - $(RM) $@ - $(AR) $(ARFLAGS) $@ $(OBJECTS) - -test -n "$(RANLIB)" && $(RANLIB) $@ - -libhistory.a: $(HISTOBJ) xmalloc.o - $(RM) $@ - $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o - -test -n "$(RANLIB)" && $(RANLIB) $@ - -wcwidth.o: $(srcdir)/support/wcwidth.c - $(RM) $@ - $(CC) $(CCFLAGS) -c $(srcdir)/support/wcwidth.c - -# Since tilde.c is shared between readline and bash, make sure we compile -# it with the right flags when it's built as part of readline -tilde.o: tilde.c - rm -f $@ - $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -c $(srcdir)/tilde.c - -readline: $(OBJECTS) readline.h rldefs.h chardefs.h ./libreadline.a - $(CC) $(CCFLAGS) -o $@ ./examples/rl.c ./libreadline.a ${TERMCAP_LIB} - -lint: force - $(MAKE) $(MFLAGS) CCFLAGS='$(GCC_LINT_CFLAGS)' static - -Makefile makefile: config.status $(srcdir)/Makefile.in - CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status - -Makefiles makefiles: config.status $(srcdir)/Makefile.in - @for mf in $(CREATED_MAKEFILES); do \ - CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \ - done - -config.status: configure - $(SHELL) ./config.status --recheck - -config.h: stamp-h - -stamp-h: config.status $(srcdir)/config.h.in - CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status - echo > $@ - -#$(srcdir)/configure: $(srcdir)/configure.in ## Comment-me-out in distribution -# cd $(srcdir) && autoconf ## Comment-me-out in distribution - -shared: force - -test -d shlib || mkdir shlib - -( cd shlib ; ${MAKE} ${MFLAGS} all ) - -documentation: force - -test -d doc || mkdir doc - -( cd doc && $(MAKE) $(MFLAGS) ) - -examples: force - -test -d examples || mkdir examples - -(cd examples && ${MAKE} ${MFLAGS} all ) - -force: - -install-headers: installdirs ${INSTALLED_HEADERS} - for f in ${INSTALLED_HEADERS}; do \ - $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \ - done - -uninstall-headers: - -test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \ - ${RM} ${INSTALLED_HEADERS} - -maybe-uninstall-headers: uninstall-headers - -## GDB LOCAL -## Don't mess with people's installed readline's. -## This tries to install this version of readline over whatever -## version is already installed on the system (which could be a -## newer version). There is no real reason for us to install -## readline along with GDB. GDB links statically against readline, -## so it doesn't depend on us installing it on the system. - -install: - -#install: $(INSTALL_TARGETS) - -install-static: installdirs $(STATIC_LIBS) install-headers install-doc - -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old - $(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a - -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a - -$(MV) $(DESTDIR)$(libdir)/libhistory.a $(DESTDIR)$(libdir)/libhistory.old - $(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a - -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a - -installdirs: $(srcdir)/support/mkinstalldirs - -$(SHELL) $(srcdir)/support/mkinstalldirs $(DESTDIR)$(includedir) \ - $(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \ - $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir) - -uninstall: uninstall-headers uninstall-doc - -test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \ - ${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS) - -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall ) - -install-shared: installdirs install-headers shared install-doc - -( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install ) - -uninstall-shared: maybe-uninstall-headers - -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall ) - -install-doc: installdirs - -( if test -d doc ; then \ - cd doc && \ - ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \ - fi ) - -uninstall-doc: - -( if test -d doc ; then \ - cd doc && \ - ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} uninstall; \ - fi ) - -TAGS: force - $(ETAGS) $(CSOURCES) $(HSOURCES) - -tags: force - $(CTAGS) $(CSOURCES) $(HSOURCES) - -clean: force - $(RM) $(OBJECTS) $(STATIC_LIBS) - $(RM) readline readline.exe - -( cd shlib && $(MAKE) $(MFLAGS) $@ ) - -( cd doc && $(MAKE) $(MFLAGS) $@ ) - -( cd examples && $(MAKE) $(MFLAGS) $@ ) - -mostlyclean: clean - -( cd shlib && $(MAKE) $(MFLAGS) $@ ) - -( cd doc && $(MAKE) $(MFLAGS) $@ ) - -( cd examples && $(MAKE) $(MFLAGS) $@ ) - -distclean maintainer-clean: clean - -( cd shlib && $(MAKE) $(MFLAGS) $@ ) - -( cd doc && $(MAKE) $(MFLAGS) $@ ) - -( cd examples && $(MAKE) $(MFLAGS) $@ ) - $(RM) Makefile - $(RM) $(CREATED_CONFIGURE) - $(RM) $(CREATED_TAGS) - -info dvi html pdf: - -( cd doc && $(MAKE) $(MFLAGS) $@ ) - -install-info: -install-html: -install-pdf: -check: -installcheck: - -dist: force - @echo Readline distributions are created using $(srcdir)/support/mkdist. - @echo Here is a sample of the necessary commands: - @echo bash $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r $(RL_LIBRARY_NAME) $(RL_LIBRARY_VERSION) - @echo tar cf $(RL_LIBRARY_NAME)-${RL_LIBRARY_VERSION}.tar ${RL_LIBRARY_NAME}-$(RL_LIBRARY_VERSION) - @echo gzip $(RL_LIBRARY_NAME)-$(RL_LIBRARY_VERSION).tar - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: - -# Dependencies -bind.o: ansi_stdlib.h posixstat.h -bind.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -bind.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -bind.o: history.h -callback.o: rlconf.h -callback.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -callback.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -compat.o: rlstdc.h -complete.o: ansi_stdlib.h posixdir.h posixstat.h -complete.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -complete.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -display.o: ansi_stdlib.h posixstat.h -display.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -display.o: tcap.h -display.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -display.o: history.h rlstdc.h -funmap.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -funmap.o: rlconf.h ansi_stdlib.h rlstdc.h -funmap.o: ${BUILD_DIR}/config.h -histexpand.o: ansi_stdlib.h -histexpand.o: history.h histlib.h rlstdc.h rltypedefs.h -histexpand.o: ${BUILD_DIR}/config.h -histfile.o: ansi_stdlib.h -histfile.o: history.h histlib.h rlstdc.h rltypedefs.h -histfile.o: ${BUILD_DIR}/config.h -history.o: ansi_stdlib.h -history.o: history.h histlib.h rlstdc.h rltypedefs.h -history.o: ${BUILD_DIR}/config.h -histsearch.o: ansi_stdlib.h -histsearch.o: history.h histlib.h rlstdc.h rltypedefs.h -histsearch.o: ${BUILD_DIR}/config.h -input.o: ansi_stdlib.h -input.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -input.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -isearch.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -isearch.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -isearch.o: ansi_stdlib.h history.h rlstdc.h -keymaps.o: emacs_keymap.c vi_keymap.c -keymaps.o: keymaps.h rltypedefs.h chardefs.h rlconf.h ansi_stdlib.h -keymaps.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -keymaps.o: ${BUILD_DIR}/config.h rlstdc.h -kill.o: ansi_stdlib.h -kill.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -kill.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -kill.o: history.h rlstdc.h -macro.o: ansi_stdlib.h -macro.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -macro.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -macro.o: history.h rlstdc.h -mbutil.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -mbutil.o: readline.h keymaps.h rltypedefs.h chardefs.h rlstdc.h -misc.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -misc.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -misc.o: history.h rlstdc.h ansi_stdlib.h -nls.o: ansi_stdlib.h -nls.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -nls.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -nls.o: history.h rlstdc.h -parens.o: rlconf.h -parens.o: ${BUILD_DIR}/config.h -parens.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -readline.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -readline.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -readline.o: history.h rlstdc.h -readline.o: posixstat.h ansi_stdlib.h posixjmp.h -rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -rltty.o: rltty.h -rltty.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -search.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -search.o: ansi_stdlib.h history.h rlstdc.h -shell.o: ${BUILD_DIR}/config.h -shell.o: ansi_stdlib.h -signals.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -signals.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -signals.o: history.h rlstdc.h -terminal.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -terminal.o: tcap.h -terminal.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -terminal.o: history.h rlstdc.h -text.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -text.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -text.o: history.h rlstdc.h ansi_stdlib.h -tilde.o: ansi_stdlib.h -tilde.o: ${BUILD_DIR}/config.h -tilde.o: tilde.h -undo.o: ansi_stdlib.h -undo.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -undo.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -undo.o: history.h rlstdc.h -util.o: posixjmp.h ansi_stdlib.h -util.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -util.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -vi_mode.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h -vi_mode.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h -vi_mode.o: history.h ansi_stdlib.h rlstdc.h -xmalloc.o: ${BUILD_DIR}/config.h -xmalloc.o: ansi_stdlib.h - -bind.o: rlshell.h -histfile.o: rlshell.h -nls.o: rlshell.h -readline.o: rlshell.h -shell.o: rlshell.h -terminal.o: rlshell.h -histexpand.o: rlshell.h - -bind.o: rlprivate.h -callback.o: rlprivate.h -complete.o: rlprivate.h -display.o: rlprivate.h -input.o: rlprivate.h -isearch.o: rlprivate.h -kill.o: rlprivate.h -macro.o: rlprivate.h -mbutil.o: rlprivate.h -misc.o: rlprivate.h -nls.o: rlprivate.h -parens.o: rlprivate.h -readline.o: rlprivate.h -rltty.o: rlprivate.h -search.o: rlprivate.h -signals.o: rlprivate.h -terminal.o: rlprivate.h -text.o: rlprivate.h -undo.o: rlprivate.h -util.o: rlprivate.h -vi_mode.o: rlprivate.h - -bind.o: xmalloc.h -callback.o: xmalloc.h -complete.o: xmalloc.h -display.o: xmalloc.h -funmap.o: xmalloc.h -histexpand.o: xmalloc.h -histfile.o: xmalloc.h -history.o: xmalloc.h -input.o: xmalloc.h -isearch.o: xmalloc.h -keymaps.o: xmalloc.h -kill.o: xmalloc.h -macro.o: xmalloc.h -mbutil.o: xmalloc.h -misc.o: xmalloc.h -readline.o: xmalloc.h -savestring.o: xmalloc.h -search.o: xmalloc.h -shell.o: xmalloc.h -terminal.o: xmalloc.h -text.o: xmalloc.h -tilde.o: xmalloc.h -undo.o: xmalloc.h -util.o: xmalloc.h -vi_mode.o: xmalloc.h -xmalloc.o: xmalloc.h - -complete.o: rlmbutil.h -display.o: rlmbutil.h -histexpand.o: rlmbutil.h -input.o: rlmbutil.h -isearch.o: rlmbutil.h -mbutil.o: rlmbutil.h -misc.o: rlmbutil.h -readline.o: rlmbutil.h -search.o: rlmbutil.h -text.o: rlmbutil.h -vi_mode.o: rlmbutil.h - -bind.o: $(srcdir)/bind.c -callback.o: $(srcdir)/callback.c -compat.o: $(srcdir)/compat.c -complete.o: $(srcdir)/complete.c -display.o: $(srcdir)/display.c -funmap.o: $(srcdir)/funmap.c -input.o: $(srcdir)/input.c -isearch.o: $(srcdir)/isearch.c -keymaps.o: $(srcdir)/keymaps.c $(srcdir)/emacs_keymap.c $(srcdir)/vi_keymap.c -kill.o: $(srcdir)/kill.c -macro.o: $(srcdir)/macro.c -mbutil.o: $(srcdir)/mbutil.c -misc.o: $(srcdir)/misc.c -nls.o: $(srcdir)/nls.c -parens.o: $(srcdir)/parens.c -readline.o: $(srcdir)/readline.c -rltty.o: $(srcdir)/rltty.c -savestring.o: $(srcdir)/savestring.c -search.o: $(srcdir)/search.c -shell.o: $(srcdir)/shell.c -signals.o: $(srcdir)/signals.c -terminal.o: $(srcdir)/terminal.c -text.o: $(srcdir)/text.c -tilde.o: $(srcdir)/tilde.c -undo.o: $(srcdir)/undo.c -util.o: $(srcdir)/util.c -vi_mode.o: $(srcdir)/vi_mode.c -xmalloc.o: $(srcdir)/xmalloc.c - -histexpand.o: $(srcdir)/histexpand.c -histfile.o: $(srcdir)/histfile.c -history.o: $(srcdir)/history.c -histsearch.o: $(srcdir)/histsearch.c - -bind.o: bind.c -callback.o: callback.c -compat.o: compat.c -complete.o: complete.c -display.o: display.c -funmap.o: funmap.c -input.o: input.c -isearch.o: isearch.c -keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c -kill.o: kill.c -macro.o: macro.c -mbutil.o: mbutil.c -misc.o: misc.c -nls.o: nls.c -parens.o: parens.c -readline.o: readline.c -rltty.o: rltty.c -savestring.o: savestring.c -search.o: search.c -shell.o: shell.c -signals.o: signals.c -terminal.o: terminal.c -text.o: text.c -tilde.o: tilde.c -undo.o: undo.c -util.o: util.c -vi_mode.o: vi_mode.c -xmalloc.o: xmalloc.c - -histexpand.o: histexpand.c -histfile.o: histfile.c -history.o: history.c -histsearch.o: histsearch.c diff --git a/contrib/gdb-7/readline/doc/Makefile.in b/contrib/gdb-7/readline/doc/Makefile.in deleted file mode 100644 index 096f440849..0000000000 --- a/contrib/gdb-7/readline/doc/Makefile.in +++ /dev/null @@ -1,255 +0,0 @@ -# This makefile for Readline library documentation is in -*- text -*- mode. -# Emacs likes it that way. - -# Copyright (C) 1996-2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - -topdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = .:@srcdir@ - -prefix = @prefix@ - -datarootdir = @datarootdir@ - -infodir = @infodir@ - -mandir = @mandir@ -manpfx = man - -man1ext = .1 -man1dir = $(mandir)/$(manpfx)1 -man3ext = .3 -man3dir = $(mandir)/$(manpfx)3 - -# set this to a value to have the HTML documentation installed -htmldir = - -# Support an alternate destination root directory for package building -DESTDIR = - -SHELL = @MAKE_SHELL@ -RM = rm -f - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -BUILD_DIR = @BUILD_DIR@ -TEXINPUTDIR = $(srcdir) - -MAKEINFO = LANGUAGE= makeinfo -TEXI2DVI = $(srcdir)/texi2dvi -TEXI2HTML = $(srcdir)/texi2html -QUIETPS = #set this to -q to shut up dvips -PAPERSIZE = letter -PSDPI = 600 -DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky - -# These tools might not be available; they're not required -DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE} -PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ - -RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \ - $(srcdir)/rltech.texi $(srcdir)/version.texi \ - $(srcdir)/rluserman.texi -HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \ - $(srcdir)/hstech.texi $(srcdir)/version.texi - -# This should be a program that converts troff to an ascii-readable format -NROFF = groff -Tascii - -# This should be a program that converts troff to postscript -GROFF = groff - -DVIOBJ = readline.dvi history.dvi rluserman.dvi -INFOOBJ = readline.info history.info rluserman.info -PSOBJ = readline.ps history.ps rluserman.ps readline_3.ps history_3.ps -HTMLOBJ = readline.html history.html rluserman.html -TEXTOBJ = readline.0 history.0 -PDFOBJ = readline.pdf history.pdf rluserman.pdf - -INTERMEDIATE_OBJ = rlman.dvi - -DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ) - -.SUFFIXES: .0 .3 .ps .txt .dvi .html .pdf - -.3.0: - $(RM) $@ - -${NROFF} -man $< > $@ - -.ps.pdf: - $(RM) $@ - -${PSPDF} $< - -.dvi.pdf: - $(RM) $@ - -${DVIPDF} $< - -all: info dvi html ps text -nodvi: info html text - -info: $(INFOOBJ) -dvi: $(DVIOBJ) -ps: $(PSOBJ) -html: $(HTMLOBJ) -text: $(TEXTOBJ) -pdf: $(PDFOBJ) - -readline.dvi: $(RLSRC) - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi - mv rlman.dvi readline.dvi - -readline.info: $(RLSRC) - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi - -rluserman.dvi: $(RLSRC) - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi - -rluserman.info: $(RLSRC) - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi - -history.dvi: ${HISTSRC} - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi - -history.info: ${HISTSRC} - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi - -readline.ps: readline.dvi - $(RM) $@ - $(DVIPS) readline.dvi - -rluserman.ps: rluserman.dvi - $(RM) $@ - $(DVIPS) rluserman.dvi - -history.ps: history.dvi - $(RM) $@ - $(DVIPS) history.dvi - -# -# This leaves readline.html and rlman.html -- rlman.html is for www.gnu.org -# -readline.html: ${RLSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi - sed -e 's:rlman.html:readline.html:g' rlman.html > readline.html - $(RM) rlman.html - -rluserman.html: ${RLSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi - -history.html: ${HISTSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi - -readline.0: readline.3 - -readline_3.ps: readline.3 - ${RM} $@ - ${GROFF} -man < $(srcdir)/readline.3 > $@ - -history.0: history.3 - -history_3.ps: history.3 - ${RM} $@ - ${GROFF} -man < $(srcdir)/history.3 > $@ - -readline.pdf: readline.dvi -history.pdf: history.dvi -rluserman.pdf: rluserman.dvi - -clean: - $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \ - *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o \ - core *.core - -mostlyclean: clean - -distclean: clean maybe-clean - $(RM) $(INTERMEDIATE_OBJ) - $(RM) Makefile - -maybe-clean: - -if test "X$(topdir)" != "X$(BUILD_DIR)"; then \ - $(RM) $(DIST_DOCS); \ - fi - -maintainer-clean: clean - $(RM) $(DIST_DOCS) - $(RM) $(INTERMEDIATE_OBJ) - $(RM) $(PDFOBJ) - $(RM) Makefile - -installdirs: $(topdir)/support/mkdirs - -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir) - -if test -n "${htmldir}" ; then \ - $(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(htmldir) ; \ - fi - -install: installdirs - if test -f readline.info; then \ - ${INSTALL_DATA} readline.info $(DESTDIR)$(infodir)/readline.info; \ - else \ - ${INSTALL_DATA} $(srcdir)/readline.info $(DESTDIR)$(infodir)/readline.info; \ - fi - if test -f rluserman.info; then \ - ${INSTALL_DATA} rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \ - else \ - ${INSTALL_DATA} $(srcdir)/rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \ - fi - if test -f history.info; then \ - ${INSTALL_DATA} history.info $(DESTDIR)$(infodir)/history.info; \ - else \ - ${INSTALL_DATA} $(srcdir)/history.info $(DESTDIR)$(infodir)/history.info; \ - fi - -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ - install-info --dir-file=$(DESTDIR)$(infodir)/dir \ - $(DESTDIR)$(infodir)/readline.info ; \ - install-info --dir-file=$(DESTDIR)$(infodir)/dir \ - $(DESTDIR)$(infodir)/history.info ; \ - install-info --dir-file=$(DESTDIR)$(infodir)/dir \ - $(DESTDIR)$(infodir)/rluserman.info ; \ - else true; fi - -${INSTALL_DATA} $(srcdir)/readline.3 $(DESTDIR)$(man3dir)/readline$(man3ext) - -${INSTALL_DATA} $(srcdir)/history.3 $(DESTDIR)$(man3dir)/history$(man3ext) - -if test -n "${htmldir}" ; then \ - if test -f readline.html; then \ - ${INSTALL_DATA} readline.html $(DESTDIR)$(htmldir)/readline.html; \ - else \ - ${INSTALL_DATA} $(srcdir)/readline.html $(DESTDIR)$(htmldir)/readline.html; \ - fi ; \ - if test -f history.html; then \ - ${INSTALL_DATA} history.html $(DESTDIR)$(htmldir)/history.html; \ - else \ - ${INSTALL_DATA} $(srcdir)/history.html $(DESTDIR)$(htmldir)/history.html; \ - fi ; \ - if test -f rluserman.html; then \ - ${INSTALL_DATA} rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \ - else \ - ${INSTALL_DATA} $(srcdir)/rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \ - fi ; \ - fi - -uninstall: - $(RM) $(DESTDIR)$(infodir)/readline.info - $(RM) $(DESTDIR)$(infodir)/rluserman.info - $(RM) $(DESTDIR)$(infodir)/history.info - $(RM) $(DESTDIR)$(man3dir)/readline$(man3ext) - $(RM) $(DESTDIR)$(man3dir)/history$(man3ext) - -if test -n "${htmldir}" ; then \ - $(RM) $(DESTDIR)$(htmldir)/readline.html ; \ - $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \ - $(RM) $(DESTDIR)$(htmldir)/history.html ; \ - fi -- 2.41.0