diff --git a/.gitignore b/.gitignore index e69de29..90db1fb 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,3 @@ +/gdb-12.1.tar.xz +/gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz +/v2.0.5.tar.gz diff --git a/README.local-patches.md b/README.local-patches.md new file mode 100644 index 0000000..fc2eb90 --- /dev/null +++ b/README.local-patches.md @@ -0,0 +1,104 @@ +# Fedora GDB local patches policy + +In order to make things easier for the Fedora GDB maintainer, we +choose to auto-generate the local patches by making use of an upstream +git repository. Below you can find a few instructions on how to work +using this method. + +You need to run the following commands from the directory that +contains the "gdb.spec" file. + +## Importing the GDB patches into a git repository + +1) The local patches (`*.patch`) need to be imported into an upstream +git repository. For example, let's assume you cloned the repository +by doing: + +`$ git clone git://sourceware.org/git/binutils-gdb.git` + +> TIP: if you already have the repository cloned somewhere in your +> system, you can pass a "--reference " to the "git clone" +> command and it will use your local repository as much as possible +> to make the clone, speeding up things. + +2) After cloning the upstream repository, you can import your patches +by using the script "generate-git-repo-from-patches.sh": + +`$ sh generate-git-repo-from-patches.sh ` + +The script will basically cd into the repository, checkout the +revision specified in the file `_git_upstream_commit`, iterate through +the file `_patch_order` and "git-am" every patch *in that order*. +This operation should complete without errors; if you find a problem +with `git-am`, it probably means that the revision specified in the +file `_git_upstream_commit` is wrong. + +## Rebasing the patches against a newer version/release + +1) First, cd into the upstream repository. All you have to do is +choose the revision against which you plan to rebase the patches, and +`git rebase `. git will do the rest, and you will be able +to perform conflict resolution by git's algorithm, which is smarter. + +## Creating new patches + +1) Create the new patch on top of the the others, as usual. Note that +you can use `git rebase` whenever you want to reorder patch order, or +even to delete a patch. + +2) When writing the commit log, you must obey a few rules. The +subject line *must* be the filename of the patch. This line will be +used when exporting the patches from the git repository, and +(obviously) it gives the filename that should be used for this +specific patch. + +3) You can also add comments that will go into the auto-generated +`Patch:` file (see below). To do that, use the special marker `;;` at +the beginning of the line. This way, a commit log that says: + +~~~~~~~~~~~ + test-patch.patch + + ;; This is a test patch + ;; Second line +~~~~~~~~~~~ + +Will generate the following entry in the auto-generated `Patch:` file: + +~~~~~~~~~~~ + # This is a test patch + # Second line + PatchXYZ: test-patch.patch +~~~~~~~~~~~ + +## Exporting the GDB patches from the git repository + +1) When you're done working with the patches, go back to the directory +that contains the `gdb.spec` file, and from there you run: + +`$ sh generate-patches-from-git-repo.sh ` + +This will regenerate all of the `*.patch` files (excluding the ones that +were also excluded from the git repository), and also regenerate a few +control files. These control files are: + + - `_gdb.spec.Patch.include`: This file contains the `Patch:` directives. + + - `_gdb.spec.patch.include`: This file contains the `%patch` directives. + + - `_patch_order`: This file contains the patches, in the exact order + that they must be applied. It is used when importing the patches + into the git repository. + + - `_git_upstream_commit`: This file contains the last upstream commit + against which the patches were rebased. It is used when importing + the patches into the git repository. + +NOTE: If you did a rebase against a newer upstream version, you need +to specify the commit/tag/branch against which you rebased: + +`$ sh generate-patches-from-git-repo.sh ` + +For example, if you rebased against `gdb-8.1-release`: + +`$ sh generate-patches-from-git-repo.sh gdb-8.1-release` diff --git a/_gdb.spec.Patch.include b/_gdb.spec.Patch.include new file mode 100644 index 0000000..4404807 --- /dev/null +++ b/_gdb.spec.Patch.include @@ -0,0 +1,286 @@ +# Match the Fedora's version info. +#=fedora +Patch001: gdb-6.3-rh-testversion-20041202.patch + +# Add a wrapper script to GDB that implements pstack using the +# --readnever option. +#=push +Patch002: gdb-6.3-gstack-20050411.patch + +# Support TLS symbols (+`errno' suggestion if no pthread is found) (BZ 185337). +#=push+jan: It should be replaced by Infinity project. +Patch003: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch + +# Fix TLS symbols resolving for shared libraries with a relative pathname. +# The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. +#=fedoratest: One should recheck if it is really fixed upstream. +Patch004: gdb-6.5-sharedlibrary-path.patch + +# Improved testsuite results by the testsuite provided by the courtesy of BEA. +#=fedoratest: For upstream it should be rewritten as a dejagnu test, the test of no "??" was useful. +Patch005: gdb-6.5-BEA-testsuite.patch + +# Testcase for deadlocking on last address space byte; for corrupted backtraces. +#=fedoratest +Patch006: gdb-6.5-last-address-space-byte-test.patch + +# Fix readline segfault on excessively long hand-typed lines. +#=fedoratest +Patch007: gdb-6.5-readline-long-line-crash-test.patch + +# Test sideeffects of skipping ppc .so libs trampolines (BZ 218379). +#=fedoratest +Patch008: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch + +# Find symbols properly at their original (included) file (BZ 109921). +#=fedoratest +Patch009: gdb-6.5-bz109921-DW_AT_decl_file-test.patch + +# Update PPC unwinding patches to their upstream variants (BZ 140532). +#=fedoratest +Patch010: gdb-6.3-bz140532-ppc-unwinding-test.patch + +# Testcase for exec() from threaded program (BZ 202689). +#=fedoratest +Patch011: gdb-6.3-bz202689-exec-from-pthread-test.patch + +# Testcase for PPC Power6/DFP instructions disassembly (BZ 230000). +#=fedoratest +Patch012: gdb-6.6-bz230000-power6-disassembly-test.patch + +# Allow running `/usr/bin/gcore' with provided but inaccessible tty (BZ 229517). +#=fedoratest +Patch013: gdb-6.6-bz229517-gcore-without-terminal.patch + +# Avoid too long timeouts on failing cases of "annota1.exp annota3.exp". +#=fedoratest +Patch014: gdb-6.6-testsuite-timeouts.patch + +# Support for stepping over PPC atomic instruction sequences (BZ 237572). +#=fedoratest +Patch015: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch + +# Test kernel VDSO decoding while attaching to an i386 process. +#=fedoratest +Patch016: gdb-6.3-attach-see-vdso-test.patch + +# Test leftover zombie process (BZ 243845). +#=fedoratest +Patch017: gdb-6.5-bz243845-stale-testing-zombie-test.patch + +# New locating of the matching binaries from the pure core file (build-id). +#=push+jan +Patch018: gdb-6.6-buildid-locate.patch + +# Fix loading of core files without build-ids but with build-ids in executables. +# Load strictly build-id-checked core files only if no executable is specified +# (Jan Kratochvil, RH BZ 1339862). +#=push+jan +Patch019: gdb-6.6-buildid-locate-solib-missing-ids.patch + +#=push+jan +Patch020: gdb-6.6-buildid-locate-rpm.patch + +# Fix displaying of numeric char arrays as strings (BZ 224128). +#=fedoratest: But it is failing anyway, one should check the behavior more. +Patch021: gdb-6.7-charsign-test.patch + +# Test PPC hiding of call-volatile parameter register. +#=fedoratest +Patch022: gdb-6.7-ppc-clobbered-registers-O2-test.patch + +# Testsuite fixes for more stable/comparable results. +#=fedoratest +Patch023: gdb-6.7-testsuite-stable-results.patch + +# Test ia64 memory leaks of the code using libunwind. +#=fedoratest +Patch024: gdb-6.5-ia64-libunwind-leak-test.patch + +# Test hiding unexpected breakpoints on intentional step commands. +#=fedoratest +Patch025: gdb-6.5-missed-trap-on-step-test.patch + +# Test gcore memory and time requirements for large inferiors. +#=fedoratest +Patch026: gdb-6.5-gcore-buffer-limit-test.patch + +# Test GCORE for shmid 0 shared memory mappings. +#=fedoratest: But it is broken anyway, sometimes the case being tested is not reproducible. +Patch027: gdb-6.3-mapping-zero-inode-test.patch + +# Test various forms of threads tracking across exec() (BZ 442765). +#=fedoratest +Patch028: gdb-6.8-bz442765-threaded-exec-test.patch + +# Test a crash on libraries missing the .text section. +#=fedoratest +Patch029: gdb-6.5-section-num-fixup-test.patch + +# Fix resolving of variables at locations lists in prelinked libs (BZ 466901). +#=fedoratest +Patch030: gdb-6.8-bz466901-backtrace-full-prelinked.patch + +# New test for step-resume breakpoint placed in multiple threads at once. +#=fedoratest +Patch031: gdb-simultaneous-step-resume-breakpoint-test.patch + +# Fix GNU/Linux core open: Can't read pathname for load map: Input/output error. +# Fix regression of undisplayed missing shared libraries caused by a fix for. +#=fedoratest: It should be in glibc: libc-alpha: <20091004161706.GA27450@.*> +Patch032: gdb-core-open-vdso-warning.patch + +# Workaround ccache making lineno non-zero for command-line definitions. +#=fedoratest: ccache is rarely used and it is even fixed now. +Patch033: gdb-ccache-workaround.patch + +# Testcase for "Do not make up line information" fix by Daniel Jacobowitz. +#=fedoratest +Patch034: gdb-lineno-makeup-test.patch + +# Test power7 ppc disassembly. +#=fedoratest +Patch035: gdb-ppc-power7-test.patch + +# Fix follow-exec for C++ programs (bugreported by Martin Stransky). +#=fedoratest +Patch036: gdb-archer-next-over-throw-cxx-exec.patch + +# Workaround librpm BZ 643031 due to its unexpected exit() calls (BZ 642879). +#=push+jan +Patch037: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch + +# [delayed-symfile] Test a backtrace regression on CFIs without DIE (BZ 614604). +#=fedoratest +Patch038: gdb-test-bt-cfi-without-die.patch + +# Verify GDB Python built-in function gdb.solib_address exists (BZ # 634108). +#=fedoratest +Patch039: gdb-bz634108-solib_address.patch + +# New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435). +#=fedoratest +Patch040: gdb-test-pid0-core.patch + +# [archer-tromey-delayed-symfile] New test gdb.dwarf2/dw2-aranges.exp. +#=fedoratest +Patch041: gdb-test-dw2-aranges.patch + +# Test GDB opcodes/ disassembly of Intel Ivy Bridge instructions (BZ 696890). +#=fedoratest +Patch042: gdb-test-ivy-bridge.patch + +# Workaround PR libc/14166 for inferior calls of strstr. +#=fedoratest: Compatibility with RHELs (unchecked which ones). +Patch043: gdb-glibc-strstr-workaround.patch + +# Include testcase for `Unable to see a variable inside a module (XLF)' (BZ 823789). +#=fedoratest +Patch044: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch + +# Testcase for `Setting solib-absolute-prefix breaks vDSO' (BZ 818343). +#=fedoratest +Patch045: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch + +# Import regression test for `gdb/findvar.c:417: internal-error: +# read_var_value: Assertion `frame' failed.' (RH BZ 947564) from RHEL 6.5. +#=fedoratest +Patch046: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch + +# Fix 'memory leak in infpy_read_memory()' (RH BZ 1007614) +#=fedoratest +Patch047: gdb-rhbz1007614-memleak-infpy_read_memory-test.patch + +# Fix 'gdb gives highly misleading error when debuginfo pkg is present, +# but not corresponding binary pkg' (RH BZ 981154). +#=push+jan +Patch048: gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch + +# Testcase for '[SAP] Recursive dlopen causes SAP HANA installer to +# crash.' (RH BZ 1156192). +#=fedoratest +Patch049: gdb-rhbz1156192-recursive-dlopen-test.patch + +# Fix '`catch syscall' doesn't work for parent after `fork' is called' +# (Philippe Waroquiers, RH BZ 1149205). +#=fedoratest +Patch050: gdb-rhbz1149205-catch-syscall-after-fork-test.patch + +# Fix 'backport GDB 7.4 fix to RHEL 6.6 GDB' [Original Sourceware bug +# description: 'C++ (and objc): Internal error on unqualified name +# re-set', PR 11657] (RH BZ 1186476). +#=fedoratest +Patch051: gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch + +# Test 'info type-printers' Python error (RH BZ 1350436). +#=fedoratest +Patch052: gdb-rhbz1350436-type-printers-error.patch + +# Fix '[ppc64] and [s390x] wrong prologue skip on -O2 -g code' (Jan +# Kratochvil, RH BZ 1084404). +#=fedoratest +Patch053: gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch + +# Force libncursesw over libncurses to match the includes (RH BZ 1270534). +#=push+jan +Patch054: gdb-fedora-libncursesw.patch + +# Test clflushopt instruction decode (for RH BZ 1262471). +#=fedoratest +Patch055: gdb-opcodes-clflushopt-test.patch + +# [aarch64] Fix hardware watchpoints (RH BZ 1261564). +#=fedoratest +Patch056: gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch + +# Add messages suggesting more recent RHEL gdbserver (RH BZ 1321114). +#=fedora +Patch057: gdb-container-rh-pkg.patch + +# [dts+el7] [x86*] Bundle linux_perf.h for libipt (RH BZ 1256513). +#=fedora +Patch058: gdb-linux_perf-bundle.patch + +# Fix gdb-headless /usr/bin/ executables (BZ 1390251). +# +# Also, make /usr/bin/gdb.minimal be the default GDB used, if it's +# present. For rationale, see: +# +# https://fedoraproject.org/wiki/Changes/Minimal_GDB_in_buildroot +#=fedora +Patch059: gdb-libexec-add-index.patch + +# [s390x] Backport arch12 instructions decoding (RH BZ 1553104). +# =fedoratest +Patch060: gdb-rhbz1553104-s390x-arch12-test.patch + + +Patch061: gdb-backport-readline_support.patch + +# [gdb/testsuite] Use prototype to call libc functions +# (Tom de Vries) +Patch062: gdb-backport-fix-break-main-file-remove-fail.patch + +# Constify target_desc to fix PPC ODR violations. +# (Keith Seitz, build/22395) +Patch063: gdb-sw22395-constify-target_desc.patch + +# libiberty: Fix C89-isms in configure tests +# (Florian Weimer, RHBZ 2143992) +Patch064: gdb-rhbz2143992-libiberty-fix-c89isms-in-configure.patch + + +Patch065: gdb-rhbz2152431-label-symbol-value.patch + +#Backport replace deprecated distutils.sysconfig in +#python-config (Lancelot SIX) +Patch066: gdb-backport-python-config-replace-deprecated-distutils.patch + +# gcc 13 fallout: Backport Jan-Benedict Glaw's fix for the self-move +# warning check +Patch067: gdb-gcc-13-backport-self-move-diagnostic-fix + +# Backport "call check_typedef at beginning of dwarf_expr_context::fetch_result" +# (Simon Marchi, backtrace/29374) +Patch068: gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch + diff --git a/_gdb.spec.patch.include b/_gdb.spec.patch.include new file mode 100644 index 0000000..f004491 --- /dev/null +++ b/_gdb.spec.patch.include @@ -0,0 +1,68 @@ +%patch001 -p1 +%patch002 -p1 +%patch003 -p1 +%patch004 -p1 +%patch005 -p1 +%patch006 -p1 +%patch007 -p1 +%patch008 -p1 +%patch009 -p1 +%patch010 -p1 +%patch011 -p1 +%patch012 -p1 +%patch013 -p1 +%patch014 -p1 +%patch015 -p1 +%patch016 -p1 +%patch017 -p1 +%patch018 -p1 +%patch019 -p1 +%patch020 -p1 +%patch021 -p1 +%patch022 -p1 +%patch023 -p1 +%patch024 -p1 +%patch025 -p1 +%patch026 -p1 +%patch027 -p1 +%patch028 -p1 +%patch029 -p1 +%patch030 -p1 +%patch031 -p1 +%patch032 -p1 +%patch033 -p1 +%patch034 -p1 +%patch035 -p1 +%patch036 -p1 +%patch037 -p1 +%patch038 -p1 +%patch039 -p1 +%patch040 -p1 +%patch041 -p1 +%patch042 -p1 +%patch043 -p1 +%patch044 -p1 +%patch045 -p1 +%patch046 -p1 +%patch047 -p1 +%patch048 -p1 +%patch049 -p1 +%patch050 -p1 +%patch051 -p1 +%patch052 -p1 +%patch053 -p1 +%patch054 -p1 +%patch055 -p1 +%patch056 -p1 +%patch057 -p1 +%patch058 -p1 +%patch059 -p1 +%patch060 -p1 +%patch061 -p1 +%patch062 -p1 +%patch063 -p1 +%patch064 -p1 +%patch065 -p1 +%patch066 -p1 +%patch067 -p1 +%patch068 -p1 diff --git a/_git_upstream_commit b/_git_upstream_commit new file mode 100644 index 0000000..da9ead1 --- /dev/null +++ b/_git_upstream_commit @@ -0,0 +1 @@ +e53a8e8685685c97588f8319d993ea6cd5635e47 diff --git a/_patch_order b/_patch_order new file mode 100644 index 0000000..20b172f --- /dev/null +++ b/_patch_order @@ -0,0 +1,68 @@ +gdb-6.3-rh-testversion-20041202.patch +gdb-6.3-gstack-20050411.patch +gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch +gdb-6.5-sharedlibrary-path.patch +gdb-6.5-BEA-testsuite.patch +gdb-6.5-last-address-space-byte-test.patch +gdb-6.5-readline-long-line-crash-test.patch +gdb-6.5-bz218379-ppc-solib-trampoline-test.patch +gdb-6.5-bz109921-DW_AT_decl_file-test.patch +gdb-6.3-bz140532-ppc-unwinding-test.patch +gdb-6.3-bz202689-exec-from-pthread-test.patch +gdb-6.6-bz230000-power6-disassembly-test.patch +gdb-6.6-bz229517-gcore-without-terminal.patch +gdb-6.6-testsuite-timeouts.patch +gdb-6.6-bz237572-ppc-atomic-sequence-test.patch +gdb-6.3-attach-see-vdso-test.patch +gdb-6.5-bz243845-stale-testing-zombie-test.patch +gdb-6.6-buildid-locate.patch +gdb-6.6-buildid-locate-solib-missing-ids.patch +gdb-6.6-buildid-locate-rpm.patch +gdb-6.7-charsign-test.patch +gdb-6.7-ppc-clobbered-registers-O2-test.patch +gdb-6.7-testsuite-stable-results.patch +gdb-6.5-ia64-libunwind-leak-test.patch +gdb-6.5-missed-trap-on-step-test.patch +gdb-6.5-gcore-buffer-limit-test.patch +gdb-6.3-mapping-zero-inode-test.patch +gdb-6.8-bz442765-threaded-exec-test.patch +gdb-6.5-section-num-fixup-test.patch +gdb-6.8-bz466901-backtrace-full-prelinked.patch +gdb-simultaneous-step-resume-breakpoint-test.patch +gdb-core-open-vdso-warning.patch +gdb-ccache-workaround.patch +gdb-lineno-makeup-test.patch +gdb-ppc-power7-test.patch +gdb-archer-next-over-throw-cxx-exec.patch +gdb-6.6-buildid-locate-rpm-librpm-workaround.patch +gdb-test-bt-cfi-without-die.patch +gdb-bz634108-solib_address.patch +gdb-test-pid0-core.patch +gdb-test-dw2-aranges.patch +gdb-test-ivy-bridge.patch +gdb-glibc-strstr-workaround.patch +gdb-rhel5.9-testcase-xlf-var-inside-mod.patch +gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch +gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch +gdb-rhbz1007614-memleak-infpy_read_memory-test.patch +gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch +gdb-rhbz1156192-recursive-dlopen-test.patch +gdb-rhbz1149205-catch-syscall-after-fork-test.patch +gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch +gdb-rhbz1350436-type-printers-error.patch +gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch +gdb-fedora-libncursesw.patch +gdb-opcodes-clflushopt-test.patch +gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch +gdb-container-rh-pkg.patch +gdb-linux_perf-bundle.patch +gdb-libexec-add-index.patch +gdb-rhbz1553104-s390x-arch12-test.patch +gdb-backport-readline_support.patch +gdb-backport-fix-break-main-file-remove-fail.patch +gdb-sw22395-constify-target_desc.patch +gdb-rhbz2143992-libiberty-fix-c89isms-in-configure.patch +gdb-rhbz2152431-label-symbol-value.patch +gdb-backport-python-config-replace-deprecated-distutils.patch +gdb-gcc-13-backport-self-move-diagnostic-fix +gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch \ No newline at end of file diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..c190bde --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/gdb-6.3-attach-see-vdso-test.patch b/gdb-6.3-attach-see-vdso-test.patch new file mode 100644 index 0000000..daba42f --- /dev/null +++ b/gdb-6.3-attach-see-vdso-test.patch @@ -0,0 +1,120 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.3-attach-see-vdso-test.patch + +;; Test kernel VDSO decoding while attaching to an i386 process. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/attach-see-vdso.c b/gdb/testsuite/gdb.base/attach-see-vdso.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/attach-see-vdso.c +@@ -0,0 +1,25 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++int main () ++{ ++ pause (); ++ return 1; ++} +diff --git a/gdb/testsuite/gdb.base/attach-see-vdso.exp b/gdb/testsuite/gdb.base/attach-see-vdso.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/attach-see-vdso.exp +@@ -0,0 +1,77 @@ ++# Copyright 2007 ++ ++# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# This file was created by Jan Kratochvil . ++ ++# This test only works on Linux ++if { ![istarget "*-*-linux-gnu*"] } { ++ return 0 ++} ++ ++if {[use_gdb_stub]} { ++ untested "skipping test because of use_gdb_stub" ++ return -1 ++} ++ ++set testfile "attach-see-vdso" ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++set escapedbinfile [string_to_regexp [standard_output_file ${testfile}]] ++ ++# The kernel VDSO is used for the syscalls returns only on i386 (not x86_64). ++# ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-m32}] != "" } { ++ gdb_suppress_entire_file "Testcase nonthraded compile failed, so all tests in this file will automatically fail." ++} ++ ++if [get_compiler_info ${binfile}] { ++ return -1 ++} ++ ++# Start the program running and then wait for a bit, to be sure ++# that it can be attached to. ++ ++set testpid [eval exec $binfile &] ++ ++# Avoid some race: ++sleep 2 ++ ++# Start with clean gdb ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++# Never call: gdb_load ${binfile} ++# as the former problem would not reproduce otherwise. ++ ++set test "attach" ++gdb_test_multiple "attach $testpid" "$test" { ++ -re "Attaching to process $testpid\r?\n.*$gdb_prompt $" { ++ pass "$test" ++ } ++} ++ ++gdb_test "bt" "#0 *0x\[0-9a-f\]* in \[^?\].*" "backtrace decodes VDSO" ++ ++# Exit and detach the process. ++ ++gdb_exit ++ ++# Make sure we don't leave a process around to confuse ++# the next test run (and prevent the compile by keeping ++# the text file busy), in case the "set should_exit" didn't ++# work. ++ ++remote_exec build "kill -9 ${testpid}" diff --git a/gdb-6.3-bz140532-ppc-unwinding-test.patch b/gdb-6.3-bz140532-ppc-unwinding-test.patch new file mode 100644 index 0000000..2e38a26 --- /dev/null +++ b/gdb-6.3-bz140532-ppc-unwinding-test.patch @@ -0,0 +1,320 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.3-bz140532-ppc-unwinding-test.patch + +;; Update PPC unwinding patches to their upstream variants (BZ 140532). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.arch/powerpc-bcl-prologue-asm32.S b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue-asm32.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue-asm32.S +@@ -0,0 +1,78 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++ .section ".text" ++ .align 2 ++ .globl func0 ++ .type func0, @function ++func0: ++ stwu 1,-16(1) ++ mflr 0 ++ stw 31,12(1) ++ stw 0,20(1) ++ mr 31,1 ++ bl abort ++ .size func0, .-func0 ++ .align 2 ++ .globl func1 ++ .type func1, @function ++func1: ++ stwu 1,-16(1) ++ mflr 0 ++/* 20 = BO = branch always ++ 31 = BI = CR bit (ignored) */ ++ bcl 20,31,.Lpie ++.Lpie: stw 31,12(1) ++ stw 0,20(1) ++ mr 31,1 ++ bl func0 ++ mr 0,3 ++ lis 9,var@ha ++ lwz 9,var@l(9) ++ add 0,0,9 ++ mr 3,0 ++ lwz 11,0(1) ++ lwz 0,4(11) ++ mtlr 0 ++ lwz 31,-4(11) ++ mr 1,11 ++ blr ++ .size func1, .-func1 ++ .section .note.GNU-stack,"",@progbits ++ .ident "GCC: (GNU) 3.4.6 20060404 (Red Hat 3.4.6-8)" ++ ++/* Original source file: ++ ++#include ++ ++extern volatile int var; ++ ++int func0 (void) __attribute__((__noinline__)); ++int func0 (void) ++{ ++ abort (); ++ return var; ++} ++ ++int func1 (void) __attribute__((__noinline__)); ++int func1 (void) ++{ ++ return func0 () + var; ++} ++ ++*/ +diff --git a/gdb/testsuite/gdb.arch/powerpc-bcl-prologue-asm64.S b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue-asm64.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue-asm64.S +@@ -0,0 +1,98 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++ .section ".toc","aw" ++ .section ".text" ++ .align 2 ++ .globl func0 ++ .section ".opd","aw" ++ .align 3 ++func0: ++ .quad .L.func0,.TOC.@tocbase ++ .previous ++ .type func0, @function ++.L.func0: ++ mflr 0 ++ std 31,-8(1) ++ std 0,16(1) ++ stdu 1,-128(1) ++ mr 31,1 ++ bl abort ++ nop ++ .long 0 ++ .byte 0,0,0,1,128,1,0,1 ++ .size func0,.-.L.func0 ++ .section ".toc","aw" ++.LC1: ++ .tc var[TC],var ++ .section ".text" ++ .align 2 ++ .globl func1 ++ .section ".opd","aw" ++ .align 3 ++func1: ++ .quad .L.func1,.TOC.@tocbase ++ .previous ++ .type func1, @function ++.L.func1: ++ mflr 0 ++/* 20 = BO = branch always ++ 31 = BI = CR bit (ignored) */ ++ bcl 20,31,.Lpie ++.Lpie: std 31,-8(1) ++ std 0,16(1) ++ stdu 1,-128(1) ++ mr 31,1 ++ bl func0 ++ mr 11,3 ++ ld 9,.LC1@toc(2) ++ lwz 0,0(9) ++ add 0,11,0 ++ extsw 0,0 ++ mr 3,0 ++ ld 1,0(1) ++ ld 0,16(1) ++ mtlr 0 ++ ld 31,-8(1) ++ blr ++ .long 0 ++ .byte 0,0,0,1,128,1,0,1 ++ .size func1,.-.L.func1 ++ .section .note.GNU-stack,"",@progbits ++ .ident "GCC: (GNU) 3.4.6 20060404 (Red Hat 3.4.6-8)" ++ ++/* Original source file: ++ ++#include ++ ++extern volatile int var; ++ ++int func0 (void) __attribute__((__noinline__)); ++int func0 (void) ++{ ++ abort (); ++ return var; ++} ++ ++int func1 (void) __attribute__((__noinline__)); ++int func1 (void) ++{ ++ return func0 () + var; ++} ++ ++*/ +diff --git a/gdb/testsuite/gdb.arch/powerpc-bcl-prologue.c b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue.c +@@ -0,0 +1,29 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++/* Force `-fpie' double jump bl->blrl. */ ++/* No longer used. */ ++volatile int var; ++ ++extern int func1 (void); ++ ++int main (void) ++{ ++ func1 (); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.arch/powerpc-bcl-prologue.exp b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-bcl-prologue.exp +@@ -0,0 +1,72 @@ ++# Copyright 2006, 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Test unwinding fixes of the PPC platform, specifically on the coping with BCL ++# jump of the PIE code. ++ ++if ![istarget "powerpc*-*-linux*"] then { ++ verbose "Skipping powerpc-linux prologue tests." ++ return ++} ++ ++set testfile "powerpc-bcl-prologue" ++set srcfile1 ${testfile}.c ++set flags "debug" ++if [istarget "powerpc-*"] then { ++ set srcfile2 ${testfile}-asm32.S ++ set flags "$flags additional_flags=-m32" ++} elseif [istarget "powerpc64-*"] then { ++ set srcfile2 ${testfile}-asm64.S ++ set flags "$flags additional_flags=-m64" ++} else { ++ fail "powerpc arch test" ++ return ++} ++set objfile2 [standard_output_file ${testfile}-asm.o] ++set binfile [standard_output_file ${testfile}] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2}" ${binfile} executable $flags] != ""} { ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++# We should stop in abort(3). ++ ++gdb_run_cmd ++ ++gdb_test_multiple {} "continue to abort()" { ++ -re ".*Program received signal SIGABRT,.*$gdb_prompt $" { ++ pass "continue to abort()" ++ } ++} ++ ++# Check backtrace: ++# #3 0x0804835f in func0 () ++# #4 0x0804836a in func1 () ++# #5 0x0804838c in main () ++# (gdb) ++# `\\.?' prefixes are needed for ppc64 without `debug' (another bug). ++ ++set test "matching unwind" ++gdb_test_multiple "backtrace" $test { ++ -re "\r\n#\[0-9\]\[^\r\n\]* in \\.?func0 \\(\[^\r\n\]*\r\n#\[0-9\]\[^\r\n\]* in \\.?func1 \\(\[^\r\n\]*\r\n#\[0-9\]\[^\r\n\]* in \\.?main \\(\[^\r\n\]*\r\n$gdb_prompt $" { ++ pass $test ++ } ++} +diff --git a/gdb/testsuite/gdb.arch/powerpc-prologue.exp b/gdb/testsuite/gdb.arch/powerpc-prologue.exp +--- a/gdb/testsuite/gdb.arch/powerpc-prologue.exp ++++ b/gdb/testsuite/gdb.arch/powerpc-prologue.exp +@@ -16,8 +16,9 @@ + # Test PowerPC prologue analyzer. + + # Do not run on AIX (where we won't be able to build the tests without +-# some surgery) or on PowerPC64 (ditto, dot symbols). +-if {[istarget *-*-aix*] || ![istarget "powerpc-*-*"]} then { ++# some surgery). PowerPC64 target would break due to dot symbols but we build ++# there PowerPC32 inferior. ++if {[istarget *-*-aix*] || ![istarget "powerpc*-*-*"]} then { + verbose "Skipping PowerPC prologue tests." + return + } diff --git a/gdb-6.3-bz202689-exec-from-pthread-test.patch b/gdb-6.3-bz202689-exec-from-pthread-test.patch new file mode 100644 index 0000000..74684dd --- /dev/null +++ b/gdb-6.3-bz202689-exec-from-pthread-test.patch @@ -0,0 +1,109 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.3-bz202689-exec-from-pthread-test.patch + +;; Testcase for exec() from threaded program (BZ 202689). +;;=fedoratest + +2007-01-17 Jan Kratochvil + + * gdb.threads/threaded-exec.exp, gdb.threads/threaded-exec.c: New files. + +diff --git a/gdb/testsuite/gdb.threads/threaded-exec.c b/gdb/testsuite/gdb.threads/threaded-exec.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/threaded-exec.c +@@ -0,0 +1,46 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++ ++static void * ++threader (void *arg) ++{ ++ return NULL; ++} ++ ++int ++main (void) ++{ ++ pthread_t t1; ++ int i; ++ ++ i = pthread_create (&t1, NULL, threader, (void *) NULL); ++ assert (i == 0); ++ i = pthread_join (t1, NULL); ++ assert (i == 0); ++ ++ execl ("/bin/true", "/bin/true", NULL); ++ abort (); ++} +diff --git a/gdb/testsuite/gdb.threads/threaded-exec.exp b/gdb/testsuite/gdb.threads/threaded-exec.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/threaded-exec.exp +@@ -0,0 +1,41 @@ ++# threaded-exec.exp -- Check reset of the tracked threads on exec*(2) ++# Copyright (C) 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Please email any bugs, comments, and/or additions to this file to: ++# bug-gdb@prep.ai.mit.edu ++ ++set testfile threaded-exec ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable []] != "" } { ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++ ++gdb_load ${binfile} ++ ++gdb_run_cmd ++ ++gdb_test_multiple {} "Program exited" { ++ -re "\r\n\\\[Inferior .* exited normally\\\]\r\n$gdb_prompt $" { ++ pass "Program exited" ++ } ++} diff --git a/gdb-6.3-gstack-20050411.patch b/gdb-6.3-gstack-20050411.patch new file mode 100644 index 0000000..6f6ecfb --- /dev/null +++ b/gdb-6.3-gstack-20050411.patch @@ -0,0 +1,258 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Andrew Cagney +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.3-gstack-20050411.patch + +;; Add a wrapper script to GDB that implements pstack using the +;; --readnever option. +;;=push + +2004-11-23 Andrew Cagney + + * Makefile.in (uninstall-gstack, install-gstack): New rules, add + to install and uninstall. + * gstack.sh, gstack.1: New files. + +diff --git a/gdb/Makefile.in b/gdb/Makefile.in +--- a/gdb/Makefile.in ++++ b/gdb/Makefile.in +@@ -1767,7 +1767,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force + install: all + @$(MAKE) $(FLAGS_TO_PASS) install-only + +-install-only: $(CONFIG_INSTALL) ++install-only: install-gstack $(CONFIG_INSTALL) + transformed_name=`t='$(program_transform_name)'; \ + echo gdb | sed -e "$$t"` ; \ + if test "x$$transformed_name" = x; then \ +@@ -1816,7 +1816,25 @@ install-guile: + install-python: + $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb + +-uninstall: force $(CONFIG_UNINSTALL) ++GSTACK=gstack ++.PHONY: install-gstack ++install-gstack: ++ transformed_name=`t='$(program_transform_name)'; \ ++ echo $(GSTACK) | sed -e "$$t"` ; \ ++ if test "x$$transformed_name" = x; then \ ++ transformed_name=$(GSTACK) ; \ ++ else \ ++ true ; \ ++ fi ; \ ++ $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ ++ $(INSTALL_PROGRAM) $(srcdir)/$(GSTACK).sh \ ++ $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ ++ : $(SHELL) $(srcdir)/../mkinstalldirs \ ++ $(DESTDIR)$(man1dir) ; \ ++ : $(INSTALL_DATA) $(srcdir)/gstack.1 \ ++ $(DESTDIR)$(man1dir)/$$transformed_name.1 ++ ++uninstall: force uninstall-gstack $(CONFIG_UNINSTALL) + transformed_name=`t='$(program_transform_name)'; \ + echo gdb | sed -e $$t` ; \ + if test "x$$transformed_name" = x; then \ +@@ -1847,6 +1865,18 @@ uninstall: force $(CONFIG_UNINSTALL) + rm -f $(DESTDIR)$(bindir)/$$transformed_name + @$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do + ++.PHONY: uninstall-gstack ++uninstall-gstack: ++ transformed_name=`t='$(program_transform_name)'; \ ++ echo $(GSTACK) | sed -e $$t` ; \ ++ if test "x$$transformed_name" = x; then \ ++ transformed_name=$(GSTACK) ; \ ++ 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 +diff --git a/gdb/gstack.sh b/gdb/gstack.sh +new file mode 100644 +--- /dev/null ++++ b/gdb/gstack.sh +@@ -0,0 +1,43 @@ ++#!/bin/sh ++ ++if test $# -ne 1; then ++ echo "Usage: `basename $0 .sh` " 1>&2 ++ exit 1 ++fi ++ ++if test ! -r /proc/$1; then ++ echo "Process $1 not found." 1>&2 ++ exit 1 ++fi ++ ++# GDB doesn't allow "thread apply all bt" when the process isn't ++# threaded; need to peek at the process to determine if that or the ++# simpler "bt" should be used. ++ ++backtrace="bt" ++if test -d /proc/$1/task ; then ++ # Newer kernel; has a task/ directory. ++ if test `/bin/ls /proc/$1/task | /usr/bin/wc -l` -gt 1 2>/dev/null ; then ++ backtrace="thread apply all bt" ++ fi ++elif test -f /proc/$1/maps ; then ++ # Older kernel; go by it loading libpthread. ++ if /bin/grep -e libpthread /proc/$1/maps > /dev/null 2>&1 ; then ++ backtrace="thread apply all bt" ++ fi ++fi ++ ++GDB=${GDB:-gdb} ++ ++# Run GDB, strip out unwanted noise. ++# --readnever is no longer used since .gdb_index is now in use. ++$GDB --quiet -nx $GDBARGS /proc/$1/exe $1 <&1 | ++set width 0 ++set height 0 ++set pagination no ++$backtrace ++EOF ++/bin/sed -n \ ++ -e 's/^\((gdb) \)*//' \ ++ -e '/^#/p' \ ++ -e '/^Thread/p' +diff --git a/gdb/testsuite/gdb.base/gstack.c b/gdb/testsuite/gdb.base/gstack.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gstack.c +@@ -0,0 +1,43 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2005, 2007, 2008, 2009 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++#include ++#include ++#include ++ ++void ++func (void) ++{ ++ const char msg[] = "looping\n"; ++ ++ /* Use the most simple notification not to get caught by attach on exiting ++ the function. */ ++ write (1, msg, strlen (msg)); ++ ++ for (;;); ++} ++ ++int ++main (void) ++{ ++ alarm (60); ++ nice (100); ++ ++ func (); ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/gstack.exp b/gdb/testsuite/gdb.base/gstack.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gstack.exp +@@ -0,0 +1,84 @@ ++# Copyright (C) 2012 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++set testfile gstack ++set executable ${testfile} ++set binfile [standard_output_file $executable] ++if {[build_executable ${testfile} ${executable} "" {debug}] == -1} { ++ return -1 ++} ++ ++set test "spawn inferior" ++set command "${binfile}" ++set res [remote_spawn host $command]; ++if { $res < 0 || $res == "" } { ++ perror "Spawning $command failed." ++ fail $test ++ return ++} ++ ++# The spawn id of the test inferior. ++set test_spawn_id $res ++ ++set use_gdb_stub 1 ++set pid [exp_pid -i $res] ++gdb_expect { ++ -re "looping\r\n" { ++ pass $test ++ } ++ eof { ++ fail "$test (eof)" ++ return ++ } ++ timeout { ++ fail "$test (timeout)" ++ return ++ } ++} ++ ++# Testcase uses the most simple notification not to get caught by attach on ++# exiting the function. Still we could retry the gstack command if we fail. ++ ++set test "spawn gstack" ++set command "sh -c GDB=$GDB\\ GDBARGS=-data-directory\\\\\\ $BUILD_DATA_DIRECTORY\\ sh\\ ${srcdir}/../gstack.sh\\ $pid\\;echo\\ GSTACK-END" ++set res [remote_spawn host $command]; ++if { $res < 0 || $res == "" } { ++ perror "Spawning $command failed." ++ fail $test ++} ++ ++set gdb_spawn_id $res ++ ++gdb_test_multiple "" $test { ++ -re "^#0 +(0x\[0-9a-f\]+ in )?\\.?func \\(\\) at \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in \\.?main \\(\\) at \[^\r\n\]*\r\nGSTACK-END\r\n\$" { ++ pass $test ++ } ++} ++ ++gdb_test_multiple "" "gstack exits" { ++ eof { ++ set result [wait -i $gdb_spawn_id] ++ verbose $result ++ ++ gdb_assert { [lindex $result 2] == 0 } "gstack exits with no error" ++ gdb_assert { [lindex $result 3] == 0 } "gstack's exit status is 0" ++ ++ remote_close host ++ clear_gdb_spawn_id ++ } ++} ++ ++# Kill the test inferior. ++kill_wait_spawned_process $test_spawn_id diff --git a/gdb-6.3-mapping-zero-inode-test.patch b/gdb-6.3-mapping-zero-inode-test.patch new file mode 100644 index 0000000..32b62d5 --- /dev/null +++ b/gdb-6.3-mapping-zero-inode-test.patch @@ -0,0 +1,247 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.3-mapping-zero-inode-test.patch + +;; Test GCORE for shmid 0 shared memory mappings. +;;=fedoratest: But it is broken anyway, sometimes the case being tested is not reproducible. + +diff --git a/gdb/testsuite/gdb.base/gcore-shmid0.c b/gdb/testsuite/gdb.base/gcore-shmid0.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcore-shmid0.c +@@ -0,0 +1,128 @@ ++/* Copyright 2007, 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 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., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* ++ * Test GDB's handling of gcore for mapping with a name but zero inode. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* The same test running in a parallel testsuite may steal us the zero SID, ++ even if we never get any EEXIST. Just try a while. */ ++ ++#define TIMEOUT_SEC 10 ++ ++static volatile int v; ++ ++static void ++initialized (void) ++{ ++ v++; ++} ++ ++static void ++unresolved (void) ++{ ++ v++; ++} ++ ++int ++main (void) ++{ ++ int sid; ++ unsigned int *addr = (void *) -1L; ++ int attempt, round = 0; ++ time_t ts_start, ts; ++ ++ if (time (&ts_start) == (time_t) -1) ++ { ++ printf ("time (): %m\n"); ++ exit (1); ++ } ++ ++ /* The generated SID will cycle with an increment of 32768, attempt until it ++ * wraps to 0. */ ++ ++ for (attempt = 0; addr == (void *) -1L; attempt++) ++ { ++ /* kernel-2.6.25-8.fc9.x86_64 just never returns the value 0 by ++ shmget(2). shmget returns SID range 0..1<<31 in steps of 32768, ++ 0x1000 should be enough but wrap the range it to be sure. */ ++ ++ if (attempt > 0x21000) ++ { ++ if (time (&ts) == (time_t) -1) ++ { ++ printf ("time (): %m\n"); ++ exit (1); ++ } ++ ++ if (ts >= ts_start && ts < ts_start + TIMEOUT_SEC) ++ { ++ attempt = 0; ++ round++; ++ continue; ++ } ++ ++ printf ("Problem is not reproducible on this kernel (attempt %d, " ++ "round %d)\n", attempt, round); ++ unresolved (); ++ exit (1); ++ } ++ ++ sid = shmget ((key_t) rand (), 0x1000, IPC_CREAT | IPC_EXCL | 0777); ++ if (sid == -1) ++ { ++ if (errno == EEXIST) ++ continue; ++ ++ printf ("shmget (%d, 0x1000, IPC_CREAT): errno %d\n", 0, errno); ++ exit (1); ++ } ++ ++ /* Use SID only if it is 0, retry it otherwise. */ ++ ++ if (sid == 0) ++ { ++ addr = shmat (sid, NULL, SHM_RND); ++ if (addr == (void *) -1L) ++ { ++ printf ("shmat (%d, NULL, SHM_RND): errno %d\n", sid, ++ errno); ++ exit (1); ++ } ++ } ++ if (shmctl (sid, IPC_RMID, NULL) != 0) ++ { ++ printf ("shmctl (%d, IPC_RMID, NULL): errno %d\n", sid, errno); ++ exit (1); ++ } ++ } ++ ++ initialized (); ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/gcore-shmid0.exp b/gdb/testsuite/gdb.base/gcore-shmid0.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcore-shmid0.exp +@@ -0,0 +1,101 @@ ++# Copyright 2007, 2009 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Test GDB's handling of gcore for mapping with a name but zero inode. ++ ++if { [prepare_for_testing gcore-shmid0.exp gcore-shmid0] } { ++ return -1 ++} ++ ++# Does this gdb support gcore? ++set test "help gcore" ++gdb_test_multiple $test $test { ++ -re "Undefined command: .gcore.*$gdb_prompt $" { ++ # gcore command not supported -- nothing to test here. ++ unsupported "gdb does not support gcore on this target" ++ return -1; ++ } ++ -re "Save a core file .*$gdb_prompt $" { ++ pass $test ++ } ++} ++ ++if { ! [ runto_main ] } then { ++ untested gcore-shmid0.exp ++ return -1 ++} ++ ++gdb_breakpoint "initialized" ++gdb_breakpoint "unresolved" ++ ++set oldtimeout $timeout ++set timeout [expr $oldtimeout + 120] ++ ++set test "Continue to initialized." ++gdb_test_multiple "continue" $test { ++ -re "Breakpoint .*, initialized .* at .*\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "Breakpoint .*, unresolved .* at .*\r\n$gdb_prompt $" { ++ set timeout $oldtimeout ++ unsupported $test ++ return -1 ++ } ++} ++set timeout $oldtimeout ++ ++set escapedfilename [string_to_regexp [standard_output_file gcore-shmid0.test]] ++ ++set test "save a corefile" ++gdb_test_multiple "gcore [standard_output_file gcore-shmid0.test]" $test { ++ -re "Saved corefile ${escapedfilename}\[\r\n\]+$gdb_prompt $" { ++ pass $test ++ } ++ -re "Can't create a corefile\[\r\n\]+$gdb_prompt $" { ++ unsupported $test ++ } ++} ++ ++# Be sure to remove the handle first. ++# But it would get removed even on a kill by GDB as the handle is already ++# deleted, just it is still attached. ++gdb_continue_to_end "finish" ++ ++set test "core-file command" ++gdb_test_multiple "core-file [standard_output_file gcore-shmid0.test]" $test { ++ -re ".* program is being debugged already.*y or n. $" { ++ # gdb_load may connect us to a gdbserver. ++ send_gdb "y\n" ++ exp_continue; ++ } ++ -re "Core was generated by .*\r\n\#0 .*\\\(\\\).*\r\n$gdb_prompt $" { ++ # The filename does not fit there anyway so do not check it. ++ pass $test ++ } ++ -re ".*registers from core file: File in wrong format.* $" { ++ fail "core-file command (could not read registers from core file)" ++ } ++} ++ ++set test "backtrace" ++gdb_test_multiple "bt" $test { ++ -re "#0 *initialized \\\(\\\) at .*#1 .* main \\\(.*$gdb_prompt $" { ++ pass $test ++ } ++ -re "#0 *initialized \\\(\\\) at .*Cannot access memory at address .*$gdb_prompt $" { ++ fail $test ++ } ++} diff --git a/gdb-6.3-rh-testversion-20041202.patch b/gdb-6.3-rh-testversion-20041202.patch new file mode 100644 index 0000000..b8c7940 --- /dev/null +++ b/gdb-6.3-rh-testversion-20041202.patch @@ -0,0 +1,38 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Elena Zannoni +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.3-rh-testversion-20041202.patch + +;; Match the Fedora's version info. +;;=fedora + +2003-02-24 Elena Zannoni + + * gdb.gdb/selftest.exp: Add matching on specific Red Hat only version + string. + +diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp +--- a/gdb/testsuite/gdb.gdb/selftest.exp ++++ b/gdb/testsuite/gdb.gdb/selftest.exp +@@ -53,6 +53,9 @@ proc test_with_self { } { + -re ".\[0-9\]+ = +.+ +0x.*\[0-9.\]+.*$gdb_prompt $" { + pass "printed version with cast" + } ++ -re ".\[0-9\]+ = .(Fedora Linux|Red Hat Enterprise Linux) \[\\(\\)0-9.a-z\\-\]+.*$gdb_prompt $" { ++ pass "printed version Fedora or Red Hat Enterprise Linux only" ++ } + } + + # start the "xgdb" process +diff --git a/gdb/top.c b/gdb/top.c +--- a/gdb/top.c ++++ b/gdb/top.c +@@ -2234,7 +2234,7 @@ init_gdb_version_vars (void) + struct internalvar *major_version_var = create_internalvar ("_gdb_major"); + struct internalvar *minor_version_var = create_internalvar ("_gdb_minor"); + int vmajor = 0, vminor = 0, vrevision = 0; +- sscanf (version, "%d.%d.%d", &vmajor, &vminor, &vrevision); ++ sscanf (version, "%*[^0123456789]%d.%d.%d", &vmajor, &vminor, &vrevision); + set_internalvar_integer (major_version_var, vmajor); + set_internalvar_integer (minor_version_var, vminor + (vrevision > 0)); + } diff --git a/gdb-6.5-BEA-testsuite.patch b/gdb-6.5-BEA-testsuite.patch new file mode 100644 index 0000000..a15cec2 --- /dev/null +++ b/gdb-6.5-BEA-testsuite.patch @@ -0,0 +1,938 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-BEA-testsuite.patch + +;; Improved testsuite results by the testsuite provided by the courtesy of BEA. +;;=fedoratest: For upstream it should be rewritten as a dejagnu test, the test of no "??" was useful. + +diff --git a/gdb/testsuite/gdb.threads/threadcrash.c b/gdb/testsuite/gdb.threads/threadcrash.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/threadcrash.c +@@ -0,0 +1,301 @@ ++/* ++ * The point of this program is to crash in a multi-threaded app. ++ * There are seven threads, doing the following things: ++ * * Spinning ++ * * Spinning inside a signal handler ++ * * Spinning inside a signal handler executing on the altstack ++ * * In a syscall ++ * * In a syscall inside a signal handler ++ * * In a syscall inside a signal handler executing on the altstack ++ * * Finally, the main thread crashes in main, with no frills. ++ * ++ * These are the things threads in JRockit tend to be doing. If gdb ++ * can handle those things, both in core files and during live ++ * debugging, that will help (at least) JRockit development. ++ * ++ * Let the program create a core file, then load the core file into ++ * gdb. Inside gdb, you should be able to do something like this: ++ * ++ * (gdb) t a a bt ++ * ++ * Thread 7 (process 4352): ++ * #0 0x001ba7dc in __nanosleep_nocancel () from /lib/tls/libc.so.6 ++ * #1 0x001ba5ff in sleep () from /lib/tls/libc.so.6 ++ * #2 0x080488a2 in makeSyscall (ignored=0x0) at threadcrash.c:118 ++ * #3 0x006aadec in start_thread () from /lib/tls/libpthread.so.0 ++ * #4 0x001ed19a in clone () from /lib/tls/libc.so.6 ++ * ++ * Thread 6 (process 4353): ++ * #0 0x001ba7dc in __nanosleep_nocancel () from /lib/tls/libc.so.6 ++ * #1 0x001ba5ff in sleep () from /lib/tls/libc.so.6 ++ * #2 0x0804898f in syscallingSighandler (signo=10, info=0xb6be76f0, context=0xb6be7770) ++ * at threadcrash.c:168 ++ * #3 ++ * #4 0x006adf5e in pthread_kill () from /lib/tls/libpthread.so.0 ++ * #5 0x08048a51 in makeSyscallFromSighandler (ignored=0x0) at threadcrash.c:204 ++ * #6 0x006aadec in start_thread () from /lib/tls/libpthread.so.0 ++ * #7 0x001ed19a in clone () from /lib/tls/libc.so.6 ++ * ++ * Thread 5 (process 4354): ++ * #0 0x001ba7dc in __nanosleep_nocancel () from /lib/tls/libc.so.6 ++ * #1 0x001ba5ff in sleep () from /lib/tls/libc.so.6 ++ * #2 0x08048936 in syscallingAltSighandler (signo=3, info=0x959cd70, context=0x959cdf0) ++ * at threadcrash.c:144 ++ * #3 ++ * #4 0x006adf5e in pthread_kill () from /lib/tls/libpthread.so.0 ++ * #5 0x080489e2 in makeSyscallFromAltSighandler (ignored=0x0) at threadcrash.c:190 ++ * #6 0x006aadec in start_thread () from /lib/tls/libpthread.so.0 ++ * #7 0x001ed19a in clone () from /lib/tls/libc.so.6 ++ * ++ * Thread 4 (process 4355): ++ * #0 spin (ignored=0x0) at threadcrash.c:242 ++ * #1 0x006aadec in start_thread () from /lib/tls/libpthread.so.0 ++ * #2 0x001ed19a in clone () from /lib/tls/libc.so.6 ++ * ++ * Thread 3 (process 4356): ++ * #0 spinningSighandler (signo=12, info=0xb4de46f0, context=0xb4de4770) at threadcrash.c:180 ++ * #1 ++ * #2 0x006adf5e in pthread_kill () from /lib/tls/libpthread.so.0 ++ * #3 0x08048b2f in spinFromSighandler (ignored=0x0) at threadcrash.c:232 ++ * #4 0x006aadec in start_thread () from /lib/tls/libpthread.so.0 ++ * #5 0x001ed19a in clone () from /lib/tls/libc.so.6 ++ * ++ * Thread 2 (process 4357): ++ * #0 spinningAltSighandler (signo=14, info=0x959ee50, context=0x959eed0) at threadcrash.c:156 ++ * #1 ++ * #2 0x006adf5e in pthread_kill () from /lib/tls/libpthread.so.0 ++ * #3 0x08048ac0 in spinFromAltSighandler (ignored=0x0) at threadcrash.c:218 ++ * #4 0x006aadec in start_thread () from /lib/tls/libpthread.so.0 ++ * #5 0x001ed19a in clone () from /lib/tls/libc.so.6 ++ * ++ * Thread 1 (process 4351): ++ * #0 0x08048cf3 in main (argc=1, argv=0xbfff9d74) at threadcrash.c:273 ++ * (gdb) ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define SIGSYSCALL_ALT SIGQUIT ++#define SIGSYSCALL SIGUSR1 ++#define SIGSPIN_ALT SIGALRM ++#define SIGSPIN SIGUSR2 ++ ++typedef void (*sigaction_t)(int, siginfo_t *, void *); ++ ++static void installHandler(int signo, sigaction_t handler, int onAltstack) { ++ struct sigaction action; ++ sigset_t sigset; ++ int result; ++ stack_t altstack; ++ stack_t oldaltstack; ++ ++ memset(&action, 0, sizeof(action)); ++ memset(&altstack, 0, sizeof(altstack)); ++ memset(&oldaltstack, 0, sizeof(oldaltstack)); ++ ++ if (onAltstack) { ++ altstack.ss_sp = malloc(SIGSTKSZ); ++ assert(altstack.ss_sp != NULL); ++ altstack.ss_size = SIGSTKSZ; ++ altstack.ss_flags = 0; ++ result = sigaltstack(&altstack, &oldaltstack); ++ assert(result == 0); ++ assert(oldaltstack.ss_flags == SS_DISABLE); ++ } ++ ++ sigemptyset(&sigset); ++ ++ action.sa_handler = NULL; ++ action.sa_sigaction = handler; ++ action.sa_mask = sigset; ++ action.sa_flags = SA_SIGINFO; ++ if (onAltstack) { ++ action.sa_flags |= SA_ONSTACK; ++ } ++ ++ result = sigaction(signo, &action, NULL); ++ assert(result == 0); ++} ++ ++static void installNormalHandler(int signo, sigaction_t handler) { ++ installHandler(signo, handler, 0); ++} ++ ++static void installAlthandler(int signo, sigaction_t handler) { ++ installHandler(signo, handler, 1); ++} ++ ++static void *makeSyscall(void *ignored) { ++ (void)ignored; ++ ++ sleep(42); ++ ++ fprintf(stderr, "%s: returning\n", __FUNCTION__); ++ return NULL; ++} ++ ++/* Return true if we're currently executing on the altstack */ ++static int onAltstack(void) { ++ stack_t stack; ++ int result; ++ ++ result = sigaltstack(NULL, &stack); ++ assert(result == 0); ++ ++ return stack.ss_flags & SS_ONSTACK; ++} ++ ++static void syscallingAltSighandler(int signo, siginfo_t *info, void *context) { ++ (void)signo; ++ (void)info; ++ (void)context; ++ ++ if (!onAltstack()) { ++ printf("%s() not running on altstack!\n", __FUNCTION__); ++ } ++ ++ sleep(42); ++} ++ ++static void spinningAltSighandler(int signo, siginfo_t *info, void *context) { ++ (void)signo; ++ (void)info; ++ (void)context; ++ ++ if (!onAltstack()) { ++ printf("%s() not running on altstack!\n", __FUNCTION__); ++ } ++ ++ while (1); ++} ++ ++static void syscallingSighandler(int signo, siginfo_t *info, void *context) { ++ (void)signo; ++ (void)info; ++ (void)context; ++ ++ if (onAltstack()) { ++ printf("%s() running on altstack!\n", __FUNCTION__); ++ } ++ ++ sleep(42); ++} ++ ++static void spinningSighandler(int signo, siginfo_t *info, void *context) { ++ (void)signo; ++ (void)info; ++ (void)context; ++ ++ if (onAltstack()) { ++ printf("%s() running on altstack!\n", __FUNCTION__); ++ } ++ ++ while (1); ++} ++ ++static void *makeSyscallFromAltSighandler(void *ignored) { ++ (void)ignored; ++ ++ int result; ++ ++ installAlthandler(SIGSYSCALL_ALT, syscallingAltSighandler); ++ ++ result = pthread_kill(pthread_self(), SIGSYSCALL_ALT); ++ assert(result == 0); ++ ++ fprintf(stderr, "%s: returning\n", __FUNCTION__); ++ return NULL; ++} ++ ++static void *makeSyscallFromSighandler(void *ignored) { ++ (void)ignored; ++ ++ int result; ++ ++ installNormalHandler(SIGSYSCALL, syscallingSighandler); ++ ++ result = pthread_kill(pthread_self(), SIGSYSCALL); ++ assert(result == 0); ++ ++ fprintf(stderr, "%s: returning\n", __FUNCTION__); ++ return NULL; ++} ++ ++static void *spinFromAltSighandler(void *ignored) { ++ (void)ignored; ++ ++ int result; ++ ++ installAlthandler(SIGSPIN_ALT, spinningAltSighandler); ++ ++ result = pthread_kill(pthread_self(), SIGSPIN_ALT); ++ assert(result == 0); ++ ++ fprintf(stderr, "%s: returning\n", __FUNCTION__); ++ return NULL; ++} ++ ++static void *spinFromSighandler(void *ignored) { ++ (void)ignored; ++ ++ int result; ++ ++ installNormalHandler(SIGSPIN, spinningSighandler); ++ ++ result = pthread_kill(pthread_self(), SIGSPIN); ++ assert(result == 0); ++ ++ fprintf(stderr, "%s: returning\n", __FUNCTION__); ++ return NULL; ++} ++ ++static void *spin(void *ignored) { ++ (void)ignored; ++ ++ while (1); ++ ++ fprintf(stderr, "%s: returning\n", __FUNCTION__); ++ return NULL; ++} ++ ++int main(int argc, char *argv[]) { ++ int result; ++ pthread_t thread; ++ volatile int bad; ++ ++ result = pthread_create(&thread, NULL, makeSyscall, NULL); ++ assert(result == 0); ++ result = pthread_create(&thread, NULL, makeSyscallFromSighandler, NULL); ++ assert(result == 0); ++ result = pthread_create(&thread, NULL, makeSyscallFromAltSighandler, NULL); ++ assert(result == 0); ++ result = pthread_create(&thread, NULL, spin, NULL); ++ assert(result == 0); ++ result = pthread_create(&thread, NULL, spinFromSighandler, NULL); ++ assert(result == 0); ++ result = pthread_create(&thread, NULL, spinFromAltSighandler, NULL); ++ assert(result == 0); ++ ++ // Give threads some time to get going ++ sleep(3); ++ ++ // Crash ++ bad = *(int*)7; ++ ++ /* Workaround: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29628 ++ Simulate use to ensure `DW_AT_location' for them: ++ readelf -a --debug threadcrash|grep -A5 -w argc ++ --> DW_AT_location : 2 byte block: 71 0 (DW_OP_breg1: 0) ++ This case verified on: gcc-4.1.1-30.i386 ++ Keep it late to ensure persistency in the registers. */ ++ bad = (int) argc; ++ bad = (unsigned long) argv; ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.threads/threadcrash.exp b/gdb/testsuite/gdb.threads/threadcrash.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/threadcrash.exp +@@ -0,0 +1,37 @@ ++# threadcrash.exp - The point of this program is to crash in a multi-threaded app. ++ ++ ++set testfile threadcrash ++set srcfile ${testfile}.c ++set shellfile ${srcdir}/${subdir}/${testfile}.sh ++set binfile [standard_output_file ${testfile}] ++ ++set GDB_abs ${GDB} ++if [regexp "^\[^/\]" ${GDB_abs}] { ++ set GDB_abs $env(PWD)/${GDB_abs} ++} ++ ++if [istarget "*-*-linux"] then { ++ set target_cflags "-D_MIT_POSIX_THREADS" ++} else { ++ set target_cflags "" ++} ++ ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ return -1 ++} ++ ++# ${shellfile} argument must not contain any directories. ++set fd [open "|bash ${shellfile} ${binfile} $GDB $INTERNAL_GDBFLAGS $GDBFLAGS [host_info gdb_opts]" r] ++while { [gets $fd line] >= 0 } { ++ if [regexp " PASS: (.*)$" $line trash message] { ++ pass $message ++ } elseif [regexp " FAIL: (.*)$" $line trash message] { ++ fail $message ++ } ++} ++catch { ++ close $fd ++} ++ ++return 0 +diff --git a/gdb/testsuite/gdb.threads/threadcrash.sh b/gdb/testsuite/gdb.threads/threadcrash.sh +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/threadcrash.sh +@@ -0,0 +1,324 @@ ++#! /bin/bash ++ ++# NOTE: threadcrash.c *must* be built with debugging symbols ++# ++# The point of this shell script is to crash treadcrash.c, load the ++# resulting core file into gdb and verify that gdb can extract enough ++# information from the core file. ++# ++# The return code from this script is the number of failed tests. ++ ++LOG=gdbresult.log ++ ++if [ $# = 0 ] ; then ++ echo >&2 Syntax: $0 \ [\ \] ++ exit 1 ++fi ++RUNME="$1" ++shift ++GDB="${*:-gdb}" ++ ++ ++pf_prefix="" ++function pf_prefix() { ++ pf_prefix="$*" ++} ++ ++set_test="" ++function set_test() { ++ if [ -n "$set_test" ] ; then ++ echo >&2 "DEJAGNU-BASH ERROR: set_test already set" ++ exit 1 ++ fi ++ set_test="$*" ++ if [ -n "$pf_prefix" ] ; then ++ set_test="$pf_prefix: $set_test" ++ fi ++} ++ ++# INTERNAL ++function record_test { ++ if [ -z "$set_test" ] ; then ++ echo >&2 "DEJAGNU-BASH ERROR: set_test not set" ++ exit 1 ++ fi ++ # Provide the leading whitespace delimiter: ++ echo " $1: $set_test" ++ set_test="" ++} ++ ++function pass() { ++ record_test PASS ++} ++function fail() { ++ record_test FAIL ++} ++ ++ ++# Verify that the gdb output doesn't contain $1. ++function mustNotHave() { ++ local BADWORD=$1 ++ set_test gdb output contains "$BADWORD" ++ if grep -q "$BADWORD" $LOG ; then ++ fail ++ return 1 ++ fi ++ pass ++ return 0 ++} ++ ++# Verify that the gdb output contains exactly $1 $2s. ++function mustHaveCorrectAmount() { ++ local WANTEDNUMBER=$1 ++ local GOODWORD=$2 ++ local ACTUALNUMBER=$(grep "$GOODWORD" $LOG | wc -l) ++ set_test gdb output contained $ACTUALNUMBER \""$GOODWORD"\", not $WANTEDNUMBER as expected ++ if [ $ACTUALNUMBER != $WANTEDNUMBER ] ; then ++ fail ++ return 1 ++ fi ++ pass ++ return 0 ++} ++ ++# Verify that the gdb output contains seven threads ++function mustHaveSevenThreads() { ++ NTHREADS=$(egrep "^Thread [1-7] \(" $LOG | wc -l) ++ set_test gdb output contains $NTHREADS threads, not 7 as expected ++ if [ $NTHREADS != 7 ] ; then ++ fail ++ return 1 ++ fi ++ pass ++ return 0 ++} ++ ++# Verify that the gdb output has all parameters on consecutive lines ++function mustHaveSequence() { ++ SEQUENCE="$*" ++ NPARTS=$# ++ grep "$1" -A$((NPARTS - 1)) $LOG > matches.log ++ ++ while [ $# -gt 1 ] ; do ++ shift ++ ((NPARTS--)) ++ grep "$1" -A$((NPARTS - 1)) matches.log > temp.log ++ mv temp.log matches.log ++ done ++ LASTPART=$1 ++ ++ set_test gdb output does not contain the sequence: $SEQUENCE ++ if ! grep -q "$LASTPART" matches.log ; then ++ fail ++ return 1 ++ fi ++ pass ++ return 0 ++} ++ ++# Verify that $LOG contains all information we want ++function verifyLog() { ++ local FAILURES=0 ++ ++ mustNotHave '??' || ((FAILURES++)) ++ mustHaveCorrectAmount 11 threadcrash.c: || ((FAILURES++)) ++ ++ mustHaveSevenThreads || ((FAILURES++)) ++ mustHaveSequence sleep "makeSyscall (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence sleep "syscallingSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "makeSyscallFromSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence sleep "syscallingAltSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "makeSyscallFromAltSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence Thread "spin (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence "spinningSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "spinFromSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence "spinningAltSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "spinFromAltSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence Thread "main (argc=1, argv=" || ((FAILURES++)) ++ ++ return $FAILURES ++} ++ ++# Put result of debugging a core file in $LOG ++function getLogFromCore() { ++ # Make sure we get a core file ++ set_test Make sure we get a core file ++ if ! ulimit -c unlimited ; then ++ fail ++ exit 1 ++ fi ++ pass ++ ++ # Run the crasher ++ ./$(basename "$RUNME") ++ EXITCODE=$? ++ ++ # Verify that we actually crashed ++ set_test $RUNME should have been killed by a signal, got non-signal exit code $EXITCODE ++ if [ $EXITCODE -lt 128 ] ; then ++ fail ++ exit 1 ++ fi ++ pass ++ ++ # Verify that we got a core file ++ set_test $RUNME did not create a core file ++ if [ ! -r core* ] ; then ++ fail ++ exit 1 ++ fi ++ pass ++ ++ # Run gdb ++ cat > gdbscript.gdb < $LOG ++ EXITCODE=$? ++ ++ set_test gdb exited with error code ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >&2 gdb exited with error code $EXITCODE ++ fail ++ fi ++ pass ++} ++ ++# Put result of debugging a gcore file in $LOG ++function getLogFromGcore() { ++ # Create the core file ++ rm -f core* ++ cat > gdbscript.gdb < /dev/null ++ EXITCODE=$? ++ ++ set_test gdb exited with error code when creating gcore file ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >&2 gdb exited with error code $EXITCODE when creating gcore file ++ fail ++ fi ++ pass ++ ++ # Verify that we got a core file from gcore ++ set_test gdb gcore did not create a core file ++ if [ ! -r core* ] ; then ++ fail ++ exit 1 ++ fi ++ pass ++ ++ # Run gdb on the gcore file ++ cat > gdbscript.gdb < $LOG ++ EXITCODE=$? ++ ++ set_test gdb exited with error code when examining gcore file ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >&2 gdb exited with error code $EXITCODE when examining gcore file ++ fail ++ fi ++ pass ++} ++ ++# Put result of debugging a core file in $LOG ++function getLogFromLiveProcess() { ++ # Run gdb ++ cat > gdbscript.gdb < $LOG ++ EXITCODE=$? ++ ++ set_test gdb exited with error code ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >&2 gdb exited with error code $EXITCODE ++ fail ++ fi ++ pass ++} ++ ++####### Main program follows ##################### ++ ++# Make sure we don't clobber anybody else's (core) file(s) ++WORKDIR=/tmp/$PPID ++mkdir -p $WORKDIR ++cp "$RUNME" $WORKDIR ++cd $WORKDIR ++ ++# Count problems ++FAILURES=0 ++ ++echo === Testing gdb vs core file... ++pf_prefix core file ++getLogFromCore ++verifyLog ++((FAILURES+=$?)) ++pf_prefix ++echo === Core file tests done. ++ ++echo ++ ++echo === Testing gdb vs gcore file... ++pf_prefix gcore file ++getLogFromGcore ++verifyLog ++((FAILURES+=$?)) ++pf_prefix ++echo === Gcore file tests done. ++ ++echo ++ ++echo === Testing gdb vs live process... ++pf_prefix live process ++getLogFromLiveProcess ++verifyLog ++((FAILURES+=$?)) ++pf_prefix ++echo === Live process tests done. ++ ++# Executive summary ++echo ++if [ $FAILURES == 0 ] ; then ++ echo All tests passed! ++else ++ echo $FAILURES tests failed! ++ echo ++ echo Make sure the threadcrash binary contains debugging information \(build with \"gcc -g\"\). ++fi ++ ++# Clean up ++cd / ++rm -rf $WORKDIR ++ ++exit $FAILURES +diff --git a/gdb/testsuite/gdb.threads/threadcrash.sh-orig b/gdb/testsuite/gdb.threads/threadcrash.sh-orig +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/threadcrash.sh-orig +@@ -0,0 +1,248 @@ ++#! /bin/bash ++ ++# NOTE: threadcrash.c *must* be built with debugging symbols ++# ++# The point of this shell script is to crash treadcrash.c, load the ++# resulting core file into gdb and verify that gdb can extract enough ++# information from the core file. ++# ++# The return code from this script is the number of failed tests. ++ ++LOG=gdbresult.log ++ ++if [ $# != 1 ] ; then ++ echo > /dev/stderr Syntax: $0 \ ++ exit 1 ++fi ++RUNME="$1" ++ ++# Verify that the gdb output doesn't contain $1. ++function mustNotHave() { ++ local BADWORD=$1 ++ if grep -q "$BADWORD" $LOG ; then ++ echo >> /dev/stderr WARNING: gdb output contains "$BADWORD" ++ return 1 ++ fi ++ return 0 ++} ++ ++# Verify that the gdb output contains exactly $1 $2s. ++function mustHaveCorrectAmount() { ++ local WANTEDNUMBER=$1 ++ local GOODWORD=$2 ++ local ACTUALNUMBER=$(grep "$GOODWORD" $LOG | wc -l) ++ if [ $ACTUALNUMBER != $WANTEDNUMBER ] ; then ++ echo >> /dev/stderr WARNING: gdb output contained $ACTUALNUMBER \""$GOODWORD"\", not $WANTEDNUMBER as expected ++ return 1 ++ fi ++ return 0 ++} ++ ++# Verify that the gdb output contains seven threads ++function mustHaveSevenThreads() { ++ NTHREADS=$(egrep "^Thread [1-7] \(" $LOG | wc -l) ++ if [ $NTHREADS != 7 ] ; then ++ echo >> /dev/stderr WARNING: gdb output contains $NTHREADS threads, not 7 as expected ++ return 1 ++ fi ++ return 0 ++} ++ ++# Verify that the gdb output has all parameters on consecutive lines ++function mustHaveSequence() { ++ SEQUENCE="$*" ++ NPARTS=$# ++ grep "$1" -A$((NPARTS - 1)) $LOG > matches.log ++ ++ while [ $# -gt 1 ] ; do ++ shift ++ ((NPARTS--)) ++ grep "$1" -A$((NPARTS - 1)) matches.log > temp.log ++ mv temp.log matches.log ++ done ++ LASTPART=$1 ++ ++ if ! grep -q "$LASTPART" matches.log ; then ++ echo >> /dev/stderr WARNING: gdb output does not contain the sequence: $SEQUENCE ++ return 1 ++ fi ++ return 0 ++} ++ ++# Verify that $LOG contains all information we want ++function verifyLog() { ++ local FAILURES=0 ++ ++ mustNotHave '??' || ((FAILURES++)) ++ mustHaveCorrectAmount 12 threadcrash.c: || ((FAILURES++)) ++ ++ mustHaveSevenThreads || ((FAILURES++)) ++ mustHaveSequence sleep "makeSyscall (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence sleep "syscallingSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "makeSyscallFromSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence sleep "syscallingAltSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "makeSyscallFromAltSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence Thread "spin (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence "spinningSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "spinFromSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence "spinningAltSighandler (signo=" "signal handler called" 0x || ((FAILURES++)) ++ mustHaveSequence pthread_kill "spinFromAltSighandler (ignored=" || ((FAILURES++)) ++ ++ mustHaveSequence Thread "main (argc=1, argv=" || ((FAILURES++)) ++ ++ return $FAILURES ++} ++ ++# Put result of debugging a core file in $LOG ++function getLogFromCore() { ++ # Make sure we get a core file ++ ulimit -c unlimited || exit 1 ++ ++ # Run the crasher ++ ./$(basename "$RUNME") ++ EXITCODE=$? ++ ++ # Verify that we actually crashed ++ if [ $EXITCODE -lt 128 ] ; then ++ echo >> /dev/stderr ERROR: $RUNME should have been killed by a signal, got non-signal exit code $EXITCODE ++ exit 1 ++ fi ++ ++ # Verify that we got a core file ++ if [ ! -r core* ] ; then ++ echo >> /dev/stderr ERROR: $RUNME did not create a core file ++ exit 1 ++ fi ++ ++ # Run gdb ++ cat > gdbscript.gdb < $LOG ++ EXITCODE=$? ++ ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >> /dev/stderr WARNING: gdb exited with error code $EXITCODE ++ fi ++} ++ ++# Put result of debugging a gcore file in $LOG ++function getLogFromGcore() { ++ # Create the core file ++ rm -f core* ++ cat > gdbscript.gdb < /dev/null ++ EXITCODE=$? ++ ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >> /dev/stderr WARNING: gdb exited with error code $EXITCODE when creating gcore file ++ fi ++ ++ # Verify that we got a core file from gcore ++ if [ ! -r core* ] ; then ++ echo >> /dev/stderr ERROR: gdb gcore did not create a core file ++ exit 1 ++ fi ++ ++ # Run gdb on the gcore file ++ cat > gdbscript.gdb < $LOG ++ EXITCODE=$? ++ ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >> /dev/stderr WARNING: gdb exited with error code $EXITCODE when examining gcore file ++ fi ++} ++ ++# Put result of debugging a core file in $LOG ++function getLogFromLiveProcess() { ++ # Run gdb ++ cat > gdbscript.gdb < $LOG ++ EXITCODE=$? ++ ++ if [ $EXITCODE != 0 ] ; then ++ ((FAILURES++)) ++ echo >> /dev/stderr WARNING: gdb exited with error code $EXITCODE ++ fi ++} ++ ++####### Main program follows ##################### ++ ++# Make sure we don't clobber anybody else's (core) file(s) ++WORKDIR=/tmp/$PPID ++mkdir -p $WORKDIR ++cp "$RUNME" $WORKDIR ++cd $WORKDIR ++ ++# Count problems ++FAILURES=0 ++ ++echo === Testing gdb vs core file... ++getLogFromCore ++verifyLog ++((FAILURES+=$?)) ++echo === Core file tests done. ++ ++echo ++ ++echo === Testing gdb vs gcore file... ++getLogFromGcore ++verifyLog ++((FAILURES+=$?)) ++echo === Gcore file tests done. ++ ++echo ++ ++echo === Testing gdb vs live process... ++getLogFromLiveProcess ++verifyLog ++((FAILURES+=$?)) ++echo === Live process tests done. ++ ++# Executive summary ++echo ++if [ $FAILURES == 0 ] ; then ++ echo All tests passed! ++else ++ echo $FAILURES tests failed! ++ echo ++ echo Make sure the threadcrash binary contains debugging information \(build with \"gcc -g\"\). ++fi ++ ++# Clean up ++cd / ++rm -rf $WORKDIR ++ ++exit $FAILURES diff --git a/gdb-6.5-bz109921-DW_AT_decl_file-test.patch b/gdb-6.5-bz109921-DW_AT_decl_file-test.patch new file mode 100644 index 0000000..8d03e3f --- /dev/null +++ b/gdb-6.5-bz109921-DW_AT_decl_file-test.patch @@ -0,0 +1,134 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-bz109921-DW_AT_decl_file-test.patch + +;; Find symbols properly at their original (included) file (BZ 109921). +;;=fedoratest + +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 + +It is duplicite to its upstream variant: +http://sourceware.org/ml/gdb-cvs/2007-01/msg00157.html +http://sourceware.org/ml/gdb-patches/2007-01/msg00434.html +2007-01-21 Jan Kratochvil + Daniel Jacobowitz + + * gdb.base/included.c, gdb.base/included.exp, + gdb.base/included.h: New files. + +------------------------------------------------------------------------------ + +2007-01-09 Jan Kratochvil + + * gdb.dwarf2/dw2-included.exp, gdb.dwarf2/dw2-included.c, + gdb.dwarf2/dw2-included.h: New files. + +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-included.c b/gdb/testsuite/gdb.dwarf2/dw2-included.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-included.c +@@ -0,0 +1,26 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++ USA. */ ++ ++#include "dw2-included.h" ++ ++int ++main() ++{ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-included.exp b/gdb/testsuite/gdb.dwarf2/dw2-included.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-included.exp +@@ -0,0 +1,47 @@ ++# Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Minimal DWARF-2 unit test ++ ++# This test can only be run on targets which support DWARF-2. ++# For now pick a sampling of likely targets. ++if {![istarget *-*-linux*] ++ && ![istarget *-*-gnu*] ++ && ![istarget *-*-elf*] ++ && ![istarget *-*-openbsd*] ++ && ![istarget arm-*-eabi*] ++ && ![istarget powerpc-*-eabi*]} { ++ return 0 ++} ++ ++set testfile "dw2-included" ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++gdb_test "set listsize 1" "" ++gdb_test "list integer" "int integer;\r" ++gdb_test "ptype integer" "type = int\r" ++# Path varies depending on the build location. ++gdb_test "info variables integer" "\r\nFile \[^\r\n\]*/gdb.dwarf2/dw2-included.h:\r\n${decimal}:.*int integer;\r" +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-included.h b/gdb/testsuite/gdb.dwarf2/dw2-included.h +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-included.h +@@ -0,0 +1,20 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++ USA. */ ++ ++int integer; diff --git a/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch new file mode 100644 index 0000000..ac3aa17 --- /dev/null +++ b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch @@ -0,0 +1,264 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch + +;; Support TLS symbols (+`errno' suggestion if no pthread is found) (BZ 185337). +;;=push+jan: It should be replaced by Infinity project. + +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=185337 + +2008-02-24 Jan Kratochvil + + Port to GDB-6.8pre. + +currently for trivial nonthreaded helloworld with no debug info up to -ggdb2 you +will get: + (gdb) p errno + [some error] + +* with -ggdb2 and less "errno" in fact does not exist anywhere as it was + compiled to "(*__errno_location ())" and the macro definition is not present. + Unfortunately gdb will find the TLS symbol and it will try to access it but + as the program has been compiled without -lpthread the TLS base register + (%gs on i386) is not setup and it will result in: + Cannot access memory at address 0x8 + +Attached suggestion patch how to deal with the most common "errno" symbol +for the most common under-ggdb3 compiled programs. + +Original patch hooked into target_translate_tls_address. But its inferior +call invalidates `struct frame *' in the callers - RH BZ 690908. + +https://bugzilla.redhat.com/show_bug.cgi?id=1166549 + +2007-11-03 Jan Kratochvil + + * ./gdb/dwarf2read.c (read_partial_die, dwarf2_linkage_name): Prefer + DW_AT_MIPS_linkage_name over DW_AT_name now only for non-C. + +glibc-debuginfo-2.7-2.x86_64: /usr/lib/debug/lib64/libc.so.6.debug: + <81a2> DW_AT_name : (indirect string, offset: 0x280e): __errno_location + <81a8> DW_AT_MIPS_linkage_name: (indirect string, offset: 0x2808): *__GI___errno_location + +diff --git a/gdb/printcmd.c b/gdb/printcmd.c +--- a/gdb/printcmd.c ++++ b/gdb/printcmd.c +@@ -1301,6 +1301,10 @@ process_print_command_args (const char *args, value_print_options *print_opts, + + if (exp != nullptr && *exp) + { ++ /* '*((int *(*) (void)) __errno_location) ()' is incompatible with ++ function descriptors. */ ++ if (target_has_execution () && strcmp (exp, "errno") == 0) ++ exp = "*(*(int *(*)(void)) __errno_location) ()"; + /* VOIDPRINT is true to indicate that we do want to print a void + value, so invert it for parse_expression. */ + expression_up expr = parse_expression (exp, nullptr, !voidprint); +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-errno.c b/gdb/testsuite/gdb.dwarf2/dw2-errno.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-errno.c +@@ -0,0 +1,28 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2005, 2007 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++#include ++ ++int main() ++{ ++ errno = 42; ++ ++ return 0; /* breakpoint */ ++} +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-errno.exp b/gdb/testsuite/gdb.dwarf2/dw2-errno.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-errno.exp +@@ -0,0 +1,60 @@ ++# Copyright 2007 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++set testfile dw2-errno ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++proc prep {} { ++ global srcdir subdir binfile ++ gdb_exit ++ gdb_start ++ gdb_reinitialize_dir $srcdir/$subdir ++ gdb_load ${binfile} ++ ++ runto_main ++ ++ gdb_breakpoint [gdb_get_line_number "breakpoint"] ++ gdb_continue_to_breakpoint "breakpoint" ++} ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "additional_flags=-g2"] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++prep ++gdb_test "print errno" ".* = 42" "errno with macros=N threads=N" ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "additional_flags=-g3"] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++prep ++gdb_test "print errno" ".* = 42" "errno with macros=Y threads=N" ++ ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "additional_flags=-g2"] != "" } { ++ return -1 ++} ++prep ++gdb_test "print errno" ".* = 42" "errno with macros=N threads=Y" ++ ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "additional_flags=-g3"] != "" } { ++ return -1 ++} ++prep ++gdb_test "print errno" ".* = 42" "errno with macros=Y threads=Y" ++ ++# TODO: Test the error on resolving ERRNO with only libc loaded. ++# Just how to find the current libc filename? +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-errno2.c b/gdb/testsuite/gdb.dwarf2/dw2-errno2.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-errno2.c +@@ -0,0 +1,28 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2005, 2007 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++#include ++ ++int main() ++{ ++ errno = 42; ++ ++ return 0; /* breakpoint */ ++} +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-errno2.exp b/gdb/testsuite/gdb.dwarf2/dw2-errno2.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-errno2.exp +@@ -0,0 +1,71 @@ ++# Copyright 2007 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++set testfile dw2-errno2 ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++proc prep { message {do_xfail 0} } { with_test_prefix $message { ++ global srcdir subdir binfile variant ++ gdb_exit ++ gdb_start ++ gdb_reinitialize_dir $srcdir/$subdir ++ gdb_load ${binfile}${variant} ++ ++ runto_main ++ ++ gdb_breakpoint [gdb_get_line_number "breakpoint"] ++ gdb_continue_to_breakpoint "breakpoint" ++ ++ gdb_test "gcore ${binfile}${variant}.core" "\r\nSaved corefile .*" "gcore $variant" ++ ++ gdb_test "print errno" ".* = 42" ++ ++ gdb_test "kill" ".*" "kill" {Kill the program being debugged\? \(y or n\) } "y" ++ gdb_test "core-file ${binfile}${variant}.core" "\r\nCore was generated by .*" "core-file" ++ if $do_xfail { ++ setup_xfail "*-*-*" ++ } ++ gdb_test "print (int) errno" ".* = 42" "print errno for core" ++}} ++ ++set variant g2thrN ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}${variant}" executable "additional_flags=-g2"] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++prep "macros=N threads=N" 1 ++ ++set variant g3thrN ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}${variant}" executable "additional_flags=-g3"] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++prep "macros=Y threads=N" 1 ++ ++set variant g2thrY ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}${variant}" executable "additional_flags=-g2"] != "" } { ++ return -1 ++} ++prep "macros=N threads=Y" ++ ++set variant g3thrY ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}${variant}" executable "additional_flags=-g3"] != "" } { ++ return -1 ++} ++prep "macros=Y threads=Y" 1 ++ ++# TODO: Test the error on resolving ERRNO with only libc loaded. ++# Just how to find the current libc filename? diff --git a/gdb-6.5-bz218379-ppc-solib-trampoline-test.patch b/gdb-6.5-bz218379-ppc-solib-trampoline-test.patch new file mode 100644 index 0000000..db4229d --- /dev/null +++ b/gdb-6.5-bz218379-ppc-solib-trampoline-test.patch @@ -0,0 +1,107 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch + +;; Test sideeffects of skipping ppc .so libs trampolines (BZ 218379). +;;=fedoratest + +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379 + +diff --git a/gdb/testsuite/gdb.base/step-over-trampoline.c b/gdb/testsuite/gdb.base/step-over-trampoline.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/step-over-trampoline.c +@@ -0,0 +1,28 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++#include ++ ++int main (void) ++{ ++ puts ("hello world"); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/step-over-trampoline.exp b/gdb/testsuite/gdb.base/step-over-trampoline.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/step-over-trampoline.exp +@@ -0,0 +1,59 @@ ++# Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++if {[use_gdb_stub]} { ++ untested "skipping test because of use_gdb_stub" ++ return -1 ++} ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++set testfile step-over-trampoline ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++ ++# Get things started. ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++# For C programs, "start" should stop in main(). ++ ++gdb_test "start" \ ++ "main \\(\\) at .*$srcfile.*" \ ++ "start" ++ ++# main () at hello2.c:5 ++# 5 puts("hello world\n"); ++# (gdb) next ++# 0x100007e0 in call___do_global_ctors_aux () ++ ++gdb_test_multiple "next" "invalid `next' output" { ++ -re "\nhello world.*return 0;.*" { ++ pass "stepped over" ++ } ++ -re " in call___do_global_ctors_aux \\(\\).*" { ++ fail "stepped into trampoline" ++ } ++} diff --git a/gdb-6.5-bz243845-stale-testing-zombie-test.patch b/gdb-6.5-bz243845-stale-testing-zombie-test.patch new file mode 100644 index 0000000..2d62949 --- /dev/null +++ b/gdb-6.5-bz243845-stale-testing-zombie-test.patch @@ -0,0 +1,89 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-bz243845-stale-testing-zombie-test.patch + +;; Test leftover zombie process (BZ 243845). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/tracefork-zombie.exp b/gdb/testsuite/gdb.base/tracefork-zombie.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/tracefork-zombie.exp +@@ -0,0 +1,76 @@ ++# Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++# are we on a target board ++if {[use_gdb_stub]} { ++ untested "skipping test because of use_gdb_stub" ++ return -1 ++} ++ ++# Start the program running and then wait for a bit, to be sure ++# that it can be attached to. ++ ++gdb_exit ++gdb_start ++gdb_load sleep ++ ++set gdb_pid [exp_pid -i [board_info host fileid]] ++set test "identified the child GDB" ++if {$gdb_pid != "" && $gdb_pid > 0} { ++ pass $test ++ verbose -log "Child GDB PID $gdb_pid" ++} else { ++ fail $test ++} ++ ++set testpid [eval exec sleep 10 &] ++exec sleep 2 ++ ++set test "attach" ++gdb_test_multiple "attach $testpid" "$test" { ++ -re "Attaching to program.*`?.*'?, process $testpid..*$gdb_prompt $" { ++ pass "$test" ++ } ++ -re "Attaching to program.*`?.*\.exe'?, process $testpid.*\[Switching to thread $testpid\..*\].*$gdb_prompt $" { ++ # Response expected on Cygwin ++ pass "$test" ++ } ++} ++ ++# Some time to let GDB spawn its testing child. ++exec sleep 2 ++ ++set found none ++foreach procpid [glob -directory /proc -type d {[0-9]*}] { ++ if {[catch {open $procpid/status} statusfi]} { ++ continue ++ } ++ set status [read $statusfi] ++ close $statusfi ++ if {1 ++ && [regexp -line {^Name:\tgdb$} $status] ++ && [regexp -line {^PPid:\t1$} $status] ++ && [regexp -line "^TracerPid:\t$gdb_pid$" $status]} { ++ set found $procpid ++ verbose -log "Found linux_test_for_tracefork zombie PID $procpid" ++ } ++} ++set test "linux_test_for_tracefork leaves no zombie" ++if {$found eq {none}} { ++ pass $test ++} else { ++ fail $test ++} diff --git a/gdb-6.5-gcore-buffer-limit-test.patch b/gdb-6.5-gcore-buffer-limit-test.patch new file mode 100644 index 0000000..07ba1e9 --- /dev/null +++ b/gdb-6.5-gcore-buffer-limit-test.patch @@ -0,0 +1,154 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-gcore-buffer-limit-test.patch + +;; Test gcore memory and time requirements for large inferiors. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/gcore-excessive-memory.c b/gdb/testsuite/gdb.base/gcore-excessive-memory.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcore-excessive-memory.c +@@ -0,0 +1,37 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2008 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++#include ++#include ++ ++#define MEGS 64 ++ ++int main() ++{ ++ void *mem; ++ ++ mem = malloc (MEGS * 1024ULL * 1024ULL); ++ ++ for (;;) ++ sleep (1); ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/gcore-excessive-memory.exp b/gdb/testsuite/gdb.base/gcore-excessive-memory.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcore-excessive-memory.exp +@@ -0,0 +1,99 @@ ++# Copyright 2008 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++if {[use_gdb_stub]} { ++ untested "skipping test because of use_gdb_stub" ++ return -1 ++} ++ ++set testfile gcore-excessive-memory ++set srcfile ${testfile}.c ++set shfile [standard_output_file ${testfile}-gdb.sh] ++set corefile [standard_output_file ${testfile}.core] ++set binfile [standard_output_file ${testfile}] ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++ ++set f [open "|getconf PAGESIZE" "r"] ++gets $f pagesize ++close $f ++ ++set pid_of_bin [eval exec $binfile &] ++sleep 2 ++ ++# Get things started. ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++set pid_of_gdb [exp_pid -i [board_info host fileid]] ++ ++gdb_test "attach $pid_of_bin" "Attaching to .*" "attach" ++gdb_test "up 99" "in main .*" "verify we can get to main" ++ ++proc memory_v_pages_get {} { ++ global pid_of_gdb pagesize ++ set fd [open "/proc/$pid_of_gdb/statm"] ++ gets $fd line ++ close $fd ++ # number of pages of virtual memory ++ scan $line "%d" drs ++ return $drs ++} ++ ++set pages_found [memory_v_pages_get] ++ ++# It must be definitely less than `MEGS' of `gcore-excessive-memory.c'. ++set mb_gcore_reserve 4 ++verbose -log "pages_found = $pages_found, mb_gcore_reserve = $mb_gcore_reserve" ++set kb_found [expr $pages_found * $pagesize / 1024] ++set kb_permit [expr $kb_found + 1 * 1024 + $mb_gcore_reserve * 1024] ++verbose -log "kb_found = $kb_found, kb_permit = $kb_permit" ++ ++# Create the ulimit wrapper. ++set f [open $shfile "w"] ++puts $f "#! /bin/sh" ++puts $f "ulimit -v $kb_permit" ++puts $f "exec $GDB \"\$@\"" ++close $f ++remote_exec host "chmod +x $shfile" ++ ++gdb_exit ++set GDBold $GDB ++set GDB "$shfile" ++gdb_start ++set GDB $GDBold ++ ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++set pid_of_gdb [exp_pid -i [board_info host fileid]] ++ ++gdb_test "attach $pid_of_bin" "Attaching to .*" "attach" ++gdb_test "up 99" "in main .*" "verify we can get to main" ++ ++verbose -log "kb_found before gcore = [expr [memory_v_pages_get] * $pagesize / 1024]" ++ ++gdb_test "gcore $corefile" "Saved corefile \[^\n\r\]*" "Save the core file" ++ ++verbose -log "kb_found after gcore = [expr [memory_v_pages_get] * $pagesize / 1024]" ++ ++# Cleanup. ++exec kill -9 $pid_of_bin diff --git a/gdb-6.5-ia64-libunwind-leak-test.patch b/gdb-6.5-ia64-libunwind-leak-test.patch new file mode 100644 index 0000000..6efdca9 --- /dev/null +++ b/gdb-6.5-ia64-libunwind-leak-test.patch @@ -0,0 +1,135 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-ia64-libunwind-leak-test.patch + +;; Test ia64 memory leaks of the code using libunwind. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/unwind-leak.c b/gdb/testsuite/gdb.base/unwind-leak.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/unwind-leak.c +@@ -0,0 +1,29 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++#include ++ ++int main() ++{ ++ for (;;) ++ alarm (0); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/unwind-leak.exp b/gdb/testsuite/gdb.base/unwind-leak.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/unwind-leak.exp +@@ -0,0 +1,88 @@ ++# Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++if {[use_gdb_stub]} { ++ untested "skipping test because of use_gdb_stub" ++ return -1 ++} ++ ++set testfile unwind-leak ++set srcfile ${testfile}.c ++set shfile [standard_output_file ${testfile}-gdb.sh] ++set binfile [standard_output_file ${testfile}] ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++ ++# Get things started. ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++set pid [exp_pid -i [board_info host fileid]] ++ ++# For C programs, "start" should stop in main(). ++ ++gdb_test "start" \ ++ "main \\(\\) at .*$srcfile.*" \ ++ "start" ++ ++set loc [gdb_get_line_number "alarm"] ++gdb_breakpoint $loc ++ ++proc memory_get {} { ++ global pid ++ set fd [open "/proc/$pid/statm"] ++ gets $fd line ++ close $fd ++ # number of pages of data/stack ++ scan $line "%*d%*d%*d%*d%*d%d" drs ++ return $drs ++} ++ ++set cycles 100 ++# For 100 cycles it was 1308: from = 363 KB, to = 1671 KB ++set permit_kb 100 ++verbose -log "cycles = $cycles, permit_kb = $permit_kb" ++ ++set fail 0 ++set test "breakpoint stop/continue cycles" ++for {set i $cycles} {$i > 0} {set i [expr {$i - 1}]} { ++ gdb_test_multiple "continue" $test { ++ -re "Breakpoint 2, main .*alarm .*.*${gdb_prompt} $" { ++ } ++ -re "Segmentation fault" { ++ fail $test ++ set i 0 ++ set fail 1 ++ } ++ } ++ if ![info exists from] { ++ set from [memory_get] ++ } ++} ++set to [memory_get] ++if {!$fail} { ++ verbose -log "from = $from KB, to = $to KB" ++ if {$from > 0 && $to > 10 && $to < $from + $permit_kb} { ++ pass $test ++ } else { ++ fail $test ++ } ++} diff --git a/gdb-6.5-last-address-space-byte-test.patch b/gdb-6.5-last-address-space-byte-test.patch new file mode 100644 index 0000000..e99d811 --- /dev/null +++ b/gdb-6.5-last-address-space-byte-test.patch @@ -0,0 +1,62 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-last-address-space-byte-test.patch + +;; Testcase for deadlocking on last address space byte; for corrupted backtraces. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/largecore-last-address-lock.exp b/gdb/testsuite/gdb.base/largecore-last-address-lock.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/largecore-last-address-lock.exp +@@ -0,0 +1,49 @@ ++# Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++# Get things started. ++ ++gdb_exit ++gdb_start ++ ++# i386 (32-bit) only: gdb with Red Hat largecore patch did lock up: ++# https://enterprise.redhat.com/issue-tracker/?module=issues&action=view&tid=103263 ++# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=210614 ++ ++# i386: Bug exists when the `target_xfer_memory' condition ++# `(memaddr + len < region->hi)' operates on 64-bit operands on ++# largecore-patched with 32-bit addresses and so it can get `false' with ++# arbitrary `len'. ++ ++# x86_64: The bug is not present as the operands and calculations have the same ++# bit size. Would would still need to pass there the highest address ++# (`memaddr == 0xffffffffffffffff') but we would need to pass `len == 0' ++# to make the condition `(memaddr + len < region->hi)' false. ++# `len == 0' would get caught eariler. ++ ++# Error in the success case is immediate. ++set timeoutold ${timeout} ++set timeout 10 ++ ++gdb_test "x/xb 0xffffffff" \ ++ "Cannot access memory at address 0xffffffff" \ ++ "Read the last address space byte" ++ ++set timeout ${timeoutold} diff --git a/gdb-6.5-missed-trap-on-step-test.patch b/gdb-6.5-missed-trap-on-step-test.patch new file mode 100644 index 0000000..0ad8ad1 --- /dev/null +++ b/gdb-6.5-missed-trap-on-step-test.patch @@ -0,0 +1,95 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-missed-trap-on-step-test.patch + +;; Test hiding unexpected breakpoints on intentional step commands. +;;=fedoratest + +Fix has been committed to: + gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch + +diff --git a/gdb/testsuite/gdb.base/watchpoint-during-step.c b/gdb/testsuite/gdb.base/watchpoint-during-step.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/watchpoint-during-step.c +@@ -0,0 +1,30 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++static int var; ++ ++int main() ++{ ++ var = 1; ++ var = 2; ++ var = 3; ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/watchpoint-during-step.exp b/gdb/testsuite/gdb.base/watchpoint-during-step.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/watchpoint-during-step.exp +@@ -0,0 +1,44 @@ ++# Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++set testfile watchpoint-during-step ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++ ++# Get things started. ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++runto_main ++ ++gdb_breakpoint [gdb_get_line_number "var = 2"] ++gdb_continue_to_breakpoint "Find the first var set" ++ ++gdb_test "step" ".*var = 3;" "Step to the next var set" ++ ++gdb_test "watch var" "atchpoint .*: var" "Set the watchpoint" ++ ++# Here is the target point. Be careful to not have breakpoint set on the line ++# we step from as in this case it is a valid upstream KFAIL gdb/38 ++ ++gdb_test "step" ".*Old value = 2.*New value = 3.*" "Catch the watchpoint" diff --git a/gdb-6.5-readline-long-line-crash-test.patch b/gdb-6.5-readline-long-line-crash-test.patch new file mode 100644 index 0000000..087f916 --- /dev/null +++ b/gdb-6.5-readline-long-line-crash-test.patch @@ -0,0 +1,111 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-readline-long-line-crash-test.patch + +;; Fix readline segfault on excessively long hand-typed lines. +;;=fedoratest + +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=214196 + +diff --git a/gdb/testsuite/gdb.base/readline-overflow.exp b/gdb/testsuite/gdb.base/readline-overflow.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/readline-overflow.exp +@@ -0,0 +1,96 @@ ++# Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Please email any bugs, comments, and/or additions to this file to: ++# bug-gdb@prep.ai.mit.edu ++ ++# This file was written by Jan Kratochvil ++ ++# This file is part of the gdb testsuite. ++ ++# ++# Tests for readline buffer overflow. ++# ++ ++if $tracelevel { ++ strace $tracelevel ++} ++ ++global env ++ ++save_vars { env(GDBHISTFILE) env(HISTSIZE) TERM timeout } { ++ # The arrow key test relies on the standard VT100 bindings, so ++ # make sure that an appropriate terminal is selected. The same ++ # bug doesn't show up if we use ^P / ^N instead. ++ setenv TERM vt100 ++ ++ set timeout 600 ++ ++ set env(GDBHISTFILE) "${srcdir}/${subdir}/gdb_history" ++ set env(HISTSIZE) "10" ++ ++ gdb_exit ++ gdb_start ++ gdb_reinitialize_dir $srcdir/$subdir ++ ++ ++ set width 11 ++ gdb_test "set width $width" \ ++ "" \ ++ "Setting width to $width." ++ #gdb_test "set height 1" \ ++ # "" \ ++ # "Setting height to 1." ++ send_gdb "run X" ++ set i 0 ++ # It crashes using `set width 7' on `set total 3560'. ++ # Sometimes it corrupts screen on `set width 7'. ++ # Bugreport used `set total 130001': ++ # https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=214196 ++ # Check also `timeout' above. ++ set total 4200 ++ gdb_expect { ++ -re X { ++ incr i ++ if {$i <= $total} { ++ send_gdb "X" ++ exp_continue ++ } ++ } ++ -re "\[ \b\r\n\]" { ++ exp_continue ++ } ++ eof { ++ fail "gdb sending total $total characters" ++ note "Failed after sending $i characters, reason: EOF" ++ gdb_clear_suppressed ++ } ++ timeout { ++ fail "gdb sending total $total characters" ++ note "Failed after sending $i characters (timeout $timeout), reason: TIMEOUT" ++ gdb_clear_suppressed ++ } ++ default { ++ fail "gdb sending total $total characters" ++ note "Failed after sending $i characters, reason: 0=\[$expect_out(0,string)\] buffer=\[$expect_out(buffer)\]" ++ gdb_clear_suppressed ++ } ++ } ++ send_gdb "\r" ++ gdb_test "" \ ++ "No executable file specified..*" \ ++ "All the characters transferred" ++} diff --git a/gdb-6.5-section-num-fixup-test.patch b/gdb-6.5-section-num-fixup-test.patch new file mode 100644 index 0000000..2fa3995 --- /dev/null +++ b/gdb-6.5-section-num-fixup-test.patch @@ -0,0 +1,127 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-section-num-fixup-test.patch + +;; Test a crash on libraries missing the .text section. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/datalib-lib.c b/gdb/testsuite/gdb.base/datalib-lib.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/datalib-lib.c +@@ -0,0 +1,22 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2008 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++int var; +diff --git a/gdb/testsuite/gdb.base/datalib-main.c b/gdb/testsuite/gdb.base/datalib-main.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/datalib-main.c +@@ -0,0 +1,26 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2008 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++int ++main (void) ++{ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/datalib.exp b/gdb/testsuite/gdb.base/datalib.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/datalib.exp +@@ -0,0 +1,56 @@ ++# Copyright 2008 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++if {[use_gdb_stub]} { ++ untested "skipping test because of use_gdb_stub" ++ return -1 ++} ++ ++set testfile datalib ++set srcfilemain ${testfile}-main.c ++set srcfilelib ${testfile}-lib.c ++set libfile [standard_output_file ${testfile}-lib.so] ++set binfile [standard_output_file ${testfile}-main] ++if { [gdb_compile "${srcdir}/${subdir}/${srcfilelib}" "${libfile}" executable [list debug {additional_flags=-shared -nostdlib}]] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++if { [gdb_compile "${srcdir}/${subdir}/${srcfilemain}" "${binfile} ${libfile}" executable {debug}] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++ ++# Get things started. ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++# We must use a separate library as the main executable is compiled to the ++# address 0 by default and it would get fixed up already at the end of ++# INIT_OBJFILE_SECT_INDICES. We also cannot PRELINK it as PRELINK is missing ++# on ia64. The library must be NOSTDLIB as otherwise some stub code would ++# create the `.text' section there. Also DEBUG option is useful as some of ++# the crashes occur in dwarf2read.c. ++ ++# FAIL case: ++# ../../gdb/ia64-tdep.c:2838: internal-error: sect_index_text not initialized ++# A problem internal to GDB has been detected, ++ ++gdb_test "start" \ ++ "main \\(\\) at .*${srcfilemain}.*" \ ++ "start" diff --git a/gdb-6.5-sharedlibrary-path.patch b/gdb-6.5-sharedlibrary-path.patch new file mode 100644 index 0000000..360e5d3 --- /dev/null +++ b/gdb-6.5-sharedlibrary-path.patch @@ -0,0 +1,193 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.5-sharedlibrary-path.patch + +;; Fix TLS symbols resolving for shared libraries with a relative pathname. +;; The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. +;;=fedoratest: One should recheck if it is really fixed upstream. + +If you provided some relative path to the shared library, such as with + export LD_LIBRARY_PATH=. +then gdb would fail to match the shared library name during the TLS lookup. + +Dropped the workaround/fix for gdb-6.8.50.20081128 - is it still needed? + +The testsuite needs `gdb-6.3-bz146810-solib_absolute_prefix_is_empty.patch'. +The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. + +2006-09-01 Jan Kratochvil + + * solib-svr4.c (svr4_fetch_objfile_link_map): Match even absolute + requested pathnames to the internal loaded relative pathnames. + +2007-10-16 Jan Kratochvil + + Port to GDB-6.7. + +2008-02-27 Jan Kratochvil + + Port to gdb-6.7.50.20080227. + +diff --git a/gdb/testsuite/gdb.threads/tls-sepdebug-main.c b/gdb/testsuite/gdb.threads/tls-sepdebug-main.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/tls-sepdebug-main.c +@@ -0,0 +1,31 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++#include ++ ++extern __thread int var; ++ ++int main() ++{ ++ /* Ensure we link against pthreads even with --as-needed. */ ++ pthread_testcancel(); ++ return var; ++} +diff --git a/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c b/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c +@@ -0,0 +1,22 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++__thread int var = 42; +diff --git a/gdb/testsuite/gdb.threads/tls-sepdebug.exp b/gdb/testsuite/gdb.threads/tls-sepdebug.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/tls-sepdebug.exp +@@ -0,0 +1,94 @@ ++# Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# This test uses gdb_exit and gdb_start, which are not supported ++# on non-extended-remote sessions. ++if {[use_gdb_stub]} { ++ untested "skipping test because of stub" ++ return 0 ++} ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++set testfile tls-sepdebug ++set srcmainfile ${testfile}-main.c ++set srcsharedfile ${testfile}-shared.c ++ ++set binmainfile [standard_output_file ${testfile}-main] ++set binsharedbase ${testfile}-shared.so ++set binsharedfile [standard_output_file ${binsharedbase}] ++set binshareddebugfile [standard_output_file ${binsharedbase}.debug] ++ ++# Use explicit -soname as otherwise the full path to the library would get ++# encoded into ${binmainfile} making LD_LIBRARY_PATH tests useless. ++ ++# FIXME: gcc dependency (-Wl,-soname). ++ ++if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" [list debug additional_flags=-Wl,-soname=${binsharedbase}]] != "" } { ++ untested "Couldn't compile test library" ++ return -1 ++} ++ ++# eu-strip(1) works fine but it is a part of `elfutils', not `binutils'. ++if 0 then { ++ remote_exec build "eu-strip -f ${binshareddebugfile} ${binsharedfile}" ++} else { ++ remote_exec build "objcopy --only-keep-debug ${binsharedfile} ${binshareddebugfile}" ++ remote_exec build "objcopy --strip-debug ${binsharedfile}" ++ remote_exec build "objcopy --add-gnu-debuglink=${binshareddebugfile} ${binsharedfile}" ++} ++ ++# Do not use `shlib=' as it will automatically add also -rpath for gcc. ++ ++if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcmainfile} ${binsharedfile}" "${binmainfile}" executable {debug}] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++} ++ ++# Get things started. ++ ++# Test also the proper resolving of relative library names to absolute ones. ++# \$PWD is easy - it is the absolute way ++# ${subdir} would fail on "print var" ++ ++set absdir [file dirname [standard_output_file ${binsharedbase}]] ++foreach ld_library_path [list $absdir [relative_filename [pwd] $absdir]] name { absolute relative } { ++ ++ gdb_exit ++ gdb_start ++ ###gdb_reinitialize_dir $srcdir/$subdir ++ ++ gdb_test "set env LD_LIBRARY_PATH=$ld_library_path" \ ++ "" \ ++ "set env LD_LIBRARY_PATH is $name" ++ ++ gdb_load ${binmainfile} ++ ++ # For C programs, "start" should stop in main(). ++ ++ gdb_test "start" \ ++ "main \\(\\) at .*${srcmainfile}.*" \ ++ "start" ++ ++ # Check for: Cannot find shared library `/usr/lib/debug/lib/libc-2.4.90.so.debug' in dynamic linker's load module list ++ # as happens with TLS variables and `separate_debug_objfile_backlink'. ++ ++ gdb_test "print var" \ ++ "\\\$1 = \[0-9\].*" \ ++ "print TLS variable from a shared library with $name-directory separate debug info file" ++} diff --git a/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch b/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch new file mode 100644 index 0000000..985cb6a --- /dev/null +++ b/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch @@ -0,0 +1,129 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: + gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch + +;; Fix 'gdb gives highly misleading error when debuginfo pkg is present, +;; but not corresponding binary pkg' (RH BZ 981154). +;;=push+jan + +Comments by Sergio Durigan Junior : + + This is the fix for RH BZ #981154 + + It is mainly a testcase addition, but a minor fix in the gdb/build-id.c + file was also needed. + + gdb/build-id.c was added by: + + commit dc294be54c96414035eed7d53dafdea0a6f31a72 + Author: Tom Tromey + Date: Tue Oct 8 19:56:15 2013 +0000 + + and had a little thinko there. The variable 'filename' needs to be set to + NULL after it is free'd, otherwise the code below thinks that it is still + valid and doesn't print the necessary warning ("Try: yum install ..."). + +diff --git a/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning.exp b/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning.exp +@@ -0,0 +1,97 @@ ++# Copyright (C) 2014 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++standard_testfile "normal.c" ++ ++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { ++ return -1 ++} ++ ++# Get the build-id of the file ++set build_id_debug_file [build_id_debug_filename_get $binfile] ++regsub -all ".debug$" $build_id_debug_file "" build_id_without_debug ++ ++# Run to main ++if { ![runto_main] } { ++ return -1 ++} ++ ++# We first need to generate a corefile ++set escapedfilename [string_to_regexp [standard_output_file gcore.test]] ++set core_supported 0 ++gdb_test_multiple "gcore [standard_output_file gcore.test]" \ ++ "save a corefile" \ ++{ ++ -re "Saved corefile ${escapedfilename}\[\r\n\]+$gdb_prompt $" { ++ pass "save a corefile" ++ global core_supported ++ set core_supported 1 ++ } ++ -re "Can't create a corefile\[\r\n\]+$gdb_prompt $" { ++ unsupported "save a corefile" ++ global core_supported ++ set core_supported 0 ++ } ++} ++ ++if {!$core_supported} { ++ return -1 ++} ++ ++# Move the binfile to a temporary name ++remote_exec build "mv $binfile ${binfile}.old" ++ ++# Reinitialize GDB and see if we get a yum/dnf warning ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++ ++with_test_prefix "first run:" { ++ gdb_test "set build-id-verbose 1" "" \ ++ "set build-id-verbose" ++ ++ gdb_test "set debug-file-directory [file dirname [standard_output_file gcore.test]]" "" \ ++ "set debug-file-directory" ++ ++ gdb_test "core-file [standard_output_file gcore.test]" \ ++ "Missing separate debuginfo for the main executable file\r\nTry: (yum|dnf) --enablerepo='\\*debug\\*' install [standard_output_file $build_id_without_debug]\r\n.*" \ ++ "test first yum/dnf warning" ++} ++ ++# Now we define and create our .build-id ++file mkdir [file dirname [standard_output_file ${build_id_without_debug}]] ++# Cannot use "file link" (from TCL) because it requires the target file to ++# exist. ++remote_exec build "ln -s $binfile [standard_output_file ${build_id_without_debug}]" ++ ++# Reinitialize GDB to get the second yum/dnf warning ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++ ++with_test_prefix "second run:" { ++ gdb_test "set build-id-verbose 1" "" \ ++ "set build-id-verbose" ++ ++ gdb_test "set debug-file-directory [file dirname [standard_output_file gcore.test]]" "" \ ++ "set debug-file-directory" ++ ++ gdb_test "core-file [standard_output_file gcore.test]" \ ++ "Missing separate debuginfo for the main executable file\r\nTry: (yum|dnf) --enablerepo='\\*debug\\*' install $binfile\r\n.*" \ ++ "test second yum/dnf warning" ++} ++ ++# Leaving the link there will cause breakage in the next run. ++remote_exec build "rm -f [standard_output_file ${build_id_without_debug}]" diff --git a/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch b/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch new file mode 100644 index 0000000..2b862a0 --- /dev/null +++ b/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch @@ -0,0 +1,19 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch + +;; Workaround librpm BZ 643031 due to its unexpected exit() calls (BZ 642879). +;;=push+jan + +diff --git a/gdb/proc-service.list b/gdb/proc-service.list +--- a/gdb/proc-service.list ++++ b/gdb/proc-service.list +@@ -37,4 +37,7 @@ + ps_pstop; + ps_ptread; + ps_ptwrite; ++ ++ /* gdb-6.6-buildid-locate-rpm.patch */ ++ rpmsqEnable; + }; diff --git a/gdb-6.6-buildid-locate-rpm.patch b/gdb-6.6-buildid-locate-rpm.patch new file mode 100644 index 0000000..6481d30 --- /dev/null +++ b/gdb-6.6-buildid-locate-rpm.patch @@ -0,0 +1,1050 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-buildid-locate-rpm.patch + +;;=push+jan + +diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4 +--- a/gdb/aclocal.m4 ++++ b/gdb/aclocal.m4 +@@ -11,7 +11,223 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + ++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# serial 1 (pkg-config-0.24) ++# ++# Copyright © 2004 Scott James Remnant . ++# ++# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# PKG_PROG_PKG_CONFIG([MIN-VERSION]) ++# ---------------------------------- ++AC_DEFUN([PKG_PROG_PKG_CONFIG], ++[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) ++m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) ++m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) ++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) ++AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) ++AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) ++ ++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then ++ AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) ++fi ++if test -n "$PKG_CONFIG"; then ++ _pkg_min_version=m4_default([$1], [0.9.0]) ++ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) ++ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ PKG_CONFIG="" ++ fi ++fi[]dnl ++])# PKG_PROG_PKG_CONFIG ++ ++# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ++# Check to see whether a particular set of modules exists. Similar ++# to PKG_CHECK_MODULES(), but does not set variables or print errors. ++# ++# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++# only at the first occurence in configure.ac, so if the first place ++# it's called might be skipped (such as if it is within an "if", you ++# have to call PKG_CHECK_EXISTS manually ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_EXISTS], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++if test -n "$PKG_CONFIG" && \ ++ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then ++ m4_default([$2], [:]) ++m4_ifvaln([$3], [else ++ $3])dnl ++fi]) ++ ++# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) ++# --------------------------------------------- ++m4_define([_PKG_CONFIG], ++[if test -n "$$1"; then ++ pkg_cv_[]$1="$$1" ++ elif test -n "$PKG_CONFIG"; then ++ PKG_CHECK_EXISTS([$3], ++ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` ++ test "x$?" != "x0" && pkg_failed=yes ], ++ [pkg_failed=yes]) ++ else ++ pkg_failed=untried ++fi[]dnl ++])# _PKG_CONFIG ++ ++# _PKG_SHORT_ERRORS_SUPPORTED ++# ----------------------------- ++AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then ++ _pkg_short_errors_supported=yes ++else ++ _pkg_short_errors_supported=no ++fi[]dnl ++])# _PKG_SHORT_ERRORS_SUPPORTED ++ ++ ++# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], ++# [ACTION-IF-NOT-FOUND]) ++# ++# ++# Note that if there is a possibility the first call to ++# PKG_CHECK_MODULES might not happen, you should be sure to include an ++# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac ++# ++# ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_MODULES], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl ++AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl ++ ++pkg_failed=no ++AC_MSG_CHECKING([for $1]) ++ ++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) ++_PKG_CONFIG([$1][_LIBS], [libs], [$2]) ++ ++m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS ++and $1[]_LIBS to avoid the need to call pkg-config. ++See the pkg-config man page for more details.]) ++ ++if test $pkg_failed = yes; then ++ AC_MSG_RESULT([no]) ++ _PKG_SHORT_ERRORS_SUPPORTED ++ if test $_pkg_short_errors_supported = yes; then ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` ++ else ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` ++ fi ++ # Put the nasty error message in config.log where it belongs ++ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ++ ++ m4_default([$4], [AC_MSG_ERROR( ++[Package requirements ($2) were not met: ++ ++$$1_PKG_ERRORS ++ ++Consider adjusting the PKG_CONFIG_PATH environment variable if you ++installed software in a non-standard prefix. ++ ++_PKG_TEXT])[]dnl ++ ]) ++elif test $pkg_failed = untried; then ++ AC_MSG_RESULT([no]) ++ m4_default([$4], [AC_MSG_FAILURE( ++[The pkg-config script could not be found or is too old. Make sure it ++is in your PATH or set the PKG_CONFIG environment variable to the full ++path to pkg-config. ++ ++_PKG_TEXT ++ ++To get pkg-config, see .])[]dnl ++ ]) ++else ++ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS ++ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS ++ AC_MSG_RESULT([yes]) ++ $3 ++fi[]dnl ++])# PKG_CHECK_MODULES ++ ++ ++# PKG_INSTALLDIR(DIRECTORY) ++# ------------------------- ++# Substitutes the variable pkgconfigdir as the location where a module ++# should install pkg-config .pc files. By default the directory is ++# $libdir/pkgconfig, but the default can be changed by passing ++# DIRECTORY. The user can override through the --with-pkgconfigdir ++# parameter. ++AC_DEFUN([PKG_INSTALLDIR], ++[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) ++m4_pushdef([pkg_description], ++ [pkg-config installation directory @<:@]pkg_default[@:>@]) ++AC_ARG_WITH([pkgconfigdir], ++ [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, ++ [with_pkgconfigdir=]pkg_default) ++AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) ++m4_popdef([pkg_default]) ++m4_popdef([pkg_description]) ++]) dnl PKG_INSTALLDIR ++ ++ ++# PKG_NOARCH_INSTALLDIR(DIRECTORY) ++# ------------------------- ++# Substitutes the variable noarch_pkgconfigdir as the location where a ++# module should install arch-independent pkg-config .pc files. By ++# default the directory is $datadir/pkgconfig, but the default can be ++# changed by passing DIRECTORY. The user can override through the ++# --with-noarch-pkgconfigdir parameter. ++AC_DEFUN([PKG_NOARCH_INSTALLDIR], ++[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) ++m4_pushdef([pkg_description], ++ [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) ++AC_ARG_WITH([noarch-pkgconfigdir], ++ [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, ++ [with_noarch_pkgconfigdir=]pkg_default) ++AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) ++m4_popdef([pkg_default]) ++m4_popdef([pkg_description]) ++]) dnl PKG_NOARCH_INSTALLDIR ++ ++ ++# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, ++# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ------------------------------------------- ++# Retrieves the value of the pkg-config variable for the given module. ++AC_DEFUN([PKG_CHECK_VAR], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl ++ ++_PKG_CONFIG([$1], [variable="][$3]["], [$2]) ++AS_VAR_COPY([$1], [pkg_cv_][$1]) ++ ++AS_VAR_IF([$1], [""], [$5], [$4])dnl ++])# PKG_CHECK_VAR ++ + m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) ++ + # AM_AUX_DIR_EXPAND -*- Autoconf -*- + + # Copyright (C) 2001-2017 Free Software Foundation, Inc. +diff --git a/gdb/config.in b/gdb/config.in +--- a/gdb/config.in ++++ b/gdb/config.in +@@ -39,6 +39,9 @@ + /* Handle .ctf type-info sections */ + #undef ENABLE_LIBCTF + ++/* librpm version specific library name to dlopen. */ ++#undef DLOPEN_LIBRPM ++ + /* Define to 1 if translation of program messages to the user's native + language is requested. */ + #undef ENABLE_NLS +@@ -259,6 +262,9 @@ + /* Define if you have the mpfr library. */ + #undef HAVE_LIBMPFR + ++/* Define if librpm library is being used. */ ++#undef HAVE_LIBRPM ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_LIBUNWIND_IA64_H + +diff --git a/gdb/configure b/gdb/configure +--- a/gdb/configure ++++ b/gdb/configure +@@ -775,6 +775,11 @@ TARGET_OBS + ENABLE_BFD_64_BIT_FALSE + ENABLE_BFD_64_BIT_TRUE + subdirs ++RPM_LIBS ++RPM_CFLAGS ++PKG_CONFIG_LIBDIR ++PKG_CONFIG_PATH ++PKG_CONFIG + GDB_DATADIR + DEBUGDIR + MAKEINFO_EXTRA_FLAGS +@@ -880,6 +885,7 @@ with_gdb_datadir + with_relocated_sources + with_auto_load_dir + with_auto_load_safe_path ++with_rpm + enable_targets + enable_64_bit_bfd + enable_gdbmi +@@ -959,6 +965,8 @@ PKG_CONFIG_PATH + PKG_CONFIG_LIBDIR + DEBUGINFOD_CFLAGS + DEBUGINFOD_LIBS ++RPM_CFLAGS ++RPM_LIBS + YACC + YFLAGS + XMKMF' +@@ -1635,6 +1643,8 @@ Optional Packages: + do not restrict auto-loaded files locations + --with-debuginfod Enable debuginfo lookups with debuginfod + (auto/yes/no) ++ --with-rpm query rpm database for missing debuginfos (yes/no, ++ def. auto=librpm.so) + --with-libunwind-ia64 use libunwind frame unwinding for ia64 targets + --with-curses use the curses library instead of the termcap + library +@@ -1715,6 +1725,8 @@ Some influential environment variables: + C compiler flags for DEBUGINFOD, overriding pkg-config + DEBUGINFOD_LIBS + linker flags for DEBUGINFOD, overriding pkg-config ++ RPM_CFLAGS C compiler flags for RPM, overriding pkg-config ++ RPM_LIBS linker flags for RPM, overriding pkg-config + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. +@@ -6634,6 +6646,495 @@ _ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5 + $as_echo "$with_auto_load_safe_path" >&6; } + ++# Integration with rpm library to support missing debuginfo suggestions. ++# --without-rpm: Disable any rpm support. ++# --with-rpm=libname.so: Try to dynamically open `libname.so' during runtime. ++# Even with runtime missing `libname.so' GDB will still other run correctly. ++# Missing `libname.so' during ./configure will abort the configuration. ++# --with-rpm=librpm.so: Like `--with-rpm=libname.so' but try to find specific ++# minor version first such as `librpm-4.6.so' as minor version differences ++# mean API+ABI incompatibility. If the specific match versioned library name ++# could not be found still open dynamically at least `librpm.so'. ++# --with-rpm: Like `--with-rpm=librpm.so' but if any of its detection fails try ++# to find librpm for compilation-time linking by pkg-config. GDB binary will ++# be probably linked with the version specific library (as `librpm-4.6.so'). ++# Failure to find librpm by pkg-config will abort the configuration. ++# (default) --with-rpm=auto: Like `--with-rpm=librpm.so' but if even pkg-config ++# cannot find librpm use to the rpmless compilation (like `--without-rpm'). ++ ++ ++# Check whether --with-rpm was given. ++if test "${with_rpm+set}" = set; then : ++ withval=$with_rpm; ++else ++ with_rpm="auto" ++fi ++ ++ ++ ++ ++if test "x$with_rpm" != "xno"; then ++ if test "x$with_rpm" = "xyes"; then ++ LIBRPM="librpm.so" ++ RPM_REQUIRE=true ++ DLOPEN_REQUIRE=false ++ elif test "x$with_rpm" = "xauto"; then ++ LIBRPM="librpm.so" ++ RPM_REQUIRE=false ++ DLOPEN_REQUIRE=false ++ else ++ LIBRPM="$with_rpm" ++ RPM_REQUIRE=true ++ DLOPEN_REQUIRE=true ++ fi ++ LIBRPM_STRING='"'"$LIBRPM"'"' ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking specific librpm version" >&5 ++$as_echo_n "checking specific librpm version... " >&6; } ++ HAVE_DLOPEN_LIBRPM=false ++ save_LIBS="$LIBS" ++ LIBS="$LIBS -ldl" ++ if test "$cross_compiling" = yes; then : ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error "cannot run test program while cross compiling ++See \`config.log' for more details." "$LINENO" 5; } ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ void *h; ++ const char *const *rpmverp; ++ FILE *f; ++ ++ f = fopen ("conftest.out", "w"); ++ if (!f) ++ { ++ fprintf (stderr, "Cannot write \"%s\": %s\n", "conftest.out", ++ strerror (errno)); ++ return 1; ++ } ++ h = dlopen ($LIBRPM_STRING, RTLD_LAZY); ++ if (!h) ++ { ++ fprintf (stderr, "dlopen (\"%s\"): %s\n", $LIBRPM_STRING, dlerror ()); ++ return 1; ++ } ++ rpmverp = dlsym (h, "RPMVERSION"); ++ if (!rpmverp) ++ { ++ fprintf (stderr, "dlsym (\"RPMVERSION\"): %s\n", dlerror ()); ++ return 1; ++ } ++ fprintf (stderr, "RPMVERSION is: \""); ++ fprintf (stderr, "%s\"\n", *rpmverp); ++ ++ /* Try to find the specific librpm version only for "librpm.so" as we do ++ not know how to assemble the version string otherwise. */ ++ ++ if (strcmp ("librpm.so", $LIBRPM_STRING) != 0) ++ { ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ else ++ { ++ char *h2_name; ++ void *h2; ++ int major, minor; ++ ++ if (sscanf (*rpmverp, "%d.%d", &major, &minor) != 2) ++ { ++ fprintf (stderr, "Unable to parse RPMVERSION.\n"); ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ /* Avoid the square brackets by malloc. */ ++ h2_name = malloc (64); ++ sprintf (h2_name, "librpm-%d.%d.so", major, minor); ++ h2 = dlopen (h2_name, RTLD_LAZY); ++ if (!h2) ++ { ++ fprintf (stderr, "dlopen (\"%s\"): %s\n", h2_name, dlerror ()); ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ if (h2 != h) ++ { ++ fprintf (stderr, "dlopen of \"%s\" and \"%s\" are different.\n", ++ $LIBRPM_STRING, h2_name); ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ /* Found the valid .so name with a specific version. */ ++ fprintf (f, "%s\n", h2_name); ++ return 0; ++ } ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ ++ DLOPEN_LIBRPM="`cat conftest.out`" ++ if test "x$DLOPEN_LIBRPM" != "x"; then ++ HAVE_DLOPEN_LIBRPM=true ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLOPEN_LIBRPM" >&5 ++$as_echo "$DLOPEN_LIBRPM" >&6; } ++ fi ++ ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ rm -f conftest.out ++ ++ ++ ++ if $HAVE_DLOPEN_LIBRPM; then ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking rpm library API compatibility" >&5 ++$as_echo_n "checking rpm library API compatibility... " >&6; } ++ # The compilation requires -Werror to verify anything. ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -Werror" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Duplicate here the declarations to verify they match "elfread.c". */ ++#include ++#include ++#include ++#include ++extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg); ++extern int rpmReadConfigFiles(const char * file, const char * target); ++extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi); ++extern Header rpmdbNextIterator(rpmdbMatchIterator mi); ++extern rpmts rpmtsCreate(void); ++extern rpmts rpmtsFree(rpmts ts); ++extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag, ++ const void * keyp, size_t keylen); ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++ LIBRPM_COMPAT=true ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ ++else ++ ++ LIBRPM_COMPAT=false ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ CFLAGS="$save_CFLAGS" ++ ++ if ! $LIBRPM_COMPAT; then ++ HAVE_DLOPEN_LIBRPM=false ++ fi ++ fi ++ ++ if $HAVE_DLOPEN_LIBRPM; then ++ DLOPEN_LIBRPM_STRING='"'"$DLOPEN_LIBRPM"'"' ++ ++cat >>confdefs.h <<_ACEOF ++#define DLOPEN_LIBRPM $DLOPEN_LIBRPM_STRING ++_ACEOF ++ ++ ++$as_echo "#define HAVE_LIBRPM 1" >>confdefs.h ++ ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ LIBS="$save_LIBS" ++ if $DLOPEN_REQUIRE; then ++ as_fn_error "Specific name $LIBRPM was requested but it could not be opened." "$LINENO" 5 ++ fi ++ ++ ++ ++ ++ ++ ++ ++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. ++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $PKG_CONFIG in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++fi ++PKG_CONFIG=$ac_cv_path_PKG_CONFIG ++if test -n "$PKG_CONFIG"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 ++$as_echo "$PKG_CONFIG" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_path_PKG_CONFIG"; then ++ ac_pt_PKG_CONFIG=$PKG_CONFIG ++ # Extract the first word of "pkg-config", so it can be a program name with args. ++set dummy pkg-config; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $ac_pt_PKG_CONFIG in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++fi ++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG ++if test -n "$ac_pt_PKG_CONFIG"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 ++$as_echo "$ac_pt_PKG_CONFIG" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_pt_PKG_CONFIG" = x; then ++ PKG_CONFIG="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ PKG_CONFIG=$ac_pt_PKG_CONFIG ++ fi ++else ++ PKG_CONFIG="$ac_cv_path_PKG_CONFIG" ++fi ++ ++fi ++if test -n "$PKG_CONFIG"; then ++ _pkg_min_version=0.9.0 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 ++$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } ++ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ PKG_CONFIG="" ++ fi ++fi ++ ++pkg_failed=no ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RPM" >&5 ++$as_echo_n "checking for RPM... " >&6; } ++ ++if test -n "$RPM_CFLAGS"; then ++ pkg_cv_RPM_CFLAGS="$RPM_CFLAGS" ++ elif test -n "$PKG_CONFIG"; then ++ if test -n "$PKG_CONFIG" && \ ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rpm\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "rpm") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ pkg_cv_RPM_CFLAGS=`$PKG_CONFIG --cflags "rpm" 2>/dev/null` ++ test "x$?" != "x0" && pkg_failed=yes ++else ++ pkg_failed=yes ++fi ++ else ++ pkg_failed=untried ++fi ++if test -n "$RPM_LIBS"; then ++ pkg_cv_RPM_LIBS="$RPM_LIBS" ++ elif test -n "$PKG_CONFIG"; then ++ if test -n "$PKG_CONFIG" && \ ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rpm\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "rpm") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ pkg_cv_RPM_LIBS=`$PKG_CONFIG --libs "rpm" 2>/dev/null` ++ test "x$?" != "x0" && pkg_failed=yes ++else ++ pkg_failed=yes ++fi ++ else ++ pkg_failed=untried ++fi ++ ++ ++ ++if test $pkg_failed = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then ++ _pkg_short_errors_supported=yes ++else ++ _pkg_short_errors_supported=no ++fi ++ if test $_pkg_short_errors_supported = yes; then ++ RPM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "rpm" 2>&1` ++ else ++ RPM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "rpm" 2>&1` ++ fi ++ # Put the nasty error message in config.log where it belongs ++ echo "$RPM_PKG_ERRORS" >&5 ++ ++ HAVE_LIBRPM=false ++elif test $pkg_failed = untried; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ HAVE_LIBRPM=false ++else ++ RPM_CFLAGS=$pkg_cv_RPM_CFLAGS ++ RPM_LIBS=$pkg_cv_RPM_LIBS ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ HAVE_LIBRPM=true ++fi ++ ++ if $HAVE_LIBRPM; then ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking rpm library API compatibility" >&5 ++$as_echo_n "checking rpm library API compatibility... " >&6; } ++ # The compilation requires -Werror to verify anything. ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -Werror" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Duplicate here the declarations to verify they match "elfread.c". */ ++#include ++#include ++#include ++#include ++extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg); ++extern int rpmReadConfigFiles(const char * file, const char * target); ++extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi); ++extern Header rpmdbNextIterator(rpmdbMatchIterator mi); ++extern rpmts rpmtsCreate(void); ++extern rpmts rpmtsFree(rpmts ts); ++extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag, ++ const void * keyp, size_t keylen); ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++ LIBRPM_COMPAT=true ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ ++else ++ ++ LIBRPM_COMPAT=false ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ CFLAGS="$save_CFLAGS" ++ ++ if ! $LIBRPM_COMPAT; then ++ HAVE_LIBRPM=false ++ RPM_PKG_ERRORS="Found $LIBRPM API is incompatibile with this GDB" ++ fi ++ fi ++ ++ if $HAVE_LIBRPM; then ++ ++$as_echo "#define HAVE_LIBRPM 1" >>confdefs.h ++ ++ CFLAGS="$CFLAGS $RPM_CFLAGS" ++ LIBS="$LIBS $RPM_LIBS" ++ else ++ if $RPM_REQUIRE; then ++ as_fn_error "$RPM_PKG_ERRORS" "$LINENO" 5 ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $RPM_PKG_ERRORS" >&5 ++$as_echo "$as_me: WARNING: $RPM_PKG_ERRORS" >&2;} ++ fi ++ fi ++ fi ++fi ++ + + + subdirs="$subdirs testsuite" +diff --git a/gdb/configure.ac b/gdb/configure.ac +--- a/gdb/configure.ac ++++ b/gdb/configure.ac +@@ -153,6 +153,200 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir, + [Directories safe to hold auto-loaded files.]) + AC_MSG_RESULT([$with_auto_load_safe_path]) + ++# Integration with rpm library to support missing debuginfo suggestions. ++# --without-rpm: Disable any rpm support. ++# --with-rpm=libname.so: Try to dynamically open `libname.so' during runtime. ++# Even with runtime missing `libname.so' GDB will still other run correctly. ++# Missing `libname.so' during ./configure will abort the configuration. ++# --with-rpm=librpm.so: Like `--with-rpm=libname.so' but try to find specific ++# minor version first such as `librpm-4.6.so' as minor version differences ++# mean API+ABI incompatibility. If the specific match versioned library name ++# could not be found still open dynamically at least `librpm.so'. ++# --with-rpm: Like `--with-rpm=librpm.so' but if any of its detection fails try ++# to find librpm for compilation-time linking by pkg-config. GDB binary will ++# be probably linked with the version specific library (as `librpm-4.6.so'). ++# Failure to find librpm by pkg-config will abort the configuration. ++# (default) --with-rpm=auto: Like `--with-rpm=librpm.so' but if even pkg-config ++# cannot find librpm use to the rpmless compilation (like `--without-rpm'). ++ ++AC_ARG_WITH([rpm], ++ [AS_HELP_STRING([--with-rpm], ++ [query rpm database for missing debuginfos (yes/no, def. auto=librpm.so)])], [], [with_rpm="auto"]) ++ ++m4_pattern_allow([^AC_MSG_ERROR$]) ++m4_pattern_allow([^AC_MSG_WARN$]) ++if test "x$with_rpm" != "xno"; then ++ if test "x$with_rpm" = "xyes"; then ++ LIBRPM="librpm.so" ++ RPM_REQUIRE=true ++ DLOPEN_REQUIRE=false ++ elif test "x$with_rpm" = "xauto"; then ++ LIBRPM="librpm.so" ++ RPM_REQUIRE=false ++ DLOPEN_REQUIRE=false ++ else ++ LIBRPM="$with_rpm" ++ RPM_REQUIRE=true ++ DLOPEN_REQUIRE=true ++ fi ++ LIBRPM_STRING='"'"$LIBRPM"'"' ++ ++ AC_MSG_CHECKING([specific librpm version]) ++ HAVE_DLOPEN_LIBRPM=false ++ save_LIBS="$LIBS" ++ LIBS="$LIBS -ldl" ++ AC_RUN_IFELSE(AC_LANG_PROGRAM([[ ++#include ++#include ++#include ++#include ++ ]], [[ ++ void *h; ++ const char *const *rpmverp; ++ FILE *f; ++ ++ f = fopen ("conftest.out", "w"); ++ if (!f) ++ { ++ fprintf (stderr, "Cannot write \"%s\": %s\n", "conftest.out", ++ strerror (errno)); ++ return 1; ++ } ++ h = dlopen ($LIBRPM_STRING, RTLD_LAZY); ++ if (!h) ++ { ++ fprintf (stderr, "dlopen (\"%s\"): %s\n", $LIBRPM_STRING, dlerror ()); ++ return 1; ++ } ++ rpmverp = dlsym (h, "RPMVERSION"); ++ if (!rpmverp) ++ { ++ fprintf (stderr, "dlsym (\"RPMVERSION\"): %s\n", dlerror ()); ++ return 1; ++ } ++ fprintf (stderr, "RPMVERSION is: \""); ++ fprintf (stderr, "%s\"\n", *rpmverp); ++ ++ /* Try to find the specific librpm version only for "librpm.so" as we do ++ not know how to assemble the version string otherwise. */ ++ ++ if (strcmp ("librpm.so", $LIBRPM_STRING) != 0) ++ { ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ else ++ { ++ char *h2_name; ++ void *h2; ++ int major, minor; ++ ++ if (sscanf (*rpmverp, "%d.%d", &major, &minor) != 2) ++ { ++ fprintf (stderr, "Unable to parse RPMVERSION.\n"); ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ /* Avoid the square brackets by malloc. */ ++ h2_name = malloc (64); ++ sprintf (h2_name, "librpm-%d.%d.so", major, minor); ++ h2 = dlopen (h2_name, RTLD_LAZY); ++ if (!h2) ++ { ++ fprintf (stderr, "dlopen (\"%s\"): %s\n", h2_name, dlerror ()); ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ if (h2 != h) ++ { ++ fprintf (stderr, "dlopen of \"%s\" and \"%s\" are different.\n", ++ $LIBRPM_STRING, h2_name); ++ fprintf (f, "%s\n", $LIBRPM_STRING); ++ return 0; ++ } ++ /* Found the valid .so name with a specific version. */ ++ fprintf (f, "%s\n", h2_name); ++ return 0; ++ } ++ ]]), [ ++ DLOPEN_LIBRPM="`cat conftest.out`" ++ if test "x$DLOPEN_LIBRPM" != "x"; then ++ HAVE_DLOPEN_LIBRPM=true ++ AC_MSG_RESULT($DLOPEN_LIBRPM) ++ fi ++ ]) ++ rm -f conftest.out ++ ++ m4_define([CHECK_LIBRPM_COMPAT], [ ++ AC_MSG_CHECKING([rpm library API compatibility]) ++ # The compilation requires -Werror to verify anything. ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -Werror" ++ AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[ ++/* Duplicate here the declarations to verify they match "elfread.c". */ ++#include ++#include ++#include ++#include ++extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg); ++extern int rpmReadConfigFiles(const char * file, const char * target); ++extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi); ++extern Header rpmdbNextIterator(rpmdbMatchIterator mi); ++extern rpmts rpmtsCreate(void); ++extern rpmts rpmtsFree(rpmts ts); ++extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag, ++ const void * keyp, size_t keylen); ++ ]]), [ ++ LIBRPM_COMPAT=true ++ AC_MSG_RESULT(yes) ++ ], [ ++ LIBRPM_COMPAT=false ++ AC_MSG_RESULT(no) ++ ]) ++ CFLAGS="$save_CFLAGS" ++ ]) ++ ++ if $HAVE_DLOPEN_LIBRPM; then ++ CHECK_LIBRPM_COMPAT ++ if ! $LIBRPM_COMPAT; then ++ HAVE_DLOPEN_LIBRPM=false ++ fi ++ fi ++ ++ if $HAVE_DLOPEN_LIBRPM; then ++ DLOPEN_LIBRPM_STRING='"'"$DLOPEN_LIBRPM"'"' ++ AC_DEFINE_UNQUOTED(DLOPEN_LIBRPM, $DLOPEN_LIBRPM_STRING, [librpm version specific library name to dlopen.]) ++ AC_DEFINE(HAVE_LIBRPM, 1, [Define if librpm library is being used.]) ++ else ++ AC_MSG_RESULT(no) ++ LIBS="$save_LIBS" ++ if $DLOPEN_REQUIRE; then ++ AC_MSG_ERROR([Specific name $LIBRPM was requested but it could not be opened.]) ++ fi ++ PKG_CHECK_MODULES(RPM, rpm, [HAVE_LIBRPM=true], [HAVE_LIBRPM=false]) ++ ++ if $HAVE_LIBRPM; then ++ CHECK_LIBRPM_COMPAT ++ if ! $LIBRPM_COMPAT; then ++ HAVE_LIBRPM=false ++ RPM_PKG_ERRORS="Found $LIBRPM API is incompatibile with this GDB" ++ fi ++ fi ++ ++ if $HAVE_LIBRPM; then ++ AC_DEFINE(HAVE_LIBRPM, 1, [Define if librpm library is being used.]) ++ CFLAGS="$CFLAGS $RPM_CFLAGS" ++ LIBS="$LIBS $RPM_LIBS" ++ else ++ if $RPM_REQUIRE; then ++ AC_MSG_ERROR($RPM_PKG_ERRORS) ++ else ++ AC_MSG_WARN($RPM_PKG_ERRORS) ++ fi ++ fi ++ fi ++fi ++ + AC_CONFIG_SUBDIRS(testsuite) + + # Check whether to support alternative target configurations +diff --git a/gdb/event-top.c b/gdb/event-top.c +--- a/gdb/event-top.c ++++ b/gdb/event-top.c +@@ -42,6 +42,7 @@ + #include "gdbsupport/gdb-sigmask.h" + #include "async-event.h" + #include "bt-utils.h" ++#include "symfile.h" + + /* readline include files. */ + #include "readline/readline.h" +@@ -374,6 +375,8 @@ display_gdb_prompt (const char *new_prompt) + /* Reset the nesting depth used when trace-commands is set. */ + reset_command_nest_depth (); + ++ debug_flush_missing (); ++ + /* Do not call the python hook on an explicit prompt change as + passed to this function, as this forms a secondary/local prompt, + IE, displayed but not set. */ +@@ -800,7 +803,10 @@ command_line_handler (gdb::unique_xmalloc_ptr &&rl) + command_handler (cmd); + + if (ui->prompt_state != PROMPTED) +- display_gdb_prompt (0); ++ { ++ debug_flush_missing (); ++ display_gdb_prompt (0); ++ } + } + } + +diff --git a/gdb/symfile.h b/gdb/symfile.h +--- a/gdb/symfile.h ++++ b/gdb/symfile.h +@@ -342,6 +342,7 @@ extern void generic_load (const char *args, int from_tty); + /* build-id support. */ + extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr); + extern void debug_print_missing (const char *binary, const char *debug); ++extern void debug_flush_missing (void); + #define BUILD_ID_MAIN_EXECUTABLE_FILENAME _("the main executable file") + + /* From minidebug.c. */ diff --git a/gdb-6.6-buildid-locate-solib-missing-ids.patch b/gdb-6.6-buildid-locate-solib-missing-ids.patch new file mode 100644 index 0000000..df45319 --- /dev/null +++ b/gdb-6.6-buildid-locate-solib-missing-ids.patch @@ -0,0 +1,238 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-buildid-locate-solib-missing-ids.patch + +;; Fix loading of core files without build-ids but with build-ids in executables. +;; Load strictly build-id-checked core files only if no executable is specified +;; (Jan Kratochvil, RH BZ 1339862). +;;=push+jan + +gdb returns an incorrect back trace when applying a debuginfo +https://bugzilla.redhat.com/show_bug.cgi?id=1339862 + +diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c +--- a/gdb/solib-svr4.c ++++ b/gdb/solib-svr4.c +@@ -1250,14 +1250,28 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm, + } + + { +- struct bfd_build_id *build_id; ++ struct bfd_build_id *build_id = NULL; + + strncpy (newobj->so_original_name, buffer.get (), SO_NAME_MAX_PATH_SIZE - 1); + newobj->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; + /* May get overwritten below. */ + strcpy (newobj->so_name, newobj->so_original_name); + +- build_id = build_id_addr_get (((lm_info_svr4 *) newobj->lm_info)->l_ld); ++ /* In the case the main executable was found according to its build-id ++ (from a core file) prevent loading a different build of a library ++ with accidentally the same SO_NAME. ++ ++ It suppresses bogus backtraces (and prints "??" there instead) if ++ the on-disk files no longer match the running program version. ++ ++ If the main executable was not loaded according to its build-id do ++ not do any build-id checking of the libraries. There may be missing ++ build-ids dumped in the core file and we would map all the libraries ++ to the only existing file loaded that time - the executable. */ ++ if (current_program_space->symfile_object_file != NULL ++ && (current_program_space->symfile_object_file->flags ++ & OBJF_BUILD_ID_CORE_LOADED) != 0) ++ build_id = build_id_addr_get (li->l_ld); + if (build_id != NULL) + { + char *name, *build_id_filename; +@@ -1272,23 +1286,7 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm, + xfree (name); + } + else +- { +- debug_print_missing (newobj->so_name, build_id_filename); +- +- /* In the case the main executable was found according to +- its build-id (from a core file) prevent loading +- a different build of a library with accidentally the +- same SO_NAME. +- +- It suppresses bogus backtraces (and prints "??" there +- instead) if the on-disk files no longer match the +- running program version. */ +- +- if (current_program_space->symfile_object_file != NULL +- && (current_program_space->symfile_object_file->flags +- & OBJF_BUILD_ID_CORE_LOADED) != 0) +- newobj->so_name[0] = 0; +- } ++ debug_print_missing (newobj->so_name, build_id_filename); + + xfree (build_id_filename); + xfree (build_id); +diff --git a/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c +@@ -0,0 +1,21 @@ ++/* Copyright 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 . */ ++ ++void ++lib (void) ++{ ++} +diff --git a/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c +@@ -0,0 +1,25 @@ ++/* Copyright 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 . */ ++ ++extern void lib (void); ++ ++int ++main (void) ++{ ++ lib (); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp +@@ -0,0 +1,105 @@ ++# Copyright 2016 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if {[skip_shlib_tests]} { ++ return 0 ++} ++ ++set testfile "gcore-buildid-exec-but-not-solib" ++set srcmainfile ${testfile}-main.c ++set srclibfile ${testfile}-lib.c ++set libfile [standard_output_file ${testfile}-lib.so] ++set objfile [standard_output_file ${testfile}-main.o] ++set executable ${testfile}-main ++set binfile [standard_output_file ${executable}] ++set gcorefile [standard_output_file ${executable}.gcore] ++set outdir [file dirname $binfile] ++ ++if { [gdb_compile_shlib ${srcdir}/${subdir}/${srclibfile} ${libfile} "debug additional_flags=-Wl,--build-id"] != "" ++ || [gdb_compile ${srcdir}/${subdir}/${srcmainfile} ${objfile} object {debug}] != "" } { ++ unsupported "-Wl,--build-id compilation failed" ++ return -1 ++} ++set opts [list debug shlib=${libfile} "additional_flags=-Wl,--build-id"] ++if { [gdb_compile ${objfile} ${binfile} executable $opts] != "" } { ++ unsupported "-Wl,--build-id compilation failed" ++ return -1 ++} ++ ++clean_restart $executable ++gdb_load_shlib $libfile ++ ++# Does this gdb support gcore? ++set test "help gcore" ++gdb_test_multiple $test $test { ++ -re "Undefined command: .gcore.*\r\n$gdb_prompt $" { ++ # gcore command not supported -- nothing to test here. ++ unsupported "gdb does not support gcore on this target" ++ return -1; ++ } ++ -re "Save a core file .*\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++ ++if { ![runto lib] } then { ++ return -1 ++} ++ ++set escapedfilename [string_to_regexp ${gcorefile}] ++ ++set test "save a corefile" ++gdb_test_multiple "gcore ${gcorefile}" $test { ++ -re "Saved corefile ${escapedfilename}\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "Can't create a corefile\r\n$gdb_prompt $" { ++ unsupported $test ++ return -1 ++ } ++} ++ ++# Now restart gdb and load the corefile. ++ ++clean_restart $executable ++gdb_load_shlib $libfile ++ ++set buildid [build_id_debug_filename_get $libfile] ++ ++regsub {\.debug$} $buildid {} buildid ++ ++set debugdir [standard_output_file ${testfile}-debugdir] ++file delete -force -- $debugdir ++ ++file mkdir $debugdir/[file dirname $libfile] ++file copy $libfile $debugdir/${libfile} ++ ++file mkdir $debugdir/[file dirname $buildid] ++file copy $libfile $debugdir/${buildid} ++ ++remote_exec build "ln -s /lib ${debugdir}/" ++remote_exec build "ln -s /lib64 ${debugdir}/" ++# /usr is not needed, all the libs are in /lib64: libm.so.6 libc.so.6 ld-linux-x86-64.so.2 ++ ++gdb_test "set solib-absolute-prefix $debugdir" ++ ++gdb_test_no_output "set debug-file-directory $debugdir" "set debug-file-directory" ++ ++gdb_test "core ${gcorefile}" "Core was generated by .*" "re-load generated corefile" ++ ++gdb_test "frame" "#0 \[^\r\n\]* lib .*" "library got loaded" ++ ++gdb_test "bt" ++gdb_test "info shared" diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch new file mode 100644 index 0000000..424681c --- /dev/null +++ b/gdb-6.6-buildid-locate.patch @@ -0,0 +1,1853 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-buildid-locate.patch + +;; New locating of the matching binaries from the pure core file (build-id). +;;=push+jan + +diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h +--- a/bfd/libbfd-in.h ++++ b/bfd/libbfd-in.h +@@ -115,7 +115,7 @@ static inline char * + bfd_strdup (const char *str) + { + size_t len = strlen (str) + 1; +- char *buf = bfd_malloc (len); ++ char *buf = (char *) bfd_malloc (len); + if (buf != NULL) + memcpy (buf, str, len); + return buf; +diff --git a/bfd/libbfd.h b/bfd/libbfd.h +--- a/bfd/libbfd.h ++++ b/bfd/libbfd.h +@@ -120,7 +120,7 @@ static inline char * + bfd_strdup (const char *str) + { + size_t len = strlen (str) + 1; +- char *buf = bfd_malloc (len); ++ char *buf = (char *) bfd_malloc (len); + if (buf != NULL) + memcpy (buf, str, len); + return buf; +diff --git a/gdb/build-id.c b/gdb/build-id.c +--- a/gdb/build-id.c ++++ b/gdb/build-id.c +@@ -24,13 +24,71 @@ + #include "gdbsupport/gdb_vecs.h" + #include "symfile.h" + #include "objfiles.h" ++#include ++#include "elf-bfd.h" ++#include "elf/common.h" ++#include "elf/external.h" ++#include "elf/internal.h" + #include "filenames.h" ++#include "gdb_bfd.h" ++#include "gdbcmd.h" + #include "gdbcore.h" ++#include "inferior.h" ++#include "objfiles.h" ++#include "observable.h" ++#include "symfile.h" ++ ++#define BUILD_ID_VERBOSE_NONE 0 ++#define BUILD_ID_VERBOSE_FILENAMES 1 ++#define BUILD_ID_VERBOSE_BINARY_PARSE 2 ++static int build_id_verbose = BUILD_ID_VERBOSE_FILENAMES; ++static void ++show_build_id_verbose (struct ui_file *file, int from_tty, ++ struct cmd_list_element *c, const char *value) ++{ ++ fprintf_filtered (file, _("Verbosity level of the build-id locator is %s.\n"), ++ value); ++} ++/* Locate NT_GNU_BUILD_ID and return its matching debug filename. ++ FIXME: NOTE decoding should be unified with the BFD core notes decoding. */ ++ ++static struct bfd_build_id * ++build_id_buf_get (bfd *templ, gdb_byte *buf, bfd_size_type size) ++{ ++ bfd_byte *p; ++ ++ p = buf; ++ while (p < buf + size) ++ { ++ /* FIXME: bad alignment assumption. */ ++ Elf_External_Note *xnp = (Elf_External_Note *) p; ++ size_t namesz = H_GET_32 (templ, xnp->namesz); ++ size_t descsz = H_GET_32 (templ, xnp->descsz); ++ bfd_byte *descdata = (gdb_byte *) xnp->name + BFD_ALIGN (namesz, 4); ++ ++ if (H_GET_32 (templ, xnp->type) == NT_GNU_BUILD_ID ++ && namesz == sizeof "GNU" ++ && memcmp (xnp->name, "GNU", sizeof "GNU") == 0) ++ { ++ size_t sz = descsz; ++ gdb_byte *data = (gdb_byte *) descdata; ++ struct bfd_build_id *retval; ++ ++ retval = (struct bfd_build_id *) xmalloc (sizeof *retval - 1 + sz); ++ retval->size = sz; ++ memcpy (retval->data, data, sz); ++ ++ return retval; ++ } ++ p = descdata + BFD_ALIGN (descsz, 4); ++ } ++ return NULL; ++} + + /* See build-id.h. */ + + const struct bfd_build_id * +-build_id_bfd_get (bfd *abfd) ++build_id_bfd_shdr_get (bfd *abfd) + { + if (!bfd_check_format (abfd, bfd_object) + && !bfd_check_format (abfd, bfd_core)) +@@ -43,6 +101,348 @@ build_id_bfd_get (bfd *abfd) + return NULL; + } + ++/* Core files may have missing (corrupt) SHDR but PDHR is correct there. ++ bfd_elf_bfd_from_remote_memory () has too much overhead by ++ allocating/reading all the available ELF PT_LOADs. */ ++ ++static struct bfd_build_id * ++build_id_phdr_get (bfd *templ, bfd_vma loadbase, unsigned e_phnum, ++ Elf_Internal_Phdr *i_phdr) ++{ ++ int i; ++ struct bfd_build_id *retval = NULL; ++ ++ for (i = 0; i < e_phnum; i++) ++ if (i_phdr[i].p_type == PT_NOTE && i_phdr[i].p_filesz > 0) ++ { ++ Elf_Internal_Phdr *hdr = &i_phdr[i]; ++ gdb_byte *buf; ++ int err; ++ ++ buf = (gdb_byte *) xmalloc (hdr->p_filesz); ++ err = target_read_memory (loadbase + i_phdr[i].p_vaddr, buf, ++ hdr->p_filesz); ++ if (err == 0) ++ retval = build_id_buf_get (templ, buf, hdr->p_filesz); ++ else ++ retval = NULL; ++ xfree (buf); ++ if (retval != NULL) ++ break; ++ } ++ return retval; ++} ++ ++/* First we validate the file by reading in the ELF header and checking ++ the magic number. */ ++ ++static inline bfd_boolean ++elf_file_p (Elf64_External_Ehdr *x_ehdrp64) ++{ ++ gdb_assert (sizeof (Elf64_External_Ehdr) >= sizeof (Elf32_External_Ehdr)); ++ gdb_assert (offsetof (Elf64_External_Ehdr, e_ident) ++ == offsetof (Elf32_External_Ehdr, e_ident)); ++ gdb_assert (sizeof (((Elf64_External_Ehdr *) 0)->e_ident) ++ == sizeof (((Elf32_External_Ehdr *) 0)->e_ident)); ++ ++ return ((x_ehdrp64->e_ident[EI_MAG0] == ELFMAG0) ++ && (x_ehdrp64->e_ident[EI_MAG1] == ELFMAG1) ++ && (x_ehdrp64->e_ident[EI_MAG2] == ELFMAG2) ++ && (x_ehdrp64->e_ident[EI_MAG3] == ELFMAG3)); ++} ++ ++/* Translate an ELF file header in external format into an ELF file header in ++ internal format. */ ++ ++#define H_GET_WORD(bfd, ptr) (is64 ? H_GET_64 (bfd, (ptr)) \ ++ : H_GET_32 (bfd, (ptr))) ++#define H_GET_SIGNED_WORD(bfd, ptr) (is64 ? H_GET_S64 (bfd, (ptr)) \ ++ : H_GET_S32 (bfd, (ptr))) ++ ++static void ++elf_swap_ehdr_in (bfd *abfd, ++ const Elf64_External_Ehdr *src64, ++ Elf_Internal_Ehdr *dst) ++{ ++ int is64 = bfd_get_arch_size (abfd) == 64; ++#define SRC(field) (is64 ? src64->field \ ++ : ((const Elf32_External_Ehdr *) src64)->field) ++ ++ int signed_vma = get_elf_backend_data (abfd)->sign_extend_vma; ++ memcpy (dst->e_ident, SRC (e_ident), EI_NIDENT); ++ dst->e_type = H_GET_16 (abfd, SRC (e_type)); ++ dst->e_machine = H_GET_16 (abfd, SRC (e_machine)); ++ dst->e_version = H_GET_32 (abfd, SRC (e_version)); ++ if (signed_vma) ++ dst->e_entry = H_GET_SIGNED_WORD (abfd, SRC (e_entry)); ++ else ++ dst->e_entry = H_GET_WORD (abfd, SRC (e_entry)); ++ dst->e_phoff = H_GET_WORD (abfd, SRC (e_phoff)); ++ dst->e_shoff = H_GET_WORD (abfd, SRC (e_shoff)); ++ dst->e_flags = H_GET_32 (abfd, SRC (e_flags)); ++ dst->e_ehsize = H_GET_16 (abfd, SRC (e_ehsize)); ++ dst->e_phentsize = H_GET_16 (abfd, SRC (e_phentsize)); ++ dst->e_phnum = H_GET_16 (abfd, SRC (e_phnum)); ++ dst->e_shentsize = H_GET_16 (abfd, SRC (e_shentsize)); ++ dst->e_shnum = H_GET_16 (abfd, SRC (e_shnum)); ++ dst->e_shstrndx = H_GET_16 (abfd, SRC (e_shstrndx)); ++ ++#undef SRC ++} ++ ++/* Translate an ELF program header table entry in external format into an ++ ELF program header table entry in internal format. */ ++ ++static void ++elf_swap_phdr_in (bfd *abfd, ++ const Elf64_External_Phdr *src64, ++ Elf_Internal_Phdr *dst) ++{ ++ int is64 = bfd_get_arch_size (abfd) == 64; ++#define SRC(field) (is64 ? src64->field \ ++ : ((const Elf32_External_Phdr *) src64)->field) ++ ++ int signed_vma = get_elf_backend_data (abfd)->sign_extend_vma; ++ ++ dst->p_type = H_GET_32 (abfd, SRC (p_type)); ++ dst->p_flags = H_GET_32 (abfd, SRC (p_flags)); ++ dst->p_offset = H_GET_WORD (abfd, SRC (p_offset)); ++ if (signed_vma) ++ { ++ dst->p_vaddr = H_GET_SIGNED_WORD (abfd, SRC (p_vaddr)); ++ dst->p_paddr = H_GET_SIGNED_WORD (abfd, SRC (p_paddr)); ++ } ++ else ++ { ++ dst->p_vaddr = H_GET_WORD (abfd, SRC (p_vaddr)); ++ dst->p_paddr = H_GET_WORD (abfd, SRC (p_paddr)); ++ } ++ dst->p_filesz = H_GET_WORD (abfd, SRC (p_filesz)); ++ dst->p_memsz = H_GET_WORD (abfd, SRC (p_memsz)); ++ dst->p_align = H_GET_WORD (abfd, SRC (p_align)); ++ ++#undef SRC ++} ++ ++#undef H_GET_SIGNED_WORD ++#undef H_GET_WORD ++ ++static Elf_Internal_Phdr * ++elf_get_phdr (bfd *templ, bfd_vma ehdr_vma, unsigned *e_phnum_pointer, ++ bfd_vma *loadbase_pointer) ++{ ++ /* sizeof (Elf64_External_Ehdr) >= sizeof (Elf32_External_Ehdr) */ ++ Elf64_External_Ehdr x_ehdr64; /* Elf file header, external form */ ++ Elf_Internal_Ehdr i_ehdr; /* Elf file header, internal form */ ++ bfd_size_type x_phdrs_size; ++ gdb_byte *x_phdrs_ptr; ++ Elf_Internal_Phdr *i_phdrs; ++ int err; ++ unsigned int i; ++ bfd_vma loadbase; ++ int loadbase_set; ++ ++ gdb_assert (templ != NULL); ++ gdb_assert (sizeof (Elf64_External_Ehdr) >= sizeof (Elf32_External_Ehdr)); ++ ++ /* Read in the ELF header in external format. */ ++ err = target_read_memory (ehdr_vma, (bfd_byte *) &x_ehdr64, sizeof x_ehdr64); ++ if (err) ++ { ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Error reading ELF header at address 0x%lx"), ++ (unsigned long) ehdr_vma); ++ return NULL; ++ } ++ ++ /* Now check to see if we have a valid ELF file, and one that BFD can ++ make use of. The magic number must match, the address size ('class') ++ and byte-swapping must match our XVEC entry. */ ++ ++ if (! elf_file_p (&x_ehdr64) ++ || x_ehdr64.e_ident[EI_VERSION] != EV_CURRENT ++ || !((bfd_get_arch_size (templ) == 64 ++ && x_ehdr64.e_ident[EI_CLASS] == ELFCLASS64) ++ || (bfd_get_arch_size (templ) == 32 ++ && x_ehdr64.e_ident[EI_CLASS] == ELFCLASS32))) ++ { ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Unrecognized ELF header at address 0x%lx"), ++ (unsigned long) ehdr_vma); ++ return NULL; ++ } ++ ++ /* Check that file's byte order matches xvec's */ ++ switch (x_ehdr64.e_ident[EI_DATA]) ++ { ++ case ELFDATA2MSB: /* Big-endian */ ++ if (! bfd_header_big_endian (templ)) ++ { ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Unrecognized " ++ "big-endian ELF header at address 0x%lx"), ++ (unsigned long) ehdr_vma); ++ return NULL; ++ } ++ break; ++ case ELFDATA2LSB: /* Little-endian */ ++ if (! bfd_header_little_endian (templ)) ++ { ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Unrecognized " ++ "little-endian ELF header at address 0x%lx"), ++ (unsigned long) ehdr_vma); ++ return NULL; ++ } ++ break; ++ case ELFDATANONE: /* No data encoding specified */ ++ default: /* Unknown data encoding specified */ ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Unrecognized " ++ "ELF header endianity at address 0x%lx"), ++ (unsigned long) ehdr_vma); ++ return NULL; ++ } ++ ++ elf_swap_ehdr_in (templ, &x_ehdr64, &i_ehdr); ++ ++ /* The file header tells where to find the program headers. ++ These are what we use to actually choose what to read. */ ++ ++ if (i_ehdr.e_phentsize != (bfd_get_arch_size (templ) == 64 ++ ? sizeof (Elf64_External_Phdr) ++ : sizeof (Elf32_External_Phdr)) ++ || i_ehdr.e_phnum == 0) ++ { ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Invalid ELF program headers from the ELF header " ++ "at address 0x%lx"), (unsigned long) ehdr_vma); ++ return NULL; ++ } ++ ++ x_phdrs_size = (bfd_get_arch_size (templ) == 64 ? sizeof (Elf64_External_Phdr) ++ : sizeof (Elf32_External_Phdr)); ++ ++ i_phdrs = (Elf_Internal_Phdr *) xmalloc (i_ehdr.e_phnum * (sizeof *i_phdrs + x_phdrs_size)); ++ x_phdrs_ptr = (gdb_byte *) &i_phdrs[i_ehdr.e_phnum]; ++ err = target_read_memory (ehdr_vma + i_ehdr.e_phoff, (bfd_byte *) x_phdrs_ptr, ++ i_ehdr.e_phnum * x_phdrs_size); ++ if (err) ++ { ++ free (i_phdrs); ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Error reading " ++ "ELF program headers at address 0x%lx"), ++ (unsigned long) (ehdr_vma + i_ehdr.e_phoff)); ++ return NULL; ++ } ++ ++ loadbase = ehdr_vma; ++ loadbase_set = 0; ++ for (i = 0; i < i_ehdr.e_phnum; ++i) ++ { ++ elf_swap_phdr_in (templ, (Elf64_External_Phdr *) ++ (x_phdrs_ptr + i * x_phdrs_size), &i_phdrs[i]); ++ /* IA-64 vDSO may have two mappings for one segment, where one mapping ++ is executable only, and one is read only. We must not use the ++ executable one (PF_R is the first one, PF_X the second one). */ ++ if (i_phdrs[i].p_type == PT_LOAD && (i_phdrs[i].p_flags & PF_R)) ++ { ++ /* Only the first PT_LOAD segment indicates the file bias. ++ Next segments may have P_VADDR arbitrarily higher. ++ If the first segment has P_VADDR zero any next segment must not ++ confuse us, the first one sets LOADBASE certainly enough. */ ++ if (!loadbase_set && i_phdrs[i].p_offset == 0) ++ { ++ loadbase = ehdr_vma - i_phdrs[i].p_vaddr; ++ loadbase_set = 1; ++ } ++ } ++ } ++ ++ if (build_id_verbose >= BUILD_ID_VERBOSE_BINARY_PARSE) ++ warning (_("build-id: Found ELF header at address 0x%lx, loadbase 0x%lx"), ++ (unsigned long) ehdr_vma, (unsigned long) loadbase); ++ ++ *e_phnum_pointer = i_ehdr.e_phnum; ++ *loadbase_pointer = loadbase; ++ return i_phdrs; ++} ++ ++/* BUILD_ID_ADDR_GET gets ADDR located somewhere in the object. ++ Find the first section before ADDR containing an ELF header. ++ We rely on the fact the sections from multiple files do not mix. ++ FIXME: We should check ADDR is contained _inside_ the section with possibly ++ missing content (P_FILESZ < P_MEMSZ). These omitted sections are currently ++ hidden by _BFD_ELF_MAKE_SECTION_FROM_PHDR. */ ++ ++static CORE_ADDR build_id_addr; ++struct build_id_addr_sect ++ { ++ struct build_id_addr_sect *next; ++ asection *sect; ++ }; ++static struct build_id_addr_sect *build_id_addr_sect; ++ ++static void build_id_addr_candidate (bfd *abfd, asection *sect, void *obj) ++{ ++ if (build_id_addr >= bfd_section_vma (sect)) ++ { ++ struct build_id_addr_sect *candidate; ++ ++ candidate = (struct build_id_addr_sect *) xmalloc (sizeof *candidate); ++ candidate->next = build_id_addr_sect; ++ build_id_addr_sect = candidate; ++ candidate->sect = sect; ++ } ++} ++ ++struct bfd_build_id * ++build_id_addr_get (CORE_ADDR addr) ++{ ++ struct build_id_addr_sect *candidate; ++ struct bfd_build_id *retval = NULL; ++ Elf_Internal_Phdr *i_phdr = NULL; ++ bfd_vma loadbase = 0; ++ unsigned e_phnum = 0; ++ ++ if (core_bfd == NULL) ++ return NULL; ++ ++ build_id_addr = addr; ++ gdb_assert (build_id_addr_sect == NULL); ++ bfd_map_over_sections (core_bfd, build_id_addr_candidate, NULL); ++ ++ /* Sections are sorted in the high-to-low VMAs order. ++ Stop the search on the first ELF header we find. ++ Do not continue the search even if it does not contain NT_GNU_BUILD_ID. */ ++ ++ for (candidate = build_id_addr_sect; candidate != NULL; ++ candidate = candidate->next) ++ { ++ i_phdr = elf_get_phdr (core_bfd, ++ bfd_section_vma (candidate->sect), ++ &e_phnum, &loadbase); ++ if (i_phdr != NULL) ++ break; ++ } ++ ++ if (i_phdr != NULL) ++ { ++ retval = build_id_phdr_get (core_bfd, loadbase, e_phnum, i_phdr); ++ xfree (i_phdr); ++ } ++ ++ while (build_id_addr_sect != NULL) ++ { ++ candidate = build_id_addr_sect; ++ build_id_addr_sect = candidate->next; ++ xfree (candidate); ++ } ++ ++ return retval; ++} ++ + /* See build-id.h. */ + + int +@@ -51,7 +451,7 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check) + const struct bfd_build_id *found; + int retval = 0; + +- found = build_id_bfd_get (abfd); ++ found = build_id_bfd_shdr_get (abfd); + + if (found == NULL) + warning (_("File \"%s\" has no build-id, file skipped"), +@@ -66,63 +466,166 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check) + return retval; + } + ++static char * ++link_resolve (const char *symlink, int level) ++{ ++ char buf[PATH_MAX + 1], *retval; ++ gdb::unique_xmalloc_ptr target; ++ ssize_t got; ++ ++ if (level > 10) ++ return xstrdup (symlink); ++ ++ got = readlink (symlink, buf, sizeof (buf)); ++ if (got < 0 || got >= sizeof (buf)) ++ return xstrdup (symlink); ++ buf[got] = '\0'; ++ ++ if (IS_ABSOLUTE_PATH (buf)) ++ target = make_unique_xstrdup (buf); ++ else ++ { ++ const std::string dir (ldirname (symlink)); ++ ++ target = xstrprintf ("%s" ++#ifndef HAVE_DOS_BASED_FILE_SYSTEM ++ "/" ++#else /* HAVE_DOS_BASED_FILE_SYSTEM */ ++ "\\" ++#endif /* HAVE_DOS_BASED_FILE_SYSTEM */ ++ "%s", dir.c_str(), buf); ++ } ++ ++ retval = link_resolve (target.get (), level + 1); ++ return retval; ++} ++ + /* Helper for build_id_to_debug_bfd. LINK is a path to a potential + build-id-based separate debug file, potentially a symlink to the real file. + If the file exists and matches BUILD_ID, return a BFD reference to it. */ + + static gdb_bfd_ref_ptr +-build_id_to_debug_bfd_1 (const std::string &link, size_t build_id_len, +- const bfd_byte *build_id) ++build_id_to_debug_bfd_1 (const std::string &orig_link, size_t build_id_len, ++ const bfd_byte *build_id, char **link_return) + { ++ gdb_bfd_ref_ptr ret_bfd = {}; ++ std::string ret_link; ++ + if (separate_debug_file_debug) + { +- fprintf_unfiltered (gdb_stdlog, _(" Trying %s..."), link.c_str ()); +- gdb_flush (gdb_stdlog); ++ fprintf_unfiltered (gdb_stdlog, _(" Trying %s..."), orig_link.c_str ()); ++ gdb_flush (gdb_stdout); + } + +- /* lrealpath() is expensive even for the usually non-existent files. */ +- gdb::unique_xmalloc_ptr filename_holder; +- const char *filename = nullptr; +- if (startswith (link, TARGET_SYSROOT_PREFIX)) +- filename = link.c_str (); +- else if (access (link.c_str (), F_OK) == 0) ++ for (unsigned seqno = 0;; seqno++) + { +- filename_holder.reset (lrealpath (link.c_str ())); +- filename = filename_holder.get (); +- } ++ std::string link = orig_link; + +- if (filename == NULL) +- { +- if (separate_debug_file_debug) +- fprintf_unfiltered (gdb_stdlog, +- _(" no, unable to compute real path\n")); ++ if (seqno > 0) ++ { ++ /* There can be multiple build-id symlinks pointing to real files ++ with the same build-id (such as hard links). Some of the real ++ files may not be installed. */ + +- return {}; +- } ++ string_appendf (link, ".%u", seqno); ++ } + +- /* We expect to be silent on the non-existing files. */ +- gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename, gnutarget); ++ ret_link = link; + +- if (debug_bfd == NULL) +- { +- if (separate_debug_file_debug) +- fprintf_unfiltered (gdb_stdlog, _(" no, unable to open.\n")); ++ struct stat statbuf_trash; ++ ++ /* `access' automatically dereferences LINK. */ ++ if (lstat (link.c_str (), &statbuf_trash) != 0) ++ { ++ /* Stop increasing SEQNO. */ ++ break; ++ } + +- return {}; ++ /* lrealpath() is expensive even for the usually non-existent files. */ ++ gdb::unique_xmalloc_ptr filename_holder; ++ const char *filename = nullptr; ++ if (startswith (link, TARGET_SYSROOT_PREFIX)) ++ filename = link.c_str (); ++ else if (access (link.c_str (), F_OK) == 0) ++ { ++ filename_holder.reset (lrealpath (link.c_str ())); ++ filename = filename_holder.get (); ++ } ++ ++ if (filename == NULL) ++ { ++ if (separate_debug_file_debug) ++ fprintf_unfiltered (gdb_stdlog, ++ _(" no, unable to compute real path\n")); ++ ++ continue; ++ } ++ ++ /* We expect to be silent on the non-existing files. */ ++ gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename, gnutarget); ++ ++ if (debug_bfd == NULL) ++ { ++ if (separate_debug_file_debug) ++ fprintf_unfiltered (gdb_stdlog, _(" no, unable to open.\n")); ++ ++ continue; ++ } ++ ++ if (!build_id_verify (debug_bfd.get(), build_id_len, build_id)) ++ { ++ if (separate_debug_file_debug) ++ fprintf_unfiltered (gdb_stdlog, ++ _(" no, build-id does not match.\n")); ++ ++ continue; ++ } ++ ++ ret_bfd = debug_bfd; ++ break; + } + +- if (!build_id_verify (debug_bfd.get(), build_id_len, build_id)) ++ std::string link_all; ++ ++ if (ret_bfd != NULL) + { + if (separate_debug_file_debug) +- fprintf_unfiltered (gdb_stdlog, _(" no, build-id does not match.\n")); ++ fprintf_unfiltered (gdb_stdlog, _(" yes!\n")); ++ } ++ else ++ { ++ /* If none of the real files is found report as missing file ++ always the non-.%u-suffixed file. */ ++ std::string link0 = orig_link; ++ ++ /* If the symlink has target request to install the target. ++ BASE-debuginfo.rpm contains the symlink but BASE.rpm may be missing. ++ https://bugzilla.redhat.com/show_bug.cgi?id=981154 */ ++ std::string link0_resolved (link_resolve (link0.c_str (), 0)); + +- return {}; ++ if (link_all.empty ()) ++ link_all = link0_resolved; ++ else ++ { ++ /* Use whitespace instead of DIRNAME_SEPARATOR to be compatible with ++ its possible use as an argument for installation command. */ ++ link_all += " " + link0_resolved; ++ } + } + +- if (separate_debug_file_debug) +- fprintf_unfiltered (gdb_stdlog, _(" yes!\n")); ++ if (link_return != NULL) ++ { ++ if (ret_bfd != NULL) ++ { ++ *link_return = xstrdup (ret_link.c_str ()); ++ } ++ else ++ { ++ *link_return = xstrdup (link_all.c_str ()); ++ } ++ } + +- return debug_bfd; ++ return ret_bfd; + } + + /* Common code for finding BFDs of a given build-id. This function +@@ -131,7 +634,7 @@ build_id_to_debug_bfd_1 (const std::string &link, size_t build_id_len, + + static gdb_bfd_ref_ptr + build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id, +- const char *suffix) ++ const char *suffix, char **link_return) + { + /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will + cause "/.build-id/..." lookups. */ +@@ -154,16 +657,17 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id, + if (size > 0) + { + size--; +- string_appendf (link, "%02x/", (unsigned) *data++); ++ string_appendf (link, "%02x", (unsigned) *data++); + } +- ++ if (size > 0) ++ link += "/"; + while (size-- > 0) + string_appendf (link, "%02x", (unsigned) *data++); + + link += suffix; + + gdb_bfd_ref_ptr debug_bfd +- = build_id_to_debug_bfd_1 (link, build_id_len, build_id); ++ = build_id_to_debug_bfd_1 (link, build_id_len, build_id, link_return); + if (debug_bfd != NULL) + return debug_bfd; + +@@ -174,7 +678,7 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id, + if (!gdb_sysroot.empty ()) + { + link = gdb_sysroot + link; +- debug_bfd = build_id_to_debug_bfd_1 (link, build_id_len, build_id); ++ debug_bfd = build_id_to_debug_bfd_1 (link, build_id_len, build_id, NULL); + if (debug_bfd != NULL) + return debug_bfd; + } +@@ -183,30 +687,595 @@ build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id, + return {}; + } + ++char * ++build_id_to_filename (const struct bfd_build_id *build_id, char **link_return) ++{ ++ gdb_bfd_ref_ptr abfd; ++ char *result; ++ ++ abfd = build_id_to_exec_bfd (build_id->size, build_id->data, link_return); ++ if (abfd == NULL) ++ return NULL; ++ ++ result = xstrdup (bfd_get_filename (abfd.get ())); ++ return result; ++} ++ ++#ifdef HAVE_LIBRPM ++ ++#include ++#include ++#include ++#include ++#ifdef DLOPEN_LIBRPM ++#include ++#endif ++ ++/* Workarodun https://bugzilla.redhat.com/show_bug.cgi?id=643031 ++ librpm must not exit() an application on SIGINT ++ ++ Enable or disable a signal handler. SIGNUM: signal to enable (or disable ++ if negative). HANDLER: sa_sigaction handler (or NULL to use ++ rpmsqHandler()). Returns: no. of refs, -1 on error. */ ++extern int rpmsqEnable (int signum, /* rpmsqAction_t handler */ void *handler); ++int ++rpmsqEnable (int signum, /* rpmsqAction_t handler */ void *handler) ++{ ++ return 0; ++} ++ ++/* This MISSING_RPM_HASH tracker is used to collect all the missing rpm files ++ and avoid their duplicities during a single inferior run. */ ++ ++static struct htab *missing_rpm_hash; ++ ++/* This MISSING_RPM_LIST tracker is used to collect and print as a single line ++ all the rpms right before the nearest GDB prompt. It gets cleared after ++ each such print (it is questionable if we should clear it after the print). ++ */ ++ ++struct missing_rpm ++ { ++ struct missing_rpm *next; ++ char rpm[1]; ++ }; ++static struct missing_rpm *missing_rpm_list; ++static int missing_rpm_list_entries; ++ ++/* Returns the count of newly added rpms. */ ++ ++static int ++missing_rpm_enlist (const char *filename) ++{ ++ static int rpm_init_done = 0; ++ rpmts ts; ++ rpmdbMatchIterator mi; ++ int count = 0; ++ ++#ifdef DLOPEN_LIBRPM ++ /* Duplicate here the declarations to verify they match. The same sanity ++ check is present also in `configure.ac'. */ ++ extern char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg); ++ static char *(*headerFormat_p) (Header h, const char * fmt, errmsg_t *errmsg); ++ extern int rpmReadConfigFiles(const char * file, const char * target); ++ static int (*rpmReadConfigFiles_p) (const char * file, const char * target); ++ extern rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi); ++ static rpmdbMatchIterator (*rpmdbFreeIterator_p) (rpmdbMatchIterator mi); ++ extern Header rpmdbNextIterator(rpmdbMatchIterator mi); ++ static Header (*rpmdbNextIterator_p) (rpmdbMatchIterator mi); ++ extern rpmts rpmtsCreate(void); ++ static rpmts (*rpmtsCreate_p) (void); ++ extern rpmts rpmtsFree(rpmts ts); ++ static rpmts (*rpmtsFree_p) (rpmts ts); ++ extern rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag, ++ const void * keyp, size_t keylen); ++ static rpmdbMatchIterator (*rpmtsInitIterator_p) (const rpmts ts, ++ rpmDbiTagVal rpmtag, ++ const void *keyp, ++ size_t keylen); ++#else /* !DLOPEN_LIBRPM */ ++# define headerFormat_p headerFormat ++# define rpmReadConfigFiles_p rpmReadConfigFiles ++# define rpmdbFreeIterator_p rpmdbFreeIterator ++# define rpmdbNextIterator_p rpmdbNextIterator ++# define rpmtsCreate_p rpmtsCreate ++# define rpmtsFree_p rpmtsFree ++# define rpmtsInitIterator_p rpmtsInitIterator ++#endif /* !DLOPEN_LIBRPM */ ++ ++ gdb_assert (filename != NULL); ++ ++ if (strcmp (filename, BUILD_ID_MAIN_EXECUTABLE_FILENAME) == 0) ++ return 0; ++ ++ if (is_target_filename (filename)) ++ return 0; ++ ++ if (filename[0] != '/') ++ { ++ warning (_("Ignoring non-absolute filename: <%s>"), filename); ++ return 0; ++ } ++ ++ if (!rpm_init_done) ++ { ++ static int init_tried; ++ ++ /* Already failed the initialization before? */ ++ if (init_tried) ++ return 0; ++ init_tried = 1; ++ ++#ifdef DLOPEN_LIBRPM ++ { ++ void *h; ++ ++ h = dlopen (DLOPEN_LIBRPM, RTLD_LAZY); ++ if (!h) ++ { ++ warning (_("Unable to open \"%s\" (%s), " ++ "missing debuginfos notifications will not be displayed"), ++ DLOPEN_LIBRPM, dlerror ()); ++ return 0; ++ } ++ ++ if (!((headerFormat_p = (char *(*) (Header h, const char * fmt, errmsg_t *errmsg)) dlsym (h, "headerFormat")) ++ && (rpmReadConfigFiles_p = (int (*) (const char * file, const char * target)) dlsym (h, "rpmReadConfigFiles")) ++ && (rpmdbFreeIterator_p = (rpmdbMatchIterator (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbFreeIterator")) ++ && (rpmdbNextIterator_p = (Header (*) (rpmdbMatchIterator mi)) dlsym (h, "rpmdbNextIterator")) ++ && (rpmtsCreate_p = (rpmts (*) (void)) dlsym (h, "rpmtsCreate")) ++ && (rpmtsFree_p = (rpmts (*) (rpmts ts)) dlsym (h, "rpmtsFree")) ++ && (rpmtsInitIterator_p = (rpmdbMatchIterator (*) (const rpmts ts, rpmDbiTagVal rpmtag, const void *keyp, size_t keylen)) dlsym (h, "rpmtsInitIterator")))) ++ { ++ warning (_("Opened library \"%s\" is incompatible (%s), " ++ "missing debuginfos notifications will not be displayed"), ++ DLOPEN_LIBRPM, dlerror ()); ++ if (dlclose (h)) ++ warning (_("Error closing library \"%s\": %s\n"), DLOPEN_LIBRPM, ++ dlerror ()); ++ return 0; ++ } ++ } ++#endif /* DLOPEN_LIBRPM */ ++ ++ if (rpmReadConfigFiles_p (NULL, NULL) != 0) ++ { ++ warning (_("Error reading the rpm configuration files")); ++ return 0; ++ } ++ ++ rpm_init_done = 1; ++ } ++ ++ ts = rpmtsCreate_p (); ++ ++ mi = rpmtsInitIterator_p (ts, RPMTAG_BASENAMES, filename, 0); ++ if (mi != NULL) ++ { ++ for (;;) ++ { ++ Header h; ++ char *debuginfo, **slot, *s, *s2; ++ errmsg_t err; ++ size_t srcrpmlen = sizeof (".src.rpm") - 1; ++ size_t debuginfolen = sizeof ("-debuginfo") - 1; ++ rpmdbMatchIterator mi_debuginfo; ++ ++ h = rpmdbNextIterator_p (mi); ++ if (h == NULL) ++ break; ++ ++ /* Verify the debuginfo file is not already installed. */ ++ ++ debuginfo = headerFormat_p (h, "%{sourcerpm}-debuginfo.%{arch}", ++ &err); ++ if (!debuginfo) ++ { ++ warning (_("Error querying the rpm file `%s': %s"), filename, ++ err); ++ continue; ++ } ++ /* s = `.src.rpm-debuginfo.%{arch}' */ ++ s = strrchr (debuginfo, '-') - srcrpmlen; ++ s2 = NULL; ++ if (s > debuginfo && memcmp (s, ".src.rpm", srcrpmlen) == 0) ++ { ++ /* s2 = `-%{release}.src.rpm-debuginfo.%{arch}' */ ++ s2 = (char *) memrchr (debuginfo, '-', s - debuginfo); ++ } ++ if (s2) ++ { ++ /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */ ++ s2 = (char *) memrchr (debuginfo, '-', s2 - debuginfo); ++ } ++ if (!s2) ++ { ++ warning (_("Error querying the rpm file `%s': %s"), filename, ++ debuginfo); ++ xfree (debuginfo); ++ continue; ++ } ++ /* s = `.src.rpm-debuginfo.%{arch}' */ ++ /* s2 = `-%{version}-%{release}.src.rpm-debuginfo.%{arch}' */ ++ memmove (s2 + debuginfolen, s2, s - s2); ++ memcpy (s2, "-debuginfo", debuginfolen); ++ /* s = `XXXX.%{arch}' */ ++ /* strlen ("XXXX") == srcrpmlen + debuginfolen */ ++ /* s2 = `-debuginfo-%{version}-%{release}XX.%{arch}' */ ++ /* strlen ("XX") == srcrpmlen */ ++ memmove (s + debuginfolen, s + srcrpmlen + debuginfolen, ++ strlen (s + srcrpmlen + debuginfolen) + 1); ++ /* s = `-debuginfo-%{version}-%{release}.%{arch}' */ ++ ++ /* RPMDBI_PACKAGES requires keylen == sizeof (int). */ ++ /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */ ++ mi_debuginfo = rpmtsInitIterator_p (ts, (rpmTag) RPMDBI_LABEL, debuginfo, 0); ++ xfree (debuginfo); ++ if (mi_debuginfo) ++ { ++ rpmdbFreeIterator_p (mi_debuginfo); ++ count = 0; ++ break; ++ } ++ ++ /* The allocated memory gets utilized below for MISSING_RPM_HASH. */ ++ debuginfo = headerFormat_p (h, ++ "%{name}-%{version}-%{release}.%{arch}", ++ &err); ++ if (!debuginfo) ++ { ++ warning (_("Error querying the rpm file `%s': %s"), filename, ++ err); ++ continue; ++ } ++ ++ /* Base package name for `debuginfo-install'. We do not use the ++ `yum' command directly as the line ++ yum --enablerepo='*debug*' install NAME-debuginfo.ARCH ++ would be more complicated than just: ++ debuginfo-install NAME-VERSION-RELEASE.ARCH ++ Do not supply the rpm base name (derived from .src.rpm name) as ++ debuginfo-install is unable to install the debuginfo package if ++ the base name PKG binary rpm is not installed while for example ++ PKG-libs would be installed (RH Bug 467901). ++ FUTURE: After multiple debuginfo versions simultaneously installed ++ get supported the support for the VERSION-RELEASE tags handling ++ may need an update. */ ++ ++ if (missing_rpm_hash == NULL) ++ { ++ /* DEL_F is passed NULL as MISSING_RPM_LIST's HTAB_DELETE ++ should not deallocate the entries. */ ++ ++ missing_rpm_hash = htab_create_alloc (64, htab_hash_string, ++ (int (*) (const void *, const void *)) streq, ++ NULL, xcalloc, xfree); ++ } ++ slot = (char **) htab_find_slot (missing_rpm_hash, debuginfo, INSERT); ++ /* XCALLOC never returns NULL. */ ++ gdb_assert (slot != NULL); ++ if (*slot == NULL) ++ { ++ struct missing_rpm *missing_rpm; ++ ++ *slot = debuginfo; ++ ++ missing_rpm = (struct missing_rpm *) xmalloc (sizeof (*missing_rpm) + strlen (debuginfo)); ++ strcpy (missing_rpm->rpm, debuginfo); ++ missing_rpm->next = missing_rpm_list; ++ missing_rpm_list = missing_rpm; ++ missing_rpm_list_entries++; ++ } ++ else ++ xfree (debuginfo); ++ count++; ++ } ++ rpmdbFreeIterator_p (mi); ++ } ++ ++ rpmtsFree_p (ts); ++ ++ return count; ++} ++ ++static bool ++missing_rpm_list_compar (const char *ap, const char *bp) ++{ ++ return strcoll (ap, bp) < 0; ++} ++ ++/* It returns a NULL-terminated array of strings needing to be FREEd. It may ++ also return only NULL. */ ++ ++static void ++missing_rpm_list_print (void) ++{ ++ struct missing_rpm *list_iter; ++ ++ if (missing_rpm_list_entries == 0) ++ return; ++ ++ std::vector array (missing_rpm_list_entries); ++ size_t idx = 0; ++ ++ for (list_iter = missing_rpm_list; list_iter != NULL; ++ list_iter = list_iter->next) ++ { ++ array[idx++] = list_iter->rpm; ++ } ++ gdb_assert (idx == missing_rpm_list_entries); ++ ++ std::sort (array.begin (), array.end (), missing_rpm_list_compar); ++ ++ /* We zero out the number of missing RPMs here because of a nasty ++ bug (see RHBZ 1801974). ++ ++ When we call 'puts_unfiltered' below, if pagination is on and if ++ the number of missing RPMs is big enough to trigger pagination, ++ we will end up in an infinite recursion. The call chain looks ++ like this: ++ ++ missing_rpm_list_print -> puts_unfiltered -> fputs_maybe_filtered ++ -> prompt_for_continue -> display_gdb_prompt -> ++ debug_flush_missing -> missing_rpm_list_print ... ++ ++ For this reason, we make sure MISSING_RPM_LIST_ENTRIES is zero ++ *before* calling any print function. */ ++ missing_rpm_list_entries = 0; ++ ++ printf_unfiltered (_("Missing separate debuginfos, use: %s"), ++#ifdef DNF_DEBUGINFO_INSTALL ++ "dnf " ++#endif ++ "debuginfo-install"); ++ for (const char *el : array) ++ { ++ puts_unfiltered (" "); ++ puts_unfiltered (el); ++ } ++ puts_unfiltered ("\n"); ++ ++ while (missing_rpm_list != NULL) ++ { ++ list_iter = missing_rpm_list; ++ missing_rpm_list = list_iter->next; ++ xfree (list_iter); ++ } ++} ++ ++static void ++missing_rpm_change (void) ++{ ++ debug_flush_missing (); ++ ++ gdb_assert (missing_rpm_list == NULL); ++ if (missing_rpm_hash != NULL) ++ { ++ htab_delete (missing_rpm_hash); ++ missing_rpm_hash = NULL; ++ } ++} ++ ++enum missing_exec ++ { ++ /* Init state. EXEC_BFD also still could be NULL. */ ++ MISSING_EXEC_NOT_TRIED, ++ /* We saw a non-NULL EXEC_BFD but RPM has no info about it. */ ++ MISSING_EXEC_NOT_FOUND, ++ /* We found EXEC_BFD by RPM and we either have its symbols (either embedded ++ or separate) or the main executable's RPM is now contained in ++ MISSING_RPM_HASH. */ ++ MISSING_EXEC_ENLISTED ++ }; ++static enum missing_exec missing_exec = MISSING_EXEC_NOT_TRIED; ++ ++#endif /* HAVE_LIBRPM */ ++ ++void ++debug_flush_missing (void) ++{ ++#ifdef HAVE_LIBRPM ++ missing_rpm_list_print (); ++#endif ++} ++ ++/* This MISSING_FILEPAIR_HASH tracker is used only for the duplicite messages ++ yum --enablerepo='*debug*' install ... ++ avoidance. */ ++ ++struct missing_filepair ++ { ++ char *binary; ++ char *debug; ++ char data[1]; ++ }; ++ ++static struct htab *missing_filepair_hash; ++static struct obstack missing_filepair_obstack; ++ ++static void * ++missing_filepair_xcalloc (size_t nmemb, size_t nmemb_size) ++{ ++ void *retval; ++ size_t size = nmemb * nmemb_size; ++ ++ retval = obstack_alloc (&missing_filepair_obstack, size); ++ memset (retval, 0, size); ++ return retval; ++} ++ ++static hashval_t ++missing_filepair_hash_func (const struct missing_filepair *elem) ++{ ++ hashval_t retval = 0; ++ ++ retval ^= htab_hash_string (elem->binary); ++ if (elem->debug != NULL) ++ retval ^= htab_hash_string (elem->debug); ++ ++ return retval; ++} ++ ++static int ++missing_filepair_eq (const struct missing_filepair *elem1, ++ const struct missing_filepair *elem2) ++{ ++ return strcmp (elem1->binary, elem2->binary) == 0 ++ && ((elem1->debug == NULL) == (elem2->debug == NULL)) ++ && (elem1->debug == NULL || strcmp (elem1->debug, elem2->debug) == 0); ++} ++ ++static void ++missing_filepair_change (void) ++{ ++ if (missing_filepair_hash != NULL) ++ { ++ obstack_free (&missing_filepair_obstack, NULL); ++ /* All their memory came just from missing_filepair_OBSTACK. */ ++ missing_filepair_hash = NULL; ++ } ++#ifdef HAVE_LIBRPM ++ missing_exec = MISSING_EXEC_NOT_TRIED; ++#endif ++} ++ ++static void ++debug_print_executable_changed (void) ++{ ++#ifdef HAVE_LIBRPM ++ missing_rpm_change (); ++#endif ++ missing_filepair_change (); ++} ++ ++/* Notify user the file BINARY with (possibly NULL) associated separate debug ++ information file DEBUG is missing. DEBUG may or may not be the build-id ++ file such as would be: ++ /usr/lib/debug/.build-id/dd/b1d2ce632721c47bb9e8679f369e2295ce71be.debug ++ */ ++ ++void ++debug_print_missing (const char *binary, const char *debug) ++{ ++ size_t binary_len0 = strlen (binary) + 1; ++ size_t debug_len0 = debug ? strlen (debug) + 1 : 0; ++ struct missing_filepair missing_filepair_find; ++ struct missing_filepair *missing_filepair; ++ struct missing_filepair **slot; ++ ++ if (build_id_verbose < BUILD_ID_VERBOSE_FILENAMES) ++ return; ++ ++ if (missing_filepair_hash == NULL) ++ { ++ obstack_init (&missing_filepair_obstack); ++ missing_filepair_hash = htab_create_alloc (64, ++ (hashval_t (*) (const void *)) missing_filepair_hash_func, ++ (int (*) (const void *, const void *)) missing_filepair_eq, NULL, ++ missing_filepair_xcalloc, NULL); ++ } ++ ++ /* Use MISSING_FILEPAIR_FIND first instead of calling obstack_alloc with ++ obstack_free in the case of a (rare) match. The problem is ALLOC_F for ++ MISSING_FILEPAIR_HASH allocates from MISSING_FILEPAIR_OBSTACK maintenance ++ structures for MISSING_FILEPAIR_HASH. Calling obstack_free would possibly ++ not to free only MISSING_FILEPAIR but also some such structures (allocated ++ during the htab_find_slot call). */ ++ ++ missing_filepair_find.binary = (char *) binary; ++ missing_filepair_find.debug = (char *) debug; ++ slot = (struct missing_filepair **) htab_find_slot (missing_filepair_hash, ++ &missing_filepair_find, ++ INSERT); ++ ++ /* While it may be still printed duplicitely with the missing debuginfo file ++ * it is due to once printing about the binary file build-id link and once ++ * about the .debug file build-id link as both the build-id symlinks are ++ * located in the debuginfo package. */ ++ ++ if (*slot != NULL) ++ return; ++ ++ missing_filepair = (struct missing_filepair *) obstack_alloc (&missing_filepair_obstack, ++ sizeof (*missing_filepair) - 1 ++ + binary_len0 + debug_len0); ++ missing_filepair->binary = missing_filepair->data; ++ memcpy (missing_filepair->binary, binary, binary_len0); ++ if (debug != NULL) ++ { ++ missing_filepair->debug = missing_filepair->binary + binary_len0; ++ memcpy (missing_filepair->debug, debug, debug_len0); ++ } ++ else ++ missing_filepair->debug = NULL; ++ ++ *slot = missing_filepair; ++ ++#ifdef HAVE_LIBRPM ++ if (missing_exec == MISSING_EXEC_NOT_TRIED) ++ { ++ const char *execfilename = get_exec_file (0); ++ ++ if (execfilename != NULL) ++ { ++ if (missing_rpm_enlist (execfilename) == 0) ++ missing_exec = MISSING_EXEC_NOT_FOUND; ++ else ++ missing_exec = MISSING_EXEC_ENLISTED; ++ } ++ } ++ if (missing_exec != MISSING_EXEC_ENLISTED) ++ if ((binary[0] == 0 || missing_rpm_enlist (binary) == 0) ++ && (debug == NULL || missing_rpm_enlist (debug) == 0)) ++#endif /* HAVE_LIBRPM */ ++ { ++ /* We do not collect and flush these messages as each such message ++ already requires its own separate lines. */ ++ ++ fprintf_unfiltered (gdb_stdlog, ++ _("Missing separate debuginfo for %s\n"), binary); ++ if (debug != NULL) ++ fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"), ++#ifdef DNF_DEBUGINFO_INSTALL ++ "dnf" ++#else ++ "yum" ++#endif ++ " --enablerepo='*debug*' install", debug); ++ } ++} ++ + /* See build-id.h. */ + + gdb_bfd_ref_ptr +-build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id) ++build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id, ++ char **link_return) + { +- return build_id_to_bfd_suffix (build_id_len, build_id, ".debug"); ++ return build_id_to_bfd_suffix (build_id_len, build_id, ".debug", ++ link_return); + } + + /* See build-id.h. */ + + gdb_bfd_ref_ptr +-build_id_to_exec_bfd (size_t build_id_len, const bfd_byte *build_id) ++build_id_to_exec_bfd (size_t build_id_len, const bfd_byte *build_id, ++ char **link_return) + { +- return build_id_to_bfd_suffix (build_id_len, build_id, ""); ++ return build_id_to_bfd_suffix (build_id_len, build_id, "", link_return); + } + + /* See build-id.h. */ + + std::string +-find_separate_debug_file_by_buildid (struct objfile *objfile) ++find_separate_debug_file_by_buildid (struct objfile *objfile, ++ gdb::unique_xmalloc_ptr *build_id_filename_return) + { + const struct bfd_build_id *build_id; + +- build_id = build_id_bfd_get (objfile->obfd); ++ if (build_id_filename_return) ++ *build_id_filename_return = NULL; ++ ++ build_id = build_id_bfd_shdr_get (objfile->obfd); + if (build_id != NULL) + { + if (separate_debug_file_debug) +@@ -214,8 +1283,21 @@ find_separate_debug_file_by_buildid (struct objfile *objfile) + _("\nLooking for separate debug info (build-id) for " + "%s\n"), objfile_name (objfile)); + ++ char *build_id_filename_cstr = NULL; + gdb_bfd_ref_ptr abfd (build_id_to_debug_bfd (build_id->size, +- build_id->data)); ++ build_id->data, ++ (!build_id_filename_return ? NULL : &build_id_filename_cstr))); ++ if (build_id_filename_return) ++ { ++ if (!build_id_filename_cstr) ++ gdb_assert (!*build_id_filename_return); ++ else ++ { ++ *build_id_filename_return = gdb::unique_xmalloc_ptr (build_id_filename_cstr); ++ build_id_filename_cstr = NULL; ++ } ++ } ++ + /* Prevent looping on a stripped .debug file. */ + if (abfd != NULL + && filename_cmp (bfd_get_filename (abfd.get ()), +@@ -228,3 +1310,22 @@ find_separate_debug_file_by_buildid (struct objfile *objfile) + + return std::string (); + } ++ ++void _initialize_build_id (); ++ ++void ++_initialize_build_id () ++{ ++ add_setshow_zinteger_cmd ("build-id-verbose", no_class, &build_id_verbose, ++ _("\ ++Set debugging level of the build-id locator."), _("\ ++Show debugging level of the build-id locator."), _("\ ++Level 1 (default) enables printing the missing debug filenames,\n\ ++level 2 also prints the parsing of binaries to find the identificators."), ++ NULL, ++ show_build_id_verbose, ++ &setlist, &showlist); ++ ++ gdb::observers::executable_changed.attach (debug_print_executable_changed, ++ "build-id"); ++} +diff --git a/gdb/build-id.h b/gdb/build-id.h +--- a/gdb/build-id.h ++++ b/gdb/build-id.h +@@ -23,9 +23,10 @@ + #include "gdb_bfd.h" + #include "gdbsupport/rsp-low.h" + +-/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */ ++/* Separate debuginfo files have corrupted PHDR but SHDR is correct there. ++ Locate NT_GNU_BUILD_ID from ABFD and return its content. */ + +-extern const struct bfd_build_id *build_id_bfd_get (bfd *abfd); ++extern const struct bfd_build_id *build_id_bfd_shdr_get (bfd *abfd); + + /* Return true if ABFD has NT_GNU_BUILD_ID matching the CHECK value. + Otherwise, issue a warning and return false. */ +@@ -38,21 +39,26 @@ extern int build_id_verify (bfd *abfd, + can be found, return NULL. */ + + extern gdb_bfd_ref_ptr build_id_to_debug_bfd (size_t build_id_len, +- const bfd_byte *build_id); ++ const bfd_byte *build_id, ++ char **link_return = NULL); ++ ++extern char *build_id_to_filename (const struct bfd_build_id *build_id, ++ char **link_return); + + /* Find and open a BFD for an executable file given a build-id. If no BFD + can be found, return NULL. The returned reference to the BFD must be + released by the caller. */ + + extern gdb_bfd_ref_ptr build_id_to_exec_bfd (size_t build_id_len, +- const bfd_byte *build_id); ++ const bfd_byte *build_id, ++ char **link_return); + + /* Find the separate debug file for OBJFILE, by using the build-id + associated with OBJFILE's BFD. If successful, returns the file name for the + separate debug file, otherwise, return an empty string. */ + +-extern std::string find_separate_debug_file_by_buildid +- (struct objfile *objfile); ++extern std::string find_separate_debug_file_by_buildid (struct objfile *objfile, ++ gdb::unique_xmalloc_ptr *build_id_filename_return); + + /* Return an hex-string representation of BUILD_ID. */ + +diff --git a/gdb/coffread.c b/gdb/coffread.c +--- a/gdb/coffread.c ++++ b/gdb/coffread.c +@@ -710,7 +710,8 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) + /* Try to add separate debug file if no symbols table found. */ + if (!objfile->has_partial_symbols ()) + { +- std::string debugfile = find_separate_debug_file_by_buildid (objfile); ++ std::string debugfile = find_separate_debug_file_by_buildid (objfile, ++ NULL); + + if (debugfile.empty ()) + debugfile = find_separate_debug_file_by_debuglink (objfile); +diff --git a/gdb/corelow.c b/gdb/corelow.c +--- a/gdb/corelow.c ++++ b/gdb/corelow.c +@@ -22,6 +22,10 @@ + #include + #include + #include "frame.h" /* required by inferior.h */ ++#include "auxv.h" ++#include "build-id.h" ++#include "elf/common.h" ++#include "gdbcmd.h" + #include "inferior.h" + #include "infrun.h" + #include "symtab.h" +@@ -356,6 +360,8 @@ add_to_thread_list (asection *asect, asection *reg_sect) + switch_to_thread (thr); /* Yes, make it current. */ + } + ++static bool build_id_core_loads = true; ++ + /* Issue a message saying we have no core to debug, if FROM_TTY. */ + + static void +@@ -392,19 +398,26 @@ core_file_command (const char *filename, int from_tty) + static void + locate_exec_from_corefile_build_id (bfd *abfd, int from_tty) + { +- const bfd_build_id *build_id = build_id_bfd_get (abfd); ++ const bfd_build_id *build_id = build_id_bfd_shdr_get (abfd); + if (build_id == nullptr) + return; + ++ char *build_id_filename; + gdb_bfd_ref_ptr execbfd +- = build_id_to_exec_bfd (build_id->size, build_id->data); ++ = build_id_to_exec_bfd (build_id->size, build_id->data, ++ &build_id_filename); + + if (execbfd != nullptr) + { + exec_file_attach (bfd_get_filename (execbfd.get ()), from_tty); + symbol_file_add_main (bfd_get_filename (execbfd.get ()), + symfile_add_flag (from_tty ? SYMFILE_VERBOSE : 0)); ++ if (current_program_space->symfile_object_file != NULL) ++ current_program_space->symfile_object_file->flags |= ++ OBJF_BUILD_ID_CORE_LOADED; + } ++ else ++ debug_print_missing (BUILD_ID_MAIN_EXECUTABLE_FILENAME, build_id_filename); + } + + /* See gdbcore.h. */ +@@ -1209,4 +1222,11 @@ _initialize_corelow () + maintenance_print_core_file_backed_mappings, + _("Print core file's file-backed mappings."), + &maintenanceprintlist); ++ ++ add_setshow_boolean_cmd ("build-id-core-loads", class_files, ++ &build_id_core_loads, _("\ ++Set whether CORE-FILE loads the build-id associated files automatically."), _("\ ++Show whether CORE-FILE loads the build-id associated files automatically."), ++ NULL, NULL, NULL, ++ &setlist, &showlist); + } +diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo +--- a/gdb/doc/gdb.texinfo ++++ b/gdb/doc/gdb.texinfo +@@ -21524,6 +21524,27 @@ information files. + + @end table + ++You can also adjust the current verbosity of the @dfn{build id} locating. ++ ++@table @code ++ ++@kindex set build-id-verbose ++@item set build-id-verbose 0 ++No additional messages are printed. ++ ++@item set build-id-verbose 1 ++Missing separate debug filenames are printed. ++ ++@item set build-id-verbose 2 ++Missing separate debug filenames are printed and also all the parsing of the ++binaries to find their @dfn{build id} content is printed. ++ ++@kindex show build-id-verbose ++@item show build-id-verbose ++Show the current verbosity value for the @dfn{build id} content locating. ++ ++@end table ++ + @cindex @code{.gnu_debuglink} sections + @cindex debug link sections + A debug link is a special section of the executable file named +diff --git a/gdb/dwarf2/index-cache.c b/gdb/dwarf2/index-cache.c +--- a/gdb/dwarf2/index-cache.c ++++ b/gdb/dwarf2/index-cache.c +@@ -97,7 +97,7 @@ index_cache::store (dwarf2_per_objfile *per_objfile) + return; + + /* Get build id of objfile. */ +- const bfd_build_id *build_id = build_id_bfd_get (obj->obfd); ++ const bfd_build_id *build_id = build_id_bfd_shdr_get (obj->obfd); + if (build_id == nullptr) + { + index_cache_debug ("objfile %s has no build id", +@@ -114,7 +114,8 @@ index_cache::store (dwarf2_per_objfile *per_objfile) + + if (dwz != nullptr) + { +- const bfd_build_id *dwz_build_id = build_id_bfd_get (dwz->dwz_bfd.get ()); ++ const bfd_build_id *dwz_build_id ++ = build_id_bfd_shdr_get (dwz->dwz_bfd.get ()); + + if (dwz_build_id == nullptr) + { +diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c +--- a/gdb/dwarf2/read.c ++++ b/gdb/dwarf2/read.c +@@ -5476,7 +5476,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner) + static gdb::array_view + get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd) + { +- const bfd_build_id *build_id = build_id_bfd_get (obj->obfd); ++ const bfd_build_id *build_id = build_id_bfd_shdr_get (obj->obfd); + if (build_id == nullptr) + return {}; + +@@ -5489,7 +5489,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd) + static gdb::array_view + get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz) + { +- const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ()); ++ const bfd_build_id *build_id = build_id_bfd_shdr_get (dwz->dwz_bfd.get ()); + if (build_id == nullptr) + return {}; + +diff --git a/gdb/elfread.c b/gdb/elfread.c +--- a/gdb/elfread.c ++++ b/gdb/elfread.c +@@ -1270,7 +1270,9 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) + && objfile->separate_debug_objfile == NULL + && objfile->separate_debug_objfile_backlink == NULL) + { +- std::string debugfile = find_separate_debug_file_by_buildid (objfile); ++ gdb::unique_xmalloc_ptr build_id_filename; ++ std::string debugfile ++ = find_separate_debug_file_by_buildid (objfile, &build_id_filename); + + if (debugfile.empty ()) + debugfile = find_separate_debug_file_by_debuglink (objfile); +@@ -1285,7 +1287,7 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) + else + { + has_dwarf2 = false; +- const struct bfd_build_id *build_id = build_id_bfd_get (objfile->obfd); ++ const struct bfd_build_id *build_id = build_id_bfd_shdr_get (objfile->obfd); + + if (build_id != nullptr) + { +@@ -1310,6 +1312,10 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) + has_dwarf2 = true; + } + } ++ /* Check if any separate debug info has been extracted out. */ ++ else if (bfd_get_section_by_name (objfile->obfd, ".gnu_debuglink") ++ != NULL) ++ debug_print_missing (objfile_name (objfile), build_id_filename.get ()); + } + } + } +diff --git a/gdb/exec.c b/gdb/exec.c +--- a/gdb/exec.c ++++ b/gdb/exec.c +@@ -238,7 +238,7 @@ validate_exec_file (int from_tty) + current_exec_file = get_exec_file (0); + + const bfd_build_id *exec_file_build_id +- = build_id_bfd_get (current_program_space->exec_bfd ()); ++ = build_id_bfd_shdr_get (current_program_space->exec_bfd ()); + if (exec_file_build_id != nullptr) + { + /* Prepend the target prefix, to force gdb_bfd_open to open the +@@ -251,7 +251,7 @@ validate_exec_file (int from_tty) + if (abfd != nullptr) + { + const bfd_build_id *target_exec_file_build_id +- = build_id_bfd_get (abfd.get ()); ++ = build_id_bfd_shdr_get (abfd.get ()); + + if (target_exec_file_build_id != nullptr) + { +diff --git a/gdb/objfiles.h b/gdb/objfiles.h +--- a/gdb/objfiles.h ++++ b/gdb/objfiles.h +@@ -769,6 +769,10 @@ struct objfile + bool skip_jit_symbol_lookup = false; + }; + ++/* This file was loaded according to the BUILD_ID_CORE_LOADS rules. */ ++ ++#define OBJF_BUILD_ID_CORE_LOADED static_cast(1 << 12) ++ + /* A deleter for objfile. */ + + struct objfile_deleter +diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c +--- a/gdb/python/py-objfile.c ++++ b/gdb/python/py-objfile.c +@@ -132,7 +132,7 @@ objfpy_get_build_id (PyObject *self, void *closure) + + try + { +- build_id = build_id_bfd_get (objfile->obfd); ++ build_id = build_id_bfd_shdr_get (objfile->obfd); + } + catch (const gdb_exception &except) + { +@@ -600,7 +600,7 @@ objfpy_lookup_objfile_by_build_id (const char *build_id) + /* Don't return separate debug files. */ + if (objfile->separate_debug_objfile_backlink != NULL) + continue; +- obfd_build_id = build_id_bfd_get (objfile->obfd); ++ obfd_build_id = build_id_bfd_shdr_get (objfile->obfd); + if (obfd_build_id == NULL) + continue; + if (objfpy_build_id_matches (obfd_build_id, build_id)) +diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c +--- a/gdb/solib-svr4.c ++++ b/gdb/solib-svr4.c +@@ -45,6 +45,7 @@ + #include "auxv.h" + #include "gdb_bfd.h" + #include "probe.h" ++#include "build-id.h" + + static struct link_map_offsets *svr4_fetch_link_map_offsets (void); + static int svr4_have_link_map_offsets (void); +@@ -1248,9 +1249,51 @@ svr4_read_so_list (svr4_info *info, CORE_ADDR lm, CORE_ADDR prev_lm, + continue; + } + +- strncpy (newobj->so_name, buffer.get (), SO_NAME_MAX_PATH_SIZE - 1); +- newobj->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; +- strcpy (newobj->so_original_name, newobj->so_name); ++ { ++ struct bfd_build_id *build_id; ++ ++ strncpy (newobj->so_original_name, buffer.get (), SO_NAME_MAX_PATH_SIZE - 1); ++ newobj->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; ++ /* May get overwritten below. */ ++ strcpy (newobj->so_name, newobj->so_original_name); ++ ++ build_id = build_id_addr_get (((lm_info_svr4 *) newobj->lm_info)->l_ld); ++ if (build_id != NULL) ++ { ++ char *name, *build_id_filename; ++ ++ /* Missing the build-id matching separate debug info file ++ would be handled while SO_NAME gets loaded. */ ++ name = build_id_to_filename (build_id, &build_id_filename); ++ if (name != NULL) ++ { ++ strncpy (newobj->so_name, name, SO_NAME_MAX_PATH_SIZE - 1); ++ newobj->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; ++ xfree (name); ++ } ++ else ++ { ++ debug_print_missing (newobj->so_name, build_id_filename); ++ ++ /* In the case the main executable was found according to ++ its build-id (from a core file) prevent loading ++ a different build of a library with accidentally the ++ same SO_NAME. ++ ++ It suppresses bogus backtraces (and prints "??" there ++ instead) if the on-disk files no longer match the ++ running program version. */ ++ ++ if (current_program_space->symfile_object_file != NULL ++ && (current_program_space->symfile_object_file->flags ++ & OBJF_BUILD_ID_CORE_LOADED) != 0) ++ newobj->so_name[0] = 0; ++ } ++ ++ xfree (build_id_filename); ++ xfree (build_id); ++ } ++ } + + /* If this entry has no name, or its name matches the name + for the main executable, don't include it in the list. */ +diff --git a/gdb/source.c b/gdb/source.c +--- a/gdb/source.c ++++ b/gdb/source.c +@@ -1199,7 +1199,7 @@ open_source_file (struct symtab *s) + srcpath += s->filename; + } + +- const struct bfd_build_id *build_id = build_id_bfd_get (ofp->obfd); ++ const struct bfd_build_id *build_id = build_id_bfd_shdr_get (ofp->obfd); + + /* Query debuginfod for the source file. */ + if (build_id != nullptr && !srcpath.empty ()) +diff --git a/gdb/symfile.h b/gdb/symfile.h +--- a/gdb/symfile.h ++++ b/gdb/symfile.h +@@ -332,12 +332,18 @@ bool expand_symtabs_matching + void map_symbol_filenames (gdb::function_view fun, + bool need_fullname); + ++ + /* Target-agnostic function to load the sections of an executable into memory. + + ARGS should be in the form "EXECUTABLE [OFFSET]", where OFFSET is an + optional offset to apply to each section. */ + extern void generic_load (const char *args, int from_tty); + ++/* build-id support. */ ++extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr); ++extern void debug_print_missing (const char *binary, const char *debug); ++#define BUILD_ID_MAIN_EXECUTABLE_FILENAME _("the main executable file") ++ + /* From minidebug.c. */ + + extern gdb_bfd_ref_ptr find_separate_debug_file_in_section (struct objfile *); +diff --git a/gdb/testsuite/gdb.base/corefile.exp b/gdb/testsuite/gdb.base/corefile.exp +--- a/gdb/testsuite/gdb.base/corefile.exp ++++ b/gdb/testsuite/gdb.base/corefile.exp +@@ -343,3 +343,33 @@ gdb_test_multiple "core-file $corefile" $test { + pass $test + } + } ++ ++ ++# Test auto-loading of binary files through build-id from the core file. ++set buildid [build_id_debug_filename_get $binfile] ++set wholetest "binfile found by build-id" ++if {$buildid == ""} { ++ untested "$wholetest (binary has no build-id)" ++} else { ++ gdb_exit ++ gdb_start ++ ++ regsub {\.debug$} $buildid {} buildid ++ set debugdir [standard_output_file ${testfile}-debugdir] ++ file delete -force -- $debugdir ++ file mkdir $debugdir/[file dirname $buildid] ++ file copy $binfile $debugdir/$buildid ++ ++ set test "show debug-file-directory" ++ gdb_test_multiple $test $test { ++ -re "The directory where separate debug symbols are searched for is \"(.*)\"\\.\r\n$gdb_prompt $" { ++ set debugdir_orig $expect_out(1,string) ++ pass $test ++ } ++ } ++ gdb_test_no_output "set debug-file-directory $debugdir:$debugdir_orig" "set debug-file-directory" ++ gdb_test "show build-id-core-loads" {Whether CORE-FILE loads the build-id associated files automatically is on\.} ++ gdb_test "core-file $corefile" "\r\nProgram terminated with .*" "core-file without executable" ++ gdb_test "info files" "Local exec file:\r\n\[ \t\]*`[string_to_regexp $debugdir/$buildid]', file type .*" ++ pass $wholetest ++} +diff --git a/gdb/testsuite/gdb.base/gdbinit-history.exp b/gdb/testsuite/gdb.base/gdbinit-history.exp +--- a/gdb/testsuite/gdb.base/gdbinit-history.exp ++++ b/gdb/testsuite/gdb.base/gdbinit-history.exp +@@ -185,7 +185,8 @@ proc test_empty_history_filename { } { + global env + global gdb_prompt + +- set common_history [list "set height 0" "set width 0"] ++ set common_history [list "set height 0" "set width 0" \ ++ "set build-id-verbose 0"] + + set test_dir [standard_output_file history_test] + remote_exec host "mkdir -p $test_dir" +diff --git a/gdb/testsuite/gdb.base/new-ui-pending-input.exp b/gdb/testsuite/gdb.base/new-ui-pending-input.exp +--- a/gdb/testsuite/gdb.base/new-ui-pending-input.exp ++++ b/gdb/testsuite/gdb.base/new-ui-pending-input.exp +@@ -62,6 +62,7 @@ proc test_command_line_new_ui_pending_input {} { + set options "" + append options " -iex \"set height 0\"" + append options " -iex \"set width 0\"" ++ append options " -iex \"set build-id-verbose 0\"" + append options " -iex \"new-ui console $extra_tty_name\"" + append options " -ex \"b $bpline\"" + append options " -ex \"run\"" +diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp +--- a/gdb/testsuite/lib/gdb.exp ++++ b/gdb/testsuite/lib/gdb.exp +@@ -141,7 +141,8 @@ if ![info exists INTERNAL_GDBFLAGS] { + "-nx" \ + "-data-directory $BUILD_DATA_DIRECTORY" \ + {-iex "set height 0"} \ +- {-iex "set width 0"}]] ++ {-iex "set width 0"} \ ++ {-iex "set build-id-verbose 0"}]] + } + + # The variable gdb_prompt is a regexp which matches the gdb prompt. +@@ -2200,6 +2201,17 @@ proc default_gdb_start { } { + } + } + ++ # Turn off the missing warnings as the testsuite does not expect it. ++ send_gdb "set build-id-verbose 0\n" ++ gdb_expect 10 { ++ -re "$gdb_prompt $" { ++ verbose "Disabled the missing debug infos warnings." 2 ++ } ++ timeout { ++ warning "Could not disable the missing debug infos warnings.." ++ } ++ } ++ + gdb_debug_init + return 0 + } +diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp +--- a/gdb/testsuite/lib/mi-support.exp ++++ b/gdb/testsuite/lib/mi-support.exp +@@ -322,6 +322,16 @@ proc default_mi_gdb_start { args } { + warning "Couldn't set the width to 0." + } + } ++ # Turn off the missing warnings as the testsuite does not expect it. ++ send_gdb "190-gdb-set build-id-verbose 0\n" ++ gdb_expect 10 { ++ -re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" { ++ verbose "Disabled the missing debug infos warnings." 2 ++ } ++ timeout { ++ warning "Could not disable the missing debug infos warnings.." ++ } ++ } + + if { $separate_inferior_pty } { + mi_create_inferior_pty diff --git a/gdb-6.6-bz229517-gcore-without-terminal.patch b/gdb-6.6-bz229517-gcore-without-terminal.patch new file mode 100644 index 0000000..2c127cc --- /dev/null +++ b/gdb-6.6-bz229517-gcore-without-terminal.patch @@ -0,0 +1,188 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-bz229517-gcore-without-terminal.patch + +;; Allow running `/usr/bin/gcore' with provided but inaccessible tty (BZ 229517). +;;=fedoratest + +2007-04-22 Jan Kratochvil + + * gdb_gcore.sh: Redirect GDB from ` + + * gdb.base/gcorebg.exp, gdb.base/gcorebg.c: New files. + +diff --git a/gdb/testsuite/gdb.base/gcorebg.c b/gdb/testsuite/gdb.base/gcorebg.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcorebg.c +@@ -0,0 +1,49 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int main (int argc, char **argv) ++{ ++ pid_t pid = 0; ++ pid_t ppid; ++ char buf[1024*2 + 500]; ++ int gotint; ++ ++ if (argc != 4) ++ { ++ fprintf (stderr, "Syntax: %s {standard|detached} \n", ++ argv[0]); ++ exit (1); ++ } ++ ++ pid = fork (); ++ ++ switch (pid) ++ { ++ case 0: ++ if (strcmp (argv[1], "detached") == 0) ++ setpgrp (); ++ ppid = getppid (); ++ gotint = snprintf (buf, sizeof (buf), "sh %s -o %s %d", argv[2], argv[3], (int) ppid); ++ assert (gotint < sizeof (buf)); ++ system (buf); ++ fprintf (stderr, "Killing parent PID %d\n", ppid); ++ kill (ppid, SIGTERM); ++ break; ++ ++ case -1: ++ perror ("fork err\n"); ++ exit (1); ++ break; ++ ++ default: ++ fprintf (stderr,"Sleeping as PID %d\n", getpid ()); ++ sleep (60); ++ } ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/gcorebg.exp b/gdb/testsuite/gdb.base/gcorebg.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gcorebg.exp +@@ -0,0 +1,113 @@ ++# Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Please email any bugs, comments, and/or additions to this file to: ++# bug-gdb@prep.ai.mit.edu ++ ++# This file was written by Jan Kratochvil . ++# This is a test for `gdb_gcore.sh' functionality. ++# It also tests a regression with `gdb_gcore.sh' being run without its ++# accessible terminal. ++ ++if ![info exists GCORE] { ++ set GCORE "[standard_output_file ../../../../gcore]" ++} ++verbose "using GCORE = $GCORE" 2 ++ ++set testfile "gcorebg" ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++set corefile [standard_output_file ${testfile}.test] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ untested gcorebg.exp ++ return -1 ++} ++ ++# Cleanup. ++ ++proc core_clean {} { ++ global corefile ++ ++ foreach file [glob -nocomplain [join [list $corefile *] ""]] { ++ verbose "Delete file $file" 1 ++ remote_file target delete $file ++ } ++} ++core_clean ++remote_file target delete "./gdb" ++ ++# Generate the core file. ++ ++# Provide `./gdb' for `gdb_gcore.sh' running it as a bare `gdb' command. ++# Setup also `$PATH' appropriately. ++# If GDB was not found let `gdb_gcore.sh' to find the system GDB by `$PATH'. ++if {$GDB != "gdb"} { ++ file link ./gdb $GDB ++} ++global env ++set oldpath $env(PATH) ++set env(PATH) [join [list . $env(PATH)] ":"] ++verbose "PATH = $env(PATH)" 2 ++ ++# Test file body. ++# $detached == "standard" || $detached == "detached" ++ ++proc test_body { detached } { ++ global binfile ++ global GCORE ++ global corefile ++ ++ set res [remote_spawn target "$binfile $detached $GCORE $corefile"] ++ if { $res < 0 || $res == "" } { ++ fail "Spawning $detached gcore" ++ return 1 ++ } ++ pass "Spawning $detached gcore" ++ remote_expect target 20 { ++ timeout { ++ fail "Spawned $detached gcore finished (timeout)" ++ remote_exec target "kill -9 -[exp_pid -i $res]" ++ return 1 ++ } ++ "Saved corefile .*\r\nKilling parent PID " { ++ pass "Spawned $detached gcore finished" ++ remote_wait target 20 ++ } ++ } ++ ++ if {1 == [llength [glob -nocomplain [join [list $corefile *] ""]]]} { ++ pass "Core file generated by $detached gcore" ++ } else { ++ fail "Core file generated by $detached gcore" ++ } ++ core_clean ++} ++ ++# First a general `gdb_gcore.sh' spawn with its controlling terminal available. ++ ++test_body standard ++ ++# And now `gdb_gcore.sh' spawn without its controlling terminal available. ++# It is spawned through `gcorebg.c' using setpgrp (). ++ ++test_body detached ++ ++ ++# Cleanup. ++ ++set env(PATH) $oldpath ++remote_file target delete "./gdb" diff --git a/gdb-6.6-bz230000-power6-disassembly-test.patch b/gdb-6.6-bz230000-power6-disassembly-test.patch new file mode 100644 index 0000000..2b36147 --- /dev/null +++ b/gdb-6.6-bz230000-power6-disassembly-test.patch @@ -0,0 +1,94 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-bz230000-power6-disassembly-test.patch + +;; Testcase for PPC Power6/DFP instructions disassembly (BZ 230000). +;;=fedoratest + +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=230000 + +The original testcase + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=230000#c1 +requires too recent GCC. + +diff --git a/gdb/testsuite/gdb.arch/powerpc-power6.exp b/gdb/testsuite/gdb.arch/powerpc-power6.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-power6.exp +@@ -0,0 +1,54 @@ ++# Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Test PowerPC Power6 instructions disassembly. ++ ++if {![istarget "powerpc*-*-*"]} then { ++ verbose "Skipping PowerPC Power6 instructions disassembly." ++ return ++} ++ ++set testfile "powerpc-power6" ++set srcfile ${testfile}.s ++set objfile [standard_output_file ${testfile}.o] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } { ++ untested "PowerPC prologue tests" ++ return -1 ++} ++ ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${objfile} ++ ++# Disassemble the function. ++ ++gdb_test "disass func" ":\tblr\r\n.*" "Basic disassembly" ++ ++gdb_test "disass func" ":\tdcbzl *r8,r9\r\n.*" "Power5 disassembly dcbzl" ++gdb_test "disass func" ":\tfrsqrtes *f10,f11\r\n.*" "Power5 disassembly frsqrtes" ++gdb_test "disass func" ":\tdadd *f1,f2,f1\r\n.*" "Power6 disassembly dadd" ++gdb_test "disass func" ":\tdaddq *f0,f2,f0\r\n.*" "Power6 disassembly daddq" ++gdb_test "disass func" ":\tdsub *f1,f2,f1\r\n.*" "Power6 disassembly dsub" ++gdb_test "disass func" ":\tdsubq *f0,f2,f0\r\n.*" "Power6 disassembly dsubq" ++gdb_test "disass func" ":\tdmul *f1,f2,f1\r\n.*" "Power6 disassembly dmul" ++gdb_test "disass func" ":\tdmulq *f0,f2,f0\r\n.*" "Power6 disassembly dmulq" ++gdb_test "disass func" ":\tddiv *f1,f2,f1\r\n.*" "Power6 disassembly ddiv" ++gdb_test "disass func" ":\tddivq *f0,f2,f0\r\n.*" "Power6 disassembly ddivq" ++gdb_test "disass func" ":\tdcmpu *cr1,f2,f1\r\n.*" "Power6 disassembly dcmpu" ++gdb_test "disass func" ":\tdcmpuq *cr1,f2,f0\r\n.*" "Power6 disassembly dcmpuq" +diff --git a/gdb/testsuite/gdb.arch/powerpc-power6.s b/gdb/testsuite/gdb.arch/powerpc-power6.s +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-power6.s +@@ -0,0 +1,16 @@ ++ .text ++ .globl func ++func: ++ blr ++ .long 0x7c284fec /* dcbzl r8,r9 */ ++ .long 0xed405834 /* frsqrtes f10,f11 */ ++ .long 0xec220804 /* dadd f1,f2,f1 */ ++ .long 0xfc020004 /* daddq f0,f2,f0 */ ++ .long 0xec220c04 /* dsub f1,f2,f1 */ ++ .long 0xfc020404 /* dsubq f0,f2,f0 */ ++ .long 0xec220844 /* dmul f1,f2,f1 */ ++ .long 0xfc020044 /* dmulq f0,f2,f0 */ ++ .long 0xec220c44 /* ddiv f1,f2,f1 */ ++ .long 0xfc020444 /* ddivq f0,f2,f0 */ ++ .long 0xec820d04 /* dcmpu cr1,f2,f1 */ ++ .long 0xfc820504 /* dcmpuq cr1,f2,f0 */ diff --git a/gdb-6.6-bz237572-ppc-atomic-sequence-test.patch b/gdb-6.6-bz237572-ppc-atomic-sequence-test.patch new file mode 100644 index 0000000..4faef13 --- /dev/null +++ b/gdb-6.6-bz237572-ppc-atomic-sequence-test.patch @@ -0,0 +1,278 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch + +;; Support for stepping over PPC atomic instruction sequences (BZ 237572). +;;=fedoratest + +2007-06-25 Jan Kratochvil + + * gdb.threads/atomic-seq-threaded.c, + gdb.threads/atomic-seq-threaded.exp: New files. + +diff --git a/gdb/testsuite/gdb.threads/atomic-seq-threaded.c b/gdb/testsuite/gdb.threads/atomic-seq-threaded.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/atomic-seq-threaded.c +@@ -0,0 +1,171 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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. */ ++ ++/* Test stepping over RISC atomic sequences. ++ This variant testcases the code for stepping another thread while skipping ++ over the atomic sequence in the former thread ++ (STEPPING_PAST_SINGLESTEP_BREAKPOINT). ++ Code comes from gcc/testsuite/gcc.dg/sync-2.c */ ++ ++/* { dg-options "-march=i486" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ ++/* { dg-options "-mcpu=v9" { target sparc*-*-* } } */ ++ ++/* Test functionality of the intrinsics for 'short' and 'char'. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define LOOPS 2 ++ ++static int unused; ++ ++static char AI[18]; ++static char init_qi[18] = { 3,5,7,9,0,0,0,0,-1,0,0,0,0,0,-1,0,0,0 }; ++static char test_qi[18] = { 3,5,7,9,1,4,22,-12,7,8,9,7,1,-12,7,8,9,7 }; ++ ++static void ++do_qi (void) ++{ ++ if (__sync_fetch_and_add(AI+4, 1) != 0) ++ abort (); ++ if (__sync_fetch_and_add(AI+5, 4) != 0) ++ abort (); ++ if (__sync_fetch_and_add(AI+6, 22) != 0) ++ abort (); ++ if (__sync_fetch_and_sub(AI+7, 12) != 0) ++ abort (); ++ if (__sync_fetch_and_and(AI+8, 7) != (char)-1) ++ abort (); ++ if (__sync_fetch_and_or(AI+9, 8) != 0) ++ abort (); ++ if (__sync_fetch_and_xor(AI+10, 9) != 0) ++ abort (); ++ if (__sync_fetch_and_nand(AI+11, 7) != 0) ++ abort (); ++ ++ if (__sync_add_and_fetch(AI+12, 1) != 1) ++ abort (); ++ if (__sync_sub_and_fetch(AI+13, 12) != (char)-12) ++ abort (); ++ if (__sync_and_and_fetch(AI+14, 7) != 7) ++ abort (); ++ if (__sync_or_and_fetch(AI+15, 8) != 8) ++ abort (); ++ if (__sync_xor_and_fetch(AI+16, 9) != 9) ++ abort (); ++ if (__sync_nand_and_fetch(AI+17, 7) != 7) ++ abort (); ++} ++ ++static short AL[18]; ++static short init_hi[18] = { 3,5,7,9,0,0,0,0,-1,0,0,0,0,0,-1,0,0,0 }; ++static short test_hi[18] = { 3,5,7,9,1,4,22,-12,7,8,9,7,1,-12,7,8,9,7 }; ++ ++static void ++do_hi (void) ++{ ++ if (__sync_fetch_and_add(AL+4, 1) != 0) ++ abort (); ++ if (__sync_fetch_and_add(AL+5, 4) != 0) ++ abort (); ++ if (__sync_fetch_and_add(AL+6, 22) != 0) ++ abort (); ++ if (__sync_fetch_and_sub(AL+7, 12) != 0) ++ abort (); ++ if (__sync_fetch_and_and(AL+8, 7) != -1) ++ abort (); ++ if (__sync_fetch_and_or(AL+9, 8) != 0) ++ abort (); ++ if (__sync_fetch_and_xor(AL+10, 9) != 0) ++ abort (); ++ if (__sync_fetch_and_nand(AL+11, 7) != 0) ++ abort (); ++ ++ if (__sync_add_and_fetch(AL+12, 1) != 1) ++ abort (); ++ if (__sync_sub_and_fetch(AL+13, 12) != -12) ++ abort (); ++ if (__sync_and_and_fetch(AL+14, 7) != 7) ++ abort (); ++ if (__sync_or_and_fetch(AL+15, 8) != 8) ++ abort (); ++ if (__sync_xor_and_fetch(AL+16, 9) != 9) ++ abort (); ++ if (__sync_nand_and_fetch(AL+17, 7) != 7) ++ abort (); ++} ++ ++static void * ++start1 (void *arg) ++{ ++ unsigned loop; ++ sleep(1); ++ ++ for (loop = 0; loop < LOOPS; loop++) ++ { ++ memcpy(AI, init_qi, sizeof(init_qi)); ++ ++ do_qi (); ++ ++ if (memcmp (AI, test_qi, sizeof(test_qi))) ++ abort (); ++ } ++ ++ return arg; /* _delete1_ */ ++} ++ ++static void * ++start2 (void *arg) ++{ ++ unsigned loop; ++ ++ for (loop = 0; loop < LOOPS; loop++) ++ { ++ memcpy(AL, init_hi, sizeof(init_hi)); ++ ++ do_hi (); ++ ++ if (memcmp (AL, test_hi, sizeof(test_hi))) ++ abort (); ++ } ++ ++ return arg; /* _delete2_ */ ++} ++ ++int ++main (int argc, char **argv) ++{ ++ pthread_t thread; ++ int i; ++ ++ i = pthread_create (&thread, NULL, start1, NULL); /* _create_ */ ++ assert (i == 0); /* _create_after_ */ ++ ++ sleep (1); ++ ++ start2 (NULL); ++ ++ i = pthread_join (thread, NULL); /* _delete_ */ ++ assert (i == 0); ++ ++ return 0; /* _exit_ */ ++} +diff --git a/gdb/testsuite/gdb.threads/atomic-seq-threaded.exp b/gdb/testsuite/gdb.threads/atomic-seq-threaded.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/atomic-seq-threaded.exp +@@ -0,0 +1,84 @@ ++# atomic-seq-threaded.exp -- Test case for stepping over RISC atomic code seqs. ++# This variant testcases the code for stepping another thread while skipping ++# over the atomic sequence in the former thread ++# (STEPPING_PAST_SINGLESTEP_BREAKPOINT). ++# Copyright (C) 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++# Please email any bugs, comments, and/or additions to this file to: ++# bug-gdb@prep.ai.mit.edu ++ ++set testfile atomic-seq-threaded ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++foreach opts {{} {compiler=gcc4} {FAIL}} { ++ if {$opts eq "FAIL"} { ++ return -1 ++ } ++ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug $opts]] eq "" } { ++ break ++ } ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++ ++gdb_load ${binfile} ++if ![runto_main] then { ++ fail "Can't run to main" ++ return 0 ++} ++ ++# pthread_create () will not pass even on x86_64 with software watchpoint. ++# Pass after pthread_create () without any watchpoint active. ++set line [gdb_get_line_number "_create_after_"] ++gdb_test "tbreak $line" \ ++ "reakpoint (\[0-9\]+) at .*$srcfile, line $line\..*" \ ++ "set breakpoint after pthread_create ()" ++gdb_test "c" \ ++ ".*/\\* _create_after_ \\*/.*" \ ++ "run till after pthread_create ()" ++ ++# Without a watchpoint being software no single-stepping would be used. ++set test "Start (software) watchpoint" ++gdb_test_multiple "watch unused" $test { ++ -re "Watchpoint \[0-9\]+: unused.*$gdb_prompt $" { ++ pass $test ++ } ++ -re "Hardware watchpoint \[0-9\]+: unused.*$gdb_prompt $" { ++ # We do not test the goal but still the whole testcase should pass. ++ unsupported $test ++ } ++} ++ ++# More thorough testing of the scheduling logic. ++gdb_test "set scheduler-locking step" "" ++ ++# Critical code path is stepped through at this point. ++set line [gdb_get_line_number "_exit_"] ++gdb_test "tbreak $line" \ ++ "reakpoint \[0-9\]+ at .*$srcfile, line $line\..*" \ ++ "set breakpoint at _exit_" ++gdb_test "c" \ ++ ".*/\\* _exit_ \\*/.*" \ ++ "run till _exit_" ++ ++# Just a nonproblematic program exit. ++gdb_test "c" \ ++ ".*Program exited normally\\..*" \ ++ "run till program exit" diff --git a/gdb-6.6-testsuite-timeouts.patch b/gdb-6.6-testsuite-timeouts.patch new file mode 100644 index 0000000..a896313 --- /dev/null +++ b/gdb-6.6-testsuite-timeouts.patch @@ -0,0 +1,32 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.6-testsuite-timeouts.patch + +;; Avoid too long timeouts on failing cases of "annota1.exp annota3.exp". +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp +--- a/gdb/testsuite/gdb.base/annota1.exp ++++ b/gdb/testsuite/gdb.base/annota1.exp +@@ -39,6 +39,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb + + clean_restart ${binfile} + ++gdb_test "set breakpoint pending off" "" "Avoid lockup on nonexisting functions" ++ + # The commands we test here produce many lines of output; disable "press + # to continue" prompts. + gdb_test_no_output "set height 0" +diff --git a/gdb/testsuite/gdb.base/annota3.exp b/gdb/testsuite/gdb.base/annota3.exp +--- a/gdb/testsuite/gdb.base/annota3.exp ++++ b/gdb/testsuite/gdb.base/annota3.exp +@@ -38,6 +38,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb + + clean_restart ${binfile} + ++gdb_test "set breakpoint pending off" "" "Avoid lockup on nonexisting functions" ++ + # The commands we test here produce many lines of output; disable "press + # to continue" prompts. + gdb_test_no_output "set height 0" diff --git a/gdb-6.7-charsign-test.patch b/gdb-6.7-charsign-test.patch new file mode 100644 index 0000000..1a66390 --- /dev/null +++ b/gdb-6.7-charsign-test.patch @@ -0,0 +1,130 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.7-charsign-test.patch + +;; Fix displaying of numeric char arrays as strings (BZ 224128). +;;=fedoratest: But it is failing anyway, one should check the behavior more. + +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=224128 + +2007-01-25 Jan Kratochvil + + * gdb.base/charsign.exp, gdb.base/charsign.c: New files. + [ stripped ] + +2007-10-19 Jan Kratochvil + + Port to GDB-6.7 - only the testcase left, patch has been reverted, + char-vectors restricted. + +diff --git a/gdb/testsuite/gdb.base/charsign.c b/gdb/testsuite/gdb.base/charsign.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/charsign.c +@@ -0,0 +1,37 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++int main() ++{ ++ return 0; ++} ++ ++char n[]="A"; ++signed char s[]="A"; ++unsigned char u[]="A"; ++ ++typedef char char_n; ++typedef signed char char_s; ++typedef unsigned char char_u; ++ ++char_n n_typed[]="A"; ++char_s s_typed[]="A"; ++char_u u_typed[]="A"; +diff --git a/gdb/testsuite/gdb.base/charsign.exp b/gdb/testsuite/gdb.base/charsign.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/charsign.exp +@@ -0,0 +1,63 @@ ++# Copyright 2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++set testfile charsign ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++proc do_test { cflags } { ++ global srcdir ++ global binfile ++ global subdir ++ global srcfile ++ global gdb_prompt ++ ++ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug additional_flags=$cflags]] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++ } ++ ++ # Get things started. ++ ++ gdb_exit ++ gdb_start ++ gdb_reinitialize_dir $srcdir/$subdir ++ gdb_load ${binfile} ++ ++ # For C programs, "start" should stop in main(). ++ ++ gdb_test "p n" \ ++ "= \"A\"" ++ gdb_test "p s" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++ gdb_test "p u" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++ gdb_test "p n_typed" \ ++ "= \"A\"" ++ gdb_test "p s_typed" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++ gdb_test "p u_typed" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++} ++ ++# The string identification works despite the compiler flags below due to ++# gdbtypes.c: ++# if (name && strcmp (name, "char") == 0) ++# TYPE_FLAGS (type) |= TYPE_FLAG_NOSIGN; ++ ++do_test {} ++do_test {-fsigned-char} ++do_test {-funsigned-char} diff --git a/gdb-6.7-ppc-clobbered-registers-O2-test.patch b/gdb-6.7-ppc-clobbered-registers-O2-test.patch new file mode 100644 index 0000000..08ee2f9 --- /dev/null +++ b/gdb-6.7-ppc-clobbered-registers-O2-test.patch @@ -0,0 +1,108 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.7-ppc-clobbered-registers-O2-test.patch + +;; Test PPC hiding of call-volatile parameter register. +;;=fedoratest + +2007-11-04 Jan Kratochvil + + * gdb.arch/ppc-clobbered-registers-O2.exp: `powerpc64' changed to + `powerpc*'. + +Testcase for: + +http://sourceware.org/ml/gdb-patches/2007-09/msg00228.html + +2007-10-21 Luis Machado + + * rs6000-tdep.c (ppc_dwarf2_frame_init_reg): New function. + * (rs6000_gdbarch_init): Install ppc_dwarf2_frame_init_reg as + default dwarf2_frame_set_init_reg function. + +diff --git a/gdb/testsuite/gdb.arch/ppc-clobbered-registers-O2.c b/gdb/testsuite/gdb.arch/ppc-clobbered-registers-O2.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/ppc-clobbered-registers-O2.c +@@ -0,0 +1,21 @@ ++ ++unsigned * __attribute__((noinline)) ++start_sequence (unsigned * x, unsigned * y) ++{ ++ return (unsigned *)0xdeadbeef; ++}; ++ ++unsigned __attribute__((noinline)) ++gen_movsd (unsigned * operand0, unsigned * operand1) ++{ ++ return *start_sequence(operand0, operand1); ++} ++ ++int main(void) ++{ ++ unsigned x, y; ++ ++ x = 13; ++ y = 14; ++ return (int)gen_movsd (&x, &y); ++} +diff --git a/gdb/testsuite/gdb.arch/ppc-clobbered-registers-O2.exp b/gdb/testsuite/gdb.arch/ppc-clobbered-registers-O2.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/ppc-clobbered-registers-O2.exp +@@ -0,0 +1,54 @@ ++# Copyright 2006 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# ++# This file is part of the gdb testsuite. ++ ++# Test displaying call clobbered registers in optimized binaries for ppc. ++# GDB should not show incorrect values. ++ ++if ![istarget "powerpc*-*"] then { ++ verbose "Skipping powerpc* call clobbered registers testing." ++ return ++} ++ ++set testfile "ppc-clobbered-registers-O2" ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++set compile_flags "debug additional_flags=-O2" ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable ${compile_flags}] != "" } { ++ unsupported "Testcase compile failed." ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++if ![runto_main] then { ++ perror "Couldn't run to breakpoint" ++ continue ++} ++ ++gdb_test "b start_sequence" ".*Breakpoint 2 at.*line 6.*" \ ++ "Insert breakpoint at problematic function" ++ ++gdb_test continue ".*Breakpoint 2.*in start_sequence.*" \ ++ "Run until problematic function" ++ ++gdb_test backtrace ".*operand0=.*operand1=.*" \ ++ "Check value of call clobbered registers" diff --git a/gdb-6.7-testsuite-stable-results.patch b/gdb-6.7-testsuite-stable-results.patch new file mode 100644 index 0000000..0eca1a7 --- /dev/null +++ b/gdb-6.7-testsuite-stable-results.patch @@ -0,0 +1,104 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.7-testsuite-stable-results.patch + +;; Testsuite fixes for more stable/comparable results. +;;=fedoratest + +gdb/testsuite/gdb.base/fileio.c: +gdb/testsuite/gdb.base/fileio.exp: +2007-12-08 Jan Kratochvil + + * gdb.base/fileio.c (ROOTSUBDIR): New macro. + (main): CHDIR into ROOTSUBDIR. CHOWN ROOTSUBDIR and CHDIR into + ROOTSUBDIR if we are being run as root. + * gdb.base/fileio.exp: Change the startup and finish cleanup. + Change the test file reference to be into the `fileio.dir' directory. + +sources/gdb/testsuite/gdb.base/dump.exp: +Found on RHEL-5.s390x. + +gdb-6.8.50.20090209/gdb/testsuite/gdb.base/auxv.exp: +random FAIL: gdb.base/auxv.exp: matching auxv data from live and gcore + +gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp: +frames-invalid can happen asynchronously. + +diff --git a/gdb/testsuite/gdb.base/fileio.c b/gdb/testsuite/gdb.base/fileio.c +--- a/gdb/testsuite/gdb.base/fileio.c ++++ b/gdb/testsuite/gdb.base/fileio.c +@@ -559,6 +559,28 @@ strerrno (int err) + int + main () + { ++ /* These tests ++ Open for write but no write permission returns EACCES ++ Unlinking a file in a directory w/o write access returns EACCES ++ fail if we are being run as root - drop the privileges here. */ ++ ++ if (geteuid () == 0) ++ { ++ uid_t uid = 99; ++ ++ if (chown (OUTDIR, uid, uid) != 0) ++ { ++ printf ("chown %d.%d %s: %s\n", (int) uid, (int) uid, ++ OUTDIR, strerror (errno)); ++ exit (1); ++ } ++ if (setuid (uid) || geteuid () == 0) ++ { ++ printf ("setuid %d: %s\n", (int) uid, strerror (errno)); ++ exit (1); ++ } ++ } ++ + /* Don't change the order of the calls. They partly depend on each other */ + test_open (); + test_write (); +diff --git a/gdb/testsuite/gdb.base/fileio.exp b/gdb/testsuite/gdb.base/fileio.exp +--- a/gdb/testsuite/gdb.base/fileio.exp ++++ b/gdb/testsuite/gdb.base/fileio.exp +@@ -24,9 +24,9 @@ if [target_info exists gdb,nofileio] { + standard_testfile + + if {[is_remote host]} { +- set outdir . ++ set outdir "fileio.dir" + } else { +- set outdir [standard_output_file {}] ++ set outdir [standard_output_file "fileio.dir"] + } + + if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ +@@ -47,7 +47,8 @@ set dir2 [standard_output_file dir2.fileio.test] + if {[file exists $dir2] && ![file writable $dir2]} { + system "chmod +w $dir2" + } +-system "rm -rf [standard_output_file *.fileio.test]" ++system "rm -rf [standard_output_file fileio.dir]" ++system "mkdir -m777 [standard_output_file fileio.dir]" + + set oldtimeout $timeout + set timeout [expr "$timeout + 60"] +@@ -89,7 +90,7 @@ gdb_test continue \ + + gdb_test "continue" ".*" "" + +-catch "system \"chmod -f -w [standard_output_file nowrt.fileio.test]\"" ++catch "system \"chmod -f -w [standard_output_file fileio.dir/nowrt.fileio.test]\"" + + gdb_test continue \ + "Continuing\\..*open 5:.*EACCES$stop_msg" \ +@@ -276,9 +277,7 @@ gdb_test continue \ + gdb_exit + + # Make dir2 writable again so rm -rf of a build tree Just Works. +-if {[file exists $dir2] && ![file writable $dir2]} { +- system "chmod +w $dir2" +-} ++system "chmod -R +w $outdir" + + set timeout $oldtimeout + return 0 diff --git a/gdb-6.8-bz442765-threaded-exec-test.patch b/gdb-6.8-bz442765-threaded-exec-test.patch new file mode 100644 index 0000000..90685c7 --- /dev/null +++ b/gdb-6.8-bz442765-threaded-exec-test.patch @@ -0,0 +1,181 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.8-bz442765-threaded-exec-test.patch + +;; Test various forms of threads tracking across exec() (BZ 442765). +;;=fedoratest + +Test various forms of threads tracking across exec(2). + +diff --git a/gdb/testsuite/gdb.threads/threaded-exec.c b/gdb/testsuite/gdb.threads/threaded-exec.c +--- a/gdb/testsuite/gdb.threads/threaded-exec.c ++++ b/gdb/testsuite/gdb.threads/threaded-exec.c +@@ -18,21 +18,95 @@ + Boston, MA 02111-1307, USA. */ + + #include +-#include + #include + #include + #include ++#include + ++#ifdef THREADS ++ ++# include + + static void * + threader (void *arg) + { +- return NULL; ++ return NULL; + } + ++#endif ++ + int +-main (void) ++main (int argc, char **argv) + { ++ char *exec_nothreads, *exec_threads, *cmd; ++ int phase; ++ char phase_s[8]; ++ ++ setbuf (stdout, NULL); ++ ++ if (argc != 4) ++ { ++ fprintf (stderr, "%s \n", argv[0]); ++ return 1; ++ } ++ ++#ifdef THREADS ++ puts ("THREADS: Y"); ++#else ++ puts ("THREADS: N"); ++#endif ++ exec_nothreads = argv[1]; ++ printf ("exec_nothreads: %s\n", exec_nothreads); ++ exec_threads = argv[2]; ++ printf ("exec_threads: %s\n", exec_threads); ++ phase = atoi (argv[3]); ++ printf ("phase: %d\n", phase); ++ ++ /* Phases: threading ++ 0: N -> N ++ 1: N -> Y ++ 2: Y -> Y ++ 3: Y -> N ++ 4: N -> exit */ ++ ++ cmd = NULL; ++ ++#ifndef THREADS ++ switch (phase) ++ { ++ case 0: ++ cmd = exec_nothreads; ++ break; ++ case 1: ++ cmd = exec_threads; ++ break; ++ case 2: ++ fprintf (stderr, "%s: We should have threads for phase %d!\n", argv[0], ++ phase); ++ return 1; ++ case 3: ++ fprintf (stderr, "%s: We should have threads for phase %d!\n", argv[0], ++ phase); ++ return 1; ++ case 4: ++ return 0; ++ default: ++ assert (0); ++ } ++#else /* THREADS */ ++ switch (phase) ++ { ++ case 0: ++ fprintf (stderr, "%s: We should not have threads for phase %d!\n", ++ argv[0], phase); ++ return 1; ++ case 1: ++ fprintf (stderr, "%s: We should not have threads for phase %d!\n", ++ argv[0], phase); ++ return 1; ++ case 2: ++ cmd = exec_threads; ++ { + pthread_t t1; + int i; + +@@ -40,7 +114,34 @@ main (void) + assert (i == 0); + i = pthread_join (t1, NULL); + assert (i == 0); ++ } ++ break; ++ case 3: ++ cmd = exec_nothreads; ++ { ++ pthread_t t1; ++ int i; ++ ++ i = pthread_create (&t1, NULL, threader, (void *) NULL); ++ assert (i == 0); ++ i = pthread_join (t1, NULL); ++ assert (i == 0); ++ } ++ break; ++ case 4: ++ fprintf (stderr, "%s: We should not have threads for phase %d!\n", ++ argv[0], phase); ++ return 1; ++ default: ++ assert (0); ++ } ++#endif /* THREADS */ ++ ++ assert (cmd != NULL); ++ ++ phase++; ++ snprintf (phase_s, sizeof phase_s, "%d", phase); + +- execl ("/bin/true", "/bin/true", NULL); +- abort (); ++ execl (cmd, cmd, exec_nothreads, exec_threads, phase_s, NULL); ++ assert (0); + } +diff --git a/gdb/testsuite/gdb.threads/threaded-exec.exp b/gdb/testsuite/gdb.threads/threaded-exec.exp +--- a/gdb/testsuite/gdb.threads/threaded-exec.exp ++++ b/gdb/testsuite/gdb.threads/threaded-exec.exp +@@ -20,9 +20,14 @@ + + set testfile threaded-exec + set srcfile ${testfile}.c +-set binfile [standard_output_file ${testfile}] ++set binfile_nothreads [standard_output_file ${testfile}N] ++set binfile_threads [standard_output_file ${testfile}Y] + +-if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable []] != "" } { ++if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile_nothreads}" executable {additional_flags=-UTHREADS}] != "" } { ++ return -1 ++} ++ ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile_threads}" executable {additional_flags=-DTHREADS}] != "" } { + return -1 + } + +@@ -30,9 +35,9 @@ gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + +-gdb_load ${binfile} ++gdb_load ${binfile_nothreads} + +-gdb_run_cmd ++gdb_run_cmd [list ${binfile_nothreads} ${binfile_threads} 0] + + gdb_test_multiple {} "Program exited" { + -re "\r\n\\\[Inferior .* exited normally\\\]\r\n$gdb_prompt $" { diff --git a/gdb-6.8-bz466901-backtrace-full-prelinked.patch b/gdb-6.8-bz466901-backtrace-full-prelinked.patch new file mode 100644 index 0000000..39d8947 --- /dev/null +++ b/gdb-6.8-bz466901-backtrace-full-prelinked.patch @@ -0,0 +1,481 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-6.8-bz466901-backtrace-full-prelinked.patch + +;; Fix resolving of variables at locations lists in prelinked libs (BZ 466901). +;;=fedoratest + +Fix resolving of variables at locations lists in prelinked libs (BZ 466901). + +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-func.S b/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-func.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-func.S +@@ -0,0 +1,328 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2008 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* ++#include ++ ++void ++func (void) ++{ ++ int i; ++ ++ abort (); ++} ++*/ ++ .file "dw2-loclist-prelinked.c" ++ .section .debug_abbrev,"",@progbits ++.Ldebug_abbrev0: ++ .section .debug_info,"",@progbits ++.Ldebug_info0: ++ .section .debug_line,"",@progbits ++.Ldebug_line0: ++ .text ++.Ltext0: ++.globl func ++ .type func, @function ++func: ++.LFB2: ++ .file 1 "dw2-loclist-prelinked.c" ++ .loc 1 5 0 ++ pushl %ebp ++.LCFI0: ++ movl %esp, %ebp ++.LCFI1: ++ subl $24, %esp ++.LCFI2: ++ .loc 1 8 0 ++ call abort ++.LFE2: ++ .size func, .-func ++ .section .debug_frame,"",@progbits ++.Lframe0: ++ .long .LECIE0-.LSCIE0 ++.LSCIE0: ++ .long 0xffffffff ++ .byte 0x1 ++ .string "" ++ .uleb128 0x1 ++ .sleb128 -4 ++ .byte 0x8 ++ .byte 0xc ++ .uleb128 0x4 ++ .uleb128 0x4 ++ .byte 0x88 ++ .uleb128 0x1 ++ .align 4 ++.LECIE0: ++.LSFDE0: ++ .long .LEFDE0-.LASFDE0 ++.LASFDE0: ++ .long .Lframe0 ++ .long .LFB2 ++ .long .LFE2-.LFB2 ++ .byte 0x4 ++ .long .LCFI0-.LFB2 ++ .byte 0xe ++ .uleb128 0x8 ++ .byte 0x85 ++ .uleb128 0x2 ++ .byte 0x4 ++ .long .LCFI1-.LCFI0 ++ .byte 0xd ++ .uleb128 0x5 ++ .align 4 ++.LEFDE0: ++ .text ++.Letext0: ++ .section .debug_loc,"",@progbits ++.Ldebug_loc0: ++.LLST0: ++ .long .LFB2-.Ltext0 ++ .long .LCFI0-.Ltext0 ++ .value 0x2 ++ .byte 0x74 ++ .sleb128 4 ++ .long .LCFI0-.Ltext0 ++ .long .LCFI1-.Ltext0 ++ .value 0x2 ++ .byte 0x74 ++ .sleb128 8 ++ .long .LCFI1-.Ltext0 ++ .long .LFE2-.Ltext0 ++ .value 0x2 ++ .byte 0x75 ++ .sleb128 8 ++ .long 0x0 ++ .long 0x0 ++ .section .debug_info ++ .long 0x94 ++ .value 0x2 ++ .long .Ldebug_abbrev0 ++ .byte 0x4 ++ .uleb128 0x1 ++ .long .LASF10 ++ .byte 0x1 ++ .long .LASF11 ++ .long .LASF12 ++ .long .Ltext0 ++ .long .Letext0 ++ .long .Ldebug_line0 ++ .uleb128 0x2 ++ .byte 0x4 ++ .byte 0x7 ++ .long .LASF0 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x5 ++ .string "int" ++ .uleb128 0x2 ++ .byte 0x4 ++ .byte 0x5 ++ .long .LASF1 ++ .uleb128 0x2 ++ .byte 0x1 ++ .byte 0x8 ++ .long .LASF2 ++ .uleb128 0x2 ++ .byte 0x2 ++ .byte 0x7 ++ .long .LASF3 ++ .uleb128 0x2 ++ .byte 0x4 ++ .byte 0x7 ++ .long .LASF4 ++ .uleb128 0x2 ++ .byte 0x1 ++ .byte 0x6 ++ .long .LASF5 ++ .uleb128 0x2 ++ .byte 0x2 ++ .byte 0x5 ++ .long .LASF6 ++ .uleb128 0x2 ++ .byte 0x8 ++ .byte 0x5 ++ .long .LASF7 ++ .uleb128 0x2 ++ .byte 0x8 ++ .byte 0x7 ++ .long .LASF8 ++ .uleb128 0x4 ++ .byte 0x4 ++ .byte 0x7 ++ .uleb128 0x2 ++ .byte 0x1 ++ .byte 0x6 ++ .long .LASF9 ++ .uleb128 0x5 ++ .byte 0x1 ++ .long .LASF13 ++ .byte 0x1 ++ .byte 0x5 ++ .byte 0x1 ++ .long .LFB2 ++ .long .LFE2 ++ .long .LLST0 ++ .uleb128 0x6 ++ .string "i" ++ .byte 0x1 ++ .byte 0x6 ++ .long 0x2c ++ .byte 0x2 ++ .byte 0x91 ++ .sleb128 -12 ++ .byte 0x0 ++ .byte 0x0 ++ .section .debug_abbrev ++ .uleb128 0x1 ++ .uleb128 0x11 ++ .byte 0x1 ++ .uleb128 0x25 ++ .uleb128 0xe ++ .uleb128 0x13 ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x1b ++ .uleb128 0xe ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x1 ++ .uleb128 0x10 ++ .uleb128 0x6 ++ .byte 0x0 ++ .byte 0x0 ++ .uleb128 0x2 ++ .uleb128 0x24 ++ .byte 0x0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0xe ++ .byte 0x0 ++ .byte 0x0 ++ .uleb128 0x3 ++ .uleb128 0x24 ++ .byte 0x0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .byte 0x0 ++ .byte 0x0 ++ .uleb128 0x4 ++ .uleb128 0x24 ++ .byte 0x0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3e ++ .uleb128 0xb ++ .byte 0x0 ++ .byte 0x0 ++ .uleb128 0x5 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0xc ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x27 ++ .uleb128 0xc ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x1 ++ .uleb128 0x40 ++ .uleb128 0x6 ++ .byte 0x0 ++ .byte 0x0 ++ .uleb128 0x6 ++ .uleb128 0x34 ++ .byte 0x0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x2 ++ .uleb128 0xa ++ .byte 0x0 ++ .byte 0x0 ++ .byte 0x0 ++ .section .debug_pubnames,"",@progbits ++ .long 0x17 ++ .value 0x2 ++ .long .Ldebug_info0 ++ .long 0x98 ++ .long 0x75 ++ .string "func" ++ .long 0x0 ++ .section .debug_aranges,"",@progbits ++ .long 0x1c ++ .value 0x2 ++ .long .Ldebug_info0 ++ .byte 0x4 ++ .byte 0x0 ++ .value 0x0 ++ .value 0x0 ++ .long .Ltext0 ++ .long .Letext0-.Ltext0 ++ .long 0x0 ++ .long 0x0 ++ .section .debug_str,"MS",@progbits,1 ++.LASF7: ++ .string "long long int" ++.LASF0: ++ .string "unsigned int" ++.LASF11: ++ .string "dw2-loclist-prelinked.c" ++.LASF12: ++ .string "gdb-6.8/gdb/testsuite/gdb.dwarf2" ++.LASF4: ++ .string "long unsigned int" ++.LASF8: ++ .string "long long unsigned int" ++.LASF2: ++ .string "unsigned char" ++.LASF9: ++ .string "char" ++.LASF1: ++ .string "long int" ++.LASF3: ++ .string "short unsigned int" ++.LASF5: ++ .string "signed char" ++.LASF10: ++ .string "GNU C 4.3.2 20081007 (Red Hat 4.3.2-6)" ++.LASF13: ++ .string "func" ++.LASF6: ++ .string "short int" ++ .ident "GCC: (GNU) 4.3.2 20081007 (Red Hat 4.3.2-6)" ++ .section .note.GNU-stack,"",@progbits +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c b/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c +@@ -0,0 +1,26 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2008 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* dw2-loclist-prelinked-func.S */ ++extern void func (void); ++ ++int ++main (void) ++{ ++ func (); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked.exp b/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked.exp +@@ -0,0 +1,102 @@ ++# Copyright 2008 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Minimal DWARF-2 unit test ++ ++# This test can only be run on i386/x86_64 targets which support DWARF-2. ++# For now pick a sampling of likely targets. ++if {(![istarget *-*-linux*] ++ && ![istarget *-*-gnu*] ++ && ![istarget *-*-elf*] ++ && ![istarget *-*-openbsd*]) ++ || (![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"])} { ++ return 0 ++} ++ ++set testfile "dw2-loclist-prelinked" ++set srcfuncfile ${testfile}-func.S ++set binsharedfuncfile [standard_output_file ${testfile}.so] ++set srcmainfile ${testfile}-main.c ++set binfile [standard_output_file ${testfile}] ++ ++remote_exec build "rm -f ${binfile}" ++ ++# get the value of gcc_compiled ++if [get_compiler_info ${binfile}] { ++ return -1 ++} ++ ++# This test can only be run on gcc as we use additional_flags=FIXME ++if {$gcc_compiled == 0} { ++ return 0 ++} ++ ++if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcfuncfile}" "${binsharedfuncfile}" {debug additional_flags=-m32}] != "" } { ++ untested "Couldn't compile test library" ++ return -1 ++} ++ ++# The new separate debug info file will be stored in the .debug subdirectory. ++ ++if [gdb_gnu_strip_debug ${binsharedfuncfile}] { ++ # check that you have a recent version of strip and objcopy installed ++ unsupported "cannot produce separate debug info files" ++ return -1 ++} ++ ++if {[catch "system \"/usr/sbin/prelink -qNR --no-exec-shield ${binsharedfuncfile}\""] != 0} { ++ # Maybe we don't have prelink. ++ return -1 ++} ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcmainfile}" \ ++ "${binfile}" executable [list debug additional_flags=-m32 shlib=${binsharedfuncfile}]] != "" } { ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++gdb_run_cmd ++ ++gdb_test "" "Program received signal SIGABRT, Aborted..*" "Enter abort()" ++ ++# Incorrect: ++# #0 0x00110430 in __kernel_vsyscall () ++# No symbol table info available. ++# #1 0x003d44c0 in raise () from /lib/libc.so.6 ++# No symbol table info available. ++# #2 0x003d5e88 in abort () from /lib/libc.so.6 ++# No symbol table info available. ++# #3 0x44f10437 in func () at dw2-loclist-prelinked.c:8 ++# i = Could not find the frame base for "func". ++ ++# Correct: ++# #0 0x00110430 in __kernel_vsyscall () ++# No symbol table info available. ++# #1 0x003d44c0 in raise () from /lib/libc.so.6 ++# No symbol table info available. ++# #2 0x003d5e88 in abort () from /lib/libc.so.6 ++# No symbol table info available. ++# #3 0x4ae36437 in func () at dw2-loclist-prelinked.c:8 ++# i = 3827288 ++# #4 0x0804851a in main () at ../../../gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c:24 ++# No locals. ++ ++# `abort' can get expressed as `*__GI_abort'. ++gdb_test "bt full" "in \[^ \]*abort \\(.*in func \\(.*\r\n\[\t \]+i = -?\[0-9\].*in main \\(.*" "Backtrace after abort()" diff --git a/gdb-archer-next-over-throw-cxx-exec.patch b/gdb-archer-next-over-throw-cxx-exec.patch new file mode 100644 index 0000000..ba71cd3 --- /dev/null +++ b/gdb-archer-next-over-throw-cxx-exec.patch @@ -0,0 +1,88 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-archer-next-over-throw-cxx-exec.patch + +;; Fix follow-exec for C++ programs (bugreported by Martin Stransky). +;;=fedoratest + +Archer-upstreamed: +http://sourceware.org/ml/archer/2010-q2/msg00031.html + +diff --git a/gdb/testsuite/gdb.cp/cxxexec.cc b/gdb/testsuite/gdb.cp/cxxexec.cc +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.cp/cxxexec.cc +@@ -0,0 +1,25 @@ ++/* This test script is part of GDB, the GNU debugger. ++ ++ Copyright 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, see . */ ++ ++#include ++ ++int ++main() ++{ ++ execlp ("true", "true", NULL); ++ return 1; ++} +diff --git a/gdb/testsuite/gdb.cp/cxxexec.exp b/gdb/testsuite/gdb.cp/cxxexec.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.cp/cxxexec.exp +@@ -0,0 +1,42 @@ ++# Copyright 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, see . ++ ++if { [skip_cplus_tests] } { continue } ++ ++set testfile cxxexec ++if { [prepare_for_testing ${testfile}.exp ${testfile} ${testfile}.cc {c++ debug}] } { ++ return -1 ++} ++ ++runto_main ++ ++# We could stop after `continue' again at `main'. ++delete_breakpoints ++ ++set test "p _Unwind_DebugHook" ++gdb_test_multiple $test $test { ++ -re " = .* 0x\[0-9a-f\].*\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "\r\nNo symbol .*\r\n$gdb_prompt $" { ++ xfail $test ++ untested ${testfile}.exp ++ return -1 ++ } ++} ++ ++# Run to end. The buggy GDB failed instead with: ++# Cannot access memory at address ADDR. ++gdb_continue_to_end "" "continue" 1 diff --git a/gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch b/gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch new file mode 100644 index 0000000..4516f25 --- /dev/null +++ b/gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch @@ -0,0 +1,28613 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Simon Marchi +Date: Thu, 28 Jul 2022 01:34:22 -0400 +Subject: + gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch + +;; Backport "call check_typedef at beginning of dwarf_expr_context::fetch_result" +;; (Simon Marchi, backtrace/29374) + +gdb: call check_typedef at beginning of dwarf_expr_context::fetch_result + +Bug 29374 shows this crash: + + $ ./gdb -nx --data-directory=data-directory -q -batch -ex "catch throw" -ex r -ex bt a.out + ... + /home/simark/src/binutils-gdb/gdb/../gdbsupport/array-view.h:217: internal-error: copy: Assertion `dest.size () == src.size ()' failed. + +The backtrace is: + + #0 internal_error (file=0x5555606504c0 "/home/simark/src/binutils-gdb/gdb/../gdbsupport/array-view.h", line=217, fmt=0x55556064b700 "%s: Assertion `%s' failed.") at /home/simark/src/binutils-gdb/gdbsupport/errors.cc:51 + #1 0x000055555d41c0bb in gdb::copy (src=..., dest=...) at /home/simark/src/binutils-gdb/gdb/../gdbsupport/array-view.h:217 + #2 0x000055555deef28c in dwarf_expr_context::fetch_result (this=0x7fffffffb830, type=0x621007a86830, subobj_type=0x621007a86830, subobj_offset=0, as_lval=false) at /home/simark/src/binutils-gdb/gdb/dwarf2/expr.c:1040 + #3 0x000055555def0015 in dwarf_expr_context::evaluate (this=0x7fffffffb830, addr=0x62f00004313e "0", len=1, as_lval=false, per_cu=0x60b000069550, frame=0x621007c9e910, addr_info=0x0, type=0x621007a86830, subobj_type=0x621007a86830, subobj_offset=0) at /home/simark/src/binutils-gdb/gdb/dwarf2/expr.c:1091 + #4 0x000055555e084327 in dwarf2_evaluate_loc_desc_full (type=0x621007a86830, frame=0x621007c9e910, data=0x62f00004313e "0", size=1, per_cu=0x60b000069550, per_objfile=0x613000006080, subobj_type=0x621007a86830, subobj_byte_offset=0, as_lval=false) at /home/simark/src/binutils-gdb/gdb/dwarf2/loc.c:1485 + #5 0x000055555e0849e2 in dwarf2_evaluate_loc_desc (type=0x621007a86830, frame=0x621007c9e910, data=0x62f00004313e "0", size=1, per_cu=0x60b000069550, per_objfile=0x613000006080, as_lval=false) at /home/simark/src/binutils-gdb/gdb/dwarf2/loc.c:1529 + #6 0x000055555e0828c6 in dwarf_entry_parameter_to_value (parameter=0x621007a96e58, deref_size=0x0, type=0x621007a86830, caller_frame=0x621007c9e910, per_cu=0x60b000069550, per_objfile=0x613000006080) at /home/simark/src/binutils-gdb/gdb/dwarf2/loc.c:1235 + #7 0x000055555e082f55 in value_of_dwarf_reg_entry (type=0x621007a86890, frame=0x621007acc510, kind=CALL_SITE_PARAMETER_DWARF_REG, kind_u=...) at /home/simark/src/binutils-gdb/gdb/dwarf2/loc.c:1332 + #8 0x000055555e083449 in value_of_dwarf_block_entry (type=0x621007a86890, frame=0x621007acc510, block=0x61e000033568 "T\004\205\001\240\004\004\243\001T\237\004\240\004\261\004\001T\004\261\004\304\005\004\243\001T\237\004\304\005\310\005\001T\004\310\005\311\005\004\243\001T\237", block_len=1) at /home/simark/src/binutils-gdb/gdb/dwarf2/loc.c:1365 + #9 0x000055555e094d40 in loclist_read_variable_at_entry (symbol=0x621007a99bd0, frame=0x621007acc510) at /home/simark/src/binutils-gdb/gdb/dwarf2/loc.c:3889 + #10 0x000055555f5192e0 in read_frame_arg (fp_opts=..., sym=0x621007a99bd0, frame=0x621007acc510, argp=0x7fffffffbf20, entryargp=0x7fffffffbf60) at /home/simark/src/binutils-gdb/gdb/stack.c:559 + #11 0x000055555f51c352 in print_frame_args (fp_opts=..., func=0x621007a99ad0, frame=0x621007acc510, num=-1, stream=0x6030000bad90) at /home/simark/src/binutils-gdb/gdb/stack.c:887 + #12 0x000055555f521919 in print_frame (fp_opts=..., frame=0x621007acc510, print_level=1, print_what=LOCATION, print_args=1, sal=...) at /home/simark/src/binutils-gdb/gdb/stack.c:1390 + #13 0x000055555f51f22e in print_frame_info (fp_opts=..., frame=0x621007acc510, print_level=1, print_what=LOCATION, print_args=1, set_current_sal=0) at /home/simark/src/binutils-gdb/gdb/stack.c:1116 + #14 0x000055555f526c6d in backtrace_command_1 (fp_opts=..., bt_opts=..., count_exp=0x0, from_tty=0) at /home/simark/src/binutils-gdb/gdb/stack.c:2079 + #15 0x000055555f527ae5 in backtrace_command (arg=0x0, from_tty=0) at /home/simark/src/binutils-gdb/gdb/stack.c:2198 + +The problem is that the type that gets passed down to +dwarf_expr_context::fetch_result (the type of a variable of which we're +trying to read the entry value) is a typedef whose size has never been +computed yet (check_typedef has never been called on it). As we get in +the DWARF_VALUE_STACK case (line 1028 of dwarf2/expr.c), the `len` +variable is therefore set to 0, instead of the actual type length. We +then call allocate_value on subobj_type, which does call check_typedef, +so the length of the typedef gets filled in at that point. We end up +passing to the copy function a source array view of length 0 and a +target array view of length 4, and the assertion fails. + +Fix this by calling check_typedef on both type and subobj_type at the +beginning of fetch_result. + +I tried writing a test for this using the DWARF assembler, but I haven't +succeeded. It's possible that we need to get into this specific code +path (value_of_dwarf_reg_entry and all) to manage to get to +dwarf_expr_context::fetch_result with a typedef type that has never been +resolved. In all my attempts, the typedef would always be resolved +already, so the bug wouldn't show up. + +As a fallback, I made a gdb.dwarf2 test with compiler-generated .S +files. I don't particularly like those, but I think it's better than no +test. The .cpp source code is the smallest reproducer I am able to make +from the reproducer given in the bug (thanks to Pedro for suggestions on +how to minimize it further than I had). Since I tested on both amd64 +and aarch64, I added versions of the test for these two architectures. + +Change-Id: I182733ad08e34df40d8bcc47af72c482fabf4900 +Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29374 + +diff --git a/gdb/dwarf2/expr.c b/gdb/dwarf2/expr.c +--- a/gdb/dwarf2/expr.c ++++ b/gdb/dwarf2/expr.c +@@ -929,6 +929,11 @@ dwarf_expr_context::fetch_result (struct type *type, struct type *subobj_type, + if (subobj_type == nullptr) + subobj_type = type; + ++ /* Ensure that, if TYPE or SUBOBJ_TYPE are typedefs, their length is filled ++ in instead of being zero. */ ++ check_typedef (type); ++ check_typedef (subobj_type); ++ + if (this->m_pieces.size () > 0) + { + ULONGEST bit_size = 0; +diff --git a/gdb/testsuite/gdb.dwarf2/entry-value-typedef-aarch64.S b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-aarch64.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-aarch64.S +@@ -0,0 +1,12885 @@ ++/* ++ Copyright 2022 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* This file was generated from entry-value-typedef.cpp on an aarch64 Ubuntu ++ 14.04 using: ++ ++ $ g++ --version ++ g++ (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.4) 4.8.4 ++ $ g++ entry-value-typedef.cpp -O1 -S -g -o entry-value-typedef-aarch64.S -std=c++11 ++*/ ++ ++ .cpu cortex-a53+fp+simd ++ .file "entry-value-typedef.cpp" ++ .text ++.Ltext0: ++ .align 2 ++ .type _ZL4funcRKi, %function ++_ZL4funcRKi: ++.LFB1299: ++ .file 1 "entry-value-typedef.cpp" ++ .loc 1 27 0 ++ .cfi_startproc ++ .cfi_personality 0x9b,DW.ref.__gxx_personality_v0 ++ .cfi_lsda 0x1b,.LLSDA1299 ++.LVL0: ++ stp x29, x30, [sp, -384]! ++ .cfi_def_cfa_offset 384 ++ .cfi_offset 29, -384 ++ .cfi_offset 30, -376 ++ add x29, sp, 0 ++ .cfi_def_cfa_register 29 ++ stp x19, x20, [sp,16] ++ .cfi_offset 19, -368 ++ .cfi_offset 20, -360 ++.LBB293: ++ .loc 1 28 0 ++ add x0, x29, 32 ++.LVL1: ++ mov w1, 16 ++.LEHB0: ++ bl _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode ++.LEHE0: ++.LVL2: ++ .loc 1 29 0 ++ mov x0, 8 ++ bl __cxa_allocate_exception ++.LVL3: ++ mov x19, x0 ++.LVL4: ++.LBB294: ++.LBB295: ++ .file 2 "/usr/include/c++/4.8/sstream" ++ .loc 2 472 0 ++ mov x8, x0 ++ add x0, x29, 40 ++.LEHB1: ++ bl _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv ++.LEHE1: ++.LVL5: ++.LBE295: ++.LBE294: ++ .loc 1 29 0 discriminator 1 ++ mov x0, x19 ++ ldr x1, .LC0 ++ adrp x2, _ZNSsD1Ev ++ add x2, x2, :lo12:_ZNSsD1Ev ++.LEHB2: ++ bl __cxa_throw ++.LEHE2: ++.LVL6: ++.L4: ++ mov x20, x0 ++ .loc 1 29 0 is_stmt 0 ++ mov x0, x19 ++ bl __cxa_free_exception ++.LVL7: ++ mov x19, x20 ++ b .L3 ++.L5: ++ mov x19, x0 ++.L3: ++ add x0, x29, 32 ++.LVL8: ++ bl _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev ++.LVL9: ++ mov x0, x19 ++.LEHB3: ++ bl _Unwind_Resume ++.LEHE3: ++.LVL10: ++.LBE293: ++ .cfi_endproc ++.LFE1299: ++ .global __gxx_personality_v0 ++ .section .gcc_except_table,"a",%progbits ++.LLSDA1299: ++ .byte 0xff ++ .byte 0xff ++ .byte 0x1 ++ .uleb128 .LLSDACSE1299-.LLSDACSB1299 ++.LLSDACSB1299: ++ .uleb128 .LEHB0-.LFB1299 ++ .uleb128 .LEHE0-.LEHB0 ++ .uleb128 0 ++ .uleb128 0 ++ .uleb128 .LEHB1-.LFB1299 ++ .uleb128 .LEHE1-.LEHB1 ++ .uleb128 .L4-.LFB1299 ++ .uleb128 0 ++ .uleb128 .LEHB2-.LFB1299 ++ .uleb128 .LEHE2-.LEHB2 ++ .uleb128 .L5-.LFB1299 ++ .uleb128 0 ++ .uleb128 .LEHB3-.LFB1299 ++ .uleb128 .LEHE3-.LEHB3 ++ .uleb128 0 ++ .uleb128 0 ++.LLSDACSE1299: ++ .text ++ .size _ZL4funcRKi, .-_ZL4funcRKi ++ .align 3 ++.LC0: ++ .xword _ZTISs ++ .align 2 ++ .global main ++ .type main, %function ++main: ++.LFB1300: ++ .loc 1 34 0 is_stmt 1 ++ .cfi_startproc ++ stp x29, x30, [sp, -32]! ++ .cfi_def_cfa_offset 32 ++ .cfi_offset 29, -32 ++ .cfi_offset 30, -24 ++ add x29, sp, 0 ++ .cfi_def_cfa_register 29 ++ .loc 1 35 0 ++ add x0, x29, 32 ++ mov w1, 1234 ++ str w1, [x0,-4]! ++ bl _ZL4funcRKi ++.LVL11: ++ .cfi_endproc ++.LFE1300: ++ .size main, .-main ++ .weak _ZTISs ++ .section .rodata._ZTISs,"aG",%progbits,_ZTISs,comdat ++ .align 3 ++ .type _ZTISs, %object ++ .size _ZTISs, 16 ++_ZTISs: ++ .xword _ZTVN10__cxxabiv117__class_type_infoE+16 ++ .xword _ZTSSs ++ .weak _ZTSSs ++ .section .rodata._ZTSSs,"aG",%progbits,_ZTSSs,comdat ++ .align 3 ++ .type _ZTSSs, %object ++ .size _ZTSSs, 3 ++_ZTSSs: ++ .string "Ss" ++ .text ++.Letext0: ++ .file 3 "/usr/include/libio.h" ++ .file 4 "/usr/include/stdio.h" ++ .file 5 "/usr/lib/gcc/aarch64-linux-gnu/4.8/include/stdarg.h" ++ .file 6 "" ++ .file 7 "/usr/lib/gcc/aarch64-linux-gnu/4.8/include/stddef.h" ++ .file 8 "/usr/include/wchar.h" ++ .file 9 "/usr/include/c++/4.8/cwchar" ++ .file 10 "/usr/include/c++/4.8/bits/exception_ptr.h" ++ .file 11 "/usr/include/aarch64-linux-gnu/c++/4.8/bits/c++config.h" ++ .file 12 "/usr/include/c++/4.8/bits/cpp_type_traits.h" ++ .file 13 "/usr/include/c++/4.8/bits/stl_pair.h" ++ .file 14 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" ++ .file 15 "/usr/include/c++/4.8/bits/char_traits.h" ++ .file 16 "/usr/include/c++/4.8/cstdint" ++ .file 17 "/usr/include/c++/4.8/clocale" ++ .file 18 "/usr/include/c++/4.8/bits/allocator.h" ++ .file 19 "/usr/include/c++/4.8/cstdlib" ++ .file 20 "/usr/include/c++/4.8/cstdio" ++ .file 21 "/usr/include/c++/4.8/bits/basic_string.h" ++ .file 22 "/usr/include/c++/4.8/bits/basic_string.tcc" ++ .file 23 "/usr/include/c++/4.8/initializer_list" ++ .file 24 "/usr/include/c++/4.8/bits/ios_base.h" ++ .file 25 "/usr/include/c++/4.8/cwctype" ++ .file 26 "/usr/include/c++/4.8/ostream" ++ .file 27 "/usr/include/c++/4.8/streambuf" ++ .file 28 "/usr/include/c++/4.8/bits/basic_ios.h" ++ .file 29 "/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h" ++ .file 30 "/usr/include/c++/4.8/iosfwd" ++ .file 31 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" ++ .file 32 "/usr/include/time.h" ++ .file 33 "/usr/include/c++/4.8/ext/new_allocator.h" ++ .file 34 "/usr/include/c++/4.8/ext/numeric_traits.h" ++ .file 35 "/usr/include/c++/4.8/bits/stl_iterator.h" ++ .file 36 "/usr/include/c++/4.8/ext/atomicity.h" ++ .file 37 "/usr/include/c++/4.8/debug/debug.h" ++ .file 38 "/usr/include/stdint.h" ++ .file 39 "/usr/include/locale.h" ++ .file 40 "/usr/include/aarch64-linux-gnu/bits/types.h" ++ .file 41 "/usr/include/aarch64-linux-gnu/c++/4.8/bits/atomic_word.h" ++ .file 42 "/usr/include/stdlib.h" ++ .file 43 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" ++ .file 44 "/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" ++ .file 45 "/usr/include/aarch64-linux-gnu/bits/stdlib.h" ++ .file 46 "/usr/include/c++/4.8/ext/type_traits.h" ++ .file 47 "/usr/include/_G_config.h" ++ .file 48 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" ++ .file 49 "/usr/include/aarch64-linux-gnu/bits/stdio.h" ++ .file 50 "/usr/include/wctype.h" ++ .file 51 "/usr/include/aarch64-linux-gnu/c++/4.8/bits/gthr-default.h" ++ .section .debug_info,"",%progbits ++.Ldebug_info0: ++ .4byte 0x51c9 ++ .2byte 0x4 ++ .4byte .Ldebug_abbrev0 ++ .byte 0x8 ++ .uleb128 0x1 ++ .4byte .LASF804 ++ .byte 0x4 ++ .4byte .LASF805 ++ .4byte .LASF806 ++ .8byte .Ltext0 ++ .8byte .Letext0-.Ltext0 ++ .4byte .Ldebug_line0 ++ .uleb128 0x2 ++ .4byte .LASF29 ++ .byte 0x4 ++ .byte 0x30 ++ .4byte 0x38 ++ .uleb128 0x3 ++ .4byte .LASF32 ++ .byte 0xd8 ++ .byte 0x3 ++ .byte 0xf5 ++ .4byte 0x1b8 ++ .uleb128 0x4 ++ .4byte .LASF0 ++ .byte 0x3 ++ .byte 0xf6 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF1 ++ .byte 0x3 ++ .byte 0xfb ++ .4byte 0x300d ++ .byte 0x8 ++ .uleb128 0x4 ++ .4byte .LASF2 ++ .byte 0x3 ++ .byte 0xfc ++ .4byte 0x300d ++ .byte 0x10 ++ .uleb128 0x4 ++ .4byte .LASF3 ++ .byte 0x3 ++ .byte 0xfd ++ .4byte 0x300d ++ .byte 0x18 ++ .uleb128 0x4 ++ .4byte .LASF4 ++ .byte 0x3 ++ .byte 0xfe ++ .4byte 0x300d ++ .byte 0x20 ++ .uleb128 0x4 ++ .4byte .LASF5 ++ .byte 0x3 ++ .byte 0xff ++ .4byte 0x300d ++ .byte 0x28 ++ .uleb128 0x5 ++ .4byte .LASF6 ++ .byte 0x3 ++ .2byte 0x100 ++ .4byte 0x300d ++ .byte 0x30 ++ .uleb128 0x5 ++ .4byte .LASF7 ++ .byte 0x3 ++ .2byte 0x101 ++ .4byte 0x300d ++ .byte 0x38 ++ .uleb128 0x5 ++ .4byte .LASF8 ++ .byte 0x3 ++ .2byte 0x102 ++ .4byte 0x300d ++ .byte 0x40 ++ .uleb128 0x5 ++ .4byte .LASF9 ++ .byte 0x3 ++ .2byte 0x104 ++ .4byte 0x300d ++ .byte 0x48 ++ .uleb128 0x5 ++ .4byte .LASF10 ++ .byte 0x3 ++ .2byte 0x105 ++ .4byte 0x300d ++ .byte 0x50 ++ .uleb128 0x5 ++ .4byte .LASF11 ++ .byte 0x3 ++ .2byte 0x106 ++ .4byte 0x300d ++ .byte 0x58 ++ .uleb128 0x5 ++ .4byte .LASF12 ++ .byte 0x3 ++ .2byte 0x108 ++ .4byte 0x44d9 ++ .byte 0x60 ++ .uleb128 0x5 ++ .4byte .LASF13 ++ .byte 0x3 ++ .2byte 0x10a ++ .4byte 0x44df ++ .byte 0x68 ++ .uleb128 0x5 ++ .4byte .LASF14 ++ .byte 0x3 ++ .2byte 0x10c ++ .4byte 0x20f ++ .byte 0x70 ++ .uleb128 0x5 ++ .4byte .LASF15 ++ .byte 0x3 ++ .2byte 0x110 ++ .4byte 0x20f ++ .byte 0x74 ++ .uleb128 0x5 ++ .4byte .LASF16 ++ .byte 0x3 ++ .2byte 0x112 ++ .4byte 0x4070 ++ .byte 0x78 ++ .uleb128 0x5 ++ .4byte .LASF17 ++ .byte 0x3 ++ .2byte 0x116 ++ .4byte 0x2b3 ++ .byte 0x80 ++ .uleb128 0x5 ++ .4byte .LASF18 ++ .byte 0x3 ++ .2byte 0x117 ++ .4byte 0x3d82 ++ .byte 0x82 ++ .uleb128 0x5 ++ .4byte .LASF19 ++ .byte 0x3 ++ .2byte 0x118 ++ .4byte 0x44e5 ++ .byte 0x83 ++ .uleb128 0x5 ++ .4byte .LASF20 ++ .byte 0x3 ++ .2byte 0x11c ++ .4byte 0x44f5 ++ .byte 0x88 ++ .uleb128 0x5 ++ .4byte .LASF21 ++ .byte 0x3 ++ .2byte 0x125 ++ .4byte 0x407b ++ .byte 0x90 ++ .uleb128 0x5 ++ .4byte .LASF22 ++ .byte 0x3 ++ .2byte 0x12e ++ .4byte 0x20d ++ .byte 0x98 ++ .uleb128 0x5 ++ .4byte .LASF23 ++ .byte 0x3 ++ .2byte 0x12f ++ .4byte 0x20d ++ .byte 0xa0 ++ .uleb128 0x5 ++ .4byte .LASF24 ++ .byte 0x3 ++ .2byte 0x130 ++ .4byte 0x20d ++ .byte 0xa8 ++ .uleb128 0x5 ++ .4byte .LASF25 ++ .byte 0x3 ++ .2byte 0x131 ++ .4byte 0x20d ++ .byte 0xb0 ++ .uleb128 0x5 ++ .4byte .LASF26 ++ .byte 0x3 ++ .2byte 0x132 ++ .4byte 0x216 ++ .byte 0xb8 ++ .uleb128 0x5 ++ .4byte .LASF27 ++ .byte 0x3 ++ .2byte 0x134 ++ .4byte 0x20f ++ .byte 0xc0 ++ .uleb128 0x5 ++ .4byte .LASF28 ++ .byte 0x3 ++ .2byte 0x136 ++ .4byte 0x44fb ++ .byte 0xc4 ++ .byte 0 ++ .uleb128 0x2 ++ .4byte .LASF30 ++ .byte 0x4 ++ .byte 0x40 ++ .4byte 0x38 ++ .uleb128 0x2 ++ .4byte .LASF31 ++ .byte 0x5 ++ .byte 0x28 ++ .4byte 0x1ce ++ .uleb128 0x3 ++ .4byte .LASF33 ++ .byte 0x20 ++ .byte 0x6 ++ .byte 0 ++ .4byte 0x20d ++ .uleb128 0x6 ++ .4byte .LASF34 ++ .4byte 0x20d ++ .byte 0 ++ .uleb128 0x6 ++ .4byte .LASF35 ++ .4byte 0x20d ++ .byte 0x8 ++ .uleb128 0x6 ++ .4byte .LASF36 ++ .4byte 0x20d ++ .byte 0x10 ++ .uleb128 0x6 ++ .4byte .LASF37 ++ .4byte 0x20f ++ .byte 0x18 ++ .uleb128 0x6 ++ .4byte .LASF38 ++ .4byte 0x20f ++ .byte 0x1c ++ .byte 0 ++ .uleb128 0x7 ++ .byte 0x8 ++ .uleb128 0x8 ++ .byte 0x4 ++ .byte 0x5 ++ .string "int" ++ .uleb128 0x2 ++ .4byte .LASF39 ++ .byte 0x7 ++ .byte 0xd4 ++ .4byte 0x221 ++ .uleb128 0x9 ++ .byte 0x8 ++ .byte 0x7 ++ .4byte .LASF40 ++ .uleb128 0xa ++ .4byte .LASF41 ++ .byte 0x7 ++ .2byte 0x161 ++ .4byte 0x234 ++ .uleb128 0x9 ++ .byte 0x4 ++ .byte 0x7 ++ .4byte .LASF42 ++ .uleb128 0xb ++ .byte 0x8 ++ .byte 0x8 ++ .byte 0x53 ++ .4byte .LASF683 ++ .4byte 0x27f ++ .uleb128 0xc ++ .byte 0x4 ++ .byte 0x8 ++ .byte 0x56 ++ .4byte 0x266 ++ .uleb128 0xd ++ .4byte .LASF43 ++ .byte 0x8 ++ .byte 0x58 ++ .4byte 0x234 ++ .uleb128 0xd ++ .4byte .LASF44 ++ .byte 0x8 ++ .byte 0x5c ++ .4byte 0x27f ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF45 ++ .byte 0x8 ++ .byte 0x54 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF46 ++ .byte 0x8 ++ .byte 0x5d ++ .4byte 0x247 ++ .byte 0x4 ++ .byte 0 ++ .uleb128 0xe ++ .4byte 0x296 ++ .4byte 0x28f ++ .uleb128 0xf ++ .4byte 0x28f ++ .byte 0x3 ++ .byte 0 ++ .uleb128 0x9 ++ .byte 0x8 ++ .byte 0x7 ++ .4byte .LASF47 ++ .uleb128 0x9 ++ .byte 0x1 ++ .byte 0x8 ++ .4byte .LASF48 ++ .uleb128 0x2 ++ .4byte .LASF49 ++ .byte 0x8 ++ .byte 0x5e ++ .4byte 0x23b ++ .uleb128 0x2 ++ .4byte .LASF50 ++ .byte 0x8 ++ .byte 0x6a ++ .4byte 0x29d ++ .uleb128 0x9 ++ .byte 0x2 ++ .byte 0x7 ++ .4byte .LASF51 ++ .uleb128 0x10 ++ .4byte 0x20f ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2c5 ++ .uleb128 0x10 ++ .4byte 0x296 ++ .uleb128 0x12 ++ .string "std" ++ .byte 0x6 ++ .byte 0 ++ .4byte 0x2cfd ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x40 ++ .4byte 0x2a8 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x8b ++ .4byte 0x228 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x8d ++ .4byte 0x2cfd ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x8e ++ .4byte 0x2d13 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x8f ++ .4byte 0x2d2f ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x90 ++ .4byte 0x2d5c ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x91 ++ .4byte 0x2d77 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x92 ++ .4byte 0x2d9d ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x93 ++ .4byte 0x2db8 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x94 ++ .4byte 0x2dd4 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x95 ++ .4byte 0x2df0 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x96 ++ .4byte 0x2e06 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x97 ++ .4byte 0x2e12 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x98 ++ .4byte 0x2e38 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x99 ++ .4byte 0x2e5d ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x9a ++ .4byte 0x2e7e ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x9b ++ .4byte 0x2ea9 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x9c ++ .4byte 0x2ec4 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0x9e ++ .4byte 0x2eda ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xa0 ++ .4byte 0x2efb ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xa1 ++ .4byte 0x2f17 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xa2 ++ .4byte 0x2f32 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xa4 ++ .4byte 0x2f52 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xa7 ++ .4byte 0x2f72 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xaa ++ .4byte 0x2f97 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xac ++ .4byte 0x2fb7 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xae ++ .4byte 0x2fd2 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb0 ++ .4byte 0x2fed ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb1 ++ .4byte 0x3013 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb2 ++ .4byte 0x302d ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb3 ++ .4byte 0x3047 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb4 ++ .4byte 0x3061 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb5 ++ .4byte 0x307b ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb6 ++ .4byte 0x3095 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb7 ++ .4byte 0x3155 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb8 ++ .4byte 0x316b ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xb9 ++ .4byte 0x318b ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xba ++ .4byte 0x31aa ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xbb ++ .4byte 0x31c9 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xbc ++ .4byte 0x31f4 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xbd ++ .4byte 0x320f ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xbf ++ .4byte 0x3237 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc1 ++ .4byte 0x3259 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc2 ++ .4byte 0x3279 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc3 ++ .4byte 0x32a0 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc4 ++ .4byte 0x32c0 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc5 ++ .4byte 0x32df ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc6 ++ .4byte 0x32f5 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc7 ++ .4byte 0x3315 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc8 ++ .4byte 0x3334 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xc9 ++ .4byte 0x3353 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xca ++ .4byte 0x3372 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xcb ++ .4byte 0x3389 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xcc ++ .4byte 0x33a0 ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xcd ++ .4byte 0x33be ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xce ++ .4byte 0x33dd ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xcf ++ .4byte 0x33fb ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xd0 ++ .4byte 0x341a ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x108 ++ .4byte 0x3cdb ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x109 ++ .4byte 0x3cfd ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x10a ++ .4byte 0x3d24 ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x118 ++ .4byte 0x3237 ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x11b ++ .4byte 0x2f52 ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x11e ++ .4byte 0x2f97 ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x121 ++ .4byte 0x2fd2 ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x125 ++ .4byte 0x3cdb ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x126 ++ .4byte 0x3cfd ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x127 ++ .4byte 0x3d24 ++ .uleb128 0x15 ++ .4byte .LASF52 ++ .byte 0xa ++ .byte 0x36 ++ .4byte 0x66d ++ .uleb128 0x16 ++ .4byte .LASF54 ++ .byte 0x8 ++ .byte 0xa ++ .byte 0x4b ++ .4byte 0x667 ++ .uleb128 0x4 ++ .4byte .LASF53 ++ .byte 0xa ++ .byte 0x4d ++ .4byte 0x20d ++ .byte 0 ++ .uleb128 0x17 ++ .4byte .LASF54 ++ .byte 0xa ++ .byte 0x4f ++ .4byte 0x4ed ++ .4byte 0x4f8 ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x19 ++ .4byte 0x20d ++ .byte 0 ++ .uleb128 0x1a ++ .4byte .LASF55 ++ .byte 0xa ++ .byte 0x51 ++ .4byte .LASF57 ++ .4byte 0x50b ++ .4byte 0x511 ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .byte 0 ++ .uleb128 0x1a ++ .4byte .LASF56 ++ .byte 0xa ++ .byte 0x52 ++ .4byte .LASF58 ++ .4byte 0x524 ++ .4byte 0x52a ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .byte 0 ++ .uleb128 0x1b ++ .4byte .LASF63 ++ .byte 0xa ++ .byte 0x54 ++ .4byte .LASF65 ++ .4byte 0x20d ++ .4byte 0x541 ++ .4byte 0x547 ++ .uleb128 0x18 ++ .4byte 0x3d51 ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF54 ++ .byte 0xa ++ .byte 0x5a ++ .byte 0x1 ++ .4byte 0x557 ++ .4byte 0x55d ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF54 ++ .byte 0xa ++ .byte 0x5c ++ .byte 0x1 ++ .4byte 0x56d ++ .4byte 0x578 ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x19 ++ .4byte 0x3d57 ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF54 ++ .byte 0xa ++ .byte 0x5f ++ .byte 0x1 ++ .4byte 0x588 ++ .4byte 0x593 ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x19 ++ .4byte 0x674 ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF54 ++ .byte 0xa ++ .byte 0x63 ++ .byte 0x1 ++ .4byte 0x5a3 ++ .4byte 0x5ae ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x19 ++ .4byte 0x3d62 ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF59 ++ .byte 0xa ++ .byte 0x70 ++ .4byte .LASF60 ++ .4byte 0x3d68 ++ .byte 0x1 ++ .4byte 0x5c6 ++ .4byte 0x5d1 ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x19 ++ .4byte 0x3d57 ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF59 ++ .byte 0xa ++ .byte 0x74 ++ .4byte .LASF61 ++ .4byte 0x3d68 ++ .byte 0x1 ++ .4byte 0x5e9 ++ .4byte 0x5f4 ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x19 ++ .4byte 0x3d62 ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF62 ++ .byte 0xa ++ .byte 0x7b ++ .byte 0x1 ++ .4byte 0x604 ++ .4byte 0x60f ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x18 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x1e ++ .4byte .LASF64 ++ .byte 0xa ++ .byte 0x7e ++ .4byte .LASF66 ++ .byte 0x1 ++ .4byte 0x623 ++ .4byte 0x62e ++ .uleb128 0x18 ++ .4byte 0x3d4b ++ .uleb128 0x19 ++ .4byte 0x3d68 ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF67 ++ .byte 0xa ++ .byte 0x8a ++ .4byte .LASF68 ++ .4byte 0x3d6e ++ .byte 0x1 ++ .4byte 0x646 ++ .4byte 0x64c ++ .uleb128 0x18 ++ .4byte 0x3d51 ++ .byte 0 ++ .uleb128 0x1f ++ .4byte .LASF69 ++ .byte 0xa ++ .byte 0x93 ++ .4byte .LASF70 ++ .4byte 0x3d75 ++ .byte 0x1 ++ .4byte 0x660 ++ .uleb128 0x18 ++ .4byte 0x3d51 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x4c6 ++ .byte 0 ++ .uleb128 0x13 ++ .byte 0xa ++ .byte 0x3a ++ .4byte 0x4c6 ++ .uleb128 0x2 ++ .4byte .LASF71 ++ .byte 0xb ++ .byte 0xbe ++ .4byte 0x3d5d ++ .uleb128 0x20 ++ .4byte .LASF355 ++ .uleb128 0x10 ++ .4byte 0x67f ++ .uleb128 0x21 ++ .4byte .LASF72 ++ .byte 0x1 ++ .byte 0xc ++ .byte 0x53 ++ .uleb128 0x21 ++ .4byte .LASF73 ++ .byte 0x1 ++ .byte 0xd ++ .byte 0x4c ++ .uleb128 0x21 ++ .4byte .LASF74 ++ .byte 0x1 ++ .byte 0xe ++ .byte 0x59 ++ .uleb128 0x3 ++ .4byte .LASF75 ++ .byte 0x1 ++ .byte 0xe ++ .byte 0x5f ++ .4byte 0x6b4 ++ .uleb128 0x22 ++ .4byte 0x699 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF76 ++ .byte 0x1 ++ .byte 0xe ++ .byte 0x63 ++ .4byte 0x6c7 ++ .uleb128 0x22 ++ .4byte 0x6a1 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF77 ++ .byte 0x1 ++ .byte 0xe ++ .byte 0x67 ++ .4byte 0x6da ++ .uleb128 0x22 ++ .4byte 0x6b4 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x23 ++ .4byte .LASF807 ++ .byte 0x25 ++ .byte 0x30 ++ .uleb128 0x3 ++ .4byte .LASF78 ++ .byte 0x1 ++ .byte 0xf ++ .byte 0xe9 ++ .4byte 0x8a8 ++ .uleb128 0x2 ++ .4byte .LASF79 ++ .byte 0xf ++ .byte 0xeb ++ .4byte 0x296 ++ .uleb128 0x2 ++ .4byte .LASF80 ++ .byte 0xf ++ .byte 0xec ++ .4byte 0x20f ++ .uleb128 0x24 ++ .4byte .LASF93 ++ .byte 0xf ++ .byte 0xf2 ++ .4byte .LASF808 ++ .4byte 0x71d ++ .uleb128 0x19 ++ .4byte 0x3dad ++ .uleb128 0x19 ++ .4byte 0x3db3 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x6ed ++ .uleb128 0x25 ++ .string "eq" ++ .byte 0xf ++ .byte 0xf6 ++ .4byte .LASF81 ++ .4byte 0x3d6e ++ .4byte 0x73f ++ .uleb128 0x19 ++ .4byte 0x3db3 ++ .uleb128 0x19 ++ .4byte 0x3db3 ++ .byte 0 ++ .uleb128 0x25 ++ .string "lt" ++ .byte 0xf ++ .byte 0xfa ++ .4byte .LASF82 ++ .4byte 0x3d6e ++ .4byte 0x75c ++ .uleb128 0x19 ++ .4byte 0x3db3 ++ .uleb128 0x19 ++ .4byte 0x3db3 ++ .byte 0 ++ .uleb128 0x26 ++ .4byte .LASF83 ++ .byte 0xf ++ .byte 0xfe ++ .4byte .LASF84 ++ .4byte 0x20f ++ .4byte 0x77f ++ .uleb128 0x19 ++ .4byte 0x3db9 ++ .uleb128 0x19 ++ .4byte 0x3db9 ++ .uleb128 0x19 ++ .4byte 0x8a8 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF85 ++ .byte 0xf ++ .2byte 0x102 ++ .4byte .LASF87 ++ .4byte 0x8a8 ++ .4byte 0x799 ++ .uleb128 0x19 ++ .4byte 0x3db9 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF86 ++ .byte 0xf ++ .2byte 0x106 ++ .4byte .LASF88 ++ .4byte 0x3db9 ++ .4byte 0x7bd ++ .uleb128 0x19 ++ .4byte 0x3db9 ++ .uleb128 0x19 ++ .4byte 0x8a8 ++ .uleb128 0x19 ++ .4byte 0x3db3 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF89 ++ .byte 0xf ++ .2byte 0x10a ++ .4byte .LASF90 ++ .4byte 0x3dbf ++ .4byte 0x7e1 ++ .uleb128 0x19 ++ .4byte 0x3dbf ++ .uleb128 0x19 ++ .4byte 0x3db9 ++ .uleb128 0x19 ++ .4byte 0x8a8 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF91 ++ .byte 0xf ++ .2byte 0x10e ++ .4byte .LASF92 ++ .4byte 0x3dbf ++ .4byte 0x805 ++ .uleb128 0x19 ++ .4byte 0x3dbf ++ .uleb128 0x19 ++ .4byte 0x3db9 ++ .uleb128 0x19 ++ .4byte 0x8a8 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF93 ++ .byte 0xf ++ .2byte 0x112 ++ .4byte .LASF94 ++ .4byte 0x3dbf ++ .4byte 0x829 ++ .uleb128 0x19 ++ .4byte 0x3dbf ++ .uleb128 0x19 ++ .4byte 0x8a8 ++ .uleb128 0x19 ++ .4byte 0x6ed ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF95 ++ .byte 0xf ++ .2byte 0x116 ++ .4byte .LASF96 ++ .4byte 0x6ed ++ .4byte 0x843 ++ .uleb128 0x19 ++ .4byte 0x3dc5 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x6f8 ++ .uleb128 0x27 ++ .4byte .LASF97 ++ .byte 0xf ++ .2byte 0x11c ++ .4byte .LASF98 ++ .4byte 0x6f8 ++ .4byte 0x862 ++ .uleb128 0x19 ++ .4byte 0x3db3 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF99 ++ .byte 0xf ++ .2byte 0x120 ++ .4byte .LASF100 ++ .4byte 0x3d6e ++ .4byte 0x881 ++ .uleb128 0x19 ++ .4byte 0x3dc5 ++ .uleb128 0x19 ++ .4byte 0x3dc5 ++ .byte 0 ++ .uleb128 0x28 ++ .string "eof" ++ .byte 0xf ++ .2byte 0x124 ++ .4byte .LASF809 ++ .4byte 0x6f8 ++ .uleb128 0x29 ++ .4byte .LASF101 ++ .byte 0xf ++ .2byte 0x128 ++ .4byte .LASF171 ++ .4byte 0x6f8 ++ .uleb128 0x19 ++ .4byte 0x3dc5 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2 ++ .4byte .LASF39 ++ .byte 0xb ++ .byte 0xba ++ .4byte 0x221 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x30 ++ .4byte 0x3dcb ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x31 ++ .4byte 0x3dd6 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x32 ++ .4byte 0x3de1 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x33 ++ .4byte 0x3dec ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x35 ++ .4byte 0x3e7b ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x36 ++ .4byte 0x3e86 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x37 ++ .4byte 0x3e91 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x38 ++ .4byte 0x3e9c ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x3a ++ .4byte 0x3e23 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x3b ++ .4byte 0x3e2e ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x3c ++ .4byte 0x3e39 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x3d ++ .4byte 0x3e44 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x3f ++ .4byte 0x3ee9 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x40 ++ .4byte 0x3ed3 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x42 ++ .4byte 0x3df7 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x43 ++ .4byte 0x3e02 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x44 ++ .4byte 0x3e0d ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x45 ++ .4byte 0x3e18 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x47 ++ .4byte 0x3ea7 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x48 ++ .4byte 0x3eb2 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x49 ++ .4byte 0x3ebd ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x4a ++ .4byte 0x3ec8 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x4c ++ .4byte 0x3e4f ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x4d ++ .4byte 0x3e5a ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x4e ++ .4byte 0x3e65 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x4f ++ .4byte 0x3e70 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x51 ++ .4byte 0x3ef4 ++ .uleb128 0x13 ++ .byte 0x10 ++ .byte 0x52 ++ .4byte 0x3ede ++ .uleb128 0x13 ++ .byte 0x11 ++ .byte 0x35 ++ .4byte 0x3f0d ++ .uleb128 0x13 ++ .byte 0x11 ++ .byte 0x36 ++ .4byte 0x403a ++ .uleb128 0x13 ++ .byte 0x11 ++ .byte 0x37 ++ .4byte 0x4054 ++ .uleb128 0x2 ++ .4byte .LASF102 ++ .byte 0xb ++ .byte 0xbb ++ .4byte 0x3299 ++ .uleb128 0x16 ++ .4byte .LASF103 ++ .byte 0x1 ++ .byte 0x12 ++ .byte 0x5c ++ .4byte 0xa17 ++ .uleb128 0x2a ++ .4byte 0x346e ++ .byte 0 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF104 ++ .byte 0x12 ++ .byte 0x5f ++ .4byte 0x8a8 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF105 ++ .byte 0x12 ++ .byte 0x63 ++ .4byte 0x40a9 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF106 ++ .byte 0x12 ++ .byte 0x64 ++ .4byte 0x40af ++ .byte 0x1 ++ .uleb128 0x1c ++ .4byte .LASF107 ++ .byte 0x12 ++ .byte 0x71 ++ .byte 0x1 ++ .4byte 0x9de ++ .4byte 0x9e4 ++ .uleb128 0x18 ++ .4byte 0x40c7 ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF107 ++ .byte 0x12 ++ .byte 0x73 ++ .byte 0x1 ++ .4byte 0x9f4 ++ .4byte 0x9ff ++ .uleb128 0x18 ++ .4byte 0x40c7 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x2c ++ .4byte .LASF108 ++ .byte 0x12 ++ .byte 0x79 ++ .byte 0x1 ++ .4byte 0xa0b ++ .uleb128 0x18 ++ .4byte 0x40c7 ++ .uleb128 0x18 ++ .4byte 0x20f ++ .byte 0 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x997 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x76 ++ .4byte 0x40f8 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x77 ++ .4byte 0x4128 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x7b ++ .4byte 0x4189 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x7e ++ .4byte 0x41a6 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x81 ++ .4byte 0x41c0 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x82 ++ .4byte 0x41d5 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x83 ++ .4byte 0x41eb ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x84 ++ .4byte 0x4201 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x86 ++ .4byte 0x422a ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x89 ++ .4byte 0x4245 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x8b ++ .4byte 0x425b ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x8e ++ .4byte 0x4276 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x8f ++ .4byte 0x4291 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x90 ++ .4byte 0x42b0 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x92 ++ .4byte 0x42d0 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x95 ++ .4byte 0x42f1 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x98 ++ .4byte 0x4303 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x9a ++ .4byte 0x430f ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x9b ++ .4byte 0x4321 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x9c ++ .4byte 0x4341 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x9d ++ .4byte 0x4360 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0x9e ++ .4byte 0x437f ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xa0 ++ .4byte 0x4395 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xa1 ++ .4byte 0x43b4 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xf1 ++ .4byte 0x4158 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xf6 ++ .4byte 0x3634 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xf7 ++ .4byte 0x43ce ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xf9 ++ .4byte 0x43e9 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xfa ++ .4byte 0x443d ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xfb ++ .4byte 0x43ff ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xfc ++ .4byte 0x441e ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xfd ++ .4byte 0x4457 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x60 ++ .4byte 0x2d ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x61 ++ .4byte 0x450b ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x63 ++ .4byte 0x4516 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x64 ++ .4byte 0x452e ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x65 ++ .4byte 0x4543 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x66 ++ .4byte 0x4559 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x67 ++ .4byte 0x456f ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x68 ++ .4byte 0x4584 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x69 ++ .4byte 0x459a ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x6a ++ .4byte 0x45bb ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x6b ++ .4byte 0x45da ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x6f ++ .4byte 0x45f5 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x70 ++ .4byte 0x461a ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x72 ++ .4byte 0x463a ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x73 ++ .4byte 0x465a ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x74 ++ .4byte 0x4680 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x76 ++ .4byte 0x4696 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x77 ++ .4byte 0x46ac ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x78 ++ .4byte 0x46b7 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x79 ++ .4byte 0x46cd ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x7e ++ .4byte 0x46df ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x7f ++ .4byte 0x46f4 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x80 ++ .4byte 0x470e ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x82 ++ .4byte 0x4720 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x83 ++ .4byte 0x4737 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x86 ++ .4byte 0x475c ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x87 ++ .4byte 0x4767 ++ .uleb128 0x13 ++ .byte 0x14 ++ .byte 0x88 ++ .4byte 0x477c ++ .uleb128 0x16 ++ .4byte .LASF109 ++ .byte 0x8 ++ .byte 0x15 ++ .byte 0x70 ++ .4byte 0x2547 ++ .uleb128 0x2d ++ .4byte .LASF110 ++ .byte 0x8 ++ .byte 0x15 ++ .2byte 0x110 ++ .4byte 0xc21 ++ .uleb128 0x22 ++ .4byte 0x997 ++ .byte 0 ++ .uleb128 0x5 ++ .4byte .LASF111 ++ .byte 0x15 ++ .2byte 0x115 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x2e ++ .4byte .LASF110 ++ .byte 0x15 ++ .2byte 0x112 ++ .4byte 0xbfc ++ .4byte 0xc0c ++ .uleb128 0x18 ++ .4byte 0x4797 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x2f ++ .4byte .LASF800 ++ .4byte 0xc15 ++ .uleb128 0x18 ++ .4byte 0x4797 ++ .uleb128 0x18 ++ .4byte 0x20f ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2b ++ .4byte .LASF104 ++ .byte 0x15 ++ .byte 0x79 ++ .4byte 0x9aa ++ .byte 0x1 ++ .uleb128 0x30 ++ .4byte .LASF810 ++ .byte 0x15 ++ .2byte 0x11d ++ .4byte 0xc3a ++ .byte 0x1 ++ .uleb128 0x10 ++ .4byte 0xc21 ++ .uleb128 0x5 ++ .4byte .LASF112 ++ .byte 0x15 ++ .2byte 0x121 ++ .4byte 0xbcc ++ .byte 0 ++ .uleb128 0x2b ++ .4byte .LASF113 ++ .byte 0x15 ++ .byte 0x78 ++ .4byte 0x997 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF105 ++ .byte 0x15 ++ .byte 0x7b ++ .4byte 0x9b6 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF106 ++ .byte 0x15 ++ .byte 0x7c ++ .4byte 0x9c2 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF114 ++ .byte 0x15 ++ .byte 0x7f ++ .4byte 0x3652 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF115 ++ .byte 0x15 ++ .byte 0x81 ++ .4byte 0x3876 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF116 ++ .byte 0x15 ++ .byte 0x82 ++ .4byte 0x2547 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF117 ++ .byte 0x15 ++ .byte 0x83 ++ .4byte 0x254c ++ .byte 0x1 ++ .uleb128 0x3 ++ .4byte .LASF118 ++ .byte 0x18 ++ .byte 0x15 ++ .byte 0x94 ++ .4byte 0xcd1 ++ .uleb128 0x4 ++ .4byte .LASF119 ++ .byte 0x15 ++ .byte 0x96 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF120 ++ .byte 0x15 ++ .byte 0x97 ++ .4byte 0xc21 ++ .byte 0x8 ++ .uleb128 0x4 ++ .4byte .LASF121 ++ .byte 0x15 ++ .byte 0x98 ++ .4byte 0x4097 ++ .byte 0x10 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF122 ++ .byte 0x18 ++ .byte 0x15 ++ .byte 0x9b ++ .4byte 0xe85 ++ .uleb128 0x22 ++ .4byte 0xca0 ++ .byte 0 ++ .uleb128 0x31 ++ .4byte .LASF123 ++ .byte 0x16 ++ .byte 0x32 ++ .4byte 0xc3a ++ .uleb128 0x31 ++ .4byte .LASF124 ++ .byte 0x16 ++ .byte 0x37 ++ .4byte 0x2c5 ++ .uleb128 0x31 ++ .4byte .LASF125 ++ .byte 0x16 ++ .byte 0x42 ++ .4byte 0x47d3 ++ .uleb128 0x32 ++ .4byte .LASF126 ++ .byte 0x15 ++ .byte 0xb5 ++ .4byte .LASF811 ++ .4byte 0x47af ++ .uleb128 0x1b ++ .4byte .LASF127 ++ .byte 0x15 ++ .byte 0xbf ++ .4byte .LASF128 ++ .4byte 0x3d6e ++ .4byte 0xd2a ++ .4byte 0xd30 ++ .uleb128 0x18 ++ .4byte 0x47de ++ .byte 0 ++ .uleb128 0x1b ++ .4byte .LASF129 ++ .byte 0x15 ++ .byte 0xc3 ++ .4byte .LASF130 ++ .4byte 0x3d6e ++ .4byte 0xd47 ++ .4byte 0xd4d ++ .uleb128 0x18 ++ .4byte 0x47de ++ .byte 0 ++ .uleb128 0x1a ++ .4byte .LASF131 ++ .byte 0x15 ++ .byte 0xc7 ++ .4byte .LASF132 ++ .4byte 0xd60 ++ .4byte 0xd66 ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .byte 0 ++ .uleb128 0x1a ++ .4byte .LASF133 ++ .byte 0x15 ++ .byte 0xcb ++ .4byte .LASF134 ++ .4byte 0xd79 ++ .4byte 0xd7f ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .byte 0 ++ .uleb128 0x1a ++ .4byte .LASF135 ++ .byte 0x15 ++ .byte 0xcf ++ .4byte .LASF136 ++ .4byte 0xd92 ++ .4byte 0xd9d ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x1b ++ .4byte .LASF137 ++ .byte 0x15 ++ .byte 0xde ++ .4byte .LASF138 ++ .4byte 0x300d ++ .4byte 0xdb4 ++ .4byte 0xdba ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .byte 0 ++ .uleb128 0x1b ++ .4byte .LASF139 ++ .byte 0x15 ++ .byte 0xe2 ++ .4byte .LASF140 ++ .4byte 0x300d ++ .4byte 0xdd1 ++ .4byte 0xde1 ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF141 ++ .byte 0x16 ++ .2byte 0x221 ++ .4byte .LASF142 ++ .4byte 0x47a9 ++ .4byte 0xe05 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x1a ++ .4byte .LASF143 ++ .byte 0x15 ++ .byte 0xed ++ .4byte .LASF144 ++ .4byte 0xe18 ++ .4byte 0xe23 ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x33 ++ .4byte .LASF145 ++ .byte 0x16 ++ .2byte 0x1bc ++ .4byte .LASF146 ++ .4byte 0xe37 ++ .4byte 0xe42 ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF147 ++ .byte 0x15 ++ .2byte 0x102 ++ .4byte .LASF151 ++ .4byte 0x300d ++ .4byte 0xe5a ++ .4byte 0xe60 ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .byte 0 ++ .uleb128 0x35 ++ .4byte .LASF148 ++ .byte 0x16 ++ .2byte 0x26f ++ .4byte .LASF149 ++ .4byte 0x300d ++ .4byte 0xe74 ++ .uleb128 0x18 ++ .4byte 0x47a9 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF150 ++ .byte 0x15 ++ .2byte 0x124 ++ .4byte .LASF152 ++ .4byte 0x300d ++ .4byte 0xe9d ++ .4byte 0xea3 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF150 ++ .byte 0x15 ++ .2byte 0x128 ++ .4byte .LASF153 ++ .4byte 0x300d ++ .4byte 0xebb ++ .4byte 0xec6 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF154 ++ .byte 0x15 ++ .2byte 0x12c ++ .4byte .LASF155 ++ .4byte 0x47a9 ++ .4byte 0xede ++ .4byte 0xee4 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF156 ++ .byte 0x15 ++ .2byte 0x132 ++ .4byte .LASF157 ++ .4byte 0xc70 ++ .4byte 0xefc ++ .4byte 0xf02 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF158 ++ .byte 0x15 ++ .2byte 0x136 ++ .4byte .LASF159 ++ .4byte 0xc70 ++ .4byte 0xf1a ++ .4byte 0xf20 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x33 ++ .4byte .LASF160 ++ .byte 0x15 ++ .2byte 0x13a ++ .4byte .LASF161 ++ .4byte 0xf34 ++ .4byte 0xf3a ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF162 ++ .byte 0x15 ++ .2byte 0x141 ++ .4byte .LASF163 ++ .4byte 0xc21 ++ .4byte 0xf52 ++ .4byte 0xf62 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x33 ++ .4byte .LASF164 ++ .byte 0x15 ++ .2byte 0x149 ++ .4byte .LASF165 ++ .4byte 0xf76 ++ .4byte 0xf8b ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF166 ++ .byte 0x15 ++ .2byte 0x151 ++ .4byte .LASF167 ++ .4byte 0xc21 ++ .4byte 0xfa3 ++ .4byte 0xfb3 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF168 ++ .byte 0x15 ++ .2byte 0x159 ++ .4byte .LASF169 ++ .4byte 0x3d6e ++ .4byte 0xfcb ++ .4byte 0xfd6 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x36 ++ .4byte .LASF170 ++ .byte 0x15 ++ .2byte 0x162 ++ .4byte .LASF172 ++ .4byte 0xff6 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x36 ++ .4byte .LASF173 ++ .byte 0x15 ++ .2byte 0x16b ++ .4byte .LASF174 ++ .4byte 0x1016 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x36 ++ .4byte .LASF175 ++ .byte 0x15 ++ .2byte 0x174 ++ .4byte .LASF176 ++ .4byte 0x1036 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x36 ++ .4byte .LASF177 ++ .byte 0x15 ++ .2byte 0x187 ++ .4byte .LASF178 ++ .4byte 0x1056 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .byte 0 ++ .uleb128 0x36 ++ .4byte .LASF177 ++ .byte 0x15 ++ .2byte 0x18b ++ .4byte .LASF179 ++ .4byte 0x1076 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0xc7c ++ .uleb128 0x19 ++ .4byte 0xc7c ++ .byte 0 ++ .uleb128 0x36 ++ .4byte .LASF177 ++ .byte 0x15 ++ .2byte 0x18f ++ .4byte .LASF180 ++ .4byte 0x1096 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x36 ++ .4byte .LASF177 ++ .byte 0x15 ++ .2byte 0x193 ++ .4byte .LASF181 ++ .4byte 0x10b6 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF182 ++ .byte 0x15 ++ .2byte 0x197 ++ .4byte .LASF183 ++ .4byte 0x20f ++ .4byte 0x10d5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x33 ++ .4byte .LASF184 ++ .byte 0x15 ++ .2byte 0x1a4 ++ .4byte .LASF185 ++ .4byte 0x10e9 ++ .4byte 0x10fe ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x33 ++ .4byte .LASF186 ++ .byte 0x15 ++ .2byte 0x1a7 ++ .4byte .LASF187 ++ .4byte 0x1112 ++ .4byte 0x1118 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x37 ++ .4byte .LASF126 ++ .byte 0x15 ++ .2byte 0x1aa ++ .4byte .LASF812 ++ .4byte 0x47af ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1b5 ++ .byte 0x1 ++ .4byte 0x1139 ++ .4byte 0x113f ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x39 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1c0 ++ .byte 0x1 ++ .4byte 0x1150 ++ .4byte 0x115b ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1c7 ++ .byte 0x1 ++ .4byte 0x116c ++ .4byte 0x1177 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1ce ++ .byte 0x1 ++ .4byte 0x1188 ++ .4byte 0x119d ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1d7 ++ .byte 0x1 ++ .4byte 0x11ae ++ .4byte 0x11c8 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1e3 ++ .byte 0x1 ++ .4byte 0x11d9 ++ .4byte 0x11ee ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1ea ++ .byte 0x1 ++ .4byte 0x11ff ++ .4byte 0x120f ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1f1 ++ .byte 0x1 ++ .4byte 0x1220 ++ .4byte 0x1235 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x1fb ++ .byte 0x1 ++ .4byte 0x1246 ++ .4byte 0x1251 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47bb ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF188 ++ .byte 0x15 ++ .2byte 0x20a ++ .byte 0x1 ++ .4byte 0x1262 ++ .4byte 0x1272 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2556 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF189 ++ .byte 0x15 ++ .2byte 0x21a ++ .byte 0x1 ++ .4byte 0x1283 ++ .4byte 0x128e ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x18 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF59 ++ .byte 0x15 ++ .2byte 0x222 ++ .4byte .LASF190 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x12a7 ++ .4byte 0x12b2 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF59 ++ .byte 0x15 ++ .2byte 0x22a ++ .4byte .LASF191 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x12cb ++ .4byte 0x12d6 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF59 ++ .byte 0x15 ++ .2byte 0x235 ++ .4byte .LASF192 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x12ef ++ .4byte 0x12fa ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF59 ++ .byte 0x15 ++ .2byte 0x244 ++ .4byte .LASF193 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1313 ++ .4byte 0x131e ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47bb ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF59 ++ .byte 0x15 ++ .2byte 0x250 ++ .4byte .LASF194 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1337 ++ .4byte 0x1342 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2556 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF195 ++ .byte 0x15 ++ .2byte 0x25d ++ .4byte .LASF196 ++ .4byte 0xc70 ++ .byte 0x1 ++ .4byte 0x135b ++ .4byte 0x1361 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF195 ++ .byte 0x15 ++ .2byte 0x268 ++ .4byte .LASF197 ++ .4byte 0xc7c ++ .byte 0x1 ++ .4byte 0x137a ++ .4byte 0x1380 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3b ++ .string "end" ++ .byte 0x15 ++ .2byte 0x270 ++ .4byte .LASF198 ++ .4byte 0xc70 ++ .byte 0x1 ++ .4byte 0x1399 ++ .4byte 0x139f ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3b ++ .string "end" ++ .byte 0x15 ++ .2byte 0x27b ++ .4byte .LASF199 ++ .4byte 0xc7c ++ .byte 0x1 ++ .4byte 0x13b8 ++ .4byte 0x13be ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF200 ++ .byte 0x15 ++ .2byte 0x284 ++ .4byte .LASF201 ++ .4byte 0xc94 ++ .byte 0x1 ++ .4byte 0x13d7 ++ .4byte 0x13dd ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF200 ++ .byte 0x15 ++ .2byte 0x28d ++ .4byte .LASF202 ++ .4byte 0xc88 ++ .byte 0x1 ++ .4byte 0x13f6 ++ .4byte 0x13fc ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF203 ++ .byte 0x15 ++ .2byte 0x296 ++ .4byte .LASF204 ++ .4byte 0xc94 ++ .byte 0x1 ++ .4byte 0x1415 ++ .4byte 0x141b ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF203 ++ .byte 0x15 ++ .2byte 0x29f ++ .4byte .LASF205 ++ .4byte 0xc88 ++ .byte 0x1 ++ .4byte 0x1434 ++ .4byte 0x143a ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF206 ++ .byte 0x15 ++ .2byte 0x2a8 ++ .4byte .LASF207 ++ .4byte 0xc7c ++ .byte 0x1 ++ .4byte 0x1453 ++ .4byte 0x1459 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF208 ++ .byte 0x15 ++ .2byte 0x2b0 ++ .4byte .LASF209 ++ .4byte 0xc7c ++ .byte 0x1 ++ .4byte 0x1472 ++ .4byte 0x1478 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF210 ++ .byte 0x15 ++ .2byte 0x2b9 ++ .4byte .LASF211 ++ .4byte 0xc88 ++ .byte 0x1 ++ .4byte 0x1491 ++ .4byte 0x1497 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF212 ++ .byte 0x15 ++ .2byte 0x2c2 ++ .4byte .LASF213 ++ .4byte 0xc88 ++ .byte 0x1 ++ .4byte 0x14b0 ++ .4byte 0x14b6 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF214 ++ .byte 0x15 ++ .2byte 0x2cb ++ .4byte .LASF215 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x14cf ++ .4byte 0x14d5 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF85 ++ .byte 0x15 ++ .2byte 0x2d1 ++ .4byte .LASF216 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x14ee ++ .4byte 0x14f4 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF217 ++ .byte 0x15 ++ .2byte 0x2d6 ++ .4byte .LASF218 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x150d ++ .4byte 0x1513 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF219 ++ .byte 0x15 ++ .2byte 0x2e4 ++ .4byte .LASF220 ++ .byte 0x1 ++ .4byte 0x1528 ++ .4byte 0x1538 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF219 ++ .byte 0x15 ++ .2byte 0x2f1 ++ .4byte .LASF221 ++ .byte 0x1 ++ .4byte 0x154d ++ .4byte 0x1558 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF222 ++ .byte 0x15 ++ .2byte 0x2f7 ++ .4byte .LASF223 ++ .byte 0x1 ++ .4byte 0x156d ++ .4byte 0x1573 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF224 ++ .byte 0x15 ++ .2byte 0x308 ++ .4byte .LASF225 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x158c ++ .4byte 0x1592 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF226 ++ .byte 0x15 ++ .2byte 0x31d ++ .4byte .LASF227 ++ .byte 0x1 ++ .4byte 0x15a7 ++ .4byte 0x15b2 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF228 ++ .byte 0x15 ++ .2byte 0x323 ++ .4byte .LASF229 ++ .byte 0x1 ++ .4byte 0x15c7 ++ .4byte 0x15cd ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF230 ++ .byte 0x15 ++ .2byte 0x32b ++ .4byte .LASF231 ++ .4byte 0x3d6e ++ .byte 0x1 ++ .4byte 0x15e6 ++ .4byte 0x15ec ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF232 ++ .byte 0x15 ++ .2byte 0x33a ++ .4byte .LASF233 ++ .4byte 0xc64 ++ .byte 0x1 ++ .4byte 0x1605 ++ .4byte 0x1610 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF232 ++ .byte 0x15 ++ .2byte 0x34b ++ .4byte .LASF234 ++ .4byte 0xc58 ++ .byte 0x1 ++ .4byte 0x1629 ++ .4byte 0x1634 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3b ++ .string "at" ++ .byte 0x15 ++ .2byte 0x360 ++ .4byte .LASF235 ++ .4byte 0xc64 ++ .byte 0x1 ++ .4byte 0x164c ++ .4byte 0x1657 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3b ++ .string "at" ++ .byte 0x15 ++ .2byte 0x373 ++ .4byte .LASF236 ++ .4byte 0xc58 ++ .byte 0x1 ++ .4byte 0x166f ++ .4byte 0x167a ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF237 ++ .byte 0x15 ++ .2byte 0x381 ++ .4byte .LASF238 ++ .4byte 0xc58 ++ .byte 0x1 ++ .4byte 0x1693 ++ .4byte 0x1699 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF237 ++ .byte 0x15 ++ .2byte 0x389 ++ .4byte .LASF239 ++ .4byte 0xc64 ++ .byte 0x1 ++ .4byte 0x16b2 ++ .4byte 0x16b8 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF240 ++ .byte 0x15 ++ .2byte 0x391 ++ .4byte .LASF241 ++ .4byte 0xc58 ++ .byte 0x1 ++ .4byte 0x16d1 ++ .4byte 0x16d7 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF240 ++ .byte 0x15 ++ .2byte 0x399 ++ .4byte .LASF242 ++ .4byte 0xc64 ++ .byte 0x1 ++ .4byte 0x16f0 ++ .4byte 0x16f6 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF243 ++ .byte 0x15 ++ .2byte 0x3a4 ++ .4byte .LASF244 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x170f ++ .4byte 0x171a ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF243 ++ .byte 0x15 ++ .2byte 0x3ad ++ .4byte .LASF245 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1733 ++ .4byte 0x173e ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF243 ++ .byte 0x15 ++ .2byte 0x3b6 ++ .4byte .LASF246 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1757 ++ .4byte 0x1762 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF243 ++ .byte 0x15 ++ .2byte 0x3c3 ++ .4byte .LASF247 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x177b ++ .4byte 0x1786 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2556 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF248 ++ .byte 0x15 ++ .2byte 0x3cd ++ .4byte .LASF249 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x179f ++ .4byte 0x17aa ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF248 ++ .byte 0x15 ++ .2byte 0x3dd ++ .4byte .LASF250 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x17c3 ++ .4byte 0x17d8 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF248 ++ .byte 0x15 ++ .2byte 0x3e6 ++ .4byte .LASF251 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x17f1 ++ .4byte 0x1801 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF248 ++ .byte 0x15 ++ .2byte 0x3ee ++ .4byte .LASF252 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x181a ++ .4byte 0x1825 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF248 ++ .byte 0x15 ++ .2byte 0x3fd ++ .4byte .LASF253 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x183e ++ .4byte 0x184e ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF248 ++ .byte 0x15 ++ .2byte 0x406 ++ .4byte .LASF254 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1867 ++ .4byte 0x1872 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2556 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF255 ++ .byte 0x15 ++ .2byte 0x41c ++ .4byte .LASF256 ++ .byte 0x1 ++ .4byte 0x1887 ++ .4byte 0x1892 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF93 ++ .byte 0x15 ++ .2byte 0x42b ++ .4byte .LASF257 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x18ab ++ .4byte 0x18b6 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF93 ++ .byte 0x15 ++ .2byte 0x437 ++ .4byte .LASF258 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x18cf ++ .4byte 0x18da ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47bb ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF93 ++ .byte 0x15 ++ .2byte 0x44c ++ .4byte .LASF259 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x18f3 ++ .4byte 0x1908 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF93 ++ .byte 0x15 ++ .2byte 0x45c ++ .4byte .LASF260 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1921 ++ .4byte 0x1931 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF93 ++ .byte 0x15 ++ .2byte 0x468 ++ .4byte .LASF261 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x194a ++ .4byte 0x1955 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF93 ++ .byte 0x15 ++ .2byte 0x478 ++ .4byte .LASF262 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x196e ++ .4byte 0x197e ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF93 ++ .byte 0x15 ++ .2byte 0x48f ++ .4byte .LASF263 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1997 ++ .4byte 0x19a2 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x2556 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x4a1 ++ .4byte .LASF265 ++ .byte 0x1 ++ .4byte 0x19b7 ++ .4byte 0x19cc ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x4bd ++ .4byte .LASF266 ++ .byte 0x1 ++ .4byte 0x19e1 ++ .4byte 0x19f1 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x2556 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x4d1 ++ .4byte .LASF267 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1a0a ++ .4byte 0x1a1a ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x4e7 ++ .4byte .LASF268 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1a33 ++ .4byte 0x1a4d ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x4fe ++ .4byte .LASF269 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1a66 ++ .4byte 0x1a7b ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x510 ++ .4byte .LASF270 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1a94 ++ .4byte 0x1aa4 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x527 ++ .4byte .LASF271 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1abd ++ .4byte 0x1ad2 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF264 ++ .byte 0x15 ++ .2byte 0x539 ++ .4byte .LASF272 ++ .4byte 0xc70 ++ .byte 0x1 ++ .4byte 0x1aeb ++ .4byte 0x1afb ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF273 ++ .byte 0x15 ++ .2byte 0x552 ++ .4byte .LASF274 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1b14 ++ .4byte 0x1b24 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF273 ++ .byte 0x15 ++ .2byte 0x562 ++ .4byte .LASF275 ++ .4byte 0xc70 ++ .byte 0x1 ++ .4byte 0x1b3d ++ .4byte 0x1b48 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF273 ++ .byte 0x15 ++ .2byte 0x576 ++ .4byte .LASF276 ++ .4byte 0xc70 ++ .byte 0x1 ++ .4byte 0x1b61 ++ .4byte 0x1b71 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF277 ++ .byte 0x15 ++ .2byte 0x57f ++ .4byte .LASF278 ++ .byte 0x1 ++ .4byte 0x1b86 ++ .4byte 0x1b8c ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x595 ++ .4byte .LASF280 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1ba5 ++ .4byte 0x1bba ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x5ab ++ .4byte .LASF281 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1bd3 ++ .4byte 0x1bf2 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x5c4 ++ .4byte .LASF282 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1c0b ++ .4byte 0x1c25 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x5d8 ++ .4byte .LASF283 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1c3e ++ .4byte 0x1c53 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x5f0 ++ .4byte .LASF284 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1c6c ++ .4byte 0x1c86 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x602 ++ .4byte .LASF285 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1c9f ++ .4byte 0x1cb4 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x615 ++ .4byte .LASF286 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1ccd ++ .4byte 0x1ce7 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x62a ++ .4byte .LASF287 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1d00 ++ .4byte 0x1d15 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x63f ++ .4byte .LASF288 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1d2e ++ .4byte 0x1d48 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x664 ++ .4byte .LASF289 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1d61 ++ .4byte 0x1d7b ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x66e ++ .4byte .LASF290 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1d94 ++ .4byte 0x1dae ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x679 ++ .4byte .LASF291 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1dc7 ++ .4byte 0x1de1 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x683 ++ .4byte .LASF292 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1dfa ++ .4byte 0x1e14 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc7c ++ .uleb128 0x19 ++ .4byte 0xc7c ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF279 ++ .byte 0x15 ++ .2byte 0x69c ++ .4byte .LASF293 ++ .4byte 0x47c1 ++ .byte 0x1 ++ .4byte 0x1e2d ++ .4byte 0x1e42 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0xc70 ++ .uleb128 0x19 ++ .4byte 0x2556 ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF294 ++ .byte 0x15 ++ .2byte 0x6ae ++ .4byte .LASF295 ++ .4byte 0x47c1 ++ .4byte 0x1e5a ++ .4byte 0x1e74 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x34 ++ .4byte .LASF296 ++ .byte 0x15 ++ .2byte 0x6b2 ++ .4byte .LASF297 ++ .4byte 0x47c1 ++ .4byte 0x1e8c ++ .4byte 0x1ea6 ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF298 ++ .byte 0x15 ++ .2byte 0x6ca ++ .4byte .LASF299 ++ .4byte 0x300d ++ .4byte 0x1eca ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF300 ++ .byte 0x15 ++ .2byte 0x6e3 ++ .4byte .LASF301 ++ .4byte 0x300d ++ .4byte 0x1eee ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF91 ++ .byte 0x15 ++ .2byte 0x6f4 ++ .4byte .LASF302 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x1f07 ++ .4byte 0x1f1c ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3c ++ .4byte .LASF64 ++ .byte 0x15 ++ .2byte 0x6fe ++ .4byte .LASF303 ++ .byte 0x1 ++ .4byte 0x1f31 ++ .4byte 0x1f3c ++ .uleb128 0x18 ++ .4byte 0x47a3 ++ .uleb128 0x19 ++ .4byte 0x47c1 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF304 ++ .byte 0x15 ++ .2byte 0x708 ++ .4byte .LASF305 ++ .4byte 0x2bf ++ .byte 0x1 ++ .4byte 0x1f55 ++ .4byte 0x1f5b ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF306 ++ .byte 0x15 ++ .2byte 0x712 ++ .4byte .LASF307 ++ .4byte 0x2bf ++ .byte 0x1 ++ .4byte 0x1f74 ++ .4byte 0x1f7a ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF308 ++ .byte 0x15 ++ .2byte 0x719 ++ .4byte .LASF309 ++ .4byte 0xc4c ++ .byte 0x1 ++ .4byte 0x1f93 ++ .4byte 0x1f99 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF86 ++ .byte 0x15 ++ .2byte 0x729 ++ .4byte .LASF310 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x1fb2 ++ .4byte 0x1fc7 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF86 ++ .byte 0x15 ++ .2byte 0x736 ++ .4byte .LASF311 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x1fe0 ++ .4byte 0x1ff0 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF86 ++ .byte 0x15 ++ .2byte 0x745 ++ .4byte .LASF312 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2009 ++ .4byte 0x2019 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF86 ++ .byte 0x15 ++ .2byte 0x756 ++ .4byte .LASF313 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2032 ++ .4byte 0x2042 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF314 ++ .byte 0x15 ++ .2byte 0x763 ++ .4byte .LASF315 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x205b ++ .4byte 0x206b ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF314 ++ .byte 0x15 ++ .2byte 0x774 ++ .4byte .LASF316 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2084 ++ .4byte 0x2099 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF314 ++ .byte 0x15 ++ .2byte 0x781 ++ .4byte .LASF317 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x20b2 ++ .4byte 0x20c2 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF314 ++ .byte 0x15 ++ .2byte 0x792 ++ .4byte .LASF318 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x20db ++ .4byte 0x20eb ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF319 ++ .byte 0x15 ++ .2byte 0x7a0 ++ .4byte .LASF320 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2104 ++ .4byte 0x2114 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF319 ++ .byte 0x15 ++ .2byte 0x7b1 ++ .4byte .LASF321 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x212d ++ .4byte 0x2142 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF319 ++ .byte 0x15 ++ .2byte 0x7be ++ .4byte .LASF322 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x215b ++ .4byte 0x216b ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF319 ++ .byte 0x15 ++ .2byte 0x7d1 ++ .4byte .LASF323 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2184 ++ .4byte 0x2194 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF324 ++ .byte 0x15 ++ .2byte 0x7e0 ++ .4byte .LASF325 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x21ad ++ .4byte 0x21bd ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF324 ++ .byte 0x15 ++ .2byte 0x7f1 ++ .4byte .LASF326 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x21d6 ++ .4byte 0x21eb ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF324 ++ .byte 0x15 ++ .2byte 0x7fe ++ .4byte .LASF327 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2204 ++ .4byte 0x2214 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF324 ++ .byte 0x15 ++ .2byte 0x811 ++ .4byte .LASF328 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x222d ++ .4byte 0x223d ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF329 ++ .byte 0x15 ++ .2byte 0x81f ++ .4byte .LASF330 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2256 ++ .4byte 0x2266 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF329 ++ .byte 0x15 ++ .2byte 0x830 ++ .4byte .LASF331 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x227f ++ .4byte 0x2294 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF329 ++ .byte 0x15 ++ .2byte 0x83e ++ .4byte .LASF332 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x22ad ++ .4byte 0x22bd ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF329 ++ .byte 0x15 ++ .2byte 0x84f ++ .4byte .LASF333 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x22d6 ++ .4byte 0x22e6 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF334 ++ .byte 0x15 ++ .2byte 0x85e ++ .4byte .LASF335 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x22ff ++ .4byte 0x230f ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF334 ++ .byte 0x15 ++ .2byte 0x86f ++ .4byte .LASF336 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2328 ++ .4byte 0x233d ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF334 ++ .byte 0x15 ++ .2byte 0x87d ++ .4byte .LASF337 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x2356 ++ .4byte 0x2366 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF334 ++ .byte 0x15 ++ .2byte 0x88e ++ .4byte .LASF338 ++ .4byte 0xc21 ++ .byte 0x1 ++ .4byte 0x237f ++ .4byte 0x238f ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF339 ++ .byte 0x15 ++ .2byte 0x89e ++ .4byte .LASF340 ++ .4byte 0xbc0 ++ .byte 0x1 ++ .4byte 0x23a8 ++ .4byte 0x23b8 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF83 ++ .byte 0x15 ++ .2byte 0x8b1 ++ .4byte .LASF341 ++ .4byte 0x20f ++ .byte 0x1 ++ .4byte 0x23d1 ++ .4byte 0x23dc ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF83 ++ .byte 0x15 ++ .2byte 0x8d1 ++ .4byte .LASF342 ++ .4byte 0x20f ++ .byte 0x1 ++ .4byte 0x23f5 ++ .4byte 0x240a ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF83 ++ .byte 0x15 ++ .2byte 0x8eb ++ .4byte .LASF343 ++ .4byte 0x20f ++ .byte 0x1 ++ .4byte 0x2423 ++ .4byte 0x2442 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x47b5 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF83 ++ .byte 0x15 ++ .2byte 0x8fd ++ .4byte .LASF344 ++ .4byte 0x20f ++ .byte 0x1 ++ .4byte 0x245b ++ .4byte 0x2466 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF83 ++ .byte 0x15 ++ .2byte 0x915 ++ .4byte .LASF345 ++ .4byte 0x20f ++ .byte 0x1 ++ .4byte 0x247f ++ .4byte 0x2494 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF83 ++ .byte 0x15 ++ .2byte 0x930 ++ .4byte .LASF346 ++ .4byte 0x20f ++ .byte 0x1 ++ .4byte 0x24ad ++ .4byte 0x24c7 ++ .uleb128 0x18 ++ .4byte 0x479d ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0xcd1 ++ .uleb128 0x27 ++ .4byte .LASF347 ++ .byte 0x15 ++ .2byte 0x6b9 ++ .4byte .LASF348 ++ .4byte 0x300d ++ .4byte 0x24fe ++ .uleb128 0x3d ++ .4byte .LASF351 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .uleb128 0x19 ++ .4byte 0x689 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF349 ++ .byte 0x15 ++ .2byte 0x6cf ++ .4byte .LASF350 ++ .4byte 0x300d ++ .4byte 0x252b ++ .uleb128 0x3d ++ .4byte .LASF351 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x3d ++ .4byte .LASF352 ++ .4byte 0x296 ++ .uleb128 0x3d ++ .4byte .LASF353 ++ .4byte 0x6e1 ++ .uleb128 0x3d ++ .4byte .LASF354 ++ .4byte 0x997 ++ .byte 0 ++ .uleb128 0x20 ++ .4byte .LASF356 ++ .uleb128 0x20 ++ .4byte .LASF357 ++ .uleb128 0x10 ++ .4byte 0xbc0 ++ .uleb128 0x16 ++ .4byte .LASF358 ++ .byte 0x10 ++ .byte 0x17 ++ .byte 0x2f ++ .4byte 0x2636 ++ .uleb128 0x2b ++ .4byte .LASF114 ++ .byte 0x17 ++ .byte 0x36 ++ .4byte 0x2bf ++ .byte 0x1 ++ .uleb128 0x4 ++ .4byte .LASF359 ++ .byte 0x17 ++ .byte 0x3a ++ .4byte 0x2562 ++ .byte 0 ++ .uleb128 0x2b ++ .4byte .LASF104 ++ .byte 0x17 ++ .byte 0x35 ++ .4byte 0x8a8 ++ .byte 0x1 ++ .uleb128 0x4 ++ .4byte .LASF360 ++ .byte 0x17 ++ .byte 0x3b ++ .4byte 0x257a ++ .byte 0x8 ++ .uleb128 0x2b ++ .4byte .LASF115 ++ .byte 0x17 ++ .byte 0x37 ++ .4byte 0x2bf ++ .byte 0x1 ++ .uleb128 0x3e ++ .4byte .LASF361 ++ .byte 0x17 ++ .byte 0x3e ++ .4byte 0x25ad ++ .4byte 0x25bd ++ .uleb128 0x18 ++ .4byte 0x47c7 ++ .uleb128 0x19 ++ .4byte 0x2592 ++ .uleb128 0x19 ++ .4byte 0x257a ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF361 ++ .byte 0x17 ++ .byte 0x42 ++ .byte 0x1 ++ .4byte 0x25cd ++ .4byte 0x25d3 ++ .uleb128 0x18 ++ .4byte 0x47c7 ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF214 ++ .byte 0x17 ++ .byte 0x47 ++ .4byte .LASF362 ++ .4byte 0x257a ++ .byte 0x1 ++ .4byte 0x25eb ++ .4byte 0x25f1 ++ .uleb128 0x18 ++ .4byte 0x47cd ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF195 ++ .byte 0x17 ++ .byte 0x4b ++ .4byte .LASF363 ++ .4byte 0x2592 ++ .byte 0x1 ++ .4byte 0x2609 ++ .4byte 0x260f ++ .uleb128 0x18 ++ .4byte 0x47cd ++ .byte 0 ++ .uleb128 0x3f ++ .string "end" ++ .byte 0x17 ++ .byte 0x4f ++ .4byte .LASF456 ++ .4byte 0x2592 ++ .byte 0x1 ++ .4byte 0x2627 ++ .4byte 0x262d ++ .uleb128 0x18 ++ .4byte 0x47cd ++ .byte 0 ++ .uleb128 0x40 ++ .string "_E" ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x2556 ++ .uleb128 0x41 ++ .4byte .LASF385 ++ .byte 0x4 ++ .byte 0x18 ++ .byte 0x33 ++ .4byte 0x26de ++ .uleb128 0x42 ++ .4byte .LASF364 ++ .sleb128 1 ++ .uleb128 0x42 ++ .4byte .LASF365 ++ .sleb128 2 ++ .uleb128 0x42 ++ .4byte .LASF366 ++ .sleb128 4 ++ .uleb128 0x42 ++ .4byte .LASF367 ++ .sleb128 8 ++ .uleb128 0x42 ++ .4byte .LASF368 ++ .sleb128 16 ++ .uleb128 0x42 ++ .4byte .LASF369 ++ .sleb128 32 ++ .uleb128 0x42 ++ .4byte .LASF370 ++ .sleb128 64 ++ .uleb128 0x42 ++ .4byte .LASF371 ++ .sleb128 128 ++ .uleb128 0x42 ++ .4byte .LASF372 ++ .sleb128 256 ++ .uleb128 0x42 ++ .4byte .LASF373 ++ .sleb128 512 ++ .uleb128 0x42 ++ .4byte .LASF374 ++ .sleb128 1024 ++ .uleb128 0x42 ++ .4byte .LASF375 ++ .sleb128 2048 ++ .uleb128 0x42 ++ .4byte .LASF376 ++ .sleb128 4096 ++ .uleb128 0x42 ++ .4byte .LASF377 ++ .sleb128 8192 ++ .uleb128 0x42 ++ .4byte .LASF378 ++ .sleb128 16384 ++ .uleb128 0x42 ++ .4byte .LASF379 ++ .sleb128 176 ++ .uleb128 0x42 ++ .4byte .LASF380 ++ .sleb128 74 ++ .uleb128 0x42 ++ .4byte .LASF381 ++ .sleb128 260 ++ .uleb128 0x42 ++ .4byte .LASF382 ++ .sleb128 65536 ++ .uleb128 0x42 ++ .4byte .LASF383 ++ .sleb128 2147483647 ++ .uleb128 0x42 ++ .4byte .LASF384 ++ .sleb128 -2147483648 ++ .byte 0 ++ .uleb128 0x41 ++ .4byte .LASF386 ++ .byte 0x4 ++ .byte 0x18 ++ .byte 0x69 ++ .4byte 0x272b ++ .uleb128 0x42 ++ .4byte .LASF387 ++ .sleb128 1 ++ .uleb128 0x42 ++ .4byte .LASF388 ++ .sleb128 2 ++ .uleb128 0x42 ++ .4byte .LASF389 ++ .sleb128 4 ++ .uleb128 0x42 ++ .4byte .LASF390 ++ .sleb128 8 ++ .uleb128 0x42 ++ .4byte .LASF391 ++ .sleb128 16 ++ .uleb128 0x42 ++ .4byte .LASF392 ++ .sleb128 32 ++ .uleb128 0x42 ++ .4byte .LASF393 ++ .sleb128 65536 ++ .uleb128 0x42 ++ .4byte .LASF394 ++ .sleb128 2147483647 ++ .uleb128 0x42 ++ .4byte .LASF395 ++ .sleb128 -2147483648 ++ .byte 0 ++ .uleb128 0x41 ++ .4byte .LASF396 ++ .byte 0x4 ++ .byte 0x18 ++ .byte 0x93 ++ .4byte 0x276c ++ .uleb128 0x42 ++ .4byte .LASF397 ++ .sleb128 0 ++ .uleb128 0x42 ++ .4byte .LASF398 ++ .sleb128 1 ++ .uleb128 0x42 ++ .4byte .LASF399 ++ .sleb128 2 ++ .uleb128 0x42 ++ .4byte .LASF400 ++ .sleb128 4 ++ .uleb128 0x42 ++ .4byte .LASF401 ++ .sleb128 65536 ++ .uleb128 0x42 ++ .4byte .LASF402 ++ .sleb128 2147483647 ++ .uleb128 0x42 ++ .4byte .LASF403 ++ .sleb128 -2147483648 ++ .byte 0 ++ .uleb128 0x41 ++ .4byte .LASF404 ++ .byte 0x4 ++ .byte 0x18 ++ .byte 0xbb ++ .4byte 0x2793 ++ .uleb128 0x42 ++ .4byte .LASF405 ++ .sleb128 0 ++ .uleb128 0x42 ++ .4byte .LASF406 ++ .sleb128 1 ++ .uleb128 0x42 ++ .4byte .LASF407 ++ .sleb128 2 ++ .uleb128 0x42 ++ .4byte .LASF408 ++ .sleb128 65536 ++ .byte 0 ++ .uleb128 0x43 ++ .4byte .LASF432 ++ .4byte 0x2974 ++ .uleb128 0x44 ++ .4byte .LASF409 ++ .byte 0x18 ++ .2byte 0x16f ++ .4byte 0x26de ++ .byte 0x1 ++ .uleb128 0x44 ++ .4byte .LASF410 ++ .byte 0x18 ++ .2byte 0x105 ++ .4byte 0x263b ++ .byte 0x1 ++ .uleb128 0x45 ++ .4byte .LASF411 ++ .byte 0x18 ++ .2byte 0x108 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x1 ++ .uleb128 0x10 ++ .4byte 0x27a9 ++ .uleb128 0x46 ++ .string "dec" ++ .byte 0x18 ++ .2byte 0x10b ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x2 ++ .uleb128 0x45 ++ .4byte .LASF412 ++ .byte 0x18 ++ .2byte 0x10e ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x4 ++ .uleb128 0x46 ++ .string "hex" ++ .byte 0x18 ++ .2byte 0x111 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x8 ++ .uleb128 0x45 ++ .4byte .LASF413 ++ .byte 0x18 ++ .2byte 0x116 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x10 ++ .uleb128 0x45 ++ .4byte .LASF414 ++ .byte 0x18 ++ .2byte 0x11a ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x20 ++ .uleb128 0x46 ++ .string "oct" ++ .byte 0x18 ++ .2byte 0x11d ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x40 ++ .uleb128 0x45 ++ .4byte .LASF415 ++ .byte 0x18 ++ .2byte 0x121 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x80 ++ .uleb128 0x47 ++ .4byte .LASF416 ++ .byte 0x18 ++ .2byte 0x124 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x100 ++ .uleb128 0x47 ++ .4byte .LASF417 ++ .byte 0x18 ++ .2byte 0x128 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x200 ++ .uleb128 0x47 ++ .4byte .LASF418 ++ .byte 0x18 ++ .2byte 0x12c ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x400 ++ .uleb128 0x47 ++ .4byte .LASF419 ++ .byte 0x18 ++ .2byte 0x12f ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x800 ++ .uleb128 0x47 ++ .4byte .LASF420 ++ .byte 0x18 ++ .2byte 0x132 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x1000 ++ .uleb128 0x47 ++ .4byte .LASF421 ++ .byte 0x18 ++ .2byte 0x135 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x2000 ++ .uleb128 0x47 ++ .4byte .LASF422 ++ .byte 0x18 ++ .2byte 0x139 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x4000 ++ .uleb128 0x45 ++ .4byte .LASF423 ++ .byte 0x18 ++ .2byte 0x13c ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0xb0 ++ .uleb128 0x45 ++ .4byte .LASF424 ++ .byte 0x18 ++ .2byte 0x13f ++ .4byte 0x27c4 ++ .byte 0x1 ++ .byte 0x4a ++ .uleb128 0x47 ++ .4byte .LASF425 ++ .byte 0x18 ++ .2byte 0x142 ++ .4byte 0x27c4 ++ .byte 0x1 ++ .2byte 0x104 ++ .uleb128 0x44 ++ .4byte .LASF426 ++ .byte 0x18 ++ .2byte 0x150 ++ .4byte 0x272b ++ .byte 0x1 ++ .uleb128 0x45 ++ .4byte .LASF427 ++ .byte 0x18 ++ .2byte 0x154 ++ .4byte 0x28da ++ .byte 0x1 ++ .byte 0x1 ++ .uleb128 0x10 ++ .4byte 0x28bf ++ .uleb128 0x45 ++ .4byte .LASF428 ++ .byte 0x18 ++ .2byte 0x157 ++ .4byte 0x28da ++ .byte 0x1 ++ .byte 0x2 ++ .uleb128 0x45 ++ .4byte .LASF429 ++ .byte 0x18 ++ .2byte 0x15c ++ .4byte 0x28da ++ .byte 0x1 ++ .byte 0x4 ++ .uleb128 0x45 ++ .4byte .LASF430 ++ .byte 0x18 ++ .2byte 0x15f ++ .4byte 0x28da ++ .byte 0x1 ++ .byte 0 ++ .uleb128 0x46 ++ .string "app" ++ .byte 0x18 ++ .2byte 0x172 ++ .4byte 0x2917 ++ .byte 0x1 ++ .byte 0x1 ++ .uleb128 0x10 ++ .4byte 0x279c ++ .uleb128 0x46 ++ .string "ate" ++ .byte 0x18 ++ .2byte 0x175 ++ .4byte 0x2917 ++ .byte 0x1 ++ .byte 0x2 ++ .uleb128 0x46 ++ .string "in" ++ .byte 0x18 ++ .2byte 0x17d ++ .4byte 0x2917 ++ .byte 0x1 ++ .byte 0x8 ++ .uleb128 0x46 ++ .string "out" ++ .byte 0x18 ++ .2byte 0x180 ++ .4byte 0x2917 ++ .byte 0x1 ++ .byte 0x10 ++ .uleb128 0x44 ++ .4byte .LASF431 ++ .byte 0x18 ++ .2byte 0x18f ++ .4byte 0x276c ++ .byte 0x1 ++ .uleb128 0x46 ++ .string "cur" ++ .byte 0x18 ++ .2byte 0x195 ++ .4byte 0x2960 ++ .byte 0x1 ++ .byte 0x1 ++ .uleb128 0x10 ++ .4byte 0x2945 ++ .uleb128 0x46 ++ .string "end" ++ .byte 0x18 ++ .2byte 0x198 ++ .4byte 0x2960 ++ .byte 0x1 ++ .byte 0x2 ++ .byte 0 ++ .uleb128 0x13 ++ .byte 0x19 ++ .byte 0x52 ++ .4byte 0x47f4 ++ .uleb128 0x13 ++ .byte 0x19 ++ .byte 0x53 ++ .4byte 0x47e9 ++ .uleb128 0x13 ++ .byte 0x19 ++ .byte 0x54 ++ .4byte 0x228 ++ .uleb128 0x13 ++ .byte 0x19 ++ .byte 0x5c ++ .4byte 0x480a ++ .uleb128 0x13 ++ .byte 0x19 ++ .byte 0x65 ++ .4byte 0x4824 ++ .uleb128 0x13 ++ .byte 0x19 ++ .byte 0x68 ++ .4byte 0x483e ++ .uleb128 0x13 ++ .byte 0x19 ++ .byte 0x69 ++ .4byte 0x4853 ++ .uleb128 0x43 ++ .4byte .LASF433 ++ .4byte 0x29e6 ++ .uleb128 0x48 ++ .4byte .LASF434 ++ .byte 0x1a ++ .byte 0x5d ++ .byte 0x1 ++ .4byte 0x29a5 ++ .byte 0x1 ++ .4byte 0x29c3 ++ .4byte 0x29d3 ++ .uleb128 0x18 ++ .4byte 0x49ef ++ .uleb128 0x18 ++ .4byte 0x20f ++ .uleb128 0x18 ++ .4byte 0x49f5 ++ .byte 0 ++ .uleb128 0x3d ++ .4byte .LASF352 ++ .4byte 0x296 ++ .uleb128 0x3d ++ .4byte .LASF353 ++ .4byte 0x6e1 ++ .byte 0 ++ .uleb128 0x43 ++ .4byte .LASF435 ++ .4byte 0x2aa2 ++ .uleb128 0x48 ++ .4byte .LASF436 ++ .byte 0x1b ++ .byte 0xc5 ++ .byte 0x1 ++ .4byte 0x29e6 ++ .byte 0x1 ++ .4byte 0x2a04 ++ .4byte 0x2a0f ++ .uleb128 0x18 ++ .4byte 0x4997 ++ .uleb128 0x18 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF437 ++ .byte 0x1b ++ .2byte 0x1cf ++ .byte 0x2 ++ .4byte 0x2a20 ++ .4byte 0x2a26 ++ .uleb128 0x18 ++ .4byte 0x4997 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF438 ++ .byte 0x1b ++ .2byte 0x214 ++ .4byte .LASF439 ++ .4byte 0x4e95 ++ .byte 0x2 ++ .4byte 0x2a3f ++ .4byte 0x2a45 ++ .uleb128 0x18 ++ .4byte 0x4e9b ++ .byte 0 ++ .uleb128 0x2b ++ .4byte .LASF79 ++ .byte 0x1b ++ .byte 0x81 ++ .4byte 0x296 ++ .byte 0x1 ++ .uleb128 0x3a ++ .4byte .LASF440 ++ .byte 0x1b ++ .2byte 0x1e8 ++ .4byte .LASF441 ++ .4byte 0x4e95 ++ .byte 0x2 ++ .4byte 0x2a6a ++ .4byte 0x2a70 ++ .uleb128 0x18 ++ .4byte 0x4e9b ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF442 ++ .byte 0x1b ++ .2byte 0x211 ++ .4byte .LASF443 ++ .4byte 0x4e95 ++ .byte 0x2 ++ .4byte 0x2a89 ++ .4byte 0x2a8f ++ .uleb128 0x18 ++ .4byte 0x4e9b ++ .byte 0 ++ .uleb128 0x3d ++ .4byte .LASF352 ++ .4byte 0x296 ++ .uleb128 0x3d ++ .4byte .LASF353 ++ .4byte 0x6e1 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF444 ++ .byte 0x1 ++ .byte 0xe ++ .byte 0xaf ++ .4byte 0x2ae4 ++ .uleb128 0x2 ++ .4byte .LASF445 ++ .byte 0xe ++ .byte 0xb1 ++ .4byte 0x6c7 ++ .uleb128 0x2 ++ .4byte .LASF446 ++ .byte 0xe ++ .byte 0xb3 ++ .4byte 0x98c ++ .uleb128 0x2 ++ .4byte .LASF447 ++ .byte 0xe ++ .byte 0xb4 ++ .4byte 0x300d ++ .uleb128 0x2 ++ .4byte .LASF105 ++ .byte 0xe ++ .byte 0xb5 ++ .4byte 0x40a9 ++ .uleb128 0x3d ++ .4byte .LASF448 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF449 ++ .byte 0x1 ++ .byte 0xe ++ .byte 0xba ++ .4byte 0x2b1b ++ .uleb128 0x2 ++ .4byte .LASF446 ++ .byte 0xe ++ .byte 0xbe ++ .4byte 0x98c ++ .uleb128 0x2 ++ .4byte .LASF447 ++ .byte 0xe ++ .byte 0xbf ++ .4byte 0x2bf ++ .uleb128 0x2 ++ .4byte .LASF105 ++ .byte 0xe ++ .byte 0xc0 ++ .4byte 0x40af ++ .uleb128 0x3d ++ .4byte .LASF448 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x43 ++ .4byte .LASF450 ++ .4byte 0x2b6f ++ .uleb128 0x49 ++ .4byte .LASF451 ++ .byte 0x1c ++ .2byte 0x114 ++ .byte 0x1 ++ .4byte 0x2b1b ++ .byte 0x1 ++ .4byte 0x2b3a ++ .4byte 0x2b45 ++ .uleb128 0x18 ++ .4byte 0x49c3 ++ .uleb128 0x18 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x38 ++ .4byte .LASF452 ++ .byte 0x1c ++ .2byte 0x1c6 ++ .byte 0x2 ++ .4byte 0x2b56 ++ .4byte 0x2b5c ++ .uleb128 0x18 ++ .4byte 0x49c3 ++ .byte 0 ++ .uleb128 0x3d ++ .4byte .LASF352 ++ .4byte 0x296 ++ .uleb128 0x3d ++ .4byte .LASF353 ++ .4byte 0x6e1 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF453 ++ .byte 0x18 ++ .byte 0x7b ++ .4byte 0x26de ++ .4byte 0x2b89 ++ .uleb128 0x19 ++ .4byte 0x26de ++ .uleb128 0x19 ++ .4byte 0x26de ++ .byte 0 ++ .uleb128 0x43 ++ .4byte .LASF454 ++ .4byte 0x2bf3 ++ .uleb128 0x4b ++ .4byte .LASF455 ++ .byte 0x2 ++ .byte 0x62 ++ .byte 0x1 ++ .4byte 0x2ba2 ++ .4byte 0x2bad ++ .uleb128 0x18 ++ .4byte 0x4cd6 ++ .uleb128 0x19 ++ .4byte 0x279c ++ .byte 0 ++ .uleb128 0x3d ++ .4byte .LASF352 ++ .4byte 0x296 ++ .uleb128 0x3d ++ .4byte .LASF353 ++ .4byte 0x6e1 ++ .uleb128 0x3d ++ .4byte .LASF354 ++ .4byte 0x997 ++ .uleb128 0x3f ++ .string "str" ++ .byte 0x2 ++ .byte 0x7e ++ .4byte .LASF457 ++ .4byte 0x2be6 ++ .byte 0x1 ++ .4byte 0x2be0 ++ .4byte 0x2be6 ++ .uleb128 0x18 ++ .4byte 0x5178 ++ .byte 0 ++ .uleb128 0x2b ++ .4byte .LASF458 ++ .byte 0x2 ++ .byte 0x4e ++ .4byte 0xbc0 ++ .byte 0x1 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF459 ++ .byte 0xe ++ .byte 0xc9 ++ .4byte 0x2aae ++ .4byte 0x2c11 ++ .uleb128 0x3d ++ .4byte .LASF460 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x48a1 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF461 ++ .byte 0x1d ++ .byte 0x5a ++ .4byte 0x2ab9 ++ .4byte 0x2c39 ++ .uleb128 0x3d ++ .4byte .LASF462 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x6c7 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF463 ++ .byte 0x12 ++ .byte 0x85 ++ .4byte 0x3d6e ++ .4byte 0x2c5c ++ .uleb128 0x40 ++ .string "_Tp" ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .uleb128 0x19 ++ .4byte 0x40cd ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF464 ++ .byte 0x1d ++ .byte 0x72 ++ .4byte 0x2ab9 ++ .4byte 0x2c7f ++ .uleb128 0x3d ++ .4byte .LASF465 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x29e6 ++ .uleb128 0x43 ++ .4byte .LASF466 ++ .4byte 0x2cd5 ++ .uleb128 0x3b ++ .string "str" ++ .byte 0x2 ++ .2byte 0x1d7 ++ .4byte .LASF467 ++ .4byte 0x2cac ++ .byte 0x1 ++ .4byte 0x2ca6 ++ .4byte 0x2cac ++ .uleb128 0x18 ++ .4byte 0x4f40 ++ .byte 0 ++ .uleb128 0x44 ++ .4byte .LASF458 ++ .byte 0x2 ++ .2byte 0x191 ++ .4byte 0xbc0 ++ .byte 0x1 ++ .uleb128 0x3d ++ .4byte .LASF352 ++ .4byte 0x296 ++ .uleb128 0x3d ++ .4byte .LASF353 ++ .4byte 0x6e1 ++ .uleb128 0x3d ++ .4byte .LASF354 ++ .4byte 0x997 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x2c84 ++ .uleb128 0x2 ++ .4byte .LASF468 ++ .byte 0x1e ++ .byte 0x94 ++ .4byte 0x2c84 ++ .uleb128 0x4c ++ .4byte .LASF785 ++ .byte 0xd ++ .byte 0x4f ++ .4byte 0x2cf2 ++ .byte 0x1 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x691 ++ .uleb128 0x10 ++ .4byte 0x2b89 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF469 ++ .byte 0x8 ++ .2byte 0x184 ++ .4byte 0x228 ++ .4byte 0x2d13 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF470 ++ .byte 0x8 ++ .2byte 0x2e9 ++ .4byte 0x228 ++ .4byte 0x2d29 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x1b8 ++ .uleb128 0x4d ++ .4byte .LASF471 ++ .byte 0x1f ++ .2byte 0x180 ++ .4byte 0x2d4f ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x20f ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2d55 ++ .uleb128 0x9 ++ .byte 0x4 ++ .byte 0x7 ++ .4byte .LASF472 ++ .uleb128 0x4d ++ .4byte .LASF473 ++ .byte 0x8 ++ .2byte 0x2f7 ++ .4byte 0x228 ++ .4byte 0x2d77 ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF474 ++ .byte 0x8 ++ .2byte 0x30d ++ .4byte 0x20f ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2d98 ++ .uleb128 0x10 ++ .4byte 0x2d55 ++ .uleb128 0x4d ++ .4byte .LASF475 ++ .byte 0x8 ++ .2byte 0x24b ++ .4byte 0x20f ++ .4byte 0x2db8 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF476 ++ .byte 0x1f ++ .2byte 0x159 ++ .4byte 0x20f ++ .4byte 0x2dd4 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x4e ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF477 ++ .byte 0x8 ++ .2byte 0x27b ++ .4byte 0x20f ++ .4byte 0x2df0 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x4e ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF478 ++ .byte 0x8 ++ .2byte 0x2ea ++ .4byte 0x228 ++ .4byte 0x2e06 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .byte 0 ++ .uleb128 0x4f ++ .4byte .LASF677 ++ .byte 0x8 ++ .2byte 0x2f0 ++ .4byte 0x228 ++ .uleb128 0x4d ++ .4byte .LASF479 ++ .byte 0x8 ++ .2byte 0x18f ++ .4byte 0x216 ++ .4byte 0x2e32 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x2e32 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2a8 ++ .uleb128 0x4d ++ .4byte .LASF480 ++ .byte 0x8 ++ .2byte 0x16d ++ .4byte 0x216 ++ .4byte 0x2e5d ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x2e32 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF481 ++ .byte 0x8 ++ .2byte 0x169 ++ .4byte 0x20f ++ .4byte 0x2e73 ++ .uleb128 0x19 ++ .4byte 0x2e73 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2e79 ++ .uleb128 0x10 ++ .4byte 0x2a8 ++ .uleb128 0x4d ++ .4byte .LASF482 ++ .byte 0x1f ++ .2byte 0x1da ++ .4byte 0x216 ++ .4byte 0x2ea3 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2ea3 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x2e32 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2bf ++ .uleb128 0x4d ++ .4byte .LASF483 ++ .byte 0x8 ++ .2byte 0x2f8 ++ .4byte 0x228 ++ .4byte 0x2ec4 ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF484 ++ .byte 0x8 ++ .2byte 0x2fe ++ .4byte 0x228 ++ .4byte 0x2eda ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF485 ++ .byte 0x1f ++ .2byte 0x11d ++ .4byte 0x20f ++ .4byte 0x2efb ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x4e ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF486 ++ .byte 0x8 ++ .2byte 0x285 ++ .4byte 0x20f ++ .4byte 0x2f17 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x4e ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF487 ++ .byte 0x8 ++ .2byte 0x315 ++ .4byte 0x228 ++ .4byte 0x2f32 ++ .uleb128 0x19 ++ .4byte 0x228 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF488 ++ .byte 0x1f ++ .2byte 0x16c ++ .4byte 0x20f ++ .4byte 0x2f52 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x1c3 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF489 ++ .byte 0x8 ++ .2byte 0x2b1 ++ .4byte 0x20f ++ .4byte 0x2f72 ++ .uleb128 0x19 ++ .4byte 0x2d29 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x1c3 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF490 ++ .byte 0x1f ++ .2byte 0x13b ++ .4byte 0x20f ++ .4byte 0x2f97 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x1c3 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF491 ++ .byte 0x8 ++ .2byte 0x2bd ++ .4byte 0x20f ++ .4byte 0x2fb7 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x1c3 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF492 ++ .byte 0x1f ++ .2byte 0x166 ++ .4byte 0x20f ++ .4byte 0x2fd2 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x1c3 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF493 ++ .byte 0x8 ++ .2byte 0x2b9 ++ .4byte 0x20f ++ .4byte 0x2fed ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x1c3 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF494 ++ .byte 0x1f ++ .2byte 0x1b8 ++ .4byte 0x216 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .uleb128 0x19 ++ .4byte 0x2e32 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x296 ++ .uleb128 0x4a ++ .4byte .LASF495 ++ .byte 0x1f ++ .byte 0xf6 ++ .4byte 0x2d4f ++ .4byte 0x302d ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF496 ++ .byte 0x8 ++ .byte 0xa3 ++ .4byte 0x20f ++ .4byte 0x3047 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF497 ++ .byte 0x8 ++ .byte 0xc0 ++ .4byte 0x20f ++ .4byte 0x3061 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF498 ++ .byte 0x1f ++ .byte 0x98 ++ .4byte 0x2d4f ++ .4byte 0x307b ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF499 ++ .byte 0x8 ++ .byte 0xfc ++ .4byte 0x216 ++ .4byte 0x3095 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF500 ++ .byte 0x8 ++ .2byte 0x357 ++ .4byte 0x216 ++ .4byte 0x30ba ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x30ba ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x30c0 ++ .uleb128 0x10 ++ .4byte 0x30c5 ++ .uleb128 0x50 ++ .string "tm" ++ .byte 0x38 ++ .byte 0x20 ++ .byte 0x85 ++ .4byte 0x3155 ++ .uleb128 0x4 ++ .4byte .LASF501 ++ .byte 0x20 ++ .byte 0x87 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF502 ++ .byte 0x20 ++ .byte 0x88 ++ .4byte 0x20f ++ .byte 0x4 ++ .uleb128 0x4 ++ .4byte .LASF503 ++ .byte 0x20 ++ .byte 0x89 ++ .4byte 0x20f ++ .byte 0x8 ++ .uleb128 0x4 ++ .4byte .LASF504 ++ .byte 0x20 ++ .byte 0x8a ++ .4byte 0x20f ++ .byte 0xc ++ .uleb128 0x4 ++ .4byte .LASF505 ++ .byte 0x20 ++ .byte 0x8b ++ .4byte 0x20f ++ .byte 0x10 ++ .uleb128 0x4 ++ .4byte .LASF506 ++ .byte 0x20 ++ .byte 0x8c ++ .4byte 0x20f ++ .byte 0x14 ++ .uleb128 0x4 ++ .4byte .LASF507 ++ .byte 0x20 ++ .byte 0x8d ++ .4byte 0x20f ++ .byte 0x18 ++ .uleb128 0x4 ++ .4byte .LASF508 ++ .byte 0x20 ++ .byte 0x8e ++ .4byte 0x20f ++ .byte 0x1c ++ .uleb128 0x4 ++ .4byte .LASF509 ++ .byte 0x20 ++ .byte 0x8f ++ .4byte 0x20f ++ .byte 0x20 ++ .uleb128 0x4 ++ .4byte .LASF510 ++ .byte 0x20 ++ .byte 0x92 ++ .4byte 0x3299 ++ .byte 0x28 ++ .uleb128 0x4 ++ .4byte .LASF511 ++ .byte 0x20 ++ .byte 0x93 ++ .4byte 0x2bf ++ .byte 0x30 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF512 ++ .byte 0x8 ++ .2byte 0x11f ++ .4byte 0x216 ++ .4byte 0x316b ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF513 ++ .byte 0x1f ++ .2byte 0x107 ++ .4byte 0x2d4f ++ .4byte 0x318b ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF514 ++ .byte 0x8 ++ .byte 0xa6 ++ .4byte 0x20f ++ .4byte 0x31aa ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF515 ++ .byte 0x1f ++ .byte 0xbf ++ .4byte 0x2d4f ++ .4byte 0x31c9 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF516 ++ .byte 0x1f ++ .2byte 0x1fc ++ .4byte 0x216 ++ .4byte 0x31ee ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x31ee ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x2e32 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2d92 ++ .uleb128 0x4d ++ .4byte .LASF517 ++ .byte 0x8 ++ .2byte 0x100 ++ .4byte 0x216 ++ .4byte 0x320f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF518 ++ .byte 0x8 ++ .2byte 0x1c2 ++ .4byte 0x322a ++ .4byte 0x322a ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .byte 0 ++ .uleb128 0x9 ++ .byte 0x8 ++ .byte 0x4 ++ .4byte .LASF519 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2d4f ++ .uleb128 0x4d ++ .4byte .LASF520 ++ .byte 0x8 ++ .2byte 0x1c9 ++ .4byte 0x3252 ++ .4byte 0x3252 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .byte 0 ++ .uleb128 0x9 ++ .byte 0x4 ++ .byte 0x4 ++ .4byte .LASF521 ++ .uleb128 0x4d ++ .4byte .LASF522 ++ .byte 0x8 ++ .2byte 0x11a ++ .4byte 0x2d4f ++ .4byte 0x3279 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF523 ++ .byte 0x8 ++ .2byte 0x1d4 ++ .4byte 0x3299 ++ .4byte 0x3299 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x9 ++ .byte 0x8 ++ .byte 0x5 ++ .4byte .LASF524 ++ .uleb128 0x4d ++ .4byte .LASF525 ++ .byte 0x8 ++ .2byte 0x1d9 ++ .4byte 0x221 ++ .4byte 0x32c0 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF526 ++ .byte 0x8 ++ .byte 0xc4 ++ .4byte 0x216 ++ .4byte 0x32df ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF527 ++ .byte 0x8 ++ .2byte 0x18a ++ .4byte 0x20f ++ .4byte 0x32f5 ++ .uleb128 0x19 ++ .4byte 0x228 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF528 ++ .byte 0x8 ++ .2byte 0x145 ++ .4byte 0x20f ++ .4byte 0x3315 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF529 ++ .byte 0x1f ++ .byte 0x27 ++ .4byte 0x2d4f ++ .4byte 0x3334 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF530 ++ .byte 0x1f ++ .byte 0x44 ++ .4byte 0x2d4f ++ .4byte 0x3353 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF531 ++ .byte 0x1f ++ .byte 0x81 ++ .4byte 0x2d4f ++ .4byte 0x3372 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF532 ++ .byte 0x1f ++ .2byte 0x153 ++ .4byte 0x20f ++ .4byte 0x3389 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x4e ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF533 ++ .byte 0x8 ++ .2byte 0x282 ++ .4byte 0x20f ++ .4byte 0x33a0 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x4e ++ .byte 0 ++ .uleb128 0x26 ++ .4byte .LASF534 ++ .byte 0x8 ++ .byte 0xe0 ++ .4byte .LASF534 ++ .4byte 0x2d92 ++ .4byte 0x33be ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF535 ++ .byte 0x8 ++ .2byte 0x106 ++ .4byte .LASF535 ++ .4byte 0x2d92 ++ .4byte 0x33dd ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x26 ++ .4byte .LASF536 ++ .byte 0x8 ++ .byte 0xea ++ .4byte .LASF536 ++ .4byte 0x2d92 ++ .4byte 0x33fb ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF537 ++ .byte 0x8 ++ .2byte 0x111 ++ .4byte .LASF537 ++ .4byte 0x2d92 ++ .4byte 0x341a ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .byte 0 ++ .uleb128 0x27 ++ .4byte .LASF538 ++ .byte 0x8 ++ .2byte 0x13c ++ .4byte .LASF538 ++ .4byte 0x2d92 ++ .4byte 0x343e ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x15 ++ .4byte .LASF539 ++ .byte 0x9 ++ .byte 0xf2 ++ .4byte 0x3cdb ++ .uleb128 0x13 ++ .byte 0x9 ++ .byte 0xf8 ++ .4byte 0x3cdb ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x101 ++ .4byte 0x3cfd ++ .uleb128 0x14 ++ .byte 0x9 ++ .2byte 0x102 ++ .4byte 0x3d24 ++ .uleb128 0x13 ++ .byte 0x21 ++ .byte 0x2c ++ .4byte 0x8a8 ++ .uleb128 0x13 ++ .byte 0x21 ++ .byte 0x2d ++ .4byte 0x98c ++ .uleb128 0x16 ++ .4byte .LASF540 ++ .byte 0x1 ++ .byte 0x21 ++ .byte 0x3a ++ .4byte 0x35bc ++ .uleb128 0x2b ++ .4byte .LASF104 ++ .byte 0x21 ++ .byte 0x3d ++ .4byte 0x8a8 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF447 ++ .byte 0x21 ++ .byte 0x3f ++ .4byte 0x300d ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF541 ++ .byte 0x21 ++ .byte 0x40 ++ .4byte 0x2bf ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF105 ++ .byte 0x21 ++ .byte 0x41 ++ .4byte 0x40a9 ++ .byte 0x1 ++ .uleb128 0x2b ++ .4byte .LASF106 ++ .byte 0x21 ++ .byte 0x42 ++ .4byte 0x40af ++ .byte 0x1 ++ .uleb128 0x1c ++ .4byte .LASF542 ++ .byte 0x21 ++ .byte 0x4f ++ .byte 0x1 ++ .4byte 0x34c6 ++ .4byte 0x34cc ++ .uleb128 0x18 ++ .4byte 0x40b5 ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF542 ++ .byte 0x21 ++ .byte 0x51 ++ .byte 0x1 ++ .4byte 0x34dc ++ .4byte 0x34e7 ++ .uleb128 0x18 ++ .4byte 0x40b5 ++ .uleb128 0x19 ++ .4byte 0x40bb ++ .byte 0 ++ .uleb128 0x1c ++ .4byte .LASF543 ++ .byte 0x21 ++ .byte 0x56 ++ .byte 0x1 ++ .4byte 0x34f7 ++ .4byte 0x3502 ++ .uleb128 0x18 ++ .4byte 0x40b5 ++ .uleb128 0x18 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF544 ++ .byte 0x21 ++ .byte 0x59 ++ .4byte .LASF545 ++ .4byte 0x3486 ++ .byte 0x1 ++ .4byte 0x351a ++ .4byte 0x3525 ++ .uleb128 0x18 ++ .4byte 0x40c1 ++ .uleb128 0x19 ++ .4byte 0x349e ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF544 ++ .byte 0x21 ++ .byte 0x5d ++ .4byte .LASF546 ++ .4byte 0x3492 ++ .byte 0x1 ++ .4byte 0x353d ++ .4byte 0x3548 ++ .uleb128 0x18 ++ .4byte 0x40c1 ++ .uleb128 0x19 ++ .4byte 0x34aa ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF547 ++ .byte 0x21 ++ .byte 0x63 ++ .4byte .LASF548 ++ .4byte 0x3486 ++ .byte 0x1 ++ .4byte 0x3560 ++ .4byte 0x3570 ++ .uleb128 0x18 ++ .4byte 0x40b5 ++ .uleb128 0x19 ++ .4byte 0x347a ++ .uleb128 0x19 ++ .4byte 0x40a2 ++ .byte 0 ++ .uleb128 0x1e ++ .4byte .LASF549 ++ .byte 0x21 ++ .byte 0x6d ++ .4byte .LASF550 ++ .byte 0x1 ++ .4byte 0x3584 ++ .4byte 0x3594 ++ .uleb128 0x18 ++ .4byte 0x40b5 ++ .uleb128 0x19 ++ .4byte 0x3486 ++ .uleb128 0x19 ++ .4byte 0x347a ++ .byte 0 ++ .uleb128 0x1d ++ .4byte .LASF217 ++ .byte 0x21 ++ .byte 0x71 ++ .4byte .LASF551 ++ .4byte 0x347a ++ .byte 0x1 ++ .4byte 0x35ac ++ .4byte 0x35b2 ++ .uleb128 0x18 ++ .4byte 0x40c1 ++ .byte 0 ++ .uleb128 0x40 ++ .string "_Tp" ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x346e ++ .uleb128 0x3 ++ .4byte .LASF552 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x37 ++ .4byte 0x3603 ++ .uleb128 0x31 ++ .4byte .LASF553 ++ .byte 0x22 ++ .byte 0x3a ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF554 ++ .byte 0x22 ++ .byte 0x3b ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x3f ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF556 ++ .byte 0x22 ++ .byte 0x40 ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xc9 ++ .4byte 0x4158 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xd9 ++ .4byte 0x43ce ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xe4 ++ .4byte 0x43e9 ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xe5 ++ .4byte 0x43ff ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xe6 ++ .4byte 0x441e ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xe8 ++ .4byte 0x443d ++ .uleb128 0x13 ++ .byte 0x13 ++ .byte 0xe9 ++ .4byte 0x4457 ++ .uleb128 0x25 ++ .string "div" ++ .byte 0x13 ++ .byte 0xd6 ++ .4byte .LASF558 ++ .4byte 0x4158 ++ .4byte 0x3652 ++ .uleb128 0x19 ++ .4byte 0x3d1d ++ .uleb128 0x19 ++ .4byte 0x3d1d ++ .byte 0 ++ .uleb128 0x51 ++ .4byte .LASF559 ++ .byte 0x8 ++ .byte 0x23 ++ .2byte 0x2c4 ++ .4byte 0x3876 ++ .uleb128 0x52 ++ .4byte .LASF560 ++ .byte 0x23 ++ .2byte 0x2c7 ++ .4byte 0x300d ++ .byte 0 ++ .byte 0x2 ++ .uleb128 0x44 ++ .4byte .LASF446 ++ .byte 0x23 ++ .2byte 0x2cf ++ .4byte 0x2ab9 ++ .byte 0x1 ++ .uleb128 0x44 ++ .4byte .LASF105 ++ .byte 0x23 ++ .2byte 0x2d0 ++ .4byte 0x2acf ++ .byte 0x1 ++ .uleb128 0x44 ++ .4byte .LASF447 ++ .byte 0x23 ++ .2byte 0x2d1 ++ .4byte 0x2ac4 ++ .byte 0x1 ++ .uleb128 0x38 ++ .4byte .LASF561 ++ .byte 0x23 ++ .2byte 0x2d3 ++ .byte 0x1 ++ .4byte 0x36a5 ++ .4byte 0x36ab ++ .uleb128 0x18 ++ .4byte 0x489b ++ .byte 0 ++ .uleb128 0x39 ++ .4byte .LASF561 ++ .byte 0x23 ++ .2byte 0x2d6 ++ .byte 0x1 ++ .4byte 0x36bc ++ .4byte 0x36c7 ++ .uleb128 0x18 ++ .4byte 0x489b ++ .uleb128 0x19 ++ .4byte 0x48a1 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF562 ++ .byte 0x23 ++ .2byte 0x2e2 ++ .4byte .LASF563 ++ .4byte 0x367a ++ .byte 0x1 ++ .4byte 0x36e0 ++ .4byte 0x36e6 ++ .uleb128 0x18 ++ .4byte 0x48ac ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF564 ++ .byte 0x23 ++ .2byte 0x2e6 ++ .4byte .LASF565 ++ .4byte 0x3687 ++ .byte 0x1 ++ .4byte 0x36ff ++ .4byte 0x3705 ++ .uleb128 0x18 ++ .4byte 0x48ac ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF566 ++ .byte 0x23 ++ .2byte 0x2ea ++ .4byte .LASF567 ++ .4byte 0x48b2 ++ .byte 0x1 ++ .4byte 0x371e ++ .4byte 0x3724 ++ .uleb128 0x18 ++ .4byte 0x489b ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF566 ++ .byte 0x23 ++ .2byte 0x2f1 ++ .4byte .LASF568 ++ .4byte 0x3652 ++ .byte 0x1 ++ .4byte 0x373d ++ .4byte 0x3748 ++ .uleb128 0x18 ++ .4byte 0x489b ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF569 ++ .byte 0x23 ++ .2byte 0x2f6 ++ .4byte .LASF570 ++ .4byte 0x48b2 ++ .byte 0x1 ++ .4byte 0x3761 ++ .4byte 0x3767 ++ .uleb128 0x18 ++ .4byte 0x489b ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF569 ++ .byte 0x23 ++ .2byte 0x2fd ++ .4byte .LASF571 ++ .4byte 0x3652 ++ .byte 0x1 ++ .4byte 0x3780 ++ .4byte 0x378b ++ .uleb128 0x18 ++ .4byte 0x489b ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF232 ++ .byte 0x23 ++ .2byte 0x302 ++ .4byte .LASF572 ++ .4byte 0x367a ++ .byte 0x1 ++ .4byte 0x37a4 ++ .4byte 0x37af ++ .uleb128 0x18 ++ .4byte 0x48ac ++ .uleb128 0x19 ++ .4byte 0x48b8 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x366d ++ .uleb128 0x3a ++ .4byte .LASF243 ++ .byte 0x23 ++ .2byte 0x306 ++ .4byte .LASF573 ++ .4byte 0x48b2 ++ .byte 0x1 ++ .4byte 0x37cd ++ .4byte 0x37d8 ++ .uleb128 0x18 ++ .4byte 0x489b ++ .uleb128 0x19 ++ .4byte 0x48b8 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF574 ++ .byte 0x23 ++ .2byte 0x30a ++ .4byte .LASF575 ++ .4byte 0x3652 ++ .byte 0x1 ++ .4byte 0x37f1 ++ .4byte 0x37fc ++ .uleb128 0x18 ++ .4byte 0x48ac ++ .uleb128 0x19 ++ .4byte 0x48b8 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF576 ++ .byte 0x23 ++ .2byte 0x30e ++ .4byte .LASF577 ++ .4byte 0x48b2 ++ .byte 0x1 ++ .4byte 0x3815 ++ .4byte 0x3820 ++ .uleb128 0x18 ++ .4byte 0x489b ++ .uleb128 0x19 ++ .4byte 0x48b8 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF578 ++ .byte 0x23 ++ .2byte 0x312 ++ .4byte .LASF579 ++ .4byte 0x3652 ++ .byte 0x1 ++ .4byte 0x3839 ++ .4byte 0x3844 ++ .uleb128 0x18 ++ .4byte 0x48ac ++ .uleb128 0x19 ++ .4byte 0x48b8 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF580 ++ .byte 0x23 ++ .2byte 0x316 ++ .4byte .LASF581 ++ .4byte 0x48a1 ++ .byte 0x1 ++ .4byte 0x385d ++ .4byte 0x3863 ++ .uleb128 0x18 ++ .4byte 0x48ac ++ .byte 0 ++ .uleb128 0x3d ++ .4byte .LASF448 ++ .4byte 0x300d ++ .uleb128 0x3d ++ .4byte .LASF582 ++ .4byte 0xbc0 ++ .byte 0 ++ .uleb128 0x51 ++ .4byte .LASF583 ++ .byte 0x8 ++ .byte 0x23 ++ .2byte 0x2c4 ++ .4byte 0x3a9a ++ .uleb128 0x52 ++ .4byte .LASF560 ++ .byte 0x23 ++ .2byte 0x2c7 ++ .4byte 0x2bf ++ .byte 0 ++ .byte 0x2 ++ .uleb128 0x44 ++ .4byte .LASF446 ++ .byte 0x23 ++ .2byte 0x2cf ++ .4byte 0x2af0 ++ .byte 0x1 ++ .uleb128 0x44 ++ .4byte .LASF105 ++ .byte 0x23 ++ .2byte 0x2d0 ++ .4byte 0x2b06 ++ .byte 0x1 ++ .uleb128 0x44 ++ .4byte .LASF447 ++ .byte 0x23 ++ .2byte 0x2d1 ++ .4byte 0x2afb ++ .byte 0x1 ++ .uleb128 0x38 ++ .4byte .LASF561 ++ .byte 0x23 ++ .2byte 0x2d3 ++ .byte 0x1 ++ .4byte 0x38c9 ++ .4byte 0x38cf ++ .uleb128 0x18 ++ .4byte 0x487d ++ .byte 0 ++ .uleb128 0x39 ++ .4byte .LASF561 ++ .byte 0x23 ++ .2byte 0x2d6 ++ .byte 0x1 ++ .4byte 0x38e0 ++ .4byte 0x38eb ++ .uleb128 0x18 ++ .4byte 0x487d ++ .uleb128 0x19 ++ .4byte 0x4883 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF562 ++ .byte 0x23 ++ .2byte 0x2e2 ++ .4byte .LASF584 ++ .4byte 0x389e ++ .byte 0x1 ++ .4byte 0x3904 ++ .4byte 0x390a ++ .uleb128 0x18 ++ .4byte 0x4889 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF564 ++ .byte 0x23 ++ .2byte 0x2e6 ++ .4byte .LASF585 ++ .4byte 0x38ab ++ .byte 0x1 ++ .4byte 0x3923 ++ .4byte 0x3929 ++ .uleb128 0x18 ++ .4byte 0x4889 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF566 ++ .byte 0x23 ++ .2byte 0x2ea ++ .4byte .LASF586 ++ .4byte 0x488f ++ .byte 0x1 ++ .4byte 0x3942 ++ .4byte 0x3948 ++ .uleb128 0x18 ++ .4byte 0x487d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF566 ++ .byte 0x23 ++ .2byte 0x2f1 ++ .4byte .LASF587 ++ .4byte 0x3876 ++ .byte 0x1 ++ .4byte 0x3961 ++ .4byte 0x396c ++ .uleb128 0x18 ++ .4byte 0x487d ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF569 ++ .byte 0x23 ++ .2byte 0x2f6 ++ .4byte .LASF588 ++ .4byte 0x488f ++ .byte 0x1 ++ .4byte 0x3985 ++ .4byte 0x398b ++ .uleb128 0x18 ++ .4byte 0x487d ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF569 ++ .byte 0x23 ++ .2byte 0x2fd ++ .4byte .LASF589 ++ .4byte 0x3876 ++ .byte 0x1 ++ .4byte 0x39a4 ++ .4byte 0x39af ++ .uleb128 0x18 ++ .4byte 0x487d ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF232 ++ .byte 0x23 ++ .2byte 0x302 ++ .4byte .LASF590 ++ .4byte 0x389e ++ .byte 0x1 ++ .4byte 0x39c8 ++ .4byte 0x39d3 ++ .uleb128 0x18 ++ .4byte 0x4889 ++ .uleb128 0x19 ++ .4byte 0x4895 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x3891 ++ .uleb128 0x3a ++ .4byte .LASF243 ++ .byte 0x23 ++ .2byte 0x306 ++ .4byte .LASF591 ++ .4byte 0x488f ++ .byte 0x1 ++ .4byte 0x39f1 ++ .4byte 0x39fc ++ .uleb128 0x18 ++ .4byte 0x487d ++ .uleb128 0x19 ++ .4byte 0x4895 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF574 ++ .byte 0x23 ++ .2byte 0x30a ++ .4byte .LASF592 ++ .4byte 0x3876 ++ .byte 0x1 ++ .4byte 0x3a15 ++ .4byte 0x3a20 ++ .uleb128 0x18 ++ .4byte 0x4889 ++ .uleb128 0x19 ++ .4byte 0x4895 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF576 ++ .byte 0x23 ++ .2byte 0x30e ++ .4byte .LASF593 ++ .4byte 0x488f ++ .byte 0x1 ++ .4byte 0x3a39 ++ .4byte 0x3a44 ++ .uleb128 0x18 ++ .4byte 0x487d ++ .uleb128 0x19 ++ .4byte 0x4895 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF578 ++ .byte 0x23 ++ .2byte 0x312 ++ .4byte .LASF594 ++ .4byte 0x3876 ++ .byte 0x1 ++ .4byte 0x3a5d ++ .4byte 0x3a68 ++ .uleb128 0x18 ++ .4byte 0x4889 ++ .uleb128 0x19 ++ .4byte 0x4895 ++ .byte 0 ++ .uleb128 0x3a ++ .4byte .LASF580 ++ .byte 0x23 ++ .2byte 0x316 ++ .4byte .LASF595 ++ .4byte 0x4883 ++ .byte 0x1 ++ .4byte 0x3a81 ++ .4byte 0x3a87 ++ .uleb128 0x18 ++ .4byte 0x4889 ++ .byte 0 ++ .uleb128 0x3d ++ .4byte .LASF448 ++ .4byte 0x2bf ++ .uleb128 0x3d ++ .4byte .LASF582 ++ .4byte 0xbc0 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF596 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x64 ++ .4byte 0x3adc ++ .uleb128 0x31 ++ .4byte .LASF597 ++ .byte 0x22 ++ .byte 0x67 ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x6a ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF598 ++ .byte 0x22 ++ .byte 0x6b ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF599 ++ .byte 0x22 ++ .byte 0x6c ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x3252 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF600 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x64 ++ .4byte 0x3b1e ++ .uleb128 0x31 ++ .4byte .LASF597 ++ .byte 0x22 ++ .byte 0x67 ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x6a ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF598 ++ .byte 0x22 ++ .byte 0x6b ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF599 ++ .byte 0x22 ++ .byte 0x6c ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x322a ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF601 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x64 ++ .4byte 0x3b60 ++ .uleb128 0x31 ++ .4byte .LASF597 ++ .byte 0x22 ++ .byte 0x67 ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x6a ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF598 ++ .byte 0x22 ++ .byte 0x6b ++ .4byte 0x2ba ++ .uleb128 0x31 ++ .4byte .LASF599 ++ .byte 0x22 ++ .byte 0x6c ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x3cf6 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF602 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x37 ++ .4byte 0x3ba2 ++ .uleb128 0x31 ++ .4byte .LASF553 ++ .byte 0x22 ++ .byte 0x3a ++ .4byte 0x3d95 ++ .uleb128 0x31 ++ .4byte .LASF554 ++ .byte 0x22 ++ .byte 0x3b ++ .4byte 0x3d95 ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x3f ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF556 ++ .byte 0x22 ++ .byte 0x40 ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x221 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF603 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x37 ++ .4byte 0x3be4 ++ .uleb128 0x31 ++ .4byte .LASF553 ++ .byte 0x22 ++ .byte 0x3a ++ .4byte 0x2c5 ++ .uleb128 0x31 ++ .4byte .LASF554 ++ .byte 0x22 ++ .byte 0x3b ++ .4byte 0x2c5 ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x3f ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF556 ++ .byte 0x22 ++ .byte 0x40 ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x296 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF604 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x37 ++ .4byte 0x3c26 ++ .uleb128 0x31 ++ .4byte .LASF553 ++ .byte 0x22 ++ .byte 0x3a ++ .4byte 0x4868 ++ .uleb128 0x31 ++ .4byte .LASF554 ++ .byte 0x22 ++ .byte 0x3b ++ .4byte 0x4868 ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x3f ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF556 ++ .byte 0x22 ++ .byte 0x40 ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x3d89 ++ .byte 0 ++ .uleb128 0x3 ++ .4byte .LASF605 ++ .byte 0x1 ++ .byte 0x22 ++ .byte 0x37 ++ .4byte 0x3c68 ++ .uleb128 0x31 ++ .4byte .LASF553 ++ .byte 0x22 ++ .byte 0x3a ++ .4byte 0x486d ++ .uleb128 0x31 ++ .4byte .LASF554 ++ .byte 0x22 ++ .byte 0x3b ++ .4byte 0x486d ++ .uleb128 0x31 ++ .4byte .LASF555 ++ .byte 0x22 ++ .byte 0x3f ++ .4byte 0x3d90 ++ .uleb128 0x31 ++ .4byte .LASF556 ++ .byte 0x22 ++ .byte 0x40 ++ .4byte 0x2ba ++ .uleb128 0x3d ++ .4byte .LASF557 ++ .4byte 0x3299 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x3876 ++ .uleb128 0x10 ++ .4byte 0x3652 ++ .uleb128 0x53 ++ .4byte .LASF606 ++ .byte 0x24 ++ .byte 0x30 ++ .4byte 0x4097 ++ .4byte 0x3c8c ++ .uleb128 0x19 ++ .4byte 0x4916 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x53 ++ .4byte .LASF607 ++ .byte 0x24 ++ .byte 0x41 ++ .4byte 0x4097 ++ .4byte 0x3ca6 ++ .uleb128 0x19 ++ .4byte 0x4942 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x53 ++ .4byte .LASF608 ++ .byte 0x24 ++ .byte 0x4e ++ .4byte 0x4097 ++ .4byte 0x3cc0 ++ .uleb128 0x19 ++ .4byte 0x4942 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x54 ++ .4byte .LASF703 ++ .byte 0x2e ++ .byte 0x96 ++ .4byte 0x3d6e ++ .uleb128 0x3d ++ .4byte .LASF609 ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF610 ++ .byte 0x8 ++ .2byte 0x1cb ++ .4byte 0x3cf6 ++ .4byte 0x3cf6 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .byte 0 ++ .uleb128 0x9 ++ .byte 0x10 ++ .byte 0x4 ++ .4byte .LASF611 ++ .uleb128 0x4d ++ .4byte .LASF612 ++ .byte 0x8 ++ .2byte 0x1e3 ++ .4byte 0x3d1d ++ .4byte 0x3d1d ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x9 ++ .byte 0x8 ++ .byte 0x5 ++ .4byte .LASF613 ++ .uleb128 0x4d ++ .4byte .LASF614 ++ .byte 0x8 ++ .2byte 0x1ea ++ .4byte 0x3d44 ++ .4byte 0x3d44 ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x3231 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x9 ++ .byte 0x8 ++ .byte 0x7 ++ .4byte .LASF615 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x4c6 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x667 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x667 ++ .uleb128 0x56 ++ .4byte .LASF813 ++ .uleb128 0x57 ++ .byte 0x8 ++ .4byte 0x4c6 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x4c6 ++ .uleb128 0x9 ++ .byte 0x1 ++ .byte 0x2 ++ .4byte .LASF616 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x684 ++ .uleb128 0x9 ++ .byte 0x1 ++ .byte 0x8 ++ .4byte .LASF617 ++ .uleb128 0x9 ++ .byte 0x1 ++ .byte 0x6 ++ .4byte .LASF618 ++ .uleb128 0x9 ++ .byte 0x2 ++ .byte 0x5 ++ .4byte .LASF619 ++ .uleb128 0x10 ++ .4byte 0x3d6e ++ .uleb128 0x10 ++ .4byte 0x221 ++ .uleb128 0x15 ++ .4byte .LASF620 ++ .byte 0x25 ++ .byte 0x37 ++ .4byte 0x3dad ++ .uleb128 0x58 ++ .byte 0x25 ++ .byte 0x38 ++ .4byte 0x6da ++ .byte 0 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x6ed ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x71d ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x71d ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x6ed ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x843 ++ .uleb128 0x2 ++ .4byte .LASF621 ++ .byte 0x26 ++ .byte 0x24 ++ .4byte 0x3d82 ++ .uleb128 0x2 ++ .4byte .LASF622 ++ .byte 0x26 ++ .byte 0x25 ++ .4byte 0x3d89 ++ .uleb128 0x2 ++ .4byte .LASF623 ++ .byte 0x26 ++ .byte 0x26 ++ .4byte 0x20f ++ .uleb128 0x2 ++ .4byte .LASF624 ++ .byte 0x26 ++ .byte 0x28 ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF625 ++ .byte 0x26 ++ .byte 0x30 ++ .4byte 0x3d7b ++ .uleb128 0x2 ++ .4byte .LASF626 ++ .byte 0x26 ++ .byte 0x31 ++ .4byte 0x2b3 ++ .uleb128 0x2 ++ .4byte .LASF627 ++ .byte 0x26 ++ .byte 0x33 ++ .4byte 0x234 ++ .uleb128 0x2 ++ .4byte .LASF628 ++ .byte 0x26 ++ .byte 0x37 ++ .4byte 0x221 ++ .uleb128 0x2 ++ .4byte .LASF629 ++ .byte 0x26 ++ .byte 0x41 ++ .4byte 0x3d82 ++ .uleb128 0x2 ++ .4byte .LASF630 ++ .byte 0x26 ++ .byte 0x42 ++ .4byte 0x3d89 ++ .uleb128 0x2 ++ .4byte .LASF631 ++ .byte 0x26 ++ .byte 0x43 ++ .4byte 0x20f ++ .uleb128 0x2 ++ .4byte .LASF632 ++ .byte 0x26 ++ .byte 0x45 ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF633 ++ .byte 0x26 ++ .byte 0x4c ++ .4byte 0x3d7b ++ .uleb128 0x2 ++ .4byte .LASF634 ++ .byte 0x26 ++ .byte 0x4d ++ .4byte 0x2b3 ++ .uleb128 0x2 ++ .4byte .LASF635 ++ .byte 0x26 ++ .byte 0x4e ++ .4byte 0x234 ++ .uleb128 0x2 ++ .4byte .LASF636 ++ .byte 0x26 ++ .byte 0x50 ++ .4byte 0x221 ++ .uleb128 0x2 ++ .4byte .LASF637 ++ .byte 0x26 ++ .byte 0x5a ++ .4byte 0x3d82 ++ .uleb128 0x2 ++ .4byte .LASF638 ++ .byte 0x26 ++ .byte 0x5c ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF639 ++ .byte 0x26 ++ .byte 0x5d ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF640 ++ .byte 0x26 ++ .byte 0x5e ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF641 ++ .byte 0x26 ++ .byte 0x67 ++ .4byte 0x3d7b ++ .uleb128 0x2 ++ .4byte .LASF642 ++ .byte 0x26 ++ .byte 0x69 ++ .4byte 0x221 ++ .uleb128 0x2 ++ .4byte .LASF643 ++ .byte 0x26 ++ .byte 0x6a ++ .4byte 0x221 ++ .uleb128 0x2 ++ .4byte .LASF644 ++ .byte 0x26 ++ .byte 0x6b ++ .4byte 0x221 ++ .uleb128 0x2 ++ .4byte .LASF645 ++ .byte 0x26 ++ .byte 0x77 ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF646 ++ .byte 0x26 ++ .byte 0x7a ++ .4byte 0x221 ++ .uleb128 0x2 ++ .4byte .LASF647 ++ .byte 0x26 ++ .byte 0x86 ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF648 ++ .byte 0x26 ++ .byte 0x87 ++ .4byte 0x221 ++ .uleb128 0x9 ++ .byte 0x2 ++ .byte 0x10 ++ .4byte .LASF649 ++ .uleb128 0x9 ++ .byte 0x4 ++ .byte 0x10 ++ .4byte .LASF650 ++ .uleb128 0x3 ++ .4byte .LASF651 ++ .byte 0x60 ++ .byte 0x27 ++ .byte 0x35 ++ .4byte 0x403a ++ .uleb128 0x4 ++ .4byte .LASF652 ++ .byte 0x27 ++ .byte 0x39 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF653 ++ .byte 0x27 ++ .byte 0x3a ++ .4byte 0x300d ++ .byte 0x8 ++ .uleb128 0x4 ++ .4byte .LASF654 ++ .byte 0x27 ++ .byte 0x40 ++ .4byte 0x300d ++ .byte 0x10 ++ .uleb128 0x4 ++ .4byte .LASF655 ++ .byte 0x27 ++ .byte 0x46 ++ .4byte 0x300d ++ .byte 0x18 ++ .uleb128 0x4 ++ .4byte .LASF656 ++ .byte 0x27 ++ .byte 0x47 ++ .4byte 0x300d ++ .byte 0x20 ++ .uleb128 0x4 ++ .4byte .LASF657 ++ .byte 0x27 ++ .byte 0x48 ++ .4byte 0x300d ++ .byte 0x28 ++ .uleb128 0x4 ++ .4byte .LASF658 ++ .byte 0x27 ++ .byte 0x49 ++ .4byte 0x300d ++ .byte 0x30 ++ .uleb128 0x4 ++ .4byte .LASF659 ++ .byte 0x27 ++ .byte 0x4a ++ .4byte 0x300d ++ .byte 0x38 ++ .uleb128 0x4 ++ .4byte .LASF660 ++ .byte 0x27 ++ .byte 0x4b ++ .4byte 0x300d ++ .byte 0x40 ++ .uleb128 0x4 ++ .4byte .LASF661 ++ .byte 0x27 ++ .byte 0x4c ++ .4byte 0x300d ++ .byte 0x48 ++ .uleb128 0x4 ++ .4byte .LASF662 ++ .byte 0x27 ++ .byte 0x4d ++ .4byte 0x296 ++ .byte 0x50 ++ .uleb128 0x4 ++ .4byte .LASF663 ++ .byte 0x27 ++ .byte 0x4e ++ .4byte 0x296 ++ .byte 0x51 ++ .uleb128 0x4 ++ .4byte .LASF664 ++ .byte 0x27 ++ .byte 0x50 ++ .4byte 0x296 ++ .byte 0x52 ++ .uleb128 0x4 ++ .4byte .LASF665 ++ .byte 0x27 ++ .byte 0x52 ++ .4byte 0x296 ++ .byte 0x53 ++ .uleb128 0x4 ++ .4byte .LASF666 ++ .byte 0x27 ++ .byte 0x54 ++ .4byte 0x296 ++ .byte 0x54 ++ .uleb128 0x4 ++ .4byte .LASF667 ++ .byte 0x27 ++ .byte 0x56 ++ .4byte 0x296 ++ .byte 0x55 ++ .uleb128 0x4 ++ .4byte .LASF668 ++ .byte 0x27 ++ .byte 0x5d ++ .4byte 0x296 ++ .byte 0x56 ++ .uleb128 0x4 ++ .4byte .LASF669 ++ .byte 0x27 ++ .byte 0x5e ++ .4byte 0x296 ++ .byte 0x57 ++ .uleb128 0x4 ++ .4byte .LASF670 ++ .byte 0x27 ++ .byte 0x61 ++ .4byte 0x296 ++ .byte 0x58 ++ .uleb128 0x4 ++ .4byte .LASF671 ++ .byte 0x27 ++ .byte 0x63 ++ .4byte 0x296 ++ .byte 0x59 ++ .uleb128 0x4 ++ .4byte .LASF672 ++ .byte 0x27 ++ .byte 0x65 ++ .4byte 0x296 ++ .byte 0x5a ++ .uleb128 0x4 ++ .4byte .LASF673 ++ .byte 0x27 ++ .byte 0x67 ++ .4byte 0x296 ++ .byte 0x5b ++ .uleb128 0x4 ++ .4byte .LASF674 ++ .byte 0x27 ++ .byte 0x6e ++ .4byte 0x296 ++ .byte 0x5c ++ .uleb128 0x4 ++ .4byte .LASF675 ++ .byte 0x27 ++ .byte 0x6f ++ .4byte 0x296 ++ .byte 0x5d ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF676 ++ .byte 0x27 ++ .byte 0x7c ++ .4byte 0x300d ++ .4byte 0x4054 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x59 ++ .4byte .LASF678 ++ .byte 0x27 ++ .byte 0x7f ++ .4byte 0x405f ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x3f0d ++ .uleb128 0x2 ++ .4byte .LASF679 ++ .byte 0x28 ++ .byte 0x28 ++ .4byte 0x20f ++ .uleb128 0x2 ++ .4byte .LASF680 ++ .byte 0x28 ++ .byte 0x83 ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF681 ++ .byte 0x28 ++ .byte 0x84 ++ .4byte 0x3299 ++ .uleb128 0x5a ++ .4byte 0x4091 ++ .uleb128 0x19 ++ .4byte 0x20d ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x4086 ++ .uleb128 0x2 ++ .4byte .LASF682 ++ .byte 0x29 ++ .byte 0x20 ++ .4byte 0x20f ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x40a8 ++ .uleb128 0x5b ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x296 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x2c5 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x346e ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x35bc ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x35bc ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x997 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0xa17 ++ .uleb128 0xb ++ .byte 0x8 ++ .byte 0x2a ++ .byte 0x62 ++ .4byte .LASF684 ++ .4byte 0x40f8 ++ .uleb128 0x4 ++ .4byte .LASF685 ++ .byte 0x2a ++ .byte 0x63 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x5c ++ .string "rem" ++ .byte 0x2a ++ .byte 0x64 ++ .4byte 0x20f ++ .byte 0x4 ++ .byte 0 ++ .uleb128 0x2 ++ .4byte .LASF686 ++ .byte 0x2a ++ .byte 0x65 ++ .4byte 0x40d3 ++ .uleb128 0xb ++ .byte 0x10 ++ .byte 0x2a ++ .byte 0x6a ++ .4byte .LASF687 ++ .4byte 0x4128 ++ .uleb128 0x4 ++ .4byte .LASF685 ++ .byte 0x2a ++ .byte 0x6b ++ .4byte 0x3299 ++ .byte 0 ++ .uleb128 0x5c ++ .string "rem" ++ .byte 0x2a ++ .byte 0x6c ++ .4byte 0x3299 ++ .byte 0x8 ++ .byte 0 ++ .uleb128 0x2 ++ .4byte .LASF688 ++ .byte 0x2a ++ .byte 0x6d ++ .4byte 0x4103 ++ .uleb128 0xb ++ .byte 0x10 ++ .byte 0x2a ++ .byte 0x76 ++ .4byte .LASF689 ++ .4byte 0x4158 ++ .uleb128 0x4 ++ .4byte .LASF685 ++ .byte 0x2a ++ .byte 0x77 ++ .4byte 0x3d1d ++ .byte 0 ++ .uleb128 0x5c ++ .string "rem" ++ .byte 0x2a ++ .byte 0x78 ++ .4byte 0x3d1d ++ .byte 0x8 ++ .byte 0 ++ .uleb128 0x2 ++ .4byte .LASF690 ++ .byte 0x2a ++ .byte 0x79 ++ .4byte 0x4133 ++ .uleb128 0xa ++ .4byte .LASF691 ++ .byte 0x2a ++ .2byte 0x2e6 ++ .4byte 0x416f ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x4175 ++ .uleb128 0x5d ++ .4byte 0x20f ++ .4byte 0x4189 ++ .uleb128 0x19 ++ .4byte 0x40a2 ++ .uleb128 0x19 ++ .4byte 0x40a2 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF692 ++ .byte 0x2a ++ .2byte 0x207 ++ .4byte 0x20f ++ .4byte 0x419f ++ .uleb128 0x19 ++ .4byte 0x419f ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x41a5 ++ .uleb128 0x5e ++ .uleb128 0x27 ++ .4byte .LASF693 ++ .byte 0x2a ++ .2byte 0x20c ++ .4byte .LASF693 ++ .4byte 0x20f ++ .4byte 0x41c0 ++ .uleb128 0x19 ++ .4byte 0x419f ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF694 ++ .byte 0x2b ++ .byte 0x1a ++ .4byte 0x322a ++ .4byte 0x41d5 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF695 ++ .byte 0x2a ++ .2byte 0x116 ++ .4byte 0x20f ++ .4byte 0x41eb ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF696 ++ .byte 0x2a ++ .2byte 0x11b ++ .4byte 0x3299 ++ .4byte 0x4201 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF697 ++ .byte 0x2c ++ .byte 0x14 ++ .4byte 0x20d ++ .4byte 0x422a ++ .uleb128 0x19 ++ .4byte 0x40a2 ++ .uleb128 0x19 ++ .4byte 0x40a2 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x4163 ++ .byte 0 ++ .uleb128 0x5f ++ .string "div" ++ .byte 0x2a ++ .2byte 0x315 ++ .4byte 0x40f8 ++ .4byte 0x4245 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF698 ++ .byte 0x2a ++ .2byte 0x234 ++ .4byte 0x300d ++ .4byte 0x425b ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF699 ++ .byte 0x2a ++ .2byte 0x317 ++ .4byte 0x4128 ++ .4byte 0x4276 ++ .uleb128 0x19 ++ .4byte 0x3299 ++ .uleb128 0x19 ++ .4byte 0x3299 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF700 ++ .byte 0x2a ++ .2byte 0x35f ++ .4byte 0x20f ++ .4byte 0x4291 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF701 ++ .byte 0x2d ++ .byte 0x71 ++ .4byte 0x216 ++ .4byte 0x42b0 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF702 ++ .byte 0x2a ++ .2byte 0x362 ++ .4byte 0x20f ++ .4byte 0x42d0 ++ .uleb128 0x19 ++ .4byte 0x2d4f ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x60 ++ .4byte .LASF704 ++ .byte 0x2a ++ .2byte 0x2fd ++ .4byte 0x42f1 ++ .uleb128 0x19 ++ .4byte 0x20d ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x4163 ++ .byte 0 ++ .uleb128 0x60 ++ .4byte .LASF705 ++ .byte 0x2a ++ .2byte 0x225 ++ .4byte 0x4303 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4f ++ .4byte .LASF706 ++ .byte 0x2a ++ .2byte 0x176 ++ .4byte 0x20f ++ .uleb128 0x60 ++ .4byte .LASF707 ++ .byte 0x2a ++ .2byte 0x178 ++ .4byte 0x4321 ++ .uleb128 0x19 ++ .4byte 0x234 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF708 ++ .byte 0x2a ++ .byte 0xa4 ++ .4byte 0x322a ++ .4byte 0x433b ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x433b ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x300d ++ .uleb128 0x4a ++ .4byte .LASF709 ++ .byte 0x2a ++ .byte 0xb7 ++ .4byte 0x3299 ++ .4byte 0x4360 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x433b ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF710 ++ .byte 0x2a ++ .byte 0xbb ++ .4byte 0x221 ++ .4byte 0x437f ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x433b ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF711 ++ .byte 0x2a ++ .2byte 0x2cd ++ .4byte 0x20f ++ .4byte 0x4395 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF712 ++ .byte 0x2d ++ .byte 0x90 ++ .4byte 0x216 ++ .4byte 0x43b4 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x2d92 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF713 ++ .byte 0x2d ++ .byte 0x53 ++ .4byte 0x20f ++ .4byte 0x43ce ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x2d55 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF714 ++ .byte 0x2a ++ .2byte 0x31d ++ .4byte 0x4158 ++ .4byte 0x43e9 ++ .uleb128 0x19 ++ .4byte 0x3d1d ++ .uleb128 0x19 ++ .4byte 0x3d1d ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF715 ++ .byte 0x2a ++ .2byte 0x124 ++ .4byte 0x3d1d ++ .4byte 0x43ff ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF716 ++ .byte 0x2a ++ .byte 0xd1 ++ .4byte 0x3d1d ++ .4byte 0x441e ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x433b ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF717 ++ .byte 0x2a ++ .byte 0xd6 ++ .4byte 0x3d44 ++ .4byte 0x443d ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x433b ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF718 ++ .byte 0x2a ++ .byte 0xac ++ .4byte 0x3252 ++ .4byte 0x4457 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x433b ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF719 ++ .byte 0x2a ++ .byte 0xaf ++ .4byte 0x3cf6 ++ .4byte 0x4471 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x433b ++ .byte 0 ++ .uleb128 0xb ++ .byte 0x10 ++ .byte 0x2f ++ .byte 0x16 ++ .4byte .LASF720 ++ .4byte 0x4496 ++ .uleb128 0x4 ++ .4byte .LASF721 ++ .byte 0x2f ++ .byte 0x17 ++ .4byte 0x4070 ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF722 ++ .byte 0x2f ++ .byte 0x18 ++ .4byte 0x29d ++ .byte 0x8 ++ .byte 0 ++ .uleb128 0x2 ++ .4byte .LASF723 ++ .byte 0x2f ++ .byte 0x19 ++ .4byte 0x4471 ++ .uleb128 0x61 ++ .4byte .LASF814 ++ .byte 0x3 ++ .byte 0x9a ++ .uleb128 0x3 ++ .4byte .LASF724 ++ .byte 0x18 ++ .byte 0x3 ++ .byte 0xa0 ++ .4byte 0x44d9 ++ .uleb128 0x4 ++ .4byte .LASF725 ++ .byte 0x3 ++ .byte 0xa1 ++ .4byte 0x44d9 ++ .byte 0 ++ .uleb128 0x4 ++ .4byte .LASF726 ++ .byte 0x3 ++ .byte 0xa2 ++ .4byte 0x44df ++ .byte 0x8 ++ .uleb128 0x4 ++ .4byte .LASF727 ++ .byte 0x3 ++ .byte 0xa6 ++ .4byte 0x20f ++ .byte 0x10 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x44a8 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x38 ++ .uleb128 0xe ++ .4byte 0x296 ++ .4byte 0x44f5 ++ .uleb128 0xf ++ .4byte 0x28f ++ .byte 0 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x44a1 ++ .uleb128 0xe ++ .4byte 0x296 ++ .4byte 0x450b ++ .uleb128 0xf ++ .4byte 0x28f ++ .byte 0x13 ++ .byte 0 ++ .uleb128 0x2 ++ .4byte .LASF728 ++ .byte 0x4 ++ .byte 0x6e ++ .4byte 0x4496 ++ .uleb128 0x60 ++ .4byte .LASF729 ++ .byte 0x4 ++ .2byte 0x33a ++ .4byte 0x4528 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2d ++ .uleb128 0x4a ++ .4byte .LASF730 ++ .byte 0x4 ++ .byte 0xed ++ .4byte 0x20f ++ .4byte 0x4543 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF731 ++ .byte 0x4 ++ .2byte 0x33c ++ .4byte 0x20f ++ .4byte 0x4559 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF732 ++ .byte 0x4 ++ .2byte 0x33e ++ .4byte 0x20f ++ .4byte 0x456f ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF733 ++ .byte 0x4 ++ .byte 0xf2 ++ .4byte 0x20f ++ .4byte 0x4584 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF734 ++ .byte 0x4 ++ .2byte 0x213 ++ .4byte 0x20f ++ .4byte 0x459a ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF735 ++ .byte 0x4 ++ .2byte 0x31e ++ .4byte 0x20f ++ .4byte 0x45b5 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .uleb128 0x19 ++ .4byte 0x45b5 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x450b ++ .uleb128 0x4a ++ .4byte .LASF736 ++ .byte 0x30 ++ .byte 0xfd ++ .4byte 0x300d ++ .4byte 0x45da ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x20f ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF737 ++ .byte 0x4 ++ .2byte 0x110 ++ .4byte 0x4528 ++ .4byte 0x45f5 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF738 ++ .byte 0x30 ++ .2byte 0x11a ++ .4byte 0x216 ++ .4byte 0x461a ++ .uleb128 0x19 ++ .4byte 0x20d ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x216 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF739 ++ .byte 0x4 ++ .2byte 0x116 ++ .4byte 0x4528 ++ .4byte 0x463a ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF740 ++ .byte 0x4 ++ .2byte 0x2ed ++ .4byte 0x20f ++ .4byte 0x465a ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .uleb128 0x19 ++ .4byte 0x3299 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF741 ++ .byte 0x4 ++ .2byte 0x323 ++ .4byte 0x20f ++ .4byte 0x4675 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .uleb128 0x19 ++ .4byte 0x4675 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x467b ++ .uleb128 0x10 ++ .4byte 0x450b ++ .uleb128 0x4d ++ .4byte .LASF742 ++ .byte 0x4 ++ .2byte 0x2f2 ++ .4byte 0x3299 ++ .4byte 0x4696 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF743 ++ .byte 0x4 ++ .2byte 0x214 ++ .4byte 0x20f ++ .4byte 0x46ac ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x59 ++ .4byte .LASF744 ++ .byte 0x31 ++ .byte 0x2c ++ .4byte 0x20f ++ .uleb128 0x4d ++ .4byte .LASF745 ++ .byte 0x4 ++ .2byte 0x27e ++ .4byte 0x300d ++ .4byte 0x46cd ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x60 ++ .4byte .LASF746 ++ .byte 0x4 ++ .2byte 0x34e ++ .4byte 0x46df ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF747 ++ .byte 0x4 ++ .byte 0xb2 ++ .4byte 0x20f ++ .4byte 0x46f4 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF748 ++ .byte 0x4 ++ .byte 0xb4 ++ .4byte 0x20f ++ .4byte 0x470e ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x60 ++ .4byte .LASF749 ++ .byte 0x4 ++ .2byte 0x2f7 ++ .4byte 0x4720 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x60 ++ .4byte .LASF750 ++ .byte 0x4 ++ .2byte 0x14c ++ .4byte 0x4737 ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF751 ++ .byte 0x4 ++ .2byte 0x150 ++ .4byte 0x20f ++ .4byte 0x475c ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .uleb128 0x19 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x20f ++ .uleb128 0x19 ++ .4byte 0x216 ++ .byte 0 ++ .uleb128 0x59 ++ .4byte .LASF752 ++ .byte 0x4 ++ .byte 0xc3 ++ .4byte 0x4528 ++ .uleb128 0x4a ++ .4byte .LASF753 ++ .byte 0x4 ++ .byte 0xd1 ++ .4byte 0x300d ++ .4byte 0x477c ++ .uleb128 0x19 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x4d ++ .4byte .LASF754 ++ .byte 0x4 ++ .2byte 0x2be ++ .4byte 0x20f ++ .4byte 0x4797 ++ .uleb128 0x19 ++ .4byte 0x20f ++ .uleb128 0x19 ++ .4byte 0x4528 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0xbcc ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2551 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0xbc0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0xcd1 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0xcd1 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x2551 ++ .uleb128 0x57 ++ .byte 0x8 ++ .4byte 0xbc0 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0xbc0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2556 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2636 ++ .uleb128 0xe ++ .4byte 0x221 ++ .4byte 0x47de ++ .uleb128 0x62 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x24c7 ++ .uleb128 0x10 ++ .4byte 0x2bf ++ .uleb128 0x2 ++ .4byte .LASF755 ++ .byte 0x32 ++ .byte 0x34 ++ .4byte 0x221 ++ .uleb128 0x2 ++ .4byte .LASF756 ++ .byte 0x32 ++ .byte 0xba ++ .4byte 0x47ff ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x4805 ++ .uleb128 0x10 ++ .4byte 0x4065 ++ .uleb128 0x4a ++ .4byte .LASF757 ++ .byte 0x32 ++ .byte 0xaf ++ .4byte 0x20f ++ .4byte 0x4824 ++ .uleb128 0x19 ++ .4byte 0x228 ++ .uleb128 0x19 ++ .4byte 0x47e9 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF758 ++ .byte 0x32 ++ .byte 0xdd ++ .4byte 0x228 ++ .4byte 0x483e ++ .uleb128 0x19 ++ .4byte 0x228 ++ .uleb128 0x19 ++ .4byte 0x47f4 ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF759 ++ .byte 0x32 ++ .byte 0xda ++ .4byte 0x47f4 ++ .4byte 0x4853 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x4a ++ .4byte .LASF760 ++ .byte 0x32 ++ .byte 0xab ++ .4byte 0x47e9 ++ .4byte 0x4868 ++ .uleb128 0x19 ++ .4byte 0x2bf ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x3d89 ++ .uleb128 0x10 ++ .4byte 0x3299 ++ .uleb128 0x2 ++ .4byte .LASF761 ++ .byte 0x1 ++ .byte 0x17 ++ .4byte 0x20f ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x3876 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x47e4 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x3c68 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x3876 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x39d3 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x3652 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x48a7 ++ .uleb128 0x10 ++ .4byte 0x300d ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x3c6d ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x3652 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x37af ++ .uleb128 0x63 ++ .4byte 0xe85 ++ .byte 0x3 ++ .4byte 0x48cc ++ .4byte 0x48d6 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x48d6 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x479d ++ .uleb128 0x65 ++ .4byte 0xd04 ++ .byte 0x3 ++ .4byte 0x48f3 ++ .uleb128 0x66 ++ .uleb128 0x67 ++ .string "__p" ++ .byte 0x15 ++ .byte 0xba ++ .4byte 0x20d ++ .byte 0 ++ .byte 0 ++ .uleb128 0x68 ++ .4byte .LASF762 ++ .byte 0x33 ++ .byte 0xf7 ++ .4byte 0x20f ++ .byte 0x3 ++ .4byte 0x4911 ++ .uleb128 0x66 ++ .uleb128 0x69 ++ .4byte .LASF763 ++ .byte 0x33 ++ .byte 0xf9 ++ .4byte 0x4911 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x20d ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x491c ++ .uleb128 0x6a ++ .4byte 0x4097 ++ .uleb128 0x65 ++ .4byte 0x3c72 ++ .byte 0x3 ++ .4byte 0x4942 ++ .uleb128 0x6b ++ .4byte .LASF764 ++ .byte 0x24 ++ .byte 0x30 ++ .4byte 0x4916 ++ .uleb128 0x6b ++ .4byte .LASF765 ++ .byte 0x24 ++ .byte 0x30 ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x4097 ++ .uleb128 0x65 ++ .4byte 0x3c8c ++ .byte 0x3 ++ .4byte 0x4976 ++ .uleb128 0x6b ++ .4byte .LASF764 ++ .byte 0x24 ++ .byte 0x41 ++ .4byte 0x4942 ++ .uleb128 0x6b ++ .4byte .LASF765 ++ .byte 0x24 ++ .byte 0x41 ++ .4byte 0x20f ++ .uleb128 0x66 ++ .uleb128 0x69 ++ .4byte .LASF766 ++ .byte 0x24 ++ .byte 0x43 ++ .4byte 0x4097 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0x3ca6 ++ .byte 0x3 ++ .4byte 0x4997 ++ .uleb128 0x6b ++ .4byte .LASF764 ++ .byte 0x24 ++ .byte 0x4e ++ .4byte 0x4942 ++ .uleb128 0x6b ++ .4byte .LASF765 ++ .byte 0x24 ++ .byte 0x4e ++ .4byte 0x20f ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x29e6 ++ .uleb128 0x63 ++ .4byte 0x29ef ++ .byte 0x3 ++ .4byte 0x49ab ++ .4byte 0x49be ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x49be ++ .uleb128 0x64 ++ .4byte .LASF768 ++ .4byte 0x2ba ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x4997 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2b1b ++ .uleb128 0x63 ++ .4byte 0x2b24 ++ .byte 0x3 ++ .4byte 0x49d7 ++ .4byte 0x49ea ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x49ea ++ .uleb128 0x64 ++ .4byte .LASF768 ++ .4byte 0x2ba ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x49c3 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x29a5 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x40a2 ++ .uleb128 0x63 ++ .4byte 0x29ae ++ .byte 0x3 ++ .4byte 0x4a09 ++ .4byte 0x4a25 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4a25 ++ .uleb128 0x64 ++ .4byte .LASF768 ++ .4byte 0x2ba ++ .uleb128 0x64 ++ .4byte .LASF769 ++ .4byte 0x4a2a ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x49ef ++ .uleb128 0x10 ++ .4byte 0x49f5 ++ .uleb128 0x63 ++ .4byte 0xd66 ++ .byte 0x3 ++ .4byte 0x4a3d ++ .4byte 0x4a47 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4a47 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x47a9 ++ .uleb128 0x63 ++ .4byte 0xd9d ++ .byte 0x3 ++ .4byte 0x4a5a ++ .4byte 0x4a64 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4a47 ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0x703 ++ .byte 0x3 ++ .4byte 0x4a85 ++ .uleb128 0x6b ++ .4byte .LASF770 ++ .byte 0xf ++ .byte 0xf2 ++ .4byte 0x4a85 ++ .uleb128 0x6b ++ .4byte .LASF771 ++ .byte 0xf ++ .byte 0xf2 ++ .4byte 0x4a8a ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x3dad ++ .uleb128 0x10 ++ .4byte 0x3db3 ++ .uleb128 0x65 ++ .4byte 0x7e1 ++ .byte 0x3 ++ .4byte 0x4abe ++ .uleb128 0x6c ++ .4byte .LASF772 ++ .byte 0xf ++ .2byte 0x10e ++ .4byte 0x3dbf ++ .uleb128 0x6c ++ .4byte .LASF773 ++ .byte 0xf ++ .2byte 0x10e ++ .4byte 0x3db9 ++ .uleb128 0x6d ++ .string "__n" ++ .byte 0xf ++ .2byte 0x10e ++ .4byte 0x8a8 ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0xfd6 ++ .byte 0x3 ++ .4byte 0x4aed ++ .uleb128 0x6d ++ .string "__d" ++ .byte 0x15 ++ .2byte 0x162 ++ .4byte 0x300d ++ .uleb128 0x6d ++ .string "__s" ++ .byte 0x15 ++ .2byte 0x162 ++ .4byte 0x2bf ++ .uleb128 0x6d ++ .string "__n" ++ .byte 0x15 ++ .2byte 0x162 ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0x34b6 ++ .byte 0x3 ++ .4byte 0x4afb ++ .4byte 0x4b05 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4b05 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40b5 ++ .uleb128 0x63 ++ .4byte 0x34e7 ++ .byte 0x3 ++ .4byte 0x4b18 ++ .4byte 0x4b2b ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4b05 ++ .uleb128 0x64 ++ .4byte .LASF768 ++ .4byte 0x2ba ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0x9ff ++ .byte 0x3 ++ .4byte 0x4b39 ++ .4byte 0x4b4c ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4b4c ++ .uleb128 0x64 ++ .4byte .LASF768 ++ .4byte 0x2ba ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40c7 ++ .uleb128 0x63 ++ .4byte 0x34cc ++ .byte 0x3 ++ .4byte 0x4b5f ++ .4byte 0x4b6e ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4b05 ++ .uleb128 0x19 ++ .4byte 0x4b6e ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40bb ++ .uleb128 0x63 ++ .4byte 0x9e4 ++ .byte 0x3 ++ .4byte 0x4b81 ++ .4byte 0x4b96 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4b4c ++ .uleb128 0x6e ++ .string "__a" ++ .byte 0x12 ++ .byte 0x73 ++ .4byte 0x4b96 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40cd ++ .uleb128 0x63 ++ .4byte 0xec6 ++ .byte 0x3 ++ .4byte 0x4ba9 ++ .4byte 0x4bb3 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x48d6 ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0x1f7a ++ .byte 0x3 ++ .4byte 0x4bc1 ++ .4byte 0x4bcb ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x48d6 ++ .byte 0 ++ .uleb128 0x6f ++ .4byte 0xc0c ++ .byte 0x15 ++ .2byte 0x110 ++ .byte 0x3 ++ .4byte 0x4bdc ++ .4byte 0x4bef ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4bef ++ .uleb128 0x64 ++ .4byte .LASF768 ++ .4byte 0x2ba ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x4797 ++ .uleb128 0x63 ++ .4byte 0x1272 ++ .byte 0x3 ++ .4byte 0x4c02 ++ .4byte 0x4c15 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4c15 ++ .uleb128 0x64 ++ .4byte .LASF768 ++ .4byte 0x2ba ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x47a3 ++ .uleb128 0x70 ++ .4byte 0x1118 ++ .byte 0x3 ++ .uleb128 0x63 ++ .4byte 0x9ce ++ .byte 0x3 ++ .4byte 0x4c2e ++ .4byte 0x4c38 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4b4c ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0xbec ++ .byte 0x3 ++ .4byte 0x4c46 ++ .4byte 0x4c68 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4bef ++ .uleb128 0x6c ++ .4byte .LASF774 ++ .byte 0x15 ++ .2byte 0x112 ++ .4byte 0x300d ++ .uleb128 0x6d ++ .string "__a" ++ .byte 0x15 ++ .2byte 0x112 ++ .4byte 0x4c68 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40cd ++ .uleb128 0x63 ++ .4byte 0x2a0f ++ .byte 0x3 ++ .4byte 0x4c7b ++ .4byte 0x4c85 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x49be ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0x1128 ++ .byte 0x3 ++ .4byte 0x4c93 ++ .4byte 0x4c9d ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4c15 ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0x2b45 ++ .byte 0x3 ++ .4byte 0x4cab ++ .4byte 0x4cb5 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x49ea ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0x2b6f ++ .byte 0x3 ++ .4byte 0x4cd6 ++ .uleb128 0x6e ++ .string "__a" ++ .byte 0x18 ++ .byte 0x7b ++ .4byte 0x26de ++ .uleb128 0x6e ++ .string "__b" ++ .byte 0x18 ++ .byte 0x7b ++ .4byte 0x26de ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2b89 ++ .uleb128 0x63 ++ .4byte 0x2b92 ++ .byte 0x3 ++ .4byte 0x4cea ++ .4byte 0x4cff ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4cff ++ .uleb128 0x6b ++ .4byte .LASF775 ++ .byte 0x2 ++ .byte 0x62 ++ .4byte 0x279c ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x4cd6 ++ .uleb128 0x65 ++ .4byte 0x2bf3 ++ .byte 0x3 ++ .4byte 0x4d1d ++ .uleb128 0x3d ++ .4byte .LASF460 ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x4d1d ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x48a1 ++ .uleb128 0x65 ++ .4byte 0x2c11 ++ .byte 0x3 ++ .4byte 0x4d51 ++ .uleb128 0x3d ++ .4byte .LASF462 ++ .4byte 0x300d ++ .uleb128 0x6b ++ .4byte .LASF776 ++ .byte 0x1d ++ .byte 0x5a ++ .4byte 0x300d ++ .uleb128 0x6b ++ .4byte .LASF777 ++ .byte 0x1d ++ .byte 0x5a ++ .4byte 0x300d ++ .uleb128 0x19 ++ .4byte 0x6c7 ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0x2c39 ++ .byte 0x3 ++ .4byte 0x4d6f ++ .uleb128 0x40 ++ .string "_Tp" ++ .4byte 0x296 ++ .uleb128 0x19 ++ .4byte 0x4d6f ++ .uleb128 0x19 ++ .4byte 0x4d74 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40cd ++ .uleb128 0x10 ++ .4byte 0x40cd ++ .uleb128 0x65 ++ .4byte 0x3cc0 ++ .byte 0x3 ++ .4byte 0x4d98 ++ .uleb128 0x3d ++ .4byte .LASF609 ++ .4byte 0x296 ++ .uleb128 0x6b ++ .4byte .LASF778 ++ .byte 0x2e ++ .byte 0x96 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0x2c5c ++ .byte 0x3 ++ .4byte 0x4dc2 ++ .uleb128 0x3d ++ .4byte .LASF465 ++ .4byte 0x300d ++ .uleb128 0x6b ++ .4byte .LASF776 ++ .byte 0x1d ++ .byte 0x72 ++ .4byte 0x300d ++ .uleb128 0x6b ++ .4byte .LASF777 ++ .byte 0x1d ++ .byte 0x72 ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0x1076 ++ .byte 0x3 ++ .4byte 0x4df1 ++ .uleb128 0x6d ++ .string "__p" ++ .byte 0x15 ++ .2byte 0x18f ++ .4byte 0x300d ++ .uleb128 0x6c ++ .4byte .LASF779 ++ .byte 0x15 ++ .2byte 0x18f ++ .4byte 0x300d ++ .uleb128 0x6c ++ .4byte .LASF780 ++ .byte 0x15 ++ .2byte 0x18f ++ .4byte 0x300d ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0xd7f ++ .byte 0x3 ++ .4byte 0x4dff ++ .4byte 0x4e14 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4a47 ++ .uleb128 0x6e ++ .string "__n" ++ .byte 0x15 ++ .byte 0xcf ++ .4byte 0xc21 ++ .byte 0 ++ .uleb128 0x65 ++ .4byte 0x24cc ++ .byte 0x3 ++ .4byte 0x4e52 ++ .uleb128 0x3d ++ .4byte .LASF351 ++ .4byte 0x300d ++ .uleb128 0x6c ++ .4byte .LASF781 ++ .byte 0x15 ++ .2byte 0x6b9 ++ .4byte 0x300d ++ .uleb128 0x6c ++ .4byte .LASF782 ++ .byte 0x15 ++ .2byte 0x6b9 ++ .4byte 0x300d ++ .uleb128 0x6d ++ .string "__a" ++ .byte 0x15 ++ .2byte 0x6ba ++ .4byte 0x4e52 ++ .uleb128 0x19 ++ .4byte 0x689 ++ .uleb128 0x71 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40cd ++ .uleb128 0x65 ++ .4byte 0x24fe ++ .byte 0x3 ++ .4byte 0x4e90 ++ .uleb128 0x3d ++ .4byte .LASF351 ++ .4byte 0x300d ++ .uleb128 0x6c ++ .4byte .LASF781 ++ .byte 0x15 ++ .2byte 0x6cf ++ .4byte 0x300d ++ .uleb128 0x6c ++ .4byte .LASF782 ++ .byte 0x15 ++ .2byte 0x6cf ++ .4byte 0x300d ++ .uleb128 0x6d ++ .string "__a" ++ .byte 0x15 ++ .2byte 0x6cf ++ .4byte 0x4e90 ++ .uleb128 0x71 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x40cd ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2a45 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2c7f ++ .uleb128 0x63 ++ .4byte 0x2a26 ++ .byte 0x3 ++ .4byte 0x4eaf ++ .4byte 0x4eb9 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4eb9 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x4e9b ++ .uleb128 0x63 ++ .4byte 0x2a51 ++ .byte 0x3 ++ .4byte 0x4ecc ++ .4byte 0x4ed6 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4eb9 ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0x2a70 ++ .byte 0x3 ++ .4byte 0x4ee4 ++ .4byte 0x4eee ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4eb9 ++ .byte 0 ++ .uleb128 0x63 ++ .4byte 0x12fa ++ .byte 0x3 ++ .4byte 0x4efc ++ .4byte 0x4f12 ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4c15 ++ .uleb128 0x6c ++ .4byte .LASF783 ++ .byte 0x15 ++ .2byte 0x244 ++ .4byte 0x4f12 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x47bb ++ .uleb128 0x63 ++ .4byte 0x128e ++ .byte 0x3 ++ .4byte 0x4f25 ++ .4byte 0x4f3b ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4c15 ++ .uleb128 0x6c ++ .4byte .LASF783 ++ .byte 0x15 ++ .2byte 0x222 ++ .4byte 0x4f3b ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x47b5 ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2cd5 ++ .uleb128 0x63 ++ .4byte 0x2c8d ++ .byte 0x3 ++ .4byte 0x4f54 ++ .4byte 0x4f5e ++ .uleb128 0x64 ++ .4byte .LASF767 ++ .4byte 0x4f5e ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x4f40 ++ .uleb128 0x72 ++ .4byte .LASF815 ++ .byte 0x1 ++ .byte 0x1a ++ .8byte .LFB1299 ++ .8byte .LFE1299-.LFB1299 ++ .uleb128 0x1 ++ .byte 0x9c ++ .4byte 0x507d ++ .uleb128 0x73 ++ .string "t" ++ .byte 0x1 ++ .byte 0x1a ++ .4byte 0x507d ++ .4byte .LLST0 ++ .uleb128 0x74 ++ .8byte .LBB293 ++ .8byte .LBE293-.LBB293 ++ .4byte 0x5068 ++ .uleb128 0x75 ++ .string "oss" ++ .byte 0x1 ++ .byte 0x1c ++ .4byte 0x2cda ++ .uleb128 0x3 ++ .byte 0x91 ++ .sleb128 -352 ++ .uleb128 0x76 ++ .4byte 0x4f46 ++ .8byte .LBB294 ++ .8byte .LBE294-.LBB294 ++ .byte 0x1 ++ .byte 0x1d ++ .4byte 0x4fea ++ .uleb128 0x77 ++ .4byte 0x4f54 ++ .4byte .LLST1 ++ .uleb128 0x78 ++ .8byte .LVL5 ++ .4byte 0x2bc8 ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x2 ++ .byte 0x8f ++ .sleb128 40 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7a ++ .8byte .LVL2 ++ .4byte 0x5003 ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x51 ++ .uleb128 0x1 ++ .byte 0x40 ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x2 ++ .byte 0x8f ++ .sleb128 32 ++ .byte 0 ++ .uleb128 0x7b ++ .8byte .LVL3 ++ .4byte 0x517e ++ .4byte 0x501a ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x1 ++ .byte 0x38 ++ .byte 0 ++ .uleb128 0x7b ++ .8byte .LVL6 ++ .4byte 0x5192 ++ .4byte 0x503f ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x51 ++ .uleb128 0x9 ++ .byte 0x3 ++ .8byte _ZTISs ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x2 ++ .byte 0x83 ++ .sleb128 0 ++ .byte 0 ++ .uleb128 0x7b ++ .8byte .LVL7 ++ .4byte 0x51ac ++ .4byte 0x5057 ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x2 ++ .byte 0x83 ++ .sleb128 0 ++ .byte 0 ++ .uleb128 0x7c ++ .8byte .LVL9 ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x2 ++ .byte 0x8f ++ .sleb128 32 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x78 ++ .8byte .LVL10 ++ .4byte 0x51bc ++ .uleb128 0x79 ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x2 ++ .byte 0x83 ++ .sleb128 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x10 ++ .4byte 0x5082 ++ .uleb128 0x55 ++ .byte 0x8 ++ .4byte 0x5088 ++ .uleb128 0x10 ++ .4byte 0x4872 ++ .uleb128 0x7d ++ .4byte .LASF784 ++ .byte 0x1 ++ .byte 0x21 ++ .4byte 0x20f ++ .8byte .LFB1300 ++ .8byte .LFE1300-.LFB1300 ++ .uleb128 0x1 ++ .byte 0x9c ++ .4byte 0x50c7 ++ .uleb128 0x78 ++ .8byte .LVL11 ++ .4byte 0x4f63 ++ .uleb128 0x7e ++ .uleb128 0x1 ++ .byte 0x50 ++ .uleb128 0x2 ++ .byte 0x8f ++ .sleb128 28 ++ .uleb128 0x3 ++ .byte 0xa ++ .2byte 0x4d2 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7f ++ .4byte .LASF786 ++ .byte 0x4 ++ .byte 0xa8 ++ .4byte 0x44df ++ .uleb128 0x7f ++ .4byte .LASF787 ++ .byte 0x4 ++ .byte 0xa9 ++ .4byte 0x44df ++ .uleb128 0x80 ++ .4byte 0x2ce5 ++ .uleb128 0x81 ++ .4byte 0x35cd ++ .4byte .LASF788 ++ .sleb128 -2147483648 ++ .uleb128 0x82 ++ .4byte 0x35d8 ++ .4byte .LASF789 ++ .4byte 0x7fffffff ++ .uleb128 0x83 ++ .4byte 0x3ac7 ++ .4byte .LASF790 ++ .byte 0x26 ++ .uleb128 0x84 ++ .4byte 0x3b09 ++ .4byte .LASF791 ++ .2byte 0x134 ++ .uleb128 0x84 ++ .4byte 0x3b4b ++ .4byte .LASF792 ++ .2byte 0x1344 ++ .uleb128 0x83 ++ .4byte 0x3b8d ++ .4byte .LASF793 ++ .byte 0x40 ++ .uleb128 0x81 ++ .4byte 0x3bb9 ++ .4byte .LASF794 ++ .sleb128 -1 ++ .uleb128 0x81 ++ .4byte 0x3bf0 ++ .4byte .LASF795 ++ .sleb128 -32768 ++ .uleb128 0x84 ++ .4byte 0x3bfb ++ .4byte .LASF796 ++ .2byte 0x7fff ++ .uleb128 0x81 ++ .4byte 0x3c32 ++ .4byte .LASF797 ++ .sleb128 -9223372036854775808 ++ .uleb128 0x85 ++ .4byte 0x3c3d ++ .4byte .LASF798 ++ .8byte 0x7fffffffffffffff ++ .uleb128 0x11 ++ .byte 0x8 ++ .4byte 0x2cf7 ++ .uleb128 0x86 ++ .4byte .LASF799 ++ .4byte 0x20d ++ .4byte 0x5192 ++ .uleb128 0x19 ++ .4byte 0x221 ++ .byte 0 ++ .uleb128 0x87 ++ .4byte .LASF801 ++ .4byte 0x51ac ++ .uleb128 0x19 ++ .4byte 0x20d ++ .uleb128 0x19 ++ .4byte 0x20d ++ .uleb128 0x19 ++ .4byte 0x4091 ++ .byte 0 ++ .uleb128 0x87 ++ .4byte .LASF802 ++ .4byte 0x51bc ++ .uleb128 0x19 ++ .4byte 0x20d ++ .byte 0 ++ .uleb128 0x88 ++ .4byte .LASF803 ++ .4byte .LASF816 ++ .uleb128 0x19 ++ .4byte 0x20d ++ .byte 0 ++ .byte 0 ++ .section .debug_abbrev,"",%progbits ++.Ldebug_abbrev0: ++ .uleb128 0x1 ++ .uleb128 0x11 ++ .byte 0x1 ++ .uleb128 0x25 ++ .uleb128 0xe ++ .uleb128 0x13 ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x1b ++ .uleb128 0xe ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x10 ++ .uleb128 0x17 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7 ++ .uleb128 0xf ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8 ++ .uleb128 0x24 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x9 ++ .uleb128 0x24 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0xe ++ .byte 0 ++ .byte 0 ++ .uleb128 0xa ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xc ++ .uleb128 0x17 ++ .byte 0x1 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xd ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xe ++ .uleb128 0x1 ++ .byte 0x1 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xf ++ .uleb128 0x21 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x2f ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x10 ++ .uleb128 0x26 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x11 ++ .uleb128 0xf ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x12 ++ .uleb128 0x39 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x13 ++ .uleb128 0x8 ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x18 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x14 ++ .uleb128 0x8 ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x18 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x15 ++ .uleb128 0x39 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x16 ++ .uleb128 0x2 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x17 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x18 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x19 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1a ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1b ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1c ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1d ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1e ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1f ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x20 ++ .uleb128 0x2 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x21 ++ .uleb128 0x13 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x22 ++ .uleb128 0x1c ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x23 ++ .uleb128 0x39 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x24 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x25 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x26 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x27 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x28 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x29 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2a ++ .uleb128 0x1c ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2b ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2c ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2d ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2e ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2f ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x30 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x31 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x32 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x33 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x34 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x35 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x36 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x37 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x38 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x39 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3b ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3c ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3d ++ .uleb128 0x2f ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3e ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x40 ++ .uleb128 0x2f ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x41 ++ .uleb128 0x4 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x42 ++ .uleb128 0x28 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0xd ++ .byte 0 ++ .byte 0 ++ .uleb128 0x43 ++ .uleb128 0x2 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x44 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x45 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1c ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x46 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1c ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1c ++ .uleb128 0x5 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x48 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x4c ++ .uleb128 0xb ++ .uleb128 0x1d ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x4c ++ .uleb128 0xb ++ .uleb128 0x1d ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4a ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4b ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4c ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1c ++ .uleb128 0xa ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4d ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4e ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4f ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x50 ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x51 ++ .uleb128 0x2 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x52 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x53 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x54 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x55 ++ .uleb128 0x10 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x56 ++ .uleb128 0x3b ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .byte 0 ++ .byte 0 ++ .uleb128 0x57 ++ .uleb128 0x42 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x58 ++ .uleb128 0x3a ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x18 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x59 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5a ++ .uleb128 0x15 ++ .byte 0x1 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5b ++ .uleb128 0x26 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5c ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5d ++ .uleb128 0x15 ++ .byte 0x1 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5e ++ .uleb128 0x15 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5f ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x60 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x61 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x62 ++ .uleb128 0x21 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x63 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x64 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x65 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x66 ++ .uleb128 0xb ++ .byte 0x1 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x67 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x68 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x69 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6a ++ .uleb128 0x35 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6b ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6c ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6d ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6e ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6f ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x70 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x71 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x72 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x40 ++ .uleb128 0x18 ++ .uleb128 0x2117 ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x73 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x2 ++ .uleb128 0x17 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x74 ++ .uleb128 0xb ++ .byte 0x1 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x75 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x2 ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x76 ++ .uleb128 0x1d ++ .byte 0x1 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x58 ++ .uleb128 0xb ++ .uleb128 0x59 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x77 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .uleb128 0x2 ++ .uleb128 0x17 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x78 ++ .uleb128 0x4109 ++ .byte 0x1 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x79 ++ .uleb128 0x410a ++ .byte 0 ++ .uleb128 0x2 ++ .uleb128 0x18 ++ .uleb128 0x2111 ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7a ++ .uleb128 0x4109 ++ .byte 0x1 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7b ++ .uleb128 0x4109 ++ .byte 0x1 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7c ++ .uleb128 0x4109 ++ .byte 0x1 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7d ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x40 ++ .uleb128 0x18 ++ .uleb128 0x2117 ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7e ++ .uleb128 0x410a ++ .byte 0 ++ .uleb128 0x2 ++ .uleb128 0x18 ++ .uleb128 0x2111 ++ .uleb128 0x18 ++ .uleb128 0x2112 ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7f ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x80 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x81 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0xd ++ .byte 0 ++ .byte 0 ++ .uleb128 0x82 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0x6 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x83 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x84 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0x5 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x85 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0x7 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x86 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x87 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x88 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .section .debug_loc,"",%progbits ++.Ldebug_loc0: ++.LLST0: ++ .8byte .LVL0-.Ltext0 ++ .8byte .LVL1-.Ltext0 ++ .2byte 0x1 ++ .byte 0x50 ++ .8byte .LVL1-.Ltext0 ++ .8byte .LFE1299-.Ltext0 ++ .2byte 0x4 ++ .byte 0xf3 ++ .uleb128 0x1 ++ .byte 0x50 ++ .byte 0x9f ++ .8byte 0 ++ .8byte 0 ++.LLST1: ++ .8byte .LVL4-.Ltext0 ++ .8byte .LVL8-.Ltext0 ++ .2byte 0x3 ++ .byte 0x8f ++ .sleb128 32 ++ .byte 0x9f ++ .8byte .LVL8-.Ltext0 ++ .8byte .LVL9-1-.Ltext0 ++ .2byte 0x1 ++ .byte 0x50 ++ .8byte .LVL9-1-.Ltext0 ++ .8byte .LFE1299-.Ltext0 ++ .2byte 0x3 ++ .byte 0x8f ++ .sleb128 32 ++ .byte 0x9f ++ .8byte 0 ++ .8byte 0 ++ .section .debug_aranges,"",%progbits ++ .4byte 0x2c ++ .2byte 0x2 ++ .4byte .Ldebug_info0 ++ .byte 0x8 ++ .byte 0 ++ .2byte 0 ++ .2byte 0 ++ .8byte .Ltext0 ++ .8byte .Letext0-.Ltext0 ++ .8byte 0 ++ .8byte 0 ++ .section .debug_line,"",%progbits ++.Ldebug_line0: ++ .section .debug_str,"MS",%progbits,1 ++.LASF535: ++ .string "wcspbrk" ++.LASF651: ++ .string "lconv" ++.LASF374: ++ .string "_S_showpoint" ++.LASF729: ++ .string "clearerr" ++.LASF28: ++ .string "_unused2" ++.LASF187: ++ .string "_ZNSs12_M_leak_hardEv" ++.LASF14: ++ .string "_fileno" ++.LASF421: ++ .string "unitbuf" ++.LASF95: ++ .string "to_char_type" ++.LASF101: ++ .string "not_eof" ++.LASF117: ++ .string "reverse_iterator" ++.LASF501: ++ .string "tm_sec" ++.LASF401: ++ .string "_S_ios_iostate_end" ++.LASF547: ++ .string "allocate" ++.LASF475: ++ .string "fwide" ++.LASF426: ++ .string "iostate" ++.LASF466: ++ .string "basic_ostringstream, std::allocator >" ++.LASF542: ++ .string "new_allocator" ++.LASF671: ++ .string "int_p_sep_by_space" ++.LASF663: ++ .string "frac_digits" ++.LASF79: ++ .string "char_type" ++.LASF780: ++ .string "__k2" ++.LASF424: ++ .string "basefield" ++.LASF478: ++ .string "getwc" ++.LASF225: ++ .string "_ZNKSs8capacityEv" ++.LASF782: ++ .string "__end" ++.LASF438: ++ .string "pptr" ++.LASF728: ++ .string "fpos_t" ++.LASF220: ++ .string "_ZNSs6resizeEmc" ++.LASF597: ++ .string "__max_digits10" ++.LASF642: ++ .string "uint_fast16_t" ++.LASF229: ++ .string "_ZNSs5clearEv" ++.LASF557: ++ .string "_Value" ++.LASF19: ++ .string "_shortbuf" ++.LASF539: ++ .string "__gnu_cxx" ++.LASF588: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcSsEmmEv" ++.LASF550: ++ .string "_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm" ++.LASF313: ++ .string "_ZNKSs4findEcm" ++.LASF140: ++ .string "_ZNSs4_Rep7_M_grabERKSaIcES2_" ++.LASF147: ++ .string "_M_refcopy" ++.LASF449: ++ .string "iterator_traits" ++.LASF224: ++ .string "capacity" ++.LASF388: ++ .string "_S_ate" ++.LASF639: ++ .string "int_fast32_t" ++.LASF606: ++ .string "__exchange_and_add" ++.LASF238: ++ .string "_ZNSs5frontEv" ++.LASF731: ++ .string "feof" ++.LASF626: ++ .string "uint16_t" ++.LASF180: ++ .string "_ZNSs13_S_copy_charsEPcS_S_" ++.LASF88: ++ .string "_ZNSt11char_traitsIcE4findEPKcmRS1_" ++.LASF0: ++ .string "_flags" ++.LASF757: ++ .string "iswctype" ++.LASF85: ++ .string "length" ++.LASF121: ++ .string "_M_refcount" ++.LASF777: ++ .string "__last" ++.LASF385: ++ .string "_Ios_Fmtflags" ++.LASF680: ++ .string "__off_t" ++.LASF769: ++ .string "__vtt_parm" ++.LASF708: ++ .string "strtod" ++.LASF541: ++ .string "const_pointer" ++.LASF552: ++ .string "__numeric_traits_integer" ++.LASF718: ++ .string "strtof" ++.LASF164: ++ .string "_M_check_length" ++.LASF549: ++ .string "deallocate" ++.LASF758: ++ .string "towctrans" ++.LASF452: ++ .string "basic_ios" ++.LASF643: ++ .string "uint_fast32_t" ++.LASF509: ++ .string "tm_isdst" ++.LASF654: ++ .string "grouping" ++.LASF804: ++ .string "GNU C++ 4.8.4 -g -O1 -std=c++11 -fstack-protector" ++.LASF20: ++ .string "_lock" ++.LASF107: ++ .string "allocator" ++.LASF612: ++ .string "wcstoll" ++.LASF362: ++ .string "_ZNKSt16initializer_listIcE4sizeEv" ++.LASF596: ++ .string "__numeric_traits_floating" ++.LASF67: ++ .string "operator bool" ++.LASF217: ++ .string "max_size" ++.LASF201: ++ .string "_ZNSs6rbeginEv" ++.LASF616: ++ .string "bool" ++.LASF365: ++ .string "_S_dec" ++.LASF695: ++ .string "atoi" ++.LASF384: ++ .string "_S_ios_fmtflags_min" ++.LASF696: ++ .string "atol" ++.LASF111: ++ .string "_M_p" ++.LASF517: ++ .string "wcsspn" ++.LASF386: ++ .string "_Ios_Openmode" ++.LASF623: ++ .string "int32_t" ++.LASF647: ++ .string "intmax_t" ++.LASF721: ++ .string "__pos" ++.LASF807: ++ .string "__debug" ++.LASF759: ++ .string "wctrans" ++.LASF445: ++ .string "iterator_category" ++.LASF458: ++ .string "__string_type" ++.LASF676: ++ .string "setlocale" ++.LASF648: ++ .string "uintmax_t" ++.LASF285: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs" ++.LASF152: ++ .string "_ZNKSs7_M_dataEv" ++.LASF493: ++ .string "vwscanf" ++.LASF213: ++ .string "_ZNKSs5crendEv" ++.LASF436: ++ .string "~basic_streambuf" ++.LASF279: ++ .string "replace" ++.LASF373: ++ .string "_S_showbase" ++.LASF792: ++ .string "_ZN9__gnu_cxx25__numeric_traits_floatingIeE16__max_exponent10E" ++.LASF565: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcSsEptEv" ++.LASF155: ++ .string "_ZNKSs6_M_repEv" ++.LASF118: ++ .string "_Rep_base" ++.LASF370: ++ .string "_S_oct" ++.LASF192: ++ .string "_ZNSsaSEc" ++.LASF311: ++ .string "_ZNKSs4findERKSsm" ++.LASF687: ++ .string "6ldiv_t" ++.LASF6: ++ .string "_IO_write_end" ++.LASF276: ++ .string "_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_" ++.LASF295: ++ .string "_ZNSs14_M_replace_auxEmmmc" ++.LASF632: ++ .string "int_least64_t" ++.LASF196: ++ .string "_ZNSs5beginEv" ++.LASF356: ++ .string "reverse_iterator<__gnu_cxx::__normal_iterator, std::allocator > > >" ++.LASF71: ++ .string "nullptr_t" ++.LASF714: ++ .string "lldiv" ++.LASF591: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcSsEpLERKl" ++.LASF772: ++ .string "__s1" ++.LASF773: ++ .string "__s2" ++.LASF368: ++ .string "_S_internal" ++.LASF126: ++ .string "_S_empty_rep" ++.LASF694: ++ .string "atof" ++.LASF748: ++ .string "rename" ++.LASF92: ++ .string "_ZNSt11char_traitsIcE4copyEPcPKcm" ++.LASF65: ++ .string "_ZNKSt15__exception_ptr13exception_ptr6_M_getEv" ++.LASF272: ++ .string "_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc" ++.LASF427: ++ .string "badbit" ++.LASF399: ++ .string "_S_eofbit" ++.LASF110: ++ .string "_Alloc_hider" ++.LASF629: ++ .string "int_least8_t" ++.LASF537: ++ .string "wcsstr" ++.LASF738: ++ .string "fread" ++.LASF662: ++ .string "int_frac_digits" ++.LASF464: ++ .string "distance" ++.LASF145: ++ .string "_M_destroy" ++.LASF653: ++ .string "thousands_sep" ++.LASF598: ++ .string "__digits10" ++.LASF314: ++ .string "rfind" ++.LASF165: ++ .string "_ZNKSs15_M_check_lengthEmmPKc" ++.LASF736: ++ .string "fgets" ++.LASF423: ++ .string "adjustfield" ++.LASF520: ++ .string "wcstof" ++.LASF522: ++ .string "wcstok" ++.LASF523: ++ .string "wcstol" ++.LASF340: ++ .string "_ZNKSs6substrEmm" ++.LASF739: ++ .string "freopen" ++.LASF298: ++ .string "_S_construct_aux_2" ++.LASF776: ++ .string "__first" ++.LASF157: ++ .string "_ZNKSs9_M_ibeginEv" ++.LASF778: ++ .string "__ptr" ++.LASF372: ++ .string "_S_scientific" ++.LASF732: ++ .string "ferror" ++.LASF793: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE" ++.LASF416: ++ .string "scientific" ++.LASF60: ++ .string "_ZNSt15__exception_ptr13exception_ptraSERKS0_" ++.LASF761: ++ .string "type" ++.LASF302: ++ .string "_ZNKSs4copyEPcmm" ++.LASF562: ++ .string "operator*" ++.LASF267: ++ .string "_ZNSs6insertEmRKSs" ++.LASF578: ++ .string "operator-" ++.LASF620: ++ .string "__gnu_debug" ++.LASF531: ++ .string "wmemset" ++.LASF794: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE" ++.LASF59: ++ .string "operator=" ++.LASF781: ++ .string "__beg" ++.LASF469: ++ .string "btowc" ++.LASF812: ++ .string "_ZNSs12_S_empty_repEv" ++.LASF411: ++ .string "boolalpha" ++.LASF257: ++ .string "_ZNSs6assignERKSs" ++.LASF484: ++ .string "putwchar" ++.LASF563: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcSsEdeEv" ++.LASF149: ++ .string "_ZNSs4_Rep8_M_cloneERKSaIcEm" ++.LASF791: ++ .string "_ZN9__gnu_cxx25__numeric_traits_floatingIdE16__max_exponent10E" ++.LASF656: ++ .string "currency_symbol" ++.LASF350: ++ .string "_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE" ++.LASF252: ++ .string "_ZNSs6appendEPKc" ++.LASF453: ++ .string "operator|" ++.LASF789: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE" ++.LASF73: ++ .string "piecewise_construct_t" ++.LASF167: ++ .string "_ZNKSs8_M_limitEmm" ++.LASF31: ++ .string "__gnuc_va_list" ++.LASF13: ++ .string "_chain" ++.LASF608: ++ .string "__exchange_and_add_dispatch" ++.LASF339: ++ .string "substr" ++.LASF798: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE" ++.LASF130: ++ .string "_ZNKSs4_Rep12_M_is_sharedEv" ++.LASF287: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc" ++.LASF137: ++ .string "_M_refdata" ++.LASF683: ++ .string "11__mbstate_t" ++.LASF617: ++ .string "unsigned char" ++.LASF422: ++ .string "uppercase" ++.LASF37: ++ .string "__gr_offs" ++.LASF77: ++ .string "random_access_iterator_tag" ++.LASF526: ++ .string "wcsxfrm" ++.LASF814: ++ .string "_IO_lock_t" ++.LASF512: ++ .string "wcslen" ++.LASF322: ++ .string "_ZNKSs13find_first_ofEPKcm" ++.LASF521: ++ .string "float" ++.LASF346: ++ .string "_ZNKSs7compareEmmPKcm" ++.LASF796: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE" ++.LASF135: ++ .string "_M_set_length_and_sharable" ++.LASF394: ++ .string "_S_ios_openmode_max" ++.LASF136: ++ .string "_ZNSs4_Rep26_M_set_length_and_sharableEm" ++.LASF81: ++ .string "_ZNSt11char_traitsIcE2eqERKcS2_" ++.LASF162: ++ .string "_M_check" ++.LASF93: ++ .string "assign" ++.LASF635: ++ .string "uint_least32_t" ++.LASF176: ++ .string "_ZNSs9_M_assignEPcmc" ++.LASF80: ++ .string "int_type" ++.LASF366: ++ .string "_S_fixed" ++.LASF742: ++ .string "ftell" ++.LASF595: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcSsE4baseEv" ++.LASF203: ++ .string "rend" ++.LASF299: ++ .string "_ZNSs18_S_construct_aux_2EmcRKSaIcE" ++.LASF151: ++ .string "_ZNSs4_Rep10_M_refcopyEv" ++.LASF406: ++ .string "_S_cur" ++.LASF750: ++ .string "setbuf" ++.LASF446: ++ .string "difference_type" ++.LASF172: ++ .string "_ZNSs7_M_copyEPcPKcm" ++.LASF178: ++ .string "_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_" ++.LASF344: ++ .string "_ZNKSs7compareEPKc" ++.LASF511: ++ .string "tm_zone" ++.LASF338: ++ .string "_ZNKSs16find_last_not_ofEcm" ++.LASF289: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_" ++.LASF223: ++ .string "_ZNSs13shrink_to_fitEv" ++.LASF477: ++ .string "fwscanf" ++.LASF713: ++ .string "wctomb" ++.LASF500: ++ .string "wcsftime" ++.LASF64: ++ .string "swap" ++.LASF55: ++ .string "_M_addref" ++.LASF479: ++ .string "mbrlen" ++.LASF235: ++ .string "_ZNKSs2atEm" ++.LASF455: ++ .string "basic_stringbuf" ++.LASF292: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_" ++.LASF68: ++ .string "_ZNKSt15__exception_ptr13exception_ptrcvbEv" ++.LASF158: ++ .string "_M_iend" ++.LASF579: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcSsEmiERKl" ++.LASF104: ++ .string "size_type" ++.LASF749: ++ .string "rewind" ++.LASF244: ++ .string "_ZNSspLERKSs" ++.LASF141: ++ .string "_S_create" ++.LASF420: ++ .string "skipws" ++.LASF816: ++ .string "_Unwind_Resume" ++.LASF114: ++ .string "iterator" ++.LASF719: ++ .string "strtold" ++.LASF465: ++ .string "_InputIterator" ++.LASF716: ++ .string "strtoll" ++.LASF692: ++ .string "atexit" ++.LASF5: ++ .string "_IO_write_ptr" ++.LASF705: ++ .string "quick_exit" ++.LASF803: ++ .string "__builtin_unwind_resume" ++.LASF661: ++ .string "negative_sign" ++.LASF189: ++ .string "~basic_string" ++.LASF495: ++ .string "wcscat" ++.LASF689: ++ .string "7lldiv_t" ++.LASF518: ++ .string "wcstod" ++.LASF61: ++ .string "_ZNSt15__exception_ptr13exception_ptraSEOS0_" ++.LASF173: ++ .string "_M_move" ++.LASF760: ++ .string "wctype" ++.LASF655: ++ .string "int_curr_symbol" ++.LASF341: ++ .string "_ZNKSs7compareERKSs" ++.LASF545: ++ .string "_ZNK9__gnu_cxx13new_allocatorIcE7addressERc" ++.LASF363: ++ .string "_ZNKSt16initializer_listIcE5beginEv" ++.LASF214: ++ .string "size" ++.LASF148: ++ .string "_M_clone" ++.LASF296: ++ .string "_M_replace_safe" ++.LASF722: ++ .string "__state" ++.LASF250: ++ .string "_ZNSs6appendERKSsmm" ++.LASF599: ++ .string "__max_exponent10" ++.LASF29: ++ .string "FILE" ++.LASF266: ++ .string "_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE" ++.LASF249: ++ .string "_ZNSs6appendERKSs" ++.LASF415: ++ .string "right" ++.LASF156: ++ .string "_M_ibegin" ++.LASF228: ++ .string "clear" ++.LASF82: ++ .string "_ZNSt11char_traitsIcE2ltERKcS2_" ++.LASF499: ++ .string "wcscspn" ++.LASF407: ++ .string "_S_end" ++.LASF259: ++ .string "_ZNSs6assignERKSsmm" ++.LASF39: ++ .string "size_t" ++.LASF254: ++ .string "_ZNSs6appendESt16initializer_listIcE" ++.LASF45: ++ .string "__count" ++.LASF625: ++ .string "uint8_t" ++.LASF685: ++ .string "quot" ++.LASF163: ++ .string "_ZNKSs8_M_checkEmPKc" ++.LASF237: ++ .string "front" ++.LASF332: ++ .string "_ZNKSs17find_first_not_ofEPKcm" ++.LASF503: ++ .string "tm_hour" ++.LASF746: ++ .string "perror" ++.LASF275: ++ .string "_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE" ++.LASF560: ++ .string "_M_current" ++.LASF265: ++ .string "_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc" ++.LASF139: ++ .string "_M_grab" ++.LASF129: ++ .string "_M_is_shared" ++.LASF9: ++ .string "_IO_save_base" ++.LASF461: ++ .string "__distance" ++.LASF125: ++ .string "_S_empty_rep_storage" ++.LASF527: ++ .string "wctob" ++.LASF658: ++ .string "mon_thousands_sep" ++.LASF476: ++ .string "fwprintf" ++.LASF175: ++ .string "_M_assign" ++.LASF395: ++ .string "_S_ios_openmode_min" ++.LASF123: ++ .string "_S_max_size" ++.LASF44: ++ .string "__wchb" ++.LASF514: ++ .string "wcsncmp" ++.LASF334: ++ .string "find_last_not_of" ++.LASF364: ++ .string "_S_boolalpha" ++.LASF690: ++ .string "lldiv_t" ++.LASF489: ++ .string "vfwscanf" ++.LASF41: ++ .string "wint_t" ++.LASF327: ++ .string "_ZNKSs12find_last_ofEPKcm" ++.LASF700: ++ .string "mblen" ++.LASF318: ++ .string "_ZNKSs5rfindEcm" ++.LASF443: ++ .string "_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv" ++.LASF309: ++ .string "_ZNKSs13get_allocatorEv" ++.LASF556: ++ .string "__digits" ++.LASF216: ++ .string "_ZNKSs6lengthEv" ++.LASF369: ++ .string "_S_left" ++.LASF200: ++ .string "rbegin" ++.LASF614: ++ .string "wcstoull" ++.LASF170: ++ .string "_M_copy" ++.LASF768: ++ .string "__in_chrg" ++.LASF312: ++ .string "_ZNKSs4findEPKcm" ++.LASF382: ++ .string "_S_ios_fmtflags_end" ++.LASF467: ++ .string "_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv" ++.LASF337: ++ .string "_ZNKSs16find_last_not_ofEPKcm" ++.LASF530: ++ .string "wmemmove" ++.LASF473: ++ .string "fputwc" ++.LASF100: ++ .string "_ZNSt11char_traitsIcE11eq_int_typeERKiS2_" ++.LASF144: ++ .string "_ZNSs4_Rep10_M_disposeERKSaIcE" ++.LASF253: ++ .string "_ZNSs6appendEmc" ++.LASF305: ++ .string "_ZNKSs5c_strEv" ++.LASF233: ++ .string "_ZNKSsixEm" ++.LASF474: ++ .string "fputws" ++.LASF146: ++ .string "_ZNSs4_Rep10_M_destroyERKSaIcE" ++.LASF286: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm" ++.LASF236: ++ .string "_ZNSs2atEm" ++.LASF398: ++ .string "_S_badbit" ++.LASF169: ++ .string "_ZNKSs11_M_disjunctEPKc" ++.LASF582: ++ .string "_Container" ++.LASF202: ++ .string "_ZNKSs6rbeginEv" ++.LASF357: ++ .string "reverse_iterator<__gnu_cxx::__normal_iterator, std::allocator > > >" ++.LASF534: ++ .string "wcschr" ++.LASF86: ++ .string "find" ++.LASF391: ++ .string "_S_out" ++.LASF725: ++ .string "_next" ++.LASF308: ++ .string "get_allocator" ++.LASF371: ++ .string "_S_right" ++.LASF433: ++ .string "basic_ostream >" ++.LASF166: ++ .string "_M_limit" ++.LASF380: ++ .string "_S_basefield" ++.LASF652: ++ .string "decimal_point" ++.LASF544: ++ .string "address" ++.LASF682: ++ .string "_Atomic_word" ++.LASF636: ++ .string "uint_least64_t" ++.LASF551: ++ .string "_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv" ++.LASF813: ++ .string "decltype(nullptr)" ++.LASF290: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_" ++.LASF212: ++ .string "crend" ++.LASF239: ++ .string "_ZNKSs5frontEv" ++.LASF730: ++ .string "fclose" ++.LASF710: ++ .string "strtoul" ++.LASF409: ++ .string "openmode" ++.LASF87: ++ .string "_ZNSt11char_traitsIcE6lengthEPKc" ++.LASF96: ++ .string "_ZNSt11char_traitsIcE12to_char_typeERKi" ++.LASF328: ++ .string "_ZNKSs12find_last_ofEcm" ++.LASF245: ++ .string "_ZNSspLEPKc" ++.LASF444: ++ .string "iterator_traits" ++.LASF688: ++ .string "ldiv_t" ++.LASF232: ++ .string "operator[]" ++.LASF809: ++ .string "_ZNSt11char_traitsIcE3eofEv" ++.LASF799: ++ .string "__cxa_allocate_exception" ++.LASF801: ++ .string "__cxa_throw" ++.LASF752: ++ .string "tmpfile" ++.LASF103: ++ .string "allocator" ++.LASF199: ++ .string "_ZNKSs3endEv" ++.LASF754: ++ .string "ungetc" ++.LASF765: ++ .string "__val" ++.LASF712: ++ .string "wcstombs" ++.LASF310: ++ .string "_ZNKSs4findEPKcmm" ++.LASF472: ++ .string "wchar_t" ++.LASF323: ++ .string "_ZNKSs13find_first_ofEcm" ++.LASF347: ++ .string "_S_construct_aux" ++.LASF113: ++ .string "allocator_type" ++.LASF198: ++ .string "_ZNSs3endEv" ++.LASF277: ++ .string "pop_back" ++.LASF271: ++ .string "_ZNSs6insertEmmc" ++.LASF638: ++ .string "int_fast16_t" ++.LASF763: ++ .string "__gthread_active_ptr" ++.LASF281: ++ .string "_ZNSs7replaceEmmRKSsmm" ++.LASF581: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcSsE4baseEv" ++.LASF783: ++ .string "__str" ++.LASF159: ++ .string "_ZNKSs7_M_iendEv" ++.LASF486: ++ .string "swscanf" ++.LASF604: ++ .string "__numeric_traits_integer" ++.LASF515: ++ .string "wcsncpy" ++.LASF376: ++ .string "_S_skipws" ++.LASF628: ++ .string "uint64_t" ++.LASF367: ++ .string "_S_hex" ++.LASF218: ++ .string "_ZNKSs8max_sizeEv" ++.LASF442: ++ .string "pbase" ++.LASF459: ++ .string "__iterator_category" ++.LASF667: ++ .string "n_sep_by_space" ++.LASF269: ++ .string "_ZNSs6insertEmPKcm" ++.LASF808: ++ .string "_ZNSt11char_traitsIcE6assignERcRKc" ++.LASF621: ++ .string "int8_t" ++.LASF11: ++ .string "_IO_save_end" ++.LASF532: ++ .string "wprintf" ++.LASF502: ++ .string "tm_min" ++.LASF785: ++ .string "piecewise_construct" ++.LASF78: ++ .string "char_traits" ++.LASF72: ++ .string "__false_type" ++.LASF631: ++ .string "int_least32_t" ++.LASF707: ++ .string "srand" ++.LASF664: ++ .string "p_cs_precedes" ++.LASF496: ++ .string "wcscmp" ++.LASF590: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcSsEixERKl" ++.LASF260: ++ .string "_ZNSs6assignEPKcm" ++.LASF787: ++ .string "stdout" ++.LASF463: ++ .string "operator==" ++.LASF482: ++ .string "mbsrtowcs" ++.LASF63: ++ .string "_M_get" ++.LASF659: ++ .string "mon_grouping" ++.LASF734: ++ .string "fgetc" ++.LASF89: ++ .string "move" ++.LASF284: ++ .string "_ZNSs7replaceEmmmc" ++.LASF447: ++ .string "pointer" ++.LASF268: ++ .string "_ZNSs6insertEmRKSsmm" ++.LASF488: ++ .string "vfwprintf" ++.LASF650: ++ .string "char32_t" ++.LASF602: ++ .string "__numeric_traits_integer" ++.LASF508: ++ .string "tm_yday" ++.LASF481: ++ .string "mbsinit" ++.LASF329: ++ .string "find_first_not_of" ++.LASF161: ++ .string "_ZNSs7_M_leakEv" ++.LASF47: ++ .string "sizetype" ++.LASF160: ++ .string "_M_leak" ++.LASF62: ++ .string "~exception_ptr" ++.LASF711: ++ .string "system" ++.LASF622: ++ .string "int16_t" ++.LASF197: ++ .string "_ZNKSs5beginEv" ++.LASF51: ++ .string "short unsigned int" ++.LASF548: ++ .string "_ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv" ++.LASF618: ++ .string "signed char" ++.LASF326: ++ .string "_ZNKSs12find_last_ofEPKcmm" ++.LASF317: ++ .string "_ZNKSs5rfindEPKcm" ++.LASF430: ++ .string "goodbit" ++.LASF102: ++ .string "ptrdiff_t" ++.LASF485: ++ .string "swprintf" ++.LASF240: ++ .string "back" ++.LASF241: ++ .string "_ZNSs4backEv" ++.LASF492: ++ .string "vwprintf" ++.LASF589: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcSsEmmEi" ++.LASF381: ++ .string "_S_floatfield" ++.LASF231: ++ .string "_ZNKSs5emptyEv" ++.LASF681: ++ .string "__off64_t" ++.LASF498: ++ .string "wcscpy" ++.LASF219: ++ .string "resize" ++.LASF490: ++ .string "vswprintf" ++.LASF278: ++ .string "_ZNSs8pop_backEv" ++.LASF483: ++ .string "putwc" ++.LASF3: ++ .string "_IO_read_base" ++.LASF262: ++ .string "_ZNSs6assignEmc" ++.LASF21: ++ .string "_offset" ++.LASF8: ++ .string "_IO_buf_end" ++.LASF270: ++ .string "_ZNSs6insertEmPKc" ++.LASF207: ++ .string "_ZNKSs6cbeginEv" ++.LASF434: ++ .string "~basic_ostream" ++.LASF701: ++ .string "mbstowcs" ++.LASF50: ++ .string "mbstate_t" ++.LASF669: ++ .string "n_sign_posn" ++.LASF154: ++ .string "_M_rep" ++.LASF516: ++ .string "wcsrtombs" ++.LASF723: ++ .string "_G_fpos_t" ++.LASF507: ++ .string "tm_wday" ++.LASF390: ++ .string "_S_in" ++.LASF543: ++ .string "~new_allocator" ++.LASF402: ++ .string "_S_ios_iostate_max" ++.LASF307: ++ .string "_ZNKSs4dataEv" ++.LASF90: ++ .string "_ZNSt11char_traitsIcE4moveEPcPKcm" ++.LASF283: ++ .string "_ZNSs7replaceEmmPKc" ++.LASF56: ++ .string "_M_release" ++.LASF27: ++ .string "_mode" ++.LASF4: ++ .string "_IO_write_base" ++.LASF150: ++ .string "_M_data" ++.LASF815: ++ .string "func" ++.LASF43: ++ .string "__wch" ++.LASF94: ++ .string "_ZNSt11char_traitsIcE6assignEPcmc" ++.LASF554: ++ .string "__max" ++.LASF331: ++ .string "_ZNKSs17find_first_not_ofEPKcmm" ++.LASF208: ++ .string "cend" ++.LASF248: ++ .string "append" ++.LASF491: ++ .string "vswscanf" ++.LASF747: ++ .string "remove" ++.LASF505: ++ .string "tm_mon" ++.LASF400: ++ .string "_S_failbit" ++.LASF800: ++ .string "~_Alloc_hider" ++.LASF91: ++ .string "copy" ++.LASF99: ++ .string "eq_int_type" ++.LASF142: ++ .string "_ZNSs4_Rep9_S_createEmmRKSaIcE" ++.LASF69: ++ .string "__cxa_exception_type" ++.LASF345: ++ .string "_ZNKSs7compareEmmPKc" ++.LASF706: ++ .string "rand" ++.LASF291: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_" ++.LASF524: ++ .string "long int" ++.LASF735: ++ .string "fgetpos" ++.LASF211: ++ .string "_ZNKSs7crbeginEv" ++.LASF572: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcSsEixERKl" ++.LASF204: ++ .string "_ZNSs4rendEv" ++.LASF97: ++ .string "to_int_type" ++.LASF724: ++ .string "_IO_marker" ++.LASF674: ++ .string "int_p_sign_posn" ++.LASF378: ++ .string "_S_uppercase" ++.LASF506: ++ .string "tm_year" ++.LASF303: ++ .string "_ZNSs4swapERSs" ++.LASF533: ++ .string "wscanf" ++.LASF575: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcSsEplERKl" ++.LASF559: ++ .string "__normal_iterator, std::allocator > >" ++.LASF594: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcSsEmiERKl" ++.LASF745: ++ .string "gets" ++.LASF396: ++ .string "_Ios_Iostate" ++.LASF70: ++ .string "_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv" ++.LASF603: ++ .string "__numeric_traits_integer" ++.LASF230: ++ .string "empty" ++.LASF251: ++ .string "_ZNSs6appendEPKcm" ++.LASF645: ++ .string "intptr_t" ++.LASF49: ++ .string "__mbstate_t" ++.LASF657: ++ .string "mon_decimal_point" ++.LASF627: ++ .string "uint32_t" ++.LASF300: ++ .string "_S_construct" ++.LASF583: ++ .string "__normal_iterator, std::allocator > >" ++.LASF704: ++ .string "qsort" ++.LASF353: ++ .string "_Traits" ++.LASF646: ++ .string "uintptr_t" ++.LASF450: ++ .string "basic_ios >" ++.LASF709: ++ .string "strtol" ++.LASF611: ++ .string "long double" ++.LASF805: ++ .string "entry-value-typedef.cpp" ++.LASF806: ++ .string "/home/simark/src/binutils-gdb/gdb/testsuite/gdb.dwarf2" ++.LASF226: ++ .string "reserve" ++.LASF280: ++ .string "_ZNSs7replaceEmmRKSs" ++.LASF665: ++ .string "p_sep_by_space" ++.LASF206: ++ .string "cbegin" ++.LASF764: ++ .string "__mem" ++.LASF34: ++ .string "__stack" ++.LASF40: ++ .string "long unsigned int" ++.LASF775: ++ .string "__mode" ++.LASF84: ++ .string "_ZNSt11char_traitsIcE7compareEPKcS2_m" ++.LASF243: ++ .string "operator+=" ++.LASF753: ++ .string "tmpnam" ++.LASF577: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcSsEmIERKl" ++.LASF568: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcSsEppEi" ++.LASF354: ++ .string "_Alloc" ++.LASF566: ++ .string "operator++" ++.LASF567: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcSsEppEv" ++.LASF221: ++ .string "_ZNSs6resizeEm" ++.LASF179: ++ .string "_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_" ++.LASF112: ++ .string "_M_dataplus" ++.LASF755: ++ .string "wctype_t" ++.LASF191: ++ .string "_ZNSsaSEPKc" ++.LASF48: ++ .string "char" ++.LASF255: ++ .string "push_back" ++.LASF610: ++ .string "wcstold" ++.LASF124: ++ .string "_S_terminal" ++.LASF703: ++ .string "__is_null_pointer" ++.LASF786: ++ .string "stdin" ++.LASF720: ++ .string "9_G_fpos_t" ++.LASF359: ++ .string "_M_array" ++.LASF264: ++ .string "insert" ++.LASF122: ++ .string "_Rep" ++.LASF393: ++ .string "_S_ios_openmode_end" ++.LASF7: ++ .string "_IO_buf_base" ++.LASF185: ++ .string "_ZNSs9_M_mutateEmmm" ++.LASF609: ++ .string "_Type" ++.LASF569: ++ .string "operator--" ++.LASF432: ++ .string "ios_base" ++.LASF246: ++ .string "_ZNSspLEc" ++.LASF174: ++ .string "_ZNSs7_M_moveEPcPKcm" ++.LASF564: ++ .string "operator->" ++.LASF640: ++ .string "int_fast64_t" ++.LASF2: ++ .string "_IO_read_end" ++.LASF36: ++ .string "__vr_top" ++.LASF32: ++ .string "_IO_FILE" ++.LASF538: ++ .string "wmemchr" ++.LASF321: ++ .string "_ZNKSs13find_first_ofEPKcmm" ++.LASF403: ++ .string "_S_ios_iostate_min" ++.LASF153: ++ .string "_ZNSs7_M_dataEPc" ++.LASF193: ++ .string "_ZNSsaSEOSs" ++.LASF325: ++ .string "_ZNKSs12find_last_ofERKSsm" ++.LASF58: ++ .string "_ZNSt15__exception_ptr13exception_ptr10_M_releaseEv" ++.LASF715: ++ .string "atoll" ++.LASF740: ++ .string "fseek" ++.LASF301: ++ .string "_ZNSs12_S_constructEmcRKSaIcE" ++.LASF774: ++ .string "__dat" ++.LASF553: ++ .string "__min" ++.LASF644: ++ .string "uint_fast64_t" ++.LASF460: ++ .string "_Iter" ++.LASF697: ++ .string "bsearch" ++.LASF457: ++ .string "_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv" ++.LASF294: ++ .string "_M_replace_aux" ++.LASF116: ++ .string "const_reverse_iterator" ++.LASF437: ++ .string "basic_streambuf" ++.LASF109: ++ .string "basic_string, std::allocator >" ++.LASF677: ++ .string "getwchar" ++.LASF35: ++ .string "__gr_top" ++.LASF675: ++ .string "int_n_sign_posn" ++.LASF412: ++ .string "fixed" ++.LASF57: ++ .string "_ZNSt15__exception_ptr13exception_ptr9_M_addrefEv" ++.LASF504: ++ .string "tm_mday" ++.LASF182: ++ .string "_S_compare" ++.LASF304: ++ .string "c_str" ++.LASF106: ++ .string "const_reference" ++.LASF22: ++ .string "__pad1" ++.LASF23: ++ .string "__pad2" ++.LASF24: ++ .string "__pad3" ++.LASF25: ++ .string "__pad4" ++.LASF26: ++ .string "__pad5" ++.LASF605: ++ .string "__numeric_traits_integer" ++.LASF726: ++ .string "_sbuf" ++.LASF762: ++ .string "__gthread_active_p" ++.LASF316: ++ .string "_ZNKSs5rfindEPKcmm" ++.LASF540: ++ .string "new_allocator" ++.LASF741: ++ .string "fsetpos" ++.LASF333: ++ .string "_ZNKSs17find_first_not_ofEcm" ++.LASF66: ++ .string "_ZNSt15__exception_ptr13exception_ptr4swapERS0_" ++.LASF12: ++ .string "_markers" ++.LASF727: ++ .string "_pos" ++.LASF624: ++ .string "int64_t" ++.LASF119: ++ .string "_M_length" ++.LASF336: ++ .string "_ZNKSs16find_last_not_ofEPKcmm" ++.LASF633: ++ .string "uint_least8_t" ++.LASF699: ++ .string "ldiv" ++.LASF456: ++ .string "_ZNKSt16initializer_listIcE3endEv" ++.LASF429: ++ .string "failbit" ++.LASF672: ++ .string "int_n_cs_precedes" ++.LASF273: ++ .string "erase" ++.LASF519: ++ .string "double" ++.LASF779: ++ .string "__k1" ++.LASF330: ++ .string "_ZNKSs17find_first_not_ofERKSsm" ++.LASF30: ++ .string "__FILE" ++.LASF247: ++ .string "_ZNSspLESt16initializer_listIcE" ++.LASF587: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcSsEppEi" ++.LASF205: ++ .string "_ZNKSs4rendEv" ++.LASF586: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcSsEppEv" ++.LASF448: ++ .string "_Iterator" ++.LASF679: ++ .string "__int32_t" ++.LASF435: ++ .string "basic_streambuf >" ++.LASF133: ++ .string "_M_set_sharable" ++.LASF306: ++ .string "data" ++.LASF528: ++ .string "wmemcmp" ++.LASF468: ++ .string "ostringstream" ++.LASF494: ++ .string "wcrtomb" ++.LASF46: ++ .string "__value" ++.LASF576: ++ .string "operator-=" ++.LASF351: ++ .string "_InIterator" ++.LASF263: ++ .string "_ZNSs6assignESt16initializer_listIcE" ++.LASF256: ++ .string "_ZNSs9push_backEc" ++.LASF585: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcSsEptEv" ++.LASF74: ++ .string "input_iterator_tag" ++.LASF128: ++ .string "_ZNKSs4_Rep12_M_is_leakedEv" ++.LASF431: ++ .string "seekdir" ++.LASF580: ++ .string "base" ++.LASF414: ++ .string "left" ++.LASF209: ++ .string "_ZNKSs4cendEv" ++.LASF660: ++ .string "positive_sign" ++.LASF751: ++ .string "setvbuf" ++.LASF293: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE" ++.LASF684: ++ .string "5div_t" ++.LASF397: ++ .string "_S_goodbit" ++.LASF593: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcSsEmIERKl" ++.LASF686: ++ .string "div_t" ++.LASF600: ++ .string "__numeric_traits_floating" ++.LASF693: ++ .string "at_quick_exit" ++.LASF171: ++ .string "_ZNSt11char_traitsIcE7not_eofERKi" ++.LASF375: ++ .string "_S_showpos" ++.LASF408: ++ .string "_S_ios_seekdir_end" ++.LASF52: ++ .string "__exception_ptr" ++.LASF297: ++ .string "_ZNSs15_M_replace_safeEmmPKcm" ++.LASF343: ++ .string "_ZNKSs7compareEmmRKSsmm" ++.LASF462: ++ .string "_RandomAccessIterator" ++.LASF702: ++ .string "mbtowc" ++.LASF574: ++ .string "operator+" ++.LASF75: ++ .string "forward_iterator_tag" ++.LASF143: ++ .string "_M_dispose" ++.LASF788: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE" ++.LASF132: ++ .string "_ZNSs4_Rep13_M_set_leakedEv" ++.LASF615: ++ .string "long long unsigned int" ++.LASF480: ++ .string "mbrtowc" ++.LASF17: ++ .string "_cur_column" ++.LASF811: ++ .string "_ZNSs4_Rep12_S_empty_repEv" ++.LASF529: ++ .string "wmemcpy" ++.LASF691: ++ .string "__compar_fn_t" ++.LASF349: ++ .string "_S_construct" ++.LASF797: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE" ++.LASF181: ++ .string "_ZNSs13_S_copy_charsEPcPKcS1_" ++.LASF417: ++ .string "showbase" ++.LASF377: ++ .string "_S_unitbuf" ++.LASF573: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcSsEpLERKl" ++.LASF392: ++ .string "_S_trunc" ++.LASF98: ++ .string "_ZNSt11char_traitsIcE11to_int_typeERKc" ++.LASF131: ++ .string "_M_set_leaked" ++.LASF410: ++ .string "fmtflags" ++.LASF134: ++ .string "_ZNSs4_Rep15_M_set_sharableEv" ++.LASF441: ++ .string "_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv" ++.LASF513: ++ .string "wcsncat" ++.LASF737: ++ .string "fopen" ++.LASF510: ++ .string "tm_gmtoff" ++.LASF795: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE" ++.LASF10: ++ .string "_IO_backup_base" ++.LASF439: ++ .string "_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv" ++.LASF673: ++ .string "int_n_sep_by_space" ++.LASF1: ++ .string "_IO_read_ptr" ++.LASF184: ++ .string "_M_mutate" ++.LASF355: ++ .string "type_info" ++.LASF413: ++ .string "internal" ++.LASF190: ++ .string "_ZNSsaSERKSs" ++.LASF698: ++ .string "getenv" ++.LASF470: ++ .string "fgetwc" ++.LASF120: ++ .string "_M_capacity" ++.LASF38: ++ .string "__vr_offs" ++.LASF471: ++ .string "fgetws" ++.LASF194: ++ .string "_ZNSsaSESt16initializer_listIcE" ++.LASF188: ++ .string "basic_string" ++.LASF743: ++ .string "getc" ++.LASF320: ++ .string "_ZNKSs13find_first_ofERKSsm" ++.LASF561: ++ .string "__normal_iterator" ++.LASF16: ++ .string "_old_offset" ++.LASF418: ++ .string "showpoint" ++.LASF497: ++ .string "wcscoll" ++.LASF419: ++ .string "showpos" ++.LASF756: ++ .string "wctrans_t" ++.LASF770: ++ .string "__c1" ++.LASF771: ++ .string "__c2" ++.LASF668: ++ .string "p_sign_posn" ++.LASF183: ++ .string "_ZNSs10_S_compareEmm" ++.LASF790: ++ .string "_ZN9__gnu_cxx25__numeric_traits_floatingIfE16__max_exponent10E" ++.LASF536: ++ .string "wcsrchr" ++.LASF83: ++ .string "compare" ++.LASF613: ++ .string "long long int" ++.LASF215: ++ .string "_ZNKSs4sizeEv" ++.LASF15: ++ .string "_flags2" ++.LASF546: ++ .string "_ZNK9__gnu_cxx13new_allocatorIcE7addressERKc" ++.LASF405: ++ .string "_S_beg" ++.LASF428: ++ .string "eofbit" ++.LASF744: ++ .string "getchar" ++.LASF274: ++ .string "_ZNSs5eraseEmm" ++.LASF138: ++ .string "_ZNSs4_Rep10_M_refdataEv" ++.LASF288: ++ .string "_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc" ++.LASF115: ++ .string "const_iterator" ++.LASF379: ++ .string "_S_adjustfield" ++.LASF315: ++ .string "_ZNKSs5rfindERKSsm" ++.LASF487: ++ .string "ungetwc" ++.LASF361: ++ .string "initializer_list" ++.LASF324: ++ .string "find_last_of" ++.LASF630: ++ .string "int_least16_t" ++.LASF558: ++ .string "_ZN9__gnu_cxx3divExx" ++.LASF666: ++ .string "n_cs_precedes" ++.LASF571: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcSsEmmEi" ++.LASF440: ++ .string "egptr" ++.LASF335: ++ .string "_ZNKSs16find_last_not_ofERKSsm" ++.LASF404: ++ .string "_Ios_Seekdir" ++.LASF570: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcSsEmmEv" ++.LASF352: ++ .string "_CharT" ++.LASF678: ++ .string "localeconv" ++.LASF105: ++ .string "reference" ++.LASF242: ++ .string "_ZNKSs4backEv" ++.LASF649: ++ .string "char16_t" ++.LASF766: ++ .string "__result" ++.LASF261: ++ .string "_ZNSs6assignEPKc" ++.LASF717: ++ .string "strtoull" ++.LASF454: ++ .string "basic_stringbuf, std::allocator >" ++.LASF282: ++ .string "_ZNSs7replaceEmmPKcm" ++.LASF784: ++ .string "main" ++.LASF222: ++ .string "shrink_to_fit" ++.LASF342: ++ .string "_ZNKSs7compareEmmRKSs" ++.LASF607: ++ .string "__exchange_and_add_single" ++.LASF425: ++ .string "floatfield" ++.LASF592: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcSsEplERKl" ++.LASF168: ++ .string "_M_disjunct" ++.LASF584: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcSsEdeEv" ++.LASF555: ++ .string "__is_signed" ++.LASF348: ++ .string "_ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type" ++.LASF42: ++ .string "unsigned int" ++.LASF634: ++ .string "uint_least16_t" ++.LASF177: ++ .string "_S_copy_chars" ++.LASF54: ++ .string "exception_ptr" ++.LASF227: ++ .string "_ZNSs7reserveEm" ++.LASF733: ++ .string "fflush" ++.LASF641: ++ .string "uint_fast8_t" ++.LASF383: ++ .string "_S_ios_fmtflags_max" ++.LASF53: ++ .string "_M_exception_object" ++.LASF389: ++ .string "_S_bin" ++.LASF358: ++ .string "initializer_list" ++.LASF619: ++ .string "short int" ++.LASF195: ++ .string "begin" ++.LASF670: ++ .string "int_p_cs_precedes" ++.LASF525: ++ .string "wcstoul" ++.LASF210: ++ .string "crbegin" ++.LASF18: ++ .string "_vtable_offset" ++.LASF127: ++ .string "_M_is_leaked" ++.LASF186: ++ .string "_M_leak_hard" ++.LASF258: ++ .string "_ZNSs6assignEOSs" ++.LASF802: ++ .string "__cxa_free_exception" ++.LASF810: ++ .string "npos" ++.LASF451: ++ .string "~basic_ios" ++.LASF601: ++ .string "__numeric_traits_floating" ++.LASF234: ++ .string "_ZNSsixEm" ++.LASF33: ++ .string "__va_list" ++.LASF637: ++ .string "int_fast8_t" ++.LASF108: ++ .string "~allocator" ++.LASF767: ++ .string "this" ++.LASF387: ++ .string "_S_app" ++.LASF76: ++ .string "bidirectional_iterator_tag" ++.LASF360: ++ .string "_M_len" ++.LASF319: ++ .string "find_first_of" ++ .hidden DW.ref.__gxx_personality_v0 ++ .weak DW.ref.__gxx_personality_v0 ++ .section .data.DW.ref.__gxx_personality_v0,"awG",%progbits,DW.ref.__gxx_personality_v0,comdat ++ .align 3 ++ .type DW.ref.__gxx_personality_v0, %object ++ .size DW.ref.__gxx_personality_v0, 8 ++DW.ref.__gxx_personality_v0: ++ .xword __gxx_personality_v0 ++ .ident "GCC: (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.4) 4.8.4" ++ .section .note.GNU-stack,"",%progbits +diff --git a/gdb/testsuite/gdb.dwarf2/entry-value-typedef-amd64.S b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-amd64.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/entry-value-typedef-amd64.S +@@ -0,0 +1,15545 @@ ++/* ++ Copyright 2022 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* This file was generated from entry-value-typedef.cpp on an x86-64 Ubuntu ++ 20.04 using: ++ ++ $ g++ --version ++ g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 ++ $ g++ entry-value-typedef.cpp -O1 -S -g -o entry-value-typedef-amd64.S ++*/ ++ ++ .file "entry-value-typedef.cpp" ++ .text ++.Ltext0: ++ .type _ZL4funcRKi, @function ++_ZL4funcRKi: ++.LVL0: ++.LFB1646: ++ .file 1 "entry-value-typedef.cpp" ++ .loc 1 27 1 view -0 ++ .cfi_startproc ++ .cfi_personality 0x9b,DW.ref.__gxx_personality_v0 ++ .cfi_lsda 0x1b,.LLSDA1646 ++ .loc 1 27 1 is_stmt 0 view .LVU1 ++ pushq %rbp ++ .cfi_def_cfa_offset 16 ++ .cfi_offset 6, -16 ++ pushq %rbx ++ .cfi_def_cfa_offset 24 ++ .cfi_offset 3, -24 ++ subq $392, %rsp ++ .cfi_def_cfa_offset 416 ++ .loc 1 27 1 view .LVU2 ++ movq %fs:40, %rax ++ movq %rax, 376(%rsp) ++ xorl %eax, %eax ++ .loc 1 28 3 is_stmt 1 view .LVU3 ++ .loc 1 28 22 is_stmt 0 view .LVU4 ++ movq %rsp, %rdi ++.LVL1: ++.LEHB0: ++ .loc 1 28 22 view .LVU5 ++ call _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@PLT ++.LVL2: ++.LEHE0: ++ .loc 1 29 3 is_stmt 1 view .LVU6 ++ .loc 1 29 18 is_stmt 0 view .LVU7 ++ movl $32, %edi ++ call __cxa_allocate_exception@PLT ++.LVL3: ++ movq %rax, %rbx ++.LVL4: ++.LBB403: ++.LBI403: ++ .file 2 "/usr/include/c++/9/sstream" ++ .loc 2 677 7 is_stmt 1 view .LVU8 ++.LBB404: ++ .loc 2 678 33 is_stmt 0 view .LVU9 ++ leaq 8(%rsp), %rsi ++ movq %rax, %rdi ++.LEHB1: ++ call _ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@PLT ++.LVL5: ++.LEHE1: ++ .loc 2 678 33 view .LVU10 ++.LBE404: ++.LBE403: ++ .loc 1 29 18 discriminator 2 view .LVU11 ++ movq _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@GOTPCREL(%rip), %rdx ++ leaq _ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%rip), %rsi ++ movq %rbx, %rdi ++.LEHB2: ++ call __cxa_throw@PLT ++.LVL6: ++.LEHE2: ++.L6: ++ endbr64 ++ movq %rax, %rbx ++ jmp .L3 ++.LVL7: ++.L5: ++ .loc 1 29 18 discriminator 2 view .LVU12 ++ endbr64 ++ movq %rax, %rbp ++ .loc 1 29 18 view .LVU13 ++ movq %rbx, %rdi ++ call __cxa_free_exception@PLT ++.LVL8: ++ movq %rbp, %rbx ++.LVL9: ++.L3: ++ .loc 1 28 22 view .LVU14 ++ movq %rsp, %rdi ++ call _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@PLT ++.LVL10: ++ movq %rbx, %rdi ++.LEHB3: ++ call _Unwind_Resume@PLT ++.LVL11: ++.LEHE3: ++ .cfi_endproc ++.LFE1646: ++ .globl __gxx_personality_v0 ++ .section .gcc_except_table,"a",@progbits ++.LLSDA1646: ++ .byte 0xff ++ .byte 0xff ++ .byte 0x1 ++ .uleb128 .LLSDACSE1646-.LLSDACSB1646 ++.LLSDACSB1646: ++ .uleb128 .LEHB0-.LFB1646 ++ .uleb128 .LEHE0-.LEHB0 ++ .uleb128 0 ++ .uleb128 0 ++ .uleb128 .LEHB1-.LFB1646 ++ .uleb128 .LEHE1-.LEHB1 ++ .uleb128 .L5-.LFB1646 ++ .uleb128 0 ++ .uleb128 .LEHB2-.LFB1646 ++ .uleb128 .LEHE2-.LEHB2 ++ .uleb128 .L6-.LFB1646 ++ .uleb128 0 ++ .uleb128 .LEHB3-.LFB1646 ++ .uleb128 .LEHE3-.LEHB3 ++ .uleb128 0 ++ .uleb128 0 ++.LLSDACSE1646: ++ .text ++ .size _ZL4funcRKi, .-_ZL4funcRKi ++ .globl main ++ .type main, @function ++main: ++.LFB1647: ++ .loc 1 34 1 is_stmt 1 view -0 ++ .cfi_startproc ++ endbr64 ++ pushq %rax ++ .cfi_def_cfa_offset 16 ++ popq %rax ++ .cfi_def_cfa_offset 8 ++ subq $24, %rsp ++ .cfi_def_cfa_offset 32 ++ .loc 1 34 1 is_stmt 0 view .LVU16 ++ movq %fs:40, %rax ++ movq %rax, 8(%rsp) ++ xorl %eax, %eax ++ .loc 1 35 3 is_stmt 1 view .LVU17 ++ .loc 1 35 9 is_stmt 0 view .LVU18 ++ movl $1234, 4(%rsp) ++ .loc 1 35 8 view .LVU19 ++ leaq 4(%rsp), %rdi ++ call _ZL4funcRKi ++.LVL12: ++ .cfi_endproc ++.LFE1647: ++ .size main, .-main ++ .weak _ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE ++ .section .rodata._ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE,"aG",@progbits,_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE,comdat ++ .align 32 ++ .type _ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE, @object ++ .size _ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE, 53 ++_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE: ++ .string "NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE" ++ .weak _ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE ++ .section .data.rel.ro._ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE,"awG",@progbits,_ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE,comdat ++ .align 8 ++ .type _ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE, @object ++ .size _ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE, 16 ++_ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE: ++ .quad _ZTVN10__cxxabiv117__class_type_infoE+16 ++ .quad _ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE ++ .text ++.Letext0: ++ .file 3 "/usr/include/c++/9/bits/basic_string.h" ++ .file 4 "/usr/include/c++/9/cwchar" ++ .file 5 "/usr/include/c++/9/new" ++ .file 6 "/usr/include/c++/9/bits/exception_ptr.h" ++ .file 7 "/usr/include/x86_64-linux-gnu/c++/9/bits/c++config.h" ++ .file 8 "/usr/include/c++/9/type_traits" ++ .file 9 "/usr/include/c++/9/bits/stl_pair.h" ++ .file 10 "/usr/include/c++/9/debug/debug.h" ++ .file 11 "/usr/include/c++/9/bits/char_traits.h" ++ .file 12 "/usr/include/c++/9/cstdint" ++ .file 13 "/usr/include/c++/9/clocale" ++ .file 14 "/usr/include/c++/9/bits/allocator.h" ++ .file 15 "/usr/include/c++/9/cstdlib" ++ .file 16 "/usr/include/c++/9/cstdio" ++ .file 17 "/usr/include/c++/9/bits/alloc_traits.h" ++ .file 18 "/usr/include/c++/9/initializer_list" ++ .file 19 "/usr/include/c++/9/system_error" ++ .file 20 "/usr/include/c++/9/bits/ios_base.h" ++ .file 21 "/usr/include/c++/9/cwctype" ++ .file 22 "/usr/include/c++/9/ostream" ++ .file 23 "/usr/include/c++/9/streambuf" ++ .file 24 "/usr/include/c++/9/bits/stl_iterator_base_types.h" ++ .file 25 "/usr/include/c++/9/bits/ptr_traits.h" ++ .file 26 "/usr/include/c++/9/bits/cpp_type_traits.h" ++ .file 27 "/usr/include/c++/9/bits/move.h" ++ .file 28 "/usr/include/c++/9/bits/basic_ios.h" ++ .file 29 "/usr/include/c++/9/iosfwd" ++ .file 30 "/usr/include/c++/9/bits/predefined_ops.h" ++ .file 31 "/usr/include/c++/9/ext/new_allocator.h" ++ .file 32 "/usr/include/c++/9/ext/numeric_traits.h" ++ .file 33 "/usr/include/c++/9/ext/alloc_traits.h" ++ .file 34 "/usr/include/c++/9/bits/stl_iterator.h" ++ .file 35 "/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h" ++ .file 36 "" ++ .file 37 "/usr/include/x86_64-linux-gnu/bits/types/wint_t.h" ++ .file 38 "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h" ++ .file 39 "/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h" ++ .file 40 "/usr/include/x86_64-linux-gnu/bits/types/__FILE.h" ++ .file 41 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" ++ .file 42 "/usr/include/x86_64-linux-gnu/bits/types/FILE.h" ++ .file 43 "/usr/include/wchar.h" ++ .file 44 "/usr/include/x86_64-linux-gnu/bits/wchar2.h" ++ .file 45 "/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h" ++ .file 46 "/usr/include/x86_64-linux-gnu/bits/types.h" ++ .file 47 "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h" ++ .file 48 "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h" ++ .file 49 "/usr/include/stdint.h" ++ .file 50 "/usr/include/locale.h" ++ .file 51 "/usr/include/time.h" ++ .file 52 "/usr/include/stdlib.h" ++ .file 53 "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h" ++ .file 54 "/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h" ++ .file 55 "/usr/include/x86_64-linux-gnu/bits/stdlib.h" ++ .file 56 "/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h" ++ .file 57 "/usr/include/stdio.h" ++ .file 58 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" ++ .file 59 "/usr/include/x86_64-linux-gnu/bits/stdio2.h" ++ .file 60 "/usr/include/x86_64-linux-gnu/bits/stdio.h" ++ .file 61 "/usr/include/errno.h" ++ .file 62 "/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h" ++ .file 63 "/usr/include/wctype.h" ++ .section .debug_info,"",@progbits ++.Ldebug_info0: ++ .long 0x60f4 ++ .value 0x4 ++ .long .Ldebug_abbrev0 ++ .byte 0x8 ++ .uleb128 0x5c ++ .long .LASF920 ++ .byte 0x4 ++ .long .LASF921 ++ .long .LASF922 ++ .quad .Ltext0 ++ .quad .Letext0-.Ltext0 ++ .long .Ldebug_line0 ++ .uleb128 0x5d ++ .string "std" ++ .byte 0x24 ++ .byte 0 ++ .long 0x2e67 ++ .uleb128 0x46 ++ .long .LASF369 ++ .byte 0x7 ++ .value 0x118 ++ .byte 0x41 ++ .long 0x1c15 ++ .uleb128 0x30 ++ .long .LASF267 ++ .byte 0x20 ++ .byte 0x3 ++ .byte 0x51 ++ .byte 0xb ++ .long 0x1ace ++ .uleb128 0x13 ++ .long .LASF0 ++ .byte 0x8 ++ .byte 0x3 ++ .byte 0x9a ++ .byte 0xe ++ .long 0xd3 ++ .uleb128 0x47 ++ .long 0x250f ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF0 ++ .byte 0x3 ++ .byte 0xa0 ++ .byte 0x2 ++ .long .LASF1 ++ .long 0x79 ++ .long 0x89 ++ .uleb128 0x2 ++ .long 0x50ef ++ .uleb128 0x1 ++ .long 0xd3 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF0 ++ .byte 0x3 ++ .byte 0xa3 ++ .byte 0x2 ++ .long .LASF2 ++ .long 0x9d ++ .long 0xad ++ .uleb128 0x2 ++ .long 0x50ef ++ .uleb128 0x1 ++ .long 0xd3 ++ .uleb128 0x1 ++ .long 0x50fa ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF7 ++ .byte 0x3 ++ .byte 0xa7 ++ .byte 0xa ++ .long 0xd3 ++ .byte 0 ++ .uleb128 0x5e ++ .long .LASF923 ++ .long .LASF924 ++ .long 0xc7 ++ .uleb128 0x2 ++ .long 0x50ef ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF5 ++ .byte 0x3 ++ .byte 0x60 ++ .byte 0x30 ++ .long 0x318c ++ .byte 0x1 ++ .uleb128 0x5f ++ .byte 0x7 ++ .byte 0x4 ++ .long 0x3970 ++ .byte 0x3 ++ .byte 0xad ++ .byte 0xc ++ .long 0xf5 ++ .uleb128 0x23 ++ .long .LASF372 ++ .byte 0xf ++ .byte 0 ++ .uleb128 0x48 ++ .byte 0x10 ++ .byte 0x3 ++ .byte 0xb0 ++ .byte 0x7 ++ .long 0x117 ++ .uleb128 0x37 ++ .long .LASF3 ++ .byte 0x3 ++ .byte 0xb1 ++ .byte 0x13 ++ .long 0x5100 ++ .uleb128 0x37 ++ .long .LASF4 ++ .byte 0x3 ++ .byte 0xb2 ++ .byte 0x13 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF6 ++ .byte 0x3 ++ .byte 0x5c ++ .byte 0x32 ++ .long 0x31a4 ++ .byte 0x1 ++ .uleb128 0xa ++ .long 0x117 ++ .uleb128 0x60 ++ .long .LASF296 ++ .byte 0x3 ++ .byte 0x69 ++ .byte 0x1e ++ .long 0x124 ++ .byte 0x1 ++ .uleb128 0x6 ++ .long .LASF8 ++ .byte 0x3 ++ .byte 0xaa ++ .byte 0x14 ++ .long 0x52 ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF9 ++ .byte 0x3 ++ .byte 0xab ++ .byte 0x12 ++ .long 0x117 ++ .byte 0x8 ++ .uleb128 0x61 ++ .long 0xf5 ++ .byte 0x10 ++ .uleb128 0x20 ++ .long .LASF10 ++ .byte 0x3 ++ .byte 0xb6 ++ .byte 0x7 ++ .long .LASF11 ++ .long 0x16a ++ .long 0x175 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0xd3 ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF12 ++ .byte 0x3 ++ .byte 0xba ++ .byte 0x7 ++ .long .LASF13 ++ .long 0x189 ++ .long 0x194 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x22 ++ .long .LASF10 ++ .byte 0x3 ++ .byte 0xbe ++ .byte 0x7 ++ .long .LASF15 ++ .long 0xd3 ++ .long 0x1ac ++ .long 0x1b2 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x22 ++ .long .LASF14 ++ .byte 0x3 ++ .byte 0xc2 ++ .byte 0x7 ++ .long .LASF16 ++ .long 0xd3 ++ .long 0x1ca ++ .long 0x1d0 ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF17 ++ .byte 0x3 ++ .byte 0x61 ++ .byte 0x35 ++ .long 0x3198 ++ .byte 0x1 ++ .uleb128 0x22 ++ .long .LASF14 ++ .byte 0x3 ++ .byte 0xcc ++ .byte 0x7 ++ .long .LASF18 ++ .long 0x1d0 ++ .long 0x1f5 ++ .long 0x1fb ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF19 ++ .byte 0x3 ++ .byte 0xd6 ++ .byte 0x7 ++ .long .LASF20 ++ .long 0x20f ++ .long 0x21a ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF21 ++ .byte 0x3 ++ .byte 0xda ++ .byte 0x7 ++ .long .LASF22 ++ .long 0x22e ++ .long 0x239 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x22 ++ .long .LASF23 ++ .byte 0x3 ++ .byte 0xe1 ++ .byte 0x7 ++ .long .LASF24 ++ .long 0x448e ++ .long 0x251 ++ .long 0x257 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x22 ++ .long .LASF25 ++ .byte 0x3 ++ .byte 0xe6 ++ .byte 0x7 ++ .long .LASF26 ++ .long 0xd3 ++ .long 0x26f ++ .long 0x27f ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5126 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF27 ++ .byte 0x3 ++ .byte 0xe9 ++ .byte 0x7 ++ .long .LASF28 ++ .long 0x293 ++ .long 0x299 ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF29 ++ .byte 0x3 ++ .byte 0xf0 ++ .byte 0x7 ++ .long .LASF30 ++ .long 0x2ad ++ .long 0x2b8 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x2b ++ .long .LASF31 ++ .byte 0x3 ++ .value 0x106 ++ .byte 0x7 ++ .long .LASF33 ++ .long 0x2cd ++ .long 0x2dd ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x2b ++ .long .LASF32 ++ .byte 0x3 ++ .value 0x11f ++ .byte 0x7 ++ .long .LASF34 ++ .long 0x2f2 ++ .long 0x302 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF35 ++ .byte 0x3 ++ .byte 0x5b ++ .byte 0x23 ++ .long 0x314 ++ .byte 0x1 ++ .uleb128 0xa ++ .long 0x302 ++ .uleb128 0x5 ++ .long .LASF293 ++ .byte 0x3 ++ .byte 0x54 ++ .byte 0x18 ++ .long 0x31d5 ++ .uleb128 0x27 ++ .long .LASF36 ++ .byte 0x3 ++ .value 0x122 ++ .byte 0x7 ++ .long .LASF37 ++ .long 0x512c ++ .long 0x339 ++ .long 0x33f ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x27 ++ .long .LASF36 ++ .byte 0x3 ++ .value 0x126 ++ .byte 0x7 ++ .long .LASF38 ++ .long 0x5132 ++ .long 0x358 ++ .long 0x35e ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x27 ++ .long .LASF39 ++ .byte 0x3 ++ .value 0x13a ++ .byte 0x7 ++ .long .LASF40 ++ .long 0x117 ++ .long 0x377 ++ .long 0x387 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x2b ++ .long .LASF41 ++ .byte 0x3 ++ .value 0x144 ++ .byte 0x7 ++ .long .LASF42 ++ .long 0x39c ++ .long 0x3b1 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x27 ++ .long .LASF43 ++ .byte 0x3 ++ .value 0x14d ++ .byte 0x7 ++ .long .LASF44 ++ .long 0x117 ++ .long 0x3ca ++ .long 0x3da ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x27 ++ .long .LASF45 ++ .byte 0x3 ++ .value 0x155 ++ .byte 0x7 ++ .long .LASF46 ++ .long 0x448e ++ .long 0x3f3 ++ .long 0x3fe ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x24 ++ .long .LASF47 ++ .byte 0x3 ++ .value 0x15e ++ .byte 0x7 ++ .long .LASF49 ++ .long 0x41f ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x24 ++ .long .LASF48 ++ .byte 0x3 ++ .value 0x167 ++ .byte 0x7 ++ .long .LASF50 ++ .long 0x440 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x24 ++ .long .LASF51 ++ .byte 0x3 ++ .value 0x170 ++ .byte 0x7 ++ .long .LASF52 ++ .long 0x461 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x24 ++ .long .LASF53 ++ .byte 0x3 ++ .value 0x183 ++ .byte 0x7 ++ .long .LASF54 ++ .long 0x482 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x482 ++ .uleb128 0x1 ++ .long 0x482 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF55 ++ .byte 0x3 ++ .byte 0x62 ++ .byte 0x44 ++ .long 0x31f5 ++ .byte 0x1 ++ .uleb128 0x24 ++ .long .LASF53 ++ .byte 0x3 ++ .value 0x187 ++ .byte 0x7 ++ .long .LASF56 ++ .long 0x4b0 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x4b0 ++ .uleb128 0x1 ++ .long 0x4b0 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF57 ++ .byte 0x3 ++ .byte 0x64 ++ .byte 0x8 ++ .long 0x3434 ++ .byte 0x1 ++ .uleb128 0x24 ++ .long .LASF53 ++ .byte 0x3 ++ .value 0x18c ++ .byte 0x7 ++ .long .LASF58 ++ .long 0x4de ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x24 ++ .long .LASF53 ++ .byte 0x3 ++ .value 0x190 ++ .byte 0x7 ++ .long .LASF59 ++ .long 0x4ff ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF60 ++ .byte 0x3 ++ .value 0x195 ++ .byte 0x7 ++ .long .LASF61 ++ .long 0x39eb ++ .long 0x51f ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x2b ++ .long .LASF62 ++ .byte 0x3 ++ .value 0x1a2 ++ .byte 0x7 ++ .long .LASF63 ++ .long 0x534 ++ .long 0x53f ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x2b ++ .long .LASF64 ++ .byte 0x3 ++ .value 0x1a5 ++ .byte 0x7 ++ .long .LASF65 ++ .long 0x554 ++ .long 0x56e ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x2b ++ .long .LASF66 ++ .byte 0x3 ++ .value 0x1a9 ++ .byte 0x7 ++ .long .LASF67 ++ .long 0x583 ++ .long 0x593 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x1b3 ++ .byte 0x7 ++ .long .LASF69 ++ .byte 0x1 ++ .long 0x5a9 ++ .long 0x5af ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x3e ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x1bc ++ .byte 0x7 ++ .long .LASF84 ++ .byte 0x1 ++ .long 0x5c5 ++ .long 0x5d0 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x1c4 ++ .byte 0x7 ++ .long .LASF70 ++ .byte 0x1 ++ .long 0x5e6 ++ .long 0x5f1 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x1d1 ++ .byte 0x7 ++ .long .LASF71 ++ .byte 0x1 ++ .long 0x607 ++ .long 0x61c ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x1e0 ++ .byte 0x7 ++ .long .LASF72 ++ .byte 0x1 ++ .long 0x632 ++ .long 0x647 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x1f0 ++ .byte 0x7 ++ .long .LASF73 ++ .byte 0x1 ++ .long 0x65d ++ .long 0x677 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x202 ++ .byte 0x7 ++ .long .LASF74 ++ .byte 0x1 ++ .long 0x68d ++ .long 0x6a2 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x211 ++ .byte 0x7 ++ .long .LASF75 ++ .byte 0x1 ++ .long 0x6b8 ++ .long 0x6c8 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x220 ++ .byte 0x7 ++ .long .LASF76 ++ .byte 0x1 ++ .long 0x6de ++ .long 0x6f3 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x22c ++ .byte 0x7 ++ .long .LASF77 ++ .byte 0x1 ++ .long 0x709 ++ .long 0x714 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x513e ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x247 ++ .byte 0x7 ++ .long .LASF78 ++ .byte 0x1 ++ .long 0x72a ++ .long 0x73a ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x2891 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x24b ++ .byte 0x7 ++ .long .LASF79 ++ .byte 0x1 ++ .long 0x750 ++ .long 0x760 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF68 ++ .byte 0x3 ++ .value 0x24f ++ .byte 0x7 ++ .long .LASF80 ++ .byte 0x1 ++ .long 0x776 ++ .long 0x786 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x513e ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF81 ++ .byte 0x3 ++ .value 0x295 ++ .byte 0x7 ++ .long .LASF82 ++ .byte 0x1 ++ .long 0x79c ++ .long 0x7a7 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF83 ++ .byte 0x3 ++ .value 0x29d ++ .byte 0x7 ++ .long .LASF85 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x7c1 ++ .long 0x7cc ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF83 ++ .byte 0x3 ++ .value 0x2c4 ++ .byte 0x7 ++ .long .LASF86 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x7e6 ++ .long 0x7f1 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF83 ++ .byte 0x3 ++ .value 0x2cf ++ .byte 0x7 ++ .long .LASF87 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x80b ++ .long 0x816 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF83 ++ .byte 0x3 ++ .value 0x2e0 ++ .byte 0x7 ++ .long .LASF88 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x830 ++ .long 0x83b ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x513e ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF83 ++ .byte 0x3 ++ .value 0x31f ++ .byte 0x7 ++ .long .LASF89 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x855 ++ .long 0x860 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x2891 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF90 ++ .byte 0x3 ++ .value 0x33e ++ .byte 0x7 ++ .long .LASF91 ++ .long 0x482 ++ .byte 0x1 ++ .long 0x87a ++ .long 0x880 ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF90 ++ .byte 0x3 ++ .value 0x346 ++ .byte 0x7 ++ .long .LASF92 ++ .long 0x4b0 ++ .byte 0x1 ++ .long 0x89a ++ .long 0x8a0 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x31 ++ .string "end" ++ .byte 0x3 ++ .value 0x34e ++ .byte 0x7 ++ .long .LASF93 ++ .long 0x482 ++ .byte 0x1 ++ .long 0x8ba ++ .long 0x8c0 ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x31 ++ .string "end" ++ .byte 0x3 ++ .value 0x356 ++ .byte 0x7 ++ .long .LASF94 ++ .long 0x4b0 ++ .byte 0x1 ++ .long 0x8da ++ .long 0x8e0 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF95 ++ .byte 0x3 ++ .byte 0x66 ++ .byte 0x30 ++ .long 0x2989 ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF96 ++ .byte 0x3 ++ .value 0x35f ++ .byte 0x7 ++ .long .LASF97 ++ .long 0x8e0 ++ .byte 0x1 ++ .long 0x907 ++ .long 0x90d ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF98 ++ .byte 0x3 ++ .byte 0x65 ++ .byte 0x35 ++ .long 0x298e ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF96 ++ .byte 0x3 ++ .value 0x368 ++ .byte 0x7 ++ .long .LASF99 ++ .long 0x90d ++ .byte 0x1 ++ .long 0x934 ++ .long 0x93a ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF100 ++ .byte 0x3 ++ .value 0x371 ++ .byte 0x7 ++ .long .LASF101 ++ .long 0x8e0 ++ .byte 0x1 ++ .long 0x954 ++ .long 0x95a ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF100 ++ .byte 0x3 ++ .value 0x37a ++ .byte 0x7 ++ .long .LASF102 ++ .long 0x90d ++ .byte 0x1 ++ .long 0x974 ++ .long 0x97a ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF103 ++ .byte 0x3 ++ .value 0x383 ++ .byte 0x7 ++ .long .LASF104 ++ .long 0x4b0 ++ .byte 0x1 ++ .long 0x994 ++ .long 0x99a ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF105 ++ .byte 0x3 ++ .value 0x38b ++ .byte 0x7 ++ .long .LASF106 ++ .long 0x4b0 ++ .byte 0x1 ++ .long 0x9b4 ++ .long 0x9ba ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF107 ++ .byte 0x3 ++ .value 0x394 ++ .byte 0x7 ++ .long .LASF108 ++ .long 0x90d ++ .byte 0x1 ++ .long 0x9d4 ++ .long 0x9da ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF109 ++ .byte 0x3 ++ .value 0x39d ++ .byte 0x7 ++ .long .LASF110 ++ .long 0x90d ++ .byte 0x1 ++ .long 0x9f4 ++ .long 0x9fa ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF111 ++ .byte 0x3 ++ .value 0x3a6 ++ .byte 0x7 ++ .long .LASF112 ++ .long 0x117 ++ .byte 0x1 ++ .long 0xa14 ++ .long 0xa1a ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF113 ++ .byte 0x3 ++ .value 0x3ac ++ .byte 0x7 ++ .long .LASF114 ++ .long 0x117 ++ .byte 0x1 ++ .long 0xa34 ++ .long 0xa3a ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF115 ++ .byte 0x3 ++ .value 0x3b1 ++ .byte 0x7 ++ .long .LASF116 ++ .long 0x117 ++ .byte 0x1 ++ .long 0xa54 ++ .long 0xa5a ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF117 ++ .byte 0x3 ++ .value 0x3bf ++ .byte 0x7 ++ .long .LASF118 ++ .byte 0x1 ++ .long 0xa70 ++ .long 0xa80 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF117 ++ .byte 0x3 ++ .value 0x3cc ++ .byte 0x7 ++ .long .LASF119 ++ .byte 0x1 ++ .long 0xa96 ++ .long 0xaa1 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF120 ++ .byte 0x3 ++ .value 0x3d2 ++ .byte 0x7 ++ .long .LASF121 ++ .byte 0x1 ++ .long 0xab7 ++ .long 0xabd ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF122 ++ .byte 0x3 ++ .value 0x3e5 ++ .byte 0x7 ++ .long .LASF123 ++ .long 0x117 ++ .byte 0x1 ++ .long 0xad7 ++ .long 0xadd ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF124 ++ .byte 0x3 ++ .value 0x3fd ++ .byte 0x7 ++ .long .LASF125 ++ .byte 0x1 ++ .long 0xaf3 ++ .long 0xafe ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF126 ++ .byte 0x3 ++ .value 0x403 ++ .byte 0x7 ++ .long .LASF127 ++ .byte 0x1 ++ .long 0xb14 ++ .long 0xb1a ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF128 ++ .byte 0x3 ++ .value 0x40b ++ .byte 0x7 ++ .long .LASF129 ++ .long 0x448e ++ .byte 0x1 ++ .long 0xb34 ++ .long 0xb3a ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF130 ++ .byte 0x3 ++ .byte 0x5f ++ .byte 0x37 ++ .long 0x31bc ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF131 ++ .byte 0x3 ++ .value 0x41a ++ .byte 0x7 ++ .long .LASF132 ++ .long 0xb3a ++ .byte 0x1 ++ .long 0xb61 ++ .long 0xb6c ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF133 ++ .byte 0x3 ++ .byte 0x5e ++ .byte 0x32 ++ .long 0x31b0 ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF131 ++ .byte 0x3 ++ .value 0x42b ++ .byte 0x7 ++ .long .LASF134 ++ .long 0xb6c ++ .byte 0x1 ++ .long 0xb93 ++ .long 0xb9e ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x31 ++ .string "at" ++ .byte 0x3 ++ .value 0x440 ++ .byte 0x7 ++ .long .LASF135 ++ .long 0xb3a ++ .byte 0x1 ++ .long 0xbb7 ++ .long 0xbc2 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x31 ++ .string "at" ++ .byte 0x3 ++ .value 0x455 ++ .byte 0x7 ++ .long .LASF136 ++ .long 0xb6c ++ .byte 0x1 ++ .long 0xbdb ++ .long 0xbe6 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF137 ++ .byte 0x3 ++ .value 0x465 ++ .byte 0x7 ++ .long .LASF138 ++ .long 0xb6c ++ .byte 0x1 ++ .long 0xc00 ++ .long 0xc06 ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF137 ++ .byte 0x3 ++ .value 0x470 ++ .byte 0x7 ++ .long .LASF139 ++ .long 0xb3a ++ .byte 0x1 ++ .long 0xc20 ++ .long 0xc26 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF140 ++ .byte 0x3 ++ .value 0x47b ++ .byte 0x7 ++ .long .LASF141 ++ .long 0xb6c ++ .byte 0x1 ++ .long 0xc40 ++ .long 0xc46 ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF140 ++ .byte 0x3 ++ .value 0x486 ++ .byte 0x7 ++ .long .LASF142 ++ .long 0xb3a ++ .byte 0x1 ++ .long 0xc60 ++ .long 0xc66 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF143 ++ .byte 0x3 ++ .value 0x494 ++ .byte 0x7 ++ .long .LASF144 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xc80 ++ .long 0xc8b ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF143 ++ .byte 0x3 ++ .value 0x49d ++ .byte 0x7 ++ .long .LASF145 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xca5 ++ .long 0xcb0 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF143 ++ .byte 0x3 ++ .value 0x4a6 ++ .byte 0x7 ++ .long .LASF146 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xcca ++ .long 0xcd5 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF143 ++ .byte 0x3 ++ .value 0x4b3 ++ .byte 0x7 ++ .long .LASF147 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xcef ++ .long 0xcfa ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x2891 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF148 ++ .byte 0x3 ++ .value 0x4c9 ++ .byte 0x7 ++ .long .LASF149 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xd14 ++ .long 0xd1f ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF148 ++ .byte 0x3 ++ .value 0x4da ++ .byte 0x7 ++ .long .LASF150 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xd39 ++ .long 0xd4e ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF148 ++ .byte 0x3 ++ .value 0x4e6 ++ .byte 0x7 ++ .long .LASF151 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xd68 ++ .long 0xd78 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF148 ++ .byte 0x3 ++ .value 0x4f3 ++ .byte 0x7 ++ .long .LASF152 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xd92 ++ .long 0xd9d ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF148 ++ .byte 0x3 ++ .value 0x504 ++ .byte 0x7 ++ .long .LASF153 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xdb7 ++ .long 0xdc7 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF148 ++ .byte 0x3 ++ .value 0x50e ++ .byte 0x7 ++ .long .LASF154 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xde1 ++ .long 0xdec ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x2891 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF155 ++ .byte 0x3 ++ .value 0x549 ++ .byte 0x7 ++ .long .LASF156 ++ .byte 0x1 ++ .long 0xe02 ++ .long 0xe0d ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF157 ++ .byte 0x3 ++ .value 0x558 ++ .byte 0x7 ++ .long .LASF158 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xe27 ++ .long 0xe32 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF157 ++ .byte 0x3 ++ .value 0x568 ++ .byte 0x7 ++ .long .LASF159 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xe4c ++ .long 0xe57 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x513e ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF157 ++ .byte 0x3 ++ .value 0x57f ++ .byte 0x7 ++ .long .LASF160 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xe71 ++ .long 0xe86 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF157 ++ .byte 0x3 ++ .value 0x58f ++ .byte 0x7 ++ .long .LASF161 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xea0 ++ .long 0xeb0 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF157 ++ .byte 0x3 ++ .value 0x59f ++ .byte 0x7 ++ .long .LASF162 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xeca ++ .long 0xed5 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF157 ++ .byte 0x3 ++ .value 0x5b0 ++ .byte 0x7 ++ .long .LASF163 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xeef ++ .long 0xeff ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF157 ++ .byte 0x3 ++ .value 0x5cc ++ .byte 0x7 ++ .long .LASF164 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xf19 ++ .long 0xf24 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x2891 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x602 ++ .byte 0x7 ++ .long .LASF166 ++ .long 0x482 ++ .byte 0x1 ++ .long 0xf3e ++ .long 0xf53 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x4b0 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x650 ++ .byte 0x7 ++ .long .LASF167 ++ .long 0x482 ++ .byte 0x1 ++ .long 0xf6d ++ .long 0xf7d ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x4b0 ++ .uleb128 0x1 ++ .long 0x2891 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x66b ++ .byte 0x7 ++ .long .LASF168 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xf97 ++ .long 0xfa7 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x682 ++ .byte 0x7 ++ .long .LASF169 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xfc1 ++ .long 0xfdb ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x699 ++ .byte 0x7 ++ .long .LASF170 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0xff5 ++ .long 0x100a ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x6ac ++ .byte 0x7 ++ .long .LASF171 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1024 ++ .long 0x1034 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x6c4 ++ .byte 0x7 ++ .long .LASF172 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x104e ++ .long 0x1063 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF165 ++ .byte 0x3 ++ .value 0x6d6 ++ .byte 0x7 ++ .long .LASF173 ++ .long 0x482 ++ .byte 0x1 ++ .long 0x107d ++ .long 0x108d ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF174 ++ .byte 0x3 ++ .byte 0x70 ++ .byte 0x1e ++ .long 0x4b0 ++ .byte 0x2 ++ .uleb128 0x4 ++ .long .LASF175 ++ .byte 0x3 ++ .value 0x713 ++ .byte 0x7 ++ .long .LASF176 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x10b4 ++ .long 0x10c4 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF175 ++ .byte 0x3 ++ .value 0x726 ++ .byte 0x7 ++ .long .LASF177 ++ .long 0x482 ++ .byte 0x1 ++ .long 0x10de ++ .long 0x10e9 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF175 ++ .byte 0x3 ++ .value 0x739 ++ .byte 0x7 ++ .long .LASF178 ++ .long 0x482 ++ .byte 0x1 ++ .long 0x1103 ++ .long 0x1113 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF179 ++ .byte 0x3 ++ .value 0x74c ++ .byte 0x7 ++ .long .LASF180 ++ .byte 0x1 ++ .long 0x1129 ++ .long 0x112f ++ .uleb128 0x2 ++ .long 0x5110 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x765 ++ .byte 0x7 ++ .long .LASF182 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1149 ++ .long 0x115e ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x77b ++ .byte 0x7 ++ .long .LASF183 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1178 ++ .long 0x1197 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x794 ++ .byte 0x7 ++ .long .LASF184 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x11b1 ++ .long 0x11cb ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x7ad ++ .byte 0x7 ++ .long .LASF185 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x11e5 ++ .long 0x11fa ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x7c5 ++ .byte 0x7 ++ .long .LASF186 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1214 ++ .long 0x122e ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x7d7 ++ .byte 0x7 ++ .long .LASF187 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1248 ++ .long 0x125d ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x7eb ++ .byte 0x7 ++ .long .LASF188 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1277 ++ .long 0x1291 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x801 ++ .byte 0x7 ++ .long .LASF189 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x12ab ++ .long 0x12c0 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x816 ++ .byte 0x7 ++ .long .LASF190 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x12da ++ .long 0x12f4 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x84f ++ .byte 0x7 ++ .long .LASF191 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x130e ++ .long 0x1328 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x85a ++ .byte 0x7 ++ .long .LASF192 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1342 ++ .long 0x135c ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x865 ++ .byte 0x7 ++ .long .LASF193 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1376 ++ .long 0x1390 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x482 ++ .uleb128 0x1 ++ .long 0x482 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x870 ++ .byte 0x7 ++ .long .LASF194 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x13aa ++ .long 0x13c4 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x108d ++ .uleb128 0x1 ++ .long 0x4b0 ++ .uleb128 0x1 ++ .long 0x4b0 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF181 ++ .byte 0x3 ++ .value 0x889 ++ .byte 0x15 ++ .long .LASF195 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x13de ++ .long 0x13f3 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x4b0 ++ .uleb128 0x1 ++ .long 0x4b0 ++ .uleb128 0x1 ++ .long 0x2891 ++ .byte 0 ++ .uleb128 0x27 ++ .long .LASF196 ++ .byte 0x3 ++ .value 0x8d3 ++ .byte 0x7 ++ .long .LASF197 ++ .long 0x5144 ++ .long 0x140c ++ .long 0x1426 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x27 ++ .long .LASF198 ++ .byte 0x3 ++ .value 0x8d7 ++ .byte 0x7 ++ .long .LASF199 ++ .long 0x5144 ++ .long 0x143f ++ .long 0x1459 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x27 ++ .long .LASF200 ++ .byte 0x3 ++ .value 0x8db ++ .byte 0x7 ++ .long .LASF201 ++ .long 0x5144 ++ .long 0x1472 ++ .long 0x1482 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF202 ++ .byte 0x3 ++ .value 0x8ec ++ .byte 0x7 ++ .long .LASF203 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x149c ++ .long 0x14b1 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF204 ++ .byte 0x3 ++ .value 0x8f6 ++ .byte 0x7 ++ .long .LASF205 ++ .byte 0x1 ++ .long 0x14c7 ++ .long 0x14d2 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x5144 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF206 ++ .byte 0x3 ++ .value 0x900 ++ .byte 0x7 ++ .long .LASF207 ++ .long 0x3bba ++ .byte 0x1 ++ .long 0x14ec ++ .long 0x14f2 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF208 ++ .byte 0x3 ++ .value 0x90c ++ .byte 0x7 ++ .long .LASF209 ++ .long 0x3bba ++ .byte 0x1 ++ .long 0x150c ++ .long 0x1512 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF210 ++ .byte 0x3 ++ .value 0x91f ++ .byte 0x7 ++ .long .LASF211 ++ .long 0x302 ++ .byte 0x1 ++ .long 0x152c ++ .long 0x1532 ++ .uleb128 0x2 ++ .long 0x511b ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF212 ++ .byte 0x3 ++ .value 0x92f ++ .byte 0x7 ++ .long .LASF213 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x154c ++ .long 0x1561 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF212 ++ .byte 0x3 ++ .value 0x93d ++ .byte 0x7 ++ .long .LASF214 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x157b ++ .long 0x158b ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF212 ++ .byte 0x3 ++ .value 0x95d ++ .byte 0x7 ++ .long .LASF215 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x15a5 ++ .long 0x15b5 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF212 ++ .byte 0x3 ++ .value 0x96e ++ .byte 0x7 ++ .long .LASF216 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x15cf ++ .long 0x15df ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF217 ++ .byte 0x3 ++ .value 0x97b ++ .byte 0x7 ++ .long .LASF218 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x15f9 ++ .long 0x1609 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF217 ++ .byte 0x3 ++ .value 0x99d ++ .byte 0x7 ++ .long .LASF219 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1623 ++ .long 0x1638 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF217 ++ .byte 0x3 ++ .value 0x9ab ++ .byte 0x7 ++ .long .LASF220 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1652 ++ .long 0x1662 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF217 ++ .byte 0x3 ++ .value 0x9bc ++ .byte 0x7 ++ .long .LASF221 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x167c ++ .long 0x168c ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF222 ++ .byte 0x3 ++ .value 0x9ca ++ .byte 0x7 ++ .long .LASF223 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x16a6 ++ .long 0x16b6 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF222 ++ .byte 0x3 ++ .value 0x9ed ++ .byte 0x7 ++ .long .LASF224 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x16d0 ++ .long 0x16e5 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF222 ++ .byte 0x3 ++ .value 0x9fb ++ .byte 0x7 ++ .long .LASF225 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x16ff ++ .long 0x170f ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF222 ++ .byte 0x3 ++ .value 0xa0f ++ .byte 0x7 ++ .long .LASF226 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1729 ++ .long 0x1739 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF227 ++ .byte 0x3 ++ .value 0xa1e ++ .byte 0x7 ++ .long .LASF228 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1753 ++ .long 0x1763 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF227 ++ .byte 0x3 ++ .value 0xa41 ++ .byte 0x7 ++ .long .LASF229 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x177d ++ .long 0x1792 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF227 ++ .byte 0x3 ++ .value 0xa4f ++ .byte 0x7 ++ .long .LASF230 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x17ac ++ .long 0x17bc ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF227 ++ .byte 0x3 ++ .value 0xa63 ++ .byte 0x7 ++ .long .LASF231 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x17d6 ++ .long 0x17e6 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF232 ++ .byte 0x3 ++ .value 0xa71 ++ .byte 0x7 ++ .long .LASF233 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1800 ++ .long 0x1810 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF232 ++ .byte 0x3 ++ .value 0xa94 ++ .byte 0x7 ++ .long .LASF234 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x182a ++ .long 0x183f ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF232 ++ .byte 0x3 ++ .value 0xaa2 ++ .byte 0x7 ++ .long .LASF235 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1859 ++ .long 0x1869 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF232 ++ .byte 0x3 ++ .value 0xab4 ++ .byte 0x7 ++ .long .LASF236 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1883 ++ .long 0x1893 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF237 ++ .byte 0x3 ++ .value 0xac3 ++ .byte 0x7 ++ .long .LASF238 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x18ad ++ .long 0x18bd ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF237 ++ .byte 0x3 ++ .value 0xae6 ++ .byte 0x7 ++ .long .LASF239 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x18d7 ++ .long 0x18ec ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF237 ++ .byte 0x3 ++ .value 0xaf4 ++ .byte 0x7 ++ .long .LASF240 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1906 ++ .long 0x1916 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF237 ++ .byte 0x3 ++ .value 0xb06 ++ .byte 0x7 ++ .long .LASF241 ++ .long 0x117 ++ .byte 0x1 ++ .long 0x1930 ++ .long 0x1940 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF242 ++ .byte 0x3 ++ .value 0xb16 ++ .byte 0x7 ++ .long .LASF243 ++ .long 0x45 ++ .byte 0x1 ++ .long 0x195a ++ .long 0x196a ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF244 ++ .byte 0x3 ++ .value 0xb29 ++ .byte 0x7 ++ .long .LASF245 ++ .long 0x39eb ++ .byte 0x1 ++ .long 0x1984 ++ .long 0x198f ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF244 ++ .byte 0x3 ++ .value 0xb86 ++ .byte 0x7 ++ .long .LASF246 ++ .long 0x39eb ++ .byte 0x1 ++ .long 0x19a9 ++ .long 0x19be ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF244 ++ .byte 0x3 ++ .value 0xba0 ++ .byte 0x7 ++ .long .LASF247 ++ .long 0x39eb ++ .byte 0x1 ++ .long 0x19d8 ++ .long 0x19f7 ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x5138 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF244 ++ .byte 0x3 ++ .value 0xbb2 ++ .byte 0x7 ++ .long .LASF248 ++ .long 0x39eb ++ .byte 0x1 ++ .long 0x1a11 ++ .long 0x1a1c ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF244 ++ .byte 0x3 ++ .value 0xbca ++ .byte 0x7 ++ .long .LASF249 ++ .long 0x39eb ++ .byte 0x1 ++ .long 0x1a36 ++ .long 0x1a4b ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF244 ++ .byte 0x3 ++ .value 0xbe5 ++ .byte 0x7 ++ .long .LASF250 ++ .long 0x39eb ++ .byte 0x1 ++ .long 0x1a65 ++ .long 0x1a7f ++ .uleb128 0x2 ++ .long 0x511b ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x117 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF251 ++ .byte 0x3 ++ .value 0x5c2 ++ .byte 0x9 ++ .long .LASF252 ++ .long 0x5144 ++ .byte 0x1 ++ .long 0x1aa2 ++ .long 0x1ab2 ++ .uleb128 0xc ++ .long .LASF253 ++ .long 0x3f04 ++ .uleb128 0x2 ++ .long 0x5110 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF254 ++ .long 0x39df ++ .uleb128 0x25 ++ .long .LASF255 ++ .long 0x221e ++ .uleb128 0x25 ++ .long .LASF256 ++ .long 0x250f ++ .byte 0 ++ .uleb128 0xa ++ .long 0x45 ++ .uleb128 0x2c ++ .long .LASF260 ++ .long 0x1b66 ++ .uleb128 0x15 ++ .long .LASF257 ++ .byte 0x2 ++ .byte 0x50 ++ .byte 0x39 ++ .long 0x45 ++ .byte 0x1 ++ .uleb128 0x49 ++ .string "str" ++ .byte 0x2 ++ .byte 0xb2 ++ .byte 0x7 ++ .long .LASF364 ++ .long 0x1adc ++ .byte 0x1 ++ .long 0x1b02 ++ .long 0x1b08 ++ .uleb128 0x2 ++ .long 0x595b ++ .byte 0 ++ .uleb128 0x62 ++ .long .LASF258 ++ .byte 0x2 ++ .byte 0x6f ++ .byte 0x7 ++ .long .LASF281 ++ .byte 0x1 ++ .long 0x1b1d ++ .long 0x1b28 ++ .uleb128 0x2 ++ .long 0x51d6 ++ .uleb128 0x1 ++ .long 0x2a28 ++ .byte 0 ++ .uleb128 0x63 ++ .long .LASF259 ++ .long .LASF925 ++ .byte 0x1 ++ .long 0x1ad3 ++ .byte 0x1 ++ .long 0x1b3f ++ .long 0x1b4a ++ .uleb128 0x2 ++ .long 0x51d6 ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF254 ++ .long 0x39df ++ .uleb128 0x25 ++ .long .LASF255 ++ .long 0x221e ++ .uleb128 0x25 ++ .long .LASF256 ++ .long 0x250f ++ .byte 0 ++ .uleb128 0xa ++ .long 0x1ad3 ++ .uleb128 0x2c ++ .long .LASF261 ++ .long 0x1c0f ++ .uleb128 0x28 ++ .long .LASF257 ++ .byte 0x2 ++ .value 0x234 ++ .byte 0x36 ++ .long 0x45 ++ .byte 0x1 ++ .uleb128 0x31 ++ .string "str" ++ .byte 0x2 ++ .value 0x2a5 ++ .byte 0x7 ++ .long .LASF262 ++ .long 0x1b74 ++ .byte 0x1 ++ .long 0x1b9c ++ .long 0x1ba2 ++ .uleb128 0x2 ++ .long 0x5d4b ++ .byte 0 ++ .uleb128 0x4a ++ .long .LASF287 ++ .byte 0x2 ++ .value 0x275 ++ .byte 0x7 ++ .long .LASF428 ++ .byte 0x1 ++ .long 0x1b6b ++ .byte 0x1 ++ .long 0x1bbd ++ .long 0x1bcd ++ .uleb128 0x2 ++ .long 0x5d6e ++ .uleb128 0x2 ++ .long 0x39eb ++ .uleb128 0x2 ++ .long 0x5a24 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF263 ++ .byte 0x2 ++ .value 0x247 ++ .byte 0x7 ++ .long .LASF264 ++ .byte 0x1 ++ .long 0x1be3 ++ .long 0x1bf3 ++ .uleb128 0x2 ++ .long 0x5d6e ++ .uleb128 0x2 ++ .long 0x39eb ++ .uleb128 0x2 ++ .long 0x5a24 ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF254 ++ .long 0x39df ++ .uleb128 0x25 ++ .long .LASF255 ++ .long 0x221e ++ .uleb128 0x25 ++ .long .LASF256 ++ .long 0x250f ++ .byte 0 ++ .uleb128 0xa ++ .long 0x1b6b ++ .byte 0 ++ .uleb128 0x38 ++ .byte 0x7 ++ .value 0x118 ++ .byte 0x41 ++ .long 0x38 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x40 ++ .byte 0xb ++ .long 0x3a03 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x8d ++ .byte 0xb ++ .long 0x3979 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x8f ++ .byte 0xb ++ .long 0x3bc5 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x90 ++ .byte 0xb ++ .long 0x3bdc ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x91 ++ .byte 0xb ++ .long 0x3bf9 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x92 ++ .byte 0xb ++ .long 0x3c2c ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x93 ++ .byte 0xb ++ .long 0x3c48 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x94 ++ .byte 0xb ++ .long 0x3c6a ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x95 ++ .byte 0xb ++ .long 0x3c86 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x96 ++ .byte 0xb ++ .long 0x3ca3 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x97 ++ .byte 0xb ++ .long 0x3cc4 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x98 ++ .byte 0xb ++ .long 0x3cdb ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x99 ++ .byte 0xb ++ .long 0x3ce8 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x9a ++ .byte 0xb ++ .long 0x3d0f ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x9b ++ .byte 0xb ++ .long 0x3d35 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x9c ++ .byte 0xb ++ .long 0x3d52 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x9d ++ .byte 0xb ++ .long 0x3d7e ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0x9e ++ .byte 0xb ++ .long 0x3d9a ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xa0 ++ .byte 0xb ++ .long 0x3db1 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xa2 ++ .byte 0xb ++ .long 0x3dd3 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xa3 ++ .byte 0xb ++ .long 0x3df4 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xa4 ++ .byte 0xb ++ .long 0x3e10 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xa6 ++ .byte 0xb ++ .long 0x3e37 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xa9 ++ .byte 0xb ++ .long 0x3e5c ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xac ++ .byte 0xb ++ .long 0x3e82 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xae ++ .byte 0xb ++ .long 0x3ea7 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb0 ++ .byte 0xb ++ .long 0x3ec3 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb2 ++ .byte 0xb ++ .long 0x3ee3 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb3 ++ .byte 0xb ++ .long 0x3f0f ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb4 ++ .byte 0xb ++ .long 0x3f2a ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb5 ++ .byte 0xb ++ .long 0x3f45 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb6 ++ .byte 0xb ++ .long 0x3f60 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb7 ++ .byte 0xb ++ .long 0x3f7b ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb8 ++ .byte 0xb ++ .long 0x3f96 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xb9 ++ .byte 0xb ++ .long 0x4063 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xba ++ .byte 0xb ++ .long 0x4079 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xbb ++ .byte 0xb ++ .long 0x409a ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xbc ++ .byte 0xb ++ .long 0x40ba ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xbd ++ .byte 0xb ++ .long 0x40da ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xbe ++ .byte 0xb ++ .long 0x4106 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xbf ++ .byte 0xb ++ .long 0x4121 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc1 ++ .byte 0xb ++ .long 0x4143 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc3 ++ .byte 0xb ++ .long 0x415f ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc4 ++ .byte 0xb ++ .long 0x417f ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc5 ++ .byte 0xb ++ .long 0x41ac ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc6 ++ .byte 0xb ++ .long 0x41cd ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc7 ++ .byte 0xb ++ .long 0x41ed ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc8 ++ .byte 0xb ++ .long 0x4204 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xc9 ++ .byte 0xb ++ .long 0x4225 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xca ++ .byte 0xb ++ .long 0x4245 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xcb ++ .byte 0xb ++ .long 0x4265 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xcc ++ .byte 0xb ++ .long 0x4285 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xcd ++ .byte 0xb ++ .long 0x429d ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xce ++ .byte 0xb ++ .long 0x42b9 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xce ++ .byte 0xb ++ .long 0x42d8 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xcf ++ .byte 0xb ++ .long 0x42f7 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xcf ++ .byte 0xb ++ .long 0x4316 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xd0 ++ .byte 0xb ++ .long 0x4335 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xd0 ++ .byte 0xb ++ .long 0x4354 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xd1 ++ .byte 0xb ++ .long 0x4373 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xd1 ++ .byte 0xb ++ .long 0x4392 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xd2 ++ .byte 0xb ++ .long 0x43b1 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xd2 ++ .byte 0xb ++ .long 0x43d5 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x10b ++ .byte 0x16 ++ .long 0x43f9 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x10c ++ .byte 0x16 ++ .long 0x4415 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x10d ++ .byte 0x16 ++ .long 0x443d ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x11b ++ .byte 0xe ++ .long 0x4143 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x11e ++ .byte 0xe ++ .long 0x3e37 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x121 ++ .byte 0xe ++ .long 0x3e82 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x124 ++ .byte 0xe ++ .long 0x3ec3 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x128 ++ .byte 0xe ++ .long 0x43f9 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x129 ++ .byte 0xe ++ .long 0x4415 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x12a ++ .byte 0xe ++ .long 0x443d ++ .uleb128 0x13 ++ .long .LASF265 ++ .byte 0x1 ++ .byte 0x5 ++ .byte 0x5b ++ .byte 0xa ++ .long 0x1e95 ++ .uleb128 0x4b ++ .long .LASF265 ++ .byte 0x5 ++ .byte 0x5e ++ .byte 0xe ++ .long .LASF266 ++ .byte 0x1 ++ .long 0x1e8e ++ .uleb128 0x2 ++ .long 0x446a ++ .byte 0 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x1e70 ++ .uleb128 0x64 ++ .long .LASF312 ++ .byte 0x5 ++ .byte 0x62 ++ .byte 0x1a ++ .long .LASF926 ++ .long 0x1e95 ++ .uleb128 0x4c ++ .long .LASF435 ++ .byte 0x6 ++ .byte 0x34 ++ .byte 0xd ++ .long 0x208d ++ .uleb128 0x30 ++ .long .LASF268 ++ .byte 0x8 ++ .byte 0x6 ++ .byte 0x4f ++ .byte 0xb ++ .long 0x207f ++ .uleb128 0x6 ++ .long .LASF269 ++ .byte 0x6 ++ .byte 0x51 ++ .byte 0xd ++ .long 0x3977 ++ .byte 0 ++ .uleb128 0x65 ++ .long .LASF268 ++ .byte 0x6 ++ .byte 0x53 ++ .byte 0x10 ++ .long .LASF270 ++ .long 0x1ee4 ++ .long 0x1eef ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x1 ++ .long 0x3977 ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF271 ++ .byte 0x6 ++ .byte 0x55 ++ .byte 0xc ++ .long .LASF272 ++ .long 0x1f03 ++ .long 0x1f09 ++ .uleb128 0x2 ++ .long 0x4470 ++ .byte 0 ++ .uleb128 0x20 ++ .long .LASF273 ++ .byte 0x6 ++ .byte 0x56 ++ .byte 0xc ++ .long .LASF274 ++ .long 0x1f1d ++ .long 0x1f23 ++ .uleb128 0x2 ++ .long 0x4470 ++ .byte 0 ++ .uleb128 0x22 ++ .long .LASF275 ++ .byte 0x6 ++ .byte 0x58 ++ .byte 0xd ++ .long .LASF276 ++ .long 0x3977 ++ .long 0x1f3b ++ .long 0x1f41 ++ .uleb128 0x2 ++ .long 0x4476 ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF268 ++ .byte 0x6 ++ .byte 0x60 ++ .byte 0x7 ++ .long .LASF277 ++ .byte 0x1 ++ .long 0x1f56 ++ .long 0x1f5c ++ .uleb128 0x2 ++ .long 0x4470 ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF268 ++ .byte 0x6 ++ .byte 0x62 ++ .byte 0x7 ++ .long .LASF278 ++ .byte 0x1 ++ .long 0x1f71 ++ .long 0x1f7c ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x1 ++ .long 0x447c ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF268 ++ .byte 0x6 ++ .byte 0x65 ++ .byte 0x7 ++ .long .LASF279 ++ .byte 0x1 ++ .long 0x1f91 ++ .long 0x1f9c ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x1 ++ .long 0x20ab ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF268 ++ .byte 0x6 ++ .byte 0x69 ++ .byte 0x7 ++ .long .LASF280 ++ .byte 0x1 ++ .long 0x1fb1 ++ .long 0x1fbc ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x1 ++ .long 0x4482 ++ .byte 0 ++ .uleb128 0x29 ++ .long .LASF83 ++ .byte 0x6 ++ .byte 0x76 ++ .byte 0x7 ++ .long .LASF282 ++ .long 0x4488 ++ .byte 0x1 ++ .long 0x1fd5 ++ .long 0x1fe0 ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x1 ++ .long 0x447c ++ .byte 0 ++ .uleb128 0x29 ++ .long .LASF83 ++ .byte 0x6 ++ .byte 0x7a ++ .byte 0x7 ++ .long .LASF283 ++ .long 0x4488 ++ .byte 0x1 ++ .long 0x1ff9 ++ .long 0x2004 ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x1 ++ .long 0x4482 ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF284 ++ .byte 0x6 ++ .byte 0x81 ++ .byte 0x7 ++ .long .LASF285 ++ .byte 0x1 ++ .long 0x2019 ++ .long 0x2024 ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF204 ++ .byte 0x6 ++ .byte 0x84 ++ .byte 0x7 ++ .long .LASF286 ++ .byte 0x1 ++ .long 0x2039 ++ .long 0x2044 ++ .uleb128 0x2 ++ .long 0x4470 ++ .uleb128 0x1 ++ .long 0x4488 ++ .byte 0 ++ .uleb128 0x66 ++ .long .LASF288 ++ .byte 0x6 ++ .byte 0x90 ++ .byte 0x10 ++ .long .LASF341 ++ .long 0x448e ++ .byte 0x1 ++ .long 0x205d ++ .long 0x2063 ++ .uleb128 0x2 ++ .long 0x4476 ++ .byte 0 ++ .uleb128 0x67 ++ .long .LASF289 ++ .byte 0x6 ++ .byte 0x99 ++ .byte 0x7 ++ .long .LASF290 ++ .long 0x449a ++ .byte 0x1 ++ .long 0x2078 ++ .uleb128 0x2 ++ .long 0x4476 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x1eb6 ++ .uleb128 0x3 ++ .byte 0x6 ++ .byte 0x49 ++ .byte 0x10 ++ .long 0x2095 ++ .byte 0 ++ .uleb128 0x3 ++ .byte 0x6 ++ .byte 0x39 ++ .byte 0x1a ++ .long 0x1eb6 ++ .uleb128 0x68 ++ .long .LASF291 ++ .byte 0x6 ++ .byte 0x45 ++ .byte 0x8 ++ .long .LASF292 ++ .long 0x20ab ++ .uleb128 0x1 ++ .long 0x1eb6 ++ .byte 0 ++ .uleb128 0x19 ++ .long .LASF294 ++ .byte 0x7 ++ .value 0x106 ++ .byte 0x1d ++ .long 0x4465 ++ .uleb128 0x3f ++ .long .LASF366 ++ .uleb128 0xa ++ .long 0x20b8 ++ .uleb128 0x13 ++ .long .LASF295 ++ .byte 0x1 ++ .byte 0x8 ++ .byte 0x39 ++ .byte 0xc ++ .long 0x2137 ++ .uleb128 0x4d ++ .long .LASF297 ++ .byte 0x8 ++ .byte 0x3b ++ .byte 0x2d ++ .long 0x4495 ++ .uleb128 0x5 ++ .long .LASF298 ++ .byte 0x8 ++ .byte 0x3c ++ .byte 0x2d ++ .long 0x448e ++ .uleb128 0x22 ++ .long .LASF299 ++ .byte 0x8 ++ .byte 0x3e ++ .byte 0x11 ++ .long .LASF300 ++ .long 0x20db ++ .long 0x20ff ++ .long 0x2105 ++ .uleb128 0x2 ++ .long 0x44a0 ++ .byte 0 ++ .uleb128 0x22 ++ .long .LASF301 ++ .byte 0x8 ++ .byte 0x43 ++ .byte 0x1c ++ .long .LASF302 ++ .long 0x20db ++ .long 0x211d ++ .long 0x2123 ++ .uleb128 0x2 ++ .long 0x44a0 ++ .byte 0 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x448e ++ .uleb128 0x4e ++ .string "__v" ++ .long 0x448e ++ .byte 0 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x20c2 ++ .uleb128 0x13 ++ .long .LASF303 ++ .byte 0x1 ++ .byte 0x8 ++ .byte 0x39 ++ .byte 0xc ++ .long 0x21b1 ++ .uleb128 0x4d ++ .long .LASF297 ++ .byte 0x8 ++ .byte 0x3b ++ .byte 0x2d ++ .long 0x4495 ++ .uleb128 0x5 ++ .long .LASF298 ++ .byte 0x8 ++ .byte 0x3c ++ .byte 0x2d ++ .long 0x448e ++ .uleb128 0x22 ++ .long .LASF304 ++ .byte 0x8 ++ .byte 0x3e ++ .byte 0x11 ++ .long .LASF305 ++ .long 0x2155 ++ .long 0x2179 ++ .long 0x217f ++ .uleb128 0x2 ++ .long 0x44a6 ++ .byte 0 ++ .uleb128 0x22 ++ .long .LASF301 ++ .byte 0x8 ++ .byte 0x43 ++ .byte 0x1c ++ .long .LASF306 ++ .long 0x2155 ++ .long 0x2197 ++ .long 0x219d ++ .uleb128 0x2 ++ .long 0x44a6 ++ .byte 0 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x448e ++ .uleb128 0x4e ++ .string "__v" ++ .long 0x448e ++ .byte 0x1 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x213c ++ .uleb128 0x19 ++ .long .LASF307 ++ .byte 0x7 ++ .value 0x102 ++ .byte 0x1a ++ .long 0x3927 ++ .uleb128 0x4f ++ .long .LASF308 ++ .byte 0x8 ++ .value 0x9bd ++ .byte 0xd ++ .uleb128 0x4f ++ .long .LASF309 ++ .byte 0x8 ++ .value 0xa0b ++ .byte 0xd ++ .uleb128 0x13 ++ .long .LASF310 ++ .byte 0x1 ++ .byte 0x9 ++ .byte 0x4c ++ .byte 0xa ++ .long 0x21fa ++ .uleb128 0x4b ++ .long .LASF310 ++ .byte 0x9 ++ .byte 0x4c ++ .byte 0x2b ++ .long .LASF311 ++ .byte 0x1 ++ .long 0x21f3 ++ .uleb128 0x2 ++ .long 0x44e2 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x21d5 ++ .uleb128 0x69 ++ .long .LASF313 ++ .byte 0x9 ++ .byte 0x4f ++ .byte 0x35 ++ .long 0x21fa ++ .byte 0x1 ++ .byte 0 ++ .uleb128 0x6a ++ .long .LASF927 ++ .byte 0x1 ++ .byte 0x18 ++ .byte 0x59 ++ .byte 0xa ++ .uleb128 0x50 ++ .long .LASF314 ++ .byte 0xa ++ .byte 0x32 ++ .byte 0xd ++ .uleb128 0x32 ++ .long .LASF315 ++ .byte 0x1 ++ .byte 0xb ++ .value 0x122 ++ .byte 0xc ++ .long 0x240a ++ .uleb128 0x24 ++ .long .LASF157 ++ .byte 0xb ++ .value 0x12b ++ .byte 0x7 ++ .long .LASF316 ++ .long 0x2248 ++ .uleb128 0x1 ++ .long 0x4502 ++ .uleb128 0x1 ++ .long 0x4508 ++ .byte 0 ++ .uleb128 0x19 ++ .long .LASF317 ++ .byte 0xb ++ .value 0x124 ++ .byte 0x21 ++ .long 0x39df ++ .uleb128 0xa ++ .long 0x2248 ++ .uleb128 0x51 ++ .string "eq" ++ .byte 0xb ++ .value 0x12f ++ .byte 0x7 ++ .long .LASF318 ++ .long 0x448e ++ .long 0x2279 ++ .uleb128 0x1 ++ .long 0x4508 ++ .uleb128 0x1 ++ .long 0x4508 ++ .byte 0 ++ .uleb128 0x51 ++ .string "lt" ++ .byte 0xb ++ .value 0x133 ++ .byte 0x7 ++ .long .LASF319 ++ .long 0x448e ++ .long 0x2298 ++ .uleb128 0x1 ++ .long 0x4508 ++ .uleb128 0x1 ++ .long 0x4508 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF244 ++ .byte 0xb ++ .value 0x13b ++ .byte 0x7 ++ .long .LASF320 ++ .long 0x39eb ++ .long 0x22bd ++ .uleb128 0x1 ++ .long 0x450e ++ .uleb128 0x1 ++ .long 0x450e ++ .uleb128 0x1 ++ .long 0x21b6 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF113 ++ .byte 0xb ++ .value 0x150 ++ .byte 0x7 ++ .long .LASF321 ++ .long 0x21b6 ++ .long 0x22d8 ++ .uleb128 0x1 ++ .long 0x450e ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF212 ++ .byte 0xb ++ .value 0x15a ++ .byte 0x7 ++ .long .LASF322 ++ .long 0x450e ++ .long 0x22fd ++ .uleb128 0x1 ++ .long 0x450e ++ .uleb128 0x1 ++ .long 0x21b6 ++ .uleb128 0x1 ++ .long 0x4508 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF323 ++ .byte 0xb ++ .value 0x168 ++ .byte 0x7 ++ .long .LASF324 ++ .long 0x4514 ++ .long 0x2322 ++ .uleb128 0x1 ++ .long 0x4514 ++ .uleb128 0x1 ++ .long 0x450e ++ .uleb128 0x1 ++ .long 0x21b6 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF202 ++ .byte 0xb ++ .value 0x170 ++ .byte 0x7 ++ .long .LASF325 ++ .long 0x4514 ++ .long 0x2347 ++ .uleb128 0x1 ++ .long 0x4514 ++ .uleb128 0x1 ++ .long 0x450e ++ .uleb128 0x1 ++ .long 0x21b6 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF157 ++ .byte 0xb ++ .value 0x178 ++ .byte 0x7 ++ .long .LASF326 ++ .long 0x4514 ++ .long 0x236c ++ .uleb128 0x1 ++ .long 0x4514 ++ .uleb128 0x1 ++ .long 0x21b6 ++ .uleb128 0x1 ++ .long 0x2248 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF327 ++ .byte 0xb ++ .value 0x180 ++ .byte 0x7 ++ .long .LASF328 ++ .long 0x2248 ++ .long 0x2387 ++ .uleb128 0x1 ++ .long 0x451a ++ .byte 0 ++ .uleb128 0x19 ++ .long .LASF329 ++ .byte 0xb ++ .value 0x125 ++ .byte 0x21 ++ .long 0x39eb ++ .uleb128 0xa ++ .long 0x2387 ++ .uleb128 0x14 ++ .long .LASF330 ++ .byte 0xb ++ .value 0x186 ++ .byte 0x7 ++ .long .LASF331 ++ .long 0x2387 ++ .long 0x23b4 ++ .uleb128 0x1 ++ .long 0x4508 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF332 ++ .byte 0xb ++ .value 0x18a ++ .byte 0x7 ++ .long .LASF333 ++ .long 0x448e ++ .long 0x23d4 ++ .uleb128 0x1 ++ .long 0x451a ++ .uleb128 0x1 ++ .long 0x451a ++ .byte 0 ++ .uleb128 0x6b ++ .string "eof" ++ .byte 0xb ++ .value 0x18e ++ .byte 0x7 ++ .long .LASF928 ++ .long 0x2387 ++ .uleb128 0x14 ++ .long .LASF334 ++ .byte 0xb ++ .value 0x192 ++ .byte 0x7 ++ .long .LASF335 ++ .long 0x2387 ++ .long 0x2400 ++ .uleb128 0x1 ++ .long 0x451a ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF254 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x2f ++ .byte 0xb ++ .long 0x4615 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x30 ++ .byte 0xb ++ .long 0x4621 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x31 ++ .byte 0xb ++ .long 0x462d ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x32 ++ .byte 0xb ++ .long 0x4639 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x34 ++ .byte 0xb ++ .long 0x46d5 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x35 ++ .byte 0xb ++ .long 0x46e1 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x36 ++ .byte 0xb ++ .long 0x46ed ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x37 ++ .byte 0xb ++ .long 0x46f9 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x39 ++ .byte 0xb ++ .long 0x4675 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x3a ++ .byte 0xb ++ .long 0x4681 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x3b ++ .byte 0xb ++ .long 0x468d ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x3c ++ .byte 0xb ++ .long 0x4699 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x3e ++ .byte 0xb ++ .long 0x474d ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x3f ++ .byte 0xb ++ .long 0x4735 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x41 ++ .byte 0xb ++ .long 0x4645 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x42 ++ .byte 0xb ++ .long 0x4651 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x43 ++ .byte 0xb ++ .long 0x465d ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x44 ++ .byte 0xb ++ .long 0x4669 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x46 ++ .byte 0xb ++ .long 0x4705 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x47 ++ .byte 0xb ++ .long 0x4711 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x48 ++ .byte 0xb ++ .long 0x471d ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x49 ++ .byte 0xb ++ .long 0x4729 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x4b ++ .byte 0xb ++ .long 0x46a5 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x4c ++ .byte 0xb ++ .long 0x46b1 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x4d ++ .byte 0xb ++ .long 0x46bd ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x4e ++ .byte 0xb ++ .long 0x46c9 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x50 ++ .byte 0xb ++ .long 0x4759 ++ .uleb128 0x3 ++ .byte 0xc ++ .byte 0x51 ++ .byte 0xb ++ .long 0x4741 ++ .uleb128 0x3 ++ .byte 0xd ++ .byte 0x35 ++ .byte 0xb ++ .long 0x4765 ++ .uleb128 0x3 ++ .byte 0xd ++ .byte 0x36 ++ .byte 0xb ++ .long 0x48ab ++ .uleb128 0x3 ++ .byte 0xd ++ .byte 0x37 ++ .byte 0xb ++ .long 0x48c6 ++ .uleb128 0x19 ++ .long .LASF336 ++ .byte 0x7 ++ .value 0x103 ++ .byte 0x1c ++ .long 0x41a0 ++ .uleb128 0x30 ++ .long .LASF337 ++ .byte 0x1 ++ .byte 0xe ++ .byte 0x6f ++ .byte 0xb ++ .long 0x25a0 ++ .uleb128 0x6c ++ .long 0x2eb8 ++ .byte 0 ++ .byte 0x1 ++ .uleb128 0x1d ++ .long .LASF338 ++ .byte 0xe ++ .byte 0x89 ++ .byte 0x7 ++ .long .LASF339 ++ .byte 0x1 ++ .long 0x2538 ++ .long 0x253e ++ .uleb128 0x2 ++ .long 0x4967 ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF338 ++ .byte 0xe ++ .byte 0x8c ++ .byte 0x7 ++ .long .LASF340 ++ .byte 0x1 ++ .long 0x2553 ++ .long 0x255e ++ .uleb128 0x2 ++ .long 0x4967 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x6d ++ .long .LASF83 ++ .byte 0xe ++ .byte 0x91 ++ .byte 0x12 ++ .long .LASF342 ++ .long 0x4978 ++ .byte 0x1 ++ .byte 0x1 ++ .long 0x2578 ++ .long 0x2583 ++ .uleb128 0x2 ++ .long 0x4967 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x6e ++ .long .LASF343 ++ .byte 0xe ++ .byte 0x98 ++ .byte 0x7 ++ .long .LASF344 ++ .byte 0x1 ++ .long 0x2594 ++ .uleb128 0x2 ++ .long 0x4967 ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x250f ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x7f ++ .byte 0xb ++ .long 0x49a6 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x80 ++ .byte 0xb ++ .long 0x49da ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x86 ++ .byte 0xb ++ .long 0x4a41 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x89 ++ .byte 0xb ++ .long 0x4a5f ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x8c ++ .byte 0xb ++ .long 0x4a7a ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x8d ++ .byte 0xb ++ .long 0x4a90 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x8e ++ .byte 0xb ++ .long 0x4aa7 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x8f ++ .byte 0xb ++ .long 0x4abe ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x91 ++ .byte 0xb ++ .long 0x4ae8 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x94 ++ .byte 0xb ++ .long 0x4b05 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x96 ++ .byte 0xb ++ .long 0x4b1c ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x99 ++ .byte 0xb ++ .long 0x4b38 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x9a ++ .byte 0xb ++ .long 0x4b54 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x9b ++ .byte 0xb ++ .long 0x4b74 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0x9d ++ .byte 0xb ++ .long 0x4b95 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xa0 ++ .byte 0xb ++ .long 0x4bb7 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xa3 ++ .byte 0xb ++ .long 0x4bcb ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xa5 ++ .byte 0xb ++ .long 0x4bd8 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xa6 ++ .byte 0xb ++ .long 0x4beb ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xa7 ++ .byte 0xb ++ .long 0x4c0c ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xa8 ++ .byte 0xb ++ .long 0x4c2c ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xa9 ++ .byte 0xb ++ .long 0x4c4c ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xab ++ .byte 0xb ++ .long 0x4c63 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xac ++ .byte 0xb ++ .long 0x4c83 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xf0 ++ .byte 0x16 ++ .long 0x4a0e ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xf5 ++ .byte 0x16 ++ .long 0x30a4 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xf6 ++ .byte 0x16 ++ .long 0x4c9e ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xf8 ++ .byte 0x16 ++ .long 0x4cba ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xf9 ++ .byte 0x16 ++ .long 0x4d11 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xfa ++ .byte 0x16 ++ .long 0x4cd1 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xfb ++ .byte 0x16 ++ .long 0x4cf1 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xfc ++ .byte 0x16 ++ .long 0x4d2c ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x62 ++ .byte 0xb ++ .long 0x3ba7 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x63 ++ .byte 0xb ++ .long 0x4dd1 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x65 ++ .byte 0xb ++ .long 0x4e48 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x66 ++ .byte 0xb ++ .long 0x4e5b ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x67 ++ .byte 0xb ++ .long 0x4e71 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x68 ++ .byte 0xb ++ .long 0x4e88 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x69 ++ .byte 0xb ++ .long 0x4e9f ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x6a ++ .byte 0xb ++ .long 0x4eb5 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x6b ++ .byte 0xb ++ .long 0x4ecc ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x6c ++ .byte 0xb ++ .long 0x4eee ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x6d ++ .byte 0xb ++ .long 0x4f0e ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x71 ++ .byte 0xb ++ .long 0x4f29 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x72 ++ .byte 0xb ++ .long 0x4f4f ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x74 ++ .byte 0xb ++ .long 0x4f6f ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x75 ++ .byte 0xb ++ .long 0x4f90 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x76 ++ .byte 0xb ++ .long 0x4fb2 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x78 ++ .byte 0xb ++ .long 0x4fc9 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x79 ++ .byte 0xb ++ .long 0x4fe0 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x7e ++ .byte 0xb ++ .long 0x4fec ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x83 ++ .byte 0xb ++ .long 0x4fff ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x84 ++ .byte 0xb ++ .long 0x5015 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x85 ++ .byte 0xb ++ .long 0x5030 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x87 ++ .byte 0xb ++ .long 0x5043 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x88 ++ .byte 0xb ++ .long 0x505b ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x8b ++ .byte 0xb ++ .long 0x5081 ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x8d ++ .byte 0xb ++ .long 0x508d ++ .uleb128 0x3 ++ .byte 0x10 ++ .byte 0x8f ++ .byte 0xb ++ .long 0x50a3 ++ .uleb128 0x32 ++ .long .LASF345 ++ .byte 0x1 ++ .byte 0x11 ++ .value 0x187 ++ .byte 0xc ++ .long 0x2891 ++ .uleb128 0x19 ++ .long .LASF5 ++ .byte 0x11 ++ .value 0x18f ++ .byte 0xd ++ .long 0x3f04 ++ .uleb128 0x14 ++ .long .LASF346 ++ .byte 0x11 ++ .value 0x1ba ++ .byte 0x7 ++ .long .LASF347 ++ .long 0x278b ++ .long 0x27b8 ++ .uleb128 0x1 ++ .long 0x50d7 ++ .uleb128 0x1 ++ .long 0x27ca ++ .byte 0 ++ .uleb128 0x19 ++ .long .LASF35 ++ .byte 0x11 ++ .value 0x18a ++ .byte 0xd ++ .long 0x250f ++ .uleb128 0xa ++ .long 0x27b8 ++ .uleb128 0x19 ++ .long .LASF6 ++ .byte 0x11 ++ .value 0x19e ++ .byte 0xd ++ .long 0x21b6 ++ .uleb128 0x14 ++ .long .LASF346 ++ .byte 0x11 ++ .value 0x1c8 ++ .byte 0x7 ++ .long .LASF348 ++ .long 0x278b ++ .long 0x27fc ++ .uleb128 0x1 ++ .long 0x50d7 ++ .uleb128 0x1 ++ .long 0x27ca ++ .uleb128 0x1 ++ .long 0x27fc ++ .byte 0 ++ .uleb128 0x19 ++ .long .LASF349 ++ .byte 0x11 ++ .value 0x198 ++ .byte 0xd ++ .long 0x493d ++ .uleb128 0x24 ++ .long .LASF350 ++ .byte 0x11 ++ .value 0x1d4 ++ .byte 0x7 ++ .long .LASF351 ++ .long 0x282a ++ .uleb128 0x1 ++ .long 0x50d7 ++ .uleb128 0x1 ++ .long 0x278b ++ .uleb128 0x1 ++ .long 0x27ca ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF115 ++ .byte 0x11 ++ .value 0x1f8 ++ .byte 0x7 ++ .long .LASF352 ++ .long 0x27ca ++ .long 0x2845 ++ .uleb128 0x1 ++ .long 0x50dd ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF353 ++ .byte 0x11 ++ .value 0x201 ++ .byte 0x7 ++ .long .LASF354 ++ .long 0x27b8 ++ .long 0x2860 ++ .uleb128 0x1 ++ .long 0x50dd ++ .byte 0 ++ .uleb128 0x19 ++ .long .LASF298 ++ .byte 0x11 ++ .value 0x18c ++ .byte 0xd ++ .long 0x39df ++ .uleb128 0x19 ++ .long .LASF17 ++ .byte 0x11 ++ .value 0x192 ++ .byte 0xd ++ .long 0x3bba ++ .uleb128 0x19 ++ .long .LASF355 ++ .byte 0x11 ++ .value 0x1ad ++ .byte 0x8 ++ .long 0x250f ++ .uleb128 0xc ++ .long .LASF256 ++ .long 0x250f ++ .byte 0 ++ .uleb128 0x30 ++ .long .LASF356 ++ .byte 0x10 ++ .byte 0x12 ++ .byte 0x2f ++ .byte 0xb ++ .long 0x2984 ++ .uleb128 0x15 ++ .long .LASF55 ++ .byte 0x12 ++ .byte 0x36 ++ .byte 0x1a ++ .long 0x3bba ++ .byte 0x1 ++ .uleb128 0x6 ++ .long .LASF357 ++ .byte 0x12 ++ .byte 0x3a ++ .byte 0x12 ++ .long 0x289e ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF6 ++ .byte 0x12 ++ .byte 0x35 ++ .byte 0x18 ++ .long 0x21b6 ++ .byte 0x1 ++ .uleb128 0x6 ++ .long .LASF358 ++ .byte 0x12 ++ .byte 0x3b ++ .byte 0x13 ++ .long 0x28b8 ++ .byte 0x8 ++ .uleb128 0x20 ++ .long .LASF359 ++ .byte 0x12 ++ .byte 0x3e ++ .byte 0x11 ++ .long .LASF360 ++ .long 0x28e6 ++ .long 0x28f6 ++ .uleb128 0x2 ++ .long 0x514a ++ .uleb128 0x1 ++ .long 0x28f6 ++ .uleb128 0x1 ++ .long 0x28b8 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF57 ++ .byte 0x12 ++ .byte 0x37 ++ .byte 0x1a ++ .long 0x3bba ++ .byte 0x1 ++ .uleb128 0x1d ++ .long .LASF359 ++ .byte 0x12 ++ .byte 0x42 ++ .byte 0x11 ++ .long .LASF361 ++ .byte 0x1 ++ .long 0x2918 ++ .long 0x291e ++ .uleb128 0x2 ++ .long 0x514a ++ .byte 0 ++ .uleb128 0x29 ++ .long .LASF111 ++ .byte 0x12 ++ .byte 0x47 ++ .byte 0x7 ++ .long .LASF362 ++ .long 0x28b8 ++ .byte 0x1 ++ .long 0x2937 ++ .long 0x293d ++ .uleb128 0x2 ++ .long 0x5150 ++ .byte 0 ++ .uleb128 0x29 ++ .long .LASF90 ++ .byte 0x12 ++ .byte 0x4b ++ .byte 0x7 ++ .long .LASF363 ++ .long 0x28f6 ++ .byte 0x1 ++ .long 0x2956 ++ .long 0x295c ++ .uleb128 0x2 ++ .long 0x5150 ++ .byte 0 ++ .uleb128 0x49 ++ .string "end" ++ .byte 0x12 ++ .byte 0x4f ++ .byte 0x7 ++ .long .LASF365 ++ .long 0x28f6 ++ .byte 0x1 ++ .long 0x2975 ++ .long 0x297b ++ .uleb128 0x2 ++ .long 0x5150 ++ .byte 0 ++ .uleb128 0x1a ++ .string "_E" ++ .long 0x39df ++ .byte 0 ++ .uleb128 0xa ++ .long 0x2891 ++ .uleb128 0x3f ++ .long .LASF367 ++ .uleb128 0x3f ++ .long .LASF368 ++ .uleb128 0x46 ++ .long .LASF370 ++ .byte 0x3 ++ .value 0x1a9e ++ .byte 0x14 ++ .long 0x29b3 ++ .uleb128 0x52 ++ .long .LASF371 ++ .byte 0x3 ++ .value 0x1aa0 ++ .byte 0x14 ++ .uleb128 0x38 ++ .byte 0x3 ++ .value 0x1aa0 ++ .byte 0x14 ++ .long 0x29a0 ++ .byte 0 ++ .uleb128 0x38 ++ .byte 0x3 ++ .value 0x1a9e ++ .byte 0x14 ++ .long 0x2993 ++ .uleb128 0x6f ++ .string "_V2" ++ .byte 0x13 ++ .byte 0x47 ++ .byte 0x14 ++ .uleb128 0x53 ++ .byte 0x13 ++ .byte 0x47 ++ .byte 0x14 ++ .long 0x29bc ++ .uleb128 0x70 ++ .long .LASF929 ++ .byte 0x5 ++ .byte 0x4 ++ .long 0x39eb ++ .byte 0x14 ++ .byte 0x6f ++ .byte 0x8 ++ .long 0x2a1f ++ .uleb128 0x23 ++ .long .LASF373 ++ .byte 0x1 ++ .uleb128 0x23 ++ .long .LASF374 ++ .byte 0x2 ++ .uleb128 0x23 ++ .long .LASF375 ++ .byte 0x4 ++ .uleb128 0x23 ++ .long .LASF376 ++ .byte 0x8 ++ .uleb128 0x23 ++ .long .LASF377 ++ .byte 0x10 ++ .uleb128 0x23 ++ .long .LASF378 ++ .byte 0x20 ++ .uleb128 0x54 ++ .long .LASF379 ++ .long 0x10000 ++ .uleb128 0x54 ++ .long .LASF380 ++ .long 0x7fffffff ++ .uleb128 0x71 ++ .long .LASF381 ++ .sleb128 -2147483648 ++ .byte 0 ++ .uleb128 0x2c ++ .long .LASF382 ++ .long 0x2a37 ++ .uleb128 0x28 ++ .long .LASF383 ++ .byte 0x14 ++ .value 0x1ad ++ .byte 0x1b ++ .long 0x29cc ++ .byte 0x1 ++ .byte 0 ++ .uleb128 0x3 ++ .byte 0x15 ++ .byte 0x52 ++ .byte 0xb ++ .long 0x5162 ++ .uleb128 0x3 ++ .byte 0x15 ++ .byte 0x53 ++ .byte 0xb ++ .long 0x5156 ++ .uleb128 0x3 ++ .byte 0x15 ++ .byte 0x54 ++ .byte 0xb ++ .long 0x3979 ++ .uleb128 0x3 ++ .byte 0x15 ++ .byte 0x5c ++ .byte 0xb ++ .long 0x5174 ++ .uleb128 0x3 ++ .byte 0x15 ++ .byte 0x65 ++ .byte 0xb ++ .long 0x518f ++ .uleb128 0x3 ++ .byte 0x15 ++ .byte 0x68 ++ .byte 0xb ++ .long 0x51aa ++ .uleb128 0x3 ++ .byte 0x15 ++ .byte 0x69 ++ .byte 0xb ++ .long 0x51c0 ++ .uleb128 0x2c ++ .long .LASF384 ++ .long 0x2adb ++ .uleb128 0x55 ++ .long .LASF385 ++ .byte 0x16 ++ .byte 0x5d ++ .byte 0x7 ++ .long .LASF386 ++ .byte 0x1 ++ .long 0x2a6f ++ .byte 0x1 ++ .long 0x2a92 ++ .long 0x2aa2 ++ .uleb128 0x2 ++ .long 0x5a19 ++ .uleb128 0x2 ++ .long 0x39eb ++ .uleb128 0x2 ++ .long 0x5a24 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF387 ++ .byte 0x16 ++ .value 0x186 ++ .byte 0x7 ++ .long .LASF388 ++ .byte 0x2 ++ .long 0x2ab8 ++ .long 0x2ac8 ++ .uleb128 0x2 ++ .long 0x5a19 ++ .uleb128 0x2 ++ .long 0x39eb ++ .uleb128 0x2 ++ .long 0x5a24 ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF254 ++ .long 0x39df ++ .uleb128 0x25 ++ .long .LASF255 ++ .long 0x221e ++ .byte 0 ++ .uleb128 0x2c ++ .long .LASF389 ++ .long 0x2ba5 ++ .uleb128 0x15 ++ .long .LASF317 ++ .byte 0x17 ++ .byte 0x83 ++ .byte 0x1b ++ .long 0x39df ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF390 ++ .byte 0x17 ++ .value 0x218 ++ .byte 0x7 ++ .long .LASF391 ++ .long 0x574a ++ .byte 0x2 ++ .long 0x2b0b ++ .long 0x2b11 ++ .uleb128 0x2 ++ .long 0x5750 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF392 ++ .byte 0x17 ++ .value 0x1ef ++ .byte 0x7 ++ .long .LASF393 ++ .long 0x574a ++ .byte 0x2 ++ .long 0x2b2b ++ .long 0x2b31 ++ .uleb128 0x2 ++ .long 0x5750 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF394 ++ .byte 0x17 ++ .value 0x21b ++ .byte 0x7 ++ .long .LASF395 ++ .long 0x574a ++ .byte 0x2 ++ .long 0x2b4b ++ .long 0x2b51 ++ .uleb128 0x2 ++ .long 0x5750 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF396 ++ .byte 0x17 ++ .value 0x1d6 ++ .byte 0x7 ++ .long .LASF397 ++ .byte 0x2 ++ .long 0x2b67 ++ .long 0x2b6d ++ .uleb128 0x2 ++ .long 0x582b ++ .byte 0 ++ .uleb128 0x55 ++ .long .LASF398 ++ .byte 0x17 ++ .byte 0xcc ++ .byte 0x7 ++ .long .LASF399 ++ .byte 0x1 ++ .long 0x2adb ++ .byte 0x1 ++ .long 0x2b87 ++ .long 0x2b92 ++ .uleb128 0x2 ++ .long 0x582b ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF254 ++ .long 0x39df ++ .uleb128 0x25 ++ .long .LASF255 ++ .long 0x221e ++ .byte 0 ++ .uleb128 0xa ++ .long 0x2adb ++ .uleb128 0x13 ++ .long .LASF400 ++ .byte 0x1 ++ .byte 0x18 ++ .byte 0xb2 ++ .byte 0xc ++ .long 0x2be5 ++ .uleb128 0x5 ++ .long .LASF401 ++ .byte 0x18 ++ .byte 0xb6 ++ .byte 0x2b ++ .long 0x2502 ++ .uleb128 0x5 ++ .long .LASF5 ++ .byte 0x18 ++ .byte 0xb7 ++ .byte 0x2b ++ .long 0x3f04 ++ .uleb128 0x5 ++ .long .LASF133 ++ .byte 0x18 ++ .byte 0xb8 ++ .byte 0x2b ++ .long 0x495b ++ .uleb128 0xc ++ .long .LASF402 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x32 ++ .long .LASF403 ++ .byte 0x1 ++ .byte 0x8 ++ .value 0x5ae ++ .byte 0xc ++ .long 0x2c0a ++ .uleb128 0x19 ++ .long .LASF404 ++ .byte 0x8 ++ .value 0x5af ++ .byte 0x15 ++ .long 0x250f ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x4978 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF405 ++ .byte 0x1 ++ .byte 0x18 ++ .byte 0xbd ++ .byte 0xc ++ .long 0x2c45 ++ .uleb128 0x5 ++ .long .LASF401 ++ .byte 0x18 ++ .byte 0xc1 ++ .byte 0x2b ++ .long 0x2502 ++ .uleb128 0x5 ++ .long .LASF5 ++ .byte 0x18 ++ .byte 0xc2 ++ .byte 0x2b ++ .long 0x3bba ++ .uleb128 0x5 ++ .long .LASF133 ++ .byte 0x18 ++ .byte 0xc3 ++ .byte 0x2b ++ .long 0x4961 ++ .uleb128 0xc ++ .long .LASF402 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x32 ++ .long .LASF406 ++ .byte 0x1 ++ .byte 0x8 ++ .value 0x80a ++ .byte 0xc ++ .long 0x2c61 ++ .uleb128 0x19 ++ .long .LASF404 ++ .byte 0x8 ++ .value 0x80b ++ .byte 0x18 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF407 ++ .byte 0x1 ++ .byte 0x19 ++ .byte 0x80 ++ .byte 0xc ++ .long 0x2c9e ++ .uleb128 0x5 ++ .long .LASF5 ++ .byte 0x19 ++ .byte 0x83 ++ .byte 0x14 ++ .long 0x3f04 ++ .uleb128 0x18 ++ .long .LASF408 ++ .byte 0x19 ++ .byte 0x92 ++ .byte 0x7 ++ .long .LASF409 ++ .long 0x2c6e ++ .long 0x2c94 ++ .uleb128 0x1 ++ .long 0x5214 ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF410 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF411 ++ .byte 0x19 ++ .byte 0x4b ++ .byte 0xb ++ .long 0x2c53 ++ .uleb128 0x32 ++ .long .LASF412 ++ .byte 0x1 ++ .byte 0x8 ++ .value 0x80a ++ .byte 0xc ++ .long 0x2cc6 ++ .uleb128 0x19 ++ .long .LASF404 ++ .byte 0x8 ++ .value 0x80b ++ .byte 0x18 ++ .long 0x39e6 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF413 ++ .byte 0x1 ++ .byte 0x19 ++ .byte 0x80 ++ .byte 0xc ++ .long 0x2d03 ++ .uleb128 0x5 ++ .long .LASF5 ++ .byte 0x19 ++ .byte 0x83 ++ .byte 0x14 ++ .long 0x3bba ++ .uleb128 0x18 ++ .long .LASF408 ++ .byte 0x19 ++ .byte 0x92 ++ .byte 0x7 ++ .long .LASF414 ++ .long 0x2cd3 ++ .long 0x2cf9 ++ .uleb128 0x1 ++ .long 0x521a ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF410 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF411 ++ .byte 0x19 ++ .byte 0x4b ++ .byte 0xb ++ .long 0x2cb8 ++ .uleb128 0x13 ++ .long .LASF415 ++ .byte 0x1 ++ .byte 0x1a ++ .byte 0x66 ++ .byte 0xc ++ .long 0x2d2e ++ .uleb128 0x56 ++ .byte 0x7 ++ .byte 0x4 ++ .long 0x3970 ++ .byte 0x1a ++ .byte 0x68 ++ .byte 0xc ++ .uleb128 0x23 ++ .long .LASF416 ++ .byte 0x1 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF417 ++ .byte 0x1 ++ .byte 0x1a ++ .byte 0x5f ++ .byte 0xc ++ .long 0x2d4d ++ .uleb128 0x56 ++ .byte 0x7 ++ .byte 0x4 ++ .long 0x3970 ++ .byte 0x1a ++ .byte 0x61 ++ .byte 0xc ++ .uleb128 0x23 ++ .long .LASF416 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF418 ++ .byte 0x1b ++ .byte 0x8a ++ .byte 0x5 ++ .long .LASF419 ++ .long 0x3bba ++ .long 0x2d70 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39e6 ++ .uleb128 0x1 ++ .long 0x4961 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF420 ++ .byte 0x1b ++ .byte 0x2f ++ .byte 0x5 ++ .long .LASF421 ++ .long 0x3bba ++ .long 0x2d93 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39e6 ++ .uleb128 0x1 ++ .long 0x4961 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF422 ++ .byte 0x1b ++ .byte 0x8a ++ .byte 0x5 ++ .long .LASF423 ++ .long 0x3f04 ++ .long 0x2db6 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x495b ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF424 ++ .byte 0x1b ++ .byte 0x2f ++ .byte 0x5 ++ .long .LASF425 ++ .long 0x3f04 ++ .long 0x2dd9 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39df ++ .uleb128 0x1 ++ .long 0x495b ++ .byte 0 ++ .uleb128 0x2c ++ .long .LASF426 ++ .long 0x2e37 ++ .uleb128 0x4a ++ .long .LASF427 ++ .byte 0x1c ++ .value 0x11a ++ .byte 0x7 ++ .long .LASF429 ++ .byte 0x1 ++ .long 0x2dd9 ++ .byte 0x1 ++ .long 0x2dfd ++ .long 0x2e08 ++ .uleb128 0x2 ++ .long 0x5abb ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF430 ++ .byte 0x1c ++ .value 0x1cc ++ .byte 0x7 ++ .long .LASF431 ++ .byte 0x2 ++ .long 0x2e1e ++ .long 0x2e24 ++ .uleb128 0x2 ++ .long 0x5abb ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF254 ++ .long 0x39df ++ .uleb128 0x25 ++ .long .LASF255 ++ .long 0x221e ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF432 ++ .byte 0x1b ++ .byte 0x63 ++ .byte 0x5 ++ .long .LASF433 ++ .long 0x5cc5 ++ .long 0x2e5a ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x4978 ++ .uleb128 0x1 ++ .long 0x4978 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF434 ++ .byte 0x1d ++ .byte 0x99 ++ .byte 0x26 ++ .long 0x1b6b ++ .byte 0 ++ .uleb128 0x72 ++ .long .LASF436 ++ .byte 0x7 ++ .value 0x11a ++ .byte 0xb ++ .long 0x38f8 ++ .uleb128 0x52 ++ .long .LASF369 ++ .byte 0x7 ++ .value 0x11c ++ .byte 0x41 ++ .uleb128 0x38 ++ .byte 0x7 ++ .value 0x11c ++ .byte 0x41 ++ .long 0x2e74 ++ .uleb128 0x3 ++ .byte 0x4 ++ .byte 0xfb ++ .byte 0xb ++ .long 0x43f9 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x104 ++ .byte 0xb ++ .long 0x4415 ++ .uleb128 0x1e ++ .byte 0x4 ++ .value 0x105 ++ .byte 0xb ++ .long 0x443d ++ .uleb128 0x50 ++ .long .LASF437 ++ .byte 0x1e ++ .byte 0x23 ++ .byte 0xb ++ .uleb128 0x3 ++ .byte 0x1f ++ .byte 0x2c ++ .byte 0xe ++ .long 0x21b6 ++ .uleb128 0x3 ++ .byte 0x1f ++ .byte 0x2d ++ .byte 0xe ++ .long 0x2502 ++ .uleb128 0x30 ++ .long .LASF438 ++ .byte 0x1 ++ .byte 0x1f ++ .byte 0x3a ++ .byte 0xb ++ .long 0x3020 ++ .uleb128 0x1d ++ .long .LASF439 ++ .byte 0x1f ++ .byte 0x50 ++ .byte 0x7 ++ .long .LASF440 ++ .byte 0x1 ++ .long 0x2eda ++ .long 0x2ee0 ++ .uleb128 0x2 ++ .long 0x4944 ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF439 ++ .byte 0x1f ++ .byte 0x53 ++ .byte 0x7 ++ .long .LASF441 ++ .byte 0x1 ++ .long 0x2ef5 ++ .long 0x2f00 ++ .uleb128 0x2 ++ .long 0x4944 ++ .uleb128 0x1 ++ .long 0x494f ++ .byte 0 ++ .uleb128 0x1d ++ .long .LASF442 ++ .byte 0x1f ++ .byte 0x59 ++ .byte 0x7 ++ .long .LASF443 ++ .byte 0x1 ++ .long 0x2f15 ++ .long 0x2f20 ++ .uleb128 0x2 ++ .long 0x4944 ++ .uleb128 0x2 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF5 ++ .byte 0x1f ++ .byte 0x3f ++ .byte 0x1a ++ .long 0x3f04 ++ .byte 0x1 ++ .uleb128 0x29 ++ .long .LASF444 ++ .byte 0x1f ++ .byte 0x5c ++ .byte 0x7 ++ .long .LASF445 ++ .long 0x2f20 ++ .byte 0x1 ++ .long 0x2f46 ++ .long 0x2f51 ++ .uleb128 0x2 ++ .long 0x4955 ++ .uleb128 0x1 ++ .long 0x2f51 ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF133 ++ .byte 0x1f ++ .byte 0x41 ++ .byte 0x1a ++ .long 0x495b ++ .byte 0x1 ++ .uleb128 0x15 ++ .long .LASF17 ++ .byte 0x1f ++ .byte 0x40 ++ .byte 0x1a ++ .long 0x3bba ++ .byte 0x1 ++ .uleb128 0x29 ++ .long .LASF444 ++ .byte 0x1f ++ .byte 0x60 ++ .byte 0x7 ++ .long .LASF446 ++ .long 0x2f5e ++ .byte 0x1 ++ .long 0x2f84 ++ .long 0x2f8f ++ .uleb128 0x2 ++ .long 0x4955 ++ .uleb128 0x1 ++ .long 0x2f8f ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF130 ++ .byte 0x1f ++ .byte 0x42 ++ .byte 0x1a ++ .long 0x4961 ++ .byte 0x1 ++ .uleb128 0x29 ++ .long .LASF346 ++ .byte 0x1f ++ .byte 0x66 ++ .byte 0x7 ++ .long .LASF447 ++ .long 0x2f20 ++ .byte 0x1 ++ .long 0x2fb5 ++ .long 0x2fc5 ++ .uleb128 0x2 ++ .long 0x4944 ++ .uleb128 0x1 ++ .long 0x2fc5 ++ .uleb128 0x1 ++ .long 0x493d ++ .byte 0 ++ .uleb128 0x15 ++ .long .LASF6 ++ .byte 0x1f ++ .byte 0x3d ++ .byte 0x1a ++ .long 0x21b6 ++ .byte 0x1 ++ .uleb128 0x1d ++ .long .LASF350 ++ .byte 0x1f ++ .byte 0x77 ++ .byte 0x7 ++ .long .LASF448 ++ .byte 0x1 ++ .long 0x2fe7 ++ .long 0x2ff7 ++ .uleb128 0x2 ++ .long 0x4944 ++ .uleb128 0x1 ++ .long 0x2f20 ++ .uleb128 0x1 ++ .long 0x2fc5 ++ .byte 0 ++ .uleb128 0x29 ++ .long .LASF115 ++ .byte 0x1f ++ .byte 0x84 ++ .byte 0x7 ++ .long .LASF449 ++ .long 0x2fc5 ++ .byte 0x1 ++ .long 0x3010 ++ .long 0x3016 ++ .uleb128 0x2 ++ .long 0x4955 ++ .byte 0 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39df ++ .byte 0 ++ .uleb128 0xa ++ .long 0x2eb8 ++ .uleb128 0x13 ++ .long .LASF450 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x3d ++ .byte 0xc ++ .long 0x306c ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0x46 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF452 ++ .byte 0x20 ++ .byte 0x47 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF453 ++ .byte 0x20 ++ .byte 0x4b ++ .byte 0x1b ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF454 ++ .byte 0x20 ++ .byte 0x4e ++ .byte 0x1b ++ .long 0x39f2 ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xc8 ++ .byte 0xb ++ .long 0x4a0e ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xd8 ++ .byte 0xb ++ .long 0x4c9e ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xe3 ++ .byte 0xb ++ .long 0x4cba ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xe4 ++ .byte 0xb ++ .long 0x4cd1 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xe5 ++ .byte 0xb ++ .long 0x4cf1 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xe7 ++ .byte 0xb ++ .long 0x4d11 ++ .uleb128 0x3 ++ .byte 0xf ++ .byte 0xe8 ++ .byte 0xb ++ .long 0x4d2c ++ .uleb128 0x73 ++ .string "div" ++ .byte 0xf ++ .byte 0xd5 ++ .byte 0x3 ++ .long .LASF930 ++ .long 0x4a0e ++ .long 0x30c3 ++ .uleb128 0x1 ++ .long 0x4436 ++ .uleb128 0x1 ++ .long 0x4436 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF456 ++ .byte 0x1 ++ .byte 0x21 ++ .byte 0x32 ++ .byte 0xa ++ .long 0x31f5 ++ .uleb128 0x3 ++ .byte 0x21 ++ .byte 0x32 ++ .byte 0xa ++ .long 0x27d7 ++ .uleb128 0x3 ++ .byte 0x21 ++ .byte 0x32 ++ .byte 0xa ++ .long 0x2798 ++ .uleb128 0x3 ++ .byte 0x21 ++ .byte 0x32 ++ .byte 0xa ++ .long 0x2809 ++ .uleb128 0x3 ++ .byte 0x21 ++ .byte 0x32 ++ .byte 0xa ++ .long 0x282a ++ .uleb128 0x47 ++ .long 0x277d ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF457 ++ .byte 0x21 ++ .byte 0x61 ++ .byte 0x13 ++ .long .LASF458 ++ .long 0x250f ++ .long 0x3110 ++ .uleb128 0x1 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x74 ++ .long .LASF459 ++ .byte 0x21 ++ .byte 0x64 ++ .byte 0x11 ++ .long .LASF931 ++ .long 0x312b ++ .uleb128 0x1 ++ .long 0x4978 ++ .uleb128 0x1 ++ .long 0x4978 ++ .byte 0 ++ .uleb128 0x33 ++ .long .LASF460 ++ .byte 0x21 ++ .byte 0x67 ++ .byte 0x1b ++ .long .LASF462 ++ .long 0x448e ++ .uleb128 0x33 ++ .long .LASF461 ++ .byte 0x21 ++ .byte 0x6a ++ .byte 0x1b ++ .long .LASF463 ++ .long 0x448e ++ .uleb128 0x33 ++ .long .LASF464 ++ .byte 0x21 ++ .byte 0x6d ++ .byte 0x1b ++ .long .LASF465 ++ .long 0x448e ++ .uleb128 0x33 ++ .long .LASF466 ++ .byte 0x21 ++ .byte 0x70 ++ .byte 0x1b ++ .long .LASF467 ++ .long 0x448e ++ .uleb128 0x33 ++ .long .LASF468 ++ .byte 0x21 ++ .byte 0x73 ++ .byte 0x1b ++ .long .LASF469 ++ .long 0x448e ++ .uleb128 0x5 ++ .long .LASF298 ++ .byte 0x21 ++ .byte 0x3a ++ .byte 0x35 ++ .long 0x2860 ++ .uleb128 0xa ++ .long 0x317b ++ .uleb128 0x5 ++ .long .LASF5 ++ .byte 0x21 ++ .byte 0x3b ++ .byte 0x35 ++ .long 0x278b ++ .uleb128 0x5 ++ .long .LASF17 ++ .byte 0x21 ++ .byte 0x3c ++ .byte 0x35 ++ .long 0x286d ++ .uleb128 0x5 ++ .long .LASF6 ++ .byte 0x21 ++ .byte 0x3d ++ .byte 0x35 ++ .long 0x27ca ++ .uleb128 0x5 ++ .long .LASF133 ++ .byte 0x21 ++ .byte 0x40 ++ .byte 0x35 ++ .long 0x50e3 ++ .uleb128 0x5 ++ .long .LASF130 ++ .byte 0x21 ++ .byte 0x41 ++ .byte 0x35 ++ .long 0x50e9 ++ .uleb128 0x13 ++ .long .LASF470 ++ .byte 0x1 ++ .byte 0x21 ++ .byte 0x77 ++ .byte 0xe ++ .long 0x31eb ++ .uleb128 0x5 ++ .long .LASF471 ++ .byte 0x21 ++ .byte 0x78 ++ .byte 0x41 ++ .long 0x287a ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39df ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF256 ++ .long 0x250f ++ .byte 0 ++ .uleb128 0x57 ++ .long .LASF472 ++ .byte 0x8 ++ .byte 0x22 ++ .value 0x310 ++ .byte 0xb ++ .long 0x342f ++ .uleb128 0x58 ++ .long .LASF473 ++ .byte 0x22 ++ .value 0x313 ++ .byte 0x11 ++ .long 0x3f04 ++ .byte 0 ++ .byte 0x2 ++ .uleb128 0x10 ++ .long .LASF474 ++ .byte 0x22 ++ .value 0x31f ++ .byte 0x1a ++ .long .LASF475 ++ .byte 0x1 ++ .long 0x3228 ++ .long 0x322e ++ .uleb128 0x2 ++ .long 0x5220 ++ .byte 0 ++ .uleb128 0x3e ++ .long .LASF474 ++ .byte 0x22 ++ .value 0x323 ++ .byte 0x7 ++ .long .LASF476 ++ .byte 0x1 ++ .long 0x3244 ++ .long 0x324f ++ .uleb128 0x2 ++ .long 0x5220 ++ .uleb128 0x1 ++ .long 0x522b ++ .byte 0 ++ .uleb128 0x28 ++ .long .LASF133 ++ .byte 0x22 ++ .value 0x31c ++ .byte 0x32 ++ .long 0x2bcf ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF477 ++ .byte 0x22 ++ .value 0x330 ++ .byte 0x7 ++ .long .LASF478 ++ .long 0x324f ++ .byte 0x1 ++ .long 0x3277 ++ .long 0x327d ++ .uleb128 0x2 ++ .long 0x5231 ++ .byte 0 ++ .uleb128 0x28 ++ .long .LASF5 ++ .byte 0x22 ++ .value 0x31d ++ .byte 0x32 ++ .long 0x2bc3 ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF479 ++ .byte 0x22 ++ .value 0x334 ++ .byte 0x7 ++ .long .LASF480 ++ .long 0x327d ++ .byte 0x1 ++ .long 0x32a5 ++ .long 0x32ab ++ .uleb128 0x2 ++ .long 0x5231 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF481 ++ .byte 0x22 ++ .value 0x338 ++ .byte 0x7 ++ .long .LASF482 ++ .long 0x523c ++ .byte 0x1 ++ .long 0x32c5 ++ .long 0x32cb ++ .uleb128 0x2 ++ .long 0x5220 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF481 ++ .byte 0x22 ++ .value 0x33f ++ .byte 0x7 ++ .long .LASF483 ++ .long 0x31f5 ++ .byte 0x1 ++ .long 0x32e5 ++ .long 0x32f0 ++ .uleb128 0x2 ++ .long 0x5220 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF484 ++ .byte 0x22 ++ .value 0x344 ++ .byte 0x7 ++ .long .LASF485 ++ .long 0x523c ++ .byte 0x1 ++ .long 0x330a ++ .long 0x3310 ++ .uleb128 0x2 ++ .long 0x5220 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF484 ++ .byte 0x22 ++ .value 0x34b ++ .byte 0x7 ++ .long .LASF486 ++ .long 0x31f5 ++ .byte 0x1 ++ .long 0x332a ++ .long 0x3335 ++ .uleb128 0x2 ++ .long 0x5220 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF131 ++ .byte 0x22 ++ .value 0x350 ++ .byte 0x7 ++ .long .LASF487 ++ .long 0x324f ++ .byte 0x1 ++ .long 0x334f ++ .long 0x335a ++ .uleb128 0x2 ++ .long 0x5231 ++ .uleb128 0x1 ++ .long 0x335a ++ .byte 0 ++ .uleb128 0x28 ++ .long .LASF401 ++ .byte 0x22 ++ .value 0x31b ++ .byte 0x38 ++ .long 0x2bb7 ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF143 ++ .byte 0x22 ++ .value 0x354 ++ .byte 0x7 ++ .long .LASF488 ++ .long 0x523c ++ .byte 0x1 ++ .long 0x3382 ++ .long 0x338d ++ .uleb128 0x2 ++ .long 0x5220 ++ .uleb128 0x1 ++ .long 0x335a ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF489 ++ .byte 0x22 ++ .value 0x358 ++ .byte 0x7 ++ .long .LASF490 ++ .long 0x31f5 ++ .byte 0x1 ++ .long 0x33a7 ++ .long 0x33b2 ++ .uleb128 0x2 ++ .long 0x5231 ++ .uleb128 0x1 ++ .long 0x335a ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF491 ++ .byte 0x22 ++ .value 0x35c ++ .byte 0x7 ++ .long .LASF492 ++ .long 0x523c ++ .byte 0x1 ++ .long 0x33cc ++ .long 0x33d7 ++ .uleb128 0x2 ++ .long 0x5220 ++ .uleb128 0x1 ++ .long 0x335a ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF493 ++ .byte 0x22 ++ .value 0x360 ++ .byte 0x7 ++ .long .LASF494 ++ .long 0x31f5 ++ .byte 0x1 ++ .long 0x33f1 ++ .long 0x33fc ++ .uleb128 0x2 ++ .long 0x5231 ++ .uleb128 0x1 ++ .long 0x335a ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF495 ++ .byte 0x22 ++ .value 0x364 ++ .byte 0x7 ++ .long .LASF496 ++ .long 0x522b ++ .byte 0x1 ++ .long 0x3416 ++ .long 0x341c ++ .uleb128 0x2 ++ .long 0x5231 ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF402 ++ .long 0x3f04 ++ .uleb128 0xc ++ .long .LASF497 ++ .long 0x45 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x31f5 ++ .uleb128 0x57 ++ .long .LASF498 ++ .byte 0x8 ++ .byte 0x22 ++ .value 0x310 ++ .byte 0xb ++ .long 0x3698 ++ .uleb128 0x58 ++ .long .LASF473 ++ .byte 0x22 ++ .value 0x313 ++ .byte 0x11 ++ .long 0x3bba ++ .byte 0 ++ .byte 0x2 ++ .uleb128 0x10 ++ .long .LASF474 ++ .byte 0x22 ++ .value 0x31f ++ .byte 0x1a ++ .long .LASF499 ++ .byte 0x1 ++ .long 0x3467 ++ .long 0x346d ++ .uleb128 0x2 ++ .long 0x51f2 ++ .byte 0 ++ .uleb128 0x3e ++ .long .LASF474 ++ .byte 0x22 ++ .value 0x323 ++ .byte 0x7 ++ .long .LASF500 ++ .byte 0x1 ++ .long 0x3483 ++ .long 0x348e ++ .uleb128 0x2 ++ .long 0x51f2 ++ .uleb128 0x1 ++ .long 0x51fd ++ .byte 0 ++ .uleb128 0x28 ++ .long .LASF133 ++ .byte 0x22 ++ .value 0x31c ++ .byte 0x32 ++ .long 0x2c2f ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF477 ++ .byte 0x22 ++ .value 0x330 ++ .byte 0x7 ++ .long .LASF501 ++ .long 0x348e ++ .byte 0x1 ++ .long 0x34b6 ++ .long 0x34bc ++ .uleb128 0x2 ++ .long 0x5203 ++ .byte 0 ++ .uleb128 0x28 ++ .long .LASF5 ++ .byte 0x22 ++ .value 0x31d ++ .byte 0x32 ++ .long 0x2c23 ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF479 ++ .byte 0x22 ++ .value 0x334 ++ .byte 0x7 ++ .long .LASF502 ++ .long 0x34bc ++ .byte 0x1 ++ .long 0x34e4 ++ .long 0x34ea ++ .uleb128 0x2 ++ .long 0x5203 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF481 ++ .byte 0x22 ++ .value 0x338 ++ .byte 0x7 ++ .long .LASF503 ++ .long 0x520e ++ .byte 0x1 ++ .long 0x3504 ++ .long 0x350a ++ .uleb128 0x2 ++ .long 0x51f2 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF481 ++ .byte 0x22 ++ .value 0x33f ++ .byte 0x7 ++ .long .LASF504 ++ .long 0x3434 ++ .byte 0x1 ++ .long 0x3524 ++ .long 0x352f ++ .uleb128 0x2 ++ .long 0x51f2 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF484 ++ .byte 0x22 ++ .value 0x344 ++ .byte 0x7 ++ .long .LASF505 ++ .long 0x520e ++ .byte 0x1 ++ .long 0x3549 ++ .long 0x354f ++ .uleb128 0x2 ++ .long 0x51f2 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF484 ++ .byte 0x22 ++ .value 0x34b ++ .byte 0x7 ++ .long .LASF506 ++ .long 0x3434 ++ .byte 0x1 ++ .long 0x3569 ++ .long 0x3574 ++ .uleb128 0x2 ++ .long 0x51f2 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF131 ++ .byte 0x22 ++ .value 0x350 ++ .byte 0x7 ++ .long .LASF507 ++ .long 0x348e ++ .byte 0x1 ++ .long 0x358e ++ .long 0x3599 ++ .uleb128 0x2 ++ .long 0x5203 ++ .uleb128 0x1 ++ .long 0x3599 ++ .byte 0 ++ .uleb128 0x28 ++ .long .LASF401 ++ .byte 0x22 ++ .value 0x31b ++ .byte 0x38 ++ .long 0x2c17 ++ .byte 0x1 ++ .uleb128 0x4 ++ .long .LASF143 ++ .byte 0x22 ++ .value 0x354 ++ .byte 0x7 ++ .long .LASF508 ++ .long 0x520e ++ .byte 0x1 ++ .long 0x35c1 ++ .long 0x35cc ++ .uleb128 0x2 ++ .long 0x51f2 ++ .uleb128 0x1 ++ .long 0x3599 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF489 ++ .byte 0x22 ++ .value 0x358 ++ .byte 0x7 ++ .long .LASF509 ++ .long 0x3434 ++ .byte 0x1 ++ .long 0x35e6 ++ .long 0x35f1 ++ .uleb128 0x2 ++ .long 0x5203 ++ .uleb128 0x1 ++ .long 0x3599 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF491 ++ .byte 0x22 ++ .value 0x35c ++ .byte 0x7 ++ .long .LASF510 ++ .long 0x520e ++ .byte 0x1 ++ .long 0x360b ++ .long 0x3616 ++ .uleb128 0x2 ++ .long 0x51f2 ++ .uleb128 0x1 ++ .long 0x3599 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF493 ++ .byte 0x22 ++ .value 0x360 ++ .byte 0x7 ++ .long .LASF511 ++ .long 0x3434 ++ .byte 0x1 ++ .long 0x3630 ++ .long 0x363b ++ .uleb128 0x2 ++ .long 0x5203 ++ .uleb128 0x1 ++ .long 0x3599 ++ .byte 0 ++ .uleb128 0x4 ++ .long .LASF495 ++ .byte 0x22 ++ .value 0x364 ++ .byte 0x7 ++ .long .LASF512 ++ .long 0x51fd ++ .byte 0x1 ++ .long 0x3655 ++ .long 0x365b ++ .uleb128 0x2 ++ .long 0x5203 ++ .byte 0 ++ .uleb128 0x10 ++ .long .LASF513 ++ .byte 0x22 ++ .value 0x328 ++ .byte 0x9 ++ .long .LASF514 ++ .byte 0x1 ++ .long 0x367a ++ .long 0x3685 ++ .uleb128 0xc ++ .long .LASF515 ++ .long 0x3f04 ++ .uleb128 0x2 ++ .long 0x51f2 ++ .uleb128 0x1 ++ .long 0x5391 ++ .byte 0 ++ .uleb128 0xc ++ .long .LASF402 ++ .long 0x3bba ++ .uleb128 0xc ++ .long .LASF497 ++ .long 0x45 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x3434 ++ .uleb128 0x13 ++ .long .LASF516 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x9c ++ .byte 0xc ++ .long 0x36e4 ++ .uleb128 0xf ++ .long .LASF517 ++ .byte 0x20 ++ .byte 0x9f ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0xa2 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF518 ++ .byte 0x20 ++ .byte 0xa3 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF519 ++ .byte 0x20 ++ .byte 0xa4 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x3906 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF520 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x9c ++ .byte 0xc ++ .long 0x372b ++ .uleb128 0xf ++ .long .LASF517 ++ .byte 0x20 ++ .byte 0x9f ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0xa2 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF518 ++ .byte 0x20 ++ .byte 0xa3 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF519 ++ .byte 0x20 ++ .byte 0xa4 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x390d ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF521 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x9c ++ .byte 0xc ++ .long 0x3772 ++ .uleb128 0xf ++ .long .LASF517 ++ .byte 0x20 ++ .byte 0x9f ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0xa2 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF518 ++ .byte 0x20 ++ .byte 0xa3 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF519 ++ .byte 0x20 ++ .byte 0xa4 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x3914 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF522 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x3d ++ .byte 0xc ++ .long 0x37b9 ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0x46 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF452 ++ .byte 0x20 ++ .byte 0x47 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF453 ++ .byte 0x20 ++ .byte 0x4b ++ .byte 0x1b ++ .long 0x392e ++ .uleb128 0xf ++ .long .LASF454 ++ .byte 0x20 ++ .byte 0x4e ++ .byte 0x1b ++ .long 0x392e ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x3927 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF523 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x3d ++ .byte 0xc ++ .long 0x3800 ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0x46 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF452 ++ .byte 0x20 ++ .byte 0x47 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF453 ++ .byte 0x20 ++ .byte 0x4b ++ .byte 0x1b ++ .long 0x39e6 ++ .uleb128 0xf ++ .long .LASF454 ++ .byte 0x20 ++ .byte 0x4e ++ .byte 0x1b ++ .long 0x39e6 ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x39df ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF524 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x3d ++ .byte 0xc ++ .long 0x3847 ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0x46 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF452 ++ .byte 0x20 ++ .byte 0x47 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF453 ++ .byte 0x20 ++ .byte 0x4b ++ .byte 0x1b ++ .long 0x44c8 ++ .uleb128 0xf ++ .long .LASF454 ++ .byte 0x20 ++ .byte 0x4e ++ .byte 0x1b ++ .long 0x44c8 ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x44c1 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF525 ++ .byte 0x1 ++ .byte 0x20 ++ .byte 0x3d ++ .byte 0xc ++ .long 0x388e ++ .uleb128 0xf ++ .long .LASF451 ++ .byte 0x20 ++ .byte 0x46 ++ .byte 0x19 ++ .long 0x4495 ++ .uleb128 0xf ++ .long .LASF452 ++ .byte 0x20 ++ .byte 0x47 ++ .byte 0x18 ++ .long 0x39f2 ++ .uleb128 0xf ++ .long .LASF453 ++ .byte 0x20 ++ .byte 0x4b ++ .byte 0x1b ++ .long 0x41a7 ++ .uleb128 0xf ++ .long .LASF454 ++ .byte 0x20 ++ .byte 0x4e ++ .byte 0x1b ++ .long 0x41a7 ++ .uleb128 0xc ++ .long .LASF455 ++ .long 0x41a0 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF526 ++ .byte 0x22 ++ .value 0x3da ++ .byte 0x5 ++ .long .LASF527 ++ .long 0x3599 ++ .long 0x38c0 ++ .uleb128 0xc ++ .long .LASF402 ++ .long 0x3bba ++ .uleb128 0xc ++ .long .LASF497 ++ .long 0x45 ++ .uleb128 0x1 ++ .long 0x5354 ++ .uleb128 0x1 ++ .long 0x5354 ++ .byte 0 ++ .uleb128 0x75 ++ .long .LASF528 ++ .byte 0x22 ++ .value 0x3ce ++ .byte 0x5 ++ .long .LASF529 ++ .long 0x41a0 ++ .uleb128 0xc ++ .long .LASF530 ++ .long 0x3bba ++ .uleb128 0xc ++ .long .LASF531 ++ .long 0x3f04 ++ .uleb128 0xc ++ .long .LASF497 ++ .long 0x45 ++ .uleb128 0x1 ++ .long 0x5354 ++ .uleb128 0x1 ++ .long 0x5391 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x16 ++ .byte 0x20 ++ .byte 0x3 ++ .long .LASF532 ++ .uleb128 0x16 ++ .byte 0x10 ++ .byte 0x4 ++ .long .LASF533 ++ .uleb128 0x16 ++ .byte 0x4 ++ .byte 0x4 ++ .long .LASF534 ++ .uleb128 0x16 ++ .byte 0x8 ++ .byte 0x4 ++ .long .LASF535 ++ .uleb128 0x16 ++ .byte 0x10 ++ .byte 0x4 ++ .long .LASF536 ++ .uleb128 0x5 ++ .long .LASF307 ++ .byte 0x23 ++ .byte 0xd1 ++ .byte 0x17 ++ .long 0x3927 ++ .uleb128 0x16 ++ .byte 0x8 ++ .byte 0x7 ++ .long .LASF537 ++ .uleb128 0xa ++ .long 0x3927 ++ .uleb128 0x76 ++ .long .LASF932 ++ .byte 0x18 ++ .byte 0x24 ++ .byte 0 ++ .long 0x3970 ++ .uleb128 0x39 ++ .long .LASF538 ++ .byte 0x24 ++ .byte 0 ++ .long 0x3970 ++ .byte 0 ++ .uleb128 0x39 ++ .long .LASF539 ++ .byte 0x24 ++ .byte 0 ++ .long 0x3970 ++ .byte 0x4 ++ .uleb128 0x39 ++ .long .LASF540 ++ .byte 0x24 ++ .byte 0 ++ .long 0x3977 ++ .byte 0x8 ++ .uleb128 0x39 ++ .long .LASF541 ++ .byte 0x24 ++ .byte 0 ++ .long 0x3977 ++ .byte 0x10 ++ .byte 0 ++ .uleb128 0x16 ++ .byte 0x4 ++ .byte 0x7 ++ .long .LASF542 ++ .uleb128 0x77 ++ .byte 0x8 ++ .uleb128 0x5 ++ .long .LASF543 ++ .byte 0x25 ++ .byte 0x14 ++ .byte 0x17 ++ .long 0x3970 ++ .uleb128 0x3a ++ .byte 0x8 ++ .byte 0x26 ++ .byte 0xe ++ .byte 0x1 ++ .long .LASF754 ++ .long 0x39cf ++ .uleb128 0x48 ++ .byte 0x4 ++ .byte 0x26 ++ .byte 0x11 ++ .byte 0x3 ++ .long 0x39b4 ++ .uleb128 0x37 ++ .long .LASF544 ++ .byte 0x26 ++ .byte 0x12 ++ .byte 0x13 ++ .long 0x3970 ++ .uleb128 0x37 ++ .long .LASF545 ++ .byte 0x26 ++ .byte 0x13 ++ .byte 0xa ++ .long 0x39cf ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF546 ++ .byte 0x26 ++ .byte 0xf ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF416 ++ .byte 0x26 ++ .byte 0x14 ++ .byte 0x5 ++ .long 0x3992 ++ .byte 0x4 ++ .byte 0 ++ .uleb128 0x2d ++ .long 0x39df ++ .long 0x39df ++ .uleb128 0x34 ++ .long 0x3927 ++ .byte 0x3 ++ .byte 0 ++ .uleb128 0x16 ++ .byte 0x1 ++ .byte 0x6 ++ .long .LASF547 ++ .uleb128 0xa ++ .long 0x39df ++ .uleb128 0x78 ++ .byte 0x4 ++ .byte 0x5 ++ .string "int" ++ .uleb128 0xa ++ .long 0x39eb ++ .uleb128 0x5 ++ .long .LASF548 ++ .byte 0x26 ++ .byte 0x15 ++ .byte 0x3 ++ .long 0x3985 ++ .uleb128 0x5 ++ .long .LASF549 ++ .byte 0x27 ++ .byte 0x6 ++ .byte 0x15 ++ .long 0x39f7 ++ .uleb128 0xa ++ .long 0x3a03 ++ .uleb128 0x5 ++ .long .LASF550 ++ .byte 0x28 ++ .byte 0x5 ++ .byte 0x19 ++ .long 0x3a20 ++ .uleb128 0x13 ++ .long .LASF551 ++ .byte 0xd8 ++ .byte 0x29 ++ .byte 0x31 ++ .byte 0x8 ++ .long 0x3ba7 ++ .uleb128 0x6 ++ .long .LASF552 ++ .byte 0x29 ++ .byte 0x33 ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF553 ++ .byte 0x29 ++ .byte 0x36 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x8 ++ .uleb128 0x6 ++ .long .LASF554 ++ .byte 0x29 ++ .byte 0x37 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x10 ++ .uleb128 0x6 ++ .long .LASF555 ++ .byte 0x29 ++ .byte 0x38 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x18 ++ .uleb128 0x6 ++ .long .LASF556 ++ .byte 0x29 ++ .byte 0x39 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x20 ++ .uleb128 0x6 ++ .long .LASF557 ++ .byte 0x29 ++ .byte 0x3a ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x28 ++ .uleb128 0x6 ++ .long .LASF558 ++ .byte 0x29 ++ .byte 0x3b ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x30 ++ .uleb128 0x6 ++ .long .LASF559 ++ .byte 0x29 ++ .byte 0x3c ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x38 ++ .uleb128 0x6 ++ .long .LASF560 ++ .byte 0x29 ++ .byte 0x3d ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x40 ++ .uleb128 0x6 ++ .long .LASF561 ++ .byte 0x29 ++ .byte 0x40 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x48 ++ .uleb128 0x6 ++ .long .LASF562 ++ .byte 0x29 ++ .byte 0x41 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x50 ++ .uleb128 0x6 ++ .long .LASF563 ++ .byte 0x29 ++ .byte 0x42 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x58 ++ .uleb128 0x6 ++ .long .LASF564 ++ .byte 0x29 ++ .byte 0x44 ++ .byte 0x16 ++ .long 0x4d89 ++ .byte 0x60 ++ .uleb128 0x6 ++ .long .LASF565 ++ .byte 0x29 ++ .byte 0x46 ++ .byte 0x14 ++ .long 0x4d8f ++ .byte 0x68 ++ .uleb128 0x6 ++ .long .LASF566 ++ .byte 0x29 ++ .byte 0x48 ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x70 ++ .uleb128 0x6 ++ .long .LASF567 ++ .byte 0x29 ++ .byte 0x49 ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x74 ++ .uleb128 0x6 ++ .long .LASF568 ++ .byte 0x29 ++ .byte 0x4a ++ .byte 0xb ++ .long 0x45fd ++ .byte 0x78 ++ .uleb128 0x6 ++ .long .LASF569 ++ .byte 0x29 ++ .byte 0x4d ++ .byte 0x12 ++ .long 0x3bb3 ++ .byte 0x80 ++ .uleb128 0x6 ++ .long .LASF570 ++ .byte 0x29 ++ .byte 0x4e ++ .byte 0xf ++ .long 0x44ba ++ .byte 0x82 ++ .uleb128 0x6 ++ .long .LASF571 ++ .byte 0x29 ++ .byte 0x4f ++ .byte 0x8 ++ .long 0x4d95 ++ .byte 0x83 ++ .uleb128 0x6 ++ .long .LASF572 ++ .byte 0x29 ++ .byte 0x51 ++ .byte 0xf ++ .long 0x4da5 ++ .byte 0x88 ++ .uleb128 0x6 ++ .long .LASF573 ++ .byte 0x29 ++ .byte 0x59 ++ .byte 0xd ++ .long 0x4609 ++ .byte 0x90 ++ .uleb128 0x6 ++ .long .LASF574 ++ .byte 0x29 ++ .byte 0x5b ++ .byte 0x17 ++ .long 0x4db0 ++ .byte 0x98 ++ .uleb128 0x6 ++ .long .LASF575 ++ .byte 0x29 ++ .byte 0x5c ++ .byte 0x19 ++ .long 0x4dbb ++ .byte 0xa0 ++ .uleb128 0x6 ++ .long .LASF576 ++ .byte 0x29 ++ .byte 0x5d ++ .byte 0x14 ++ .long 0x4d8f ++ .byte 0xa8 ++ .uleb128 0x6 ++ .long .LASF577 ++ .byte 0x29 ++ .byte 0x5e ++ .byte 0x9 ++ .long 0x3977 ++ .byte 0xb0 ++ .uleb128 0x6 ++ .long .LASF578 ++ .byte 0x29 ++ .byte 0x5f ++ .byte 0xa ++ .long 0x391b ++ .byte 0xb8 ++ .uleb128 0x6 ++ .long .LASF579 ++ .byte 0x29 ++ .byte 0x60 ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0xc0 ++ .uleb128 0x6 ++ .long .LASF580 ++ .byte 0x29 ++ .byte 0x62 ++ .byte 0x8 ++ .long 0x4dc1 ++ .byte 0xc4 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF581 ++ .byte 0x2a ++ .byte 0x7 ++ .byte 0x19 ++ .long 0x3a20 ++ .uleb128 0x16 ++ .byte 0x2 ++ .byte 0x7 ++ .long .LASF582 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x39e6 ++ .uleb128 0xa ++ .long 0x3bba ++ .uleb128 0x9 ++ .long .LASF583 ++ .byte 0x2b ++ .value 0x13e ++ .byte 0x1 ++ .long 0x3979 ++ .long 0x3bdc ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF584 ++ .byte 0x2b ++ .value 0x2d6 ++ .byte 0xf ++ .long 0x3979 ++ .long 0x3bf3 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3a14 ++ .uleb128 0x9 ++ .long .LASF585 ++ .byte 0x2c ++ .value 0x180 ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x39eb ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3c20 ++ .uleb128 0x16 ++ .byte 0x4 ++ .byte 0x5 ++ .long .LASF586 ++ .uleb128 0xa ++ .long 0x3c20 ++ .uleb128 0x9 ++ .long .LASF587 ++ .byte 0x2b ++ .value 0x2e4 ++ .byte 0xf ++ .long 0x3979 ++ .long 0x3c48 ++ .uleb128 0x1 ++ .long 0x3c20 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF588 ++ .byte 0x2b ++ .value 0x2fa ++ .byte 0xc ++ .long 0x39eb ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3c27 ++ .uleb128 0x9 ++ .long .LASF589 ++ .byte 0x2b ++ .value 0x23d ++ .byte 0xc ++ .long 0x39eb ++ .long 0x3c86 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF590 ++ .byte 0x2c ++ .value 0x159 ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x3ca3 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF591 ++ .byte 0x2b ++ .value 0x280 ++ .byte 0xc ++ .long .LASF592 ++ .long 0x39eb ++ .long 0x3cc4 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF593 ++ .byte 0x2b ++ .value 0x2d7 ++ .byte 0xf ++ .long 0x3979 ++ .long 0x3cdb ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .byte 0 ++ .uleb128 0x59 ++ .long .LASF745 ++ .byte 0x2b ++ .value 0x2dd ++ .byte 0xf ++ .long 0x3979 ++ .uleb128 0x9 ++ .long .LASF594 ++ .byte 0x2b ++ .value 0x149 ++ .byte 0x1 ++ .long 0x391b ++ .long 0x3d09 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x3d09 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3a03 ++ .uleb128 0x9 ++ .long .LASF595 ++ .byte 0x2b ++ .value 0x128 ++ .byte 0xf ++ .long 0x391b ++ .long 0x3d35 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x3d09 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF596 ++ .byte 0x2b ++ .value 0x124 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x3d4c ++ .uleb128 0x1 ++ .long 0x3d4c ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3a0f ++ .uleb128 0x9 ++ .long .LASF597 ++ .byte 0x2c ++ .value 0x1da ++ .byte 0x1 ++ .long 0x391b ++ .long 0x3d78 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3d78 ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x3d09 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3bba ++ .uleb128 0x9 ++ .long .LASF598 ++ .byte 0x2b ++ .value 0x2e5 ++ .byte 0xf ++ .long 0x3979 ++ .long 0x3d9a ++ .uleb128 0x1 ++ .long 0x3c20 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF599 ++ .byte 0x2b ++ .value 0x2eb ++ .byte 0xf ++ .long 0x3979 ++ .long 0x3db1 ++ .uleb128 0x1 ++ .long 0x3c20 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF600 ++ .byte 0x2c ++ .value 0x11d ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x3dd3 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF601 ++ .byte 0x2b ++ .value 0x287 ++ .byte 0xc ++ .long .LASF602 ++ .long 0x39eb ++ .long 0x3df4 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF603 ++ .byte 0x2b ++ .value 0x302 ++ .byte 0xf ++ .long 0x3979 ++ .long 0x3e10 ++ .uleb128 0x1 ++ .long 0x3979 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF604 ++ .byte 0x2c ++ .value 0x16c ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x3e31 ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3e31 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3933 ++ .uleb128 0x14 ++ .long .LASF605 ++ .byte 0x2b ++ .value 0x2b5 ++ .byte 0xc ++ .long .LASF606 ++ .long 0x39eb ++ .long 0x3e5c ++ .uleb128 0x1 ++ .long 0x3bf3 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3e31 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF607 ++ .byte 0x2c ++ .value 0x13b ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x3e82 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3e31 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF608 ++ .byte 0x2b ++ .value 0x2bc ++ .byte 0xc ++ .long .LASF609 ++ .long 0x39eb ++ .long 0x3ea7 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3e31 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF610 ++ .byte 0x2c ++ .value 0x166 ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x3ec3 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3e31 ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF611 ++ .byte 0x2b ++ .value 0x2b9 ++ .byte 0xc ++ .long .LASF612 ++ .long 0x39eb ++ .long 0x3ee3 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3e31 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF613 ++ .byte 0x2c ++ .value 0x1b8 ++ .byte 0x1 ++ .long 0x391b ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3c20 ++ .uleb128 0x1 ++ .long 0x3d09 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x39df ++ .uleb128 0xa ++ .long 0x3f04 ++ .uleb128 0xe ++ .long .LASF614 ++ .byte 0x2c ++ .byte 0xf6 ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x3f2a ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF615 ++ .byte 0x2b ++ .byte 0x6a ++ .byte 0xc ++ .long 0x39eb ++ .long 0x3f45 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF616 ++ .byte 0x2b ++ .byte 0x83 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x3f60 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF617 ++ .byte 0x2c ++ .byte 0x98 ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x3f7b ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF618 ++ .byte 0x2b ++ .byte 0xbb ++ .byte 0xf ++ .long 0x391b ++ .long 0x3f96 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF619 ++ .byte 0x2b ++ .value 0x342 ++ .byte 0xf ++ .long 0x391b ++ .long 0x3fbc ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3fbc ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x405e ++ .uleb128 0x79 ++ .string "tm" ++ .byte 0x38 ++ .byte 0x2d ++ .byte 0x7 ++ .byte 0x8 ++ .long 0x405e ++ .uleb128 0x6 ++ .long .LASF620 ++ .byte 0x2d ++ .byte 0x9 ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF621 ++ .byte 0x2d ++ .byte 0xa ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x4 ++ .uleb128 0x6 ++ .long .LASF622 ++ .byte 0x2d ++ .byte 0xb ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x8 ++ .uleb128 0x6 ++ .long .LASF623 ++ .byte 0x2d ++ .byte 0xc ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0xc ++ .uleb128 0x6 ++ .long .LASF624 ++ .byte 0x2d ++ .byte 0xd ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x10 ++ .uleb128 0x6 ++ .long .LASF625 ++ .byte 0x2d ++ .byte 0xe ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x14 ++ .uleb128 0x6 ++ .long .LASF626 ++ .byte 0x2d ++ .byte 0xf ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x18 ++ .uleb128 0x6 ++ .long .LASF627 ++ .byte 0x2d ++ .byte 0x10 ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x1c ++ .uleb128 0x6 ++ .long .LASF628 ++ .byte 0x2d ++ .byte 0x11 ++ .byte 0x7 ++ .long 0x39eb ++ .byte 0x20 ++ .uleb128 0x6 ++ .long .LASF629 ++ .byte 0x2d ++ .byte 0x14 ++ .byte 0xc ++ .long 0x41a0 ++ .byte 0x28 ++ .uleb128 0x6 ++ .long .LASF630 ++ .byte 0x2d ++ .byte 0x15 ++ .byte 0xf ++ .long 0x3bba ++ .byte 0x30 ++ .byte 0 ++ .uleb128 0xa ++ .long 0x3fc2 ++ .uleb128 0xe ++ .long .LASF631 ++ .byte 0x2b ++ .byte 0xde ++ .byte 0xf ++ .long 0x391b ++ .long 0x4079 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF632 ++ .byte 0x2c ++ .value 0x107 ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x409a ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF633 ++ .byte 0x2b ++ .byte 0x6d ++ .byte 0xc ++ .long 0x39eb ++ .long 0x40ba ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF634 ++ .byte 0x2c ++ .byte 0xbf ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x40da ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF635 ++ .byte 0x2c ++ .value 0x1fc ++ .byte 0x1 ++ .long 0x391b ++ .long 0x4100 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x4100 ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x3d09 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3c64 ++ .uleb128 0xe ++ .long .LASF636 ++ .byte 0x2b ++ .byte 0xbf ++ .byte 0xf ++ .long 0x391b ++ .long 0x4121 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF637 ++ .byte 0x2b ++ .value 0x179 ++ .byte 0xf ++ .long 0x390d ++ .long 0x413d ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3c1a ++ .uleb128 0x9 ++ .long .LASF638 ++ .byte 0x2b ++ .value 0x17e ++ .byte 0xe ++ .long 0x3906 ++ .long 0x415f ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF639 ++ .byte 0x2b ++ .byte 0xd9 ++ .byte 0x11 ++ .long 0x3c1a ++ .long 0x417f ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF640 ++ .byte 0x2b ++ .value 0x1ac ++ .byte 0x11 ++ .long 0x41a0 ++ .long 0x41a0 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x16 ++ .byte 0x8 ++ .byte 0x5 ++ .long .LASF641 ++ .uleb128 0xa ++ .long 0x41a0 ++ .uleb128 0x9 ++ .long .LASF642 ++ .byte 0x2b ++ .value 0x1b1 ++ .byte 0x1a ++ .long 0x3927 ++ .long 0x41cd ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF643 ++ .byte 0x2b ++ .byte 0x87 ++ .byte 0xf ++ .long 0x391b ++ .long 0x41ed ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF644 ++ .byte 0x2b ++ .value 0x144 ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x4204 ++ .uleb128 0x1 ++ .long 0x3979 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF645 ++ .byte 0x2b ++ .value 0x102 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4225 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF646 ++ .byte 0x2c ++ .byte 0x27 ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x4245 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF647 ++ .byte 0x2c ++ .byte 0x44 ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x4265 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF648 ++ .byte 0x2c ++ .byte 0x81 ++ .byte 0x1 ++ .long 0x3c1a ++ .long 0x4285 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c20 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF649 ++ .byte 0x2c ++ .value 0x153 ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x429d ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x14 ++ .long .LASF650 ++ .byte 0x2b ++ .value 0x284 ++ .byte 0xc ++ .long .LASF651 ++ .long 0x39eb ++ .long 0x42b9 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF652 ++ .byte 0x2b ++ .byte 0xa1 ++ .byte 0x1d ++ .long .LASF652 ++ .long 0x3c64 ++ .long 0x42d8 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c20 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF652 ++ .byte 0x2b ++ .byte 0x9f ++ .byte 0x17 ++ .long .LASF652 ++ .long 0x3c1a ++ .long 0x42f7 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c20 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF653 ++ .byte 0x2b ++ .byte 0xc5 ++ .byte 0x1d ++ .long .LASF653 ++ .long 0x3c64 ++ .long 0x4316 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF653 ++ .byte 0x2b ++ .byte 0xc3 ++ .byte 0x17 ++ .long .LASF653 ++ .long 0x3c1a ++ .long 0x4335 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF654 ++ .byte 0x2b ++ .byte 0xab ++ .byte 0x1d ++ .long .LASF654 ++ .long 0x3c64 ++ .long 0x4354 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c20 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF654 ++ .byte 0x2b ++ .byte 0xa9 ++ .byte 0x17 ++ .long .LASF654 ++ .long 0x3c1a ++ .long 0x4373 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c20 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF655 ++ .byte 0x2b ++ .byte 0xd0 ++ .byte 0x1d ++ .long .LASF655 ++ .long 0x3c64 ++ .long 0x4392 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF655 ++ .byte 0x2b ++ .byte 0xce ++ .byte 0x17 ++ .long .LASF655 ++ .long 0x3c1a ++ .long 0x43b1 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c64 ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF656 ++ .byte 0x2b ++ .byte 0xf9 ++ .byte 0x1d ++ .long .LASF656 ++ .long 0x3c64 ++ .long 0x43d5 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x3c20 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x18 ++ .long .LASF656 ++ .byte 0x2b ++ .byte 0xf7 ++ .byte 0x17 ++ .long .LASF656 ++ .long 0x3c1a ++ .long 0x43f9 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3c20 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF657 ++ .byte 0x2b ++ .value 0x180 ++ .byte 0x14 ++ .long 0x3914 ++ .long 0x4415 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF658 ++ .byte 0x2b ++ .value 0x1b9 ++ .byte 0x16 ++ .long 0x4436 ++ .long 0x4436 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x16 ++ .byte 0x8 ++ .byte 0x5 ++ .long .LASF659 ++ .uleb128 0x9 ++ .long .LASF660 ++ .byte 0x2b ++ .value 0x1c0 ++ .byte 0x1f ++ .long 0x445e ++ .long 0x445e ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x413d ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x16 ++ .byte 0x8 ++ .byte 0x7 ++ .long .LASF661 ++ .uleb128 0x7a ++ .long .LASF933 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x1e70 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x1eb6 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x207f ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x207f ++ .uleb128 0x3b ++ .byte 0x8 ++ .long 0x1eb6 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x1eb6 ++ .uleb128 0x16 ++ .byte 0x1 ++ .byte 0x2 ++ .long .LASF662 ++ .uleb128 0xa ++ .long 0x448e ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x20bd ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2137 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x21b1 ++ .uleb128 0x16 ++ .byte 0x1 ++ .byte 0x8 ++ .long .LASF663 ++ .uleb128 0x16 ++ .byte 0x10 ++ .byte 0x7 ++ .long .LASF664 ++ .uleb128 0x16 ++ .byte 0x1 ++ .byte 0x6 ++ .long .LASF665 ++ .uleb128 0x16 ++ .byte 0x2 ++ .byte 0x5 ++ .long .LASF666 ++ .uleb128 0xa ++ .long 0x44c1 ++ .uleb128 0x16 ++ .byte 0x10 ++ .byte 0x5 ++ .long .LASF667 ++ .uleb128 0x16 ++ .byte 0x2 ++ .byte 0x10 ++ .long .LASF668 ++ .uleb128 0x16 ++ .byte 0x4 ++ .byte 0x10 ++ .long .LASF669 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x21d5 ++ .uleb128 0x7b ++ .long 0x21ff ++ .uleb128 0x4c ++ .long .LASF670 ++ .byte 0xa ++ .byte 0x38 ++ .byte 0xb ++ .long 0x4502 ++ .uleb128 0x53 ++ .byte 0xa ++ .byte 0x3a ++ .byte 0x18 ++ .long 0x2216 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x2248 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x2255 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2255 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2248 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x2394 ++ .uleb128 0x5 ++ .long .LASF671 ++ .byte 0x2e ++ .byte 0x25 ++ .byte 0x15 ++ .long 0x44ba ++ .uleb128 0x5 ++ .long .LASF672 ++ .byte 0x2e ++ .byte 0x26 ++ .byte 0x17 ++ .long 0x44ac ++ .uleb128 0x5 ++ .long .LASF673 ++ .byte 0x2e ++ .byte 0x27 ++ .byte 0x1a ++ .long 0x44c1 ++ .uleb128 0x5 ++ .long .LASF674 ++ .byte 0x2e ++ .byte 0x28 ++ .byte 0x1c ++ .long 0x3bb3 ++ .uleb128 0x5 ++ .long .LASF675 ++ .byte 0x2e ++ .byte 0x29 ++ .byte 0x14 ++ .long 0x39eb ++ .uleb128 0xa ++ .long 0x4550 ++ .uleb128 0x5 ++ .long .LASF676 ++ .byte 0x2e ++ .byte 0x2a ++ .byte 0x16 ++ .long 0x3970 ++ .uleb128 0x5 ++ .long .LASF677 ++ .byte 0x2e ++ .byte 0x2c ++ .byte 0x19 ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF678 ++ .byte 0x2e ++ .byte 0x2d ++ .byte 0x1b ++ .long 0x3927 ++ .uleb128 0x5 ++ .long .LASF679 ++ .byte 0x2e ++ .byte 0x34 ++ .byte 0x12 ++ .long 0x4520 ++ .uleb128 0x5 ++ .long .LASF680 ++ .byte 0x2e ++ .byte 0x35 ++ .byte 0x13 ++ .long 0x452c ++ .uleb128 0x5 ++ .long .LASF681 ++ .byte 0x2e ++ .byte 0x36 ++ .byte 0x13 ++ .long 0x4538 ++ .uleb128 0x5 ++ .long .LASF682 ++ .byte 0x2e ++ .byte 0x37 ++ .byte 0x14 ++ .long 0x4544 ++ .uleb128 0x5 ++ .long .LASF683 ++ .byte 0x2e ++ .byte 0x38 ++ .byte 0x13 ++ .long 0x4550 ++ .uleb128 0x5 ++ .long .LASF684 ++ .byte 0x2e ++ .byte 0x39 ++ .byte 0x14 ++ .long 0x4561 ++ .uleb128 0x5 ++ .long .LASF685 ++ .byte 0x2e ++ .byte 0x3a ++ .byte 0x13 ++ .long 0x456d ++ .uleb128 0x5 ++ .long .LASF686 ++ .byte 0x2e ++ .byte 0x3b ++ .byte 0x14 ++ .long 0x4579 ++ .uleb128 0x5 ++ .long .LASF687 ++ .byte 0x2e ++ .byte 0x48 ++ .byte 0x12 ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF688 ++ .byte 0x2e ++ .byte 0x49 ++ .byte 0x1b ++ .long 0x3927 ++ .uleb128 0x5 ++ .long .LASF689 ++ .byte 0x2e ++ .byte 0x98 ++ .byte 0x19 ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF690 ++ .byte 0x2e ++ .byte 0x99 ++ .byte 0x1b ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF691 ++ .byte 0x2f ++ .byte 0x18 ++ .byte 0x12 ++ .long 0x4520 ++ .uleb128 0x5 ++ .long .LASF692 ++ .byte 0x2f ++ .byte 0x19 ++ .byte 0x13 ++ .long 0x4538 ++ .uleb128 0x5 ++ .long .LASF693 ++ .byte 0x2f ++ .byte 0x1a ++ .byte 0x13 ++ .long 0x4550 ++ .uleb128 0x5 ++ .long .LASF694 ++ .byte 0x2f ++ .byte 0x1b ++ .byte 0x13 ++ .long 0x456d ++ .uleb128 0x5 ++ .long .LASF695 ++ .byte 0x30 ++ .byte 0x18 ++ .byte 0x13 ++ .long 0x452c ++ .uleb128 0x5 ++ .long .LASF696 ++ .byte 0x30 ++ .byte 0x19 ++ .byte 0x14 ++ .long 0x4544 ++ .uleb128 0x5 ++ .long .LASF697 ++ .byte 0x30 ++ .byte 0x1a ++ .byte 0x14 ++ .long 0x4561 ++ .uleb128 0x5 ++ .long .LASF698 ++ .byte 0x30 ++ .byte 0x1b ++ .byte 0x14 ++ .long 0x4579 ++ .uleb128 0x5 ++ .long .LASF699 ++ .byte 0x31 ++ .byte 0x2b ++ .byte 0x18 ++ .long 0x4585 ++ .uleb128 0x5 ++ .long .LASF700 ++ .byte 0x31 ++ .byte 0x2c ++ .byte 0x19 ++ .long 0x459d ++ .uleb128 0x5 ++ .long .LASF701 ++ .byte 0x31 ++ .byte 0x2d ++ .byte 0x19 ++ .long 0x45b5 ++ .uleb128 0x5 ++ .long .LASF702 ++ .byte 0x31 ++ .byte 0x2e ++ .byte 0x19 ++ .long 0x45cd ++ .uleb128 0x5 ++ .long .LASF703 ++ .byte 0x31 ++ .byte 0x31 ++ .byte 0x19 ++ .long 0x4591 ++ .uleb128 0x5 ++ .long .LASF704 ++ .byte 0x31 ++ .byte 0x32 ++ .byte 0x1a ++ .long 0x45a9 ++ .uleb128 0x5 ++ .long .LASF705 ++ .byte 0x31 ++ .byte 0x33 ++ .byte 0x1a ++ .long 0x45c1 ++ .uleb128 0x5 ++ .long .LASF706 ++ .byte 0x31 ++ .byte 0x34 ++ .byte 0x1a ++ .long 0x45d9 ++ .uleb128 0x5 ++ .long .LASF707 ++ .byte 0x31 ++ .byte 0x3a ++ .byte 0x16 ++ .long 0x44ba ++ .uleb128 0x5 ++ .long .LASF708 ++ .byte 0x31 ++ .byte 0x3c ++ .byte 0x13 ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF709 ++ .byte 0x31 ++ .byte 0x3d ++ .byte 0x13 ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF710 ++ .byte 0x31 ++ .byte 0x3e ++ .byte 0x13 ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF711 ++ .byte 0x31 ++ .byte 0x47 ++ .byte 0x18 ++ .long 0x44ac ++ .uleb128 0x5 ++ .long .LASF712 ++ .byte 0x31 ++ .byte 0x49 ++ .byte 0x1b ++ .long 0x3927 ++ .uleb128 0x5 ++ .long .LASF713 ++ .byte 0x31 ++ .byte 0x4a ++ .byte 0x1b ++ .long 0x3927 ++ .uleb128 0x5 ++ .long .LASF714 ++ .byte 0x31 ++ .byte 0x4b ++ .byte 0x1b ++ .long 0x3927 ++ .uleb128 0x5 ++ .long .LASF715 ++ .byte 0x31 ++ .byte 0x57 ++ .byte 0x13 ++ .long 0x41a0 ++ .uleb128 0x5 ++ .long .LASF716 ++ .byte 0x31 ++ .byte 0x5a ++ .byte 0x1b ++ .long 0x3927 ++ .uleb128 0x5 ++ .long .LASF717 ++ .byte 0x31 ++ .byte 0x65 ++ .byte 0x15 ++ .long 0x45e5 ++ .uleb128 0x5 ++ .long .LASF718 ++ .byte 0x31 ++ .byte 0x66 ++ .byte 0x16 ++ .long 0x45f1 ++ .uleb128 0x13 ++ .long .LASF719 ++ .byte 0x60 ++ .byte 0x32 ++ .byte 0x33 ++ .byte 0x8 ++ .long 0x48ab ++ .uleb128 0x6 ++ .long .LASF720 ++ .byte 0x32 ++ .byte 0x37 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF721 ++ .byte 0x32 ++ .byte 0x38 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x8 ++ .uleb128 0x6 ++ .long .LASF722 ++ .byte 0x32 ++ .byte 0x3e ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x10 ++ .uleb128 0x6 ++ .long .LASF723 ++ .byte 0x32 ++ .byte 0x44 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x18 ++ .uleb128 0x6 ++ .long .LASF724 ++ .byte 0x32 ++ .byte 0x45 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x20 ++ .uleb128 0x6 ++ .long .LASF725 ++ .byte 0x32 ++ .byte 0x46 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x28 ++ .uleb128 0x6 ++ .long .LASF726 ++ .byte 0x32 ++ .byte 0x47 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x30 ++ .uleb128 0x6 ++ .long .LASF727 ++ .byte 0x32 ++ .byte 0x48 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x38 ++ .uleb128 0x6 ++ .long .LASF728 ++ .byte 0x32 ++ .byte 0x49 ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x40 ++ .uleb128 0x6 ++ .long .LASF729 ++ .byte 0x32 ++ .byte 0x4a ++ .byte 0x9 ++ .long 0x3f04 ++ .byte 0x48 ++ .uleb128 0x6 ++ .long .LASF730 ++ .byte 0x32 ++ .byte 0x4b ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x50 ++ .uleb128 0x6 ++ .long .LASF731 ++ .byte 0x32 ++ .byte 0x4c ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x51 ++ .uleb128 0x6 ++ .long .LASF732 ++ .byte 0x32 ++ .byte 0x4e ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x52 ++ .uleb128 0x6 ++ .long .LASF733 ++ .byte 0x32 ++ .byte 0x50 ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x53 ++ .uleb128 0x6 ++ .long .LASF734 ++ .byte 0x32 ++ .byte 0x52 ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x54 ++ .uleb128 0x6 ++ .long .LASF735 ++ .byte 0x32 ++ .byte 0x54 ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x55 ++ .uleb128 0x6 ++ .long .LASF736 ++ .byte 0x32 ++ .byte 0x5b ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x56 ++ .uleb128 0x6 ++ .long .LASF737 ++ .byte 0x32 ++ .byte 0x5c ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x57 ++ .uleb128 0x6 ++ .long .LASF738 ++ .byte 0x32 ++ .byte 0x5f ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x58 ++ .uleb128 0x6 ++ .long .LASF739 ++ .byte 0x32 ++ .byte 0x61 ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x59 ++ .uleb128 0x6 ++ .long .LASF740 ++ .byte 0x32 ++ .byte 0x63 ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x5a ++ .uleb128 0x6 ++ .long .LASF741 ++ .byte 0x32 ++ .byte 0x65 ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x5b ++ .uleb128 0x6 ++ .long .LASF742 ++ .byte 0x32 ++ .byte 0x6c ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x5c ++ .uleb128 0x6 ++ .long .LASF743 ++ .byte 0x32 ++ .byte 0x6d ++ .byte 0x8 ++ .long 0x39df ++ .byte 0x5d ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF744 ++ .byte 0x32 ++ .byte 0x7a ++ .byte 0xe ++ .long 0x3f04 ++ .long 0x48c6 ++ .uleb128 0x1 ++ .long 0x39eb ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x40 ++ .long .LASF746 ++ .byte 0x32 ++ .byte 0x7d ++ .byte 0x16 ++ .long 0x48d2 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4765 ++ .uleb128 0x2d ++ .long 0x3f04 ++ .long 0x48e8 ++ .uleb128 0x34 ++ .long 0x3927 ++ .byte 0x1 ++ .byte 0 ++ .uleb128 0x1b ++ .long .LASF747 ++ .byte 0x33 ++ .byte 0x9f ++ .byte 0xe ++ .long 0x48d8 ++ .uleb128 0x1b ++ .long .LASF748 ++ .byte 0x33 ++ .byte 0xa0 ++ .byte 0xc ++ .long 0x39eb ++ .uleb128 0x1b ++ .long .LASF749 ++ .byte 0x33 ++ .byte 0xa1 ++ .byte 0x11 ++ .long 0x41a0 ++ .uleb128 0x1b ++ .long .LASF750 ++ .byte 0x33 ++ .byte 0xa6 ++ .byte 0xe ++ .long 0x48d8 ++ .uleb128 0x1b ++ .long .LASF751 ++ .byte 0x33 ++ .byte 0xae ++ .byte 0xc ++ .long 0x39eb ++ .uleb128 0x1b ++ .long .LASF752 ++ .byte 0x33 ++ .byte 0xaf ++ .byte 0x11 ++ .long 0x41a0 ++ .uleb128 0x7c ++ .long .LASF753 ++ .byte 0x33 ++ .value 0x112 ++ .byte 0xc ++ .long 0x39eb ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4943 ++ .uleb128 0x7d ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2eb8 ++ .uleb128 0xa ++ .long 0x4944 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x3020 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3020 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x39df ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x39e6 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x250f ++ .uleb128 0xa ++ .long 0x4967 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x25a0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x250f ++ .uleb128 0x3a ++ .byte 0x8 ++ .byte 0x34 ++ .byte 0x3b ++ .byte 0x3 ++ .long .LASF755 ++ .long 0x49a6 ++ .uleb128 0x6 ++ .long .LASF756 ++ .byte 0x34 ++ .byte 0x3c ++ .byte 0x9 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x41 ++ .string "rem" ++ .byte 0x34 ++ .byte 0x3d ++ .byte 0x9 ++ .long 0x39eb ++ .byte 0x4 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF757 ++ .byte 0x34 ++ .byte 0x3e ++ .byte 0x5 ++ .long 0x497e ++ .uleb128 0x3a ++ .byte 0x10 ++ .byte 0x34 ++ .byte 0x43 ++ .byte 0x3 ++ .long .LASF758 ++ .long 0x49da ++ .uleb128 0x6 ++ .long .LASF756 ++ .byte 0x34 ++ .byte 0x44 ++ .byte 0xe ++ .long 0x41a0 ++ .byte 0 ++ .uleb128 0x41 ++ .string "rem" ++ .byte 0x34 ++ .byte 0x45 ++ .byte 0xe ++ .long 0x41a0 ++ .byte 0x8 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF759 ++ .byte 0x34 ++ .byte 0x46 ++ .byte 0x5 ++ .long 0x49b2 ++ .uleb128 0x3a ++ .byte 0x10 ++ .byte 0x34 ++ .byte 0x4d ++ .byte 0x3 ++ .long .LASF760 ++ .long 0x4a0e ++ .uleb128 0x6 ++ .long .LASF756 ++ .byte 0x34 ++ .byte 0x4e ++ .byte 0x13 ++ .long 0x4436 ++ .byte 0 ++ .uleb128 0x41 ++ .string "rem" ++ .byte 0x34 ++ .byte 0x4f ++ .byte 0x13 ++ .long 0x4436 ++ .byte 0x8 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF761 ++ .byte 0x34 ++ .byte 0x50 ++ .byte 0x5 ++ .long 0x49e6 ++ .uleb128 0x19 ++ .long .LASF762 ++ .byte 0x34 ++ .value 0x328 ++ .byte 0xf ++ .long 0x4a27 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4a2d ++ .uleb128 0x7e ++ .long 0x39eb ++ .long 0x4a41 ++ .uleb128 0x1 ++ .long 0x493d ++ .uleb128 0x1 ++ .long 0x493d ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF763 ++ .byte 0x34 ++ .value 0x253 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4a58 ++ .uleb128 0x1 ++ .long 0x4a58 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4a5e ++ .uleb128 0x7f ++ .uleb128 0x14 ++ .long .LASF764 ++ .byte 0x34 ++ .value 0x258 ++ .byte 0x12 ++ .long .LASF764 ++ .long 0x39eb ++ .long 0x4a7a ++ .uleb128 0x1 ++ .long 0x4a58 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF765 ++ .byte 0x35 ++ .byte 0x19 ++ .byte 0x1 ++ .long 0x390d ++ .long 0x4a90 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF766 ++ .byte 0x34 ++ .value 0x169 ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x4aa7 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF767 ++ .byte 0x34 ++ .value 0x16e ++ .byte 0x1 ++ .long 0x41a0 ++ .long 0x4abe ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF768 ++ .byte 0x36 ++ .byte 0x14 ++ .byte 0x1 ++ .long 0x3977 ++ .long 0x4ae8 ++ .uleb128 0x1 ++ .long 0x493d ++ .uleb128 0x1 ++ .long 0x493d ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x4a1a ++ .byte 0 ++ .uleb128 0x80 ++ .string "div" ++ .byte 0x34 ++ .value 0x354 ++ .byte 0xe ++ .long 0x49a6 ++ .long 0x4b05 ++ .uleb128 0x1 ++ .long 0x39eb ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF769 ++ .byte 0x34 ++ .value 0x27a ++ .byte 0xe ++ .long 0x3f04 ++ .long 0x4b1c ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF770 ++ .byte 0x34 ++ .value 0x356 ++ .byte 0xf ++ .long 0x49da ++ .long 0x4b38 ++ .uleb128 0x1 ++ .long 0x41a0 ++ .uleb128 0x1 ++ .long 0x41a0 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF771 ++ .byte 0x34 ++ .value 0x39a ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4b54 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF772 ++ .byte 0x37 ++ .byte 0x71 ++ .byte 0x1 ++ .long 0x391b ++ .long 0x4b74 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF773 ++ .byte 0x34 ++ .value 0x39d ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4b95 ++ .uleb128 0x1 ++ .long 0x3c1a ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x2f ++ .long .LASF776 ++ .byte 0x34 ++ .value 0x33e ++ .byte 0xd ++ .long 0x4bb7 ++ .uleb128 0x1 ++ .long 0x3977 ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x4a1a ++ .byte 0 ++ .uleb128 0x81 ++ .long .LASF774 ++ .byte 0x34 ++ .value 0x26f ++ .byte 0xd ++ .long 0x4bcb ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x59 ++ .long .LASF775 ++ .byte 0x34 ++ .value 0x1c5 ++ .byte 0xc ++ .long 0x39eb ++ .uleb128 0x2f ++ .long .LASF777 ++ .byte 0x34 ++ .value 0x1c7 ++ .byte 0xd ++ .long 0x4beb ++ .uleb128 0x1 ++ .long 0x3970 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF778 ++ .byte 0x34 ++ .byte 0x75 ++ .byte 0xf ++ .long 0x390d ++ .long 0x4c06 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4c06 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3f04 ++ .uleb128 0xe ++ .long .LASF779 ++ .byte 0x34 ++ .byte 0xb0 ++ .byte 0x11 ++ .long 0x41a0 ++ .long 0x4c2c ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4c06 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF780 ++ .byte 0x34 ++ .byte 0xb4 ++ .byte 0x1a ++ .long 0x3927 ++ .long 0x4c4c ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4c06 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF781 ++ .byte 0x34 ++ .value 0x310 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4c63 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF782 ++ .byte 0x37 ++ .byte 0x90 ++ .byte 0x1 ++ .long 0x391b ++ .long 0x4c83 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3c64 ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF783 ++ .byte 0x37 ++ .byte 0x53 ++ .byte 0x1 ++ .long 0x39eb ++ .long 0x4c9e ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x3c20 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF784 ++ .byte 0x34 ++ .value 0x35a ++ .byte 0x1e ++ .long 0x4a0e ++ .long 0x4cba ++ .uleb128 0x1 ++ .long 0x4436 ++ .uleb128 0x1 ++ .long 0x4436 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF785 ++ .byte 0x34 ++ .value 0x175 ++ .byte 0x1 ++ .long 0x4436 ++ .long 0x4cd1 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF786 ++ .byte 0x34 ++ .byte 0xc8 ++ .byte 0x16 ++ .long 0x4436 ++ .long 0x4cf1 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4c06 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF787 ++ .byte 0x34 ++ .byte 0xcd ++ .byte 0x1f ++ .long 0x445e ++ .long 0x4d11 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4c06 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF788 ++ .byte 0x34 ++ .byte 0x7b ++ .byte 0xe ++ .long 0x3906 ++ .long 0x4d2c ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4c06 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF789 ++ .byte 0x34 ++ .byte 0x7e ++ .byte 0x14 ++ .long 0x3914 ++ .long 0x4d47 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4c06 ++ .byte 0 ++ .uleb128 0x13 ++ .long .LASF790 ++ .byte 0x10 ++ .byte 0x38 ++ .byte 0xa ++ .byte 0x10 ++ .long 0x4d6f ++ .uleb128 0x6 ++ .long .LASF791 ++ .byte 0x38 ++ .byte 0xc ++ .byte 0xb ++ .long 0x45fd ++ .byte 0 ++ .uleb128 0x6 ++ .long .LASF792 ++ .byte 0x38 ++ .byte 0xd ++ .byte 0xf ++ .long 0x39f7 ++ .byte 0x8 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF793 ++ .byte 0x38 ++ .byte 0xe ++ .byte 0x3 ++ .long 0x4d47 ++ .uleb128 0x82 ++ .long .LASF934 ++ .byte 0x29 ++ .byte 0x2b ++ .byte 0xe ++ .uleb128 0x42 ++ .long .LASF794 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4d84 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3a20 ++ .uleb128 0x2d ++ .long 0x39df ++ .long 0x4da5 ++ .uleb128 0x34 ++ .long 0x3927 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4d7b ++ .uleb128 0x42 ++ .long .LASF795 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4dab ++ .uleb128 0x42 ++ .long .LASF796 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4db6 ++ .uleb128 0x2d ++ .long 0x39df ++ .long 0x4dd1 ++ .uleb128 0x34 ++ .long 0x3927 ++ .byte 0x13 ++ .byte 0 ++ .uleb128 0x5 ++ .long .LASF797 ++ .byte 0x39 ++ .byte 0x54 ++ .byte 0x12 ++ .long 0x4d6f ++ .uleb128 0xa ++ .long 0x4dd1 ++ .uleb128 0x1b ++ .long .LASF798 ++ .byte 0x39 ++ .byte 0x89 ++ .byte 0xe ++ .long 0x4dee ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3ba7 ++ .uleb128 0x1b ++ .long .LASF799 ++ .byte 0x39 ++ .byte 0x8a ++ .byte 0xe ++ .long 0x4dee ++ .uleb128 0x1b ++ .long .LASF800 ++ .byte 0x39 ++ .byte 0x8b ++ .byte 0xe ++ .long 0x4dee ++ .uleb128 0x1b ++ .long .LASF801 ++ .byte 0x3a ++ .byte 0x1a ++ .byte 0xc ++ .long 0x39eb ++ .uleb128 0x2d ++ .long 0x3bc0 ++ .long 0x4e24 ++ .uleb128 0x83 ++ .byte 0 ++ .uleb128 0x1b ++ .long .LASF802 ++ .byte 0x3a ++ .byte 0x1b ++ .byte 0x1a ++ .long 0x4e18 ++ .uleb128 0x1b ++ .long .LASF803 ++ .byte 0x3a ++ .byte 0x1e ++ .byte 0xc ++ .long 0x39eb ++ .uleb128 0x1b ++ .long .LASF804 ++ .byte 0x3a ++ .byte 0x1f ++ .byte 0x1a ++ .long 0x4e18 ++ .uleb128 0x2f ++ .long .LASF805 ++ .byte 0x39 ++ .value 0x2f5 ++ .byte 0xd ++ .long 0x4e5b ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF806 ++ .byte 0x39 ++ .byte 0xd5 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4e71 ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF807 ++ .byte 0x39 ++ .value 0x2f7 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4e88 ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF808 ++ .byte 0x39 ++ .value 0x2f9 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4e9f ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF809 ++ .byte 0x39 ++ .byte 0xda ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4eb5 ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF810 ++ .byte 0x39 ++ .value 0x1e5 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4ecc ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF811 ++ .byte 0x39 ++ .value 0x2db ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4ee8 ++ .uleb128 0x1 ++ .long 0x4dee ++ .uleb128 0x1 ++ .long 0x4ee8 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4dd1 ++ .uleb128 0xe ++ .long .LASF812 ++ .byte 0x3b ++ .byte 0xff ++ .byte 0x1 ++ .long 0x3f04 ++ .long 0x4f0e ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x39eb ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF813 ++ .byte 0x39 ++ .byte 0xf6 ++ .byte 0xe ++ .long 0x4dee ++ .long 0x4f29 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF814 ++ .byte 0x3b ++ .value 0x11c ++ .byte 0x1 ++ .long 0x391b ++ .long 0x4f4f ++ .uleb128 0x1 ++ .long 0x3977 ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x391b ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF815 ++ .byte 0x39 ++ .byte 0xfc ++ .byte 0xe ++ .long 0x4dee ++ .long 0x4f6f ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF816 ++ .byte 0x39 ++ .value 0x2ac ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4f90 ++ .uleb128 0x1 ++ .long 0x4dee ++ .uleb128 0x1 ++ .long 0x41a0 ++ .uleb128 0x1 ++ .long 0x39eb ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF817 ++ .byte 0x39 ++ .value 0x2e0 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4fac ++ .uleb128 0x1 ++ .long 0x4dee ++ .uleb128 0x1 ++ .long 0x4fac ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x4ddd ++ .uleb128 0x9 ++ .long .LASF818 ++ .byte 0x39 ++ .value 0x2b1 ++ .byte 0x11 ++ .long 0x41a0 ++ .long 0x4fc9 ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF819 ++ .byte 0x39 ++ .value 0x1e6 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x4fe0 ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x40 ++ .long .LASF820 ++ .byte 0x3c ++ .byte 0x2f ++ .byte 0x1 ++ .long 0x39eb ++ .uleb128 0x2f ++ .long .LASF821 ++ .byte 0x39 ++ .value 0x307 ++ .byte 0xd ++ .long 0x4fff ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF822 ++ .byte 0x39 ++ .byte 0x92 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x5015 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF823 ++ .byte 0x39 ++ .byte 0x94 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x5030 ++ .uleb128 0x1 ++ .long 0x3bba ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x2f ++ .long .LASF824 ++ .byte 0x39 ++ .value 0x2b6 ++ .byte 0xd ++ .long 0x5043 ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x2f ++ .long .LASF825 ++ .byte 0x39 ++ .value 0x130 ++ .byte 0xd ++ .long 0x505b ++ .uleb128 0x1 ++ .long 0x4dee ++ .uleb128 0x1 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF826 ++ .byte 0x39 ++ .value 0x134 ++ .byte 0xc ++ .long 0x39eb ++ .long 0x5081 ++ .uleb128 0x1 ++ .long 0x4dee ++ .uleb128 0x1 ++ .long 0x3f04 ++ .uleb128 0x1 ++ .long 0x39eb ++ .uleb128 0x1 ++ .long 0x391b ++ .byte 0 ++ .uleb128 0x40 ++ .long .LASF827 ++ .byte 0x39 ++ .byte 0xad ++ .byte 0xe ++ .long 0x4dee ++ .uleb128 0xe ++ .long .LASF828 ++ .byte 0x39 ++ .byte 0xbb ++ .byte 0xe ++ .long 0x3f04 ++ .long 0x50a3 ++ .uleb128 0x1 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x9 ++ .long .LASF829 ++ .byte 0x39 ++ .value 0x27f ++ .byte 0xc ++ .long 0x39eb ++ .long 0x50bf ++ .uleb128 0x1 ++ .long 0x39eb ++ .uleb128 0x1 ++ .long 0x4dee ++ .byte 0 ++ .uleb128 0x1b ++ .long .LASF830 ++ .byte 0x3d ++ .byte 0x2d ++ .byte 0xe ++ .long 0x3f04 ++ .uleb128 0x1b ++ .long .LASF831 ++ .byte 0x3d ++ .byte 0x2e ++ .byte 0xe ++ .long 0x3f04 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x27b8 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x27c5 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x317b ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x3187 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x52 ++ .uleb128 0xa ++ .long 0x50ef ++ .uleb128 0x3b ++ .byte 0x8 ++ .long 0x250f ++ .uleb128 0x2d ++ .long 0x39df ++ .long 0x5110 ++ .uleb128 0x34 ++ .long 0x3927 ++ .byte 0xf ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x45 ++ .uleb128 0xa ++ .long 0x5110 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x1ace ++ .uleb128 0xa ++ .long 0x511b ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x117 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x302 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x30f ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x1ace ++ .uleb128 0x3b ++ .byte 0x8 ++ .long 0x45 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x45 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2891 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2984 ++ .uleb128 0x5 ++ .long .LASF832 ++ .byte 0x3e ++ .byte 0x26 ++ .byte 0x1b ++ .long 0x3927 ++ .uleb128 0x5 ++ .long .LASF833 ++ .byte 0x3f ++ .byte 0x30 ++ .byte 0x1a ++ .long 0x516e ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x455c ++ .uleb128 0xe ++ .long .LASF834 ++ .byte 0x3e ++ .byte 0x9f ++ .byte 0xc ++ .long 0x39eb ++ .long 0x518f ++ .uleb128 0x1 ++ .long 0x3979 ++ .uleb128 0x1 ++ .long 0x5156 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF835 ++ .byte 0x3f ++ .byte 0x37 ++ .byte 0xf ++ .long 0x3979 ++ .long 0x51aa ++ .uleb128 0x1 ++ .long 0x3979 ++ .uleb128 0x1 ++ .long 0x5162 ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF836 ++ .byte 0x3f ++ .byte 0x34 ++ .byte 0x12 ++ .long 0x5162 ++ .long 0x51c0 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0xe ++ .long .LASF837 ++ .byte 0x3e ++ .byte 0x9b ++ .byte 0x11 ++ .long 0x5156 ++ .long 0x51d6 ++ .uleb128 0x1 ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x1ad3 ++ .uleb128 0xa ++ .long 0x51d6 ++ .uleb128 0x5 ++ .long .LASF404 ++ .byte 0x1 ++ .byte 0x17 ++ .byte 0x7 ++ .long 0x39eb ++ .uleb128 0xa ++ .long 0x51e1 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3434 ++ .uleb128 0xa ++ .long 0x51f2 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x3bc0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x3698 ++ .uleb128 0xa ++ .long 0x5203 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x3434 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x2c9e ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x2d03 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x31f5 ++ .uleb128 0xa ++ .long 0x5220 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x3f0a ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x342f ++ .uleb128 0xa ++ .long 0x5231 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x31f5 ++ .uleb128 0x1c ++ .long .LASF838 ++ .long 0x20cf ++ .byte 0 ++ .uleb128 0x1c ++ .long .LASF839 ++ .long 0x2149 ++ .byte 0x1 ++ .uleb128 0x1c ++ .long .LASF840 ++ .long 0x3032 ++ .byte 0x1 ++ .uleb128 0x1c ++ .long .LASF841 ++ .long 0x303e ++ .byte 0x1f ++ .uleb128 0x84 ++ .long .LASF842 ++ .long 0x304a ++ .long 0x7fffffff ++ .uleb128 0x43 ++ .long .LASF843 ++ .long 0x3056 ++ .sleb128 -2147483648 ++ .uleb128 0x1c ++ .long .LASF844 ++ .long 0x36ce ++ .byte 0x26 ++ .uleb128 0x44 ++ .long .LASF845 ++ .long 0x3715 ++ .value 0x134 ++ .uleb128 0x44 ++ .long .LASF846 ++ .long 0x375c ++ .value 0x1344 ++ .uleb128 0x1c ++ .long .LASF847 ++ .long 0x377f ++ .byte 0 ++ .uleb128 0x1c ++ .long .LASF848 ++ .long 0x378b ++ .byte 0x40 ++ .uleb128 0x1c ++ .long .LASF849 ++ .long 0x37c6 ++ .byte 0x1 ++ .uleb128 0x1c ++ .long .LASF850 ++ .long 0x37d2 ++ .byte 0x7 ++ .uleb128 0x1c ++ .long .LASF851 ++ .long 0x37de ++ .byte 0x7f ++ .uleb128 0x1c ++ .long .LASF852 ++ .long 0x380d ++ .byte 0x1 ++ .uleb128 0x1c ++ .long .LASF853 ++ .long 0x3819 ++ .byte 0xf ++ .uleb128 0x44 ++ .long .LASF854 ++ .long 0x3825 ++ .value 0x7fff ++ .uleb128 0x43 ++ .long .LASF855 ++ .long 0x3831 ++ .sleb128 -32768 ++ .uleb128 0x1c ++ .long .LASF856 ++ .long 0x3854 ++ .byte 0x1 ++ .uleb128 0x1c ++ .long .LASF857 ++ .long 0x3860 ++ .byte 0x3f ++ .uleb128 0x85 ++ .long .LASF858 ++ .long 0x386c ++ .quad 0x7fffffffffffffff ++ .uleb128 0x43 ++ .long .LASF859 ++ .long 0x3878 ++ .sleb128 -9223372036854775808 ++ .uleb128 0xb ++ .long 0x363b ++ .long 0x534a ++ .byte 0x3 ++ .long 0x5354 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5209 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x3698 ++ .uleb128 0x21 ++ .long 0x388e ++ .byte 0x3 ++ .long 0x5391 ++ .uleb128 0xc ++ .long .LASF402 ++ .long 0x3bba ++ .uleb128 0xc ++ .long .LASF497 ++ .long 0x45 ++ .uleb128 0x17 ++ .long .LASF860 ++ .byte 0x22 ++ .value 0x3da ++ .byte 0x3f ++ .long 0x5354 ++ .uleb128 0x17 ++ .long .LASF861 ++ .byte 0x22 ++ .value 0x3db ++ .byte 0x38 ++ .long 0x5354 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x342f ++ .uleb128 0x21 ++ .long 0x38c0 ++ .byte 0x3 ++ .long 0x53d7 ++ .uleb128 0xc ++ .long .LASF530 ++ .long 0x3bba ++ .uleb128 0xc ++ .long .LASF531 ++ .long 0x3f04 ++ .uleb128 0xc ++ .long .LASF497 ++ .long 0x45 ++ .uleb128 0x17 ++ .long .LASF860 ++ .byte 0x22 ++ .value 0x3ce ++ .byte 0x40 ++ .long 0x5354 ++ .uleb128 0x17 ++ .long .LASF861 ++ .byte 0x22 ++ .value 0x3cf ++ .byte 0x39 ++ .long 0x5391 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x33fc ++ .long 0x53e5 ++ .byte 0x3 ++ .long 0x53ef ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5237 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x322e ++ .long 0x53fd ++ .byte 0x2 ++ .long 0x5414 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5226 ++ .uleb128 0x2a ++ .string "__i" ++ .byte 0x22 ++ .value 0x323 ++ .byte 0x2a ++ .long 0x522b ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x53ef ++ .long .LASF868 ++ .long 0x5425 ++ .long 0x5430 ++ .uleb128 0xd ++ .long 0x53fd ++ .uleb128 0xd ++ .long 0x5406 ++ .byte 0 ++ .uleb128 0x21 ++ .long 0x2d4d ++ .byte 0x3 ++ .long 0x5450 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39e6 ++ .uleb128 0x1f ++ .string "__r" ++ .byte 0x1b ++ .byte 0x8a ++ .byte 0x14 ++ .long 0x4961 ++ .byte 0 ++ .uleb128 0x21 ++ .long 0x2d70 ++ .byte 0x3 ++ .long 0x5470 ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39e6 ++ .uleb128 0x1f ++ .string "__r" ++ .byte 0x1b ++ .byte 0x2f ++ .byte 0x16 ++ .long 0x4961 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2fd2 ++ .long 0x547e ++ .byte 0x3 ++ .long 0x5499 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x494a ++ .uleb128 0x1f ++ .string "__p" ++ .byte 0x1f ++ .byte 0x77 ++ .byte 0x1a ++ .long 0x2f20 ++ .uleb128 0x1 ++ .long 0x2fc5 ++ .byte 0 ++ .uleb128 0xb ++ .long 0xe0d ++ .long 0x54a7 ++ .byte 0x3 ++ .long 0x54be ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x17 ++ .long .LASF863 ++ .byte 0x3 ++ .value 0x558 ++ .byte 0x22 ++ .long 0x5138 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x12f4 ++ .long 0x54cc ++ .byte 0x3 ++ .long 0x550a ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x17 ++ .long .LASF864 ++ .byte 0x3 ++ .value 0x84f ++ .byte 0x20 ++ .long 0x108d ++ .uleb128 0x17 ++ .long .LASF865 ++ .byte 0x3 ++ .value 0x84f ++ .byte 0x37 ++ .long 0x108d ++ .uleb128 0x17 ++ .long .LASF866 ++ .byte 0x3 ++ .value 0x850 ++ .byte 0x10 ++ .long 0x3f04 ++ .uleb128 0x17 ++ .long .LASF867 ++ .byte 0x3 ++ .value 0x850 ++ .byte 0x1e ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x365b ++ .long 0x5521 ++ .byte 0x2 ++ .long 0x5538 ++ .uleb128 0xc ++ .long .LASF515 ++ .long 0x3f04 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x51f8 ++ .uleb128 0x2a ++ .string "__i" ++ .byte 0x22 ++ .value 0x32b ++ .byte 0x1f ++ .long 0x5391 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x550a ++ .long .LASF869 ++ .long 0x5552 ++ .long 0x555d ++ .uleb128 0xc ++ .long .LASF515 ++ .long 0x3f04 ++ .uleb128 0xd ++ .long 0x5521 ++ .uleb128 0xd ++ .long 0x552a ++ .byte 0 ++ .uleb128 0xb ++ .long 0x8a0 ++ .long 0x556b ++ .byte 0x3 ++ .long 0x5575 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x860 ++ .long 0x5583 ++ .byte 0x3 ++ .long 0x558d ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x3b1 ++ .long 0x559b ++ .byte 0x3 ++ .long 0x55cc ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .uleb128 0x17 ++ .long .LASF791 ++ .byte 0x3 ++ .value 0x14d ++ .byte 0x1a ++ .long 0x117 ++ .uleb128 0x17 ++ .long .LASF870 ++ .byte 0x3 ++ .value 0x14d ++ .byte 0x2b ++ .long 0x117 ++ .uleb128 0x3c ++ .long .LASF872 ++ .byte 0x3 ++ .value 0x14f ++ .byte 0xd ++ .long 0x4495 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x35e ++ .long 0x55da ++ .byte 0x3 ++ .long 0x55fe ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .uleb128 0x17 ++ .long .LASF791 ++ .byte 0x3 ++ .value 0x13a ++ .byte 0x1a ++ .long 0x117 ++ .uleb128 0x2a ++ .string "__s" ++ .byte 0x3 ++ .value 0x13a ++ .byte 0x2d ++ .long 0x3bba ++ .byte 0 ++ .uleb128 0x21 ++ .long 0x2cdf ++ .byte 0x3 ++ .long 0x5615 ++ .uleb128 0x1f ++ .string "__r" ++ .byte 0x19 ++ .byte 0x92 ++ .byte 0x31 ++ .long 0x521a ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2ee0 ++ .long 0x5623 ++ .byte 0x2 ++ .long 0x5632 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x494a ++ .uleb128 0x1 ++ .long 0x494f ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5615 ++ .long .LASF871 ++ .long 0x5643 ++ .long 0x564e ++ .uleb128 0xd ++ .long 0x5623 ++ .uleb128 0xd ++ .long 0x562c ++ .byte 0 ++ .uleb128 0x21 ++ .long 0x2d93 ++ .byte 0x3 ++ .long 0x566e ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39df ++ .uleb128 0x1f ++ .string "__r" ++ .byte 0x1b ++ .byte 0x8a ++ .byte 0x14 ++ .long 0x495b ++ .byte 0 ++ .uleb128 0x21 ++ .long 0x2db6 ++ .byte 0x3 ++ .long 0x568e ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x39df ++ .uleb128 0x1f ++ .string "__r" ++ .byte 0x1b ++ .byte 0x2f ++ .byte 0x16 ++ .long 0x495b ++ .byte 0 ++ .uleb128 0x21 ++ .long 0x2809 ++ .byte 0x3 ++ .long 0x56c0 ++ .uleb128 0x2a ++ .string "__a" ++ .byte 0x11 ++ .value 0x1d4 ++ .byte 0x22 ++ .long 0x50d7 ++ .uleb128 0x2a ++ .string "__p" ++ .byte 0x11 ++ .value 0x1d4 ++ .byte 0x2f ++ .long 0x278b ++ .uleb128 0x2a ++ .string "__n" ++ .byte 0x11 ++ .value 0x1d4 ++ .byte 0x3e ++ .long 0x27ca ++ .byte 0 ++ .uleb128 0xb ++ .long 0x7a7 ++ .long 0x56ce ++ .byte 0x3 ++ .long 0x570f ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x17 ++ .long .LASF863 ++ .byte 0x3 ++ .value 0x29d ++ .byte 0x25 ++ .long 0x5138 ++ .uleb128 0x86 ++ .uleb128 0x3c ++ .long .LASF873 ++ .byte 0x3 ++ .value 0x2af ++ .byte 0x12 ++ .long 0x392e ++ .uleb128 0x3c ++ .long .LASF874 ++ .byte 0x3 ++ .value 0x2b0 ++ .byte 0xc ++ .long 0x250f ++ .uleb128 0x3c ++ .long .LASF875 ++ .byte 0x3 ++ .value 0x2b2 ++ .byte 0xc ++ .long 0x3f04 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x1a7f ++ .long 0x5726 ++ .byte 0x3 ++ .long 0x574a ++ .uleb128 0xc ++ .long .LASF253 ++ .long 0x3f04 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x17 ++ .long .LASF876 ++ .byte 0x3 ++ .value 0x5c2 ++ .byte 0x1f ++ .long 0x3f04 ++ .uleb128 0x17 ++ .long .LASF877 ++ .byte 0x3 ++ .value 0x5c2 ++ .byte 0x37 ++ .long 0x3f04 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2ae4 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2ba5 ++ .uleb128 0xa ++ .long 0x5750 ++ .uleb128 0xb ++ .long 0x2af1 ++ .long 0x5769 ++ .byte 0x3 ++ .long 0x5773 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5756 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2b11 ++ .long 0x5781 ++ .byte 0x3 ++ .long 0x578b ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5756 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2b31 ++ .long 0x5799 ++ .byte 0x3 ++ .long 0x57a3 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5756 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x5af ++ .long 0x57b1 ++ .byte 0x2 ++ .long 0x57c8 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x2a ++ .string "__a" ++ .byte 0x3 ++ .value 0x1bc ++ .byte 0x22 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x57a3 ++ .long .LASF878 ++ .long 0x57d9 ++ .long 0x57e4 ++ .uleb128 0xd ++ .long 0x57b1 ++ .uleb128 0xd ++ .long 0x57ba ++ .byte 0 ++ .uleb128 0xb ++ .long 0x1512 ++ .long 0x57f2 ++ .byte 0x3 ++ .long 0x57fc ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x593 ++ .long 0x580a ++ .byte 0x2 ++ .long 0x5814 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x57fc ++ .long .LASF879 ++ .long 0x5825 ++ .long 0x582b ++ .uleb128 0xd ++ .long 0x580a ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2adb ++ .uleb128 0xa ++ .long 0x582b ++ .uleb128 0xb ++ .long 0x2b51 ++ .long 0x5844 ++ .byte 0x2 ++ .long 0x584e ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5831 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5836 ++ .long .LASF880 ++ .long 0x585f ++ .long 0x5865 ++ .uleb128 0xd ++ .long 0x5844 ++ .byte 0 ++ .uleb128 0x5a ++ .long 0x1197 ++ .long 0x5872 ++ .long 0x58b0 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x17 ++ .long .LASF791 ++ .byte 0x3 ++ .value 0x794 ++ .byte 0x19 ++ .long 0x117 ++ .uleb128 0x17 ++ .long .LASF881 ++ .byte 0x3 ++ .value 0x794 ++ .byte 0x2a ++ .long 0x117 ++ .uleb128 0x2a ++ .string "__s" ++ .byte 0x3 ++ .value 0x794 ++ .byte 0x3e ++ .long 0x3bba ++ .uleb128 0x17 ++ .long .LASF882 ++ .byte 0x3 ++ .value 0x795 ++ .byte 0x12 ++ .long 0x117 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x33f ++ .long 0x58be ++ .byte 0x3 ++ .long 0x58c8 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x1dd ++ .long 0x58d6 ++ .byte 0x3 ++ .long 0x58e0 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x253e ++ .long 0x58ee ++ .byte 0x2 ++ .long 0x5904 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x496d ++ .uleb128 0x1f ++ .string "__a" ++ .byte 0xe ++ .byte 0x8c ++ .byte 0x22 ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x58e0 ++ .long .LASF883 ++ .long 0x5915 ++ .long 0x5920 ++ .uleb128 0xd ++ .long 0x58ee ++ .uleb128 0xd ++ .long 0x58f7 ++ .byte 0 ++ .uleb128 0x21 ++ .long 0x2c7a ++ .byte 0x3 ++ .long 0x5937 ++ .uleb128 0x1f ++ .string "__r" ++ .byte 0x19 ++ .byte 0x92 ++ .byte 0x31 ++ .long 0x5214 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x299 ++ .long 0x5945 ++ .byte 0x3 ++ .long 0x595b ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x35 ++ .long .LASF884 ++ .byte 0x3 ++ .byte 0xf0 ++ .byte 0x1c ++ .long 0x117 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x1b66 ++ .uleb128 0xa ++ .long 0x595b ++ .uleb128 0x5a ++ .long 0x1ae9 ++ .long 0x5973 ++ .long 0x598a ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5961 ++ .uleb128 0x87 ++ .long .LASF885 ++ .byte 0x2 ++ .byte 0xb4 ++ .byte 0x10 ++ .long 0x1adc ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2b6d ++ .long 0x5998 ++ .byte 0x2 ++ .long 0x59ab ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5831 ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x598a ++ .long .LASF887 ++ .long 0x59bc ++ .long 0x59c2 ++ .uleb128 0xd ++ .long 0x5998 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x598a ++ .long .LASF888 ++ .long 0x59d3 ++ .long 0x59d9 ++ .uleb128 0xd ++ .long 0x5998 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x1b08 ++ .long 0x59e7 ++ .byte 0x2 ++ .long 0x59fd ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x51dc ++ .uleb128 0x35 ++ .long .LASF889 ++ .byte 0x2 ++ .byte 0x6f ++ .byte 0x2a ++ .long 0x2a28 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x59d9 ++ .long .LASF890 ++ .long 0x5a0e ++ .long 0x5a19 ++ .uleb128 0xd ++ .long 0x59e7 ++ .uleb128 0xd ++ .long 0x59f0 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2a6f ++ .uleb128 0xa ++ .long 0x5a19 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x493d ++ .uleb128 0xa ++ .long 0x5a24 ++ .uleb128 0xb ++ .long 0x2a78 ++ .long 0x5a3d ++ .byte 0x2 ++ .long 0x5a59 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5a1f ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .uleb128 0x7 ++ .long .LASF891 ++ .long 0x5a2a ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5a2f ++ .long .LASF892 ++ .long 0x5a6a ++ .long 0x5a75 ++ .uleb128 0xd ++ .long 0x5a3d ++ .uleb128 0xd ++ .long 0x5a4f ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2aa2 ++ .long 0x5a83 ++ .byte 0x2 ++ .long 0x5a9f ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5a1f ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .uleb128 0x7 ++ .long .LASF891 ++ .long 0x5a2a ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5a75 ++ .long .LASF893 ++ .long 0x5ab0 ++ .long 0x5abb ++ .uleb128 0xd ++ .long 0x5a83 ++ .uleb128 0xd ++ .long 0x5a95 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x2dd9 ++ .uleb128 0xa ++ .long 0x5abb ++ .uleb128 0xb ++ .long 0x2de2 ++ .long 0x5ad4 ++ .byte 0x2 ++ .long 0x5ae7 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5ac1 ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5ac6 ++ .long .LASF894 ++ .long 0x5af8 ++ .long 0x5afe ++ .uleb128 0xd ++ .long 0x5ad4 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5ac6 ++ .long .LASF895 ++ .long 0x5b0f ++ .long 0x5b15 ++ .uleb128 0xd ++ .long 0x5ad4 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2e08 ++ .long 0x5b23 ++ .byte 0x2 ++ .long 0x5b2d ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5ac1 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5b15 ++ .long .LASF896 ++ .long 0x5b3e ++ .long 0x5b44 ++ .uleb128 0xd ++ .long 0x5b23 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x9fa ++ .long 0x5b52 ++ .byte 0x3 ++ .long 0x5b5c ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x65 ++ .long 0x5b6a ++ .byte 0x2 ++ .long 0x5b8c ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x50f5 ++ .uleb128 0x35 ++ .long .LASF897 ++ .byte 0x3 ++ .byte 0xa0 ++ .byte 0x17 ++ .long 0xd3 ++ .uleb128 0x1f ++ .string "__a" ++ .byte 0x3 ++ .byte 0xa0 ++ .byte 0x2c ++ .long 0x4972 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5b5c ++ .long .LASF898 ++ .long 0x5b9d ++ .long 0x5bad ++ .uleb128 0xd ++ .long 0x5b6a ++ .uleb128 0xd ++ .long 0x5b73 ++ .uleb128 0xd ++ .long 0x5b7f ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2f00 ++ .long 0x5bbb ++ .byte 0x2 ++ .long 0x5bce ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x494a ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5bad ++ .long .LASF899 ++ .long 0x5bdf ++ .long 0x5be5 ++ .uleb128 0xd ++ .long 0x5bbb ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2ec5 ++ .long 0x5bf3 ++ .byte 0x2 ++ .long 0x5bfd ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x494a ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5be5 ++ .long .LASF900 ++ .long 0x5c0e ++ .long 0x5c14 ++ .uleb128 0xd ++ .long 0x5bf3 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x21a ++ .long 0x5c22 ++ .byte 0x3 ++ .long 0x5c38 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x1f ++ .string "__n" ++ .byte 0x3 ++ .byte 0xda ++ .byte 0x1f ++ .long 0x117 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x175 ++ .long 0x5c46 ++ .byte 0x3 ++ .long 0x5c5c ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x35 ++ .long .LASF901 ++ .byte 0x3 ++ .byte 0xba ++ .byte 0x1b ++ .long 0x117 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x239 ++ .long 0x5c6a ++ .byte 0x3 ++ .long 0x5c74 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x89 ++ .long 0x5c82 ++ .byte 0x2 ++ .long 0x5ca4 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x50f5 ++ .uleb128 0x35 ++ .long .LASF897 ++ .byte 0x3 ++ .byte 0xa3 ++ .byte 0x17 ++ .long 0xd3 ++ .uleb128 0x1f ++ .string "__a" ++ .byte 0x3 ++ .byte 0xa3 ++ .byte 0x27 ++ .long 0x50fa ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5c74 ++ .long .LASF902 ++ .long 0x5cb5 ++ .long 0x5cc5 ++ .uleb128 0xd ++ .long 0x5c82 ++ .uleb128 0xd ++ .long 0x5c8b ++ .uleb128 0xd ++ .long 0x5c97 ++ .byte 0 ++ .uleb128 0x3b ++ .byte 0x8 ++ .long 0x2bf3 ++ .uleb128 0x21 ++ .long 0x2e37 ++ .byte 0x3 ++ .long 0x5ceb ++ .uleb128 0x1a ++ .string "_Tp" ++ .long 0x4978 ++ .uleb128 0x1f ++ .string "__t" ++ .byte 0x1b ++ .byte 0x63 ++ .byte 0x10 ++ .long 0x4978 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x320 ++ .long 0x5cf9 ++ .byte 0x3 ++ .long 0x5d03 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x1b2 ++ .long 0x5d11 ++ .byte 0x3 ++ .long 0x5d1b ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x27f ++ .long 0x5d29 ++ .byte 0x3 ++ .long 0x5d33 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x194 ++ .long 0x5d41 ++ .byte 0x3 ++ .long 0x5d4b ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5121 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x1c0f ++ .uleb128 0xa ++ .long 0x5d4b ++ .uleb128 0xb ++ .long 0x1b82 ++ .long 0x5d64 ++ .byte 0x3 ++ .long 0x5d6e ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5d51 ++ .byte 0 ++ .uleb128 0x8 ++ .byte 0x8 ++ .long 0x1b6b ++ .uleb128 0xa ++ .long 0x5d6e ++ .uleb128 0xb ++ .long 0x1ba2 ++ .long 0x5d87 ++ .byte 0x2 ++ .long 0x5da3 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5d74 ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .uleb128 0x7 ++ .long .LASF891 ++ .long 0x5a2a ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5d79 ++ .long .LASF903 ++ .long 0x5db4 ++ .long 0x5dba ++ .uleb128 0xd ++ .long 0x5d87 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5d79 ++ .long .LASF904 ++ .long 0x5dcb ++ .long 0x5dd1 ++ .uleb128 0xd ++ .long 0x5d87 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x1bcd ++ .long 0x5ddf ++ .byte 0x2 ++ .long 0x5dfb ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5d74 ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .uleb128 0x7 ++ .long .LASF891 ++ .long 0x5a2a ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5dd1 ++ .long .LASF905 ++ .long 0x5e0c ++ .long 0x5e12 ++ .uleb128 0xd ++ .long 0x5ddf ++ .byte 0 ++ .uleb128 0x5b ++ .long 0x1b28 ++ .byte 0x2 ++ .byte 0x41 ++ .byte 0xb ++ .long 0x5e23 ++ .byte 0x2 ++ .long 0x5e36 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x51dc ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5e12 ++ .long .LASF906 ++ .long 0x5e47 ++ .long 0x5e4d ++ .uleb128 0xd ++ .long 0x5e23 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5e12 ++ .long .LASF907 ++ .long 0x5e5e ++ .long 0x5e64 ++ .uleb128 0xd ++ .long 0x5e23 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2583 ++ .long 0x5e72 ++ .byte 0x2 ++ .long 0x5e85 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x496d ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5e64 ++ .long .LASF908 ++ .long 0x5e96 ++ .long 0x5e9c ++ .uleb128 0xd ++ .long 0x5e72 ++ .byte 0 ++ .uleb128 0xb ++ .long 0x2523 ++ .long 0x5eaa ++ .byte 0x2 ++ .long 0x5eb4 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x496d ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5e9c ++ .long .LASF909 ++ .long 0x5ec5 ++ .long 0x5ecb ++ .uleb128 0xd ++ .long 0x5eaa ++ .byte 0 ++ .uleb128 0xb ++ .long 0x786 ++ .long 0x5ed9 ++ .byte 0x2 ++ .long 0x5eec ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x5116 ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5ecb ++ .long .LASF910 ++ .long 0x5efd ++ .long 0x5f03 ++ .uleb128 0xd ++ .long 0x5ed9 ++ .byte 0 ++ .uleb128 0x5b ++ .long 0xba ++ .byte 0x3 ++ .byte 0x9a ++ .byte 0xe ++ .long 0x5f14 ++ .byte 0x2 ++ .long 0x5f27 ++ .uleb128 0x7 ++ .long .LASF862 ++ .long 0x50f5 ++ .uleb128 0x7 ++ .long .LASF886 ++ .long 0x39f2 ++ .byte 0 ++ .uleb128 0x12 ++ .long 0x5f03 ++ .long .LASF911 ++ .long 0x5f38 ++ .long 0x5f3e ++ .uleb128 0xd ++ .long 0x5f14 ++ .byte 0 ++ .uleb128 0x88 ++ .long .LASF912 ++ .byte 0x1 ++ .byte 0x21 ++ .byte 0x1 ++ .long 0x39eb ++ .quad .LFB1647 ++ .quad .LFE1647-.LFB1647 ++ .uleb128 0x1 ++ .byte 0x9c ++ .long 0x5f7b ++ .uleb128 0x45 ++ .quad .LVL12 ++ .long 0x5f7b ++ .uleb128 0x89 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x91 ++ .sleb128 -28 ++ .uleb128 0x3 ++ .byte 0xa ++ .value 0x4d2 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8a ++ .long .LASF935 ++ .byte 0x1 ++ .byte 0x1a ++ .byte 0x1 ++ .quad .LFB1646 ++ .quad .LFE1646-.LFB1646 ++ .uleb128 0x1 ++ .byte 0x9c ++ .long 0x60a8 ++ .uleb128 0x8b ++ .string "t" ++ .byte 0x1 ++ .byte 0x1a ++ .byte 0x13 ++ .long 0x60a8 ++ .long .LLST0 ++ .long .LVUS0 ++ .uleb128 0x8c ++ .string "oss" ++ .byte 0x1 ++ .byte 0x1c ++ .byte 0x16 ++ .long 0x2e5a ++ .uleb128 0x3 ++ .byte 0x91 ++ .sleb128 -416 ++ .uleb128 0x8d ++ .long 0x5d56 ++ .quad .LBI403 ++ .byte .LVU8 ++ .quad .LBB403 ++ .quad .LBE403-.LBB403 ++ .byte 0x1 ++ .byte 0x1d ++ .byte 0x12 ++ .long 0x600e ++ .uleb128 0x8e ++ .long 0x5d64 ++ .long .LLST1 ++ .long .LVUS1 ++ .uleb128 0x45 ++ .quad .LVL5 ++ .long 0x5966 ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x73 ++ .sleb128 0 ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x54 ++ .uleb128 0x3 ++ .byte 0x91 ++ .sleb128 -408 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x36 ++ .quad .LVL2 ++ .long 0x5dfb ++ .long 0x6026 ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x77 ++ .sleb128 0 ++ .byte 0 ++ .uleb128 0x36 ++ .quad .LVL3 ++ .long 0x60d3 ++ .long 0x603e ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x8 ++ .byte 0x20 ++ .byte 0 ++ .uleb128 0x36 ++ .quad .LVL6 ++ .long 0x60dc ++ .long 0x6063 ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x73 ++ .sleb128 0 ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x54 ++ .uleb128 0x9 ++ .byte 0x3 ++ .quad _ZTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE ++ .byte 0 ++ .uleb128 0x36 ++ .quad .LVL8 ++ .long 0x60e5 ++ .long 0x607b ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x73 ++ .sleb128 0 ++ .byte 0 ++ .uleb128 0x36 ++ .quad .LVL10 ++ .long 0x5dba ++ .long 0x6093 ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x77 ++ .sleb128 0 ++ .byte 0 ++ .uleb128 0x45 ++ .quad .LVL11 ++ .long 0x60ee ++ .uleb128 0x26 ++ .uleb128 0x1 ++ .byte 0x55 ++ .uleb128 0x2 ++ .byte 0x73 ++ .sleb128 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x11 ++ .byte 0x8 ++ .long 0x51ed ++ .uleb128 0x21 ++ .long 0x222c ++ .byte 0x3 ++ .long 0x60d3 ++ .uleb128 0x17 ++ .long .LASF913 ++ .byte 0xb ++ .value 0x12b ++ .byte 0x19 ++ .long 0x4502 ++ .uleb128 0x17 ++ .long .LASF914 ++ .byte 0xb ++ .value 0x12b ++ .byte 0x30 ++ .long 0x4508 ++ .byte 0 ++ .uleb128 0x3d ++ .long .LASF915 ++ .long .LASF915 ++ .uleb128 0x3d ++ .long .LASF916 ++ .long .LASF916 ++ .uleb128 0x3d ++ .long .LASF917 ++ .long .LASF917 ++ .uleb128 0x3d ++ .long .LASF918 ++ .long .LASF919 ++ .byte 0 ++ .section .debug_abbrev,"",@progbits ++.Ldebug_abbrev0: ++ .uleb128 0x1 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x18 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8 ++ .uleb128 0xf ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x9 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xa ++ .uleb128 0x26 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xc ++ .uleb128 0x2f ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xd ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xe ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0xf ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x10 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x11 ++ .uleb128 0x10 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x12 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x13 ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x14 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x15 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x16 ++ .uleb128 0x24 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0xe ++ .byte 0 ++ .byte 0 ++ .uleb128 0x17 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x18 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x19 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1a ++ .uleb128 0x2f ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1b ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1c ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x1c ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1d ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1e ++ .uleb128 0x8 ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x18 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x1f ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x20 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x21 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x22 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x23 ++ .uleb128 0x28 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x24 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x25 ++ .uleb128 0x2f ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x1e ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x26 ++ .uleb128 0x410a ++ .byte 0 ++ .uleb128 0x2 ++ .uleb128 0x18 ++ .uleb128 0x2111 ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x27 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x28 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x29 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2a ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2b ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2c ++ .uleb128 0x2 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2d ++ .uleb128 0x1 ++ .byte 0x1 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2e ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x2f ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x30 ++ .uleb128 0x2 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x31 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x32 ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x33 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x34 ++ .uleb128 0x21 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x2f ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x35 ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x36 ++ .uleb128 0x4109 ++ .byte 0x1 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x37 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x38 ++ .uleb128 0x3a ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x18 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x39 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3b ++ .uleb128 0x42 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3c ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3d ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3 ++ .uleb128 0xe ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3e ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x2 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x40 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x41 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x42 ++ .uleb128 0x13 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x43 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x1c ++ .uleb128 0xd ++ .byte 0 ++ .byte 0 ++ .uleb128 0x44 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x1c ++ .uleb128 0x5 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x45 ++ .uleb128 0x4109 ++ .byte 0x1 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x46 ++ .uleb128 0x39 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x89 ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x1c ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x48 ++ .uleb128 0x17 ++ .byte 0x1 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4a ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x4c ++ .uleb128 0xb ++ .uleb128 0x1d ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4b ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x8b ++ .uleb128 0xb ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4c ++ .uleb128 0x39 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4d ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x6c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4e ++ .uleb128 0x30 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x1c ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x4f ++ .uleb128 0x39 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x50 ++ .uleb128 0x39 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x51 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x52 ++ .uleb128 0x39 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x89 ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x53 ++ .uleb128 0x3a ++ .byte 0 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x18 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x54 ++ .uleb128 0x28 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0x6 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x55 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x4c ++ .uleb128 0xb ++ .uleb128 0x1d ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x56 ++ .uleb128 0x4 ++ .byte 0x1 ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x57 ++ .uleb128 0x2 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x58 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x59 ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5a ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5b ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x20 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5c ++ .uleb128 0x11 ++ .byte 0x1 ++ .uleb128 0x25 ++ .uleb128 0xe ++ .uleb128 0x13 ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x1b ++ .uleb128 0xe ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x10 ++ .uleb128 0x17 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5d ++ .uleb128 0x39 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5e ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x5f ++ .uleb128 0x4 ++ .byte 0x1 ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x60 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x61 ++ .uleb128 0xd ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x62 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x63 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x4c ++ .uleb128 0xb ++ .uleb128 0x1d ++ .uleb128 0x13 ++ .uleb128 0x34 ++ .uleb128 0x19 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x64 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x65 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x66 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x63 ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x67 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x68 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x87 ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x69 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1c ++ .uleb128 0xa ++ .uleb128 0x6c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6a ++ .uleb128 0x13 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6b ++ .uleb128 0x2e ++ .byte 0 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6c ++ .uleb128 0x1c ++ .byte 0 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x38 ++ .uleb128 0xb ++ .uleb128 0x32 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6d ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x8b ++ .uleb128 0xb ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6e ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x32 ++ .uleb128 0xb ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x64 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x6f ++ .uleb128 0x39 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x89 ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x70 ++ .uleb128 0x4 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x71 ++ .uleb128 0x28 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x1c ++ .uleb128 0xd ++ .byte 0 ++ .byte 0 ++ .uleb128 0x72 ++ .uleb128 0x39 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x73 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x74 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x75 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x76 ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x77 ++ .uleb128 0xf ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x78 ++ .uleb128 0x24 ++ .byte 0 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3e ++ .uleb128 0xb ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x79 ++ .uleb128 0x13 ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0xb ++ .uleb128 0xb ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7a ++ .uleb128 0x3b ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7b ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7c ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7d ++ .uleb128 0x26 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7e ++ .uleb128 0x15 ++ .byte 0x1 ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x7f ++ .uleb128 0x15 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x80 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x81 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0x5 ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x87 ++ .uleb128 0x19 ++ .uleb128 0x3c ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x82 ++ .uleb128 0x16 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .byte 0 ++ .byte 0 ++ .uleb128 0x83 ++ .uleb128 0x21 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x84 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x1c ++ .uleb128 0x6 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x85 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x6e ++ .uleb128 0xe ++ .uleb128 0x47 ++ .uleb128 0x13 ++ .uleb128 0x1c ++ .uleb128 0x7 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x86 ++ .uleb128 0xb ++ .byte 0x1 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x87 ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x88 ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3f ++ .uleb128 0x19 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x40 ++ .uleb128 0x18 ++ .uleb128 0x2117 ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x89 ++ .uleb128 0x410a ++ .byte 0 ++ .uleb128 0x2 ++ .uleb128 0x18 ++ .uleb128 0x2111 ++ .uleb128 0x18 ++ .uleb128 0x2112 ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8a ++ .uleb128 0x2e ++ .byte 0x1 ++ .uleb128 0x3 ++ .uleb128 0xe ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x40 ++ .uleb128 0x18 ++ .uleb128 0x2117 ++ .uleb128 0x19 ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8b ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x2 ++ .uleb128 0x17 ++ .uleb128 0x2137 ++ .uleb128 0x17 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8c ++ .uleb128 0x34 ++ .byte 0 ++ .uleb128 0x3 ++ .uleb128 0x8 ++ .uleb128 0x3a ++ .uleb128 0xb ++ .uleb128 0x3b ++ .uleb128 0xb ++ .uleb128 0x39 ++ .uleb128 0xb ++ .uleb128 0x49 ++ .uleb128 0x13 ++ .uleb128 0x2 ++ .uleb128 0x18 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8d ++ .uleb128 0x1d ++ .byte 0x1 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .uleb128 0x52 ++ .uleb128 0x1 ++ .uleb128 0x2138 ++ .uleb128 0xb ++ .uleb128 0x11 ++ .uleb128 0x1 ++ .uleb128 0x12 ++ .uleb128 0x7 ++ .uleb128 0x58 ++ .uleb128 0xb ++ .uleb128 0x59 ++ .uleb128 0xb ++ .uleb128 0x57 ++ .uleb128 0xb ++ .uleb128 0x1 ++ .uleb128 0x13 ++ .byte 0 ++ .byte 0 ++ .uleb128 0x8e ++ .uleb128 0x5 ++ .byte 0 ++ .uleb128 0x31 ++ .uleb128 0x13 ++ .uleb128 0x2 ++ .uleb128 0x17 ++ .uleb128 0x2137 ++ .uleb128 0x17 ++ .byte 0 ++ .byte 0 ++ .byte 0 ++ .section .debug_loc,"",@progbits ++.Ldebug_loc0: ++.LVUS0: ++ .uleb128 0 ++ .uleb128 .LVU5 ++ .uleb128 .LVU5 ++ .uleb128 0 ++.LLST0: ++ .quad .LVL0-.Ltext0 ++ .quad .LVL1-.Ltext0 ++ .value 0x1 ++ .byte 0x55 ++ .quad .LVL1-.Ltext0 ++ .quad .LFE1646-.Ltext0 ++ .value 0x4 ++ .byte 0xf3 ++ .uleb128 0x1 ++ .byte 0x55 ++ .byte 0x9f ++ .quad 0 ++ .quad 0 ++.LVUS1: ++ .uleb128 .LVU8 ++ .uleb128 .LVU10 ++ .uleb128 .LVU12 ++ .uleb128 .LVU14 ++.LLST1: ++ .quad .LVL4-.Ltext0 ++ .quad .LVL5-.Ltext0 ++ .value 0x1 ++ .byte 0x57 ++ .quad .LVL7-.Ltext0 ++ .quad .LVL9-.Ltext0 ++ .value 0x1 ++ .byte 0x57 ++ .quad 0 ++ .quad 0 ++ .section .debug_aranges,"",@progbits ++ .long 0x2c ++ .value 0x2 ++ .long .Ldebug_info0 ++ .byte 0x8 ++ .byte 0 ++ .value 0 ++ .value 0 ++ .quad .Ltext0 ++ .quad .Letext0-.Ltext0 ++ .quad 0 ++ .quad 0 ++ .section .debug_line,"",@progbits ++.Ldebug_line0: ++ .section .debug_str,"MS",@progbits,1 ++.LASF739: ++ .string "int_p_sep_by_space" ++.LASF920: ++ .string "GNU C++14 9.4.0 -mtune=generic -march=x86-64 -g -O1 -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -fcf-protection" ++.LASF547: ++ .string "char" ++.LASF487: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEixEl" ++.LASF810: ++ .string "fgetc" ++.LASF691: ++ .string "int8_t" ++.LASF485: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmmEv" ++.LASF261: ++ .string "basic_ostringstream, std::allocator >" ++.LASF307: ++ .string "size_t" ++.LASF31: ++ .string "_M_construct_aux_2" ++.LASF812: ++ .string "fgets" ++.LASF622: ++ .string "tm_hour" ++.LASF416: ++ .string "__value" ++.LASF910: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev" ++.LASF381: ++ .string "_S_ios_openmode_min" ++.LASF406: ++ .string "conditional" ++.LASF450: ++ .string "__numeric_traits_integer" ++.LASF467: ++ .string "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE15_S_always_equalEv" ++.LASF421: ++ .string "_ZSt11__addressofIKcEPT_RS1_" ++.LASF267: ++ .string "basic_string, std::allocator >" ++.LASF396: ++ .string "basic_streambuf" ++.LASF878: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS3_" ++.LASF795: ++ .string "_IO_codecvt" ++.LASF509: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEplEl" ++.LASF88: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_" ++.LASF470: ++ .string "rebind" ++.LASF842: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE" ++.LASF410: ++ .string "_Ptr" ++.LASF714: ++ .string "uint_fast64_t" ++.LASF112: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv" ++.LASF680: ++ .string "__uint_least8_t" ++.LASF138: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv" ++.LASF295: ++ .string "integral_constant" ++.LASF171: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKc" ++.LASF21: ++ .string "_M_set_length" ++.LASF563: ++ .string "_IO_save_end" ++.LASF399: ++ .string "_ZNSt15basic_streambufIcSt11char_traitsIcEED4Ev" ++.LASF921: ++ .string "entry-value-typedef.cpp" ++.LASF459: ++ .string "_S_on_swap" ++.LASF156: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc" ++.LASF784: ++ .string "lldiv" ++.LASF692: ++ .string "int16_t" ++.LASF164: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE" ++.LASF840: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIiE11__is_signedE" ++.LASF618: ++ .string "wcscspn" ++.LASF746: ++ .string "localeconv" ++.LASF425: ++ .string "_ZSt11__addressofIcEPT_RS0_" ++.LASF271: ++ .string "_M_addref" ++.LASF275: ++ .string "_M_get" ++.LASF677: ++ .string "__int64_t" ++.LASF789: ++ .string "strtold" ++.LASF358: ++ .string "_M_len" ++.LASF786: ++ .string "strtoll" ++.LASF556: ++ .string "_IO_write_base" ++.LASF828: ++ .string "tmpnam" ++.LASF640: ++ .string "wcstol" ++.LASF394: ++ .string "pptr" ++.LASF860: ++ .string "__lhs" ++.LASF365: ++ .string "_ZNKSt16initializer_listIcE3endEv" ++.LASF46: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc" ++.LASF572: ++ .string "_lock" ++.LASF888: ++ .string "_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev" ++.LASF723: ++ .string "int_curr_symbol" ++.LASF54: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS5_S4_EES8_" ++.LASF439: ++ .string "new_allocator" ++.LASF877: ++ .string "__last" ++.LASF105: ++ .string "cend" ++.LASF502: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv" ++.LASF40: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc" ++.LASF560: ++ .string "_IO_buf_end" ++.LASF734: ++ .string "n_cs_precedes" ++.LASF390: ++ .string "pbase" ++.LASF561: ++ .string "_IO_save_base" ++.LASF87: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEc" ++.LASF361: ++ .string "_ZNSt16initializer_listIcEC4Ev" ++.LASF843: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE" ++.LASF505: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmmEv" ++.LASF405: ++ .string "iterator_traits" ++.LASF116: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv" ++.LASF766: ++ .string "atoi" ++.LASF903: ++ .string "_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev" ++.LASF643: ++ .string "wcsxfrm" ++.LASF785: ++ .string "atoll" ++.LASF730: ++ .string "int_frac_digits" ++.LASF270: ++ .string "_ZNSt15__exception_ptr13exception_ptrC4EPv" ++.LASF473: ++ .string "_M_current" ++.LASF342: ++ .string "_ZNSaIcEaSERKS_" ++.LASF371: ++ .string "string_literals" ++.LASF919: ++ .string "__builtin_unwind_resume" ++.LASF811: ++ .string "fgetpos" ++.LASF791: ++ .string "__pos" ++.LASF565: ++ .string "_chain" ++.LASF616: ++ .string "wcscoll" ++.LASF805: ++ .string "clearerr" ++.LASF305: ++ .string "_ZNKSt17integral_constantIbLb1EEcvbEv" ++.LASF423: ++ .string "_ZSt9addressofIcEPT_RS0_" ++.LASF50: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm" ++.LASF569: ++ .string "_cur_column" ++.LASF890: ++ .string "_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode" ++.LASF801: ++ .string "sys_nerr" ++.LASF728: ++ .string "positive_sign" ++.LASF191: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_PcSA_" ++.LASF483: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEi" ++.LASF544: ++ .string "__wch" ++.LASF140: ++ .string "back" ++.LASF324: ++ .string "_ZNSt11char_traitsIcE4moveEPcPKcm" ++.LASF672: ++ .string "__uint8_t" ++.LASF709: ++ .string "int_fast32_t" ++.LASF135: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm" ++.LASF852: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIsE11__is_signedE" ++.LASF482: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv" ++.LASF194: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S9_S9_" ++.LASF28: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv" ++.LASF84: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4ERKS3_" ++.LASF47: ++ .string "_S_copy" ++.LASF765: ++ .string "atof" ++.LASF188: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_m" ++.LASF845: ++ .string "_ZN9__gnu_cxx25__numeric_traits_floatingIdE16__max_exponent10E" ++.LASF429: ++ .string "_ZNSt9basic_iosIcSt11char_traitsIcEED4Ev" ++.LASF767: ++ .string "atol" ++.LASF367: ++ .string "reverse_iterator<__gnu_cxx::__normal_iterator, std::allocator > > >" ++.LASF98: ++ .string "const_reverse_iterator" ++.LASF841: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIiE8__digitsE" ++.LASF8: ++ .string "_M_dataplus" ++.LASF7: ++ .string "_M_p" ++.LASF14: ++ .string "_M_local_data" ++.LASF331: ++ .string "_ZNSt11char_traitsIcE11to_int_typeERKc" ++.LASF251: ++ .string "assign" ++.LASF725: ++ .string "mon_decimal_point" ++.LASF869: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2IPcEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameISC_SB_E7__valueES8_E6__typeEEE" ++.LASF442: ++ .string "~new_allocator" ++.LASF641: ++ .string "long int" ++.LASF521: ++ .string "__numeric_traits_floating" ++.LASF282: ++ .string "_ZNSt15__exception_ptr13exception_ptraSERKS0_" ++.LASF386: ++ .string "_ZNSoD4Ev" ++.LASF443: ++ .string "_ZN9__gnu_cxx13new_allocatorIcED4Ev" ++.LASF265: ++ .string "nothrow_t" ++.LASF424: ++ .string "__addressof" ++.LASF523: ++ .string "__numeric_traits_integer" ++.LASF610: ++ .string "vwprintf" ++.LASF70: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4ERKS4_" ++.LASF929: ++ .string "_Ios_Openmode" ++.LASF383: ++ .string "openmode" ++.LASF783: ++ .string "wctomb" ++.LASF911: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD2Ev" ++.LASF329: ++ .string "int_type" ++.LASF356: ++ .string "initializer_list" ++.LASF794: ++ .string "_IO_marker" ++.LASF80: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4EOS4_RKS3_" ++.LASF797: ++ .string "fpos_t" ++.LASF123: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv" ++.LASF912: ++ .string "main" ++.LASF740: ++ .string "int_n_cs_precedes" ++.LASF220: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcm" ++.LASF835: ++ .string "towctrans" ++.LASF24: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv" ++.LASF60: ++ .string "_S_compare" ++.LASF202: ++ .string "copy" ++.LASF775: ++ .string "rand" ++.LASF339: ++ .string "_ZNSaIcEC4Ev" ++.LASF508: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEpLEl" ++.LASF199: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm" ++.LASF319: ++ .string "_ZNSt11char_traitsIcE2ltERKcS2_" ++.LASF93: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv" ++.LASF45: ++ .string "_M_disjunct" ++.LASF885: ++ .string "__ret" ++.LASF737: ++ .string "n_sign_posn" ++.LASF197: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc" ++.LASF294: ++ .string "nullptr_t" ++.LASF904: ++ .string "_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev" ++.LASF259: ++ .string "~basic_stringbuf" ++.LASF520: ++ .string "__numeric_traits_floating" ++.LASF165: ++ .string "insert" ++.LASF455: ++ .string "_Value" ++.LASF41: ++ .string "_M_check_length" ++.LASF139: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv" ++.LASF4: ++ .string "_M_allocated_capacity" ++.LASF35: ++ .string "allocator_type" ++.LASF706: ++ .string "uint_least64_t" ++.LASF931: ++ .string "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE10_S_on_swapERS1_S3_" ++.LASF229: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm" ++.LASF224: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcmm" ++.LASF627: ++ .string "tm_yday" ++.LASF787: ++ .string "strtoull" ++.LASF695: ++ .string "uint8_t" ++.LASF477: ++ .string "operator*" ++.LASF489: ++ .string "operator+" ++.LASF493: ++ .string "operator-" ++.LASF184: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKcm" ++.LASF749: ++ .string "__timezone" ++.LASF478: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv" ++.LASF822: ++ .string "remove" ++.LASF796: ++ .string "_IO_wide_data" ++.LASF384: ++ .string "basic_ostream >" ++.LASF832: ++ .string "wctype_t" ++.LASF83: ++ .string "operator=" ++.LASF690: ++ .string "__off64_t" ++.LASF602: ++ .string "__isoc99_swscanf" ++.LASF584: ++ .string "fgetwc" ++.LASF745: ++ .string "getwchar" ++.LASF225: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcm" ++.LASF902: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_" ++.LASF248: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc" ++.LASF120: ++ .string "shrink_to_fit" ++.LASF407: ++ .string "pointer_traits" ++.LASF317: ++ .string "char_type" ++.LASF663: ++ .string "unsigned char" ++.LASF682: ++ .string "__uint_least16_t" ++.LASF664: ++ .string "__int128 unsigned" ++.LASF119: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm" ++.LASF897: ++ .string "__dat" ++.LASF735: ++ .string "n_sep_by_space" ++.LASF9: ++ .string "_M_string_length" ++.LASF451: ++ .string "__is_signed" ++.LASF806: ++ .string "fclose" ++.LASF656: ++ .string "wmemchr" ++.LASF668: ++ .string "char16_t" ++.LASF924: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD4Ev" ++.LASF626: ++ .string "tm_wday" ++.LASF446: ++ .string "_ZNK9__gnu_cxx13new_allocatorIcE7addressERKc" ++.LASF854: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE" ++.LASF701: ++ .string "int_least32_t" ++.LASF592: ++ .string "__isoc99_fwscanf" ++.LASF245: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_" ++.LASF900: ++ .string "_ZN9__gnu_cxx13new_allocatorIcEC2Ev" ++.LASF615: ++ .string "wcscmp" ++.LASF379: ++ .string "_S_ios_openmode_end" ++.LASF777: ++ .string "srand" ++.LASF391: ++ .string "_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv" ++.LASF334: ++ .string "not_eof" ++.LASF600: ++ .string "swprintf" ++.LASF64: ++ .string "_M_mutate" ++.LASF192: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_" ++.LASF417: ++ .string "__are_same" ++.LASF170: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKcm" ++.LASF747: ++ .string "__tzname" ++.LASF653: ++ .string "wcspbrk" ++.LASF530: ++ .string "_IteratorL" ++.LASF144: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_" ++.LASF206: ++ .string "c_str" ++.LASF652: ++ .string "wcschr" ++.LASF42: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc" ++.LASF146: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc" ++.LASF377: ++ .string "_S_out" ++.LASF236: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEcm" ++.LASF927: ++ .string "input_iterator_tag" ++.LASF464: ++ .string "_S_propagate_on_swap" ++.LASF438: ++ .string "new_allocator" ++.LASF526: ++ .string "operator- >" ++.LASF770: ++ .string "ldiv" ++.LASF86: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc" ++.LASF875: ++ .string "__ptr" ++.LASF819: ++ .string "getc" ++.LASF373: ++ .string "_S_app" ++.LASF549: ++ .string "mbstate_t" ++.LASF713: ++ .string "uint_fast32_t" ++.LASF153: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc" ++.LASF205: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_" ++.LASF63: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_" ++.LASF837: ++ .string "wctype" ++.LASF908: ++ .string "_ZNSaIcED2Ev" ++.LASF705: ++ .string "uint_least32_t" ++.LASF510: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmIEl" ++.LASF291: ++ .string "rethrow_exception" ++.LASF122: ++ .string "capacity" ++.LASF117: ++ .string "resize" ++.LASF934: ++ .string "_IO_lock_t" ++.LASF422: ++ .string "addressof" ++.LASF674: ++ .string "__uint16_t" ++.LASF839: ++ .string "_ZNSt17integral_constantIbLb1EE5valueE" ++.LASF219: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcmm" ++.LASF186: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmmc" ++.LASF348: ++ .string "_ZNSt16allocator_traitsISaIcEE8allocateERS0_mPKv" ++.LASF922: ++ .string "/home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.dwarf2" ++.LASF264: ++ .string "_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC4Ev" ++.LASF647: ++ .string "wmemmove" ++.LASF172: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc" ++.LASF118: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc" ++.LASF125: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm" ++.LASF471: ++ .string "other" ++.LASF879: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev" ++.LASF755: ++ .string "5div_t" ++.LASF752: ++ .string "timezone" ++.LASF475: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC4Ev" ++.LASF346: ++ .string "allocate" ++.LASF454: ++ .string "__min" ++.LASF181: ++ .string "replace" ++.LASF621: ++ .string "tm_min" ++.LASF126: ++ .string "clear" ++.LASF269: ++ .string "_M_exception_object" ++.LASF553: ++ .string "_IO_read_ptr" ++.LASF650: ++ .string "wscanf" ++.LASF66: ++ .string "_M_erase" ++.LASF726: ++ .string "mon_thousands_sep" ++.LASF603: ++ .string "ungetwc" ++.LASF539: ++ .string "fp_offset" ++.LASF818: ++ .string "ftell" ++.LASF336: ++ .string "ptrdiff_t" ++.LASF350: ++ .string "deallocate" ++.LASF299: ++ .string "operator std::integral_constant::value_type" ++.LASF185: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc" ++.LASF594: ++ .string "mbrlen" ++.LASF412: ++ .string "conditional" ++.LASF798: ++ .string "stdin" ++.LASF729: ++ .string "negative_sign" ++.LASF18: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv" ++.LASF894: ++ .string "_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev" ++.LASF182: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_" ++.LASF802: ++ .string "sys_errlist" ++.LASF738: ++ .string "int_p_cs_precedes" ++.LASF58: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_" ++.LASF5: ++ .string "pointer" ++.LASF799: ++ .string "stdout" ++.LASF227: ++ .string "find_last_of" ++.LASF95: ++ .string "reverse_iterator" ++.LASF148: ++ .string "append" ++.LASF564: ++ .string "_markers" ++.LASF345: ++ .string "allocator_traits >" ++.LASF660: ++ .string "wcstoull" ++.LASF846: ++ .string "_ZN9__gnu_cxx25__numeric_traits_floatingIeE16__max_exponent10E" ++.LASF244: ++ .string "compare" ++.LASF790: ++ .string "_G_fpos_t" ++.LASF686: ++ .string "__uint_least64_t" ++.LASF230: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm" ++.LASF617: ++ .string "wcscpy" ++.LASF629: ++ .string "tm_gmtoff" ++.LASF907: ++ .string "_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev" ++.LASF254: ++ .string "_CharT" ++.LASF293: ++ .string "_Char_alloc_type" ++.LASF281: ++ .string "_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC4ESt13_Ios_Openmode" ++.LASF162: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc" ++.LASF55: ++ .string "iterator" ++.LASF303: ++ .string "integral_constant" ++.LASF780: ++ .string "strtoul" ++.LASF304: ++ .string "operator std::integral_constant::value_type" ++.LASF32: ++ .string "_M_construct" ++.LASF447: ++ .string "_ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv" ++.LASF648: ++ .string "wmemset" ++.LASF286: ++ .string "_ZNSt15__exception_ptr13exception_ptr4swapERS0_" ++.LASF612: ++ .string "__isoc99_vwscanf" ++.LASF290: ++ .string "_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv" ++.LASF589: ++ .string "fwide" ++.LASF353: ++ .string "select_on_container_copy_construction" ++.LASF590: ++ .string "fwprintf" ++.LASF654: ++ .string "wcsrchr" ++.LASF110: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5crendEv" ++.LASF689: ++ .string "__off_t" ++.LASF901: ++ .string "__length" ++.LASF262: ++ .string "_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv" ++.LASF671: ++ .string "__int8_t" ++.LASF830: ++ .string "program_invocation_name" ++.LASF36: ++ .string "_M_get_allocator" ++.LASF289: ++ .string "__cxa_exception_type" ++.LASF573: ++ .string "_offset" ++.LASF847: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerImE11__is_signedE" ++.LASF868: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS1_" ++.LASF97: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv" ++.LASF392: ++ .string "egptr" ++.LASF56: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_" ++.LASF634: ++ .string "wcsncpy" ++.LASF826: ++ .string "setvbuf" ++.LASF137: ++ .string "front" ++.LASF249: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc" ++.LASF252: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignIPcvEERS4_T_S8_" ++.LASF599: ++ .string "putwchar" ++.LASF233: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofERKS4_m" ++.LASF49: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm" ++.LASF844: ++ .string "_ZN9__gnu_cxx25__numeric_traits_floatingIfE16__max_exponent10E" ++.LASF283: ++ .string "_ZNSt15__exception_ptr13exception_ptraSEOS0_" ++.LASF500: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC4ERKS2_" ++.LASF645: ++ .string "wmemcmp" ++.LASF374: ++ .string "_S_ate" ++.LASF325: ++ .string "_ZNSt11char_traitsIcE4copyEPcPKcm" ++.LASF130: ++ .string "const_reference" ++.LASF212: ++ .string "find" ++.LASF814: ++ .string "fread" ++.LASF89: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSESt16initializer_listIcE" ++.LASF145: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc" ++.LASF678: ++ .string "__uint64_t" ++.LASF166: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEmc" ++.LASF769: ++ .string "getenv" ++.LASF33: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Emc" ++.LASF704: ++ .string "uint_least16_t" ++.LASF323: ++ .string "move" ++.LASF537: ++ .string "long unsigned int" ++.LASF85: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_" ++.LASF277: ++ .string "_ZNSt15__exception_ptr13exception_ptrC4Ev" ++.LASF375: ++ .string "_S_bin" ++.LASF92: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv" ++.LASF149: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_" ++.LASF133: ++ .string "reference" ++.LASF273: ++ .string "_M_release" ++.LASF134: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm" ++.LASF312: ++ .string "nothrow" ++.LASF567: ++ .string "_flags2" ++.LASF3: ++ .string "_M_local_buf" ++.LASF413: ++ .string "pointer_traits" ++.LASF444: ++ .string "address" ++.LASF173: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc" ++.LASF465: ++ .string "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE20_S_propagate_on_swapEv" ++.LASF670: ++ .string "__gnu_debug" ++.LASF684: ++ .string "__uint_least32_t" ++.LASF727: ++ .string "mon_grouping" ++.LASF758: ++ .string "6ldiv_t" ++.LASF555: ++ .string "_IO_read_base" ++.LASF131: ++ .string "operator[]" ++.LASF702: ++ .string "int_least64_t" ++.LASF541: ++ .string "reg_save_area" ++.LASF155: ++ .string "push_back" ++.LASF460: ++ .string "_S_propagate_on_copy_assign" ++.LASF26: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm" ++.LASF862: ++ .string "this" ++.LASF310: ++ .string "piecewise_construct_t" ++.LASF13: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm" ++.LASF580: ++ .string "_unused2" ++.LASF231: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEcm" ++.LASF655: ++ .string "wcsstr" ++.LASF782: ++ .string "wcstombs" ++.LASF115: ++ .string "max_size" ++.LASF861: ++ .string "__rhs" ++.LASF298: ++ .string "value_type" ++.LASF234: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcmm" ++.LASF716: ++ .string "uintptr_t" ++.LASF401: ++ .string "difference_type" ++.LASF415: ++ .string "__are_same" ++.LASF332: ++ .string "eq_int_type" ++.LASF106: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4cendEv" ++.LASF276: ++ .string "_ZNKSt15__exception_ptr13exception_ptr6_M_getEv" ++.LASF0: ++ .string "_Alloc_hider" ++.LASF533: ++ .string "__float128" ++.LASF142: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv" ++.LASF430: ++ .string "basic_ios" ++.LASF395: ++ .string "_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv" ++.LASF915: ++ .string "__cxa_allocate_exception" ++.LASF167: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EESt16initializer_listIcE" ++.LASF913: ++ .string "__c1" ++.LASF914: ++ .string "__c2" ++.LASF838: ++ .string "_ZNSt17integral_constantIbLb0EE5valueE" ++.LASF341: ++ .string "_ZNKSt15__exception_ptr13exception_ptrcvbEv" ++.LASF817: ++ .string "fsetpos" ++.LASF354: ++ .string "_ZNSt16allocator_traitsISaIcEE37select_on_container_copy_constructionERKS0_" ++.LASF65: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm" ++.LASF378: ++ .string "_S_trunc" ++.LASF515: ++ .string "_Iter" ++.LASF741: ++ .string "int_n_sep_by_space" ++.LASF255: ++ .string "_Traits" ++.LASF604: ++ .string "vfwprintf" ++.LASF300: ++ .string "_ZNKSt17integral_constantIbLb0EEcvbEv" ++.LASF160: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_mm" ++.LASF480: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv" ++.LASF127: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv" ++.LASF761: ++ .string "lldiv_t" ++.LASF237: ++ .string "find_last_not_of" ++.LASF476: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC4ERKS1_" ++.LASF514: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC4IPcEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameISC_SB_E7__valueES8_E6__typeEEE" ++.LASF857: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIlE8__digitsE" ++.LASF883: ++ .string "_ZNSaIcEC2ERKS_" ++.LASF676: ++ .string "__uint32_t" ++.LASF803: ++ .string "_sys_nerr" ++.LASF448: ++ .string "_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm" ++.LASF659: ++ .string "long long int" ++.LASF433: ++ .string "_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_" ++.LASF548: ++ .string "__mbstate_t" ++.LASF898: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_" ++.LASF519: ++ .string "__max_exponent10" ++.LASF646: ++ .string "wmemcpy" ++.LASF624: ++ .string "tm_mon" ++.LASF891: ++ .string "__vtt_parm" ++.LASF278: ++ .string "_ZNSt15__exception_ptr13exception_ptrC4ERKS0_" ++.LASF637: ++ .string "wcstod" ++.LASF352: ++ .string "_ZNSt16allocator_traitsISaIcEE8max_sizeERKS0_" ++.LASF923: ++ .string "~_Alloc_hider" ++.LASF638: ++ .string "wcstof" ++.LASF161: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm" ++.LASF19: ++ .string "_M_capacity" ++.LASF576: ++ .string "_freeres_list" ++.LASF102: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv" ++.LASF518: ++ .string "__digits10" ++.LASF253: ++ .string "_InputIterator" ++.LASF189: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_" ++.LASF535: ++ .string "double" ++.LASF322: ++ .string "_ZNSt11char_traitsIcE4findEPKcmRS1_" ++.LASF773: ++ .string "mbtowc" ++.LASF558: ++ .string "_IO_write_end" ++.LASF388: ++ .string "_ZNSoC4Ev" ++.LASF94: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv" ++.LASF25: ++ .string "_M_create" ++.LASF239: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcmm" ++.LASF203: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcmm" ++.LASF418: ++ .string "addressof" ++.LASF855: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE" ++.LASF147: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLESt16initializer_listIcE" ++.LASF718: ++ .string "uintmax_t" ++.LASF313: ++ .string "piecewise_construct" ++.LASF644: ++ .string "wctob" ++.LASF400: ++ .string "iterator_traits" ++.LASF538: ++ .string "gp_offset" ++.LASF506: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmmEi" ++.LASF575: ++ .string "_wide_data" ++.LASF242: ++ .string "substr" ++.LASF474: ++ .string "__normal_iterator" ++.LASF16: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv" ++.LASF848: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE" ++.LASF693: ++ .string "int32_t" ++.LASF896: ++ .string "_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev" ++.LASF534: ++ .string "float" ++.LASF762: ++ .string "__compar_fn_t" ++.LASF38: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv" ++.LASF933: ++ .string "decltype(nullptr)" ++.LASF268: ++ .string "exception_ptr" ++.LASF736: ++ .string "p_sign_posn" ++.LASF366: ++ .string "type_info" ++.LASF687: ++ .string "__intmax_t" ++.LASF389: ++ .string "basic_streambuf >" ++.LASF559: ++ .string "_IO_buf_base" ++.LASF257: ++ .string "__string_type" ++.LASF494: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmiEl" ++.LASF240: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcm" ++.LASF859: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE" ++.LASF62: ++ .string "_M_assign" ++.LASF501: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv" ++.LASF315: ++ .string "char_traits" ++.LASF821: ++ .string "perror" ++.LASF238: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofERKS4_m" ++.LASF73: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4ERKS4_mmRKS3_" ++.LASF715: ++ .string "intptr_t" ++.LASF636: ++ .string "wcsspn" ++.LASF176: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm" ++.LASF217: ++ .string "rfind" ++.LASF288: ++ .string "operator bool" ++.LASF880: ++ .string "_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev" ++.LASF44: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm" ++.LASF168: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_" ++.LASF542: ++ .string "unsigned int" ++.LASF568: ++ .string "_old_offset" ++.LASF750: ++ .string "tzname" ++.LASF496: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4baseEv" ++.LASF107: ++ .string "crbegin" ++.LASF578: ++ .string "__pad5" ++.LASF163: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc" ++.LASF497: ++ .string "_Container" ++.LASF209: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv" ++.LASF326: ++ .string "_ZNSt11char_traitsIcE6assignEPcmc" ++.LASF595: ++ .string "mbrtowc" ++.LASF712: ++ .string "uint_fast16_t" ++.LASF328: ++ .string "_ZNSt11char_traitsIcE12to_char_typeERKi" ++.LASF215: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm" ++.LASF235: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcm" ++.LASF360: ++ .string "_ZNSt16initializer_listIcEC4EPKcm" ++.LASF246: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_" ++.LASF781: ++ .string "system" ++.LASF708: ++ .string "int_fast16_t" ++.LASF833: ++ .string "wctrans_t" ++.LASF48: ++ .string "_S_move" ++.LASF207: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv" ++.LASF540: ++ .string "overflow_arg_area" ++.LASF823: ++ .string "rename" ++.LASF96: ++ .string "rbegin" ++.LASF75: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4EPKcRKS3_" ++.LASF180: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8pop_backEv" ++.LASF226: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcm" ++.LASF552: ++ .string "_flags" ++.LASF831: ++ .string "program_invocation_short_name" ++.LASF870: ++ .string "__off" ++.LASF355: ++ .string "rebind_alloc" ++.LASF74: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4EPKcmRKS3_" ++.LASF579: ++ .string "_mode" ++.LASF434: ++ .string "ostringstream" ++.LASF284: ++ .string "~exception_ptr" ++.LASF498: ++ .string "__normal_iterator, std::allocator > >" ++.LASF669: ++ .string "char32_t" ++.LASF720: ++ .string "decimal_point" ++.LASF820: ++ .string "getchar" ++.LASF574: ++ .string "_codecvt" ++.LASF311: ++ .string "_ZNSt21piecewise_construct_tC4Ev" ++.LASF531: ++ .string "_IteratorR" ++.LASF546: ++ .string "__count" ++.LASF436: ++ .string "__gnu_cxx" ++.LASF871: ++ .string "_ZN9__gnu_cxx13new_allocatorIcEC2ERKS1_" ++.LASF431: ++ .string "_ZNSt9basic_iosIcSt11char_traitsIcEEC4Ev" ++.LASF874: ++ .string "__alloc" ++.LASF302: ++ .string "_ZNKSt17integral_constantIbLb0EEclEv" ++.LASF662: ++ .string "bool" ++.LASF703: ++ .string "uint_least8_t" ++.LASF807: ++ .string "feof" ++.LASF699: ++ .string "int_least8_t" ++.LASF532: ++ .string "__unknown__" ++.LASF213: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm" ++.LASF899: ++ .string "_ZN9__gnu_cxx13new_allocatorIcED2Ev" ++.LASF583: ++ .string "btowc" ++.LASF776: ++ .string "qsort" ++.LASF633: ++ .string "wcsncmp" ++.LASF333: ++ .string "_ZNSt11char_traitsIcE11eq_int_typeERKiS2_" ++.LASF136: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm" ++.LASF472: ++ .string "__normal_iterator, std::allocator > >" ++.LASF717: ++ .string "intmax_t" ++.LASF488: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEpLEl" ++.LASF536: ++ .string "long double" ++.LASF528: ++ .string "operator- >" ++.LASF440: ++ .string "_ZN9__gnu_cxx13new_allocatorIcEC4Ev" ++.LASF598: ++ .string "putwc" ++.LASF174: ++ .string "__const_iterator" ++.LASF124: ++ .string "reserve" ++.LASF517: ++ .string "__max_digits10" ++.LASF884: ++ .string "__size" ++.LASF53: ++ .string "_S_copy_chars" ++.LASF504: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEi" ++.LASF581: ++ .string "FILE" ++.LASF362: ++ .string "_ZNKSt16initializer_listIcE4sizeEv" ++.LASF525: ++ .string "__numeric_traits_integer" ++.LASF216: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm" ++.LASF90: ++ .string "begin" ++.LASF158: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_" ++.LASF503: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv" ++.LASF864: ++ .string "__i1" ++.LASF865: ++ .string "__i2" ++.LASF759: ++ .string "ldiv_t" ++.LASF623: ++ .string "tm_mday" ++.LASF222: ++ .string "find_first_of" ++.LASF545: ++ .string "__wchb" ++.LASF169: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_mm" ++.LASF887: ++ .string "_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev" ++.LASF6: ++ .string "size_type" ++.LASF768: ++ .string "bsearch" ++.LASF426: ++ .string "basic_ios >" ++.LASF490: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEplEl" ++.LASF306: ++ .string "_ZNKSt17integral_constantIbLb1EEclEv" ++.LASF159: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEOS4_" ++.LASF344: ++ .string "_ZNSaIcED4Ev" ++.LASF61: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm" ++.LASF287: ++ .string "~basic_ostringstream" ++.LASF905: ++ .string "_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev" ++.LASF876: ++ .string "__first" ++.LASF111: ++ .string "size" ++.LASF263: ++ .string "basic_ostringstream" ++.LASF551: ++ .string "_IO_FILE" ++.LASF320: ++ .string "_ZNSt11char_traitsIcE7compareEPKcS2_m" ++.LASF711: ++ .string "uint_fast8_t" ++.LASF661: ++ .string "long long unsigned int" ++.LASF926: ++ .string "_ZSt7nothrow" ++.LASF628: ++ .string "tm_isdst" ++.LASF204: ++ .string "swap" ++.LASF513: ++ .string "__normal_iterator" ++.LASF657: ++ .string "wcstold" ++.LASF858: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE" ++.LASF113: ++ .string "length" ++.LASF696: ++ .string "uint16_t" ++.LASF658: ++ .string "wcstoll" ++.LASF69: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4Ev" ++.LASF211: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13get_allocatorEv" ++.LASF51: ++ .string "_S_assign" ++.LASF201: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm" ++.LASF445: ++ .string "_ZNK9__gnu_cxx13new_allocatorIcE7addressERc" ++.LASF760: ++ .string "7lldiv_t" ++.LASF851: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE" ++.LASF279: ++ .string "_ZNSt15__exception_ptr13exception_ptrC4EDn" ++.LASF292: ++ .string "_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE" ++.LASF297: ++ .string "value" ++.LASF825: ++ .string "setbuf" ++.LASF620: ++ .string "tm_sec" ++.LASF893: ++ .string "_ZNSoC2Ev" ++.LASF404: ++ .string "type" ++.LASF78: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4ESt16initializer_listIcERKS3_" ++.LASF635: ++ .string "wcsrtombs" ++.LASF681: ++ .string "__int_least16_t" ++.LASF733: ++ .string "p_sep_by_space" ++.LASF461: ++ .string "_S_propagate_on_move_assign" ++.LASF11: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc" ++.LASF34: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc" ++.LASF402: ++ .string "_Iterator" ++.LASF82: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED4Ev" ++.LASF577: ++ .string "_freeres_buf" ++.LASF458: ++ .string "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE17_S_select_on_copyERKS1_" ++.LASF428: ++ .string "_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED4Ev" ++.LASF196: ++ .string "_M_replace_aux" ++.LASF340: ++ .string "_ZNSaIcEC4ERKS_" ++.LASF318: ++ .string "_ZNSt11char_traitsIcE2eqERKcS2_" ++.LASF91: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv" ++.LASF351: ++ .string "_ZNSt16allocator_traitsISaIcEE10deallocateERS0_Pcm" ++.LASF71: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4ERKS4_mRKS3_" ++.LASF481: ++ .string "operator++" ++.LASF67: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm" ++.LASF895: ++ .string "_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev" ++.LASF866: ++ .string "__k1" ++.LASF867: ++ .string "__k2" ++.LASF601: ++ .string "swscanf" ++.LASF301: ++ .string "operator()" ++.LASF452: ++ .string "__digits" ++.LASF129: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv" ++.LASF223: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofERKS4_m" ++.LASF104: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6cbeginEv" ++.LASF639: ++ .string "wcstok" ++.LASF369: ++ .string "__cxx11" ++.LASF700: ++ .string "int_least16_t" ++.LASF121: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv" ++.LASF918: ++ .string "_Unwind_Resume" ++.LASF756: ++ .string "quot" ++.LASF550: ++ .string "__FILE" ++.LASF492: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmIEl" ++.LASF103: ++ .string "cbegin" ++.LASF241: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEcm" ++.LASF154: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendESt16initializer_listIcE" ++.LASF673: ++ .string "__int16_t" ++.LASF193: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_NS6_IPcS4_EESB_" ++.LASF562: ++ .string "_IO_backup_base" ++.LASF744: ++ .string "setlocale" ++.LASF571: ++ .string "_shortbuf" ++.LASF457: ++ .string "_S_select_on_copy" ++.LASF409: ++ .string "_ZNSt14pointer_traitsIPcE10pointer_toERc" ++.LASF925: ++ .string "_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED4Ev" ++.LASF609: ++ .string "__isoc99_vswscanf" ++.LASF591: ++ .string "fwscanf" ++.LASF543: ++ .string "wint_t" ++.LASF380: ++ .string "_S_ios_openmode_max" ++.LASF372: ++ .string "_S_local_capacity" ++.LASF343: ++ .string "~allocator" ++.LASF667: ++ .string "__int128" ++.LASF856: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIlE11__is_signedE" ++.LASF382: ++ .string "ios_base" ++.LASF607: ++ .string "vswprintf" ++.LASF187: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_RKS4_" ++.LASF441: ++ .string "_ZN9__gnu_cxx13new_allocatorIcEC4ERKS1_" ++.LASF258: ++ .string "basic_stringbuf" ++.LASF20: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm" ++.LASF132: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm" ++.LASF364: ++ .string "_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv" ++.LASF909: ++ .string "_ZNSaIcEC2Ev" ++.LASF357: ++ .string "_M_array" ++.LASF813: ++ .string "fopen" ++.LASF43: ++ .string "_M_limit" ++.LASF338: ++ .string "allocator" ++.LASF836: ++ .string "wctrans" ++.LASF721: ++ .string "thousands_sep" ++.LASF606: ++ .string "__isoc99_vfwscanf" ++.LASF308: ++ .string "__swappable_details" ++.LASF771: ++ .string "mblen" ++.LASF456: ++ .string "__alloc_traits, char>" ++.LASF52: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcmc" ++.LASF824: ++ .string "rewind" ++.LASF22: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm" ++.LASF427: ++ .string "~basic_ios" ++.LASF529: ++ .string "_ZN9__gnu_cxxmiIPKcPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDTmicldtfp_4baseEcldtfp0_4baseEERKNS_17__normal_iteratorIT_T1_EERKNSB_IT0_SD_EE" ++.LASF266: ++ .string "_ZNSt9nothrow_tC4Ev" ++.LASF247: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_mm" ++.LASF114: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv" ++.LASF72: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4ERKS4_mm" ++.LASF631: ++ .string "wcslen" ++.LASF177: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EE" ++.LASF221: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcm" ++.LASF27: ++ .string "_M_dispose" ++.LASF917: ++ .string "__cxa_free_exception" ++.LASF337: ++ .string "allocator" ++.LASF778: ++ .string "strtod" ++.LASF330: ++ .string "to_int_type" ++.LASF788: ++ .string "strtof" ++.LASF853: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIsE8__digitsE" ++.LASF256: ++ .string "_Alloc" ++.LASF327: ++ .string "to_char_type" ++.LASF779: ++ .string "strtol" ++.LASF314: ++ .string "__debug" ++.LASF731: ++ .string "frac_digits" ++.LASF198: ++ .string "_M_replace" ++.LASF808: ++ .string "ferror" ++.LASF724: ++ .string "currency_symbol" ++.LASF800: ++ .string "stderr" ++.LASF666: ++ .string "short int" ++.LASF2: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC4EPcOS3_" ++.LASF10: ++ .string "_M_data" ++.LASF321: ++ .string "_ZNSt11char_traitsIcE6lengthEPKc" ++.LASF872: ++ .string "__testoff" ++.LASF698: ++ .string "uint64_t" ++.LASF619: ++ .string "wcsftime" ++.LASF935: ++ .string "func" ++.LASF260: ++ .string "basic_stringbuf, std::allocator >" ++.LASF57: ++ .string "const_iterator" ++.LASF468: ++ .string "_S_nothrow_move" ++.LASF792: ++ .string "__state" ++.LASF881: ++ .string "__n1" ++.LASF882: ++ .string "__n2" ++.LASF109: ++ .string "crend" ++.LASF816: ++ .string "fseek" ++.LASF463: ++ .string "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE27_S_propagate_on_move_assignEv" ++.LASF763: ++ .string "atexit" ++.LASF228: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m" ++.LASF178: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_" ++.LASF59: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_" ++.LASF101: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv" ++.LASF499: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC4Ev" ++.LASF685: ++ .string "__int_least64_t" ++.LASF143: ++ .string "operator+=" ++.LASF570: ++ .string "_vtable_offset" ++.LASF141: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv" ++.LASF466: ++ .string "_S_always_equal" ++.LASF916: ++ .string "__cxa_throw" ++.LASF804: ++ .string "_sys_errlist" ++.LASF183: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_mm" ++.LASF688: ++ .string "__uintmax_t" ++.LASF76: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4EmcRKS3_" ++.LASF512: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4baseEv" ++.LASF316: ++ .string "_ZNSt11char_traitsIcE6assignERcRKc" ++.LASF68: ++ .string "basic_string" ++.LASF398: ++ .string "~basic_streambuf" ++.LASF179: ++ .string "pop_back" ++.LASF39: ++ .string "_M_check" ++.LASF614: ++ .string "wcscat" ++.LASF527: ++ .string "_ZN9__gnu_cxxmiIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSC_SF_" ++.LASF469: ++ .string "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE15_S_nothrow_moveEv" ++.LASF827: ++ .string "tmpfile" ++.LASF408: ++ .string "pointer_to" ++.LASF754: ++ .string "11__mbstate_t" ++.LASF484: ++ .string "operator--" ++.LASF414: ++ .string "_ZNSt14pointer_traitsIPKcE10pointer_toERS0_" ++.LASF742: ++ .string "int_p_sign_posn" ++.LASF665: ++ .string "signed char" ++.LASF850: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIcE8__digitsE" ++.LASF892: ++ .string "_ZNSoD2Ev" ++.LASF748: ++ .string "__daylight" ++.LASF630: ++ .string "tm_zone" ++.LASF849: ++ .string "_ZN9__gnu_cxx24__numeric_traits_integerIcE11__is_signedE" ++.LASF403: ++ .string "remove_reference&>" ++.LASF829: ++ .string "ungetc" ++.LASF150: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_mm" ++.LASF863: ++ .string "__str" ++.LASF175: ++ .string "erase" ++.LASF611: ++ .string "vwscanf" ++.LASF613: ++ .string "wcrtomb" ++.LASF719: ++ .string "lconv" ++.LASF108: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7crbeginEv" ++.LASF77: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4EOS4_" ++.LASF554: ++ .string "_IO_read_end" ++.LASF772: ++ .string "mbstowcs" ++.LASF218: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindERKS4_m" ++.LASF632: ++ .string "wcsncat" ++.LASF524: ++ .string "__numeric_traits_integer" ++.LASF462: ++ .string "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE27_S_propagate_on_copy_assignEv" ++.LASF753: ++ .string "getdate_err" ++.LASF296: ++ .string "npos" ++.LASF81: ++ .string "~basic_string" ++.LASF393: ++ .string "_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv" ++.LASF697: ++ .string "uint32_t" ++.LASF743: ++ .string "int_n_sign_posn" ++.LASF491: ++ .string "operator-=" ++.LASF479: ++ .string "operator->" ++.LASF793: ++ .string "__fpos_t" ++.LASF566: ++ .string "_fileno" ++.LASF889: ++ .string "__mode" ++.LASF511: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmiEl" ++.LASF30: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm" ++.LASF651: ++ .string "__isoc99_wscanf" ++.LASF37: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv" ++.LASF588: ++ .string "fputws" ++.LASF507: ++ .string "_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEixEl" ++.LASF608: ++ .string "vswscanf" ++.LASF597: ++ .string "mbsrtowcs" ++.LASF516: ++ .string "__numeric_traits_floating" ++.LASF274: ++ .string "_ZNSt15__exception_ptr13exception_ptr10_M_releaseEv" ++.LASF232: ++ .string "find_first_not_of" ++.LASF585: ++ .string "fgetws" ++.LASF683: ++ .string "__int_least32_t" ++.LASF370: ++ .string "literals" ++.LASF285: ++ .string "_ZNSt15__exception_ptr13exception_ptrD4Ev" ++.LASF210: ++ .string "get_allocator" ++.LASF387: ++ .string "basic_ostream" ++.LASF707: ++ .string "int_fast8_t" ++.LASF190: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_mc" ++.LASF99: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv" ++.LASF587: ++ .string "fputwc" ++.LASF732: ++ .string "p_cs_precedes" ++.LASF522: ++ .string "__numeric_traits_integer" ++.LASF625: ++ .string "tm_year" ++.LASF411: ++ .string "__make_not_void" ++.LASF280: ++ .string "_ZNSt15__exception_ptr13exception_ptrC4EOS0_" ++.LASF200: ++ .string "_M_append" ++.LASF582: ++ .string "short unsigned int" ++.LASF195: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_St16initializer_listIcE" ++.LASF679: ++ .string "__int_least8_t" ++.LASF495: ++ .string "base" ++.LASF17: ++ .string "const_pointer" ++.LASF764: ++ .string "at_quick_exit" ++.LASF15: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv" ++.LASF419: ++ .string "_ZSt9addressofIKcEPT_RS1_" ++.LASF710: ++ .string "int_fast64_t" ++.LASF437: ++ .string "__ops" ++.LASF1: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC4EPcRKS3_" ++.LASF605: ++ .string "vfwscanf" ++.LASF557: ++ .string "_IO_write_ptr" ++.LASF243: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm" ++.LASF376: ++ .string "_S_in" ++.LASF906: ++ .string "_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev" ++.LASF928: ++ .string "_ZNSt11char_traitsIcE3eofEv" ++.LASF435: ++ .string "__exception_ptr" ++.LASF675: ++ .string "__int32_t" ++.LASF694: ++ .string "int64_t" ++.LASF886: ++ .string "__in_chrg" ++.LASF751: ++ .string "daylight" ++.LASF250: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKcm" ++.LASF309: ++ .string "__swappable_with_details" ++.LASF272: ++ .string "_ZNSt15__exception_ptr13exception_ptr9_M_addrefEv" ++.LASF593: ++ .string "getwc" ++.LASF79: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC4ERKS4_RKS3_" ++.LASF432: ++ .string "move&>" ++.LASF596: ++ .string "mbsinit" ++.LASF128: ++ .string "empty" ++.LASF368: ++ .string "reverse_iterator<__gnu_cxx::__normal_iterator, std::allocator > > >" ++.LASF834: ++ .string "iswctype" ++.LASF453: ++ .string "__max" ++.LASF157: ++ .string "assign" ++.LASF722: ++ .string "grouping" ++.LASF12: ++ .string "_M_length" ++.LASF873: ++ .string "__len" ++.LASF29: ++ .string "_M_destroy" ++.LASF397: ++ .string "_ZNSt15basic_streambufIcSt11char_traitsIcEEC4Ev" ++.LASF649: ++ .string "wprintf" ++.LASF208: ++ .string "data" ++.LASF335: ++ .string "_ZNSt11char_traitsIcE7not_eofERKi" ++.LASF809: ++ .string "fflush" ++.LASF100: ++ .string "rend" ++.LASF23: ++ .string "_M_is_local" ++.LASF359: ++ .string "initializer_list" ++.LASF774: ++ .string "quick_exit" ++.LASF586: ++ .string "wchar_t" ++.LASF932: ++ .string "typedef __va_list_tag __va_list_tag" ++.LASF930: ++ .string "_ZN9__gnu_cxx3divExx" ++.LASF385: ++ .string "~basic_ostream" ++.LASF420: ++ .string "__addressof" ++.LASF449: ++ .string "_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv" ++.LASF349: ++ .string "const_void_pointer" ++.LASF347: ++ .string "_ZNSt16allocator_traitsISaIcEE8allocateERS0_m" ++.LASF214: ++ .string "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m" ++.LASF642: ++ .string "wcstoul" ++.LASF363: ++ .string "_ZNKSt16initializer_listIcE5beginEv" ++.LASF757: ++ .string "div_t" ++.LASF815: ++ .string "freopen" ++.LASF151: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm" ++.LASF152: ++ .string "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc" ++.LASF486: ++ .string "_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmmEi" ++ .hidden DW.ref.__gxx_personality_v0 ++ .weak DW.ref.__gxx_personality_v0 ++ .section .data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat ++ .align 8 ++ .type DW.ref.__gxx_personality_v0, @object ++ .size DW.ref.__gxx_personality_v0, 8 ++DW.ref.__gxx_personality_v0: ++ .quad __gxx_personality_v0 ++ .ident "GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0" ++ .section .note.GNU-stack,"",@progbits ++ .section .note.gnu.property,"a" ++ .align 8 ++ .long 1f - 0f ++ .long 4f - 1f ++ .long 5 ++0: ++ .string "GNU" ++1: ++ .align 8 ++ .long 0xc0000002 ++ .long 3f - 2f ++2: ++ .long 0x3 ++3: ++ .align 8 ++4: +diff --git a/gdb/testsuite/gdb.dwarf2/entry-value-typedef.cpp b/gdb/testsuite/gdb.dwarf2/entry-value-typedef.cpp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/entry-value-typedef.cpp +@@ -0,0 +1,36 @@ ++/* Copyright (C) 2022 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 . */ ++ ++/* This file isn't used by the test. The .S file generated from this .cpp ++ file is. */ ++ ++#include ++ ++using type = int; ++ ++static void ++func (const type &t) ++{ ++ std::ostringstream oss; ++ throw oss.str (); ++} ++ ++int ++main () ++{ ++ func (1234); ++} +diff --git a/gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp b/gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/entry-value-typedef.exp +@@ -0,0 +1,45 @@ ++# Copyright 2022 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++# The program associated to this test case uncovered a bug in GDB (PR 29374) ++# where a typedef type was used before it was resolved. ++ ++if { [istarget "x86_64-*-linux*"] } { ++ set suffix amd64 ++} elseif { [istarget "aarch64-*-linux*"] } { ++ set suffix aarch64 ++} else { ++ unsupported "unsupported architecture" ++ return ++} ++ ++standard_testfile -$suffix.S ++ ++if {[gdb_compile "$srcdir/$subdir/$srcfile" "$binfile" executable {c++}] != ""} { ++ return ++} ++ ++clean_restart $binfile ++ ++if {![runto_main]} { ++ return ++} ++ ++gdb_test "catch throw" "Catchpoint $::decimal \\(throw\\)" ++gdb_test "continue" "Catchpoint $::decimal \\(exception thrown\\).*" ++ ++# Without the corresponding fix, GDB would hit an internal error before ++# printing the frame for main. ++gdb_test "backtrace" " $::hex in func \\(t=t@entry=@$::hex: 1234\\).* $::hex in main .*" diff --git a/gdb-backport-fix-break-main-file-remove-fail.patch b/gdb-backport-fix-break-main-file-remove-fail.patch new file mode 100644 index 0000000..970d8b2 --- /dev/null +++ b/gdb-backport-fix-break-main-file-remove-fail.patch @@ -0,0 +1,101 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Bruno Larsen +Date: Tue, 18 Oct 2022 11:10:41 +0200 +Subject: gdb-backport-fix-break-main-file-remove-fail.patch + +;; [gdb/testsuite] Use prototype to call libc functions +;; (Tom de Vries) + +On openSUSE Tumbleweed (using glibc 2.36), I run into: +... +(gdb) print /d (int) munmap (4198400, 4096)^M +Invalid cast.^M +(gdb) FAIL: gdb.base/break-main-file-remove-fail.exp: cmdline: \ + get integer valueof "(int) munmap (4198400, 4096)" +... + +The problem is that after starting the executable, the symbol has type +"void (*) (void)": +... +(gdb) p munmap +$1 = {} 0x401030 +(gdb) start + ... +(gdb) p munmap +$2 = {void (void)} 0x7ffff7feb9a0 <__GI_munmap> +... +which causes the "Invalid cast" error. + +Looking at the debug info for glibc for symbol __GI_munmap: +... + <0><189683>: Abbrev Number: 1 (DW_TAG_compile_unit) + <189691> DW_AT_name : ../sysdeps/unix/syscall-template.S + <189699> DW_AT_producer : GNU AS 2.39.0 +<1><1896ae>: Abbrev Number: 2 (DW_TAG_subprogram) + <1896af> DW_AT_name : __GI___munmap + <1896b3> DW_AT_external : 1 + <1896b4> DW_AT_low_pc : 0x10cad0 + <1896bc> DW_AT_high_pc : 37 +... +that's probably caused by this bit (or similar bits for other munmap aliases). + +This is fixed in gas on trunk by commit 5578fbf672e ("GAS: Add a return type +tag to DWARF DIEs generated for function symbols"). + +Work around this (for say gas 2.39) by explicitly specifying the prototype for +munmap. + +Likewise for getpid in a couple of other test-cases. + +Tested on x86_64-linux. + +diff --git a/gdb/testsuite/gdb.base/break-main-file-remove-fail.exp b/gdb/testsuite/gdb.base/break-main-file-remove-fail.exp +--- a/gdb/testsuite/gdb.base/break-main-file-remove-fail.exp ++++ b/gdb/testsuite/gdb.base/break-main-file-remove-fail.exp +@@ -87,7 +87,9 @@ proc test_remove_bp { initial_load } { + # should warn the user about it. + set pagesize [get_integer_valueof "pg_size" 0] + set align_addr [expr $bp_addr - $bp_addr % $pagesize] +- set munmap [get_integer_valueof "(int) munmap ($align_addr, $pagesize)" -1] ++ set munmap_prototype "int (*) (void *, size_t)" ++ set munmap_expr "(($munmap_prototype) munmap) ($align_addr, $pagesize)" ++ set munmap [get_integer_valueof $munmap_expr -1] + + if {$munmap != 0} { + unsupported "can't munmap foo's page" +diff --git a/gdb/testsuite/gdb.base/dprintf-detach.exp b/gdb/testsuite/gdb.base/dprintf-detach.exp +--- a/gdb/testsuite/gdb.base/dprintf-detach.exp ++++ b/gdb/testsuite/gdb.base/dprintf-detach.exp +@@ -52,7 +52,7 @@ proc dprintf_detach_test { breakpoint_always_inserted dprintf_style disconnected + # Get PID of test program. + set inferior_pid -1 + set test "get inferior process ID" +- gdb_test_multiple "call (int) getpid ()" $test { ++ gdb_test_multiple "call ((int (*) (void)) getpid) ()" $test { + -re ".* = ($decimal).*$gdb_prompt $" { + set inferior_pid $expect_out(1,string) + pass $test +diff --git a/gdb/testsuite/gdb.base/info-os.exp b/gdb/testsuite/gdb.base/info-os.exp +--- a/gdb/testsuite/gdb.base/info-os.exp ++++ b/gdb/testsuite/gdb.base/info-os.exp +@@ -39,7 +39,7 @@ if ![runto_main] then { + # Get PID of test program. + set inferior_pid "" + set test "get inferior process ID" +-gdb_test_multiple "call (int) getpid()" $test { ++gdb_test_multiple "call ((int (*) (void)) getpid) ()" $test { + -re ".* = ($decimal).*$gdb_prompt $" { + set inferior_pid $expect_out(1,string) + pass $test +diff --git a/gdb/testsuite/gdb.threads/siginfo-threads.exp b/gdb/testsuite/gdb.threads/siginfo-threads.exp +--- a/gdb/testsuite/gdb.threads/siginfo-threads.exp ++++ b/gdb/testsuite/gdb.threads/siginfo-threads.exp +@@ -41,7 +41,7 @@ gdb_breakpoint [gdb_get_line_number "break-at-exit"] + + set test "get pid" + set pid "" +-gdb_test_multiple "p (int) getpid ()" $test { ++gdb_test_multiple "p ((int (*) (void))getpid) ()" $test { + -re " = (\[0-9\]+)\r\n$gdb_prompt $" { + set pid $expect_out(1,string) + pass $test diff --git a/gdb-backport-python-config-replace-deprecated-distutils.patch b/gdb-backport-python-config-replace-deprecated-distutils.patch new file mode 100644 index 0000000..8fc8f4f --- /dev/null +++ b/gdb-backport-python-config-replace-deprecated-distutils.patch @@ -0,0 +1,88 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= +Date: Thu, 19 Jan 2023 19:18:58 +0100 +Subject: gdb-backport-python-config-replace-deprecated-distutils.patch + +;;Backport replace deprecated distutils.sysconfig in +;;python-config (Lancelot SIX) + +gdb/python-config: replace deprecated distutils.sysconfig + +When running the gdb/configure script on ubuntu 22.04 with +python-3.10.4, I see: + + checking for python... no + checking for python3... /usr/bin/python3 + [...]/gdb/python/python-config.py:7: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives + from distutils import sysconfig + [...]/gdb/python/python-config.py:7: DeprecationWarning: The distutils.sysconfig module is deprecated, use sysconfig instead + from distutils import sysconfig + [...]/gdb/python/python-config.py:7: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives + from distutils import sysconfig + [...]/gdb/python/python-config.py:7: DeprecationWarning: The distutils.sysconfig module is deprecated, use sysconfig instead + from distutils import sysconfig + [...]/gdb/python/python-config.py:7: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives + from distutils import sysconfig + [...]/gdb/python/python-config.py:7: DeprecationWarning: The distutils.sysconfig module is deprecated, use sysconfig instead + from distutils import sysconfig + checking for python... yes + +The distutils module is deprecated as per the PEP 632[1] and will be +removed in python-3.12. + +This patch migrates gdb/python/python-config.py from distutils.sysconfig +to the sysconfig module[2]. + +The sysconfig module has has been introduced in the standard library in +python 3.2. Given that support for python < 3.2 has been removed by +edae3fd6600f: "gdb/python: remove Python 2 support", this patch does not +need to support both implementations for backward compatibility. + +Tested on ubuntu-22.04 and ubuntu 20.04. + +[1] https://peps.python.org/pep-0632/ +[2] https://docs.python.org/3/library/sysconfig.html + +Change-Id: Id0df2baf3ee6ce68bd01c236b829ab4c0a4526f6 + +diff --git a/gdb/python/python-config.py b/gdb/python/python-config.py +--- a/gdb/python/python-config.py ++++ b/gdb/python/python-config.py +@@ -4,7 +4,7 @@ + import sys + import os + import getopt +-from distutils import sysconfig ++import sysconfig + + valid_opts = ["prefix", "exec-prefix", "includes", "libs", "cflags", "ldflags", "help"] + +@@ -49,15 +49,15 @@ def to_unix_path(path): + + for opt in opt_flags: + if opt == "--prefix": +- print(to_unix_path(sysconfig.PREFIX)) ++ print(to_unix_path(os.path.normpath(sys.prefix))) + + elif opt == "--exec-prefix": +- print(to_unix_path(sysconfig.EXEC_PREFIX)) ++ print(to_unix_path(os.path.normpath(sys.exec_prefix))) + + elif opt in ("--includes", "--cflags"): + flags = [ +- "-I" + sysconfig.get_python_inc(), +- "-I" + sysconfig.get_python_inc(plat_specific=True), ++ "-I" + sysconfig.get_path("include"), ++ "-I" + sysconfig.get_path("platinclude"), + ] + if opt == "--cflags": + flags.extend(getvar("CFLAGS").split()) +@@ -76,7 +76,7 @@ for opt in opt_flags: + if getvar("LIBPL") is not None: + libs.insert(0, "-L" + getvar("LIBPL")) + elif os.name == "nt": +- libs.insert(0, "-L" + sysconfig.PREFIX + "/libs") ++ libs.insert(0, "-L" + os.path.normpath(sys.prefix) + "/libs") + if getvar("LINKFORSHARED") is not None: + libs.extend(getvar("LINKFORSHARED").split()) + print(to_unix_path(" ".join(libs))) diff --git a/gdb-backport-readline_support.patch b/gdb-backport-readline_support.patch new file mode 100644 index 0000000..89f381b --- /dev/null +++ b/gdb-backport-readline_support.patch @@ -0,0 +1,31 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= +Date: Mon, 10 Oct 2022 15:44:52 +0200 +Subject: gdb-backport-readline_support.patch + +Add support for readline 8.2 + +In readline 8.2 the type of rl_completer_word_break_characters changed to +include const. + +diff --git a/gdb/completer.c b/gdb/completer.c +--- a/gdb/completer.c ++++ b/gdb/completer.c +@@ -36,7 +36,7 @@ + calling a hook instead so we eliminate the CLI dependency. */ + #include "gdbcmd.h" + +-/* Needed for rl_completer_word_break_characters() and for ++/* Needed for rl_completer_word_break_characters and for + rl_filename_completion_function. */ + #include "readline/readline.h" + +@@ -2011,7 +2011,7 @@ gdb_completion_word_break_characters_throw () + rl_basic_quote_characters = NULL; + } + +- return rl_completer_word_break_characters; ++ return (char *) rl_completer_word_break_characters; + } + + char * diff --git a/gdb-bz634108-solib_address.patch b/gdb-bz634108-solib_address.patch new file mode 100644 index 0000000..58b473f --- /dev/null +++ b/gdb-bz634108-solib_address.patch @@ -0,0 +1,41 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-bz634108-solib_address.patch + +;; Verify GDB Python built-in function gdb.solib_address exists (BZ # 634108). +;;=fedoratest + +Fix gdb.solib_address (fix by Phil Muldoon). + +s/solib_address/solib_name/ during upstreaming. + +diff --git a/gdb/testsuite/gdb.python/rh634108-solib_address.exp b/gdb/testsuite/gdb.python/rh634108-solib_address.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.python/rh634108-solib_address.exp +@@ -0,0 +1,24 @@ ++# Copyright (C) 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 ++# 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 . ++ ++# https://bugzilla.redhat.com/show_bug.cgi?id=634108 ++ ++gdb_exit ++gdb_start ++ ++# Skip all tests if Python scripting is not enabled. ++if { [skip_python_tests] } { continue } ++ ++gdb_test "python print (gdb.solib_name(-1))" "None" "gdb.solib_name exists" diff --git a/gdb-ccache-workaround.patch b/gdb-ccache-workaround.patch new file mode 100644 index 0000000..802fa2b --- /dev/null +++ b/gdb-ccache-workaround.patch @@ -0,0 +1,26 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-ccache-workaround.patch + +;; Workaround ccache making lineno non-zero for command-line definitions. +;;=fedoratest: ccache is rarely used and it is even fixed now. + +diff --git a/gdb/testsuite/gdb.base/macscp.exp b/gdb/testsuite/gdb.base/macscp.exp +--- a/gdb/testsuite/gdb.base/macscp.exp ++++ b/gdb/testsuite/gdb.base/macscp.exp +@@ -27,6 +27,14 @@ if { [test_compiler_info "gcc-*"] } { + lappend options additional_flags=-fdebug-macro + } + ++# Workaround ccache making lineno non-zero for command-line definitions. ++if {[find_gcc] == "gcc" && [file executable "/usr/bin/gcc"]} { ++ set result [catch "exec which gcc" output] ++ if {$result == 0 && [string first "/ccache/" $output] > -1} { ++ lappend options "compiler=/usr/bin/gcc" ++ } ++} ++ + # Generate the intermediate object file. This is required by Darwin to + # have access to the .debug_macinfo section. + if {[gdb_compile "${srcdir}/${subdir}/macscp1.c" "${objfile}" \ diff --git a/gdb-container-rh-pkg.patch b/gdb-container-rh-pkg.patch new file mode 100644 index 0000000..618b621 --- /dev/null +++ b/gdb-container-rh-pkg.patch @@ -0,0 +1,30 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-container-rh-pkg.patch + +;; Add messages suggesting more recent RHEL gdbserver (RH BZ 1321114). +;;=fedora + +diff --git a/gdb/remote.c b/gdb/remote.c +--- a/gdb/remote.c ++++ b/gdb/remote.c +@@ -14343,7 +14343,17 @@ remote_target::pid_to_exec_file (int pid) + char *annex = NULL; + + if (packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE) +- return NULL; ++ { ++ warning (_("Remote gdbserver does not support determining executable " ++ "automatically.\n" ++"RHEL <=6.8 and <=7.2 versions of gdbserver do not support such automatic executable detection.\n" ++"The following versions of gdbserver support it:\n" ++"- Upstream version of gdbserver (unsupported) 7.10 or later\n" ++"- Red Hat Developer Toolset (DTS) version of gdbserver from DTS 4.0 or later (only on x86_64)\n" ++"- RHEL-7.3 versions of gdbserver (on any architecture)" ++)); ++ return NULL; ++ } + + inferior *inf = find_inferior_pid (this, pid); + if (inf == NULL) diff --git a/gdb-core-open-vdso-warning.patch b/gdb-core-open-vdso-warning.patch new file mode 100644 index 0000000..d6f8e00 --- /dev/null +++ b/gdb-core-open-vdso-warning.patch @@ -0,0 +1,58 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-core-open-vdso-warning.patch + +;; Fix GNU/Linux core open: Can't read pathname for load map: Input/output error. +;; Fix regression of undisplayed missing shared libraries caused by a fix for. +;;=fedoratest: It should be in glibc: libc-alpha: <20091004161706.GA27450@.*> + +http://sourceware.org/ml/gdb-patches/2009-10/msg00142.html +Subject: [patch] Fix GNU/Linux core open: Can't read pathname for load map: Input/output error. + +[ New patch variant. ] + +commit 7d760051ffb8a23cdc51342d4e6243fbc462f73f +Author: Ulrich Weigand +Date: Wed Sep 25 11:52:50 2013 +0000 + +diff --git a/gdb/testsuite/gdb.base/solib-symbol.exp b/gdb/testsuite/gdb.base/solib-symbol.exp +--- a/gdb/testsuite/gdb.base/solib-symbol.exp ++++ b/gdb/testsuite/gdb.base/solib-symbol.exp +@@ -29,6 +29,7 @@ set testfile "solib-symbol-main" + set srcfile ${srcdir}/${subdir}/${testfile}.c + set binfile [standard_output_file ${testfile}] + set bin_flags [list debug shlib=${binfile_lib}] ++set executable ${testfile} + + if [get_compiler_info] { + return -1 +@@ -70,8 +71,26 @@ gdb_test "br foo2" \ + "Breakpoint.*: foo2. .2 locations..*" \ + "foo2 in mdlib" + +-gdb_exit ++# Test GDB warns for shared libraris which have not been found. + +-return 0 ++gdb_test "info sharedlibrary" "/${libname}.*" + ++clean_restart ${executable} ++gdb_breakpoint "main" ++gdb_run_cmd ++set test "no warning for missing libraries" ++gdb_test_multiple "" $test { ++ -re "warning: Could not load shared library symbols for \[0-9\]+ libraries,.*\r\n$gdb_prompt $" { ++ fail $test ++ } ++ -re "Breakpoint \[0-9\]+, main .*\r\n$gdb_prompt $" { ++ pass $test ++ } ++} + ++clean_restart ${executable} ++gdb_test_no_output "set solib-absolute-prefix /doESnotEXIST" ++gdb_breakpoint "main" ++gdb_run_cmd ++gdb_test "" "warning: Could not load shared library symbols for \[0-9\]+ libraries,.*\r\nBreakpoint \[0-9\]+, main .*" \ ++ "warning for missing libraries" diff --git a/gdb-fedora-libncursesw.patch b/gdb-fedora-libncursesw.patch new file mode 100644 index 0000000..a1181d8 --- /dev/null +++ b/gdb-fedora-libncursesw.patch @@ -0,0 +1,71 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-fedora-libncursesw.patch + +;; Force libncursesw over libncurses to match the includes (RH BZ 1270534). +;;=push+jan + +Fedora: Force libncursesw over libncurses to match the includes. +https://bugzilla.redhat.com/show_bug.cgi?id=1270534 + +diff --git a/gdb/configure b/gdb/configure +--- a/gdb/configure ++++ b/gdb/configure +@@ -9568,6 +9568,7 @@ if test x"$prefer_curses" = xyes; then + # search /usr/local/include, if ncurses is installed in /usr/local. A + # default installation of ncurses on alpha*-dec-osf* will lead to such + # a situation. ++ # Fedora: Force libncursesw over libncurses to match the includes. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing waddstr" >&5 + $as_echo_n "checking for library containing waddstr... " >&6; } + if ${ac_cv_search_waddstr+:} false; then : +@@ -9592,7 +9593,7 @@ return waddstr (); + return 0; + } + _ACEOF +-for ac_lib in '' ncursesw ncurses cursesX curses; do ++for ac_lib in '' ncursesw; do + if test -z "$ac_lib"; then + ac_res="none required" + else +@@ -9666,6 +9667,7 @@ case $host_os in + esac + + # These are the libraries checked by Readline. ++# Fedora: Force libncursesw over libncurses to match the includes. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5 + $as_echo_n "checking for library containing tgetent... " >&6; } + if ${ac_cv_search_tgetent+:} false; then : +@@ -9690,7 +9692,7 @@ return tgetent (); + return 0; + } + _ACEOF +-for ac_lib in '' termcap tinfow tinfo curses ncursesw ncurses; do ++for ac_lib in '' ncursesw; do + if test -z "$ac_lib"; then + ac_res="none required" + else +diff --git a/gdb/configure.ac b/gdb/configure.ac +--- a/gdb/configure.ac ++++ b/gdb/configure.ac +@@ -714,7 +714,8 @@ if test x"$prefer_curses" = xyes; then + # search /usr/local/include, if ncurses is installed in /usr/local. A + # default installation of ncurses on alpha*-dec-osf* will lead to such + # a situation. +- AC_SEARCH_LIBS(waddstr, [ncursesw ncurses cursesX curses]) ++ # Fedora: Force libncursesw over libncurses to match the includes. ++ AC_SEARCH_LIBS(waddstr, [ncursesw]) + + if test "$ac_cv_search_waddstr" != no; then + curses_found=yes +@@ -756,7 +757,8 @@ case $host_os in + esac + + # These are the libraries checked by Readline. +-AC_SEARCH_LIBS(tgetent, [termcap tinfow tinfo curses ncursesw ncurses]) ++# Fedora: Force libncursesw over libncurses to match the includes. ++AC_SEARCH_LIBS(tgetent, [ncursesw]) + + if test "$ac_cv_search_tgetent" = no; then + CONFIG_OBS="$CONFIG_OBS stub-termcap.o" diff --git a/gdb-gcc-13-backport-self-move-diagnostic-fix b/gdb-gcc-13-backport-self-move-diagnostic-fix new file mode 100644 index 0000000..d0172aa --- /dev/null +++ b/gdb-gcc-13-backport-self-move-diagnostic-fix @@ -0,0 +1,43 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Kevin Buettner +Date: Fri, 20 Jan 2023 15:15:59 -0700 +Subject: gdb-gcc-13-backport-self-move-diagnostic-fix + +;; gcc 13 fallout: Backport Jan-Benedict Glaw's fix for the self-move +;; warning check + +Fix self-move warning check for GCC 13+ + +GCC 13 got the self-move warning (0abb78dda084a14b3d955757c6431fff71c263f3), +but that warning is only checked for clang, resulting in: + +/usr/lib/gcc-snapshot/bin/g++ -x c++ -I. -I. -I./config -DLOCALEDIR="\"/tmp/gdb-m68k-linux/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../readline/readline/.. -I./../zlib -I../bfd -I./../bfd -I./../include -I../libdecnumber -I./../libdecnumber -I./../gnulib/import -I../gnulib/import -I./.. -I.. -I./../libbacktrace/ -I../libbacktrace/ -DTUI=1 -I./.. -pthread -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-variable -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-error=maybe-uninitialized -Wno-mismatched-tags -Wsuggest-override -Wimplicit-fallthrough=3 -Wduplicated-cond -Wshadow=local -Wdeprecated-copy -Wdeprecated-copy-dtor -Wredundant-move -Wmissing-declarations -Wstrict-null-sentinel -Wformat -Wformat-nonliteral -Werror -g -O2 -c -o unittests/environ-selftests.o -MT unittests/environ-selftests.o -MMD -MP -MF unittests/.deps/environ-selftests.Tpo unittests/environ-selftests.c +unittests/environ-selftests.c: In function 'void selftests::gdb_environ_tests::test_self_move()': +unittests/environ-selftests.c:228:7: error: moving 'env' of type 'gdb_environ' to itself [-Werror=self-move] + 228 | env = std::move (env); + | ~~~~^~~~~~~~~~~~~~~~~ +unittests/environ-selftests.c:228:7: note: remove 'std::move' call +cc1plus: all warnings being treated as errors +make[1]: *** [Makefile:1896: unittests/environ-selftests.o] Error 1 +make[1]: Leaving directory '/var/lib/laminar/run/gdb-m68k-linux/3/binutils-gdb/gdb' +make: *** [Makefile:13193: all-gdb] Error 2 + +diff --git a/include/diagnostics.h b/include/diagnostics.h +--- a/include/diagnostics.h ++++ b/include/diagnostics.h +@@ -79,6 +79,15 @@ + # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \ + DIAGNOSTIC_IGNORE ("-Wformat-nonliteral") + ++# if __GNUC__ >= 5 ++# define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE \ ++ DIAGNOSTIC_IGNORE ("-Wunused-but-set-variable") ++# endif ++ ++# if __GNUC__ >= 13 ++# define DIAGNOSTIC_IGNORE_SELF_MOVE DIAGNOSTIC_IGNORE ("-Wself-move") ++# endif ++ + /* GCC 4.8's "diagnostic push/pop" seems broken when using this, -Wswitch + remains enabled at the error level even after a pop. Therefore, don't + use it for GCC < 5. */ diff --git a/gdb-glibc-strstr-workaround.patch b/gdb-glibc-strstr-workaround.patch new file mode 100644 index 0000000..da9c5de --- /dev/null +++ b/gdb-glibc-strstr-workaround.patch @@ -0,0 +1,132 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-glibc-strstr-workaround.patch + +;; Workaround PR libc/14166 for inferior calls of strstr. +;;=fedoratest: Compatibility with RHELs (unchecked which ones). + +diff --git a/gdb/testsuite/gdb.base/gnu-ifunc-strstr-workaround.exp b/gdb/testsuite/gdb.base/gnu-ifunc-strstr-workaround.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gnu-ifunc-strstr-workaround.exp +@@ -0,0 +1,119 @@ ++# Copyright (C) 2012 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++# Workaround for: ++# invalid IFUNC DW_AT_linkage_name: memmove strstr time ++# http://sourceware.org/bugzilla/show_bug.cgi?id=14166 ++ ++if {[skip_shlib_tests]} { ++ return 0 ++} ++ ++set testfile "gnu-ifunc-strstr-workaround" ++set executable ${testfile} ++set srcfile start.c ++set binfile [standard_output_file ${executable}] ++ ++if [prepare_for_testing ${testfile}.exp $executable $srcfile] { ++ return -1 ++} ++ ++if ![runto_main] { ++ return 0 ++} ++ ++set test "ptype atoi" ++gdb_test_multiple $test $test { ++ -re "type = int \\(const char \\*\\)\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "type = int \\(\\)\r\n$gdb_prompt $" { ++ untested "$test (no DWARF)" ++ return 0 ++ } ++ -re "type = \\(\\)\r\n$gdb_prompt $" { ++ untested "$test (no DWARF)" ++ return 0 ++ } ++} ++ ++set addr "" ++set test "print strstr" ++gdb_test_multiple $test $test { ++ -re " = {} (0x\[0-9a-f\]+) \r\n$gdb_prompt $" { ++ set addr $expect_out(1,string) ++ pass $test ++ } ++ -re " = {} (0x\[0-9a-f\]+) <__strstr>\r\n$gdb_prompt $" { ++ set addr $expect_out(1,string) ++ pass "$test (GDB workaround)" ++ } ++ -re " = {} (0x\[0-9a-f\]+) <__libc_strstr>\r\n$gdb_prompt $" { ++ set addr $expect_out(1,string) ++ pass "$test (fixed glibc)" ++ } ++ -re " = {} (0x\[0-9a-f\]+) <__libc_strstr_ifunc>\r\n$gdb_prompt $" { ++ set addr $expect_out(1,string) ++ pass "$test (fixed glibc)" ++ } ++ -re " = {char \\*\\(const char \\*, const char \\*\\)} 0x\[0-9a-f\]+ \r\n$gdb_prompt $" { ++ untested "$test (gnu-ifunc not in use by glibc)" ++ return 0 ++ } ++} ++ ++set test "info sym" ++gdb_test_multiple "info sym $addr" $test { ++ -re "strstr in section \\.text of /lib\[^/\]*/libc.so.6\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re " = {char \\*\\(const char \\*, const char \\*\\)} 0x\[0-9a-f\]+ \r\n$gdb_prompt $" { ++ # unexpected ++ xfail "$test (not in libc.so.6)" ++ return 0 ++ } ++} ++ ++set test "info addr strstr" ++gdb_test_multiple $test $test { ++ -re "Symbol \"strstr\" is a function at address $addr\\.\r\n$gdb_prompt $" { ++ fail "$test (DWARF for strstr)" ++ } ++ -re "Symbol \"strstr\" is at $addr in a file compiled without debugging\\.\r\n$gdb_prompt $" { ++ pass "$test" ++ } ++} ++ ++set test "print strstr second time" ++gdb_test_multiple "print strstr" $test { ++ -re " = {} $addr \r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re " = {} $addr <__strstr>\r\n$gdb_prompt $" { ++ pass "$test (GDB workaround)" ++ } ++ -re " = {} $addr <__libc_strstr>\r\n$gdb_prompt $" { ++ pass "$test (fixed glibc)" ++ } ++ -re " = {} $addr <__libc_strstr_ifunc>\r\n$gdb_prompt $" { ++ pass "$test (fixed glibc)" ++ } ++ -re " = {void \\*\\(void\\)} 0x\[0-9a-f\]+ \r\n$gdb_prompt $" { ++ fail $test ++ } ++} ++ ++gdb_test {print (char *)strstr("abc","b")} { = 0x[0-9a-f]+ "bc"} ++gdb_test {print (char *)strstr("def","e")} { = 0x[0-9a-f]+ "ef"} diff --git a/gdb-gstack.man b/gdb-gstack.man new file mode 100644 index 0000000..1f4e406 --- /dev/null +++ b/gdb-gstack.man @@ -0,0 +1,48 @@ +.\" +.\" gstack manual page. +.\" Copyright (c) 1999 Ross Thompson +.\" Copyright (c) 2001, 2002, 2004, 2008 Red Hat, Inc. +.\" +.\" Original author: Ross Thompson +.\" +.\" 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; see the file COPYING. If not, write to +.\" the Free Software Foundation, 59 Temple Place - Suite 330, +.\" Boston, MA 02111-1307, USA. +.\" +.TH GSTACK 1 "Feb 15 2008" "Red Hat Linux" "Linux Programmer's Manual" + +.SH NAME +gstack \- print a stack trace of a running process + +.SH SYNOPSIS +.B gstack +pid + +.SH DESCRIPTION + +\f3gstack\f1 attaches to the active process named by the \f3pid\f1 on +the command line, and prints out an execution stack trace. If ELF +symbols exist in the binary (usually the case unless you have run +strip(1)), then symbolic addresses are printed as well. + +If the process is part of a thread group, then \f3gstack\f1 will print +out a stack trace for each of the threads in the group. + +.SH SEE ALSO +nm(1), ptrace(2), gdb(1) + +.SH AUTHORS +Ross Thompson + +Red Hat, Inc. diff --git a/gdb-libexec-add-index.patch b/gdb-libexec-add-index.patch new file mode 100644 index 0000000..19f6b54 --- /dev/null +++ b/gdb-libexec-add-index.patch @@ -0,0 +1,37 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-libexec-add-index.patch + +;; Fix gdb-headless /usr/bin/ executables (BZ 1390251). +;; +;; Also, make /usr/bin/gdb.minimal be the default GDB used, if it's +;; present. For rationale, see: +;; +;; https://fedoraproject.org/wiki/Changes/Minimal_GDB_in_buildroot +;;=fedora + +diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh +--- a/gdb/contrib/gdb-add-index.sh ++++ b/gdb/contrib/gdb-add-index.sh +@@ -22,6 +22,20 @@ GDB=${GDB:=gdb} + OBJCOPY=${OBJCOPY:=objcopy} + READELF=${READELF:=readelf} + ++GDB2=/usr/libexec/gdb ++if test -x $GDB2 && ! which $GDB &>/dev/null; then ++ GDB=$GDB2 ++fi ++ ++# We default to using /usr/bin/gdb.minimal if it's present. See ++# https://bugzilla.redhat.com/show_bug.cgi?id=1695015 and ++# https://fedoraproject.org/wiki/Changes/Minimal_GDB_in_buildroot for ++# explanations. ++GDB3=/usr/bin/gdb.minimal ++if test -x $GDB3; then ++ GDB=$GDB3 ++fi ++ + myname="${0##*/}" + + dwarf5="" diff --git a/gdb-lineno-makeup-test.patch b/gdb-lineno-makeup-test.patch new file mode 100644 index 0000000..4b96286 --- /dev/null +++ b/gdb-lineno-makeup-test.patch @@ -0,0 +1,165 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-lineno-makeup-test.patch + +;; Testcase for "Do not make up line information" fix by Daniel Jacobowitz. +;;=fedoratest + +New testcase for: +https://bugzilla.redhat.com/show_bug.cgi?id=466222 + (for the first / customer recommended fix) +and the upstream fix: +http://sourceware.org/ml/gdb-patches/2006-11/msg00253.html + [rfc] Do not make up line information +http://sourceware.org/ml/gdb-cvs/2006-11/msg00127.html + +diff --git a/gdb/testsuite/gdb.base/lineno-makeup-func.c b/gdb/testsuite/gdb.base/lineno-makeup-func.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/lineno-makeup-func.c +@@ -0,0 +1,21 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2009 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++void ++func (void) ++{ ++} +diff --git a/gdb/testsuite/gdb.base/lineno-makeup.c b/gdb/testsuite/gdb.base/lineno-makeup.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/lineno-makeup.c +@@ -0,0 +1,35 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2009 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* DW_AT_low_pc-DW_AT_high_pc should cover the function without line number ++ information (.debug_line) so we cannot use an external object file. ++ ++ It must not be just a label as it would alias on the next function even for ++ correct GDB. Therefore some stub data must be placed there. ++ ++ We need to provide a real stub function body as at least s390 ++ (s390_analyze_prologue) would skip the whole body till reaching `main'. */ ++ ++extern void func (void); ++asm ("func: .incbin \"" BINFILENAME "\""); ++ ++int ++main (void) ++{ ++ func (); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/lineno-makeup.exp b/gdb/testsuite/gdb.base/lineno-makeup.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/lineno-makeup.exp +@@ -0,0 +1,78 @@ ++# Copyright 2009 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++set testfile "lineno-makeup" ++set srcfuncfile ${testfile}-func.c ++set srcfile ${testfile}.c ++set objfuncfile [standard_output_file ${testfile}-func.o] ++set binfuncfile [standard_output_file ${testfile}-func.bin] ++set binfile [standard_output_file ${testfile}] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfuncfile}" "${objfuncfile}" object {}] != "" } { ++ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." ++} ++ ++set objcopy [catch "exec objcopy -O binary --only-section .text ${objfuncfile} ${binfuncfile}" output] ++verbose -log "objcopy=$objcopy: $output" ++if { $objcopy != 0 } { ++ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." ++} ++set binfuncfilesize [file size $binfuncfile] ++verbose -log "file size $binfuncfile = $binfuncfilesize" ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug additional_flags=-DBINFILENAME=\"$binfuncfile\"]] != "" } { ++ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ ++set b_addr "" ++set test "break func" ++gdb_test_multiple $test $test { ++ -re "Breakpoint \[0-9\]+ at (0x\[0-9a-f\]+)\r\n$gdb_prompt $" { ++ set b_addr $expect_out(1,string) ++ pass $test ++ } ++ -re "Breakpoint \[0-9\]+ at (0x\[0-9a-f\]+): .*\r\n$gdb_prompt $" { ++ set b_addr $expect_out(1,string) ++ fail $test ++ } ++} ++verbose -log "b_addr=<$b_addr>" ++ ++set p_addr "" ++set test "print func" ++gdb_test_multiple $test $test { ++ -re "\\$\[0-9\]+ = {} (0x\[0-9a-f\]+) \r\n$gdb_prompt $" { ++ set p_addr $expect_out(1,string) ++ pass $test ++ } ++} ++verbose -log "p_addr=<$p_addr>" ++ ++set test "break address belongs to func" ++if {$b_addr == $p_addr} { ++ pass "$test (exact match)" ++} else { ++ set skip [expr $b_addr - $p_addr] ++ if {$skip > 0 && $skip < $binfuncfilesize} { ++ pass "$test (prologue skip by $skip bytes)" ++ } else { ++ fail $test ++ } ++} diff --git a/gdb-linux_perf-bundle.patch b/gdb-linux_perf-bundle.patch new file mode 100644 index 0000000..a2e443d --- /dev/null +++ b/gdb-linux_perf-bundle.patch @@ -0,0 +1,224 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-linux_perf-bundle.patch + +;; [dts+el7] [x86*] Bundle linux_perf.h for libipt (RH BZ 1256513). +;;=fedora + +diff --git a/gdb/gdb.c b/gdb/gdb.c +--- a/gdb/gdb.c ++++ b/gdb/gdb.c +@@ -20,11 +20,19 @@ + #include "main.h" + #include "interps.h" + ++#ifdef PERF_ATTR_SIZE_VER5_BUNDLE ++extern "C" void __libipt_init(void); ++#endif ++ + int + main (int argc, char **argv) + { + struct captured_main_args args; + ++#ifdef PERF_ATTR_SIZE_VER5_BUNDLE ++ __libipt_init(); ++#endif ++ + memset (&args, 0, sizeof args); + args.argc = argc; + args.argv = argv; +diff --git a/gdb/nat/linux-btrace.h b/gdb/nat/linux-btrace.h +--- a/gdb/nat/linux-btrace.h ++++ b/gdb/nat/linux-btrace.h +@@ -27,6 +27,177 @@ + # include + #endif + ++#ifdef PERF_ATTR_SIZE_VER5_BUNDLE ++#ifndef HAVE_LINUX_PERF_EVENT_H ++# error "PERF_ATTR_SIZE_VER5_BUNDLE && !HAVE_LINUX_PERF_EVENT_H" ++#endif ++#ifndef PERF_ATTR_SIZE_VER5 ++#define PERF_ATTR_SIZE_VER5 ++#define perf_event_mmap_page perf_event_mmap_page_bundle ++// kernel-headers-3.10.0-493.el7.x86_64/usr/include/linux/perf_event.h ++/* ++ * Structure of the page that can be mapped via mmap ++ */ ++struct perf_event_mmap_page { ++ __u32 version; /* version number of this structure */ ++ __u32 compat_version; /* lowest version this is compat with */ ++ ++ /* ++ * Bits needed to read the hw events in user-space. ++ * ++ * u32 seq, time_mult, time_shift, index, width; ++ * u64 count, enabled, running; ++ * u64 cyc, time_offset; ++ * s64 pmc = 0; ++ * ++ * do { ++ * seq = pc->lock; ++ * barrier() ++ * ++ * enabled = pc->time_enabled; ++ * running = pc->time_running; ++ * ++ * if (pc->cap_usr_time && enabled != running) { ++ * cyc = rdtsc(); ++ * time_offset = pc->time_offset; ++ * time_mult = pc->time_mult; ++ * time_shift = pc->time_shift; ++ * } ++ * ++ * index = pc->index; ++ * count = pc->offset; ++ * if (pc->cap_user_rdpmc && index) { ++ * width = pc->pmc_width; ++ * pmc = rdpmc(index - 1); ++ * } ++ * ++ * barrier(); ++ * } while (pc->lock != seq); ++ * ++ * NOTE: for obvious reason this only works on self-monitoring ++ * processes. ++ */ ++ __u32 lock; /* seqlock for synchronization */ ++ __u32 index; /* hardware event identifier */ ++ __s64 offset; /* add to hardware event value */ ++ __u64 time_enabled; /* time event active */ ++ __u64 time_running; /* time event on cpu */ ++ union { ++ __u64 capabilities; ++ struct { ++ __u64 cap_bit0 : 1, /* Always 0, deprecated, see commit 860f085b74e9 */ ++ cap_bit0_is_deprecated : 1, /* Always 1, signals that bit 0 is zero */ ++ ++ cap_user_rdpmc : 1, /* The RDPMC instruction can be used to read counts */ ++ cap_user_time : 1, /* The time_* fields are used */ ++ cap_user_time_zero : 1, /* The time_zero field is used */ ++ cap_____res : 59; ++ }; ++ }; ++ ++ /* ++ * If cap_user_rdpmc this field provides the bit-width of the value ++ * read using the rdpmc() or equivalent instruction. This can be used ++ * to sign extend the result like: ++ * ++ * pmc <<= 64 - width; ++ * pmc >>= 64 - width; // signed shift right ++ * count += pmc; ++ */ ++ __u16 pmc_width; ++ ++ /* ++ * If cap_usr_time the below fields can be used to compute the time ++ * delta since time_enabled (in ns) using rdtsc or similar. ++ * ++ * u64 quot, rem; ++ * u64 delta; ++ * ++ * quot = (cyc >> time_shift); ++ * rem = cyc & (((u64)1 << time_shift) - 1); ++ * delta = time_offset + quot * time_mult + ++ * ((rem * time_mult) >> time_shift); ++ * ++ * Where time_offset,time_mult,time_shift and cyc are read in the ++ * seqcount loop described above. This delta can then be added to ++ * enabled and possible running (if index), improving the scaling: ++ * ++ * enabled += delta; ++ * if (index) ++ * running += delta; ++ * ++ * quot = count / running; ++ * rem = count % running; ++ * count = quot * enabled + (rem * enabled) / running; ++ */ ++ __u16 time_shift; ++ __u32 time_mult; ++ __u64 time_offset; ++ /* ++ * If cap_usr_time_zero, the hardware clock (e.g. TSC) can be calculated ++ * from sample timestamps. ++ * ++ * time = timestamp - time_zero; ++ * quot = time / time_mult; ++ * rem = time % time_mult; ++ * cyc = (quot << time_shift) + (rem << time_shift) / time_mult; ++ * ++ * And vice versa: ++ * ++ * quot = cyc >> time_shift; ++ * rem = cyc & (((u64)1 << time_shift) - 1); ++ * timestamp = time_zero + quot * time_mult + ++ * ((rem * time_mult) >> time_shift); ++ */ ++ __u64 time_zero; ++ __u32 size; /* Header size up to __reserved[] fields. */ ++ ++ /* ++ * Hole for extension of the self monitor capabilities ++ */ ++ ++ __u8 __reserved[118*8+4]; /* align to 1k. */ ++ ++ /* ++ * Control data for the mmap() data buffer. ++ * ++ * User-space reading the @data_head value should issue an smp_rmb(), ++ * after reading this value. ++ * ++ * When the mapping is PROT_WRITE the @data_tail value should be ++ * written by userspace to reflect the last read data, after issueing ++ * an smp_mb() to separate the data read from the ->data_tail store. ++ * In this case the kernel will not over-write unread data. ++ * ++ * See perf_output_put_handle() for the data ordering. ++ * ++ * data_{offset,size} indicate the location and size of the perf record ++ * buffer within the mmapped area. ++ */ ++ __u64 data_head; /* head in the data section */ ++ __u64 data_tail; /* user-space written tail */ ++ __u64 data_offset; /* where the buffer starts */ ++ __u64 data_size; /* data buffer size */ ++ ++ /* ++ * AUX area is defined by aux_{offset,size} fields that should be set ++ * by the userspace, so that ++ * ++ * aux_offset >= data_offset + data_size ++ * ++ * prior to mmap()ing it. Size of the mmap()ed area should be aux_size. ++ * ++ * Ring buffer pointers aux_{head,tail} have the same semantics as ++ * data_{head,tail} and same ordering rules apply. ++ */ ++ __u64 aux_head; ++ __u64 aux_tail; ++ __u64 aux_offset; ++ __u64 aux_size; ++}; ++#endif // PERF_ATTR_SIZE_VER5 ++#endif // PERF_ATTR_SIZE_VER5_BUNDLE ++ + struct target_ops; + + #if HAVE_LINUX_PERF_EVENT_H +diff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4 +--- a/gdbsupport/common.m4 ++++ b/gdbsupport/common.m4 +@@ -156,7 +156,7 @@ AC_DEFUN([GDB_AC_COMMON], [ + AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ + #include + #ifndef PERF_ATTR_SIZE_VER5 +- # error ++ // error // PERF_ATTR_SIZE_VER5_BUNDLE is not available here - Fedora+RHEL + #endif + ]])], [perf_event=yes], [perf_event=no]) + if test "$perf_event" != yes; then diff --git a/gdb-opcodes-clflushopt-test.patch b/gdb-opcodes-clflushopt-test.patch new file mode 100644 index 0000000..f95999e --- /dev/null +++ b/gdb-opcodes-clflushopt-test.patch @@ -0,0 +1,62 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-opcodes-clflushopt-test.patch + +;; Test clflushopt instruction decode (for RH BZ 1262471). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.arch/amd64-clflushopt.S b/gdb/testsuite/gdb.arch/amd64-clflushopt.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/amd64-clflushopt.S +@@ -0,0 +1,19 @@ ++/* Copyright 2016 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++ ++ This file is part of the gdb testsuite. */ ++ ++_start: .globl _start ++ clflushopt (%edi) +diff --git a/gdb/testsuite/gdb.arch/amd64-clflushopt.exp b/gdb/testsuite/gdb.arch/amd64-clflushopt.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/amd64-clflushopt.exp +@@ -0,0 +1,25 @@ ++# Copyright 2016 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if { ![istarget "x86_64-*-*"] && ![istarget "i?86-*-*"] } then { ++ verbose "Skipping amd64 clflushopt test." ++ return ++} ++ ++if [prepare_for_testing amd64-clflushopt.exp amd64-clflushopt amd64-clflushopt.S [list debug "additional_flags=-nostdlib"]] { ++ return -1 ++} ++ ++gdb_test "disas _start" "Dump of assembler code for function _start:\r\n *0x\[0-9a-f\]+ <\[+\]0>:\tclflushopt \\(%edi\\)\r\nEnd of assembler dump\\." "clflushopt" diff --git a/gdb-orphanripper.c b/gdb-orphanripper.c new file mode 100644 index 0000000..2653dd2 --- /dev/null +++ b/gdb-orphanripper.c @@ -0,0 +1,752 @@ +/* + * Copyright 2006-2007 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Reap any leftover children possibly holding file descriptors. + * Children are identified by the stale file descriptor or PGID / SID. + * Both can be missed but only the stale file descriptors are important for us. + * PGID / SID may be set by the children on their own. + * If we fine a candidate we kill it will all its process tree (grandchildren). + * The child process is run with `2>&1' redirection (due to forkpty(3)). + * 2007-07-10 Jan Kratochvil + */ + +/* For getpgid(2). */ +#define _GNU_SOURCE 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define LENGTH(x) (sizeof (x) / sizeof (*(x))) + +static const char *progname; + +static volatile pid_t child; + +static void signal_chld (int signo) +{ +} + +static volatile int signal_alrm_hit = 0; + +static void signal_alrm (int signo) +{ + signal_alrm_hit = 1; +} + +static char childptyname[LINE_MAX]; + +static void print_child_error (const char *reason, char **argv) +{ + char **sp; + + fprintf (stderr, "%s: %d %s:", progname, (int) child, reason); + for (sp = argv; *sp != NULL; sp++) + { + fputc (' ', stderr); + fputs (*sp, stderr); + } + fputc ('\n', stderr); +} + +static int read_out (int amaster) +{ + char buf[LINE_MAX]; + ssize_t buf_got; + + buf_got = read (amaster, buf, sizeof buf); + if (buf_got == 0) + return 0; + /* Weird but at least after POLLHUP we get EIO instead of just EOF. */ + if (buf_got == -1 && errno == EIO) + return 0; + if (buf_got == -1 && errno == EAGAIN) + return 0; + if (buf_got < 0) + { + perror ("read (amaster)"); + exit (EXIT_FAILURE); + } + if (write (STDOUT_FILENO, buf, buf_got) != buf_got) + { + perror ("write(2)"); + exit (EXIT_FAILURE); + } + return 1; +} + +/* kill (child, 0) == 0 sometimes even when CHILD's state is already "Z". */ + +static int child_exited (void) +{ + char buf[200]; + int fd, i, retval; + ssize_t got; + char state[3]; + + snprintf (buf, sizeof (buf), "/proc/%ld/stat", (long) child); + fd = open (buf, O_RDONLY); + if (fd == -1) + { + perror ("open (/proc/CHILD/stat)"); + exit (EXIT_FAILURE); + } + got = read (fd, buf, sizeof(buf)); + if (got <= 0) + { + perror ("read (/proc/CHILD/stat)"); + exit (EXIT_FAILURE); + } + if (close (fd) != 0) + { + perror ("close (/proc/CHILD/stat)"); + exit (EXIT_FAILURE); + } + /* RHEL-5 does not support %ms. */ + i = sscanf (buf, "%*d%*s%2s", state); + if (i != 1) + { + perror ("sscanf (/proc/CHILD/stat)"); + exit (EXIT_FAILURE); + } + retval = strcmp (state, "Z") == 0; + return retval; +} + +static int spawn (char **argv, int timeout) +{ + pid_t child_got; + int status, amaster, i, rc; + struct sigaction act; + sigset_t set; + struct termios termios; + unsigned alarm_orig; + + /* We do not use signal(2) to be sure we do not have SA_RESTART. */ + memset (&act, 0, sizeof (act)); + act.sa_handler = signal_chld; + i = sigemptyset (&act.sa_mask); + assert (i == 0); + act.sa_flags = 0; /* !SA_RESTART */ + i = sigaction (SIGCHLD, &act, NULL); + assert (i == 0); + + i = sigemptyset (&set); + assert (i == 0); + i = sigaddset (&set, SIGCHLD); + assert (i == 0); + i = sigprocmask (SIG_SETMASK, &set, NULL); + assert (i == 0); + + /* With TERMP passed as NULL we get "\n" -> "\r\n". */ + termios.c_iflag = IGNBRK | IGNPAR; + termios.c_oflag = 0; + termios.c_cflag = CS8 | CREAD | CLOCAL | HUPCL | B9600; + termios.c_lflag = IEXTEN | NOFLSH; + memset (termios.c_cc, _POSIX_VDISABLE, sizeof (termios.c_cc)); + termios.c_cc[VTIME] = 0; + termios.c_cc[VMIN ] = 1; + cfmakeraw (&termios); +#ifdef FLUSHO + /* Workaround a readline deadlock bug in _get_tty_settings(). */ + termios.c_lflag &= ~FLUSHO; +#endif + child = forkpty (&amaster, childptyname, &termios, NULL); + switch (child) + { + case -1: + perror ("forkpty(3)"); + exit (EXIT_FAILURE); + case 0: + /* Do not replace STDIN as inferiors query its termios. */ +#if 0 + i = close (STDIN_FILENO); + assert (i == 0); + i = open ("/dev/null", O_RDONLY); + assert (i == STDIN_FILENO); +#endif + + i = sigemptyset (&set); + assert (i == 0); + i = sigprocmask (SIG_SETMASK, &set, NULL); + assert (i == 0); + + /* Do not setpgrp(2) in the parent process as the process-group + is shared for the whole sh(1) pipeline we could be a part + of. The process-group is set according to PID of the first + command in the pipeline. + We would rip even vi(1) in the case of: + ./orphanripper sh -c 'sleep 1&' | vi - + */ + /* Do not setpgrp(2) as our pty would not be ours and we would + get `SIGSTOP' later, particularly after spawning gdb(1). + setsid(3) was already executed by forkpty(3) and it would fail if + executed again. */ + if (getpid() != getpgrp ()) + { + perror ("getpgrp(2)"); + exit (EXIT_FAILURE); + } + execvp (argv[0], argv); + perror ("execvp(2)"); + exit (EXIT_FAILURE); + default: + break; + } + i = fcntl (amaster, F_SETFL, O_RDWR | O_NONBLOCK); + if (i != 0) + { + perror ("fcntl (amaster, F_SETFL, O_NONBLOCK)"); + exit (EXIT_FAILURE); + } + + /* We do not use signal(2) to be sure we do not have SA_RESTART. */ + act.sa_handler = signal_alrm; + i = sigaction (SIGALRM, &act, NULL); + assert (i == 0); + + alarm_orig = alarm (timeout); + assert (alarm_orig == 0); + + i = sigemptyset (&set); + assert (i == 0); + + while (!signal_alrm_hit) + { + struct pollfd pollfd; + + pollfd.fd = amaster; + pollfd.events = POLLIN; + i = ppoll (&pollfd, 1, NULL, &set); + if (i == -1 && errno == EINTR) + { + if (child_exited ()) + break; + /* Non-CHILD child may have exited. */ + continue; + } + assert (i == 1); + /* Data available? Process it first. */ + if (pollfd.revents & POLLIN) + { + if (!read_out (amaster)) + { + fprintf (stderr, "%s: Unexpected EOF\n", progname); + exit (EXIT_FAILURE); + } + } + if (pollfd.revents & POLLHUP) + break; + if ((pollfd.revents &= ~POLLIN) != 0) + { + fprintf (stderr, "%s: ppoll(2): revents 0x%x\n", progname, + (unsigned) pollfd.revents); + exit (EXIT_FAILURE); + } + /* Child exited? */ + if (child_exited ()) + break; + } + + if (signal_alrm_hit) + { + i = kill (child, SIGKILL); + assert (i == 0); + } + else + alarm (0); + + /* WNOHANG still could fail. */ + child_got = waitpid (child, &status, 0); + if (child != child_got) + { + fprintf (stderr, "waitpid (%d) = %d: %m\n", (int) child, (int) child_got); + exit (EXIT_FAILURE); + } + if (signal_alrm_hit) + { + char *buf; + + if (asprintf (&buf, "Timed out after %d seconds", timeout) != -1) + { + print_child_error (buf, argv); + free (buf); + } + rc = 128 + SIGALRM; + } + else if (WIFEXITED (status)) + rc = WEXITSTATUS (status); + else if (WIFSIGNALED (status)) + { + print_child_error (strsignal (WTERMSIG (status)), argv); + rc = 128 + WTERMSIG (status); + } + else if (WIFSTOPPED (status)) + { + fprintf (stderr, "waitpid (%d): WIFSTOPPED - WSTOPSIG is %d\n", + (int) child, WSTOPSIG (status)); + exit (EXIT_FAILURE); + } + else + { + fprintf (stderr, "waitpid (%d): !WIFEXITED (%d)\n", (int) child, status); + exit (EXIT_FAILURE); + } + + /* Not used in fact. */ + i = sigprocmask (SIG_SETMASK, &set, NULL); + assert (i == 0); + + /* Do not unset O_NONBLOCK as a stale child (the whole purpose of this + program) having open its output pty would block us in read_out. */ +#if 0 + i = fcntl (amaster, F_SETFL, O_RDONLY /* !O_NONBLOCK */); + if (i != 0) + { + perror ("fcntl (amaster, F_SETFL, O_RDONLY /* !O_NONBLOCK */)"); + exit (EXIT_FAILURE); + } +#endif + + while (read_out (amaster)); + + /* Do not close the master FD as the child would have `/dev/pts/23 (deleted)' + entries which are not expected (and expecting ` (deleted)' would be + a race. */ +#if 0 + i = close (amaster); + if (i != 0) + { + perror ("close (forkpty ()'s amaster)"); + exit (EXIT_FAILURE); + } +#endif + + return rc; +} + +/* Detected commandline may look weird due to a race: + Original command: + ./orphanripper sh -c 'sleep 1&' & + Correct output: + [1] 29610 + ./orphanripper: Killed -9 orphan PID 29612 (PGID 29611): sleep 1 + Raced output (sh(1) child still did not update its argv[]): + [1] 29613 + ./orphanripper: Killed -9 orphan PID 29615 (PGID 29614): sh -c sleep 1& + We could delay a bit before ripping the children. */ +static const char *read_cmdline (pid_t pid) +{ + char cmdline_fname[32]; + static char cmdline[LINE_MAX]; + int fd; + ssize_t got; + char *s; + + if (snprintf (cmdline_fname, sizeof cmdline_fname, "/proc/%d/cmdline", + (int) pid) < 0) + return NULL; + fd = open (cmdline_fname, O_RDONLY); + if (fd == -1) + { + /* It may have already exited - ENOENT. */ +#if 0 + fprintf (stderr, "%s: open (\"%s\"): %m\n", progname, cmdline_fname); +#endif + return NULL; + } + got = read (fd, cmdline, sizeof (cmdline) - 1); + if (got == -1) + fprintf (stderr, "%s: read (\"%s\"): %m\n", progname, + cmdline_fname); + if (close (fd) != 0) + fprintf (stderr, "%s: close (\"%s\"): %m\n", progname, + cmdline_fname); + if (got < 0) + return NULL; + /* Convert '\0' argument delimiters to spaces. */ + for (s = cmdline; s < cmdline + got; s++) + if (!*s) + *s = ' '; + /* Trim the trailing spaces (typically single '\0'->' '). */ + while (s > cmdline && isspace (s[-1])) + s--; + *s = 0; + return cmdline; +} + +static int dir_scan (const char *dirname, + int (*callback) (struct dirent *dirent, const char *pathname)) +{ + DIR *dir; + struct dirent *dirent; + int rc = 0; + + dir = opendir (dirname); + if (dir == NULL) + { + if (errno == EACCES || errno == ENOENT) + return rc; + fprintf (stderr, "%s: opendir (\"%s\"): %m\n", progname, dirname); + exit (EXIT_FAILURE); + } + while ((errno = 0, dirent = readdir (dir))) + { + char pathname[LINE_MAX]; + int pathname_len; + + pathname_len = snprintf (pathname, sizeof pathname, "%s/%s", + dirname, dirent->d_name); + if (pathname_len <= 0 || pathname_len >= (int) sizeof pathname) + { + fprintf (stderr, "entry file name too long: `%s' / `%s'\n", + dirname, dirent->d_name); + continue; + } + /* RHEL-4.5 on s390x never fills in D_TYPE. */ + if (dirent->d_type == DT_UNKNOWN) + { + struct stat statbuf; + int i; + + /* We are not interested in the /proc/PID/fd/ links targets. */ + i = lstat (pathname, &statbuf); + if (i == -1) + { + if (errno == EACCES || errno == ENOENT) + continue; + fprintf (stderr, "%s: stat (\"%s\"): %m\n", progname, pathname); + exit (EXIT_FAILURE); + } + if (S_ISDIR (statbuf.st_mode)) + dirent->d_type = DT_DIR; + if (S_ISLNK (statbuf.st_mode)) + dirent->d_type = DT_LNK; + /* No other D_TYPE types used in this code. */ + } + rc = (*callback) (dirent, pathname); + if (rc != 0) + { + errno = 0; + break; + } + } + if (errno != 0) + { + fprintf (stderr, "%s: readdir (\"%s\"): %m\n", progname, dirname); + exit (EXIT_FAILURE); + } + if (closedir (dir) != 0) + { + fprintf (stderr, "%s: closedir (\"%s\"): %m\n", progname, dirname); + exit (EXIT_FAILURE); + } + return rc; +} + +static int fd_fs_scan (pid_t pid, int (*func) (pid_t pid, const char *link)) +{ + char dirname[64]; + + if (snprintf (dirname, sizeof dirname, "/proc/%d/fd", (int) pid) < 0) + { + perror ("snprintf(3)"); + exit (EXIT_FAILURE); + } + + int callback (struct dirent *dirent, const char *pathname) + { + char buf[LINE_MAX]; + ssize_t buf_len; + + if ((dirent->d_type != DT_DIR && dirent->d_type != DT_LNK) + || (dirent->d_type == DT_DIR && strcmp (dirent->d_name, ".") != 0 + && strcmp (dirent->d_name, "..") != 0) + || (dirent->d_type == DT_LNK && strspn (dirent->d_name, "0123456789") + != strlen (dirent->d_name))) + { + fprintf (stderr, "Unexpected entry \"%s\" (d_type %u)" + " on readdir (\"%s\"): %m\n", + dirent->d_name, (unsigned) dirent->d_type, dirname); + return 0; + } + if (dirent->d_type == DT_DIR) + return 0; + buf_len = readlink (pathname, buf, sizeof buf - 1); + if (buf_len <= 0 || buf_len >= (ssize_t) sizeof buf - 1) + { + if (errno != ENOENT && errno != EACCES) + fprintf (stderr, "Error reading link \"%s\": %m\n", pathname); + return 0; + } + buf[buf_len] = 0; + return (*func) (pid, buf); + } + + return dir_scan (dirname, callback); +} + +static void pid_fs_scan (void (*func) (pid_t pid, void *data), void *data) +{ + int callback (struct dirent *dirent, const char *pathname) + { + if (dirent->d_type != DT_DIR + || strspn (dirent->d_name, "0123456789") != strlen (dirent->d_name)) + return 0; + (*func) (atoi (dirent->d_name), data); + return 0; + } + + dir_scan ("/proc", callback); +} + +static int rip_check_ptyname (pid_t pid, const char *link) +{ + assert (pid != getpid ()); + + return strcmp (link, childptyname) == 0; +} + +struct pid + { + struct pid *next; + pid_t pid; + }; +static struct pid *pid_list; + +static int pid_found (pid_t pid) +{ + struct pid *entry; + + for (entry = pid_list; entry != NULL; entry = entry->next) + if (entry->pid == pid) + return 1; + return 0; +} + +/* Single pass is not enough, a (multithreaded) process was seen to survive. + Repeated killing of the same process is not enough, zombies can be killed. + */ +static int cleanup_acted; + +static void pid_record (pid_t pid) +{ + struct pid *entry; + + if (pid_found (pid)) + return; + cleanup_acted = 1; + + entry = malloc (sizeof (*entry)); + if (entry == NULL) + { + fprintf (stderr, "%s: malloc: %m\n", progname); + exit (EXIT_FAILURE); + } + entry->pid = pid; + entry->next = pid_list; + pid_list = entry; +} + +static void pid_forall (void (*func) (pid_t pid)) +{ + struct pid *entry; + + for (entry = pid_list; entry != NULL; entry = entry->next) + (*func) (entry->pid); +} + +/* Returns 0 on failure. */ +static pid_t pid_get_parent (pid_t pid) +{ + char fname[64]; + FILE *f; + char line[LINE_MAX]; + pid_t retval = 0; + + if (snprintf (fname, sizeof fname, "/proc/%d/status", (int) pid) < 0) + { + perror ("snprintf(3)"); + exit (EXIT_FAILURE); + } + f = fopen (fname, "r"); + if (f == NULL) + { + return 0; + } + while (errno = 0, fgets (line, sizeof line, f) == line) + { + if (strncmp (line, "PPid:\t", sizeof "PPid:\t" - 1) != 0) + continue; + retval = atoi (line + sizeof "PPid:\t" - 1); + errno = 0; + break; + } + if (errno != 0) + { + fprintf (stderr, "%s: fgets (\"%s\"): %m\n", progname, fname); + exit (EXIT_FAILURE); + } + if (fclose (f) != 0) + { + fprintf (stderr, "%s: fclose (\"%s\"): %m\n", progname, fname); + exit (EXIT_FAILURE); + } + return retval; +} + +static void killtree (pid_t pid); + +static void killtree_pid_fs_scan (pid_t pid, void *data) +{ + pid_t parent_pid = *(pid_t *) data; + + /* Do not optimize it as we could miss some newly spawned processes. + Always traverse all the leaves. */ +#if 0 + /* Optimization. */ + if (pid_found (pid)) + return; +#endif + + if (pid_get_parent (pid) != parent_pid) + return; + + killtree (pid); +} + +static void killtree (pid_t pid) +{ + pid_record (pid); + pid_fs_scan (killtree_pid_fs_scan, &pid); +} + +static void rip_pid_fs_scan (pid_t pid, void *data) +{ + pid_t pgid; + + /* Shouldn't happen. */ + if (pid == getpid ()) + return; + + /* Check both PGID and the stale file descriptors. */ + pgid = getpgid (pid); + if (pgid == child + || fd_fs_scan (pid, rip_check_ptyname) != 0) + killtree (pid); +} + +static void killproc (pid_t pid) +{ + const char *cmdline; + + cmdline = read_cmdline (pid); + /* Avoid printing the message for already gone processes. */ + if (kill (pid, 0) != 0 && errno == ESRCH) + return; + if (cmdline == NULL) + cmdline = ""; + fprintf (stderr, "%s: Killed -9 orphan PID %d: %s\n", progname, (int) pid, cmdline); + if (kill (pid, SIGKILL) == 0) + cleanup_acted = 1; + else if (errno != ESRCH) + fprintf (stderr, "%s: kill (%d, SIGKILL): %m\n", progname, (int) pid); + /* RHEL-3 kernels cannot SIGKILL a `T (stopped)' process. */ + kill (pid, SIGCONT); + /* Do not waitpid(2) as it cannot be our direct descendant and it gets + cleaned up by init(8). */ +#if 0 + pid_t pid_got; + pid_got = waitpid (pid, NULL, 0); + if (pid != pid_got) + { + fprintf (stderr, "%s: waitpid (%d) != %d: %m\n", progname, + (int) pid, (int) pid_got); + return; + } +#endif +} + +static void rip (void) +{ + cleanup_acted = 0; + do + { + if (cleanup_acted) + usleep (1000000 / 10); + cleanup_acted = 0; + pid_fs_scan (rip_pid_fs_scan, NULL); + pid_forall (killproc); + } + while (cleanup_acted); +} + +int main (int argc, char **argv) +{ + int timeout = 0; + int rc; + + progname = *argv++; + argc--; + + if (argc < 1 || strcmp (*argv, "-h") == 0 + || strcmp (*argv, "--help") == 0) + { + puts ("Syntax: orphanripper [-t ] "); + exit (EXIT_FAILURE); + } + if ((*argv)[0] == '-' && (*argv)[1] == 't') + { + char *timeout_s = NULL; + + if ((*argv)[2] == 0) + timeout_s = *++argv; + else if (isdigit ((*argv)[2])) + timeout_s = (*argv) + 2; + if (timeout_s != NULL) + { + long l; + char *endptr; + + argv++; + l = strtol (timeout_s, &endptr, 0); + timeout = l; + if ((endptr != NULL && *endptr != 0) || timeout < 0 || timeout != l) + { + fprintf (stderr, "%s: Invalid timeout value: %s\n", progname, + timeout_s); + exit (EXIT_FAILURE); + } + } + } + + rc = spawn (argv, timeout); + rip (); + return rc; +} diff --git a/gdb-ppc-power7-test.patch b/gdb-ppc-power7-test.patch new file mode 100644 index 0000000..c8b22cf --- /dev/null +++ b/gdb-ppc-power7-test.patch @@ -0,0 +1,303 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-ppc-power7-test.patch + +;; Test power7 ppc disassembly. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.arch/powerpc-power7rh.exp b/gdb/testsuite/gdb.arch/powerpc-power7rh.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-power7rh.exp +@@ -0,0 +1,178 @@ ++# Copyright 2009 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++# Test PowerPC Power7 instructions disassembly. ++ ++if {![istarget "powerpc*-*-*"]} then { ++ verbose "Skipping PowerPC Power7 instructions disassembly." ++ return ++} ++ ++set testfile "powerpc-power7rh" ++set srcfile ${testfile}.s ++set objfile [standard_output_file ${testfile}.o] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } { ++ untested "PowerPC Power7 instructions disassembly" ++ return -1 ++} ++ ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${objfile} ++ ++ ++# Disassemble the function. ++ ++set test "disass func" ++gdb_test_multiple $test $test { ++ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" { ++ set func $expect_out(1,string) ++ pass $test ++ } ++} ++ ++proc instr_to_patt {offset instr} { ++ # 0x0000000000000018 : stxvd2x vs43,r4,r5 ++ return ".*\r\n\[ \t\]*[string map {0x 0x0*} $offset] <(func)?\\+?\[0-9\]*>:\[ \t\]*[string map [list { } "\[ \t\]+" . {\.}] $instr]\[ \t\]*\r\n.*" ++} ++ ++# KFAIL strings would not exist if -Many would print the same as -Mpower7. ++# That means the power7 form should be the preferred one. ++# http://sourceware.org/ml/gdb-patches/2009-03/threads.html#00020 ++ ++proc func_check {offset instr {kfail ""}} { ++ global func ++ ++ set test "Found $offset: $instr" ++ if [regexp -nocase -line [instr_to_patt $offset $instr] $func] { ++ pass $test ++ } elseif {$kfail != "" && [regexp -nocase -line [instr_to_patt $offset $kfail] $func]} { ++ kfail gdb/NNNN $test ++ } else { ++ fail $test ++ } ++} ++ ++func_check 0x0 "lxvd2x vs3,r4,r5" ++# [PATCH] Remove support for POWER7 VSX load/store with update instructions ++# http://sourceware.org/ml/binutils/2009-09/msg00680.html ++# http://sourceware.org/ml/binutils-cvs/2009-09/msg00331.html ++func_check 0x4 "lxvb16x vs3,r4,r5" ++func_check 0x8 "lxvd2x vs43,r4,r5" ++func_check 0xc "lxvb16x vs43,r4,r5" ++func_check 0x10 "stxvd2x vs3,r4,r5" ++func_check 0x14 "stxvb16x vs3,r4,r5" ++func_check 0x18 "stxvd2x vs43,r4,r5" ++func_check 0x1c "stxvb16x vs43,r4,r5" ++func_check 0x20 "xxmrghd vs3,vs4,vs5" ++func_check 0x24 "xxmrghd vs43,vs44,vs45" ++func_check 0x28 "xxmrgld vs3,vs4,vs5" ++func_check 0x2c "xxmrgld vs43,vs44,vs45" ++func_check 0x30 "xxmrghd vs3,vs4,vs5" ++func_check 0x34 "xxmrghd vs43,vs44,vs45" ++func_check 0x38 "xxmrgld vs3,vs4,vs5" ++func_check 0x3c "xxmrgld vs43,vs44,vs45" ++func_check 0x40 "xxpermdi vs3,vs4,vs5,1" ++func_check 0x44 "xxpermdi vs43,vs44,vs45,1" ++func_check 0x48 "xxpermdi vs3,vs4,vs5,2" ++func_check 0x4c "xxpermdi vs43,vs44,vs45,2" ++func_check 0x50 "xvmovdp vs3,vs4" ++func_check 0x54 "xvmovdp vs43,vs44" ++func_check 0x58 "xvmovdp vs3,vs4" ++func_check 0x5c "xvmovdp vs43,vs44" ++func_check 0x60 "xvcpsgndp vs3,vs4,vs5" ++func_check 0x64 "xvcpsgndp vs43,vs44,vs45" ++func_check 0x68 "wait" ++func_check 0x6c "wait" ++func_check 0x70 "waitrsv" ++func_check 0x74 "waitrsv" ++func_check 0x78 "waitimpl" ++func_check 0x7c "waitimpl" ++func_check 0x80 "doze" ++func_check 0x84 "nap" ++func_check 0x88 "sleep" ++func_check 0x8c "rvwinkle" ++func_check 0x90 "prtyw r3,r4" ++func_check 0x94 "prtyd r13,r14" ++func_check 0x98 "mfcfar r10" "mfspr r10,28" ++func_check 0x9c "mtcfar r11" "mtspr 28,r11" ++func_check 0xa0 "cmpb r3,r4,r5" ++func_check 0xa4 "lwzcix r10,r11,r12" ++func_check 0xa8 "dadd f16,f17,f18" ++func_check 0xac "daddq f20,f22,f24" ++func_check 0xb0 "dss 3" ++func_check 0xb4 "dssall" ++func_check 0xb8 "dst r5,r4,1" ++func_check 0xbc "dstt r8,r7,0" ++func_check 0xc0 "dstst r5,r6,3" ++func_check 0xc4 "dststt r4,r5,2" ++func_check 0xc8 "divwe r10,r11,r12" ++func_check 0xcc "divwe. r11,r12,r13" ++func_check 0xd0 "divweo r12,r13,r14" ++func_check 0xd4 "divweo. r13,r14,r15" ++func_check 0xd8 "divweu r10,r11,r12" ++func_check 0xdc "divweu. r11,r12,r13" ++func_check 0xe0 "divweuo r12,r13,r14" ++func_check 0xe4 "divweuo. r13,r14,r15" ++func_check 0xe8 "bpermd r7,r17,r27" ++func_check 0xec "popcntw r10,r20" ++func_check 0xf0 "popcntd r10,r20" ++func_check 0xf4 "ldbrx r20,r21,r22" ++func_check 0xf8 "stdbrx r20,r21,r22" ++func_check 0xfc "lfiwzx f10,0,r10" ++func_check 0x100 "lfiwzx f10,r9,r10" ++func_check 0x104 "fcfids f4,f5" ++func_check 0x108 "fcfids. f4,f5" ++func_check 0x10c "fcfidus f4,f5" ++func_check 0x110 "fcfidus. f4,f5" ++func_check 0x114 "fctiwu f4,f5" ++func_check 0x118 "fctiwu. f4,f5" ++func_check 0x11c "fctiwuz f4,f5" ++func_check 0x120 "fctiwuz. f4,f5" ++func_check 0x124 "fctidu f4,f5" ++func_check 0x128 "fctidu. f4,f5" ++func_check 0x12c "fctiduz f4,f5" ++func_check 0x130 "fctiduz. f4,f5" ++func_check 0x134 "fcfidu f4,f5" ++func_check 0x138 "fcfidu. f4,f5" ++func_check 0x13c "ftdiv cr0,f10,f11" ++func_check 0x140 "ftdiv cr7,f10,f11" ++func_check 0x144 "ftsqrt cr0,f10" ++func_check 0x148 "ftsqrt cr7,f10" ++func_check 0x14c "dcbtt r8,r9" "dcbt 16,r8,r9" ++func_check 0x150 "dcbtstt r8,r9" "dcbtst 16,r8,r9" ++func_check 0x154 "dcffix f10,f12" ++func_check 0x158 "dcffix. f20,f22" ++func_check 0x15c "lbarx r10,r11,r12" ++func_check 0x160 "lbarx r10,r11,r12" ++func_check 0x164 "lbarx r10,r11,r12,1" ++func_check 0x168 "lharx r20,r21,r22" ++func_check 0x16c "lharx r20,r21,r22" ++func_check 0x170 "lharx r20,r21,r22,1" ++func_check 0x174 "stbcx. r10,r11,r12" ++func_check 0x178 "sthcx. r10,r11,r12" ++func_check 0x17c "fre f14,f15" ++func_check 0x180 "fre. f14,f15" ++func_check 0x184 "fres f14,f15" ++func_check 0x188 "fres. f14,f15" ++func_check 0x18c "frsqrte f14,f15" ++func_check 0x190 "frsqrte. f14,f15" ++func_check 0x194 "frsqrtes f14,f15" ++func_check 0x198 "frsqrtes. f14,f15" ++func_check 0x19c "isel r2,r3,r4,28" +diff --git a/gdb/testsuite/gdb.arch/powerpc-power7rh.s b/gdb/testsuite/gdb.arch/powerpc-power7rh.s +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/powerpc-power7rh.s +@@ -0,0 +1,107 @@ ++ .text ++ .globl func ++func: ++ .long 0x7c642e98 /* 0: lxvd2x vs3,r4,r5 */ ++ .long 0x7c642ed8 /* 4: lxvd2ux vs3,r4,r5 */ ++ .long 0x7d642e99 /* 8: lxvd2x vs43,r4,r5 */ ++ .long 0x7d642ed9 /* c: lxvd2ux vs43,r4,r5 */ ++ .long 0x7c642f98 /* 10: stxvd2x vs3,r4,r5 */ ++ .long 0x7c642fd8 /* 14: stxvd2ux vs3,r4,r5 */ ++ .long 0x7d642f99 /* 18: stxvd2x vs43,r4,r5 */ ++ .long 0x7d642fd9 /* 1c: stxvd2ux vs43,r4,r5 */ ++ .long 0xf0642850 /* 20: xxmrghd vs3,vs4,vs5 */ ++ .long 0xf16c6857 /* 24: xxmrghd vs43,vs44,vs45 */ ++ .long 0xf0642b50 /* 28: xxmrgld vs3,vs4,vs5 */ ++ .long 0xf16c6b57 /* 2c: xxmrgld vs43,vs44,vs45 */ ++ .long 0xf0642850 /* 30: xxmrghd vs3,vs4,vs5 */ ++ .long 0xf16c6857 /* 34: xxmrghd vs43,vs44,vs45 */ ++ .long 0xf0642b50 /* 38: xxmrgld vs3,vs4,vs5 */ ++ .long 0xf16c6b57 /* 3c: xxmrgld vs43,vs44,vs45 */ ++ .long 0xf0642950 /* 40: xxpermdi vs3,vs4,vs5,1 */ ++ .long 0xf16c6957 /* 44: xxpermdi vs43,vs44,vs45,1 */ ++ .long 0xf0642a50 /* 48: xxpermdi vs3,vs4,vs5,2 */ ++ .long 0xf16c6a57 /* 4c: xxpermdi vs43,vs44,vs45,2 */ ++ .long 0xf0642780 /* 50: xvmovdp vs3,vs4 */ ++ .long 0xf16c6787 /* 54: xvmovdp vs43,vs44 */ ++ .long 0xf0642780 /* 58: xvmovdp vs3,vs4 */ ++ .long 0xf16c6787 /* 5c: xvmovdp vs43,vs44 */ ++ .long 0xf0642f80 /* 60: xvcpsgndp vs3,vs4,vs5 */ ++ .long 0xf16c6f87 /* 64: xvcpsgndp vs43,vs44,vs45 */ ++ .long 0x7c00007c /* 68: wait */ ++ .long 0x7c00007c /* 6c: wait */ ++ .long 0x7c20007c /* 70: waitrsv */ ++ .long 0x7c20007c /* 74: waitrsv */ ++ .long 0x7c40007c /* 78: waitimpl */ ++ .long 0x7c40007c /* 7c: waitimpl */ ++ .long 0x4c000324 /* 80: doze */ ++ .long 0x4c000364 /* 84: nap */ ++ .long 0x4c0003a4 /* 88: sleep */ ++ .long 0x4c0003e4 /* 8c: rvwinkle */ ++ .long 0x7c830134 /* 90: prtyw r3,r4 */ ++ .long 0x7dcd0174 /* 94: prtyd r13,r14 */ ++ .long 0x7d5c02a6 /* 98: mfcfar r10 */ ++ .long 0x7d7c03a6 /* 9c: mtcfar r11 */ ++ .long 0x7c832bf8 /* a0: cmpb r3,r4,r5 */ ++ .long 0x7d4b662a /* a4: lwzcix r10,r11,r12 */ ++ .long 0xee119004 /* a8: dadd f16,f17,f18 */ ++ .long 0xfe96c004 /* ac: daddq f20,f22,f24 */ ++ .long 0x7c60066c /* b0: dss 3 */ ++ .long 0x7e00066c /* b4: dssall */ ++ .long 0x7c2522ac /* b8: dst r5,r4,1 */ ++ .long 0x7e083aac /* bc: dstt r8,r7,0 */ ++ .long 0x7c6532ec /* c0: dstst r5,r6,3 */ ++ .long 0x7e442aec /* c4: dststt r4,r5,2 */ ++ .long 0x7d4b6356 /* c8: divwe r10,r11,r12 */ ++ .long 0x7d6c6b57 /* cc: divwe. r11,r12,r13 */ ++ .long 0x7d8d7756 /* d0: divweo r12,r13,r14 */ ++ .long 0x7dae7f57 /* d4: divweo. r13,r14,r15 */ ++ .long 0x7d4b6316 /* d8: divweu r10,r11,r12 */ ++ .long 0x7d6c6b17 /* dc: divweu. r11,r12,r13 */ ++ .long 0x7d8d7716 /* e0: divweuo r12,r13,r14 */ ++ .long 0x7dae7f17 /* e4: divweuo. r13,r14,r15 */ ++ .long 0x7e27d9f8 /* e8: bpermd r7,r17,r27 */ ++ .long 0x7e8a02f4 /* ec: popcntw r10,r20 */ ++ .long 0x7e8a03f4 /* f0: popcntd r10,r20 */ ++ .long 0x7e95b428 /* f4: ldbrx r20,r21,r22 */ ++ .long 0x7e95b528 /* f8: stdbrx r20,r21,r22 */ ++ .long 0x7d4056ee /* fc: lfiwzx f10,0,r10 */ ++ .long 0x7d4956ee /* 100: lfiwzx f10,r9,r10 */ ++ .long 0xec802e9c /* 104: fcfids f4,f5 */ ++ .long 0xec802e9d /* 108: fcfids. f4,f5 */ ++ .long 0xec802f9c /* 10c: fcfidus f4,f5 */ ++ .long 0xec802f9d /* 110: fcfidus. f4,f5 */ ++ .long 0xfc80291c /* 114: fctiwu f4,f5 */ ++ .long 0xfc80291d /* 118: fctiwu. f4,f5 */ ++ .long 0xfc80291e /* 11c: fctiwuz f4,f5 */ ++ .long 0xfc80291f /* 120: fctiwuz. f4,f5 */ ++ .long 0xfc802f5c /* 124: fctidu f4,f5 */ ++ .long 0xfc802f5d /* 128: fctidu. f4,f5 */ ++ .long 0xfc802f5e /* 12c: fctiduz f4,f5 */ ++ .long 0xfc802f5f /* 130: fctiduz. f4,f5 */ ++ .long 0xfc802f9c /* 134: fcfidu f4,f5 */ ++ .long 0xfc802f9d /* 138: fcfidu. f4,f5 */ ++ .long 0xfc0a5900 /* 13c: ftdiv cr0,f10,f11 */ ++ .long 0xff8a5900 /* 140: ftdiv cr7,f10,f11 */ ++ .long 0xfc005140 /* 144: ftsqrt cr0,f10 */ ++ .long 0xff805140 /* 148: ftsqrt cr7,f10 */ ++ .long 0x7e084a2c /* 14c: dcbtt r8,r9 */ ++ .long 0x7e0849ec /* 150: dcbtstt r8,r9 */ ++ .long 0xed406644 /* 154: dcffix f10,f12 */ ++ .long 0xee80b645 /* 158: dcffix. f20,f22 */ ++ .long 0x7d4b6068 /* 15c: lbarx r10,r11,r12 */ ++ .long 0x7d4b6068 /* 160: lbarx r10,r11,r12 */ ++ .long 0x7d4b6069 /* 164: lbarx r10,r11,r12,1 */ ++ .long 0x7e95b0e8 /* 168: lharx r20,r21,r22 */ ++ .long 0x7e95b0e8 /* 16c: lharx r20,r21,r22 */ ++ .long 0x7e95b0e9 /* 170: lharx r20,r21,r22,1 */ ++ .long 0x7d4b656d /* 174: stbcx. r10,r11,r12 */ ++ .long 0x7d4b65ad /* 178: sthcx. r10,r11,r12 */ ++ .long 0xfdc07830 /* 17c: fre f14,f15 */ ++ .long 0xfdc07831 /* 180: fre. f14,f15 */ ++ .long 0xedc07830 /* 184: fres f14,f15 */ ++ .long 0xedc07831 /* 188: fres. f14,f15 */ ++ .long 0xfdc07834 /* 18c: frsqrte f14,f15 */ ++ .long 0xfdc07835 /* 190: frsqrte. f14,f15 */ ++ .long 0xedc07834 /* 194: frsqrtes f14,f15 */ ++ .long 0xedc07835 /* 198: frsqrtes. f14,f15 */ ++ .long 0x7c43271e /* 19c: isel r2,r3,r4,28 */ diff --git a/gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch b/gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch new file mode 100644 index 0000000..20e5f75 --- /dev/null +++ b/gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch @@ -0,0 +1,83 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch + +;; Testcase for `Setting solib-absolute-prefix breaks vDSO' (BZ 818343). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/set-solib-absolute-prefix.c b/gdb/testsuite/gdb.base/set-solib-absolute-prefix.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/set-solib-absolute-prefix.c +@@ -0,0 +1,26 @@ ++/* Copyright (C) 2012 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 ++#include ++ ++int ++main (int argc, char *argv[]) ++{ ++ printf ("Hello, World.\n"); ++ abort (); ++} +diff --git a/gdb/testsuite/gdb.base/set-solib-absolute-prefix.exp b/gdb/testsuite/gdb.base/set-solib-absolute-prefix.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/set-solib-absolute-prefix.exp +@@ -0,0 +1,39 @@ ++# Copyright 2012 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++set testfile "set-solib-absolute-prefix" ++set srcfile ${testfile}.c ++ ++# It is necessary to verify if the binary is 32-bit, so that the system ++# call `__kernel_vsyscall' originates from vDSO. ++ ++if { ![is_ilp32_target] } { ++ return -1 ++} ++ ++if { [prepare_for_testing $testfile.exp $testfile $srcfile] } { ++ return -1 ++} ++ ++if { ![runto_main] } { ++ return -1 ++} ++ ++gdb_test "continue" "Program received signal SIGABRT, Aborted.*" \ ++ "continue until abort" ++gdb_test "set solib-absolute-prefix /BOGUS_DIRECT" \ ++ ".*warning: Unable to find dynamic linker breakpoint function.*" \ ++ "set solib-absolute-prefix" ++gdb_test "bt" "__kernel_vsyscall.*" "backtrace with __kernel_vsyscall" diff --git a/gdb-rhbz1007614-memleak-infpy_read_memory-test.patch b/gdb-rhbz1007614-memleak-infpy_read_memory-test.patch new file mode 100644 index 0000000..4d05ba5 --- /dev/null +++ b/gdb-rhbz1007614-memleak-infpy_read_memory-test.patch @@ -0,0 +1,170 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz1007614-memleak-infpy_read_memory-test.patch + +;; Fix 'memory leak in infpy_read_memory()' (RH BZ 1007614) +;;=fedoratest + +Original message by Tom Tromey: + + + Message-ID: <871uoc1va3.fsf@fleche.redhat.com> + +Comment from Sergio Durigan Junior: + + In order to correctly test this patch, I wrote a testcase based on Jan + Kratochvil's . The + testcase, which can be seen below, tests GDB in order to see if the + amount of memory being leaked is minimal, as requested in the bugzilla. + It is hard to define what "minimum" is, so I ran the testcase on all + supported RHEL architectures and came up with an average. + +commit cc0265cdda9dc7e8665e8bfcf5b4477489daf27c +Author: Tom Tromey +Date: Wed Mar 28 17:38:08 2012 +0000 + + * python/py-inferior.c (infpy_read_memory): Remove cleanups and + explicitly free 'buffer' on exit paths. Decref 'membuf_object' + before returning. + +diff --git a/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.c b/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.c +@@ -0,0 +1,27 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2014 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++static struct x ++ { ++ char unsigned u[4096]; ++ } x, *px = &x; ++ ++int ++main (int argc, char *argv[]) ++{ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.exp b/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.exp +@@ -0,0 +1,68 @@ ++# Copyright 2014 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++set testfile py-gdb-rhbz1007614-memleak-infpy_read_memory ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { ++ return -1 ++} ++ ++if { [skip_python_tests] } { continue } ++ ++set pid_of_gdb [exp_pid -i [board_info host fileid]] ++ ++proc memory_v_pages_get {} { ++ global pid_of_gdb ++ set fd [open "/proc/$pid_of_gdb/statm"] ++ gets $fd line ++ close $fd ++ # number of pages of virtual memory ++ scan $line "%d" drs ++ return $drs ++} ++ ++if { ![runto_main] } { ++ untested $testfile.exp ++ return -1 ++} ++ ++set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py] ++ ++gdb_test "source ${remote_python_file}" "" ++ ++gdb_test "hello-world" "" ++ ++set kbytes_before [memory_v_pages_get] ++verbose -log "kbytes_before = $kbytes_before" ++ ++gdb_test "hello-world" "" ++ ++set kbytes_after [memory_v_pages_get] ++verbose -log "kbytes_after = $kbytes_after" ++ ++set kbytes_diff [expr $kbytes_after - $kbytes_before] ++verbose -log "kbytes_diff = $kbytes_diff" ++ ++# The value "1000" was calculated by running a few GDB sessions with this ++# testcase, and seeing how much (in average) the memory consumption ++# increased after the "hello-world" command issued above. The average ++# was around 500 bytes, so I chose 1000 as a high estimate. ++if { $kbytes_diff > 1000 } { ++ fail "there is a memory leak on GDB (RHBZ 1007614)" ++} else { ++ pass "there is not a memory leak on GDB (RHBZ 1007614)" ++} +diff --git a/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.py b/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.py +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.python/py-gdb-rhbz1007614-memleak-infpy_read_memory.py +@@ -0,0 +1,30 @@ ++# Copyright (C) 2014 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++class HelloWorld (gdb.Command): ++ """Greet the whole world.""" ++ ++ def __init__ (self): ++ super (HelloWorld, self).__init__ ("hello-world", ++ gdb.COMMAND_OBSCURE) ++ ++ def invoke (self, arg, from_tty): ++ px = gdb.parse_and_eval("px") ++ core = gdb.inferiors()[0] ++ for i in range(256 * 1024): ++ chunk = core.read_memory(px, 4096) ++ print "Hello, World!" ++ ++HelloWorld () diff --git a/gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch b/gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch new file mode 100644 index 0000000..d92bfc3 --- /dev/null +++ b/gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch @@ -0,0 +1,235 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch + +;; Fix '[ppc64] and [s390x] wrong prologue skip on -O2 -g code' (Jan +;; Kratochvil, RH BZ 1084404). +;;=fedoratest + +These testcases have been created by compiling glibc-2.17-78 on +RHEL-7.1 s390x/ppc64 boxes, and then taking the "select.o" file +present at $builddir/misc/select.o. + +diff --git a/gdb/testsuite/gdb.arch/ppc64-prologue-skip.exp b/gdb/testsuite/gdb.arch/ppc64-prologue-skip.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/ppc64-prologue-skip.exp +@@ -0,0 +1,34 @@ ++# Copyright 2015 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if { ![istarget powerpc64-*linux-*] || ![is_lp64_target] } { ++ verbose "Skipping ppc64-prologue-skip.exp" ++ return ++} ++ ++set testfile "ppc64-prologue-skip" ++set uufile "${srcdir}/${subdir}/${testfile}.o.uu" ++set ofile "${srcdir}/${subdir}/${testfile}.o" ++ ++if { [catch "system \"uudecode -o ${ofile} ${uufile}\"" ] != 0 } { ++ untested "failed uudecode" ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_load $ofile ++ ++gdb_test "break ___newselect_nocancel" "Breakpoint $decimal at 0xc: file ../sysdeps/unix/syscall-template.S, line 81." "breakpoint on ___newselect_nocancel" +diff --git a/gdb/testsuite/gdb.arch/ppc64-prologue-skip.o.uu b/gdb/testsuite/gdb.arch/ppc64-prologue-skip.o.uu +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/ppc64-prologue-skip.o.uu +@@ -0,0 +1,70 @@ ++begin 644 ppc64-skip-prologue.o.uu ++M?T5,1@("`0`````````````!`!4````!```````````````````````````` ++M``-(``````!```````!``!0`$8%-B-`L"@``0,(`-#@``(Y$```"3.,`('P( ++M`J;X`0`0^"'_D4@```%@````Z`$`@#@A`'!\"`.F3H``(/@A_X%]*`*F^2$` ++MD/CA`-#XP0#(^*$`P/B!`+CX80"P2````6````#X80!PZ.$`T.C!`,CHH0#` ++MZ($`N.AA`+`X``".1````GP``";X80!X^`$`B.AA`'!(```!8````.DA`)#H ++M`0"(Z&$`>'TH`Z9\#_$@."$`@$SC`"!+__]@```````,($``````````O``( ++M7U]S96QE8W0```````````````````````````!6``(````Y!`'[#@T``0$! ++M`0````$```$N+B]S>7-D97!S+W5N:7@``'-Y"]S>7-C86QL+71E;7!L871E ++M+E,`+W)O;W0O9VQI8F,O9VQI8F,M,BXQ-RTW."YE;#$$!&PP!```` ++M`#`````8`````````+P`20YP$4%^1`X`009!0@Z``4(107Y2$49_20X`!D$& ++M1@``````+G-Y;71A8@`N`````````!(````$@````$`````````"``````````8```` ++M)@````$``````````P```````````````````1@````````````````````` ++M``````````$``````````````"P````(``````````,````````````````` ++M``$8```````````````````````````````!```````````````V`````0`` ++M```````#```````````````````!&``````````0```````````````````` ++M"```````````````,0````0`````````````````````````````"L`````` ++M````,````!(````%``````````@`````````&````#L````!```````````` ++M``````````````````$H```````````````````````````````!```````` ++M``````!0`````0`````````````````````````````!*`````````!:```` ++M`````````````````0``````````````2P````0````````````````````` ++M````````"O``````````&````!(````(``````````@`````````&````&$` ++M```!``````````````````````````````&"`````````),````````````` ++M```````!``````````````!<````!``````````````````````````````+ ++M"`````````!@````$@````H`````````"``````````8````;0````$````` ++M`````````````````````````A4`````````%`````````````````````$` ++M`````````````(`````!``````````````````````````````(P```````` ++M`#`````````````````````0``````````````![````!``````````````` ++M```````````````+:``````````P````$@````T`````````"``````````8 ++M````E`````$``````````@```````````````````F``````````2``````` ++M``````````````@``````````````(\````$```````````````````````` ++M``````N8`````````!@````2````#P`````````(`````````!@````1```` ++M`P`````````````````````````````"J`````````">```````````````` ++M`````0```````````````0````(`````````````````````````````"$@` ++M```````!L````!,````+``````````@`````````&`````D````#```````` ++M``````````````````````GX`````````'H````````````````````!```` ++M`````````````````````````````````````````````P```0`````````` ++M`````````````````P```P```````````````````````````P``!``````` ++M`````````````````````P``!0```````````````````````````P``"@`` ++M`````````````````````````P``#````````````````````````````P`` ++M"````````````````````````````P``#0`````````````````````````` ++M`P``#P```````````````````````````P``!P`````````````````````` ++M```!$@``!0```````````````````-@````*$@```0`````````,```````` ++M`#`````@$``````````````````````````````P$``````````````````` ++M``````````!*$`````````````````````````````!E(@``!0`````````` ++M`````````-@```!S(@``!0```````````````````-@`7U]S96QE8W0`7U]? ++M;F5W6YC8V%N8V5L`%]?;&EB8U]D:7-A8FQE7V%S>6YC8V%N8V5L`%]? ++M;&EB8U]S96QE8W0`. ++ ++if { ![istarget s390x-*linux-*] || ![is_lp64_target] } { ++ verbose "Skipping s390x-prologue-skip.exp" ++ return ++} ++ ++set testfile "s390x-prologue-skip" ++set uufile "${srcdir}/${subdir}/${testfile}.o.uu" ++set ofile "${srcdir}/${subdir}/${testfile}.o" ++ ++if { [catch "system \"uudecode -o ${ofile} ${uufile}\"" ] != 0 } { ++ untested "failed uudecode" ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_load $ofile ++ ++gdb_test "break select" "Breakpoint $decimal at 0x48: file ../sysdeps/unix/syscall-template.S, line 81." "breakpoint on select" +diff --git a/gdb/testsuite/gdb.arch/s390x-prologue-skip.o.uu b/gdb/testsuite/gdb.arch/s390x-prologue-skip.o.uu +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/s390x-prologue-skip.o.uu +@@ -0,0 +1,64 @@ ++begin 644 s390x-prologue-skip.o.uu ++M?T5,1@("`0`````````````!`!8````!```````````````````````````` ++M``+```````!```````!``!(`#^LE\!``).O?\&@`)+D$`.^G^_]@X^#P```D ++MP.4`````N00``NLE\+``!`J.N00`TKD$`"#`Y0````"Y!``MZ]_Q"``$I_0` ++M"L`0`````+\/$`"G=/_7"HZG2?`!N2$`),"T``````?^````5@`"````.0$! ++M^PX-``$!`0$````!```!+BXO7-C86QL+71E;7!L ++M871E+E,``0`````)`@```````````]```0)F$P("``$!````CP`"``````@! ++M```````````````````````````N+B]S>7-D97!S+W5N:7@OE(``7@. ++M`1L,#Z`!````````&````!P`````````1`!,CP6.!HT'2`[``@```!`````X ++M`````````"```````"YS>6UT86(`+G-T``````````&````!`````&``````````@````````` ++M&````%<````!``````````````````````````````$"`````````),````` ++M```````````````!``````````````!2````!``````````````````````` ++M```````)^`````````!@````$`````@`````````"``````````8````8P`` ++M``$``````````````````````````````94`````````%``````````````` ++M``````$``````````````'8````!``````````````````````````````&P ++M`````````#`````````````````````0``````````````!Q````!``````` ++M```````````````````````*6``````````P````$`````L`````````"``` ++M```````8````B@````$``````````@```````````````````>`````````` ++M2`````````````````````@``````````````(4````$```````````````` ++M``````````````J(`````````#`````0````#0`````````(`````````!@` ++M```1`````P`````````````````````````````"*`````````"4```````` ++M`````````````0```````````````0````(````````````````````````` ++M````!T`````````!L````!$````*``````````@`````````&`````D````# ++M``````````````````````````````CP`````````(X````````````````` ++M```!`````````````````````````````````````````````````P```0`` ++M`````````````````````````P```P```````````````````````````P`` ++M!````````````````````````````P``"``````````````````````````` ++M`P``"@```````````````````````````P``!@`````````````````````` ++M`````P``"P```````````````````````````P``#0`````````````````` ++M`````````P``!0`````````````````````````!$``````````````````` ++M```````````;$``````````````````````````````V$@```0````````!( ++M`````````"`````_$`````````````````````````````!7$@```0`````` ++M``!6`````````!````!I$`````````````````````````````!Y(@```0`` ++M``````!(`````````"````"'(@```0````````!(`````````"``7U]L:6)C ++M7V5N86)L95]A +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz1149205-catch-syscall-after-fork-test.patch + +;; Fix '`catch syscall' doesn't work for parent after `fork' is called' +;; (Philippe Waroquiers, RH BZ 1149205). +;;=fedoratest + +URL: +Message-ID: <1368136582.30058.7.camel@soleil> + + From: Philippe Waroquiers + To: gdb-patches at sourceware dot org + Subject: RFA: fix gdb_assert caused by 'catch signal ...' and fork + Date: Thu, 09 May 2013 23:56:22 +0200 + + The attached patch fixes a gdb_assert caused by the combination of catch + signal and fork: + break-catch-sig.c:152: internal-error: signal_catchpoint_remove_location: Assertion `signal_catch_counts[iter] > 0' failed. + + The problem is that the signal_catch_counts is decremented by detach_breakpoints. + The fix consists in not detaching breakpoint locations of type bp_loc_other. + The patch introduces a new test. + +Comments by Sergio Durigan Junior: + + I addded a specific testcase for this patch, which tests exactly the + issue that the customer is facing. This patch does not solve the + whole problem of catching a syscall and forking (for more details, + see , + specifically comment #3), but it solves the issue reported by the + customer. + + I also removed the original testcase of this patch, because it + relied on "catch signal", which is a command that is not implemented + in this version of GDB. + +commit bd9673a4ded96ea5c108601501c8e59003ea1be6 +Author: Philippe Waroquiers +Date: Tue May 21 18:47:05 2013 +0000 + + Fix internal error caused by interaction between catch signal and fork + +diff --git a/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.c b/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.c +@@ -0,0 +1,11 @@ ++#include ++#include ++ ++int ++main (int argc, char **argv) ++{ ++ if (fork () == 0) ++ sleep (1); ++ chdir ("."); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.exp b/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gdb-rhbz1149205-catch-syscall-fork.exp +@@ -0,0 +1,58 @@ ++# Copyright 2015 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if { [is_remote target] || ![isnative] } then { ++ continue ++} ++ ++set testfile "gdb-rhbz1149205-catch-syscall-fork" ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++# Until "catch syscall" is implemented on other targets... ++if {![istarget "hppa*-hp-hpux*"] && ![istarget "*-linux*"]} then { ++ continue ++} ++ ++# This shall be updated whenever 'catch syscall' is implemented ++# on some architecture. ++#if { ![istarget "i\[34567\]86-*-linux*"] ++if { ![istarget "x86_64-*-linux*"] && ![istarget "i\[34567\]86-*-linux*"] ++ && ![istarget "powerpc-*-linux*"] && ![istarget "powerpc64-*-linux*"] ++ && ![istarget "sparc-*-linux*"] && ![istarget "sparc64-*-linux*"] } { ++ continue ++} ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ untested ${testfile}.exp ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load $binfile ++ ++if { ![runto_main] } { ++ return -1 ++} ++ ++gdb_test "catch syscall chdir" \ ++ "Catchpoint $decimal \\\(syscall (.)?chdir(.)? \\\[$decimal\\\]\\\)" \ ++ "catch syscall chdir" ++ ++gdb_test "continue" \ ++ "Continuing\.\r\n.*\r\nCatchpoint $decimal \\\(call to syscall .?chdir.?.*" \ ++ "continue from catch syscall after fork" diff --git a/gdb-rhbz1156192-recursive-dlopen-test.patch b/gdb-rhbz1156192-recursive-dlopen-test.patch new file mode 100644 index 0000000..96b93ae --- /dev/null +++ b/gdb-rhbz1156192-recursive-dlopen-test.patch @@ -0,0 +1,371 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz1156192-recursive-dlopen-test.patch + +;; Testcase for '[SAP] Recursive dlopen causes SAP HANA installer to +;; crash.' (RH BZ 1156192). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libbar.c b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libbar.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libbar.c +@@ -0,0 +1,30 @@ ++/* Testcase for recursive dlopen calls. ++ ++ Copyright (C) 2014 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 . */ ++ ++/* This test was copied from glibc's testcase called ++ and related files. */ ++ ++#include ++#include ++ ++void ++bar (void) ++{ ++ printf ("Called bar.\n"); ++} +diff --git a/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libfoo.c b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libfoo.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen-libfoo.c +@@ -0,0 +1,30 @@ ++/* Testcase for recursive dlopen calls. ++ ++ Copyright (C) 2014 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 . */ ++ ++/* This test was copied from glibc's testcase called ++ and related files. */ ++ ++#include ++#include ++ ++void ++foo (void) ++{ ++ printf ("Called foo.\n"); ++} +diff --git a/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.c b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.c +@@ -0,0 +1,125 @@ ++/* Testcase for recursive dlopen calls. ++ ++ Copyright (C) 2014 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 . */ ++ ++/* This test was copied from glibc's testcase called ++ and related files. */ ++ ++#include ++#include ++#include ++#include ++ ++#define DSO "gdb-rhbz1156192-recursive-dlopen-libfoo.so" ++#define FUNC "foo" ++ ++#define DSO1 "gdb-rhbz1156192-recursive-dlopen-libbar.so" ++#define FUNC1 "bar" ++ ++/* Prototype for my hook. */ ++void *custom_malloc_hook (size_t, const void *); ++ ++/* Pointer to old malloc hooks. */ ++void *(*old_malloc_hook) (size_t, const void *); ++ ++/* Call function func_name in DSO dso_name via dlopen. */ ++void ++call_func (const char *dso_name, const char *func_name) ++{ ++ int ret; ++ void *dso; ++ void (*func) (void); ++ char *err; ++ ++ /* Open the DSO. */ ++ dso = dlopen (dso_name, RTLD_NOW|RTLD_GLOBAL); ++ if (dso == NULL) ++ { ++ err = dlerror (); ++ fprintf (stderr, "%s\n", err); ++ exit (1); ++ } ++ /* Clear any errors. */ ++ dlerror (); ++ ++ /* Lookup func. */ ++ *(void **) (&func) = dlsym (dso, func_name); ++ if (func == NULL) ++ { ++ err = dlerror (); ++ if (err != NULL) ++ { ++ fprintf (stderr, "%s\n", err); ++ exit (1); ++ } ++ } ++ /* Call func twice. */ ++ (*func) (); ++ ++ /* Close the library and look for errors too. */ ++ ret = dlclose (dso); ++ if (ret != 0) ++ { ++ err = dlerror (); ++ fprintf (stderr, "%s\n", err); ++ exit (1); ++ } ++ ++} ++ ++/* Empty hook that does nothing. */ ++void * ++custom_malloc_hook (size_t size, const void *caller) ++{ ++ void *result; ++ /* Restore old hooks. */ ++ __malloc_hook = old_malloc_hook; ++ /* First call a function in another library via dlopen. */ ++ call_func (DSO1, FUNC1); ++ /* Called recursively. */ ++ result = malloc (size); ++ /* Restore new hooks. */ ++ old_malloc_hook = __malloc_hook; ++ __malloc_hook = custom_malloc_hook; ++ return result; ++} ++ ++int ++main (void) ++{ ++ ++ /* Save old hook. */ ++ old_malloc_hook = __malloc_hook; ++ /* Install new hook. */ ++ __malloc_hook = custom_malloc_hook; ++ ++ /* Attempt to dlopen a shared library. This dlopen will ++ trigger an access to the ld.so.cache, and that in turn ++ will require a malloc to duplicate data in the cache. ++ The malloc will call our malloc hook which calls dlopen ++ recursively, and upon return of this dlopen the non-ref ++ counted ld.so.cache mapping will be unmapped. We will ++ return to the original dlopen and crash trying to access ++ dlopened data. */ ++ call_func (DSO, FUNC); ++ ++ /* Restore old hook. */ ++ __malloc_hook = old_malloc_hook; ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.exp b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/gdb-rhbz1156192-recursive-dlopen.exp +@@ -0,0 +1,157 @@ ++# Copyright 2014 Free Software Foundation, Inc. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if {[skip_shlib_tests]} { ++ untested "skipping shlib tests" ++ return 0 ++} elseif {[use_gdb_stub]} { ++ untested "skipping tests because of stub" ++ return 0 ++} ++ ++# Library foo ++set libname1 "gdb-rhbz1156192-recursive-dlopen-libfoo" ++set srcfile_lib1 ${srcdir}/${subdir}/${libname1}.c ++set binfile_lib1 [standard_output_file ${libname1}.so] ++# Library bar ++set libname2 "gdb-rhbz1156192-recursive-dlopen-libbar" ++set srcfile_lib2 ${srcdir}/${subdir}/${libname2}.c ++set binfile_lib2 [standard_output_file ${libname2}.so] ++ ++set testfile "gdb-rhbz1156192-recursive-dlopen" ++set srcfile ${testfile}.c ++set executable ${testfile} ++set binfile [standard_output_file ${executable}] ++ ++if { [gdb_compile_shlib ${srcfile_lib1} ${binfile_lib1} \ ++ { debug "additional_flags=-fPIC" }] != "" } { ++ untested "Could not compile ${binfile_lib1}" ++ return -1 ++} ++ ++if { [gdb_compile_shlib ${srcfile_lib2} ${binfile_lib2} \ ++ { debug "additional_flags=-fPIC" }] != "" } { ++ untested "Could not compile ${binfile_lib2}" ++ return -1 ++} ++ ++if { [prepare_for_testing ${testfile}.exp ${executable} ${srcfile} \ ++ [ list debug shlib_load "additional_flags=-Wno-deprecated-declarations" ]] } { ++ untested "Could not compile ${executable}" ++ return -1 ++} ++ ++set supported 0 ++gdb_test_multiple "run" "initial trial run" { ++ -re -wrap "exited normally.*" { ++ set supported 1 ++ pass $gdb_test_name ++ } ++ -re -wrap "exited with code.*" { ++ untested "failed at $gdb_test_name" ++ } ++} ++ ++if { $supported == 0 } { ++ return -1 ++} ++ ++proc do_test { has_libfoo has_libbar } { ++ global hex binfile_lib2 binfile_lib1 gdb_prompt ++ set libbar_match "[string_to_regexp $binfile_lib2]" ++ set libfoo_match "[string_to_regexp $binfile_lib1]" ++ ++ gdb_test_multiple "info shared" "info shared" { ++ -re ".*$libfoo_match\r\n.*$libbar_match\(\r\n.*Shared library is missing\)?.*\r\n${gdb_prompt} $" { ++ if { $has_libfoo && $has_libbar } { ++ pass "matched libfoo and libbar" ++ } else { ++ fail "matched libfoo and libbar (has_libfoo = $has_libfoo, has_libbar = $has_libbar)" ++ } ++ } ++ -re ".*$libfoo_match\(\r\n.*Shared library is missing\)?.*\r\n${gdb_prompt} $" { ++ if { $has_libfoo && !$has_libbar } { ++ pass "matched libfoo" ++ } else { ++ fail "matched libfoo (has_libfoo = $has_libfoo, has_libbar = $has_libbar)" ++ } ++ } ++ -re ".*$libbar_match\(\r\n.*Shared library is missing\)?.*\r\n${gdb_prompt} $" { ++ if { $has_libbar && !$has_libfoo } { ++ pass "matched libbar" ++ } else { ++ fail "matched libbar (has_libfoo = $has_libfoo, has_libbar = $has_libbar)" ++ } ++ } ++ "\r\n${gdb_prompt} $" { ++ if { !$has_libfoo && !$has_libbar } { ++ pass "did not match libfoo nor libbar" ++ } else { ++ fail "did not match libfoo nor libbar (has_libfoo = $has_libfoo, has_libbar = $has_libbar)" ++ } ++ } ++ } ++} ++ ++proc test_stop_on_solib_events { } { ++ set pass 0 ++ # This variable holds the information about whether libfoo and ++ # libbar (respectively) are expected in the "info shared" output. ++ set solib_event_order { { 0 0 } { 0 0 } { 0 0 } { 0 1 } \ ++ { 0 1 } { 0 0 } { 0 0 } { 0 1 } \ ++ { 0 1 } { 0 0 } { 0 0 } { 0 1 } \ ++ { 0 1 } { 0 0 } { 0 0 1 } { 1 1 } \ ++ { 1 1 } { 1 0 } { 1 0 } { 1 1 } \ ++ { 1 1 } { 1 0 1 } { 1 0 } { 1 0 } } ++ ++ with_test_prefix "stop-on-solib-events" { ++ gdb_test_no_output "set stop-on-solib-events 1" "setting stop-on-solib-events" ++ ++ gdb_run_cmd ++ gdb_test "" "Wait for first prompt" ++ foreach l $solib_event_order { ++ incr pass ++ with_test_prefix "pass #$pass" { ++ set should_be_corrupted [expr 0+0[lindex $l 2]] ++ do_test [lindex $l 0] [lindex $l 1] ++ set test "continue" ++ global gdb_prompt ++ gdb_test_multiple $test $test { ++ -re "\r\nwarning: Corrupted shared library list:.*\r\nStopped due to shared library event.*\r\n$gdb_prompt $" { ++ set corrupted 1 ++ pass $test ++ } ++ -re "\r\nStopped due to shared library event.*\r\n$gdb_prompt $" { ++ set corrupted 0 ++ pass $test ++ } ++ } ++ set test "corrupted=$corrupted but should_be_corrupted=$should_be_corrupted" ++ if {$corrupted == $should_be_corrupted} { ++ pass $test ++ } else { ++ fail $test ++ } ++ } ++ } ++ # In the last pass we do not expect to see libfoo or libbar. ++ incr pass ++ with_test_prefix "pass #$pass" { ++ do_test 0 0 ++ } ++ } ++} ++ ++test_stop_on_solib_events diff --git a/gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch b/gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch new file mode 100644 index 0000000..21a1a08 --- /dev/null +++ b/gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch @@ -0,0 +1,135 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch + +;; Fix 'backport GDB 7.4 fix to RHEL 6.6 GDB' [Original Sourceware bug +;; description: 'C++ (and objc): Internal error on unqualified name +;; re-set', PR 11657] (RH BZ 1186476). +;;=fedoratest + +Comments from Sergio Durigan Junior: + + The "proper" fix for this whole problem would be to backport the + "ambiguous linespec" patch series. However, it is really not + recommended to do that for RHEL GDB, because the patch series is too + big and could introduce unwanted regressions. Instead, what we + chose to do was to replace the gdb_assert call by a warning (which + allows the user to continue the debugging session), and tell the + user that, although more than one location was found for his/her + breakpoint, only one will be used. + +diff --git a/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set-main.cc b/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set-main.cc +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set-main.cc +@@ -0,0 +1,22 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2015 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++int ++main (int argc, char *argv[]) ++{ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.cc b/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.cc +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.cc +@@ -0,0 +1,26 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2015 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++class C ++ { ++ public: ++ C () {} ++ C (int x) {} ++ }; ++ ++C a; ++C b (1); +diff --git a/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.exp b/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.cp/gdb-rhbz1186476-internal-error-unqualified-name-re-set.exp +@@ -0,0 +1,51 @@ ++# Copyright 2015 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if { [skip_cplus_tests] } { continue } ++if { [skip_shlib_tests] } { continue } ++if { [is_remote target] } { continue } ++if { [target_info exists use_gdb_stub] } { continue } ++ ++set testfile gdb-rhbz1186476-internal-error-unqualified-name-re-set-main ++set srcfile $testfile.cc ++set executable $testfile ++set binfile [standard_output_file $executable] ++ ++set libtestfile gdb-rhbz1186476-internal-error-unqualified-name-re-set ++set libsrcfile $libtestfile.cc ++set sofile [standard_output_file lib$libtestfile.so] ++ ++# Create and source the file that provides information about the compiler ++# used to compile the test case. ++if [get_compiler_info "c++"] { ++ return -1 ++} ++ ++if { [gdb_compile_shlib $srcdir/$subdir/$libsrcfile $sofile {debug c++ "additional_flags=-fPIC"}] != "" ++ || [gdb_compile $srcdir/$subdir/$srcfile $binfile executable [list additional_flags=-Wl,-rpath,[file dirname ${sofile}] "c++" shlib=${sofile} ]] != ""} { ++ untested $libtestfile.exp ++ return -1 ++} ++ ++clean_restart $executable ++ ++gdb_test_no_output "set breakpoint pending on" ++# gdb_breakpoint would print a failure because of some warning messages ++gdb_test "break C::C" "Breakpoint $decimal \\(C::C\\) pending." ++ ++#gdb_test "run" "warning: Found more than one location for breakpoint #$decimal; only the first location will be used.(\r\n)+Breakpoint $decimal, C::C.*" ++gdb_test "run" ++ ++gdb_test "info break" " in C::C\\(\\) at .* in C::C\\(int\\) at .*" diff --git a/gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch b/gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch new file mode 100644 index 0000000..a0eb440 --- /dev/null +++ b/gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch @@ -0,0 +1,104 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch + +;; [aarch64] Fix hardware watchpoints (RH BZ 1261564). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.c b/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.c +@@ -0,0 +1,33 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2016 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++__attribute__((aligned(16))) struct ++{ ++ int var0, var4, var8; ++} aligned; ++ ++int ++main (void) ++{ ++ aligned.var0 = 1; ++ aligned.var4 = 2; ++ aligned.var8 = 3; ++ ++ aligned.var4 = aligned.var0; ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.exp b/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/rhbz1261564-aarch64-watchpoint.exp +@@ -0,0 +1,53 @@ ++# Copyright (C) 2016 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if { [prepare_for_testing rhbz1261564-aarch64-watchpoint.exp "rhbz1261564-aarch64-watchpoint"] } { ++ return -1 ++} ++ ++if { ! [ runto main ] } then { return 0 } ++ ++set test "rwatch aligned.var4" ++if [istarget "s390*-*-*"] { ++ gdb_test $test {Target does not support this type of hardware watchpoint\.} ++ untested "s390* does not support hw read watchpoint" ++ return ++} ++gdb_test $test "Hardware read watchpoint \[0-9\]+: aligned.var4" ++ ++proc checkvar { address } { ++ global gdb_prompt ++ ++ set test "p &aligned.var$address" ++ gdb_test_multiple $test $test { ++ -re " = \\(int \\*\\) 0x\[0-9a-f\]+$address \r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re "\r\n$gdb_prompt $" { ++ untested "$test (unexpected ELF layout)" ++ return 0 ++ } ++ } ++ return 1 ++} ++if ![checkvar "0"] { return } ++if ![checkvar "4"] { return } ++if ![checkvar "8"] { return } ++ ++# Assumes: PPC_PTRACE_GETHWDBGINFO::data_bp_alignment == 8 ++# 'lwz' does read only 4 bytes but the hw watchpoint is 8 bytes wide. ++setup_xfail "powerpc*-*-*" ++ ++gdb_continue_to_end diff --git a/gdb-rhbz1350436-type-printers-error.patch b/gdb-rhbz1350436-type-printers-error.patch new file mode 100644 index 0000000..3322327 --- /dev/null +++ b/gdb-rhbz1350436-type-printers-error.patch @@ -0,0 +1,83 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz1350436-type-printers-error.patch + +;; Test 'info type-printers' Python error (RH BZ 1350436). +;;=fedoratest + +Typo in Python support breaks info type-printers command +https://bugzilla.redhat.com/show_bug.cgi?id=1350436 + +[testsuite patch] PR python/17136: 'info type-printers' causes an exception when there are per-objfile printers +https://sourceware.org/ml/gdb-patches/2016-06/msg00455.html + +diff --git a/gdb/testsuite/gdb.python/py-typeprint.cc b/gdb/testsuite/gdb.python/py-typeprint.cc +--- a/gdb/testsuite/gdb.python/py-typeprint.cc ++++ b/gdb/testsuite/gdb.python/py-typeprint.cc +@@ -31,6 +31,12 @@ templ s; + + basic_string bs; + ++class Other ++{ ++}; ++ ++Other ovar; ++ + int main() + { + return 0; +diff --git a/gdb/testsuite/gdb.python/py-typeprint.exp b/gdb/testsuite/gdb.python/py-typeprint.exp +--- a/gdb/testsuite/gdb.python/py-typeprint.exp ++++ b/gdb/testsuite/gdb.python/py-typeprint.exp +@@ -50,3 +50,7 @@ gdb_test_no_output "enable type-printer string" + gdb_test "whatis bs" "string" "whatis with enabled printer" + + gdb_test "whatis s" "templ" ++ ++gdb_test "info type-printers" "Type printers for \[^\r\n\]*/py-typeprint:\r\n *other\r\n.*" \ ++ "info type-printers for other" ++gdb_test "whatis ovar" "type = Another" +diff --git a/gdb/testsuite/gdb.python/py-typeprint.py b/gdb/testsuite/gdb.python/py-typeprint.py +--- a/gdb/testsuite/gdb.python/py-typeprint.py ++++ b/gdb/testsuite/gdb.python/py-typeprint.py +@@ -15,8 +15,7 @@ + + import gdb + +- +-class Recognizer(object): ++class StringRecognizer(object): + def __init__(self): + self.enabled = True + +@@ -32,7 +31,27 @@ class StringTypePrinter(object): + self.enabled = True + + def instantiate(self): +- return Recognizer() ++ return StringRecognizer() + + + gdb.type_printers.append(StringTypePrinter()) ++ ++class OtherRecognizer(object): ++ def __init__(self): ++ self.enabled = True ++ ++ def recognize(self, type_obj): ++ if type_obj.tag == 'Other': ++ return 'Another' ++ return None ++ ++class OtherTypePrinter(object): ++ def __init__(self): ++ self.name = 'other' ++ self.enabled = True ++ ++ def instantiate(self): ++ return OtherRecognizer() ++ ++import gdb.types ++gdb.types.register_type_printer(gdb.objfiles()[0], OtherTypePrinter()) diff --git a/gdb-rhbz1553104-s390x-arch12-test.patch b/gdb-rhbz1553104-s390x-arch12-test.patch new file mode 100644 index 0000000..2cb15e5 --- /dev/null +++ b/gdb-rhbz1553104-s390x-arch12-test.patch @@ -0,0 +1,81 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 23 Mar 2018 20:42:44 +0100 +Subject: gdb-rhbz1553104-s390x-arch12-test.patch + +;; [s390x] Backport arch12 instructions decoding (RH BZ 1553104). +;; =fedoratest + +diff --git a/gdb/testsuite/gdb.arch/s390x-arch12.S b/gdb/testsuite/gdb.arch/s390x-arch12.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/s390x-arch12.S +@@ -0,0 +1,4 @@ ++.text ++.globl load_guarded ++load_guarded: ++.byte 0xeb,0xbf,0xf0,0x58,0x00,0x24,0xe3,0xf0,0xff,0x50,0xff,0x71,0xb9,0x04,0x00,0xbf,0xe3,0x20,0xb0,0xa0,0x00,0x24,0xe3,0x10,0xb0,0xa0,0x00,0x04,0xe3,0x10,0x10,0x00,0x00,0x4c,0xe3,0x10,0xb0,0xa8,0x00,0x24,0xe3,0x10,0xb0,0xa8,0x00,0x04,0xb9,0x04,0x00,0x21,0xe3,0x40,0xb1,0x20,0x00,0x04,0xeb,0xbf,0xb1,0x08,0x00,0x04,0x07,0xf4 +diff --git a/gdb/testsuite/gdb.arch/s390x-arch12.exp b/gdb/testsuite/gdb.arch/s390x-arch12.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/s390x-arch12.exp +@@ -0,0 +1,34 @@ ++# Copyright 2018 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++#if { ![istarget s390x-*linux-*] || ![is_lp64_target] } { ++# verbose "Skipping s390x-prologue-skip.exp" ++# return ++#} ++ ++set testfile "s390x-arch12" ++set uufile "${srcdir}/${subdir}/${testfile}.o.uu" ++set ofile "${srcdir}/${subdir}/${testfile}.o" ++ ++if { [catch "system \"uudecode -o ${ofile} ${uufile}\"" ] != 0 } { ++ untested "failed uudecode" ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_load $ofile ++ ++gdb_test "disas load_guarded" " <\\+28>:\tlgg\t%r1,0\\(%r1\\)\r\n\[^\r\n\]* <\\+34>:\tstg\t%r1,168\\(%r11\\)\r\n.*" +diff --git a/gdb/testsuite/gdb.arch/s390x-arch12.o.uu b/gdb/testsuite/gdb.arch/s390x-arch12.o.uu +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/s390x-arch12.o.uu +@@ -0,0 +1,20 @@ ++begin 644 s390x-arch12.o ++M?T5,1@("`0`````````````!`!8````!```````````````````````````` ++M``$X``````!```````!```<`!.N_\%@`)./P_U#_<;D$`+_C(+"@`"3C$+"@ ++M``3C$!```$SC$+"H`"3C$+"H``2Y!``AXT"Q(``$Z[^Q"``$!_0`+G-Y;71A ++M8@`N +Date: Tue, 29 Nov 2022 13:43:34 -0800 +Subject: gdb-rhbz2143992-libiberty-fix-c89isms-in-configure.patch + +;; libiberty: Fix C89-isms in configure tests +;; (Florian Weimer, RHBZ 2143992) + + libiberty/ + + * acinclude.m4 (ac_cv_func_strncmp_works): Add missing + int return type and parameter list to the definition of main. + Include and for prototypes. + (ac_cv_c_stack_direction): Add missing + int return type and parameter list to the definitions of + main, find_stack_direction. Include for exit + prototype. + * configure: Regenerate. + +diff --git a/libiberty/acinclude.m4 b/libiberty/acinclude.m4 +--- a/libiberty/acinclude.m4 ++++ b/libiberty/acinclude.m4 +@@ -24,6 +24,8 @@ AC_CACHE_CHECK([for working strncmp], ac_cv_func_strncmp_works, + [AC_TRY_RUN([ + /* Test by Jim Wilson and Kaveh Ghazi. + Check whether strncmp reads past the end of its string parameters. */ ++#include ++#include + #include + + #ifdef HAVE_FCNTL_H +@@ -51,7 +53,8 @@ AC_CACHE_CHECK([for working strncmp], ac_cv_func_strncmp_works, + + #define MAP_LEN 0x10000 + +-main () ++int ++main (void) + { + #if defined(HAVE_MMAP) || defined(HAVE_MMAP_ANYWHERE) + char *p; +@@ -157,7 +160,10 @@ if test $ac_cv_os_cray = yes; then + fi + + AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction, +-[AC_TRY_RUN([find_stack_direction () ++[AC_TRY_RUN([#include ++ ++int ++find_stack_direction (void) + { + static char *addr = 0; + auto char dummy; +@@ -169,7 +175,9 @@ AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction, + else + return (&dummy > addr) ? 1 : -1; + } +-main () ++ ++int ++main (void) + { + exit (find_stack_direction() < 0); + }], +diff --git a/libiberty/configure b/libiberty/configure +--- a/libiberty/configure ++++ b/libiberty/configure +@@ -6918,7 +6918,10 @@ else + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-find_stack_direction () ++#include ++ ++int ++find_stack_direction (void) + { + static char *addr = 0; + auto char dummy; +@@ -6930,7 +6933,9 @@ find_stack_direction () + else + return (&dummy > addr) ? 1 : -1; + } +-main () ++ ++int ++main (void) + { + exit (find_stack_direction() < 0); + } +@@ -7755,6 +7760,8 @@ else + + /* Test by Jim Wilson and Kaveh Ghazi. + Check whether strncmp reads past the end of its string parameters. */ ++#include ++#include + #include + + #ifdef HAVE_FCNTL_H +@@ -7782,7 +7789,8 @@ else + + #define MAP_LEN 0x10000 + +-main () ++int ++main (void) + { + #if defined(HAVE_MMAP) || defined(HAVE_MMAP_ANYWHERE) + char *p; diff --git a/gdb-rhbz2152431-label-symbol-value.patch b/gdb-rhbz2152431-label-symbol-value.patch new file mode 100644 index 0000000..32d2942 --- /dev/null +++ b/gdb-rhbz2152431-label-symbol-value.patch @@ -0,0 +1,181 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Andrew Burgess +Date: Mon, 19 Dec 2022 15:57:59 +0000 +Subject: gdb-rhbz2152431-label-symbol-value.patch + +Backport these two upstream commits to fix bug 2152431: + + commit 38665d717a3e65c70e6432243d5eed9728a4888a + Date: Mon Dec 12 14:09:40 2022 +0000 + + gdb: use gdb_assert not internal_error + +And: + + commit c3efaf0afd9d37004c42cdfd3ce0c1bfa979c45e + Date: Mon Dec 12 14:05:22 2022 +0000 + + gdb: fix crash when getting the value of a label symbol + +diff --git a/gdb/findvar.c b/gdb/findvar.c +--- a/gdb/findvar.c ++++ b/gdb/findvar.c +@@ -152,11 +152,7 @@ extract_long_unsigned_integer (const gdb_byte *addr, int orig_len, + CORE_ADDR + extract_typed_address (const gdb_byte *buf, struct type *type) + { +- if (!type->is_pointer_or_reference ()) +- internal_error (__FILE__, __LINE__, +- _("extract_typed_address: " +- "type is not a pointer or reference")); +- ++ gdb_assert (type->is_pointer_or_reference ()); + return gdbarch_pointer_to_address (type->arch (), type, buf); + } + +@@ -205,11 +201,7 @@ template void store_integer (gdb_byte *addr, int len, + void + store_typed_address (gdb_byte *buf, struct type *type, CORE_ADDR addr) + { +- if (!type->is_pointer_or_reference ()) +- internal_error (__FILE__, __LINE__, +- _("store_typed_address: " +- "type is not a pointer or reference")); +- ++ gdb_assert (type->is_pointer_or_reference ()); + gdbarch_address_to_pointer (type->arch (), type, buf, addr); + } + +@@ -634,19 +626,32 @@ language_defn::read_var_value (struct symbol *var, + + case LOC_LABEL: + /* Put the constant back in target format. */ +- v = allocate_value (type); +- if (overlay_debugging) +- { +- struct objfile *var_objfile = symbol_objfile (var); +- addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var), +- var->obj_section (var_objfile)); +- store_typed_address (value_contents_raw (v).data (), type, addr); +- } +- else +- store_typed_address (value_contents_raw (v).data (), type, +- SYMBOL_VALUE_ADDRESS (var)); +- VALUE_LVAL (v) = not_lval; +- return v; ++ { ++ /* Put the constant back in target format. */ ++ if (overlay_debugging) ++ { ++ struct objfile *var_objfile = symbol_objfile (var); ++ addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var), ++ var->obj_section (var_objfile)); ++ } ++ else ++ addr = SYMBOL_VALUE_ADDRESS (var); ++ ++ /* First convert the CORE_ADDR to a function pointer type, this ++ ensures the gdbarch knows what type of pointer we are ++ manipulating when value_from_pointer is called. */ ++ type = builtin_type (symbol_arch (var))->builtin_func_ptr; ++ v = value_from_pointer (type, addr); ++ ++ /* But we want to present the value as 'void *', so cast it to the ++ required type now, this will not change the values bit ++ representation. */ ++ struct type *void_ptr_type ++ = builtin_type (symbol_arch (var))->builtin_data_ptr; ++ v = value_cast_pointers (void_ptr_type, v, 0); ++ VALUE_LVAL (v) = not_lval; ++ return v; ++ } + + case LOC_CONST_BYTES: + if (is_dynamic_type (type)) +diff --git a/gdb/testsuite/gdb.python/py-label-symbol-value.c b/gdb/testsuite/gdb.python/py-label-symbol-value.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.python/py-label-symbol-value.c +@@ -0,0 +1,38 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2022 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++volatile int global_var = 1; ++ ++int ++get_value () ++{ ++ return global_var; ++} ++ ++int ++main (void) ++{ ++ int value = get_value (); ++ if (value > 0) ++ goto some_label; ++ ++ return 1; ++ ++ some_label: ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.python/py-label-symbol-value.exp b/gdb/testsuite/gdb.python/py-label-symbol-value.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.python/py-label-symbol-value.exp +@@ -0,0 +1,39 @@ ++# Copyright 2022 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++# Check that GDB handles the user asking for the value of a label ++# symbol (i.e. a symbol for a goto label). ++ ++load_lib gdb-python.exp ++standard_testfile ++ ++if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { ++ return -1 ++} ++ ++# Skip all tests if Python scripting is not enabled. ++if { [skip_python_tests] } { continue } ++ ++if ![runto_main] { ++ return -1 ++} ++ ++# Use Python to print the value of the 'some_label' symbol. ++gdb_test "python frame = gdb.selected_frame()" ++gdb_test "python frame_pc = frame.pc()" ++gdb_test "python block = gdb.current_progspace().block_for_pc(frame_pc)" ++gdb_test "python symbol,_ = gdb.lookup_symbol('some_label', block, gdb.SYMBOL_LABEL_DOMAIN)" ++gdb_test "python print(str(symbol.value()))" "$hex " ++gdb_test "python print(str(symbol.value().type))" "void \\*" diff --git a/gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch b/gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch new file mode 100644 index 0000000..0df5ee5 --- /dev/null +++ b/gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch @@ -0,0 +1,147 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch + +;; Import regression test for `gdb/findvar.c:417: internal-error: +;; read_var_value: Assertion `frame' failed.' (RH BZ 947564) from RHEL 6.5. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.threads/tls-rhbz947564.cc b/gdb/testsuite/gdb.threads/tls-rhbz947564.cc +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/tls-rhbz947564.cc +@@ -0,0 +1,53 @@ ++#include ++#include ++ ++class x ++ { ++ public: ++ int n; ++ ++ x() : n(0) {} ++ }; ++ ++class y ++ { ++ public: ++ int v; ++ ++ y() : v(0) {} ++ static __thread x *xp; ++ }; ++ ++__thread x *y::xp; ++ ++static void ++foo (y *yp) ++{ ++ yp->v = 1; /* foo_marker */ ++} ++ ++static void * ++bar (void *unused) ++{ ++ x xinst; ++ y::xp= &xinst; ++ ++ y yy; ++ foo(&yy); ++ ++ return NULL; ++} ++ ++int ++main(int argc, char *argv[]) ++{ ++ pthread_t t[2]; ++ ++ pthread_create (&t[0], NULL, bar, NULL); ++ pthread_create (&t[1], NULL, bar, NULL); ++ ++ pthread_join (t[0], NULL); ++ pthread_join (t[1], NULL); ++ ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.threads/tls-rhbz947564.exp b/gdb/testsuite/gdb.threads/tls-rhbz947564.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/tls-rhbz947564.exp +@@ -0,0 +1,75 @@ ++# Copyright (C) 2013 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . */ ++ ++set testfile tls-rhbz947564 ++set srcfile ${testfile}.cc ++set binfile [standard_output_file ${testfile}] ++ ++if [istarget "*-*-linux"] then { ++ set target_cflags "-D_MIT_POSIX_THREADS" ++} else { ++ set target_cflags "" ++} ++ ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list c++ debug]] != "" } { ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++ ++gdb_load ${binfile} ++ ++if { ![runto_main] } { ++ fail "Can't run to function main" ++ return 0 ++} ++ ++gdb_breakpoint "foo" ++gdb_continue_to_breakpoint "foo" ".* foo_marker .*" ++ ++proc get_xp_val {try} { ++ global expect_out ++ global gdb_prompt ++ global hex ++ ++ set xp_val "" ++ gdb_test_multiple "print *yp" "print yp value" { ++ -re { = \{v = 0, static xp = (0x[0-9a-f]+)\}.* } { ++ pass "print $try value of *yp" ++ set xp_val $expect_out(1,string) ++ } ++ -re "$gdb_prompt $" { ++ fail "print $try value of *yp" ++ } ++ timeout { ++ fail "print $try value of *yp (timeout)" ++ } ++ } ++ return $xp_val ++} ++ ++set first_run [get_xp_val "first"] ++ ++gdb_test "continue" "Breakpoint \[0-9\]+, foo \\\(yp=$hex\\\) at.*" ++ ++set second_run [get_xp_val "second"] ++ ++if { $first_run != $second_run } { ++ pass "different values for TLS variable" ++} else { ++ fail "different values for TLS variable" ++} diff --git a/gdb-rhel5.9-testcase-xlf-var-inside-mod.patch b/gdb-rhel5.9-testcase-xlf-var-inside-mod.patch new file mode 100644 index 0000000..b130d1f --- /dev/null +++ b/gdb-rhel5.9-testcase-xlf-var-inside-mod.patch @@ -0,0 +1,731 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch + +;; Include testcase for `Unable to see a variable inside a module (XLF)' (BZ 823789). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.fortran/xlf-variable.S b/gdb/testsuite/gdb.fortran/xlf-variable.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/xlf-variable.S +@@ -0,0 +1,638 @@ ++/* Copyright (C) 2012 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 . */ ++ ++/* This file has been generated from the file named `xlf-variable.f', which ++ should be present in this directory. The command used to generate this ++ file was: ++ ++ xlf -qnoopt -g9 -S xlf-variable.f -o xlf-variable.S ++ ++ After issuing this command, you must hand-edit this file and remove the ++ mentions for `_xlfExit', since it is only present in XLF-specific ++ libraries. You must also make sure to remove the file named `mod1.mod' ++ which will be created in the compilation directory. ++ ++ In order to generated this file, the following XLF package was used: ++ ++ xlf.14.1.0.0.linux.eval.tar.gz ++ ++ These instructions may be different for different versions of the XLF ++ compiler. */ ++ ++.set r0,0; .set SP,1; .set RTOC,2; .set r3,3; .set r4,4 ++.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 ++.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 ++.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19 ++.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24 ++.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29 ++.set r30,30; .set r31,31 ++.set fp0,0; .set fp1,1; .set fp2,2; .set fp3,3; .set fp4,4 ++.set fp5,5; .set fp6,6; .set fp7,7; .set fp8,8; .set fp9,9 ++.set fp10,10; .set fp11,11; .set fp12,12; .set fp13,13; .set fp14,14 ++.set fp15,15; .set fp16,16; .set fp17,17; .set fp18,18; .set fp19,19 ++.set fp20,20; .set fp21,21; .set fp22,22; .set fp23,23; .set fp24,24 ++.set fp25,25; .set fp26,26; .set fp27,27; .set fp28,28; .set fp29,29 ++.set fp30,30; .set fp31,31 ++.set v0,0; .set v1,1; .set v2,2; .set v3,3; .set v4,4 ++.set v5,5; .set v6,6; .set v7,7; .set v8,8; .set v9,9 ++.set v10,10; .set v11,11; .set v12,12; .set v13,13; .set v14,14 ++.set v15,15; .set v16,16; .set v17,17; .set v18,18; .set v19,19 ++.set v20,20; .set v21,21; .set v22,22; .set v23,23; .set v24,24 ++.set v25,25; .set v26,26; .set v27,27; .set v28,28; .set v29,29 ++.set v30,30; .set v31,31 ++.set q0,0; .set q1,1; .set q2,2; .set q3,3; .set q4,4 ++.set q5,5; .set q6,6; .set q7,7; .set q8,8; .set q9,9 ++.set q10,10; .set q11,11; .set q12,12; .set q13,13; .set q14,14 ++.set q15,15; .set q16,16; .set q17,17; .set q18,18; .set q19,19 ++.set q20,20; .set q21,21; .set q22,22; .set q23,23; .set q24,24 ++.set q25,25; .set q26,26; .set q27,27; .set q28,28; .set q29,29 ++.set q30,30; .set q31,31 ++.set MQ,0; .set XER,1; .set FROM_RTCU,4; .set FROM_RTCL,5; .set FROM_DEC,6 ++.set LR,8; .set CTR,9; .set TID,17; .set DSISR,18; .set DAR,19; .set TO_RTCU,20 ++.set TO_RTCL,21; .set TO_DEC,22; .set SDR_0,24; .set SDR_1,25; .set SRR_0,26 ++.set SRR_1,27 ++.set BO_dCTR_NZERO_AND_NOT,0; .set BO_dCTR_NZERO_AND_NOT_1,1 ++.set BO_dCTR_ZERO_AND_NOT,2; .set BO_dCTR_ZERO_AND_NOT_1,3 ++.set BO_IF_NOT,4; .set BO_IF_NOT_1,5; .set BO_IF_NOT_2,6 ++.set BO_IF_NOT_3,7; .set BO_dCTR_NZERO_AND,8; .set BO_dCTR_NZERO_AND_1,9 ++.set BO_dCTR_ZERO_AND,10; .set BO_dCTR_ZERO_AND_1,11; .set BO_IF,12 ++.set BO_IF_1,13; .set BO_IF_2,14; .set BO_IF_3,15; .set BO_dCTR_NZERO,16 ++.set BO_dCTR_NZERO_1,17; .set BO_dCTR_ZERO,18; .set BO_dCTR_ZERO_1,19 ++.set BO_ALWAYS,20; .set BO_ALWAYS_1,21; .set BO_ALWAYS_2,22 ++.set BO_ALWAYS_3,23; .set BO_dCTR_NZERO_8,24; .set BO_dCTR_NZERO_9,25 ++.set BO_dCTR_ZERO_8,26; .set BO_dCTR_ZERO_9,27; .set BO_ALWAYS_8,28 ++.set BO_ALWAYS_9,29; .set BO_ALWAYS_10,30; .set BO_ALWAYS_11,31 ++.set CR0_LT,0; .set CR0_GT,1; .set CR0_EQ,2; .set CR0_SO,3 ++.set CR1_FX,4; .set CR1_FEX,5; .set CR1_VX,6; .set CR1_OX,7 ++.set CR2_LT,8; .set CR2_GT,9; .set CR2_EQ,10; .set CR2_SO,11 ++.set CR3_LT,12; .set CR3_GT,13; .set CR3_EQ,14; .set CR3_SO,15 ++.set CR4_LT,16; .set CR4_GT,17; .set CR4_EQ,18; .set CR4_SO,19 ++.set CR5_LT,20; .set CR5_GT,21; .set CR5_EQ,22; .set CR5_SO,23 ++.set CR6_LT,24; .set CR6_GT,25; .set CR6_EQ,26; .set CR6_SO,27 ++.set CR7_LT,28; .set CR7_GT,29; .set CR7_EQ,30; .set CR7_SO,31 ++.set TO_LT,16; .set TO_GT,8; .set TO_EQ,4; .set TO_LLT,2; .set TO_LGT,1 ++ ++ .file "xlf-variable.f" ++ .globl __mod1_NMOD_____mod1 ++ .type __mod1_NMOD_____mod1,@function ++ .size __mod1_NMOD_____mod1,32 ++ .globl main ++ .type main,@function ++ .size main,68 ++ .globl __mod1_NMOD_sub1 ++ .type __mod1_NMOD_sub1,@function ++ .size __mod1_NMOD_sub1,136 ++ .globl _main ++ .type _main,@function ++ .size _main,68 ++ ++ .section ".text" ++ .align 7 ++.LC.text: ++__mod1_NMOD_____mod1: ++ stwu SP,-32(SP) ++ stw r31,28(SP) ++ or r31,SP,SP ++ b $+0x4 ++ addi r11,r31,32 ++ lwz r31,-4(r11) ++ or SP,r11,r11 ++ bclr BO_ALWAYS,CR0_LT ++.LC.text32: ++ ++__mod1_NMOD_sub1: ++ stwu SP,-32(SP) ++ stw r31,28(SP) ++ stw r30,24(SP) ++ or r31,SP,SP ++ addis r30,r0,.const_dr@ha ++ addi r30,r30,.const_dr@l ++ addis r3,r0,__N_mod1@ha ++ addi r3,r3,__N_mod1@l ++ addi r0,r0,1 ++ stb r0,4(r3) ++ addi r4,r0,14 ++ stb r4,5(r3) ++ stb r0,7(r3) ++ addis r5,r0,__N__mod1@ha ++ addi r5,r5,__N__mod1@l ++ stw r5,0(r3) ++ lbz r5,6(r3) ++ rlwinm r5,r5,0,25,25 ++ ori r5,r5,0x0040 ++ stb r5,6(r3) ++ lwz r5,0(r3) ++ lfs fp0,0(r30) ++ stfs fp0,0(r5) ++ stb r0,4(r3) ++ stb r4,5(r3) ++ addi r4,r0,0 ++ stb r4,6(r3) ++ stb r0,7(r3) ++ b $+0x4 ++ addi r11,r31,32 ++ lwz r30,-8(r11) ++ lwz r31,-4(r11) ++ or SP,r11,r11 ++ bclr BO_ALWAYS,CR0_LT ++.LC.text168: ++ .long 0 ++ .skip 0x54 ++.LC.text256: ++ ++main: ++_main: ++ mfspr r0,LR ++ stwu SP,-32(SP) ++ stw r31,28(SP) ++ stw r0,36(SP) ++ or r31,SP,SP ++ bl __mod1_NMOD_sub1 ++ addi r3,r0,0 ++.LC.text288: ++ ++ tw TO_EQ,r14,r14 ++ addi r3,r0,0 ++ b $+0x4 ++ addi r11,r31,32 ++ lwz r31,-4(r11) ++ lwz r0,4(r11) ++ mtspr LR,r0 ++ or SP,r11,r11 ++ bclr BO_ALWAYS,CR0_LT ++.LC.text324: ++ ++ ++ .section ".rodata","a" ++ .align 2 ++.LC.rodata: ++ .type .const_dr,@object ++ .size .const_dr,4 ++.const_dr: ++ .long 0x40400000 ++ ++ .section ".eh_frame","wa" ++ .align 2 ++.LC.eh_frame: ++ .long 0x0000000c ++ .long 0x00000000 ++ .long 0x0100047c ++ .long 0x410c0100 ++ .long 0x0000001c ++ .long 0x00000014 ++ .long .LC.text ++ .long 0x00000020 ++ .long 0x410e2041 ++ .long 0x9f01410d ++ .long 0x1f410a42 ++ .long 0xdf420b00 ++ .long 0x00000020 ++ .long 0x00000034 ++ .long .LC.text32 ++ .long 0x00000088 ++ .long 0x410e2041 ++ .long 0x9f01419e ++ .long 0x02410d1f ++ .long 0x590a42de ++ .long 0x41df420b ++ .long 0x0000000c ++ .long 0x00000000 ++ .long 0x0100047c ++ .long 0x410c0100 ++ .long 0x00000020 ++ .long 0x00000014 ++ .long .LC.text256 ++ .long 0x00000044 ++ .long 0x420e2041 ++ .long 0x9f014111 ++ .long 0x417f410d ++ .long 0x1f460a42 ++ .long 0xdf440b00 ++ ++ .section ".data","wa" ++ .align 4 ++.LC.data: ++ .globl __N_mod1 ++ .type __N_mod1,@object ++ .size __N_mod1,8 ++__N_mod1: ++ .long 0x00000000 ++ .long 0x01000001 ++ ++ .section ".except.1","wa" ++ .align 1 ++.LC.except.1: ++ .long .LC.text288 ++ .byte 0x01 ++ .byte 0x09 ++ ++ .ident "Fri Jun 15 16:35:45 2012 .IBM XL Fortran for Linux, V14.1 (5765-J05, 5725-C75) Version 14.01.0000.0000.Fri Jun 15 16:35:45 2012 .IBM XL Fortran for Linux, V14.1 (5765-J05, 5725-C75) Version 14.01.0000.0000." ++ ++ .section ".debug_aranges" ++ .align 0 ++.LC.debug_aranges: ++ .long 0x0000001c ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_info ++ .long 0x04000000 ++ .byte 0x00 ++ .byte 0x00 ++ .long .LC.text ++ .long 0x000000a8 ++ .long 0x00000000 ++ .long 0x00000000 ++ .long 0x0000001c ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_info273 ++ .long 0x04000000 ++ .byte 0x00 ++ .byte 0x00 ++ .long .LC.text256 ++ .long 0x00000044 ++ .long 0x00000000 ++ .long 0x00000000 ++ ++ .section ".debug_pubnames" ++ .align 0 ++.LC.debug_pubnames: ++ .long 0x0000002f ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_info ++ .long 0x00000111 ++ .long 0x000000dc ++ .long 0x79000000 ++ .long 0x00ec7a00 ++ .long 0x000000fc ++ .long 0x5f5f6d6f ++ .long 0x64315f4e ++ .long 0x4d4f445f ++ .long 0x73756231 ++ .long 0x00000000 ++ .long 0x00000000 ++ .byte 0x18 ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_info273 ++ .long 0x00000127 ++ .long 0x0000010f ++ .long 0x5f6d6169 ++ .long 0x6e000000 ++ .byte 0x00 ++ .byte 0x00 ++ ++ .section ".debug_info" ++ .align 0 ++.LC.debug_info: ++ .long 0x0000010d ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_abbrev ++ .long 0x0401786c ++ .long 0x662d7661 ++ .long 0x72696162 ++ .long 0x6c652e66 ++ .byte 0x00 ++ .long .LC.debug_line ++ .long .LC.text ++ .long .LC.text168 ++ .long 0x082f726f ++ .long 0x6f742f73 ++ .long 0x65726769 ++ .long 0x6f646a2f ++ .long 0x6764622d ++ .long 0x372e302e ++ .long 0x312d3432 ++ .long 0x2e656c35 ++ .long 0x2f676462 ++ .long 0x2d372e30 ++ .long 0x2e312f67 ++ .long 0x64622f74 ++ .long 0x65737473 ++ .long 0x75697465 ++ .long 0x2f676462 ++ .long 0x2e666f72 ++ .long 0x7472616e ++ .long 0x0049424d ++ .long 0x20584c20 ++ .long 0x466f7274 ++ .long 0x72616e20 ++ .long 0x666f7220 ++ .long 0x4c696e75 ++ .long 0x782c2056 ++ .long 0x31342e31 ++ .long 0x20283537 ++ .long 0x36352d4a ++ .long 0x30352c20 ++ .long 0x35373235 ++ .long 0x2d433735 ++ .long 0x29205665 ++ .long 0x7273696f ++ .long 0x6e203134 ++ .long 0x2e30312e ++ .long 0x30303030 ++ .long 0x2e303030 ++ .long 0x30000249 ++ .long 0x4e544547 ++ .long 0x45520004 ++ .long 0x05030005 ++ .long 0x02524541 ++ .long 0x4c000404 ++ .long 0x04050000 ++ .long 0x0000c706 ++ .long 0x6d6f6431 ++ .long 0x00070503 ++ .long __N_mod1 ++ .long 0x79000100 ++ .long 0x01000000 ++ .long 0xd0070503 ++ .long __N__mod1 ++ .long 0x7a000100 ++ .long 0x01000000 ++ .long 0xc7087375 ++ .byte 0x62 ++ .byte 0x31 ++ .byte 0x00 ++ .long .LC.text32 ++ .long .LC.text168 ++ .long 0x01180101 ++ .byte 0x6f ++ .byte 0x00 ++ .byte 0x00 ++.LC.debug_info273: ++ .long 0x00000123 ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_abbrev97 ++ .long 0x0401786c ++ .long 0x662d7661 ++ .long 0x72696162 ++ .long 0x6c652e66 ++ .byte 0x00 ++ .long .LC.debug_line98 ++ .long .LC.text256 ++ .long .LC.text324 ++ .long 0x082f726f ++ .long 0x6f742f73 ++ .long 0x65726769 ++ .long 0x6f646a2f ++ .long 0x6764622d ++ .long 0x372e302e ++ .long 0x312d3432 ++ .long 0x2e656c35 ++ .long 0x2f676462 ++ .long 0x2d372e30 ++ .long 0x2e312f67 ++ .long 0x64622f74 ++ .long 0x65737473 ++ .long 0x75697465 ++ .long 0x2f676462 ++ .long 0x2e666f72 ++ .long 0x7472616e ++ .long 0x0049424d ++ .long 0x20584c20 ++ .long 0x466f7274 ++ .long 0x72616e20 ++ .long 0x666f7220 ++ .long 0x4c696e75 ++ .long 0x782c2056 ++ .long 0x31342e31 ++ .long 0x20283537 ++ .long 0x36352d4a ++ .long 0x30352c20 ++ .long 0x35373235 ++ .long 0x2d433735 ++ .long 0x29205665 ++ .long 0x7273696f ++ .long 0x6e203134 ++ .long 0x2e30312e ++ .long 0x30303030 ++ .long 0x2e303030 ++ .long 0x30000249 ++ .long 0x4e544547 ++ .long 0x45520004 ++ .long 0x05030005 ++ .long 0x02524541 ++ .long 0x4c000404 ++ .long 0x04000000 ++ .long 0xb9050000 ++ .long 0x0000c706 ++ .long 0x000000f4 ++ .long 0x26264e26 ++ .long 0x6d6f6431 ++ .long 0x00080779 ++ .long 0x00022300 ++ .long 0x000000d4 ++ .long 0x00060000 ++ .long 0x010f2626 ++ .long 0x4e26266d ++ .long 0x6f643100 ++ .long 0x04077a00 ++ .long 0x02230000 ++ .long 0x0000c700 ++ .long 0x085f6d61 ++ .byte 0x69 ++ .byte 0x6e ++ .byte 0x00 ++ .long .LC.text256 ++ .long .LC.text324 ++ .long 0x0201016f ++ .long 0x000000b9 ++ .byte 0x00 ++ ++ .section ".debug_abbrev" ++ .align 0 ++.LC.debug_abbrev: ++ .long 0x01110103 ++ .long 0x08100611 ++ .long 0x01120113 ++ .long 0x0b1b0825 ++ .long 0x08000002 ++ .long 0x24000308 ++ .long 0x0b0b3e0b ++ .long 0x00000324 ++ .long 0x000b0b3e ++ .long 0x0b000004 ++ .long 0x15000000 ++ .long 0x050f0033 ++ .long 0x0b491300 ++ .long 0x00061e01 ++ .long 0x03080000 ++ .long 0x07340002 ++ .long 0x0a03083a ++ .long 0x0b3b0b3f ++ .long 0x0c491300 ++ .long 0x00082e00 ++ .long 0x03081101 ++ .long 0x12013a0b ++ .long 0x3b0b3f0c ++ .long 0x400a0000 ++ .byte 0x00 ++.LC.debug_abbrev97: ++ .long 0x01110103 ++ .long 0x08100611 ++ .long 0x01120113 ++ .long 0x0b1b0825 ++ .long 0x08000002 ++ .long 0x24000308 ++ .long 0x0b0b3e0b ++ .long 0x00000324 ++ .long 0x000b0b3e ++ .long 0x0b000004 ++ .long 0x15004913 ++ .long 0x0000050f ++ .long 0x00330b49 ++ .long 0x13000006 ++ .long 0x13010113 ++ .long 0x03080b0b ++ .long 0x0000070d ++ .long 0x00030838 ++ .long 0x0a491300 ++ .long 0x00082e00 ++ .long 0x03081101 ++ .long 0x1201360b ++ .long 0x3f0c400a ++ .long 0x49130000 ++ .byte 0x00 ++ ++ .section ".debug_line" ++ .align 0 ++.LC.debug_line: ++ .long 0x0000005e ++ .long 0x00020000 ++ .long 0x00220101 ++ .long 0x9cdc0a00 ++ .long 0x01010101 ++ .long 0x00000001 ++ .long 0x00786c66 ++ .long 0x2d766172 ++ .long 0x6961626c ++ .long 0x652e6600 ++ .long 0x00000000 ++ .long 0x04010005 ++ .byte 0x02 ++ .long .LC.text ++ .long 0x03130109 ++ .long 0x000c0309 ++ .long 0x01090014 ++ .long 0x037b0109 ++ .long 0x00180301 ++ .long 0x01090038 ++ .long 0x03010109 ++ .long 0x000c0301 ++ .long 0x01090014 ++ .long 0x03010109 ++ .long 0x00180001 ++ .byte 0x01 ++.LC.debug_line98: ++ .long 0x00000046 ++ .long 0x00020000 ++ .long 0x00220101 ++ .long 0x9cdc0a00 ++ .long 0x01010101 ++ .long 0x00000001 ++ .long 0x00786c66 ++ .long 0x2d766172 ++ .long 0x6961626c ++ .long 0x652e6600 ++ .long 0x00000000 ++ .long 0x04010005 ++ .byte 0x02 ++ .long .LC.text256 ++ .long 0x031f0109 ++ .long 0x00140300 ++ .long 0x01090004 ++ .long 0x03010109 ++ .long 0x002c0001 ++ .byte 0x01 ++ ++ .section ".debug_frame" ++ .align 0 ++.LC.debug_frame: ++ .long 0x0000000c ++ .long 0xffffffff ++ .long 0x0100047c ++ .long 0x410c0100 ++ .long 0x0000001c ++ .long .LC.debug_frame ++ .long .LC.text ++ .long 0x00000020 ++ .long 0x410e2041 ++ .long 0x9f01410d ++ .long 0x1f410a42 ++ .long 0xdf420b00 ++ .long 0x00000020 ++ .long .LC.debug_frame ++ .long .LC.text32 ++ .long 0x00000088 ++ .long 0x410e2041 ++ .long 0x9f01419e ++ .long 0x02410d1f ++ .long 0x590a42de ++ .long 0x41df420b ++.LC.debug_frame84: ++ .long 0x0000000c ++ .long 0xffffffff ++ .long 0x0100047c ++ .long 0x410c0100 ++ .long 0x00000020 ++ .long .LC.debug_frame84 ++ .long .LC.text256 ++ .long 0x00000044 ++ .long 0x420e2041 ++ .long 0x9f014111 ++ .long 0x417f410d ++ .long 0x1f460a42 ++ .long 0xdf440b00 ++ ++ .section ".debug_pubtypes" ++ .align 0 ++.LC.debug_pubtypes: ++ .long 0x00000023 ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_info ++ .long 0x00000111 ++ .long 0x000000b9 ++ .long 0x494e5445 ++ .long 0x47455200 ++ .long 0x000000c7 ++ .long 0x5245414c ++ .long 0x00000000 ++ .long 0x00000000 ++ .byte 0x3e ++ .byte 0x00 ++ .byte 0x02 ++ .long .LC.debug_info273 ++ .long 0x00000127 ++ .long 0x000000b9 ++ .long 0x494e5445 ++ .long 0x47455200 ++ .long 0x000000c7 ++ .long 0x5245414c ++ .long 0x00000000 ++ .long 0xda26264e ++ .long 0x266d6f64 ++ .long 0x31000000 ++ .long 0x00f42626 ++ .long 0x4e26266d ++ .long 0x6f643100 ++ .long 0x00000000 ++ ++ .comm __N__mod1,4,16 +diff --git a/gdb/testsuite/gdb.fortran/xlf-variable.exp b/gdb/testsuite/gdb.fortran/xlf-variable.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/xlf-variable.exp +@@ -0,0 +1,37 @@ ++# Copyright 2012 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++# This test can only be run on PPC64 machines. ++ ++if { ![istarget powerpc64-*] || ![is_ilp32_target] } { ++ return -1 ++} ++ ++set testfile "xlf-variable" ++set srcfile ${testfile}.S ++ ++if { [prepare_for_testing $testfile.exp $testfile $srcfile] } { ++ return -1 ++} ++ ++if { ![runto_main] } { ++ return -1 ++} ++ ++gdb_test "step" ".*y => z.*" "y => z" ++gdb_test "step" ".*y = 3\.0.*" "y = 3.0" ++gdb_test "step" ".*nullify \\(y\\).*" "nullify (y)" ++gdb_test "print z" "= 3" "z = 3" ++gdb_test "ptype z" "= REAL" "z is REAL" +diff --git a/gdb/testsuite/gdb.fortran/xlf-variable.f b/gdb/testsuite/gdb.fortran/xlf-variable.f +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/xlf-variable.f +@@ -0,0 +1,33 @@ ++c Copyright 2012 Free Software Foundation, Inc. ++c ++c This program is free software; you can redistribute it and/or modify ++c it under the terms of the GNU General Public License as published by ++c the Free Software Foundation; either version 3 of the License, or ++c (at your option) any later version. ++c ++c This program is distributed in the hope that it will be useful, ++c but WITHOUT ANY WARRANTY; without even the implied warranty of ++c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++c GNU General Public License for more details. ++c ++c You should have received a copy of the GNU General Public License ++c along with this program. If not, see . ++ ++c This file is the Fortran source file for xlf-variable.f. ++c It was used to generate the assembly output called xlf-variable.S, ++c which was generated using IBM's XLF compiler. ++ ++ module mod1 ++ real, pointer :: y ++ real, target :: z ++ contains ++ subroutine sub1 ++ y => z ++ y = 3.0 ++ nullify (y) ++ end subroutine ++ end module ++ ++ use mod1 ++ call sub1 ++ end diff --git a/gdb-simultaneous-step-resume-breakpoint-test.patch b/gdb-simultaneous-step-resume-breakpoint-test.patch new file mode 100644 index 0000000..5e1315b --- /dev/null +++ b/gdb-simultaneous-step-resume-breakpoint-test.patch @@ -0,0 +1,162 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-simultaneous-step-resume-breakpoint-test.patch + +;; New test for step-resume breakpoint placed in multiple threads at once. +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.threads/simultaneous-step-resume-breakpoint.c b/gdb/testsuite/gdb.threads/simultaneous-step-resume-breakpoint.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/simultaneous-step-resume-breakpoint.c +@@ -0,0 +1,79 @@ ++/* Copyright 2009 Free Software Foundation, Inc. ++ ++ Written by Fred Fish of Cygnus Support ++ Contributed by Cygnus Support ++ ++ 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 . */ ++ ++/* Test multiple threads stepping into a .debug_line-less function with ++ a breakpoint placed on its return-to-caller point. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define THREADS 3 ++ ++static void * ++func (void *unused) ++{ ++ int i; ++ ++ errno = 0; ++ i = 0xdeadf00d; ++ i = sleep (THREADS); /* sleep-call */ ++ if (errno != 0) /* sleep-after */ ++ perror ("sleep"); ++ ++ /* The GDB bug with forgotten step-resume breakpoint could leave stale ++ breakpoint on the I assignment making it a nop. */ ++ if (i == 0xdeadf00d) ++ assert (0); ++ ++ assert (i == 0); ++ ++ pthread_exit (NULL); ++} ++ ++int ++main (void) ++{ ++ pthread_t threads[THREADS]; ++ int threadi; ++ ++ for (threadi = 0; threadi < THREADS; threadi++) ++ { ++ int i; ++ ++ i = pthread_create (&threads[threadi], NULL, func, NULL); ++ assert (i == 0); ++ ++ i = sleep (1); ++ assert (i == 0); ++ } ++ ++ for (threadi = 0; threadi < THREADS; threadi++) ++ { ++ int i; ++ ++ i = pthread_join (threads[threadi], NULL); ++ assert (i == 0); ++ } ++ ++ return 0; /* final-exit */ ++} +diff --git a/gdb/testsuite/gdb.threads/simultaneous-step-resume-breakpoint.exp b/gdb/testsuite/gdb.threads/simultaneous-step-resume-breakpoint.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.threads/simultaneous-step-resume-breakpoint.exp +@@ -0,0 +1,65 @@ ++# Copyright (C) 2009 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . */ ++ ++# Test multiple threads stepping into a .debug_line-less function with ++# a breakpoint placed on its return-to-caller point. ++ ++set testfile simultaneous-step-resume-breakpoint ++set srcfile ${testfile}.c ++set binfile [standard_output_file ${testfile}] ++ ++if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++ ++# Ensure we have no debuginfo for the `sleep' call itself (=for libc). ++gdb_test "set debug-file-directory /DoesNotExist" ++ ++gdb_load ${binfile} ++if ![runto_main] { ++ return -1 ++} ++ ++# Red Hat vendor patch does set it to "step" by default. ++gdb_test "set scheduler-locking off" ++ ++gdb_breakpoint [gdb_get_line_number "final-exit"] ++ ++gdb_breakpoint [gdb_get_line_number "sleep-call"] ++gdb_continue_to_breakpoint "sleep-call" ++ ++gdb_test "step" "sleep-call.*" "step thread 1" ++gdb_test "step" "sleep-call.*" "step thread 2" ++gdb_test "step" "sleep-after.*" "step thread 3" ++ ++set test "first continue" ++gdb_test_multiple "continue" $test { ++ -re "final-exit.*$gdb_prompt $" { ++ # gdb-7.0. ++ pass $test ++ return ++ } ++ -re "sleep-after.*$gdb_prompt $" { ++ # Fedora/RHEL branch. ++ pass $test ++ } ++} ++ ++gdb_test "continue" "sleep-after.*" "second continue" ++gdb_test "continue" "final-exit.*" "third continue" diff --git a/gdb-sw22395-constify-target_desc.patch b/gdb-sw22395-constify-target_desc.patch new file mode 100644 index 0000000..9a3c128 --- /dev/null +++ b/gdb-sw22395-constify-target_desc.patch @@ -0,0 +1,1153 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Keith Seitz +Date: Fri, 2 Sep 2022 12:43:03 -0700 +Subject: gdb-sw22395-constify-target_desc.patch + +;; Constify target_desc to fix PPC ODR violations. +;; (Keith Seitz, build/22395) + +cleanup: Add missing feature/ XML files to Makefile + + This patch adds some missing .xml files to features/Makefile so that when the + directory's C files are regenerated, all files are appropriately remade. + + This has demonstrated that there have been several "misses" in regenerating + files in this directory. Namely, arm-secext.c and sparc{32,64}-solaris.c. For + the former case, there was what essentially amounts to a typo regarding the + create feature function's name. In the later case, this file has missed at least + one important update in July, 2020, when allocate_target_description was + changed to return a unique pointer. + + Those corrections are included. + +Constify target_desc declarations + + This patch changes various global target_desc declarations to const, thereby + correcting a prominent source of ODR violations in PowerPC-related target code. + The majority of files/changes are mechanical const-ifications accomplished by + regenerating the C files in features/. + + This also required manually updating mips-linux-tdep.h, s390-linux-tdep.h, + nios2-tdep.h, s390-tdep.h, arch/ppc-linux-tdesc.h, arch/ppc-linux-common.c, + and rs6000-tdep.c. + + Patch tested against the sourceware trybot, and fully regression tested against + our (Red Hat's) internal test infrastructure on Rawhide aarch64, s390x, x86_64, + and powerpcle. + + With this patch, I can finally enable LTO in our GDB package builds. [Tested + with a rawhide scratch build containing this patch.] + + Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395 + +diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c +--- a/gdb/arch/ppc-linux-common.c ++++ b/gdb/arch/ppc-linux-common.c +@@ -46,7 +46,7 @@ ppc_linux_has_isa205 (CORE_ADDR hwcap) + const struct target_desc * + ppc_linux_match_description (struct ppc_linux_features features) + { +- struct target_desc *tdesc = NULL; ++ const struct target_desc *tdesc = NULL; + + if (features.wordsize == 8) + { +diff --git a/gdb/arch/ppc-linux-tdesc.h b/gdb/arch/ppc-linux-tdesc.h +--- a/gdb/arch/ppc-linux-tdesc.h ++++ b/gdb/arch/ppc-linux-tdesc.h +@@ -22,25 +22,25 @@ + + struct target_desc; + +-extern struct target_desc *tdesc_powerpc_32l; +-extern struct target_desc *tdesc_powerpc_altivec32l; +-extern struct target_desc *tdesc_powerpc_vsx32l; +-extern struct target_desc *tdesc_powerpc_isa205_32l; +-extern struct target_desc *tdesc_powerpc_isa205_altivec32l; +-extern struct target_desc *tdesc_powerpc_isa205_vsx32l; +-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l; +-extern struct target_desc *tdesc_powerpc_isa207_vsx32l; +-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx32l; +-extern struct target_desc *tdesc_powerpc_e500l; +- +-extern struct target_desc *tdesc_powerpc_64l; +-extern struct target_desc *tdesc_powerpc_altivec64l; +-extern struct target_desc *tdesc_powerpc_vsx64l; +-extern struct target_desc *tdesc_powerpc_isa205_64l; +-extern struct target_desc *tdesc_powerpc_isa205_altivec64l; +-extern struct target_desc *tdesc_powerpc_isa205_vsx64l; +-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l; +-extern struct target_desc *tdesc_powerpc_isa207_vsx64l; +-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx64l; ++extern const struct target_desc *tdesc_powerpc_32l; ++extern const struct target_desc *tdesc_powerpc_altivec32l; ++extern const struct target_desc *tdesc_powerpc_vsx32l; ++extern const struct target_desc *tdesc_powerpc_isa205_32l; ++extern const struct target_desc *tdesc_powerpc_isa205_altivec32l; ++extern const struct target_desc *tdesc_powerpc_isa205_vsx32l; ++extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l; ++extern const struct target_desc *tdesc_powerpc_isa207_vsx32l; ++extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx32l; ++extern const struct target_desc *tdesc_powerpc_e500l; ++ ++extern const struct target_desc *tdesc_powerpc_64l; ++extern const struct target_desc *tdesc_powerpc_altivec64l; ++extern const struct target_desc *tdesc_powerpc_vsx64l; ++extern const struct target_desc *tdesc_powerpc_isa205_64l; ++extern const struct target_desc *tdesc_powerpc_isa205_altivec64l; ++extern const struct target_desc *tdesc_powerpc_isa205_vsx64l; ++extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l; ++extern const struct target_desc *tdesc_powerpc_isa207_vsx64l; ++extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l; + + #endif /* ARCH_PPC_LINUX_TDESC_H */ +diff --git a/gdb/features/Makefile b/gdb/features/Makefile +--- a/gdb/features/Makefile ++++ b/gdb/features/Makefile +@@ -74,6 +74,7 @@ mips-dsp-expedite = r29,pc + mips64-expedite = r29,pc + mips64-dsp-expedite = r29,pc + nios2-linux-expedite = sp,pc ++or1k-expedite = r1,npc + powerpc-expedite = r1,pc + s390-linux32-expedite = r14,r15,pswa + s390-linux32v1-expedite = r14,r15,pswa +@@ -108,6 +109,7 @@ XMLTOC = \ + nds32.xml \ + nios2.xml \ + or1k.xml \ ++ or1k-linux.xml \ + rs6000/powerpc-32.xml \ + rs6000/powerpc-32l.xml \ + rs6000/powerpc-403.xml \ +@@ -164,6 +166,8 @@ XMLTOC = \ + s390x-vx-linux64.xml \ + s390-gs-linux64.xml \ + s390x-gs-linux64.xml \ ++ sparc/sparc32-solaris.xml \ ++ sparc/sparc64-solaris.xml \ + z80.xml + + TDESC_CFILES = $(patsubst %.xml,%.c,$(XMLTOC)) +diff --git a/gdb/features/microblaze-with-stack-protect.c b/gdb/features/microblaze-with-stack-protect.c +--- a/gdb/features/microblaze-with-stack-protect.c ++++ b/gdb/features/microblaze-with-stack-protect.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_microblaze_with_stack_protect; ++const struct target_desc *tdesc_microblaze_with_stack_protect; + static void + initialize_tdesc_microblaze_with_stack_protect (void) + { +diff --git a/gdb/features/microblaze.c b/gdb/features/microblaze.c +--- a/gdb/features/microblaze.c ++++ b/gdb/features/microblaze.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_microblaze; ++const struct target_desc *tdesc_microblaze; + static void + initialize_tdesc_microblaze (void) + { +diff --git a/gdb/features/mips-dsp-linux.c b/gdb/features/mips-dsp-linux.c +--- a/gdb/features/mips-dsp-linux.c ++++ b/gdb/features/mips-dsp-linux.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_mips_dsp_linux; ++const struct target_desc *tdesc_mips_dsp_linux; + static void + initialize_tdesc_mips_dsp_linux (void) + { +diff --git a/gdb/features/mips-linux.c b/gdb/features/mips-linux.c +--- a/gdb/features/mips-linux.c ++++ b/gdb/features/mips-linux.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_mips_linux; ++const struct target_desc *tdesc_mips_linux; + static void + initialize_tdesc_mips_linux (void) + { +diff --git a/gdb/features/mips64-dsp-linux.c b/gdb/features/mips64-dsp-linux.c +--- a/gdb/features/mips64-dsp-linux.c ++++ b/gdb/features/mips64-dsp-linux.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_mips64_dsp_linux; ++const struct target_desc *tdesc_mips64_dsp_linux; + static void + initialize_tdesc_mips64_dsp_linux (void) + { +diff --git a/gdb/features/mips64-linux.c b/gdb/features/mips64-linux.c +--- a/gdb/features/mips64-linux.c ++++ b/gdb/features/mips64-linux.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_mips64_linux; ++const struct target_desc *tdesc_mips64_linux; + static void + initialize_tdesc_mips64_linux (void) + { +diff --git a/gdb/features/nds32.c b/gdb/features/nds32.c +--- a/gdb/features/nds32.c ++++ b/gdb/features/nds32.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_nds32; ++const struct target_desc *tdesc_nds32; + static void + initialize_tdesc_nds32 (void) + { +diff --git a/gdb/features/nios2.c b/gdb/features/nios2.c +--- a/gdb/features/nios2.c ++++ b/gdb/features/nios2.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_nios2; ++const struct target_desc *tdesc_nios2; + static void + initialize_tdesc_nios2 (void) + { +diff --git a/gdb/features/or1k-linux.c b/gdb/features/or1k-linux.c +--- a/gdb/features/or1k-linux.c ++++ b/gdb/features/or1k-linux.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_or1k_linux; ++const struct target_desc *tdesc_or1k_linux; + static void + initialize_tdesc_or1k_linux (void) + { +diff --git a/gdb/features/or1k.c b/gdb/features/or1k.c +--- a/gdb/features/or1k.c ++++ b/gdb/features/or1k.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_or1k; ++const struct target_desc *tdesc_or1k; + static void + initialize_tdesc_or1k (void) + { +diff --git a/gdb/features/rs6000/powerpc-32.c b/gdb/features/rs6000/powerpc-32.c +--- a/gdb/features/rs6000/powerpc-32.c ++++ b/gdb/features/rs6000/powerpc-32.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_32; ++const struct target_desc *tdesc_powerpc_32; + static void + initialize_tdesc_powerpc_32 (void) + { +diff --git a/gdb/features/rs6000/powerpc-32l.c b/gdb/features/rs6000/powerpc-32l.c +--- a/gdb/features/rs6000/powerpc-32l.c ++++ b/gdb/features/rs6000/powerpc-32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_32l; ++const struct target_desc *tdesc_powerpc_32l; + static void + initialize_tdesc_powerpc_32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-403.c b/gdb/features/rs6000/powerpc-403.c +--- a/gdb/features/rs6000/powerpc-403.c ++++ b/gdb/features/rs6000/powerpc-403.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_403; ++const struct target_desc *tdesc_powerpc_403; + static void + initialize_tdesc_powerpc_403 (void) + { +diff --git a/gdb/features/rs6000/powerpc-403gc.c b/gdb/features/rs6000/powerpc-403gc.c +--- a/gdb/features/rs6000/powerpc-403gc.c ++++ b/gdb/features/rs6000/powerpc-403gc.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_403gc; ++const struct target_desc *tdesc_powerpc_403gc; + static void + initialize_tdesc_powerpc_403gc (void) + { +diff --git a/gdb/features/rs6000/powerpc-405.c b/gdb/features/rs6000/powerpc-405.c +--- a/gdb/features/rs6000/powerpc-405.c ++++ b/gdb/features/rs6000/powerpc-405.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_405; ++const struct target_desc *tdesc_powerpc_405; + static void + initialize_tdesc_powerpc_405 (void) + { +diff --git a/gdb/features/rs6000/powerpc-505.c b/gdb/features/rs6000/powerpc-505.c +--- a/gdb/features/rs6000/powerpc-505.c ++++ b/gdb/features/rs6000/powerpc-505.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_505; ++const struct target_desc *tdesc_powerpc_505; + static void + initialize_tdesc_powerpc_505 (void) + { +diff --git a/gdb/features/rs6000/powerpc-601.c b/gdb/features/rs6000/powerpc-601.c +--- a/gdb/features/rs6000/powerpc-601.c ++++ b/gdb/features/rs6000/powerpc-601.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_601; ++const struct target_desc *tdesc_powerpc_601; + static void + initialize_tdesc_powerpc_601 (void) + { +diff --git a/gdb/features/rs6000/powerpc-602.c b/gdb/features/rs6000/powerpc-602.c +--- a/gdb/features/rs6000/powerpc-602.c ++++ b/gdb/features/rs6000/powerpc-602.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_602; ++const struct target_desc *tdesc_powerpc_602; + static void + initialize_tdesc_powerpc_602 (void) + { +diff --git a/gdb/features/rs6000/powerpc-603.c b/gdb/features/rs6000/powerpc-603.c +--- a/gdb/features/rs6000/powerpc-603.c ++++ b/gdb/features/rs6000/powerpc-603.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_603; ++const struct target_desc *tdesc_powerpc_603; + static void + initialize_tdesc_powerpc_603 (void) + { +diff --git a/gdb/features/rs6000/powerpc-604.c b/gdb/features/rs6000/powerpc-604.c +--- a/gdb/features/rs6000/powerpc-604.c ++++ b/gdb/features/rs6000/powerpc-604.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_604; ++const struct target_desc *tdesc_powerpc_604; + static void + initialize_tdesc_powerpc_604 (void) + { +diff --git a/gdb/features/rs6000/powerpc-64.c b/gdb/features/rs6000/powerpc-64.c +--- a/gdb/features/rs6000/powerpc-64.c ++++ b/gdb/features/rs6000/powerpc-64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_64; ++const struct target_desc *tdesc_powerpc_64; + static void + initialize_tdesc_powerpc_64 (void) + { +diff --git a/gdb/features/rs6000/powerpc-64l.c b/gdb/features/rs6000/powerpc-64l.c +--- a/gdb/features/rs6000/powerpc-64l.c ++++ b/gdb/features/rs6000/powerpc-64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_64l; ++const struct target_desc *tdesc_powerpc_64l; + static void + initialize_tdesc_powerpc_64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-7400.c b/gdb/features/rs6000/powerpc-7400.c +--- a/gdb/features/rs6000/powerpc-7400.c ++++ b/gdb/features/rs6000/powerpc-7400.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_7400; ++const struct target_desc *tdesc_powerpc_7400; + static void + initialize_tdesc_powerpc_7400 (void) + { +diff --git a/gdb/features/rs6000/powerpc-750.c b/gdb/features/rs6000/powerpc-750.c +--- a/gdb/features/rs6000/powerpc-750.c ++++ b/gdb/features/rs6000/powerpc-750.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_750; ++const struct target_desc *tdesc_powerpc_750; + static void + initialize_tdesc_powerpc_750 (void) + { +diff --git a/gdb/features/rs6000/powerpc-860.c b/gdb/features/rs6000/powerpc-860.c +--- a/gdb/features/rs6000/powerpc-860.c ++++ b/gdb/features/rs6000/powerpc-860.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_860; ++const struct target_desc *tdesc_powerpc_860; + static void + initialize_tdesc_powerpc_860 (void) + { +diff --git a/gdb/features/rs6000/powerpc-altivec32.c b/gdb/features/rs6000/powerpc-altivec32.c +--- a/gdb/features/rs6000/powerpc-altivec32.c ++++ b/gdb/features/rs6000/powerpc-altivec32.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_altivec32; ++const struct target_desc *tdesc_powerpc_altivec32; + static void + initialize_tdesc_powerpc_altivec32 (void) + { +diff --git a/gdb/features/rs6000/powerpc-altivec32l.c b/gdb/features/rs6000/powerpc-altivec32l.c +--- a/gdb/features/rs6000/powerpc-altivec32l.c ++++ b/gdb/features/rs6000/powerpc-altivec32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_altivec32l; ++const struct target_desc *tdesc_powerpc_altivec32l; + static void + initialize_tdesc_powerpc_altivec32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-altivec64.c b/gdb/features/rs6000/powerpc-altivec64.c +--- a/gdb/features/rs6000/powerpc-altivec64.c ++++ b/gdb/features/rs6000/powerpc-altivec64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_altivec64; ++const struct target_desc *tdesc_powerpc_altivec64; + static void + initialize_tdesc_powerpc_altivec64 (void) + { +diff --git a/gdb/features/rs6000/powerpc-altivec64l.c b/gdb/features/rs6000/powerpc-altivec64l.c +--- a/gdb/features/rs6000/powerpc-altivec64l.c ++++ b/gdb/features/rs6000/powerpc-altivec64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_altivec64l; ++const struct target_desc *tdesc_powerpc_altivec64l; + static void + initialize_tdesc_powerpc_altivec64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-e500.c b/gdb/features/rs6000/powerpc-e500.c +--- a/gdb/features/rs6000/powerpc-e500.c ++++ b/gdb/features/rs6000/powerpc-e500.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_e500; ++const struct target_desc *tdesc_powerpc_e500; + static void + initialize_tdesc_powerpc_e500 (void) + { +diff --git a/gdb/features/rs6000/powerpc-e500l.c b/gdb/features/rs6000/powerpc-e500l.c +--- a/gdb/features/rs6000/powerpc-e500l.c ++++ b/gdb/features/rs6000/powerpc-e500l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_e500l; ++const struct target_desc *tdesc_powerpc_e500l; + static void + initialize_tdesc_powerpc_e500l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-32l.c b/gdb/features/rs6000/powerpc-isa205-32l.c +--- a/gdb/features/rs6000/powerpc-isa205-32l.c ++++ b/gdb/features/rs6000/powerpc-isa205-32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_32l; ++const struct target_desc *tdesc_powerpc_isa205_32l; + static void + initialize_tdesc_powerpc_isa205_32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-64l.c b/gdb/features/rs6000/powerpc-isa205-64l.c +--- a/gdb/features/rs6000/powerpc-isa205-64l.c ++++ b/gdb/features/rs6000/powerpc-isa205-64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_64l; ++const struct target_desc *tdesc_powerpc_isa205_64l; + static void + initialize_tdesc_powerpc_isa205_64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-altivec32l.c b/gdb/features/rs6000/powerpc-isa205-altivec32l.c +--- a/gdb/features/rs6000/powerpc-isa205-altivec32l.c ++++ b/gdb/features/rs6000/powerpc-isa205-altivec32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_altivec32l; ++const struct target_desc *tdesc_powerpc_isa205_altivec32l; + static void + initialize_tdesc_powerpc_isa205_altivec32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-altivec64l.c b/gdb/features/rs6000/powerpc-isa205-altivec64l.c +--- a/gdb/features/rs6000/powerpc-isa205-altivec64l.c ++++ b/gdb/features/rs6000/powerpc-isa205-altivec64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_altivec64l; ++const struct target_desc *tdesc_powerpc_isa205_altivec64l; + static void + initialize_tdesc_powerpc_isa205_altivec64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c +--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c ++++ b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l; ++const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l; + static void + initialize_tdesc_powerpc_isa205_ppr_dscr_vsx32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c +--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c ++++ b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l; ++const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l; + static void + initialize_tdesc_powerpc_isa205_ppr_dscr_vsx64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-vsx32l.c +--- a/gdb/features/rs6000/powerpc-isa205-vsx32l.c ++++ b/gdb/features/rs6000/powerpc-isa205-vsx32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_vsx32l; ++const struct target_desc *tdesc_powerpc_isa205_vsx32l; + static void + initialize_tdesc_powerpc_isa205_vsx32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa205-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-vsx64l.c +--- a/gdb/features/rs6000/powerpc-isa205-vsx64l.c ++++ b/gdb/features/rs6000/powerpc-isa205-vsx64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa205_vsx64l; ++const struct target_desc *tdesc_powerpc_isa205_vsx64l; + static void + initialize_tdesc_powerpc_isa205_vsx64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c +--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c ++++ b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa207_htm_vsx32l; ++const struct target_desc *tdesc_powerpc_isa207_htm_vsx32l; + static void + initialize_tdesc_powerpc_isa207_htm_vsx32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c +--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c ++++ b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa207_htm_vsx64l; ++const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l; + static void + initialize_tdesc_powerpc_isa207_htm_vsx64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa207-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-vsx32l.c +--- a/gdb/features/rs6000/powerpc-isa207-vsx32l.c ++++ b/gdb/features/rs6000/powerpc-isa207-vsx32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa207_vsx32l; ++const struct target_desc *tdesc_powerpc_isa207_vsx32l; + static void + initialize_tdesc_powerpc_isa207_vsx32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-isa207-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-vsx64l.c +--- a/gdb/features/rs6000/powerpc-isa207-vsx64l.c ++++ b/gdb/features/rs6000/powerpc-isa207-vsx64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_isa207_vsx64l; ++const struct target_desc *tdesc_powerpc_isa207_vsx64l; + static void + initialize_tdesc_powerpc_isa207_vsx64l (void) + { +diff --git a/gdb/features/rs6000/powerpc-vsx32.c b/gdb/features/rs6000/powerpc-vsx32.c +--- a/gdb/features/rs6000/powerpc-vsx32.c ++++ b/gdb/features/rs6000/powerpc-vsx32.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_vsx32; ++const struct target_desc *tdesc_powerpc_vsx32; + static void + initialize_tdesc_powerpc_vsx32 (void) + { +diff --git a/gdb/features/rs6000/powerpc-vsx32l.c b/gdb/features/rs6000/powerpc-vsx32l.c +--- a/gdb/features/rs6000/powerpc-vsx32l.c ++++ b/gdb/features/rs6000/powerpc-vsx32l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_vsx32l; ++const struct target_desc *tdesc_powerpc_vsx32l; + static void + initialize_tdesc_powerpc_vsx32l (void) + { +diff --git a/gdb/features/rs6000/powerpc-vsx64.c b/gdb/features/rs6000/powerpc-vsx64.c +--- a/gdb/features/rs6000/powerpc-vsx64.c ++++ b/gdb/features/rs6000/powerpc-vsx64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_vsx64; ++const struct target_desc *tdesc_powerpc_vsx64; + static void + initialize_tdesc_powerpc_vsx64 (void) + { +diff --git a/gdb/features/rs6000/powerpc-vsx64l.c b/gdb/features/rs6000/powerpc-vsx64l.c +--- a/gdb/features/rs6000/powerpc-vsx64l.c ++++ b/gdb/features/rs6000/powerpc-vsx64l.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_powerpc_vsx64l; ++const struct target_desc *tdesc_powerpc_vsx64l; + static void + initialize_tdesc_powerpc_vsx64l (void) + { +diff --git a/gdb/features/rs6000/rs6000.c b/gdb/features/rs6000/rs6000.c +--- a/gdb/features/rs6000/rs6000.c ++++ b/gdb/features/rs6000/rs6000.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_rs6000; ++const struct target_desc *tdesc_rs6000; + static void + initialize_tdesc_rs6000 (void) + { +diff --git a/gdb/features/rx.c b/gdb/features/rx.c +--- a/gdb/features/rx.c ++++ b/gdb/features/rx.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_rx; ++const struct target_desc *tdesc_rx; + static void + initialize_tdesc_rx (void) + { +diff --git a/gdb/features/s390-gs-linux64.c b/gdb/features/s390-gs-linux64.c +--- a/gdb/features/s390-gs-linux64.c ++++ b/gdb/features/s390-gs-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_gs_linux64; ++const struct target_desc *tdesc_s390_gs_linux64; + static void + initialize_tdesc_s390_gs_linux64 (void) + { +diff --git a/gdb/features/s390-linux32.c b/gdb/features/s390-linux32.c +--- a/gdb/features/s390-linux32.c ++++ b/gdb/features/s390-linux32.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_linux32; ++const struct target_desc *tdesc_s390_linux32; + static void + initialize_tdesc_s390_linux32 (void) + { +diff --git a/gdb/features/s390-linux32v1.c b/gdb/features/s390-linux32v1.c +--- a/gdb/features/s390-linux32v1.c ++++ b/gdb/features/s390-linux32v1.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_linux32v1; ++const struct target_desc *tdesc_s390_linux32v1; + static void + initialize_tdesc_s390_linux32v1 (void) + { +diff --git a/gdb/features/s390-linux32v2.c b/gdb/features/s390-linux32v2.c +--- a/gdb/features/s390-linux32v2.c ++++ b/gdb/features/s390-linux32v2.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_linux32v2; ++const struct target_desc *tdesc_s390_linux32v2; + static void + initialize_tdesc_s390_linux32v2 (void) + { +diff --git a/gdb/features/s390-linux64.c b/gdb/features/s390-linux64.c +--- a/gdb/features/s390-linux64.c ++++ b/gdb/features/s390-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_linux64; ++const struct target_desc *tdesc_s390_linux64; + static void + initialize_tdesc_s390_linux64 (void) + { +diff --git a/gdb/features/s390-linux64v1.c b/gdb/features/s390-linux64v1.c +--- a/gdb/features/s390-linux64v1.c ++++ b/gdb/features/s390-linux64v1.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_linux64v1; ++const struct target_desc *tdesc_s390_linux64v1; + static void + initialize_tdesc_s390_linux64v1 (void) + { +diff --git a/gdb/features/s390-linux64v2.c b/gdb/features/s390-linux64v2.c +--- a/gdb/features/s390-linux64v2.c ++++ b/gdb/features/s390-linux64v2.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_linux64v2; ++const struct target_desc *tdesc_s390_linux64v2; + static void + initialize_tdesc_s390_linux64v2 (void) + { +diff --git a/gdb/features/s390-te-linux64.c b/gdb/features/s390-te-linux64.c +--- a/gdb/features/s390-te-linux64.c ++++ b/gdb/features/s390-te-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_te_linux64; ++const struct target_desc *tdesc_s390_te_linux64; + static void + initialize_tdesc_s390_te_linux64 (void) + { +diff --git a/gdb/features/s390-tevx-linux64.c b/gdb/features/s390-tevx-linux64.c +--- a/gdb/features/s390-tevx-linux64.c ++++ b/gdb/features/s390-tevx-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_tevx_linux64; ++const struct target_desc *tdesc_s390_tevx_linux64; + static void + initialize_tdesc_s390_tevx_linux64 (void) + { +diff --git a/gdb/features/s390-vx-linux64.c b/gdb/features/s390-vx-linux64.c +--- a/gdb/features/s390-vx-linux64.c ++++ b/gdb/features/s390-vx-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390_vx_linux64; ++const struct target_desc *tdesc_s390_vx_linux64; + static void + initialize_tdesc_s390_vx_linux64 (void) + { +diff --git a/gdb/features/s390x-gs-linux64.c b/gdb/features/s390x-gs-linux64.c +--- a/gdb/features/s390x-gs-linux64.c ++++ b/gdb/features/s390x-gs-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390x_gs_linux64; ++const struct target_desc *tdesc_s390x_gs_linux64; + static void + initialize_tdesc_s390x_gs_linux64 (void) + { +diff --git a/gdb/features/s390x-linux64.c b/gdb/features/s390x-linux64.c +--- a/gdb/features/s390x-linux64.c ++++ b/gdb/features/s390x-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390x_linux64; ++const struct target_desc *tdesc_s390x_linux64; + static void + initialize_tdesc_s390x_linux64 (void) + { +diff --git a/gdb/features/s390x-linux64v1.c b/gdb/features/s390x-linux64v1.c +--- a/gdb/features/s390x-linux64v1.c ++++ b/gdb/features/s390x-linux64v1.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390x_linux64v1; ++const struct target_desc *tdesc_s390x_linux64v1; + static void + initialize_tdesc_s390x_linux64v1 (void) + { +diff --git a/gdb/features/s390x-linux64v2.c b/gdb/features/s390x-linux64v2.c +--- a/gdb/features/s390x-linux64v2.c ++++ b/gdb/features/s390x-linux64v2.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390x_linux64v2; ++const struct target_desc *tdesc_s390x_linux64v2; + static void + initialize_tdesc_s390x_linux64v2 (void) + { +diff --git a/gdb/features/s390x-te-linux64.c b/gdb/features/s390x-te-linux64.c +--- a/gdb/features/s390x-te-linux64.c ++++ b/gdb/features/s390x-te-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390x_te_linux64; ++const struct target_desc *tdesc_s390x_te_linux64; + static void + initialize_tdesc_s390x_te_linux64 (void) + { +diff --git a/gdb/features/s390x-tevx-linux64.c b/gdb/features/s390x-tevx-linux64.c +--- a/gdb/features/s390x-tevx-linux64.c ++++ b/gdb/features/s390x-tevx-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390x_tevx_linux64; ++const struct target_desc *tdesc_s390x_tevx_linux64; + static void + initialize_tdesc_s390x_tevx_linux64 (void) + { +diff --git a/gdb/features/s390x-vx-linux64.c b/gdb/features/s390x-vx-linux64.c +--- a/gdb/features/s390x-vx-linux64.c ++++ b/gdb/features/s390x-vx-linux64.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_s390x_vx_linux64; ++const struct target_desc *tdesc_s390x_vx_linux64; + static void + initialize_tdesc_s390x_vx_linux64 (void) + { +diff --git a/gdb/features/sparc/sparc32-solaris.c b/gdb/features/sparc/sparc32-solaris.c +--- a/gdb/features/sparc/sparc32-solaris.c ++++ b/gdb/features/sparc/sparc32-solaris.c +@@ -5,18 +5,18 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_sparc32_solaris; ++const struct target_desc *tdesc_sparc32_solaris; + static void + initialize_tdesc_sparc32_solaris (void) + { +- struct target_desc *result = allocate_target_description (); +- struct tdesc_feature *feature; ++ target_desc_up result = allocate_target_description (); ++ set_tdesc_architecture (result.get (), bfd_scan_arch ("sparc")); + +- set_tdesc_architecture (result, bfd_scan_arch ("sparc")); ++ set_tdesc_osabi (result.get (), osabi_from_tdesc_string ("Solaris")); + +- set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris")); ++ struct tdesc_feature *feature; + +- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cpu"); ++ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cpu"); + tdesc_create_reg (feature, "g0", 0, 1, NULL, 32, "uint32"); + tdesc_create_reg (feature, "g1", 1, 1, NULL, 32, "uint32"); + tdesc_create_reg (feature, "g2", 2, 1, NULL, 32, "uint32"); +@@ -50,7 +50,7 @@ initialize_tdesc_sparc32_solaris (void) + tdesc_create_reg (feature, "fp", 30, 1, NULL, 32, "uint32"); + tdesc_create_reg (feature, "i7", 31, 1, NULL, 32, "uint32"); + +- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cp0"); ++ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cp0"); + tdesc_create_reg (feature, "y", 64, 1, NULL, 32, "uint32"); + tdesc_create_reg (feature, "psr", 65, 1, NULL, 32, "uint32"); + tdesc_create_reg (feature, "wim", 66, 1, NULL, 32, "uint32"); +@@ -60,7 +60,7 @@ initialize_tdesc_sparc32_solaris (void) + tdesc_create_reg (feature, "fsr", 70, 1, NULL, 32, "uint32"); + tdesc_create_reg (feature, "csr", 71, 1, NULL, 32, "uint32"); + +- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.fpu"); ++ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.fpu"); + tdesc_create_reg (feature, "f0", 32, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f1", 33, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f2", 34, 1, NULL, 32, "ieee_single"); +@@ -94,5 +94,5 @@ initialize_tdesc_sparc32_solaris (void) + tdesc_create_reg (feature, "f30", 62, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f31", 63, 1, NULL, 32, "ieee_single"); + +- tdesc_sparc_solaris = result; ++ tdesc_sparc32_solaris = result.release (); + } +diff --git a/gdb/features/sparc/sparc64-solaris.c b/gdb/features/sparc/sparc64-solaris.c +--- a/gdb/features/sparc/sparc64-solaris.c ++++ b/gdb/features/sparc/sparc64-solaris.c +@@ -5,18 +5,18 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_sparc64_solaris; ++const struct target_desc *tdesc_sparc64_solaris; + static void + initialize_tdesc_sparc64_solaris (void) + { +- struct target_desc *result = allocate_target_description (); +- struct tdesc_feature *feature; ++ target_desc_up result = allocate_target_description (); ++ set_tdesc_architecture (result.get (), bfd_scan_arch ("sparc:v9")); + +- set_tdesc_architecture (result, bfd_scan_arch ("sparc")); ++ set_tdesc_osabi (result.get (), osabi_from_tdesc_string ("Solaris")); + +- set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris")); ++ struct tdesc_feature *feature; + +- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cpu"); ++ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cpu"); + tdesc_create_reg (feature, "g0", 0, 1, NULL, 64, "uint64"); + tdesc_create_reg (feature, "g1", 1, 1, NULL, 64, "uint64"); + tdesc_create_reg (feature, "g2", 2, 1, NULL, 64, "uint64"); +@@ -47,18 +47,18 @@ initialize_tdesc_sparc64_solaris (void) + tdesc_create_reg (feature, "i3", 27, 1, NULL, 64, "uint64"); + tdesc_create_reg (feature, "i4", 28, 1, NULL, 64, "uint64"); + tdesc_create_reg (feature, "i5", 29, 1, NULL, 64, "uint64"); +- tdesc_create_reg (feature, "fp", 30, 1, NULL, 32, "uint64"); ++ tdesc_create_reg (feature, "fp", 30, 1, NULL, 64, "uint64"); + tdesc_create_reg (feature, "i7", 31, 1, NULL, 64, "uint64"); + +- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cp0"); ++ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cp0"); + tdesc_create_reg (feature, "pc", 80, 1, NULL, 64, "code_ptr"); + tdesc_create_reg (feature, "npc", 81, 1, NULL, 64, "code_ptr"); + tdesc_create_reg (feature, "state", 82, 1, NULL, 64, "uint64"); +- tdesc_create_reg (feature, "fsr", 83, 1, NULL, 32, "ieee_single"); +- tdesc_create_reg (feature, "fprs", 84, 1, NULL, 32, "ieee_single"); ++ tdesc_create_reg (feature, "fsr", 83, 1, NULL, 64, "uint64"); ++ tdesc_create_reg (feature, "fprs", 84, 1, NULL, 64, "uint64"); + tdesc_create_reg (feature, "y", 85, 1, NULL, 64, "uint64"); + +- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.fpu"); ++ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.fpu"); + tdesc_create_reg (feature, "f0", 32, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f1", 33, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f2", 34, 1, NULL, 32, "ieee_single"); +@@ -108,5 +108,5 @@ initialize_tdesc_sparc64_solaris (void) + tdesc_create_reg (feature, "f60", 78, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f62", 79, 1, NULL, 64, "ieee_double"); + +- tdesc_sparc64_solaris = result; ++ tdesc_sparc64_solaris = result.release (); + } +diff --git a/gdb/features/z80.c b/gdb/features/z80.c +--- a/gdb/features/z80.c ++++ b/gdb/features/z80.c +@@ -5,7 +5,7 @@ + #include "osabi.h" + #include "target-descriptions.h" + +-struct target_desc *tdesc_z80; ++const struct target_desc *tdesc_z80; + static void + initialize_tdesc_z80 (void) + { +diff --git a/gdb/mips-linux-tdep.h b/gdb/mips-linux-tdep.h +--- a/gdb/mips-linux-tdep.h ++++ b/gdb/mips-linux-tdep.h +@@ -108,9 +108,9 @@ enum { + int mips_linux_restart_reg_p (struct gdbarch *gdbarch); + + /* Target descriptions. */ +-extern struct target_desc *tdesc_mips_linux; +-extern struct target_desc *tdesc_mips64_linux; +-extern struct target_desc *tdesc_mips_dsp_linux; +-extern struct target_desc *tdesc_mips64_dsp_linux; ++extern const struct target_desc *tdesc_mips_linux; ++extern const struct target_desc *tdesc_mips64_linux; ++extern const struct target_desc *tdesc_mips_dsp_linux; ++extern const struct target_desc *tdesc_mips64_dsp_linux; + + #endif /* MIPS_LINUX_TDEP_H */ +diff --git a/gdb/nios2-tdep.h b/gdb/nios2-tdep.h +--- a/gdb/nios2-tdep.h ++++ b/gdb/nios2-tdep.h +@@ -84,7 +84,7 @@ struct nios2_gdbarch_tdep : gdbarch_tdep + int jb_pc = 0; + }; + +-extern struct target_desc *tdesc_nios2_linux; +-extern struct target_desc *tdesc_nios2; ++extern const struct target_desc *tdesc_nios2_linux; ++extern const struct target_desc *tdesc_nios2; + + #endif /* NIOS2_TDEP_H */ +diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c +--- a/gdb/rs6000-tdep.c ++++ b/gdb/rs6000-tdep.c +@@ -3466,7 +3466,7 @@ struct ppc_variant + unsigned long mach; + + /* Target description for this variant. */ +- struct target_desc **tdesc; ++ const struct target_desc **tdesc; + }; + + static struct ppc_variant variants[] = +diff --git a/gdb/s390-linux-tdep.h b/gdb/s390-linux-tdep.h +--- a/gdb/s390-linux-tdep.h ++++ b/gdb/s390-linux-tdep.h +@@ -48,20 +48,20 @@ extern const struct regset s390_gs_regset; + extern const struct regset s390_gsbc_regset; + + /* GNU/Linux target descriptions. */ +-extern struct target_desc *tdesc_s390_linux32v1; +-extern struct target_desc *tdesc_s390_linux32v2; +-extern struct target_desc *tdesc_s390_linux64; +-extern struct target_desc *tdesc_s390_linux64v1; +-extern struct target_desc *tdesc_s390_linux64v2; +-extern struct target_desc *tdesc_s390_te_linux64; +-extern struct target_desc *tdesc_s390_vx_linux64; +-extern struct target_desc *tdesc_s390_tevx_linux64; +-extern struct target_desc *tdesc_s390_gs_linux64; +-extern struct target_desc *tdesc_s390x_linux64v1; +-extern struct target_desc *tdesc_s390x_linux64v2; +-extern struct target_desc *tdesc_s390x_te_linux64; +-extern struct target_desc *tdesc_s390x_vx_linux64; +-extern struct target_desc *tdesc_s390x_tevx_linux64; +-extern struct target_desc *tdesc_s390x_gs_linux64; ++extern const struct target_desc *tdesc_s390_linux32v1; ++extern const struct target_desc *tdesc_s390_linux32v2; ++extern const struct target_desc *tdesc_s390_linux64; ++extern const struct target_desc *tdesc_s390_linux64v1; ++extern const struct target_desc *tdesc_s390_linux64v2; ++extern const struct target_desc *tdesc_s390_te_linux64; ++extern const struct target_desc *tdesc_s390_vx_linux64; ++extern const struct target_desc *tdesc_s390_tevx_linux64; ++extern const struct target_desc *tdesc_s390_gs_linux64; ++extern const struct target_desc *tdesc_s390x_linux64v1; ++extern const struct target_desc *tdesc_s390x_linux64v2; ++extern const struct target_desc *tdesc_s390x_te_linux64; ++extern const struct target_desc *tdesc_s390x_vx_linux64; ++extern const struct target_desc *tdesc_s390x_tevx_linux64; ++extern const struct target_desc *tdesc_s390x_gs_linux64; + + #endif /* S390_LINUX_TDEP_H */ +diff --git a/gdb/s390-tdep.h b/gdb/s390-tdep.h +--- a/gdb/s390-tdep.h ++++ b/gdb/s390-tdep.h +@@ -317,7 +317,7 @@ extern struct value *s390_trad_frame_prev_register + (struct frame_info *this_frame, struct trad_frame_saved_reg saved_regs[], + int regnum); + +-extern struct target_desc *tdesc_s390_linux32; +-extern struct target_desc *tdesc_s390x_linux64; ++extern const struct target_desc *tdesc_s390_linux32; ++extern const struct target_desc *tdesc_s390x_linux64; + + #endif /* S390_TDEP_H */ +diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c +--- a/gdb/target-descriptions.c ++++ b/gdb/target-descriptions.c +@@ -1367,7 +1367,7 @@ class print_c_tdesc : public tdesc_element_visitor + printf_filtered ("#include \"target-descriptions.h\"\n"); + printf_filtered ("\n"); + +- printf_filtered ("struct target_desc *tdesc_%s;\n", m_function); ++ printf_filtered ("const struct target_desc *tdesc_%s;\n", m_function); + printf_filtered ("static void\n"); + printf_filtered ("initialize_tdesc_%s (void)\n", m_function); + printf_filtered ("{\n"); diff --git a/gdb-test-bt-cfi-without-die.patch b/gdb-test-bt-cfi-without-die.patch new file mode 100644 index 0000000..6167c14 --- /dev/null +++ b/gdb-test-bt-cfi-without-die.patch @@ -0,0 +1,214 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-test-bt-cfi-without-die.patch + +;; [delayed-symfile] Test a backtrace regression on CFIs without DIE (BZ 614604). +;;=fedoratest + +http://sourceware.org/ml/archer/2010-q3/msg00028.html + +On Wed, 25 Feb 2009 00:14:29 +0100, Jan Kratochvil wrote: +> commit 6a37c2b9962258ecf9299cc34a650e64a06acaa5 +> +> There was a regression on gdb.base/savedregs.exp. +> +> quick_addrmap/require_partial_symbols should be used even for the unwind debug +> info checking as its load has been also delayed by this branch. +[...] +> --- a/gdb/dwarf2-frame.c +> +++ b/gdb/dwarf2-frame.c +[...] +> @@ -1499,6 +1500,14 @@ dwarf2_frame_find_fde (CORE_ADDR *pc) +> struct dwarf2_fde *fde; +> CORE_ADDR offset; +> +> + if (objfile->quick_addrmap) +> + { +> + if (!addrmap_find (objfile->quick_addrmap, *pc)) +> + continue; +> + } +> + /* FIXME: Read-in only .debug_frame/.eh_frame without .debug_info? */ +> + require_partial_symbols (objfile); +> + + +but this has caused a different regression (as discussed in the confcall). + +QUICK_ADDRMAP is built only from .debug_aranges. But we can have existing +built .debug_aranges for CUs in OBJFILE but still some CUs do not need to have +DWARF at all while they can feature CFIs (.eh_frame or .debug_frame). +It has been described by Daniel Jacobowitz at: + Re: [2/4] RFC: check psymtabs_addrmap before reading FDEs + http://sourceware.org/ml/gdb-patches/2010-07/msg00012.html + +Sorry for this regression by me (in that fix of a different regression). + +Fixed it the "slow way" as this branch is now obsoleted by .gdb-index. + +No regressions on {x86_64,x86_64-m32,i686}-fedora13-linux-gnu. + +Checked-in. + +Thanks, +Jan + +eb8df8566acc1ed963e3e9b77c13b9c2c3db03fb + +Test CFI is parsed even for range (function) not described by any DIE. + +https://bugzilla.redhat.com/show_bug.cgi?id=614028 + +gdb/ + * dwarf2-frame.c (dwarf2_frame_find_fde): Remove the + OBJFILE->QUICK_ADDRMAP check. New comment why. + +gdb/testsuite/ + * gdb.base/cfi-without-die.exp, gdb.base/cfi-without-die-main.c, + gdb.base/cfi-without-die-caller.c: New files. + +diff --git a/gdb/testsuite/gdb.base/cfi-without-die-caller.c b/gdb/testsuite/gdb.base/cfi-without-die-caller.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/cfi-without-die-caller.c +@@ -0,0 +1,28 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2005, 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 ++ 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 . */ ++ ++typedef int (*callback_t) (void); ++ ++int ++caller (callback_t callback) ++{ ++ /* Ensure some frame content to push away the return address. */ ++ volatile const long one = 1; ++ ++ /* Modify the return value to prevent any tail-call optimization. */ ++ return (*callback) () - one; ++} +diff --git a/gdb/testsuite/gdb.base/cfi-without-die-main.c b/gdb/testsuite/gdb.base/cfi-without-die-main.c +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/cfi-without-die-main.c +@@ -0,0 +1,32 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2005, 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 ++ 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 . */ ++ ++typedef int (*callback_t) (void); ++ ++extern int caller (callback_t callback); ++ ++int ++callback (void) ++{ ++ return 1; ++} ++ ++int ++main (void) ++{ ++ return caller (callback); ++} +diff --git a/gdb/testsuite/gdb.base/cfi-without-die.exp b/gdb/testsuite/gdb.base/cfi-without-die.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.base/cfi-without-die.exp +@@ -0,0 +1,71 @@ ++# Copyright 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, see . ++ ++# Test CFI is parsed even for range (function) not described by any DIE. ++ ++set testfile cfi-without-die ++set srcmainfile ${testfile}-main.c ++set srccallerfile ${testfile}-caller.c ++set executable ${testfile} ++set objmainfile [standard_output_file ${testfile}-main.o] ++set objcallerfile [standard_output_file ${testfile}-caller.o] ++set binfile [standard_output_file ${executable}] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srccallerfile}" ${objcallerfile} \ ++ object [list {additional_flags=-fomit-frame-pointer -fno-unwind-tables -fno-asynchronous-unwind-tables}]] != "" ++ || [gdb_compile "${srcdir}/${subdir}/${srcmainfile}" ${objmainfile} object {debug}] != "" ++ || [gdb_compile "${objmainfile} ${objcallerfile}" ${binfile} executable {}] != "" } { ++ untested ${testfile}.exp ++ return -1 ++} ++ ++clean_restart $executable ++ ++if ![runto callback] then { ++ fail "verify unwinding: Can't run to callback" ++ return 0 ++} ++set test "verify unwinding breaks without CFI" ++gdb_test_multiple "bt" $test { ++ -re " in \[?\]\[?\] .*\r\n$gdb_prompt $" { ++ # It may backtrace through some random frames even to main(). ++ pass $test ++ } ++ -re " in main .*\r\n$gdb_prompt $" { ++ fail $test ++ } ++ -re "\r\n$gdb_prompt $" { ++ pass $test ++ } ++} ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srccallerfile}" ${objcallerfile} \ ++ object [list {additional_flags=-fomit-frame-pointer -funwind-tables -fasynchronous-unwind-tables}]] != "" ++ || [gdb_compile "${srcdir}/${subdir}/${srcmainfile}" ${objmainfile} object {debug}] != "" ++ || [gdb_compile "${objmainfile} ${objcallerfile}" ${binfile} executable {}] != "" } { ++ untested ${testfile}.exp ++ return -1 ++} ++ ++clean_restart $executable ++ ++if ![runto callback] then { ++ fail "test CFI without DIEs: Can't run to callback" ++ return 0 ++} ++# #0 callback () at ... ++# #1 0x00000000004004e9 in caller () ++# #2 0x00000000004004cd in main () at ... ++gdb_test "bt" "#0 +callback \[^\r\n\]+\r\n#1 \[^\r\n\]+ in caller \[^\r\n\]+\r\n#2 \[^\r\n\]+ in main \[^\r\n\]+" "verify unwindin works for CFI without DIEs" diff --git a/gdb-test-dw2-aranges.patch b/gdb-test-dw2-aranges.patch new file mode 100644 index 0000000..458e8ba --- /dev/null +++ b/gdb-test-dw2-aranges.patch @@ -0,0 +1,220 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-test-dw2-aranges.patch + +;; [archer-tromey-delayed-symfile] New test gdb.dwarf2/dw2-aranges.exp. +;;=fedoratest + +[archer-tromey-delayed-symfile] + +commit 77fa7778a37b0d28a7e4e5235f074a10ecf1815d +Author: Jan Kratochvil +Date: Sat Aug 15 15:05:54 2009 +0200 + + Test for "handle incorrect aranges". + + readelf: + Contents of the .debug_aranges section: + + Length: 8 + Version: 2 + Offset into .debug_info: 0x0 + Pointer Size: 0 + Segment Size: 0 + + Address Length + Floating point exception + + * gdb.dwarf2/dw2-aranges.exp, gdb.dwarf2/dw2-aranges.S: New files. + +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-aranges.S b/gdb/testsuite/gdb.dwarf2/dw2-aranges.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-aranges.S +@@ -0,0 +1,140 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2004, 2007, 2008, 2009 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* Test .debug_aranges containing zero address_size. */ ++ ++/* Dummy function to provide debug information for. */ ++ ++ .text ++.Lbegin_text1: ++ .globl main ++ .type main, %function ++main: ++.Lbegin_main: ++ .int 0 ++.Lend_main: ++ .size main, .-main ++.Lend_text1: ++ ++/* Debug information */ ++ ++ .section .debug_info ++.Lcu1_begin: ++ /* CU header */ ++ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ ++.Lcu1_start: ++ .2byte 2 /* DWARF Version */ ++ .4byte .Labbrev1_begin /* Offset into abbrev section */ ++ .byte 4 /* Pointer size */ ++ ++ /* CU die */ ++ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ ++ .4byte .Lend_text1 /* DW_AT_high_pc */ ++ .4byte .Lbegin_text1 /* DW_AT_low_pc */ ++ .ascii "file1.txt\0" /* DW_AT_name */ ++ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ ++ .byte 1 /* DW_AT_language (C) */ ++ ++ /* main */ ++ .uleb128 2 /* Abbrev: DW_TAG_subprogram */ ++ .byte 1 /* DW_AT_external */ ++ .byte 1 /* DW_AT_decl_file */ ++ .byte 2 /* DW_AT_decl_line */ ++ .ascii "main\0" /* DW_AT_name */ ++ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */ ++ .4byte .Lbegin_main /* DW_AT_low_pc */ ++ .4byte .Lend_main /* DW_AT_high_pc */ ++ .byte 1 /* DW_AT_frame_base: length */ ++ .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */ ++ ++.Ltype_int: ++ .uleb128 3 /* Abbrev: DW_TAG_base_type */ ++ .ascii "int\0" /* DW_AT_name */ ++ .byte 4 /* DW_AT_byte_size */ ++ .byte 5 /* DW_AT_encoding */ ++ ++ .byte 0 /* End of children of CU */ ++ ++.Lcu1_end: ++ ++/* Abbrev table */ ++ .section .debug_abbrev ++.Labbrev1_begin: ++ .uleb128 1 /* Abbrev code */ ++ .uleb128 0x11 /* DW_TAG_compile_unit */ ++ .byte 1 /* has_children */ ++ .uleb128 0x12 /* DW_AT_high_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .uleb128 0x11 /* DW_AT_low_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0x25 /* DW_AT_producer */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0x13 /* DW_AT_language */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ .uleb128 2 /* Abbrev code */ ++ .uleb128 0x2e /* DW_TAG_subprogram */ ++ .byte 0 /* has_children */ ++ .uleb128 0x3f /* DW_AT_external */ ++ .uleb128 0xc /* DW_FORM_flag */ ++ .uleb128 0x3a /* DW_AT_decl_file */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .uleb128 0x3b /* DW_AT_decl_line */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0x49 /* DW_AT_type */ ++ .uleb128 0x13 /* DW_FORM_ref4 */ ++ .uleb128 0x11 /* DW_AT_low_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .uleb128 0x12 /* DW_AT_high_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .uleb128 0x40 /* DW_AT_frame_base */ ++ .uleb128 0xa /* DW_FORM_block1 */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ .uleb128 3 /* Abbrev code */ ++ .uleb128 0x24 /* DW_TAG_base_type */ ++ .byte 0 /* has_children */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0xb /* DW_AT_byte_size */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .uleb128 0x3e /* DW_AT_encoding */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++/* aranges table */ ++ .section .debug_aranges ++ .long .Laranges_end - 1f ++1: ++ .2byte 2 /* aranges Version */ ++ .4byte .Lcu1_begin - .debug_info /* Offset into .debug_info section */ ++ /* The GDB crasher is this zero value. */ ++ .byte 0 /* aranges address_size */ ++ .byte 0 /* aranges segment_size */ ++ ++.Laranges_end: +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp b/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-aranges.exp +@@ -0,0 +1,40 @@ ++# Copyright 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++# Test .debug_aranges containing zero address_size. ++ ++# This test can only be run on targets which support DWARF-2 and use gas. ++# For now pick a sampling of likely targets. ++if {![istarget *-*-linux*] ++ && ![istarget *-*-gnu*] ++ && ![istarget *-*-elf*] ++ && ![istarget *-*-openbsd*] ++ && ![istarget arm-*-eabi*] ++ && ![istarget powerpc-*-eabi*]} { ++ return 0 ++} ++ ++set testfile "dw2-aranges" ++set srcfile ${testfile}.S ++set binfile [standard_output_file ${testfile}] ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {nodebug}] != "" } { ++ return -1 ++} ++ ++clean_restart $testfile ++ ++# Failed gdb_load would abort the testcase execution earlier. ++pass "file loaded" diff --git a/gdb-test-ivy-bridge.patch b/gdb-test-ivy-bridge.patch new file mode 100644 index 0000000..ed82789 --- /dev/null +++ b/gdb-test-ivy-bridge.patch @@ -0,0 +1,468 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-test-ivy-bridge.patch + +;; Test GDB opcodes/ disassembly of Intel Ivy Bridge instructions (BZ 696890). +;;=fedoratest + +diff --git a/gdb/testsuite/gdb.arch/amd64-ivy-bridge.S b/gdb/testsuite/gdb.arch/amd64-ivy-bridge.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/amd64-ivy-bridge.S +@@ -0,0 +1,98 @@ ++/* Copyright 2011 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++ ++ This file is part of the gdb testsuite. */ ++ ++ .globl _start ++_start: .text ++ ++/* gas/i386/x86-64-rdrnd.s */ ++ .att_syntax prefix ++ rdrand %bx ++ rdrand %ebx ++ rdrand %rbx ++ rdrand %r8w ++ rdrand %r8d ++ rdrand %r8 ++ ++ .intel_syntax noprefix ++ rdrand bx ++ rdrand ebx ++ rdrand rbx ++ rdrand r8w ++ rdrand r8d ++ rdrand r8 ++ ++/* gas/i386/x86-64-f16c.s */ ++ .att_syntax prefix ++ vcvtph2ps %xmm4,%ymm4 ++ vcvtph2ps (%r8),%ymm8 ++ vcvtph2ps %xmm4,%xmm6 ++ vcvtph2ps (%rcx),%xmm4 ++ vcvtps2ph $0x2,%ymm4,%xmm4 ++ vcvtps2ph $0x2,%ymm8,(%r8) ++ vcvtps2ph $0x2,%xmm4,%xmm4 ++ vcvtps2ph $0x2,%xmm4,(%rcx) ++ ++ .intel_syntax noprefix ++ vcvtph2ps ymm4,xmm4 ++ vcvtph2ps ymm8,XMMWORD PTR [r8] ++ vcvtph2ps ymm4,[rcx] ++ vcvtph2ps xmm6,xmm4 ++ vcvtph2ps xmm4,QWORD PTR [rcx] ++ vcvtph2ps xmm4,[rcx] ++ vcvtps2ph xmm4,ymm4,0x2 ++ vcvtps2ph XMMWORD PTR [rcx],ymm4,0x2 ++ vcvtps2ph [rcx],ymm4,0x2 ++ vcvtps2ph xmm4,xmm4,0x2 ++ vcvtps2ph QWORD PTR [r8],xmm8,0x2 ++ vcvtps2ph [rcx],xmm4,0x2 ++ ++/* gas/i386/x86-64-fsgs.s */ ++ .att_syntax prefix ++ rdfsbase %ebx ++ rdfsbase %rbx ++ rdfsbase %r8d ++ rdfsbase %r8 ++ rdgsbase %ebx ++ rdgsbase %rbx ++ rdgsbase %r8d ++ rdgsbase %r8 ++ wrfsbase %ebx ++ wrfsbase %rbx ++ wrfsbase %r8d ++ wrfsbase %r8 ++ wrgsbase %ebx ++ wrgsbase %rbx ++ wrgsbase %r8d ++ wrgsbase %r8 ++ ++ .intel_syntax noprefix ++ rdfsbase ebx ++ rdfsbase rbx ++ rdfsbase r8d ++ rdfsbase r8 ++ rdgsbase ebx ++ rdgsbase rbx ++ rdgsbase r8d ++ rdgsbase r8 ++ wrfsbase ebx ++ wrfsbase rbx ++ wrfsbase r8d ++ wrfsbase r8 ++ wrgsbase ebx ++ wrgsbase rbx ++ wrgsbase r8d ++ wrgsbase r8 +diff --git a/gdb/testsuite/gdb.arch/amd64-ivy-bridge.exp b/gdb/testsuite/gdb.arch/amd64-ivy-bridge.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/amd64-ivy-bridge.exp +@@ -0,0 +1,170 @@ ++# Copyright 2011 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if {![istarget "x86_64-*-*"]} then { ++ return ++} ++ ++set testfile amd64-ivy-bridge ++set test compilation ++if [prepare_for_testing ${testfile}.exp ${testfile}.x ${testfile}.S [list debug "additional_flags=-m64 -nostdlib"]] { ++ unsupported $test ++ return -1 ++} ++pass $test ++ ++gdb_test_no_output "set disassembly-flavor att" ++# gas/i386/x86-64-rdrnd.d ++# gas/i386/x86-64-f16c.d ++# gas/i386/x86-64-fsgs.d ++gdb_test "disassemble/r _start" "\r ++Dump of assembler code for function _start:\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r ++\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand %rbx\r ++\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand %r8w\r ++\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand %r8d\r ++\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand %r8\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r ++\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand %rbx\r ++\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand %r8w\r ++\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand %r8d\r ++\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand %r8\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r ++\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps \\(%r8\\),%ymm8\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%xmm4\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r ++\[^\r\n\]+:\tc4 43 7d 1d 00 02\t\( \)?vcvtps2ph \\\$0x2,%ymm8,\\(%r8\\)\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%rcx\\)\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r ++\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps \\(%r8\\),%ymm8\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%ymm4\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%xmm4\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%rcx\\),%xmm4\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%rcx\\)\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%rcx\\)\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r ++\[^\r\n\]+:\tc4 43 79 1d 00 02\t\( \)?vcvtps2ph \\\$0x2,%xmm8,\\(%r8\\)\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%rcx\\)\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase %r8\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase %r8\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase %r8\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase %r8\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase %r8\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase %r8\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase %r8\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r ++\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase %rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase %r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase %r8\r ++End of assembler dump\\." "att" ++ ++gdb_test_no_output "set disassembly-flavor intel" ++# gas/i386/x86-64-rdrnd-intel.d ++# gas/i386/x86-64-f16c-intel.d ++# gas/i386/x86-64-fsgs-intel.d ++gdb_test "disassemble/r _start" "\r ++Dump of assembler code for function _start:\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r ++\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand rbx\r ++\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand r8w\r ++\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand r8d\r ++\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand r8\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r ++\[^\r\n\]+:\t48 0f c7 f3\t\( \)?rdrand rbx\r ++\[^\r\n\]+:\t66 41 0f c7 f0\t\( \)?rdrand r8w\r ++\[^\r\n\]+:\t41 0f c7 f0\t\( \)?rdrand r8d\r ++\[^\r\n\]+:\t49 0f c7 f0\t\( \)?rdrand r8\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r ++\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps ymm8,XMMWORD PTR \\\[r8\\\]\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[rcx\\\]\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r ++\[^\r\n\]+:\tc4 43 7d 1d 00 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[r8\\\],ymm8,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[rcx\\\],xmm4,0x2\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r ++\[^\r\n\]+:\tc4 42 7d 13 00\t\( \)?vcvtph2ps ymm8,XMMWORD PTR \\\[r8\\\]\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[rcx\\\]\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[rcx\\\]\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[rcx\\\]\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[rcx\\\],ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[rcx\\\],ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r ++\[^\r\n\]+:\tc4 43 79 1d 00 02\t\( \)?vcvtps2ph QWORD PTR \\\[r8\\\],xmm8,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[rcx\\\],xmm4,0x2\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase r8\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase r8\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase r8\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase r8\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae c3\t\( \)?rdfsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c0\t\( \)?rdfsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c0\t\( \)?rdfsbase r8\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae cb\t\( \)?rdgsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae c8\t\( \)?rdgsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae c8\t\( \)?rdgsbase r8\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae d3\t\( \)?wrfsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d0\t\( \)?wrfsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d0\t\( \)?wrfsbase r8\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r ++\[^\r\n\]+:\tf3 48 0f ae db\t\( \)?wrgsbase rbx\r ++\[^\r\n\]+:\tf3 41 0f ae d8\t\( \)?wrgsbase r8d\r ++\[^\r\n\]+:\tf3 49 0f ae d8\t\( \)?wrgsbase r8\r ++End of assembler dump\\." "intel" +diff --git a/gdb/testsuite/gdb.arch/i386-ivy-bridge.S b/gdb/testsuite/gdb.arch/i386-ivy-bridge.S +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/i386-ivy-bridge.S +@@ -0,0 +1,66 @@ ++/* Copyright 2011 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++ ++ This file is part of the gdb testsuite. */ ++ ++ .globl _start ++_start: .text ++ ++/* gas/i386/rdrnd.s */ ++ .att_syntax prefix ++ rdrand %bx ++ rdrand %ebx ++ ++ .intel_syntax noprefix ++ rdrand bx ++ rdrand ebx ++ ++/* gas/i386/f16c.s */ ++ .att_syntax prefix ++ vcvtph2ps %xmm4,%ymm4 ++ vcvtph2ps (%ecx),%ymm4 ++ vcvtph2ps %xmm4,%xmm6 ++ vcvtph2ps (%ecx),%xmm4 ++ vcvtps2ph $0x2,%ymm4,%xmm4 ++ vcvtps2ph $0x2,%ymm4,(%ecx) ++ vcvtps2ph $0x2,%xmm4,%xmm4 ++ vcvtps2ph $0x2,%xmm4,(%ecx) ++ ++ .intel_syntax noprefix ++ vcvtph2ps ymm4,xmm4 ++ vcvtph2ps ymm4,XMMWORD PTR [ecx] ++ vcvtph2ps ymm4,[ecx] ++ vcvtph2ps xmm6,xmm4 ++ vcvtph2ps xmm4,QWORD PTR [ecx] ++ vcvtph2ps xmm4,[ecx] ++ vcvtps2ph xmm4,ymm4,0x2 ++ vcvtps2ph XMMWORD PTR [ecx],ymm4,0x2 ++ vcvtps2ph [ecx],ymm4,0x2 ++ vcvtps2ph xmm4,xmm4,0x2 ++ vcvtps2ph QWORD PTR [ecx],xmm4,0x2 ++ vcvtps2ph [ecx],xmm4,0x2 ++ ++/* gas/i386/fsgs.s */ ++ .att_syntax prefix ++ rdfsbase %ebx ++ rdgsbase %ebx ++ wrfsbase %ebx ++ wrgsbase %ebx ++ ++ .intel_syntax noprefix ++ rdfsbase ebx ++ rdgsbase ebx ++ wrfsbase ebx ++ wrgsbase ebx +diff --git a/gdb/testsuite/gdb.arch/i386-ivy-bridge.exp b/gdb/testsuite/gdb.arch/i386-ivy-bridge.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/i386-ivy-bridge.exp +@@ -0,0 +1,106 @@ ++# Copyright 2011 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++if {![istarget "x86_64-*-*"] && ![istarget "i?86-*-*"]} then { ++ return ++} ++ ++set testfile i386-ivy-bridge ++set test compilation ++if [prepare_for_testing ${testfile}.exp ${testfile}.x ${testfile}.S [list debug "additional_flags=-m32 -nostdlib"]] { ++ fail $test ++ return -1 ++} ++pass $test ++ ++gdb_test_no_output "set disassembly-flavor att" ++# gas/i386/rdrnd.d ++# gas/i386/f16c.d ++# gas/i386/fsgs.d ++gdb_test "disassemble/r _start" "\r ++Dump of assembler code for function _start:\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand %bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand %ebx\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%ymm4\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%xmm4\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%ecx\\)\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%ecx\\)\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps %xmm4,%ymm4\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%ymm4\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%ymm4\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps %xmm4,%xmm6\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%xmm4\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps \\(%ecx\\),%xmm4\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,%xmm4\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%ecx\\)\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%ymm4,\\(%ecx\\)\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,%xmm4\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%ecx\\)\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph \\\$0x2,%xmm4,\\(%ecx\\)\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase %ebx\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase %ebx\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase %ebx\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase %ebx\r ++End of assembler dump\\." "att" ++ ++gdb_test_no_output "set disassembly-flavor intel" ++# gas/i386/rdrnd-intel.d ++# gas/i386/f16c-intel.d ++# gas/i386/fsgs-intel.d ++gdb_test "disassemble/r _start" "\r ++Dump of assembler code for function _start:\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r ++\[^\r\n\]+:\t66 0f c7 f3\t\( \)?rdrand bx\r ++\[^\r\n\]+:\t0f c7 f3\t\( \)?rdrand ebx\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[ecx\\\]\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[ecx\\\]\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[ecx\\\],ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[ecx\\\],xmm4,0x2\r ++\[^\r\n\]+:\tc4 e2 7d 13 e4\t\( \)?vcvtph2ps ymm4,xmm4\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[ecx\\\]\r ++\[^\r\n\]+:\tc4 e2 7d 13 21\t\( \)?vcvtph2ps ymm4,XMMWORD PTR \\\[ecx\\\]\r ++\[^\r\n\]+:\tc4 e2 79 13 f4\t\( \)?vcvtph2ps xmm6,xmm4\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[ecx\\\]\r ++\[^\r\n\]+:\tc4 e2 79 13 21\t\( \)?vcvtph2ps xmm4,QWORD PTR \\\[ecx\\\]\r ++\[^\r\n\]+:\tc4 e3 7d 1d e4 02\t\( \)?vcvtps2ph xmm4,ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[ecx\\\],ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 7d 1d 21 02\t\( \)?vcvtps2ph XMMWORD PTR \\\[ecx\\\],ymm4,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d e4 02\t\( \)?vcvtps2ph xmm4,xmm4,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[ecx\\\],xmm4,0x2\r ++\[^\r\n\]+:\tc4 e3 79 1d 21 02\t\( \)?vcvtps2ph QWORD PTR \\\[ecx\\\],xmm4,0x2\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r ++\[^\r\n\]+:\tf3 0f ae c3\t\( \)?rdfsbase ebx\r ++\[^\r\n\]+:\tf3 0f ae cb\t\( \)?rdgsbase ebx\r ++\[^\r\n\]+:\tf3 0f ae d3\t\( \)?wrfsbase ebx\r ++\[^\r\n\]+:\tf3 0f ae db\t\( \)?wrgsbase ebx\r ++End of assembler dump\\." "intel" diff --git a/gdb-test-pid0-core.patch b/gdb-test-pid0-core.patch new file mode 100644 index 0000000..fea4def --- /dev/null +++ b/gdb-test-pid0-core.patch @@ -0,0 +1,92 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Fedora GDB patches +Date: Fri, 27 Oct 2017 21:07:50 +0200 +Subject: gdb-test-pid0-core.patch + +;; New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435). +;;=fedoratest + +https://bugzilla.redhat.com/show_bug.cgi?id=611435 + +Fix: +Re: [RFA]corelow.c: Add tid to add_to_thread_list +http://sourceware.org/ml/gdb-patches/2010-08/msg00085.html +http://sourceware.org/ml/gdb-cvs/2010-08/msg00026.html +2e5bcfdef1ec3883d48c3f87a4be5c0dff25e17e + +diff --git a/gdb/testsuite/gdb.arch/x86_64-pid0-core.core.bz2.uu b/gdb/testsuite/gdb.arch/x86_64-pid0-core.core.bz2.uu +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/x86_64-pid0-core.core.bz2.uu +@@ -0,0 +1,20 @@ ++begin 600 x86_64-pid0-core.core.bz2 ++M0EIH.3%!629362,CA>P!$/'_____^*#EZ-A!SP36P&_:G0#=14``04A&8,'U ++M2*9`>$$)P`*RN"#*;#4R()IJ8C$TT&FC3$&@`T`#:C1H8C0T,@,FC,D"4T2! ++M"/2CU'B90]31ZAD#U`&AZF@/4:``!HT&F@!H<`#0-`-#0``#3$-&F@```#0R ++M``#")2FD]2>4]0TTT-!HTT--,0,"#$`R!I@AD`#1H,3&GZT.4TO$#H40/`0C ++M2$IRXS,<55!8T,&&,R.Z441"?J9I%G6GUA2!.[]Z"C5S[&19,%VS7E6[3"60 ++M@`-*2G)QEQ(;?0Y<=MK]/U?Q)LB%+F37TJ9BI*46)H'*Z@V"`"$"P7]&XZ:JE0E<*:#1M$P3G]>VCI)(A!O$64`5$4`E$$-.``7&(09`8HO`B6K!Q^& ++M562%N)2+0@*HB@%D@5$%!*0!L1&0D4D6\:-$A`)`+<6D82PP*H(J(H!?F;0$ ++M%PXB7N!2D4!44`W7"ADEQM6O9TBO5,_]1) ++M($Q2))#),UE,QQK)E$,3D\W.>!4)QO8A_@^Z_SXS4;Q8=HV6[:&$@2$@$R29IBW)K%3"O` ++M9^Y0YJ&BXY1U2HTZ5)2H-V\_(.DZHWE+C#WS($(!I"3CUH2#(+(OWUV"*<<9 ++MJ%A!J[%O.P&V%GI.`L7<1@0>,^1F\MY=V5UT,&NOG%7TTZ[03!@BHB@&)P` ++` ++end +diff --git a/gdb/testsuite/gdb.arch/x86_64-pid0-core.exp b/gdb/testsuite/gdb.arch/x86_64-pid0-core.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.arch/x86_64-pid0-core.exp +@@ -0,0 +1,46 @@ ++# This testcase is part of GDB, the GNU debugger. ++# ++# Copyright 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 ++# (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-1307, USA. ++ ++# Some kernel core files have PID 0 - for the idle task. ++ ++if ![istarget "x86_64-*-*"] { ++ verbose "Skipping x86_64-pid0-core test." ++ return ++} ++ ++set testfile "x86_64-pid0-core" ++set corebz2uufile ${srcdir}/${subdir}/${testfile}.core.bz2.uu ++set corefile [standard_output_file ${testfile}.core] ++ ++if {[catch "system \"uudecode -o - ${corebz2uufile} | bzip2 -dc >${corefile}\""] != 0} { ++ untested "failed uudecode or bzip2" ++ return -1 ++} ++file stat ${corefile} corestat ++if {$corestat(size) != 8798208} { ++ untested "uudecode or bzip2 produce invalid result" ++ return -1 ++} ++ ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++ ++# Former crash was: ++# thread.c:884: internal-error: switch_to_thread: Assertion `inf != NULL' failed. ++gdb_test "core-file ${corefile}" "Program terminated with signal (11|SIGSEGV), Segmentation fault\\.\r\n.*" diff --git a/gdb.spec b/gdb.spec new file mode 100644 index 0000000..9fe7277 --- /dev/null +++ b/gdb.spec @@ -0,0 +1,6144 @@ +# rpmbuild parameters: +# --with testsuite: Run the testsuite (biarch if possible). Default is without. +# --with buildisa: Use %%{?_isa} for BuildRequires +# --with asan: gcc -fsanitize=address +# --without python: No python support. +# --with profile: gcc -fprofile-generate / -fprofile-use: Before better +# workload gets run it decreases the general performance now. +# --define 'scl somepkgname': Independent packages by scl-utils-build. +# --define 'tests "TEST1 ... TESTN": Limit testing to specified tests. + +# Turn off the brp-python-bytecompile automagic +%global _python_bytecompile_extra 0 + +# GTS magic sauce. +%{?scl_package:%global scl gcc-toolset-13} +%global scl_prefix gcc-toolset-13- +%global scl_testing_prefix gcc-toolset-12- +BuildRequires: scl-utils-build + +# Only build on x86 for RHEL6 SCL, defining missing parallel make macros. +%if 0%{?scl:1} && 0%{?el6:1} +ExclusiveArch: %{ix86} x86_64 +%global make_build make %{?_smp_mflags} +%global make_install make %{?_smp_mflags} install DESTDIR=$RPM_BUILD_ROOT +%endif + +# Exclude aarch64 on RHEL7. +%if 0%{?scl:1} && 0%{?el7:1} +ExcludeArch: aarch64 +%endif + +# Setup python. +%if 0%{!?_without_python:1} +%if 0%{?rhel:1} && 0%{?rhel} <= 7 +%global __python /usr/bin/python2 +%else +%global __python /usr/bin/python3 +%endif +%endif + +%{?scl:%scl_package gdb} +%{!?scl: + %global pkg_name %{name} + %global _root_prefix %{_prefix} + %global _root_datadir %{_datadir} + %global _root_libdir %{_libdir} +} + +# If we're on Fedora or RHEL 9+, we will build the gdb-minimal package. +# Never build the -minimal package on SCLs, since it's unneeded there. +%if 0%{?fedora} || (0%{?rhel} > 8 && 0%{!?scl:1}) +%global _build_minimal 1 +%endif + +# Include support for Guile? This is enabled on RHEL 8 and +# Fedora < 38. +%if (0%{?fedora:1} && 0%{?fedora} < 38) || (0%{?rhel:1} && 0%{?rhel} == 8) +%define use_guile 1 +%endif + +Name: %{?scl_prefix}gdb + +# Freeze it when GDB gets branched +%global snapsrc 20220501 +# See timestamp of source gnulib installed into gnulib/ . +%global snapgnulib 20210105 +%global tarname gdb-%{version} +Version: 12.1 + +# The release always contains a leading reserved number, start it at 1. +# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. +Release: 1%{?dist} + +License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL +# Do not provide URL for snapshots as the file lasts there only for 2 days. +# ftp://sourceware.org/pub/gdb/releases/FIXME{tarname}.tar.xz +#Source: %{tarname}.tar.xz +Source: ftp://sourceware.org/pub/gdb/releases/%{tarname}.tar.xz +URL: https://gnu.org/software/gdb/ + +# For our convenience +%global gdb_src %{tarname} +%global gdb_build build-%{_target_platform} +%if 0%{?_build_minimal} +%global gdb_build_minimal %{gdb_build}-minimal +%endif # 0%{?_build_minimal} + +# error: Installed (but unpackaged) file(s) found: /usr/lib/debug/usr/bin/gdb-gdb.py +# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/PBOJDOFMWTRV3ZOKNV5HN7IBX5EPHDHF/ +%undefine _debuginfo_subpackages + +# For DTS RHEL<=7 GDB it is better to use none than a Requires dependency. +# We don't support gcc-gdb-plugin on RHEL anymore. +%if 0%{!?rhel:1} +Recommends: %{?scl_prefix}gcc-gdb-plugin%{?_isa} +Recommends: dnf-command(debuginfo-install) +%endif + +%if 0%{!?scl:1} +# when manpages were moved from -headless to main +# https://bugzilla.redhat.com/show_bug.cgi?id=1402554 +# theoretically should not be required due to versioned dependeny +# below, but it cannot hurt either -- rdieter +Conflicts: gdb-headless < 7.12-29 + +Summary: A stub package for GNU source-level debugger +Requires: gdb-headless%{?_isa} = %{version}-%{release} + +%description +'gdb' package is only a stub to install gcc-gdb-plugin for 'compile' commands. +See package 'gdb-headless'. + +%package headless +%endif + +Summary: A GNU source-level debugger for C, C++, Fortran, Go and other languages + +# Make sure we get rid of the old package gdb64, now that we have unified +# support for 32-64 bits in one single 64-bit gdb. +%ifarch ppc64 +Obsoletes: gdb64 < 5.3.91 +%endif + +%ifarch %{arm} +%global have_inproctrace 0 +%else +%global have_inproctrace 1 +%endif + +# gdb-add-index cannot be run even for SCL package on RHEL<=6. +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +# eu-strip: -g recognizes .gdb_index as a debugging section. (#631997) +Conflicts: elfutils < 0.149 +%endif + +# https://fedorahosted.org/fpc/ticket/43 https://fedorahosted.org/fpc/ticket/109 +Provides: bundled(libiberty) = %{snapsrc} +Provides: bundled(gnulib) = %{snapgnulib} +# The libraries in the top-level directory (libbfd, libopcodes, +# libctf) are covered by the "bundled(binutils)" below. See ticket +# #109, as mentioned above. +Provides: bundled(binutils) = %{snapsrc} +# https://fedorahosted.org/fpc/ticket/130 +Provides: bundled(md5-gcc) = %{snapsrc} + +# https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRequires_and_.25.7B_isa.7D +%if 0%{?_with_buildisa:1} || 0%{?_with_testsuite:1} +%global buildisa %{?_isa} +%else +%global buildisa %{nil} +%endif + +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +# https://bugzilla.redhat.com/show_bug.cgi?id=1209492 +Recommends: default-yama-scope +%endif + +%if 0%{?el6:1} +%global librpmver 1 +%else +# FIXME: %elif does not work. +%if 0%{?el7:1} +%global librpmver 3 +%else +%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 +%global librpmver 8 +%else +%global librpmver 7 +%endif +%if 0%{?fedora} >= 31 || 0%{?rhel} >= 9 +%global librpmver 9 +%endif +%endif +%endif +%if 0%{?__isa_bits} == 64 +%global librpmname librpm.so.%{librpmver}()(64bit) +%else +%global librpmname librpm.so.%{librpmver} +%endif +BuildRequires: rpm-libs%{buildisa} +%if 0%{?_with_buildisa:1} +BuildRequires: %{librpmname} +%endif +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +Recommends: %{librpmname} +%endif + +%if 0%{?el6:1} || 0%{?el7:1} +# GDB C++11 requires devtoolset gcc. +BuildRequires: %{?scl_prefix}gcc-c++ +%else +BuildRequires: gcc-c++ +%endif + +# GDB patches have the format `gdb--bz-.patch'. +# They should be created using patch level 1: diff -up ./gdb (or gdb-6.3/gdb). + +#= +#push=Should be pushed upstream. +#fedora=Should stay as a Fedora patch. +#fedoratest=Keep it in Fedora only as a regression test safety. + +# Cleanup any leftover testsuite processes as it may stuck mock(1) builds. +#=push+jan +Source2: gdb-orphanripper.c + +# Man page for gstack(1). +#=push+jan +Source3: gdb-gstack.man + +# /etc/gdbinit (from Debian but with Fedora compliant location). +#=fedora +Source4: gdbinit + +# libstdc++ pretty printers from GCC SVN. +%global libstdcxxpython gdb-libstdc++-v3-python-8.1.1-20180626 +#=fedora +Source5: %{libstdcxxpython}.tar.xz + +# Provide gdbtui for RHEL-5 and RHEL-6 as it is removed upstream (BZ 797664). +#=fedora +Source6: gdbtui + +# libipt: Intel Processor Trace Decoder Library +%global libipt_version 2.0.5 +#=fedora +Source7: v%{libipt_version}.tar.gz + +# Include the auto-generated file containing the "Patch:" directives. +# See README.local-patches for more details. +Patch9998: _gdb.spec.Patch.include +Patch9999: _gdb.spec.patch.include +%include %{PATCH9998} + +# System readline is too old prior to RHEL8. +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +%global use_system_readline 1 +BuildRequires: readline-devel%{buildisa} >= 7.0 +%else +%global use_system_readline 0 +%endif + +BuildRequires: ncurses-devel%{buildisa} texinfo gettext flex bison +BuildRequires: expat-devel%{buildisa} +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +BuildRequires: xz-devel%{buildisa} +%endif +# dlopen() no longer makes rpm-libsFIXME{?_isa} (it's .so) a mandatory dependency. +BuildRequires: rpm-devel%{buildisa} +BuildRequires: zlib-devel%{buildisa} libselinux-devel%{buildisa} +%if 0%{!?_without_python:1} +%if 0%{?rhel:1} && 0%{?rhel} <= 7 +BuildRequires: python-devel%{buildisa} +%else +BuildRequires: python3-devel%{buildisa} +%endif +%if 0%{?rhel:1} && 0%{?rhel} <= 7 +# Temporarily before python files get moved to libstdc++.rpm +# libstdc++%{bits_other} is not present in Koji, the .spec script generating +# gdb/python/libstdcxx/ also does not depend on the %{bits_other} files. +BuildRequires: libstdc++%{buildisa} +%endif # 0%{?rhel:1} && 0%{?rhel} <= 7 +%endif # 0%{!?_without_python:1} +# gdb-doc in PDF, see: https://bugzilla.redhat.com/show_bug.cgi?id=919891#c10 +BuildRequires: texinfo-tex +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +BuildRequires: texlive-collection-latexrecommended +%endif +# Permit rebuilding *.[0-9] files even if they are distributed in gdb-*.tar: +BuildRequires: /usr/bin/pod2man +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +BuildRequires: libbabeltrace-devel%{buildisa} + %if %{defined use_guile} + %if 0%{!?rhel:1} +BuildRequires: guile22-devel%{buildisa} + %endif + # Guile is only supported prior to RHEL9, where it was called "guile". + %if 0%{?rhel:1} && 0%{?rhel} < 9 +BuildRequires: guile-devel%{buildisa} + %endif + %endif +%endif + +%global have_libipt 0 +%if 0%{!?rhel:1} || 0%{?rhel} > 7 || (0%{?rhel} == 7 && 0%{?scl:1}) +%ifarch %{ix86} x86_64 +%global have_libipt 1 +%if 0%{?el7:1} && 0%{?scl:1} +BuildRequires: cmake +%else +BuildRequires: libipt-devel%{buildisa} +%endif +%endif +%endif +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +# See https://bugzilla.redhat.com/show_bug.cgi?id=1593280 +# DTS RHEL-6 has mpfr-2 while GDB requires mpfr-3 on RHEL-7, RHEL-8, and +# Fedora < 32, and mpfr-4 on Fedora 32+ and RHEL-9+. +BuildRequires: mpfr-devel%{buildisa} +%endif +# RHEL6 doesn't have source-highlight. +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +BuildRequires: source-highlight-devel +%endif +%if 0%{!?rhel:1} +BuildRequires: xxhash-devel +%endif + +# Special case: on RHEL8+, we simply require the system debuginfod. +# Otherwise, we require the SCL version. Except on RHEL6, where debuginfod +# is not supported at all. +%global have_debuginfod 0 +%global use_scl_for_debuginfod 0 +%if 0%{!?rhel:1} || 0%{?rhel} >= 8 +%global have_debuginfod 1 +BuildRequires: elfutils-debuginfod-client-devel +%else +%if 0%{!?el6:1} && 0%{?scl:1} +%global have_debuginfod 1 +%global use_scl_for_debuginfod 1 +BuildRequires: %{?scl_prefix}elfutils-debuginfod-client-devel +%endif +%endif + +# Workaround for missing boost-devel dependency (rhbz 1718480) +BuildRequires: boost-devel + +%if 0%{?_with_testsuite:1} + +# Ensure the devel libraries are installed for both multilib arches. +%global bits_local %{?_isa} +%global bits_other %{?_isa} +%ifarch s390x +%if 0%{?rhel:1} && 0%{?rhel} < 8 +%global bits_other (%{__isa_name}-32) +%endif +%else #!s390x +%ifarch ppc +%global bits_other (%{__isa_name}-64) +%else #!ppc +%ifarch sparc64 ppc64 s390x x86_64 +%global bits_other (%{__isa_name}-32) +%endif #sparc64 ppc64 s390x x86_64 +%endif #!ppc +%endif #!s390x + +BuildRequires: sharutils dejagnu +# gcc-objc++ is not covered by the GDB testsuite. +# Test supported SCL toolchain components. +BuildRequires: %{?scl_testing_prefix}gcc %{?scl_testing_prefix}gcc-c++ %{?scl_testing_prefix}gcc-gfortran + +%if 0%{!?rhel:1} || 0%{?rhel} < 8 +BuildRequires: gcc-objc +%endif +# We don't support gcc-gdb-plugin on RHEL anymore. +%if 0%{!?rhel:1} +BuildRequires: %{?scl_testing_prefix}gcc-gdb-plugin%{?_isa} +%endif +%if 0%{?rhel:1} && 0%{?rhel} < 7 +BuildRequires: gcc-java libgcj%{bits_local} libgcj%{bits_other} +# for gcc-java linkage: +BuildRequires: zlib-devel%{bits_local} zlib-devel%{bits_other} +%endif +# Exception for RHEL<=7 +%ifarch aarch64 +%if 0%{!?rhel:1} +BuildRequires: gcc-go +BuildRequires: libgo-devel%{bits_local} libgo-devel%{bits_other} +%endif +%else +%if 0%{!?rhel:1} || 0%{?rhel} == 7 +BuildRequires: gcc-go +BuildRequires: libgo-devel%{bits_local} libgo-devel%{bits_other} +%endif +%endif +# archer-sergiodj-stap-patch-split +BuildRequires: systemtap-sdt-devel +%if 0%{?rhel:1} && 0%{?rhel} <= 7 +# Copied from prelink-0.4.2-3.fc13. +# Prelink is not yet ported to ppc64le. +%ifarch %{ix86} alpha sparc sparcv9 sparc64 s390 s390x x86_64 ppc ppc64 +# Prelink is broken on sparcv9/sparc64. +%ifnarch sparc sparcv9 sparc64 +BuildRequires: prelink +%endif +%endif +%endif +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +BuildRequires: opencl-headers ocl-icd-devel%{bits_local} ocl-icd-devel%{bits_other} +%endif +%if 0%{!?rhel:1} +# Fedora arm+ppc64le+s390x do not yet have fpc built. +%ifnarch %{arm} ppc64le s390x +BuildRequires: fpc +%endif +%endif +# Copied from: gcc-6.2.1-1.fc26 +# Exception for RHEL<=7 +%ifarch s390x +%if 0%{!?rhel:1} +BuildRequires: gcc-gnat +BuildRequires: libgnat%{bits_local} libgnat%{bits_other} +%endif +%else +%ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64 +%if 0%{!?rhel:1} +BuildRequires: gcc-gnat +BuildRequires: libgnat%{bits_local} libgnat%{bits_other} +%endif +%endif +%endif +BuildRequires: glibc-devel%{bits_local} glibc-devel%{bits_other} +BuildRequires: libgcc%{bits_local} libgcc%{bits_other} +BuildRequires: libgfortran%{bits_local} libgfortran%{bits_other} +# libstdc++-devel of matching bits is required only for g++ -static. +BuildRequires: libstdc++%{bits_local} libstdc++%{bits_other} +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +%ifarch %{ix86} x86_64 +BuildRequires: libquadmath%{bits_local} libquadmath%{bits_other} +%endif +%endif +# multilib glibc-static is open Bug 488472: +%if 0%{?rhel} > 6 +BuildRequires: glibc-static%{bits_other} +%endif +%ifarch s390x +BuildRequires: %{?scl_testing_preifx}valgrind%{bits_local} +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +BuildRequires: %{?scl_testing_prefix}valgrind%{bits_local} valgrind%{bits_other} +%endif +%else +BuildRequires: %{?scl_testing_prefix}valgrind%{bits_local} valgrind%{bits_other} +%endif +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +BuildRequires: xz +%endif +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +BuildRequires: rust +%endif +%if 0%{!?el6:1} +BuildRequires: %{?scl_testing_prefix}elfutils-debuginfod +%endif +%endif # 0%{?_with_testsuite:1} +BuildRequires: make gmp-devel + +# FIXME: The text needs to be duplicated to prevent 2 empty heading lines. +%if 0%{!?scl:1} +%description headless +GDB, the GNU debugger, allows you to debug programs written in C, C++, +Java, and other languages, by executing them in a controlled fashion +and printing their data. +%else +%description +GDB, the GNU debugger, allows you to debug programs written in C, C++, +Java, and other languages, by executing them in a controlled fashion +and printing their data. +%endif + +%if 0%{?_build_minimal} +%package minimal +Summary: A GNU source-level debugger for C, C++, Fortran, Go and other languages (minimal version) +# gdb-add-index is shared with gdb-headless and it must be from same version +Conflicts: %{name}-headless < %{version}-%{release} +Conflicts: %{name}-headless > %{version}-%{release} + +%description minimal +GDB, the GNU debugger, allows you to debug programs written in C, C++, +Java, and other languages, by executing them in a controlled fashion +and printing their data. + +This package provides a minimal version of GDB, tailored to be used by +the Fedora buildroot. It should probably not be used by end users. +%endif # 0%{?_build_minimal} + +%package gdbserver +Summary: A standalone server for GDB (the GNU source-level debugger) + +%description gdbserver +GDB, the GNU debugger, allows you to debug programs written in C, C++, +Java, and other languages, by executing them in a controlled fashion +and printing their data. + +This package provides a program that allows you to run GDB on a different +machine than the one which is running the program being debugged. + +%package doc +Summary: Documentation for GDB (the GNU source-level debugger) +License: GFDL +BuildArch: noarch +%if 0%{?scl:1} +# As of F-28, packages won't need to call /sbin/install-info by hand +# anymore. We make an exception for DTS here. +# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/MP2QVJZBOJZEOQO2G7UB2HLXKXYPF2G5/ +Requires(post): /sbin/install-info +Requires(preun): /sbin/install-info +%endif + +%description doc +GDB, the GNU debugger, allows you to debug programs written in C, C++, +Java, and other languages, by executing them in a controlled fashion +and printing their data. + +This package provides INFO, HTML and PDF user manual for GDB. + +%prep +%setup -q -n %{gdb_src} + +%if 0%{?rhel:1} && 0%{?rhel} <= 7 +# libstdc++ pretty printers. +tar xJf %{SOURCE5} +%endif # 0%{?rhel:1} && 0%{?rhel} <= 7 + +%if 0%{have_libipt} && 0%{?el7:1} && 0%{?scl:1} +tar xzf %{SOURCE7} +%endif + +# Files have `# ' statements breaking VPATH / find-debuginfo.sh . +(cd gdb;rm -fv $(perl -pe 's/\\\n/ /' gdb/version.in << _FOO +%{?dist_name} %{version}-%{release} +_FOO + +# Remove the info and other generated files added by the FSF release +# process. +rm -f libdecnumber/gstdint.h +rm -f bfd/doc/*.info +rm -f bfd/doc/*.info-* +rm -f gdb/doc/*.info +rm -f gdb/doc/*.info-* + +%if 0%{use_system_readline} +mv -f readline/readline/doc readline-doc +rm -rf readline/readline/* +mv -f readline-doc readline/readline/doc +%endif + +rm -rf zlib texinfo + +%build +rm -rf %{buildroot} + +test -e %{_root_libdir}/librpm.so.%{librpmver} + +%if 0%{?el6:1} +# GDB C++11 requires devtoolset gcc. +%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} +%endif + +# A set of common GDB configure flags, which are used for both minimal +# and non-minimal compilations. +COMMON_GDB_CONFIGURE_FLAGS="\ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --sysconfdir=%{_sysconfdir} \ + --mandir=%{_mandir} \ + --infodir=%{_infodir} \ + --with-gdb-datadir=%{_datadir}/gdb \ + --enable-gdb-build-warnings=,-Wno-unused,-Wno-deprecated-declarations,-Wno-unused-function\ +%ifarch %{ix86} +,-Wno-format-overflow\ +%endif + --enable-build-with-cxx \ +%ifnarch %{ix86} alpha ppc s390 s390x x86_64 ppc64 ppc64le sparc sparcv9 sparc64 %{arm} aarch64 + --disable-werror \ +%else + --enable-werror \ +%endif + --with-separate-debug-dir=/usr/lib/debug \ + --disable-sim \ + --disable-rpath \ + --without-stage1-ldflags \ + --disable-libmcheck \ +%if 0%{use_system_readline} + --with-system-readline \ +%else + --without-system-readline \ +%endif + --without-libunwind \ +%ifarch sparc sparcv9 sparc64 + --without-mmap \ +%endif + --enable-64-bit-bfd \ +%if 0%{!?rhel:1} || 0%{?rhel} > 6 + --with-mpfr \ +%else + --without-mpfr \ +%endif + --with-system-zlib \ +%if 0%{!?rhel:1} || 0%{?rhel} > 6 + --with-lzma \ +%else + --without-lzma \ +%endif +%if 0%{!?rhel:1} || 0%{?have_debuginfod} + --with-debuginfod \ +%endif +%if 0%{?rhel:1} + --disable-libctf +%endif +" + +# Identify the build directory with the version of gdb as well as the +# architecture, to allow for mutliple versions to be installed and +# built. +# Initially we're in the %{gdb_src} directory. + +for fprofile in %{?_with_profile:-fprofile} "" +do + +# We will first build the minimal version of GDB. +%if 0%{?_build_minimal} +mkdir %{gdb_build_minimal}$fprofile +cd %{gdb_build_minimal}$fprofile + +# The configure flags we will use when building gdb-minimal. +GDB_MINIMAL_CONFIGURE_FLAGS="\ + --without-babeltrace \ + --without-expat \ + --disable-tui \ + --without-python \ + --without-guile \ + --disable-inprocess-agent \ + --without-intel-pt \ + --disable-unit-tests \ + --disable-source-highlight" + +# Populate CFLAGS, LDFLAGS, CC, CXX, etc. +%set_build_flags +CFLAGS="$CFLAGS %{?_with_asan:-fsanitize=address}" +LDFLAGS="$LDFLAGS %{?_with_asan:-fsanitize=address}" +CXXFLAGS="$CXXFLAGS %{?_with_asan:-fsanitize=address}" + +# If using an SCL for debuginfod, add path to SCL's pkgconfig directory. +%if 0%{?have_debuginfod} && 0%{?use_scl_for_debuginfod} +export PKG_CONFIG_PATH=%{_libdir}/pkgconfig +%endif + +# --htmldir and --pdfdir are not used as they are used from %{gdb_build}. +../configure \ + ${COMMON_GDB_CONFIGURE_FLAGS} \ + ${GDB_MINIMAL_CONFIGURE_FLAGS} \ + --with-auto-load-dir='$debugdir:$datadir/auto-load%{?scl::%{_root_datadir}/gdb/auto-load}' \ + --with-auto-load-safe-path='$debugdir:$datadir/auto-load%{?scl::%{_root_datadir}/gdb/auto-load}' \ +%ifarch sparc sparcv9 + sparc-%{_vendor}-%{_target_os}%{?_gnu} +%else + --enable-targets=s390-linux-gnu,powerpc-linux-gnu,arm-linux-gnu,aarch64-linux-gnu \ + %{_target_platform} +%endif + +# Prepare gdb/config.h first. +%make_build CFLAGS="$CFLAGS $FPROFILE_CFLAGS" LDFLAGS="$LDFLAGS $FPROFILE_CFLAGS" V=1 maybe-configure-gdb +perl -i.relocatable -pe 's/^(D\[".*_RELOCATABLE"\]=" )1(")$/${1}0$2/' gdb/config.status + +%make_build CFLAGS="$CFLAGS $FPROFILE_CFLAGS" LDFLAGS="$LDFLAGS $FPROFILE_CFLAGS" V=1 + +cd .. +%endif # 0%{?_build_minimal} + +# Now we build the full GDB. +mkdir %{gdb_build}$fprofile +cd %{gdb_build}$fprofile + +export CFLAGS="$RPM_OPT_FLAGS %{?_with_asan:-fsanitize=address}" +export LDFLAGS="%{?__global_ldflags} %{?_with_asan:-fsanitize=address}" + +%if 0%{!?rhel:1} || 0%{?rhel} > 7 +CFLAGS="$CFLAGS -DDNF_DEBUGINFO_INSTALL" +%endif + +%if 0%{have_libipt} && 0%{?el7:1} && 0%{?scl:1} +( + mkdir libipt-%{libipt_version}-root + mkdir libipt-%{libipt_version}-build + cd libipt-%{libipt_version}-build + # -DPTUNIT:BOOL=ON has no effect on ctest. + %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DPTUNIT:BOOL=OFF \ + -DDEVBUILD:BOOL=ON \ + -DBUILD_SHARED_LIBS=OFF \ + ../../libipt-%{libipt_version} + make VERBOSE=1 %{?_smp_mflags} + ctest -V %{?_smp_mflags} + make install DESTDIR=../libipt-%{libipt_version}-root +) +# There is also: --with-libipt-prefix +CFLAGS="$CFLAGS -I$PWD/libipt-%{libipt_version}-root%{_includedir}" +LDFLAGS="$LDFLAGS -L$PWD/libipt-%{libipt_version}-root%{_libdir}" +%endif + +export CXXFLAGS="$CFLAGS" + +# For DTS11+, gcc defaults to c++17, causing issues with system-installed +# headers, e.g., python. Force to c++11. We coerce all builds to use c++11 +# to facilitate testing. +%if 0%{?rhel:1} && 0%{?rhel} < 8 +export CXXFLAGS="$CXXFLAGS -std=gnu++11" +%endif + +# The configure flags we will use when building the full GDB. +GDB_FULL_CONFIGURE_FLAGS="\ + --with-system-gdbinit=%{_sysconfdir}/gdbinit \ +%if 0%{!?rhel:1} || 0%{?rhel} > 7 + --with-babeltrace \ +%else + --without-babeltrace \ +%endif + --with-expat \ +$(: ppc64 host build crashes on ppc variant of libexpat.so ) \ + --without-libexpat-prefix \ + --enable-tui \ +%if 0%{!?_without_python:1} + --with-python=%{__python} \ +%else + --without-python \ +%endif +%if %{defined use_guile} + --with-guile \ +%else + --without-guile \ +%endif +%if %{have_inproctrace} + --enable-inprocess-agent \ +%else + --disable-inprocess-agent \ +%endif +%if %{have_libipt} + --with-intel-pt \ +%else + --without-intel-pt \ +%endif +%if 0%{!?rhel:1} + --with-xxhash \ +%endif + --with-rpm=librpm.so.%{librpmver} \ + --enable-unit-tests" + +# --htmldir and --pdfdir are not used as they are used from %{gdb_build}. +../configure \ + ${COMMON_GDB_CONFIGURE_FLAGS} \ + ${GDB_FULL_CONFIGURE_FLAGS} \ + --with-auto-load-dir='$debugdir:$datadir/auto-load%{?scl::%{_root_datadir}/gdb/auto-load}' \ + --with-auto-load-safe-path='$debugdir:$datadir/auto-load%{?scl::%{_root_datadir}/gdb/auto-load}' \ +%ifarch sparc sparcv9 + sparc-%{_vendor}-%{_target_os}%{?_gnu} +%else + --enable-targets=s390-linux-gnu,powerpc-linux-gnu,arm-linux-gnu,aarch64-linux-gnu \ + %{_target_platform} +%endif + +if [ -z "%{!?_with_profile:no}" ] +then + # Run all the configure tests being incompatible with $FPROFILE_CFLAGS. + %make_build configure-host configure-target + %make_build clean + + # Workaround -fprofile-use: + # linux-x86-low.c:2225: Error: symbol `start_i386_goto' is already defined + %make_build -C gdb/gdbserver linux-x86-low.o +fi + +# Global CFLAGS would fail on: +# conftest.c:1:1: error: coverage mismatch for function 'main' while reading counter 'arcs' +if [ "$fprofile" = "-fprofile" ] +then + FPROFILE_CFLAGS='-fprofile-generate' +elif [ -z "%{!?_with_profile:no}" ] +then + FPROFILE_CFLAGS='-fprofile-use' + # We cannot use -fprofile-dir as the bare filenames clash. + (cd ../${builddir}-fprofile; + # It was 333 on x86_64. + test $(find -name "*.gcda"|wc -l) -gt 300 + find -name "*.gcda" | while read -r i + do + ln $i ../${builddir}/$i + done + ) +else + FPROFILE_CFLAGS="" +fi + +# Prepare gdb/config.h first. +%make_build CFLAGS="$CFLAGS $FPROFILE_CFLAGS" LDFLAGS="$LDFLAGS $FPROFILE_CFLAGS" V=1 maybe-configure-gdb +perl -i.relocatable -pe 's/^(D\[".*_RELOCATABLE"\]=" )1(")$/${1}0$2/' gdb/config.status + +%make_build CFLAGS="$CFLAGS $FPROFILE_CFLAGS" LDFLAGS="$LDFLAGS $FPROFILE_CFLAGS" V=1 + +! grep '_RELOCATABLE.*1' gdb/config.h + +if [ "$fprofile" = "-fprofile" ] +then + cd gdb + cp -p gdb gdb-withindex + PATH="$PWD:$PATH" sh ../../gdb/gdb-add-index $PWD/gdb-withindex + ./gdb -nx -ex q ./gdb-withindex + ./gdb -nx -readnow -ex q ./gdb-withindex + cd .. +fi + +cd .. + +done # fprofile + +cd %{gdb_build} + +%make_build \ + -C gdb/doc {gdb,annotate}{.info,/index.html,.pdf} MAKEHTMLFLAGS=--no-split MAKEINFOFLAGS=--no-split V=1 + +# Copy the /gdb/NEWS file to the directory above it. +cp $RPM_BUILD_DIR/%{gdb_src}/gdb/NEWS $RPM_BUILD_DIR/%{gdb_src} + +%check +# Initially we're in the %{gdb_src} directory. +cd %{gdb_build} + +# We always run the unittests. +(cd gdb; make run GDBFLAGS='-batch -ex "maintenance selftest"') + +%if 0%{!?_with_testsuite:1} +echo ====================TESTSUITE DISABLED========================= +%else +echo ====================TESTING========================= +cd gdb +gcc -o ./orphanripper %{SOURCE2} -Wall -lutil -ggdb2 +# Need to use a single --ignore option, second use overrides first. +# No `%{?_smp_mflags}' here as it may race. +# WARNING: can't generate a core file - core tests suppressed - check ulimit +# "readline-overflow.exp" - Testcase is broken, functionality is OK. +( + # ULIMIT required for `gdb.base/auxv.exp'. + ulimit -H -c + ulimit -c unlimited || : + + # Setup $CHECK as `check//unix/' or `check//unix/-m64' for explicit bitsize. + # Never use two different bitsizes as it fails on ppc64. + echo 'int main (void) { return 0; }' >biarch.c + CHECK="" + for BI in -m64 -m32 -m31 "" + do + # Do not use size-less options if any of the sizes works. + # On ia64 there is no -m64 flag while we must not leave a bare `check' here + # as it would switch over some testing scripts to the backward compatibility + # mode: when `make check' was executed from inside the testsuite/ directory. + if [ -z "$BI" -a -n "$CHECK" ];then + continue + fi + # Do not use $RPM_OPT_FLAGS as the other non-size options will not be used + # in the real run of the testsuite. + if ! gcc $BI -o biarch biarch.c + then + continue + fi + CHECK="$CHECK check//unix/$BI check//native-gdbserver/$BI check//native-extended-gdbserver/$BI" + done + # Do not try -m64 inferiors for -m32 GDB as it cannot handle inferiors larger + # than itself. + # s390 -m31 still uses the standard ELF32 binary format. + gcc $RPM_OPT_FLAGS -o biarch biarch.c + RPM_SIZE="$(file ./biarch|sed -n 's/^.*: ELF \(32\|64\)-bit .*$/\1/p')" + if [ "$RPM_SIZE" != "64" ] + then + CHECK="$(echo " $CHECK "|sed 's#check//unix/-m64 check//native-gdbserver/-m64 check//native-extended-gdbserver/-m64# #')" + fi + + # Disable some problematic testcases. + # RUNTESTFLAGS='--ignore ...' is not used below as it gets separated by the + # `check//...' target spawn and too much escaping there would be dense. + for test in \ + gdb.base/readline-overflow.exp \ + gdb.base/bigcore.exp \ +%if 0%{?rhel} < 7 + gdb.base/gnu-debugdata.exp \ + gdb.base/access-mem-running.exp \ + gdb.threads/access-mem-running-thread-exit.exp \ +%endif + ; do + mv -f ../../gdb/testsuite/$test ../gdb/testsuite/$test-DISABLED || : + done + + # Run all the scheduled testsuite runs also in the PIE mode. + # See also: gdb-runtest-pie-override.exp + ###CHECK="$(echo $CHECK|sed 's#check//unix/[^ ]*#& &/-fPIC/-pie#g')" + +TESTS="" +%if 0%{?tests:1} + for test in %{tests}; do + TESTS="${TESTS:+$TESTS }$test" + done +%endif + ./orphanripper make %{?_smp_mflags} -k $CHECK TESTS="$TESTS" || : +) +for t in sum log +do + for file in testsuite*/gdb.$t + do + suffix="${file#testsuite}" + suffix="${suffix%/gdb.$t}" + ln $file gdb-%{_target_platform}$suffix.$t || : + done +done +# `tar | bzip2 | uuencode' may have some piping problems in Brew. +tar cjf gdb-%{_target_platform}.tar.bz2 gdb-%{_target_platform}*.{sum,log} +uuencode gdb-%{_target_platform}.tar.bz2 gdb-%{_target_platform}.tar.bz2 +cd ../.. +echo ====================TESTING END===================== +%endif + +%install +# Initially we're in the %{gdb_src} directory. +%if 0%{?_build_minimal} +cd %{gdb_build_minimal} +rm -rf $RPM_BUILD_ROOT + +%make_install %{?_smp_mflags} + +# Delete everything except the 'gdb' binary, and then rename it to +# 'gdb.minimal'. +rm -rfv $RPM_BUILD_ROOT%{_prefix}/{include,lib*,share} +rm -fv $RPM_BUILD_ROOT%{_bindir}/{gcore,gdbserver,gstack,gdb-add-index} +mv $RPM_BUILD_ROOT%{_bindir}/gdb $RPM_BUILD_ROOT%{_bindir}/gdb.minimal + +cd .. +%endif # 0%{?_build_minimal} + +# Install the full build. + +cd %{gdb_build} + +# We must remove the $RPM_BUILD_ROOT directory ourselves if we're not +# building gdb-minimal. +%if 0%{!?_build_minimal} +rm -rf $RPM_BUILD_ROOT +%endif # 0%{!?_build_minimal} + +%if 0%{?el6:1} +# GDB C++11 requires devtoolset gcc. +%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} +%endif + +%make_install %{?_smp_mflags} + +%if 0%{!?scl:1} +mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec +mv -f $RPM_BUILD_ROOT%{_bindir}/gdb $RPM_BUILD_ROOT%{_prefix}/libexec/gdb +%if 0%{?rhel:1} && 0%{?rhel} <= 6 +# RHEL-6: ln: invalid option -- 'r': https://bugzilla.redhat.com/show_bug.cgi?id=1384947 +# RHEL-6 also does not have: /usr/bin/realpath +ln -s $( + perl -le 'sub x{$_=$_[0];s{/+}{/}g;s{/$}{};return split "/";}@a=x shift;@b=x shift;while($a[0] eq $b[0]){shift @a;shift @b;}print join "/",map("..",@a),@b;' \ + $RPM_BUILD_ROOT%{_bindir} $RPM_BUILD_ROOT%{_prefix}/libexec/gdb +) $RPM_BUILD_ROOT%{_bindir}/gdb +%else +ln -s -r $RPM_BUILD_ROOT%{_prefix}/libexec/gdb $RPM_BUILD_ROOT%{_bindir}/gdb +%endif +%endif + +# Provide gdbtui for RHEL-5 and RHEL-6 as it is removed upstream (BZ 797664). +%if 0%{?rhel:1} && 0%{?rhel} <= 6 +test ! -e $RPM_BUILD_ROOT%{_prefix}/bin/gdbtui +install -m 755 %{SOURCE6} $RPM_BUILD_ROOT%{_prefix}/bin/gdbtui +ln -sf gdb.1 $RPM_BUILD_ROOT%{_mandir}/man1/gdbtui.1 +%endif # 0%{?rhel:1} && 0%{?rhel} <= 6 + +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d +touch -r %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d +sed 's#%%{_sysconfdir}#%{_sysconfdir}#g' <%{SOURCE4} >$RPM_BUILD_ROOT%{_sysconfdir}/gdbinit +touch -r %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit + +for i in `find $RPM_BUILD_ROOT%{_datadir}/gdb/python/gdb -name "*.py"` +do + # Files could be also patched getting the current time. + touch -r $RPM_BUILD_DIR/%{gdb_src}/gdb/version.in $i +done + +%if 0%{?_enable_debug_packages:1} && 0%{!?_without_python:1} +mkdir -p $RPM_BUILD_ROOT/usr/lib/debug%{_bindir} +cp -p ./gdb/gdb-gdb.py $RPM_BUILD_ROOT/usr/lib/debug%{_bindir}/ +for pyo in "" "-O";do + # RHEL-5: AttributeError: 'module' object has no attribute 'compile_file' + %{__python} $pyo -c 'import compileall, re, sys; sys.exit (not compileall.compile_dir("'"$RPM_BUILD_ROOT/usr/lib/debug%{_bindir}"'", 1, "'"/usr/lib/debug%{_bindir}"'"))' +done +%endif # 0%{?_enable_debug_packages:1} && 0%{!?_without_python:1} + +# Compile python files +%if 0%{!?_without_python:1} && (0%{!?rhel:1} || 0%{?rhel} > 7) +%py_byte_compile %{__python3} %{buildroot}%{_datadir}/gdb/python/gdb +%endif + +%if 0%{!?_without_python:1} +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +# BZ 999645: /usr/share/gdb/auto-load/ needs filesystem symlinks +for i in $(echo bin lib $(basename %{_libdir}) sbin|tr ' ' '\n'|sort -u);do + # mkdir to satisfy dangling symlinks build check. + mkdir -p $RPM_BUILD_ROOT%{_datadir}/gdb/auto-load/%{_root_prefix}/$i + ln -s $(echo %{_root_prefix}|sed 's#^/*##')/$i \ + $RPM_BUILD_ROOT%{_datadir}/gdb/auto-load/$i +done +%endif # 0%{!?rhel:1} || 0%{?rhel} > 6 +%if 0%{?rhel:1} && 0%{?rhel} <= 7 +# Temporarily now: +for LIB in $(echo lib $(basename %{_libdir})|tr ' ' '\n'|sort -u);do + LIBPATH="$RPM_BUILD_ROOT%{_datadir}/gdb/auto-load%{_root_prefix}/$LIB" + mkdir -p $LIBPATH + # basename is being run only for the native (non-biarch) file. + sed -e 's,@pythondir@,%{_datadir}/gdb/python,' \ + -e 's,@toolexeclibdir@,%{_root_prefix}/'"$LIB," \ + < $RPM_BUILD_DIR/%{gdb_src}/%{libstdcxxpython}/hook.in \ + > $LIBPATH/$(basename %{_root_prefix}/%{_lib}/libstdc++.so.6.*)-gdb.py + # Test the filename 'libstdc++.so.6.*' has matched. + test -f $LIBPATH/libstdc++.so.6.[0-9]*-gdb.py +done +test ! -e $RPM_BUILD_ROOT%{_datadir}/gdb/python/libstdcxx +cp -a $RPM_BUILD_DIR/%{gdb_src}/%{libstdcxxpython}/libstdcxx \ + $RPM_BUILD_ROOT%{_datadir}/gdb/python/libstdcxx +%endif # 0%{?rhel:1} && 0%{?rhel} <= 7 +for i in `find $RPM_BUILD_ROOT%{_datadir}/gdb -name "*.py"`; do + # Files are installed by install(1) not preserving the timestamps. + touch -r $RPM_BUILD_DIR/%{gdb_src}/gdb/version.in $i +done +%endif # 0%{!?_without_python:1} + +# gdb-add-index cannot be run even for SCL package on RHEL<=6. +%if 0%{?rhel:1} && 0%{?rhel} <= 6 +rm -f $RPM_BUILD_ROOT%{_bindir}/gdb-add-index +rm -f $RPM_BUILD_ROOT%{_mandir}/*/gdb-add-index.1* +%endif + +# Remove the files that are part of a gdb build but that are owned and +# provided by other packages. +# These are part of binutils + +rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/ +rm -f $RPM_BUILD_ROOT%{_infodir}/bfd* +rm -f $RPM_BUILD_ROOT%{_infodir}/standard* +rm -f $RPM_BUILD_ROOT%{_infodir}/configure* +# Just exclude the header files in the top directory, and don't exclude +# the gdb/ directory, as it contains jit-reader.h. +rm -rf $RPM_BUILD_ROOT%{_includedir}/*.h +rm -rf $RPM_BUILD_ROOT/%{_libdir}/lib{bfd*,opcodes*,iberty*,ctf*} + +# pstack obsoletion + +cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/gstack.1 +ln -s gstack.1 $RPM_BUILD_ROOT%{_mandir}/man1/pstack.1 +ln -s gstack $RPM_BUILD_ROOT%{_bindir}/pstack + +# Packaged GDB is not a cross-target one. +(cd $RPM_BUILD_ROOT%{_datadir}/gdb/syscalls + rm -f mips*.xml +%ifnarch sparc sparcv9 sparc64 + rm -f sparc*.xml +%endif +%ifnarch x86_64 + rm -f amd64-linux.xml +%endif +%ifnarch %{ix86} x86_64 + rm -f i386-linux.xml +%endif +) + +# Documentation only for development. +rm -f $RPM_BUILD_ROOT%{_infodir}/gdbint* +rm -f $RPM_BUILD_ROOT%{_infodir}/stabs* +rm -f $RPM_BUILD_ROOT%{_infodir}/ctf-spec* + +# Delete this too because the dir file will be updated at rpm install time. +# We don't want a gdb specific one overwriting the system wide one. + +rm -f $RPM_BUILD_ROOT%{_infodir}/dir + +%if 0%{?rhel:1} && 0%{?rhel} <= 7 +# /usr/share/gdb/guile/ gets installed even --without-guile +# https://sourceware.org/bugzilla/show_bug.cgi?id=17105 +rm -rf $RPM_BUILD_ROOT%{_datadir}/gdb/guile +%endif + +# These files are unrelated to Fedora Linux. +rm -f $RPM_BUILD_ROOT%{_datadir}/gdb/system-gdbinit/elinos.py +rm -f $RPM_BUILD_ROOT%{_datadir}/gdb/system-gdbinit/wrs-linux.py +rmdir $RPM_BUILD_ROOT%{_datadir}/gdb/system-gdbinit + +%files +# File must begin with "/": {GFDL,COPYING3,COPYING,COPYING.LIB,COPYING3.LIB} +%if 0%{!?el6:1} +%license COPYING3 COPYING COPYING.LIB COPYING3.LIB +%else +%doc COPYING3 COPYING COPYING.LIB COPYING3.LIB +%endif +%doc README NEWS +%{_bindir}/gdb +%{_bindir}/gcore +%{_mandir}/*/gcore.1* +%{_bindir}/gstack +%{_mandir}/*/gstack.1* +%{_bindir}/pstack +%{_mandir}/*/pstack.1* +# Provide gdb/jit-reader.h so that users are able to write their own GDB JIT +# plugins. +%{_includedir}/gdb +%if 0%{!?scl:1} +%files headless +%{_prefix}/libexec/gdb +%endif +%config(noreplace) %{_sysconfdir}/gdbinit +%{_mandir}/*/gdb.1* +%{_sysconfdir}/gdbinit.d +%{_mandir}/*/gdbinit.5* +# gdb-add-index cannot be run even for SCL package on RHEL<=6. +%if 0%{!?rhel:1} || 0%{?rhel} > 6 +%{_bindir}/gdb-add-index +%{_mandir}/*/gdb-add-index.1* +%endif +# Provide gdbtui for RHEL-5 and RHEL-6 as it is removed upstream (BZ 797664). +%if 0%{?rhel:1} && 0%{?rhel} <= 6 +%{_bindir}/gdbtui +%{_mandir}/*/gdbtui.1* +%endif # 0%{?rhel:1} && 0%{?rhel} <= 6 +%{_datadir}/gdb + +# don't include the files in include, they are part of binutils + +%if 0%{?_build_minimal} +%files minimal +%{_bindir}/gdb.minimal +%{_bindir}/gdb-add-index +%endif # 0%{?_build_minimal} + +%ifnarch sparc sparcv9 +%files gdbserver +%{_bindir}/gdbserver +%{_mandir}/*/gdbserver.1* +%if %{have_inproctrace} +%{_libdir}/libinproctrace.so +%endif # %{have_inproctrace} +%endif + +%if 0%{!?_without_python:1} +# [rhel] Do not migrate /usr/share/gdb/auto-load/ with symlinks on RHELs. +%if 0%{!?rhel:1} +%pre +for i in $(echo bin lib $(basename %{_libdir}) sbin|tr ' ' '\n'|sort -u);do + src="%{_datadir}/gdb/auto-load/$i" + dst="%{_datadir}/gdb/auto-load/%{_root_prefix}/$i" + if test -d $src -a ! -L $src;then + if ! rmdir 2>/dev/null $src;then + mv -n $src/* $dst/ + rmdir $src + fi + fi +done +%endif # 0%{!?rhel:1} +%endif # 0%{!?_without_python:1} + +%files doc +%doc %{gdb_build}/gdb/doc/{gdb,annotate}.{html,pdf} +%{_infodir}/annotate.info* +%{_infodir}/gdb.info* + +%if 0%{?scl:1} +# As of F-28, packages won't need to call /sbin/install-info by hand +# anymore. We make an exception for DTS here. +# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/MP2QVJZBOJZEOQO2G7UB2HLXKXYPF2G5/ + +%post doc +# This step is part of the installation of the RPM. Not to be confused +# with the 'make install ' of the build (rpmbuild) process. + +# For --excludedocs: +if [ -e %{_infodir}/gdb.info.gz ] +then + /sbin/install-info --info-dir=%{_infodir} %{_infodir}/annotate.info.gz || : + /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gdb.info.gz || : +fi + +%preun doc +if [ $1 = 0 ] +then + # For --excludedocs: + if [ -e %{_infodir}/gdb.info.gz ] + then + /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/annotate.info.gz || : + /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gdb.info.gz || : + fi +fi +%endif + +%changelog +* Tue Apr 18 2023 Keith Seitz - 12.1-1.el9 +- Initial import for GTS13. + +* Fri Jan 27 2023 Kevin Buettner - 12.1-16 +- Tweak gdb-6.3-rh-testversion-20041202.patch so that $_gdb_major + and $_gdb_minor will be obtained correctly. + +* Thu Jan 26 2023 Bruno Larsen +- Remove gdb-rhbz1398387-tab-crash-test.patch as that test didn't + work anymore. + +* Tue Jan 24 2023 Keith Seitz - 12.1-15 +- NVR bump for failed build. + +* Mon Jan 23 2023 Kevin Buettner +- More tweaks to gdb-6.6-buildid-locate-rpm.patch, in which rpmTag + is replaced with rpmDbiTagVal. + +* Mon Jan 23 2023 Keith Seitz - 12.1-14 + From Sergey Mende: +- Backport upstream patch "gdb: call check_typedef at beginning of + dwarf_expr_context::fetch_result". (Simon Marchi) + + +* Fri Jan 20 2023 Kevin Buettner - 12.1-13 +- Backport fix for problems associated with GCC 13's self-move warning. + (Jan-Benedict Glaw) +- Tweak gdb-6.6-buildid-locate-rpm.patch so that running GDB's configure + script will not error out due to GCC 13's warnings. + +* Thu Jan 19 2023 Alexandra Hájková - 12.1-12 +- Backport replace deprecated distutils.sysconfig in python-config. + (Lancelot SIX) + +* Thu Jan 19 2023 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Dec 19 2022 Andrew Burgess +- Backport upstream commits 38665d717a3 and c3efaf0afd9 to fix RHBZ + 2152431. + +* Fri Dec 16 2022 Keith Seitz +- Remove gdb-6.6-buildid-locate-rpm-scl.patch and + gdb-bz601887-dwarf4-rh-test.patch. + +* Fri Dec 9 2022 Andrew Burgess +- Remove gdb-fortran-frame-string.patch, a version of this test has + now been upstreamed. + +* Fri Dec 9 2022 Andrew Burgess +- Remove gdb-bfd-aliasing.patch. + +* Fri Dec 9 2022 Andrew Burgess +- Remove gdb-entryval-crash-1of3.patch, gdb-entryval-crash-2of3.patch, + and gdb-entryval-crash-3of3.patch. + +* Wed Dec 7 2022 Keith Seitz - 12.1-10 +- Disable Guile support for F38+, RHBZ 2151328. + +* Mon Dec 5 2022 Keith Seitz +- Remove gdb-physname-pr11734-test.patch, + gdb-physname-pr12273-test.patch, gdb-runtest-pie-override.patch, + gdb-test-expr-cumulative-archer.patch. + +* Thu Dec 1 2022 Kevin Buettner +- Remove gdb-6.3-threaded-watchpoints2-20050225.patch. The test in this + patch is a tweaked version of upstream test gdb.threads/watchthreads.exp + from 2004. It doesn't actually test anything new. + +* Thu Dec 1 2022 Bruno Larsen +- Remove gdb-rhbz1325795-framefilters-test.patch. This test doesn't + pass in the curret state, and the code that introduced the original + problem has been changed beyong recognition at this point. + +* Wed Nov 30 2022 Keith Seitz +- Backport "libiberty: Fix C89-isms in configure tests" and do likewise in + gdb-6.6-buildid-locate-rpm.patch. + (Florian Weimer, RHBZ 2143992) + +* Wed Nov 23 2022 Kevin Buettner +- Remove gdb-6.3-inheritancetest-20050726.patch. Upstream testcase + gdb.cp/impl-this.exp tests the printing of an instance variable from + an inherited class in the "print c" test. + +* Fri Nov 18 2022 Kevin Buettner +- Remove gdb-6.3-test-movedir-20050125.patch. Upstream test + gdb.base/fullname.exp provides coverage for this case and more. + +* Thu Nov 3 2022 Keith Seitz - 12.1-9 +- Add patch to fix ODR violations on powerpc and + enable LTO builds. (Keith Seitz, sw build/23395) + +* Tue Oct 18 2022 Bruno Larsen - 12.1-8 +- Backport fix to gdb.base/break-main-file-remove-fail.exp + (Tom de Vries) + +* Tue Oct 18 2022 Bruno Larsen - 12.1-7 +- Remove patch gdb-6.3-test-dtorfix. + Was upstreamed, will be back in the next rebase. + +* Thu Oct 13 2022 Alexandra Hájková - 12.1-7 +- Bump the release number. + +* Tue Oct 11 2022 Alexandra Hájková - 12.1-6 +- Backport upstream patch "Add support for readline 8.2". (Andreas Schwab) + +* Fri Oct 7 2022 Alexandra Hájková - 12.1-6 +- Update gdb-6.6-buildid-locate.patch to fix RHBZ 2122947. + +* Thu Jul 28 2022 Amit Shah +- Use the dist_name macro to identify the distribution + +* Thu Jul 21 2022 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint +- Rebuilt for Python 3.11 + +* Mon Jun 13 2022 Python Maint - 12.1-2 +- Bootstrap for Python 3.11 + +* Thu May 12 2022 Kevin Buettner - 12.1-1 +- Rebase to FSF GDB 12.1. +- Update gdb-6.6-buildid-locate.patch. +- Update gdb-6.6-buildid-locate-rpm.patch. +- Dropped backported patches from GDB 11.1 and 11.2. + +* Wed Mar 30 2022 Kevin Buettner - 11.2-3 +- Backport upstream patch which removes sizes from debuginfod download + messages when the size is not available (RHBZ 2068280, Aaron Merey). + +* Wed Feb 9 2022 Kevin Buettner - 11.2-2 +- On ix86, add -Wno-format-overflow to --enable-gdb-build-warnings. + (This is a workaround for the bogus warning/error that we now see + on i686 regarding a "may write a terminating nul past the end of + the destination" message for the sprintf() call in + global_symbol_searcher::search() in gdb/symtab.c.) + +* Wed Feb 9 2022 Kevin Buettner - 11.2-1 +- Rebase to FSF GDB 11.2. + +* Mon Jan 31 2022 Kevin Buettner - 11.1-12 +- Fix "sect_index_data not initialized" internal error. (RHBZ 2042664, + Kevin Buettner). + +* Mon Jan 31 2022 Keith Seitz - 11.1-11 +- Fix buld issues. (RHBZ 2042257, Keith Seitz, Andrew Burgess) +- Update libipt to 2.0.5. + +* Thu Jan 20 2022 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jan 12 2022 Alexandra Hájková - 11.1-9 +- Remove gdb-6.3-inferior-notification-20050721.patch + which adds problematic attach-32 test. + +* Tue Jan 11 2022 Alexandra Hájková - 11.1-8 +- Backport upstream patch "[PR gdb/27026] CTRL-C is ignored + when debug info is downloaded" (RHBZ 2024875, Aaron Merey). + +* Tue Jan 11 2022 Alexandra Hájková - 11.1-8 +- Backport upstream patch "rework "set debuginfod" commands" + (RHBZ 2024875, Simon Marchi). + +* Tue Jan 11 2022 Alexandra Hájková - 11.1-8 +- Backport upstream patch "Fix unittest.exp failure due to 'set debuginfod' addition" + (RHBZ 2024875, Tom Tromey). + +* Mon Jan 10 2022 Alexandra Hájková - 11.1-8 +- Add -Wno-unused-function to --enable-gdb-build-warnings to prevent the build failure: + "../../gdb/c-exp.y:3455:1: error: 'void c_print_token(FILE*, int, YYSTYPE)' + defined but not used [-Werror=unused-function]" + +* Mon Jan 10 2022 Alexandra Hájková - 11.1-8 +- Backport upstream patch "gdb: add set/show commands for managing debuginfod" + (RHBZ 2024875, Aaron Merey). + +* Mon Jan 10 2022 Alexandra Hájková - 11.1-8 +- Backport upstream patch "gdb.texinfo: Expand documentation for debuginfod" + (RHBZ 2024875, Aaron Merey). + +* Mon Dec 6 2021 Kevin Buettner - 11.1-7 +- Add -Wno-deprecated-declarations to --enable-gdb-build-warnings to work + around the python 3.11 deprecation of Py_SetProgramName. + +* Fri Nov 12 2021 Timm Bäder - 11.1-6 +- Use %%set_build_flags to populate all relevant build flags + +* Wed Nov 10 2021 Kevin Buettner - 11.1-5 +- Backport upstream fix and test case for a dprintf bug (RHBZ 2022177, Kevin + Buettner). + +* Tue Nov 9 2021 Bruno Larsen - 11.1-4 +- Backport manpage update to be closer to -help (RHBZ 853071) + +* Wed Nov 3 2021 Kevin Buettner - 11.1-3 +- Make adjustments to gdb-6.6-buildid-locate.patch, provided by Tom de Vries. + +* Mon Oct 11 2021 Kevin Buettner - 11.1-2 +- Backport upstream patch which papers over Fortran lexical analyzer + bug (RHBZ 2012976, Tom de Vries). + +* Mon Oct 04 2021 Kevin Buettner - 11.1-1 +- Rebase to FSF GDB 11.1. +- Adjust build-id related patches. +- Drop backported patches which are no longer relevant. +- Bump 'snapgnulib' date. + +* Thu Sep 30 2021 Alexandra Hájková - 10.2-9 +- Backport test for RHBZ 1976887 (Kevin Buettner). + +* Thu Sep 30 2021 Alexandra Hájková - 10.2-9 +- Backport upstream patch which fixes internal-error: Unexpected + type field location kind (RHBZ 1976887, Alexandra Hájková). + +* Wed Sep 22 2021 Bruno Larsen - 10.2-8 +- Backport "[gdb] Improve early exits for env var in debuginfod-support.c" + (Tom de Vries) + +* Wed Sep 22 2021 Bruno Larsen - 10.2-8 +- Backport "[gdb/cli] Don't assert on empty string for core-file" + (Tom de Vries) + +* Tue Sep 21 2021 Peter Robinson 10.2-7 +- Use guile 2.2 (rhbz #1901353) + +* Wed Jul 21 2021 Fedora Release Engineering 10.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jul 20 2021 Kevin Buettner - 10.2-5 +- Remove autoconf invocations from spec file. +- Remove BuildRequires: autoconf. + +* Mon Jun 14 2021 Kevin Buettner - 10.2-4 +- Backport upstream patches which fix multi-threaded debugging for + glibc-2.34 (RHBZ 1971096, Simon Marchi, Kevin Buettner). + +* Fri Jun 11 2021 Keith Seitz - 10.2-3 +- Backport "Exclude debuginfo files from 'outside ELF segments' warning". + (Keith Seitz, RH BZ 1898252) +- Backport "Fix crash when expanding partial symtab..." + (Tom Tromey. gdb/27743) +- Backport "[gdb/server] Don't overwrite fs/gs_base with -m32" +- (Tom de Vries) + +* Sun Jun 06 2021 Python Maint +- Rebuilt for Python 3.10 + +* Thu Jun 03 2021 Kevin Buettner - 10.2-1 +- Rebase to FSF GDB 10.2. +- Drop gdb-6.3-test-pie-20050107.patch. +- Drop gdb-6.3-test-self-20050110.patch. +- Drop gdb-6.5-bz218379-ppc-solib-trampoline-test.patch. +- Drop gdb-6.6-buildid-locate-core-as-arg.patch. +- Drop gdb-6.8-quit-never-aborts.patch. +- Drop gdb-archer-pie-addons-keep-disabled.patch. +- Drop gdb-archer-pie-addons.patch. +- Drop gdb-archer-vla-tests.patch. +- Drop gdb-archer.patch. +- Drop gdb-attach-fail-reasons-5of5.patch. +- Drop gdb-btrobust.patch. +- Drop gdb-bz1219747-attach-kills.patch. +- Drop gdb-bz533176-fortran-omp-step.patch. +- Drop gdb-dts-rhel6-python-compat.patch. +- Drop gdb-gnat-dwarf-crash-3of3.patch. +- Drop gdb-jit-reader-multilib.patch. +- Drop gdb-moribund-utrace-workaround.patch. +- Drop gdb-rhbz1930528-fix-gnulib-build-error.patch. +- Drop gdb-rhbz1932645-aarch64-ptrace-header-order.patch. +- Drop gdb-vla-intel-fix-print-char-array.patch. +- Drop gdb-vla-intel-fortran-strides.patch. +- Drop gdb-vla-intel-stringbt-fix.patch. +- Drop gdb-vla-intel-tests.patch. +- Drop process_psymtab_comp_unit-type-unit.patch. +- Drop gdb-testsuite-readline63-sigint-revert.patch. +- Drop gdb-config.patch. +- Add following upstream patches for Fortran stride / slice support: + gdb-rhbz1964167-convert-enum-range_type.patch + gdb-rhbz1964167-fortran-array-slices-at-prompt.patch + gdb-rhbz1964167-fortran-array-strides-in-expressions.patch + gdb-rhbz1964167-fortran-clean-up-array-expression-evaluation.patch + gdb-rhbz1964167-fortran-range_type-to-range_flag.patch + gdb-rhbz1964167-fortran-whitespace_array.patch + gdb-rhbz1964167-move-fortran-expr-handling.patch + +* Tue Jun 01 2021 Python Maint +- Bootstrap for Python 3.10 + +* Wed Mar 31 2021 Keith Seitz - 10.1-18 +- Backport "Save/restore file offset while reading notes in core file" + (Keith Seitz, RHBZ 1931344) + +* Wed Mar 31 2021 Jonathan Wakely - 10.1-17 +- Rebuilt for removed libstdc++ symbols (#1937698) + +* Tue Mar 23 2021 Kevin Buettner +- Remove spec file workaround for RHBZ 1912913. + +* Fri Mar 19 2021 Kevin Buettner - 10.1-16 +- Fix potential hang during gdbserver testing (RHBZ 1941080, Kevin Buettner). + +* Thu Mar 18 2021 Keith Seitz +- Disable libctf on RHEL (RHBZ 1935517). + +* Thu Mar 11 2021 Kevin Buettner - 10.1-15 +- Update libipt to version 2.0.4. + +* Fri Mar 05 2021 Kevin Buettner - 10.1-14 +- Backport patches which fix frame_id_p assertion failure (RHBZ 1909902, + Pedro Alves). + +* Fri Mar 5 2021 Jan Kratochvil - 10.1-13 +- Drop gdb-vla-intel-fortran-vla-strings.patch as it was still regressing the + testsuite. + +* Thu Mar 4 2021 Jan Kratochvil - 10.1-12 +- Fix gdb-vla-intel-fortran-vla-strings.patch to no longer modify cached + inferior types. + +* Thu Mar 4 2021 Jan Kratochvil - 10.1-11 +- Align gdb-vla-intel-fortran-vla-strings.patch more to upstream + fixing whitespaces in Fortran types printing. + +* Thu Mar 4 2021 Jan Kratochvil - 10.1-10 +- Reapply 10.1-8 after it has been accidentally reverted by 10.1-9. + +* Wed Feb 24 2021 Kevin Buettner - 10.1-9 +- Fix aarch64 build problem (RHBZ 1932645, Kevin Buettner). + +* Fri Feb 19 2021 Jan Kratochvil - 10.1-8 +- Fix gdb-vla-intel-fortran-vla-strings.patch for compatiblity with GraalVM. + +* Thu Feb 18 2021 Kevin Buettner - 10.1-7 +- Fix gnulib related build problem (RHBZ 1930528, Kevin Buettner). + +* Wed Feb 17 2021 Kevin Buettner - 10.1-6 +- Fix libstdc++ assert when performing tab completion; build must be made + with -D_GLIBCXX_DEBUG flag in order to trigger assert (RHBZ 1912985, + Kevin Buettner). + +* Thu Feb 11 2021 Keith Seitz +- Disable Guile support for RHEL9+. + +* Tue Jan 26 2021 Stephen Gallagher - 10.1-5 +- Build gdb-minimal for ELN + +* Tue Jan 26 2021 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Jan 23 2021 Kevin Buettner +- Add -Wno-stringop-overread to CFLAGS to work around gcc + bug (RH BZ 1912913) + +* Tue Jan 12 2021 Keith Seitz - 10.1-3 +- Disable xxhash support for RHEL. + +* Wed Dec 09 2020 Kevin Buettner - 10.1-2 +- Fix off-by-one error in ada_fold_name. (RHBZ 1905996, Kevin Buettner) + +* Wed Nov 04 2020 Kevin Buettner - 10.1-1 +- Rebase to FSF GDB 10.1. +- Bump 'snapgnulib' date. +- Drop gdb-rhbz1818011-bfd-gcc10-error.patch. +- Drop gdb-rhbz1822715-fix-python-deprecation.patch. +- Drop gdb-rhbz1829702-fix-python39.patch. +- Drop gdb-rhbz1838777-debuginfod.patch. +- Drop gdb-rhbz1844458-use-fputX_unfiltered.patch. +- Drop gdb-rhbz1869484-deleted-working-directory. +- Adjust build-id related patches. +- Ajust VLA patches. + +* Mon Nov 2 2020 Kevin Buettner - 9.2-8 +- Backport patches fixing abort when working directory is deleted. + (RHBZ 1869484, Sergio Durigan Junior) + +* Mon Nov 2 2020 Keith Seitz - 9.2-7 +- Fix missing debuginfo messages. (RH BZ 1887025) + +* Mon Aug 10 2020 Keith Seitz +- Disable LTO until upstream sorts out ODR problems. + +* Tue Aug 04 2020 Keith Seitz +- Update libipt to v2.0.2. + +* Sat Aug 01 2020 Fedora Release Engineering +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 22 2020 Tom Stellard +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Mon Jul 20 2020 Jeff Law - 9.2-3 +- Fix broken configure tests compromised by LTO +- Add BuildRequires: autoconf + +* Wed Jun 17 2020 Keith Seitz - 9.2-2 +- Backport debuginfod support. + +* Tue Jun 9 2020 Keith Seitz - 9.2-1 +- Rebase to FSF GDB 9.2. +- Add explicit python bytecode compilation. +- Change included files to patches to quell error from rpminspect. +- Fix attach-32.exp from gdb-6.3-inferior-notification-20050721.patch. + +* Fri Jun 5 2020 Keith Seitz - 9.1-8 +- Add patch for Python 3.9 and re-enable python. +- Update generate-*.sh to include stgit support. + +* Thu May 21 2020 Miro Hrončok - 9.1-7 +- Disable Python support to workaround problems with Python 3.9 (RHBZ 1829702) + +* Thu Apr 16 2020 Kevin Buettner - 9.1-6 +- Fix build breakage of gdb/python/python.c due to use of deprecated + Python function (RHBZ 1822715, Kevin Buettner) + +* Wed Apr 08 2020 Kevin Buettner - 9.1-5 +- Fix build breakage when compiling bfd/elf.c with gcc 10. (RHBZ 1818011, + H.J. Lu) + +* Mon Mar 2 2020 Sergio Durigan Junior - 9.1-4 +- Add '--without-guile' to GDB_MINIMAL_CONFIGURE_FLAGS. + +* Thu Feb 13 2020 Sergio Durigan Junior - 9.1-3 +- Fix 'Recursive call to 'missing_rpm_list_print' when pagination is + on and missing RPM list is big' (RHBZ 1801974, Sergio Durigan + Junior). + +* Mon Feb 10 2020 Sergio Durigan Junior - 9.1-2 +- Enable libxxhash during build. + +* Sat Feb 8 2020 Sergio Durigan Junior - 9.1-1 +- Rebase to FSF GDB 9.1. + +* Tue Feb 4 2020 Dan Čermák - 9.0.90.20200203-5 +- Re-enable guile support. + +* Mon Feb 3 2020 Sergio Durigan Junior - 9.0.90.20200203-4 +- Rebase to FSF GDB 9.0.90.20200203 (9.1pre). +- Bump 'snapgnulib' date. +- Update URL to 'https'. +- Adjust build-id patchset. +- Adjust VLA patchset. +- Drop 'gdb-6.8-bz436037-reg-no-longer-active.patch'. +- Drop 'gdb-6.6-scheduler_locking-step-is-default.patch'. + +* Tue Jan 28 2020 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Nov 19 2019 Sergio Durigan Junior - 9.0.50.20191119-2 +- Rebase to FSF GDB 9.0.50.20191119 (9.1pre). +- Drop 'gdb-readline62-ask-more-rh.patch'. +- Drop 'gdb-6.5-bz216711-clone-is-outermost.patch'. +- Adjust 'gdb-archer-pie-addons-keep-disabled.patch'. + +* Fri Oct 18 2019 Sergio Durigan Junior - 9.0.50.20191018-1 +- Rebase to FSF GDB 9.0.50.20191018 (9.1pre). +- Expand comment on "bundled(binutils)". +- Remove libctf's files from RPM_BUILD_ROOT. + +* Wed Oct 9 2019 Jerry James - 8.3.50.20190924-28 +- Rebuild for mpfr 4 + +* Wed Sep 25 2019 Sergio Durigan Junior - 8.3.50.20190924-27 +- Rebase to FSF GDB 8.3.50.20190924 (8.4pre). +- Update 'gdb-6.6-buildid-locate.patch'. + +* Sat Aug 24 2019 Sergio Durigan Junior - 8.3.50.20190824-26 +- Rebase to FSF GDB 8.3.50.20190824 (8.4pre). +- Update 'v1.5-libipt-static.patch'. + +* Wed Aug 21 2019 Miro Hrončok +- Rebuilt for Python 3.8 + +* Sun Aug 18 2019 Sergio Durigan Junior - 8.3.50.20190816-24 +- Update bundled libipt copy to v2.0.1. + +* Fri Aug 16 2019 Sergio Durigan Junior - 8.3.50.20190816-23 +- Rebase to FSF GDB 8.3.50.20190816 (8.4pre). +- Drop 'gdb-testsuite-readline63-sigint.patch'. +- Cleanup 'gdb-archer.patch' and remove several things, like the '-P' feature. + +* Wed Aug 14 2019 Miro Hrončok +- Rebuilt for Python 3.8 + +* Fri Aug 2 2019 Sergio Durigan Junior - 8.3.50.20190802-21 +- Rebase to FSF GDB 8.3.50.20190802 (8.4pre). + +* Thu Jul 25 2019 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jul 2 2019 Sergio Durigan Junior - 8.3.50.20190702-19 +- Rebase to FSF GDB 8.3.50.20190702 (8.4pre). +- Remove gdb-bz568248-oom-is-error.patch. + +* Tue Jun 25 2019 Sergio Durigan Junior - 8.3.50.20190625-18 +- Rebase to FSF GDB 8.3.50.20190625 (8.4pre). + +* Fri Jun 21 2019 Sergio Durigan Junior - 8.3.50.20190610-17 +- Rebuild for librpm9 (RH BZ 1720305). + +* Mon Jun 10 2019 Sergio Durigan Junior - 8.3.50.20190610-16 +- Rebase to FSF GDB 8.3.50.20190610 (8.4pre). + +* Sat Jun 1 2019 Sergio Durigan Junior - 8.3.50.20190601-15 +- Rebase to FSF GDB 8.3.50.20190601 (8.4pre). + +* Tue May 28 2019 Sergio Durigan Junior - 8.3.50.20190528-14 +- Rebase to FSF GDB 8.3.50.20190528 (8.4pre). + +* Fri May 17 2019 Sergio Durigan Junior - 8.3.50.20190517-13 +- Rebase to FSF GDB 8.3.50.20190517 (8.4pre). + +* Fri May 10 2019 Sergio Durigan Junior - 8.3.50.20190510-12 +- Rebase to FSF GDB 8.3.50.20190510 (8.4pre). + +* Wed May 1 2019 Sergio Durigan Junior - 8.3.50.20190501-11 +- Rebase to FSF GDB 8.3.50.20190501 (8.4pre). +- Adjust VLA testcases. +- Fix "gcore does not support COREFILTER_ELF_HEADERS" (RH BZ 1371380, + Sergio Durigan Junior). + +* Mon Apr 29 2019 Sergio Durigan Junior - 8.3.50.20190425-10 +- Share '/usr/bin/gdb-add-index' between gdb-minimal and gdb-headless + (Igor Gnatenko, RHBZ 1695015). + +* Mon Apr 29 2019 Sergio Durigan Junior - 8.3.50.20190425-9 +- Provide 'gdb-minimal' package, specific for the buildroot (RHBZ 1695015). +- Adjust 'gdb-libexec-add-index.patch' for the gdb-minimal case. + +* Thu Apr 25 2019 Sergio Durigan Junior - 8.3.50.20190425-8 +- Rebase to FSF GDB 8.3.50.20190425 (8.4pre), and fix build breakage. + +* Wed Apr 24 2019 Sergio Durigan Junior - 8.3.50.20190424-7 +- Rebase to FSF GDB 8.3.50.20190424 (8.4pre). + +* Fri Apr 12 2019 Sergio Durigan Junior - 8.3.50.20190412-6 +- Remove 'gdb-x86_64-i386-syscall-restart.patch'. + +* Fri Apr 12 2019 Sergio Durigan Junior - 8.3.50.20190412-5 +- Rebase to FSF GDB 8.3.50.20190412 (8.4pre). +- Adjust 'gdb-6.3-rh-testversion-20041202.patch'. +- Remove 'gdb-follow-child-stale-parent.patch'. +- Remove 'gdb-rhbz795424-bitpos-20of25.patch'. +- Remove 'gdb-rhbz795424-bitpos-21of25.patch'. +- Remove 'gdb-rhbz795424-bitpos-22of25.patch'. +- Remove 'gdb-rhbz795424-bitpos-23of25.patch'. +- Remove 'gdb-rhbz795424-bitpos-25of25.patch'. +- Remove 'gdb-rhbz795424-bitpos-25of25-test.patch'. +- Remove 'gdb-rhbz795424-bitpos-arrayview.patch'. +- Remove 'gdb-rhbz795424-bitpos-lazyvalue.patch'. +- Remove 'gdb-bz541866-rwatch-before-run.patch'. + +* Fri Mar 29 2019 Sergio Durigan Junior - 8.3.50.20190321-4 +- Fix 'gdb-8.3.50.20190321-3.fc31.x86_64: crashing' (by fixing + gdb-6.6-buildid-locate-rpm.patch) (RH BZ 1694091). + +* Thu Mar 21 2019 Sergio Durigan Junior - 8.3.50.20190321-3 +- Rebase to FSF GDB 8.3.50.20190321 (8.4pre). +- Remove gdb-temporary-fix-arm-build-error.patch. +- Fix "GDB crashes when using Python xmethods" (RH BZ 1690120). + +* Tue Mar 19 2019 Sergio Durigan Junior - 8.3.50.20190319-2 +- Rebase to FSF GDB 8.3.50.20190319 (8.4pre). +- Temporarily add gdb-temporary-fix-arm-build-error.patch. + +* Mon Mar 4 2019 Sergio Durigan Junior - 8.3.50.20190304-1 +- Rebase to FSF GDB 8.3.50.20190304 (8.4pre). +- Rewrite gdb-6.6-buildid-locate.patch. +- Remove gdb-python-gil.patch. + +* Fri Feb 22 2019 Sergio Durigan Junior - 8.2.50.20190222-19 +- Rebase to FSF GDB 8.2.50.20190222 (8.3pre). + +* Tue Feb 19 2019 Sergio Durigan Junior - 8.2.50.20190219-18 +- Rebase to FSF GDB 8.2.50.20190219 (8.3pre). +- BuildRequire on 'source-highlight-devel' and enable styled output. + +* Sun Feb 17 2019 Igor Gnatenko - 8.2.50.20190120-17 +- Disable temporarily guile support + +* Sun Feb 17 2019 Igor Gnatenko - 8.2.50.20190120-16 +- Rebuild for readline 8.0 + +* Tue Feb 5 2019 Sergio Durigan Junior - 8.2.50.20190120-15 +- Remove libmpx dependency when using '--with testsuite', since GCC9 + has dropped support for it. + +* Thu Jan 31 2019 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 21 2019 Sergio Durigan Junior - 8.2.50.20190120-13.fc30 +- Rebase to FSF GDB 8.2.50.20190120 (8.3pre). +- Fix 'gdb does crash randomly on loading symbols or setting a breakpoint' + (RHBZ 1638798, Keith Seitz). + +* Thu Dec 20 2018 Sergio Durigan Junior - 8.2.50.20181220-12.fc30 +- Rebase to FSF GDB 8.2.50.20181220 (8.3pre). + +* Tue Dec 11 2018 Sergio Durigan Junior - 8.2.50.20181130-11.fc30 +- Update gdb-6.3-gstack-20050411.patch (Pedro Alves). +- Update gdb-archer-next-over-throw-cxx-exec.patch (Pedro Alves). +- Update gdb-glibc-strstr-workaround.patch (Pedro Alves). + +* Fri Nov 30 2018 Sergio Durigan Junior - 8.2.50.20181130-10.fc30 +- Rebase to FSF GDB 8.2.50.20181130 (8.3pre). + +* Tue Nov 20 2018 Sergio Durigan Junior - 8.2.50.20181114-9.fc30 +- Declare _python_bytecompile_extra. +- Fix typo on gdb-x86_64-i386-syscall-restart.patch. + +* Wed Nov 14 2018 Sergio Durigan Junior - 8.2.50.20181114-8.fc30 +- Rebase to FSF GDB 8.2.50.20181114 (8.3pre). +- Drop gdb-6.3-ppc64syscall-20040622.patch. +- Drop gdb-6.3-ppc64displaysymbol-20041124.patch. +- Drop gdb-6.8-watchpoint-conditionals-test.patch. + +* Thu Oct 18 2018 Sergio Durigan Junior - 8.2.50.20181016-7.fc30 +- Use "--enable-unit-tests" flag when compiling GDB. + +* Tue Oct 16 2018 Sergio Durigan Junior - 8.2.50.20181016-6.fc30 +- Rebase to FSF GDB 8.2.50.20181016 (8.3pre). +- Enable and always run the unittests when building the package. + +* Wed Oct 10 2018 Sergio Durigan Junior - 8.2.50.20181010-5.fc30 +- Rebase to FSF GDB 8.2.50.20181010 (8.3pre). +- Remove 'gdb-6.8-sparc64-silence-memcpy-check.patch'. +- Remove 'gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch'. + +* Sat Oct 6 2018 Sergio Durigan Junior - 8.2.50.20181006-4.fc30 +- Rebase to FSF GDB 8.2.50.20181006 (8.3pre). + +* Thu Oct 4 2018 Jan Kratochvil - 8.2.50.20180917-3.fc30 +- Fix annobin complaints (RH BZ 1630564): + --without-stage1-ldflags: Disable static libstdc++ and libgcc linking. + --disable-libmcheck: That is a distro-level decision, not package decision. + +* Wed Sep 19 2018 Sergio Durigan Junior - 8.2.50.20180917-2.fc30 +- Remove 'gdb-6.5-bz203661-emit-relocs.patch'. +- Update changelog entry for last release. + +* Mon Sep 17 2018 Sergio Durigan Junior - 8.2.50.20180917-1.fc30 +- Rebase to FSF GDB 8.2.50.20180917 (8.3pre). +- Add 'gdb-rhbz795424-bitpos-arrayview.patch'. +- Remove 'gdb-rhbz881849-ipv6-1of3.patch'. +- Remove 'gdb-rhbz881849-ipv6-2of3.patch'. +- Remove 'gdb-rhbz881849-ipv6-3of3.patch'. +- Remove 'gdb-rhbz1187581-power8-regs-1of7.patch'. +- Remove 'gdb-rhbz1187581-power8-regs-2of7.patch'. +- Remove 'gdb-rhbz1187581-power8-regs-3of7.patch'. +- Remove 'gdb-rhbz1187581-power8-regs-4of7.patch'. +- Remove 'gdb-rhbz1187581-power8-regs-5of7.patch'. +- Remove 'gdb-rhbz1187581-power8-regs-6of7.patch'. +- Remove 'gdb-rhbz1187581-power8-regs-7of7.patch'. + +* Tue Aug 21 2018 Sergio Durigan Junior - 8.1.90.20180727-45.fc30 +- Enable verbose output when running "make". + +* Thu Aug 9 2018 Jan Kratochvil - 8.1.90.20180727-44.fc29 +- Add GDB support to access/display POWER8 registers (IBM, RH BZ 1187581). + +* Thu Aug 9 2018 Sergio Durigan Junior - 8.1.90.20180727-43.fc29 +- Reenable libipt. + +* Wed Aug 8 2018 Sergio Durigan Junior - 8.1.90.20180727-42.fc29 +- Again, temporarily disable libipt (needed to upgrade libipt to 2.0). + +* Wed Aug 8 2018 Sergio Durigan Junior - 8.1.90.20180727-41.fc29 +- Reenable libipt. +- Rebuild due to new libipt release. +- Adjust bundled libipt; remove unnecessary patch. +- Sync IPv6 patch with F-28 GDB. + +* Wed Aug 8 2018 Sergio Durigan Junior - 8.1.90.20180727-40.fc29 +- Temporarily disable libipt (needed to upgrade libipt to 2.0). + +* Wed Aug 8 2018 Jan Kratochvil - 8.1.90.20180727-39.fc29 +- [dts] Fix build by removing a patch for already removed pahole.py . +- [dts rhel6] Fix build by updating gdb-gnat-dwarf-crash-3of3.patch . + +* Mon Jul 30 2018 Sergio Durigan Junior - 8.1.90.20180727-38.fc29 +- Recompile to fix RH BZ 1609504 (due to RH BZ 1609577). + +* Sat Jul 28 2018 Sergio Durigan Junior - 8.1.90.20180727-37.fc29 +- Rebase to FSF GDB 8.1.90.20180727 (8.2pre). + +* Wed Jul 25 2018 Sergio Durigan Junior - 8.1.90.20180724-36.fc29 +- Rebase to FSF GDB 8.1.90.20180724 (8.2pre). + +* Sat Jul 14 2018 Sergio Durigan Junior - 8.1.90.20180714-35.fc29 +- Rebase to FSF GDB 8.1.90.20180714 (8.2pre). +- Backport IPv6 patch (RH BZ 881849, Sergio Durigan Junior). + +* Fri Jul 13 2018 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Jul 12 2018 Jan Kratochvil - 8.1.90.20180708-33.fc29 +- [dts] [rhel6] Do not use mpfr as rhel6 has mpfr-2 while GDB requires mpfr-3. + +* Thu Jul 12 2018 Jan Kratochvil - 8.1.90.20180708-32.fc29 +- Remove as no longer needed: + Workaround gcc-8.0: -Wno-error=cast-function-type,stringop-truncation + +* Thu Jul 12 2018 Jan Kratochvil - 8.1.90.20180708-31.fc29 +- [dts] Upgrade libstdc++-v3-python to 8.1.1-20180626. + +* Thu Jul 12 2018 Sergio Durigan Junior - 8.1.90.20180708-30.fc29 +- Rebuild due to GCC ABI change. + +* Sun Jul 8 2018 Sergio Durigan Junior - 8.1.90.20180708-29.fc29 +- Rebase to FSF GDB 8.1.90.20180708 (8.2pre). + +* Wed Jul 4 2018 Sergio Durigan Junior - 8.1.50.20180704-28.fc29 +- Rebase to FSF GDB 8.1.50.20180704 (8.2pre). +- Remove defattr directives from specfile. + +* Mon Jul 02 2018 Miro Hrončok +- Rebuilt for Python 3.7 + +* Fri Jun 29 2018 Sergio Durigan Junior - 8.1.50.20180629-26.fc29 +- Rebase to FSF GDB 8.1.50.20180629 (8.2pre). +- Remove pahole.py. +- Adjust handling of gdb-gdb.py. + +* Sun Jun 24 2018 Sergio Durigan Junior - 8.1.50.20180624-25.fc29 +- Rebase to FSF GDB 8.1.50.20180624 (8.2pre). + +* Wed Jun 20 2018 Sergio Durigan Junior - 8.1.50.20180618-24.fc29 +- Add BuildRequires: mpfr-devel (RH BZ 1593280). + +* Mon Jun 18 2018 Sergio Durigan Junior - 8.1.50.20180618-23.fc29 +- Rebase to FSF GDB 8.1.50.20180618 (8.2pre). + +* Mon Jun 18 2018 Sergio Durigan Junior - 8.1.50.20180613-22.fc29 +- Do not run /sbin/install-info when installing the documentation + (except for DTS). + +* Wed Jun 13 2018 Sergio Durigan Junior - 8.1.50.20180613-21.fc29 +- Rebase to FSF GDB 8.1.50.20180613 (8.2pre). + +* Wed Jun 13 2018 Miro Hrončok +- Rebuilt for Python 3.7 + +* Wed Jun 13 2018 Miro Hrončok +- Bootstrap for Python 3.7 + +* Fri Jun 8 2018 Sergio Durigan Junior - 8.1.50.20180605-18.fc29 +- Fix Python 3.7 breakage (RH BZ 1577396). + +* Tue Jun 5 2018 Sergio Durigan Junior - 8.1.50.20180605-17.fc29 +- Rebase to FSF GDB 8.1.50.20180605 (8.2pre). + +* Sat Jun 2 2018 Sergio Durigan Junior - 8.1.50.20180522-16.fc29 +- Rebase to FSF GDB 8.1.50.20180529 (8.2pre). + +* Wed May 30 2018 Sergio Durigan Junior - 8.1.50.20180522-15.fc28 +- Rebase to FSF GDB 8.1.50.20180522 (8.2pre). + +* Mon Apr 2 2018 Jan Kratochvil - 8.1-14.fc28 +- Revert 'Fix PDF build on Rawhide/F-29', rm -rf texinfo/ (from RH BZ 1562580). + +* Sat Mar 31 2018 Jan Kratochvil - 8.1-13.fc28 +- Fix PDF build on Rawhide/F-29. + +* Fri Mar 23 2018 Jan Kratochvil - 8.1-12.fc28 +- Add test: [s390x] Backport arch12 instructions decoding (RH BZ 1553104). + +* Sat Mar 3 2018 Jan Kratochvil - 8.1-11.fc28 +- Add: BuildRequires: gcc-c++ + https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_Requires + +* Tue Feb 20 2018 Rex Dieter - 8.1-10.fc28 +- rebuild (guile) + +* Sat Feb 17 2018 Jan Kratochvil - 8.1-9.fc28 +- [testsuite] Revert disable of BuildRequires: gcc-go (for RH BZ 1541639). + +* Fri Feb 09 2018 Igor Gnatenko - 8.1-8.fc28 +- Escape macros in %%changelog + +* Wed Feb 07 2018 Fedora Release Engineering - 8.1-7.fc28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Feb 6 2018 Jan Kratochvil - 8.1-6.fc28 +- Fix .spec build compatibility with <=F-27 and <=RHEL-7. +- [testsuite] Temporarily disable BuildRequires: gcc-go (for RH BZ 1541639). + +* Sun Feb 4 2018 Jan Kratochvil - 8.1-5.fc28 +- Workaround gcc-8.0: -Wno-error=cast-function-type,stringop-truncation +- Fix ppc64 stwux encoding as found by gcc-8.0 -Werror=tautological-compare. + +* Sun Feb 4 2018 Jan Kratochvil - 8.1-4.fc28 +- Fix -D_GLIBCXX_DEBUG gdb-add-index regression (RH BZ 1540559). + +* Wed Jan 31 2018 Sergio Durigan Junior - 8.1-3.fc26 +- Rebase to FSF GDB 8.1. + +* Fri Jan 19 2018 Sergio Durigan Junior - 8.0.90.20180109-2.fc26 +- Remove gdb-6.3-rh-dummykfail-20041202.patch (RH BZ 1535228). +- Remove gdb-glibc-vdso-workaround.patch (RH BZ 1535244). + +* Wed Jan 10 2018 Sergio Durigan Junior - 8.0.90.20180109-1.fc26 +- Rebase to pre-FSF GDB 8.1 (8.1.90.20180109). + +* Sat Dec 16 2017 Sergio Durigan Junior - 8.0.50.20171204-35.fc26 +- Rebase to FSF GDB 8.0.50.20171213 (8.1pre). + +* Sun Dec 10 2017 Sergio Durigan Junior - 8.0.50.20171204-34.fc26 +- chmod +x on the generate-*.sh script.s +- Remove references to gdb-8.0.1 from 'sources' and '.gitignore'. +- Regenerate first line of the patches (remove commit hash). +- Fix empty Source line. + +* Thu Dec 7 2017 Sergio Durigan Junior - 8.0.50.20171204-33.fc26 +- Rebase to FSF GDB 8.0.50.20171204 (8.1pre). +- Implemented new method for dealing with local patches. + +* Mon Dec 4 2017 Sergio Durigan Junior - 8.0.1-32.fc26 +- Convert all the patches to 'git-am' format. + +* Sat Dec 2 2017 Jan Kratochvil - 8.0.1-31.fc26 +- [testsuite] Fix BuildRequires for non-x86* arches. + +* Fri Oct 27 2017 Jan Kratochvil - 8.0.1-30.fc26 +- Use inlined func name for printing breakpoints (RH BZ 1228556, Keith Seitz). + +* Sat Oct 7 2017 Jan Kratochvil - 8.0.1-29.fc26 +- [s390x] Backport arch14 guarded-storage register support (RH BZ 1498758). + +* Thu Sep 28 2017 Jan Kratochvil - 8.0.1-28.fc26 +- Performance fix of gcore to use --readnever (for RH BZ 1493675). + +* Tue Sep 26 2017 Troy Dawson - 8.0.1-27.fc26 +- Cleanup spec file conditionals + +* Tue Sep 12 2017 Jan Kratochvil - 8.0.1-26.fc26 +- Rebase to FSF GDB 8.0.1 (8.0 stable branch). + +* Wed Aug 30 2017 Jan Kratochvil - 8.0-25.fc26 +- [rhel6] Fix T-stopping of processes after their detachment (RH BZ 1486223). + +* Thu Aug 24 2017 Jan Kratochvil - 8.0-24.fc26 +- Backport DWARF-5 and breakpoint fixes from upstream stable branch 8.0. + +* Sat Aug 19 2017 Jan Kratochvil - 8.0-23.fc26 +- [s390x] Backport arch12 support and other s390x fixes (RH BZ 1420304). + +* Fri Aug 18 2017 Jan Kratochvil - 8.0-22.fc26 +- Backport a fix for clang && -gsplit-dwarf debuggees (RH BZ 1482892). + +* Sun Aug 13 2017 Jan Kratochvil - 8.0-21.fc26 +- Fix compatibility with F-27 debuginfo packaging. +- Fix compatibility with F-27 librpm version 8. + +* Thu Aug 3 2017 Jan Kratochvil - 8.0-20.fc26 +- Two fixes from upstream stable branch 8.0. + +* Wed Aug 2 2017 Fedora Release Engineering - 8.0-19.fc26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 8.0-18.fc26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jun 12 2017 Jan Kratochvil - 8.0-17.fc26 +- [rhel6 dts] Use devtoolset gcc for GDB being now in C++11. + +* Sat Jun 10 2017 Jan Kratochvil - 8.0-16.fc26 +- [dts] Upgrade libstdc++-v3-python to 7.1.1-20170526. + +* Fri Jun 9 2017 Jan Kratochvil - 8.0-15.fc26 +- [rhel dts libipt] Fix#2 [-Werror=implicit-fallthrough=] with gcc-7.1.1. + +* Fri Jun 9 2017 Jan Kratochvil - 8.0-14.fc26 +- [rhel dts libipt] Fix [-Werror=implicit-fallthrough=] with gcc-7.1.1. + +* Fri Jun 9 2017 Jan Kratochvil - 8.0-13.fc26 +- Rebase to FSF GDB 8.0 final. +- [rhel7 dts] Rebase bundled libipt to 1.6.1. + +* Sat May 20 2017 Jan Kratochvil - 7.99.90.20170420-12.fc26 +- Move 'dnf-command(debuginfo-install)' gdb-headless -> gdb (RH BZ 1452335). + +* Mon May 15 2017 Fedora Release Engineering - 7.99.90.20170420-11.fc26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Mon May 8 2017 Jan Kratochvil - 7.99.90.20170420-10.fc26 +- [.spec] Update patches categorization. + +* Fri Apr 21 2017 Jan Kratochvil - 7.99.90.20170420-9.fc26 +- [ppc*] Fix gdb.arch/powerpc-power7.exp testcase regression (RH BZ 1440044). + +* Fri Apr 21 2017 Jan Kratochvil - 7.99.90.20170420-8.fc26 +- Rebase to FSF GDB 7.99.90.20170420 (pre-8.0 stable branch). + +* Wed Apr 19 2017 Jan Kratochvil - 7.12.50.20170309-7.fc26 +- Fix reported gdb-vla-intel-stringbt-fix.patch regression (SuSE). +- Remove gcc-7 compilation compatibility hack. + +* Fri Mar 10 2017 Jan Kratochvil - 7.12.50.20170309-6.fc26 +- [testsuite] [ppc*,s390*] Do not FAIL rhbz1261564-aarch64-watchpoint.exp + (RH BZ 1352563). + +* Thu Mar 9 2017 Jan Kratochvil - 7.12.50.20170309-5.fc26 +- Rebase to pre-7.13 FSF GDB trunk. + +* Thu Mar 2 2017 Jan Kratochvil - 7.12.50.20170226-4.fc26 +- Fix gdb-vla-intel-fortran-strides.patch rebase regression. + +* Tue Feb 28 2017 Jan Kratochvil - 7.12.50.20170226-3.fc26 +- Fix gdb.arch/amd64-entry-value-paramref.exp rebase regression. + +* Tue Feb 28 2017 Jan Kratochvil - 7.12.50.20170226-2.fc26 +- [testsuite] [rhel] Fix py-gil-mthread.exp for Python 2 compat (RH BZ 1427487). + +* Mon Feb 27 2017 Jan Kratochvil - 7.12.50.20170226-1.fc26 +- Rebase to pre-7.13 FSF GDB trunk. +- Dropped gdb-6.7-bz426600-DW_TAG_interface_type-test.patch as GCJ is no more. + +* Fri Feb 24 2017 Jan Kratochvil - 7.12.1-47.fc26 +- New testcase for: Fix -completion crash (Gary Benson, RH BZ 1398387). +- [testsuite] Use more standard_output_file. + +* Wed Feb 15 2017 Jan Kratochvil - 7.12.1-46.fc26 +- Fix -completion crash (Gary Benson, RH BZ 1398387). + +* Tue Feb 14 2017 Jan Kratochvil - 7.12.1-45.fc26 +- Release bump. + +* Sun Feb 12 2017 Jan Kratochvil - 7.12.1-44.fc26 +- [dts] Upgrade libstdc++-v3-python to 6.3.1-20170212. + +* Wed Feb 8 2017 Jan Kratochvil - 7.12.1-43.fc26 +- Fix build compatibility with gcc-7. + +* Wed Feb 8 2017 Stephen Gallagher - 7.12.1-42.fc26 +- Add missing %%license macro + +* Sat Jan 21 2017 Jan Kratochvil - 7.12.1-41.fc26 +- Rebase to released FSF GDB 7.12.1. + +* Tue Jan 17 2017 Jan Kratochvil - 7.12-40.fc26 +- Enable libinproctrace.so on all archs except arm32. + +* Thu Jan 12 2017 Jan Kratochvil - 7.12-39.fc26 +- Fix gdb-readline62-ask-more-rh.patch for Rawhide readline-7.0. + +* Thu Jan 12 2017 Igor Gnatenko - 7.12-38.fc26 +- Rebuild for readline 7.x + +* Thu Jan 12 2017 Jan Kratochvil - 7.12-37.fc25 +- [rhel6] Fix missing /usr/bin/realpath. + +* Wed Jan 11 2017 Jan Kratochvil - 7.12-36.fc25 +- Update from FSF GDB 7.12 stable branch to snapshot: gdb-7.12.0.20170111 + +* Sun Jan 8 2017 Jan Kratochvil - 7.12-35.fc25 +- Fix Python backtraces for 32-bit inferiors (Tom Tromey, RH BZ 1411094). + +* Fri Jan 6 2017 Jan Kratochvil - 7.12-34.fc25 +- Fix gdb-add-index for 444 *.debug files. + +* Mon Jan 02 2017 Rex Dieter - 7.12-33.fc25 +- fix logic of prior Conflicts + +* Mon Jan 02 2017 Rex Dieter - 7.12-32.fc25 +- Conflicts: gdb-headless < 7.12-29 (#1402554) + +* Fri Dec 09 2016 Charalampos Stratakis - 7.12-31.fc25 +- Python 3.6 rebuild: Rebuild with python3 support. + +* Fri Dec 09 2016 Charalampos Stratakis - 7.12-30.fc25 +- Python 3.6 rebuild: Rebuild without python3 support. + +* Mon Oct 31 2016 Jan Kratochvil - 7.12-29.fc25 +- Fix gdb-headless /usr/bin/ executables (BZ 1390251). + +* Mon Oct 24 2016 Jan Kratochvil - 7.12-28.fc25 +- Fix testcase: gdb.base/gdb-rhbz1156192-recursive-dlopen.exp + +* Sun Oct 23 2016 Jan Kratochvil - 7.12-27.fc25 +- More work on missing testcases present in rhel6 GDB; some still FAIL. + +* Thu Oct 20 2016 Jan Kratochvil - 7.12-26.fc25 +- Add missing testcases present in rhel6 GDB; some still FAIL. + +* Fri Oct 14 2016 Jan Kratochvil - 7.12-25.fc25 +- [rhel6] Fix .spec without devtoolset-6-build installed (RH BZ 1384947). + +* Wed Oct 12 2016 Jan Kratochvil - 7.12-24.fc25 +- Fix TLS (such as 'errno') regression. + +* Wed Oct 12 2016 Jan Kratochvil - 7.12-23.fc25 +- [testsuite] Various testsuite fixes. +- [aarch64] Fix gdb.cp/nextoverthrow.exp regression (Yao Qi). + +* Fri Oct 7 2016 Jan Kratochvil - 7.12-22.fc25 +- Fix .spec build: error: Macro %%buildisa has empty body + +* Fri Oct 7 2016 Jan Kratochvil - 7.12-21.fc25 +- Rebase to FSF GDB 7.12. + +* Thu Oct 6 2016 Jan Kratochvil - 7.12-0.20.20161006.fc25 +- Rebase to FSF GDB 7.11.90.20161006 (pre-7.12 branch snapshot). + +* Thu Sep 29 2016 Jan Kratochvil - 7.12-0.19.20160929.fc25 +- Rebase to FSF GDB 7.11.90.20160929 (pre-7.12 branch snapshot). + - Fixes GDB crashes on inf. function call scripts (RH BZ 1378147, Pedro Alves). + +* Wed Sep 28 2016 Jan Kratochvil - 7.12-0.18.20160928.fc25 +- Fix attachment of JIT-debug-enabled inf. (7.11.1 regression, RH BZ 1375553). +- Rebase to FSF GDB 7.11.90.20160928 (pre-7.12 branch snapshot). + +* Wed Sep 14 2016 Jan Kratochvil - 7.12-0.17.20160907.fc25 +- Fix description empty lines. + +* Wed Sep 14 2016 Jan Kratochvil - 7.12-0.16.20160907.fc25 +- Provide gdb-headless package (RH BZ 1195005). + +* Mon Sep 12 2016 Jan Kratochvil - 7.12-0.15.20160907.fc25 +- [testsuite] More testsuite fixes. + +* Mon Sep 12 2016 Jan Kratochvil - 7.12-0.14.20160907.fc25 +- Various mostly testsuite compatibility and regression fixes. + +* Wed Sep 7 2016 Jan Kratochvil - 7.12-0.13.20160907.fc25 +- Rebase to FSF GDB 7.11.90.20160907 (pre-7.12 branch snapshot). +- Rebase Intel VLA patchset. + +* Wed Sep 7 2016 Jan Kratochvil - 7.12-0.12.20160904.fc25 +- [rhel6+7] Fix compatibility of bison <3.1 and gcc >=6. + +* Sun Sep 4 2016 Jan Kratochvil - 7.12-0.11.20160904.fc25 +- Release bump for a mistaken build. + +* Sun Sep 4 2016 Jan Kratochvil - 7.12-0.10.20160904.fc25 +- Fix libipt bundling in 7.12. + +* Sun Sep 4 2016 Jan Kratochvil - 7.12-0.9.20160904.fc25 +- Rebase to FSF GDB 7.11.90.20160904 (pre-7.12 branch snapshot). +- Make Version tag 7.12; but it is still a pre-release. + +* Mon Aug 29 2016 Jan Kratochvil - 7.11.90.20160829-8.fc25 +- Rebase to FSF GDB 7.11.90.20160829 (pre-7.12 branch snapshot). + +* Fri Aug 26 2016 Jan Kratochvil - 7.11.90.20160807-7.fc25 +- Fix Intel VLA patchset regression: dynamic.exp: p varw filled + +* Tue Aug 23 2016 Jan Kratochvil - 7.11.90.20160807-6.fc25 +- Merge Fedora packaging changes from Fedora 24 gdb-7.11.1-83.fc24: + +* Tue Aug 23 2016 Jan Kratochvil - 7.11.1-83.fc24 +- [dts+el7] [x86*] Bundle libipt - fix#3 its initialization (RH BZ 1256513). + +* Tue Aug 23 2016 Jan Kratochvil - 7.11.1-82.fc24 +- [dts+el7] [x86*] Bundle libipt - fix#2 its initialization (RH BZ 1256513). + +* Tue Aug 23 2016 Jan Kratochvil - 7.11.1-81.fc24 +- [dts+el7] [x86*] Bundle libipt - fix its initialization (RH BZ 1256513). + +* Mon Aug 22 2016 Jan Kratochvil - 7.11.1-80.fc24 +- [dts] Upgrade libstdc++-v3-python to 6.1.1-20160817. + +* Fri Aug 19 2016 Jan Kratochvil - 7.11.1-79.fc24 +- [dts+el7] [x86*] Bundle linux_perf.h for libipt (RH BZ 1256513). + +* Wed Aug 17 2016 Jan Kratochvil - 7.11.1-78.fc24 +- [dts+el7] [x86*] Bundle libipt (RH BZ 1256513). + +* Sun Aug 7 2016 Jan Kratochvil - 7.11.90.20160807-5.fc25 +- Rebase to FSF GDB 7.11.90.20160807 (pre-7.12 branch snapshot). + +* Sun Jul 31 2016 Jan Kratochvil - 7.11.50.20160721-4.fc25 +- Testcase for: Load strictly build-id-checked core files only if no executable + is specified (Jan Kratochvil, RH BZ 1339862). + +* Thu Jul 28 2016 Jan Kratochvil - 7.11.50.20160721-3.fc25 +- Do not apply RHEL-6 patches on non-RHEL-6 even for testsuite. + +* Thu Jul 21 2016 Jan Kratochvil - 7.11.50.20160721-2.fc25 +- Rebase to FSF GDB 7.11.50.20160721 (pre-7.12 trunk snapshot). + +* Sun Jul 17 2016 Jan Kratochvil - 7.11.50.20160716-1.fc25 +- Rebase to FSF GDB 7.11.50.20160716 (pre-7.12 trunk snapshot). + +* Mon Jun 27 2016 Jan Kratochvil - 7.11.1-76.fc24 +- Test 'info type-printers' Python error (RH BZ 1350436). + +* Mon Jun 6 2016 Jan Kratochvil - 7.11.1-75.fc24 +- Rebase to released FSF GDB 7.11.1. + +* Mon May 30 2016 Jan Kratochvil - 7.11-74.fc24 +- Import bare DW_TAG_lexical_block (RH BZ 1325396). + +* Tue May 3 2016 Jan Kratochvil - 7.11-73.fc24 +- Fix compilation error by upstream symfile.c fix. + +* Tue May 3 2016 Jan Kratochvil - 7.11-72.fc24 +- Fix messages suggesting more recent RHEL gdbserver (RH BZ 1321114). + +* Wed Apr 27 2016 Jan Kratochvil - 7.11-71.fc24 +- Import upstream 7.11 branch stable fixes. + +* Sat Apr 23 2016 Jan Kratochvil - 7.11-70.fc24 +- New test for Python "Cannot locate object file for block" (for RH BZ 1325795). + +* Tue Apr 12 2016 Jan Kratochvil - 7.11-69.fc24 +- Never kill PID on: gdb exec PID (Jan Kratochvil, RH BZ 1219747). + +* Fri Apr 8 2016 Jan Kratochvil - 7.11-68.fc24 +- [--with testsuite] Add two more BuildRequires. + +* Fri Apr 8 2016 Jan Kratochvil - 7.11-67.fc24 +- [testsuite] Fix several false FAILs. + +* Wed Apr 6 2016 Jan Kratochvil - 7.11-66.fc24 +- Import upstream 7.11 branch stable fixes. + +* Wed Apr 6 2016 Jan Kratochvil - 7.11-65.fc24 +- Add messages suggesting more recent RHEL gdbserver (RH BZ 1321114). + +* Wed Apr 6 2016 Jan Kratochvil - 7.11-64.fc24 +- Fix non-stop gdb -p : internal error (Pedro Alves, RH BZ 1318049). + +* Sat Mar 19 2016 Jan Kratochvil - 7.11-63.fc24 +- .spec cleanup: Drop strict-aliasing GCC bug workaround (from RH BZ 1315191). + +* Fri Mar 18 2016 Jan Kratochvil - 7.11-62.fc24 +- .spec cleanup: Drop SCL obsoletes of devtoolset-1.1*: *-1.0* + +* Thu Mar 17 2016 Jan Kratochvil - 7.11-61.fc24 +- Add message suggesting gdbserver for non-matching PID namespaces. + +* Tue Mar 15 2016 Jan Kratochvil - 7.11-60.fc24 +- New Fedora GDB testfile: rhbz1261564-aarch64-watchpoint.exp +- Backport gdb-7.11 stable branch PR gdb/19676 fix (Pedro Alves). + +* Tue Mar 8 2016 Jan Kratochvil - 7.11-59.fc24 +- Fix strict-aliasing rules compilation error (RH BZ 1315191). + +* Fri Feb 26 2016 Jan Kratochvil - 7.11-58.fc24 +- Rebase VLA (Fortran dynamic arrays) strides (multi-dim. subarrays) from Intel. + +* Thu Feb 25 2016 Jan Kratochvil - 7.11-57.fc24 +- Release bump only. + +* Wed Feb 24 2016 Jan Kratochvil - 7.11-56.fc24 +- Release bump only. + +* Wed Feb 24 2016 Jan Kratochvil - 7.11-55.fc24 +- Rebase to released FSF GDB 7.11. + +* Tue Feb 16 2016 Jan Kratochvil - 7.10.90.20160216-54.fc24 +- Rebase to FSF GDB 7.10.90.20160216 (pre-7.11 branch snapshot). + +* Tue Feb 16 2016 Jan Kratochvil - 7.10.90.20160211-53.fc24 +- Drop gdb-testsuite-subdirs-revert.patch. + +* Sat Feb 13 2016 Jan Kratochvil - 7.10.90.20160211-52.fc24 +- Rebase to FSF GDB 7.10.90.20160211 (pre-7.11 branch snapshot). + +* Wed Feb 03 2016 Fedora Release Engineering - 7.10.50.20160131-51.fc24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Sun Jan 31 2016 Jan Kratochvil - 7.10.50.20160131-50.fc24 +- Rebase to FSF GDB 7.10.50.20160131 (trunk snapshot). + +* Sun Jan 31 2016 Jan Kratochvil - 7.10.50.20160121-49.fc24 +- Fix another false gcc6 compilation warning (Mark Wielaard). + +* Sun Jan 31 2016 Jan Kratochvil - 7.10.50.20160121-48.fc24 +- Fix false gcc6 compilation warning for: bfd/elf64-s390.c + +* Sun Jan 31 2016 Jan Kratochvil - 7.10.50.20160121-47.fc24 +- [testsuite] Fix false selftest.exp FAIL from system readline-6.3+ (Patrick Palka). + +* Fri Jan 22 2016 Jan Kratochvil - 7.10.50.20160121-46.fc24 +- Fix gdb.gdb/selftest.exp false FAIL. + +* Fri Jan 22 2016 Jan Kratochvil - 7.10.50.20160121-45.fc24 +- Rebase to FSF GDB 7.10.50.20160121 (trunk snapshot). + +* Wed Jan 20 2016 Jan Kratochvil - 7.10.50.20160106-44.fc24 +- Suppress librpm non-absolute filename warnings for /^remote:/ filenames. + +* Sat Jan 16 2016 Jan Kratochvil - 7.10.50.20160106-43.fc24 +- Test clflushopt instruction decode (for RH BZ 1262471). + +* Sat Jan 9 2016 Jan Kratochvil - 7.10.50.20160106-42.fc24 +- Simplify .spec: Remove conditional revert of: gdb-pahole-python2.patch + +* Sat Jan 9 2016 Jan Kratochvil - 7.10.50.20160106-41.fc24 +- Simplify .spec: Remove conditional revert of: gdb-6.8-attach-signalled-detach-stopped.patch +- Simplify .spec: Remove conditional revert of: gdb-6.8-quit-never-aborts.patch + +* Sat Jan 9 2016 Jan Kratochvil - 7.10.50.20160106-40.fc24 +- Merge gdb-rhel5-compat.patch into: gdb-6.8-attach-signalled-detach-stopped.patch + +* Sat Jan 9 2016 Jan Kratochvil - 7.10.50.20160106-39.fc24 +- Simplify .spec: Remove conditional revert of: gdb-readline62-ask-more-rh.patch + +* Sat Jan 9 2016 Jan Kratochvil - 7.10.50.20160106-38.fc24 +- Simplify .spec: Remove conditional revert of: gdb-6.6-buildid-locate-rpm-scl.patch + +* Sat Jan 9 2016 Jan Kratochvil - 7.10.50.20160106-37.fc24 +- Simplify .spec: Remove conditional revert of: gdb-dts-rhel6-python-compat.patch + +* Sat Jan 9 2016 Jan Kratochvil - 7.10.50.20160106-36.fc24 +- VLA (Fortran dynamic arrays) strides (multi-dimensional subarrays) from Intel. + +* Fri Jan 8 2016 Jan Kratochvil - 7.10.50.20160106-35.fc24 +- Fix false FAILs on too long base directory. + +* Fri Jan 8 2016 Jan Kratochvil - 7.10.50.20160106-34.fc24 +- Rebase to FSF GDB 7.10.50.20160106 (trunk snapshot). + +* Sat Nov 14 2015 Jan Kratochvil - 7.10.50.20151113-33.fc24 +- Rebase to FSF GDB 7.10.50.20151113 (trunk snapshot). +- [testsuite] BuildRequire libmpx for --with testsuite. +- Force libncursesw over libncurses to match the includes (RH BZ 1270534). + +* Thu Nov 12 2015 Fedora Release Engineering - 7.10.50.20151027-32.fc24 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Sun Nov 8 2015 Jan Kratochvil - 7.10.50.20151027-31.fc24 +- [aarch64] Fix build regression (RH BZ 1278902, bugreport by Peter Robinson). + +* Tue Nov 3 2015 Jan Kratochvil - 7.10.50.20151027-30.fc24 +- Rebase to FSF GDB 7.10.50.20151027 (trunk snapshot). + +* Mon Oct 12 2015 Jan Kratochvil - 7.10-29.fc23 +- Fix internal error on DW_OP_bregx(-1) (RH BZ 1270564). + +* Mon Sep 28 2015 Jan Kratochvil - 7.10-28.fc23 +- Add --with buildisa, remove %%{?_isa} from BuildRequires by default: + https://github.com/msimacek/koschei/issues/54 + +* Thu Sep 24 2015 Jan Kratochvil - 7.10-27.fc23 +- [rhel6,rhel7] Keep pahole.py and make it Python2 compatible. + +* Wed Sep 23 2015 Jan Kratochvil - 7.10-26.fc23 +- [rhel7] Provide libstdc++-v3-python with C++11 even on RHEL-7 (RH BZ 1239290). +- Do not provide libstdc++-v3-python lib64 files on 32-bit archs. +- [rhel6,rhel7] Delete pahole.py on Python2 systems. + +* Wed Sep 23 2015 Robert Kuska - 7.10-25.fc23 +- Python3.5 Rebuild: Rebuild wit python3 support + +* Wed Sep 23 2015 Robert Kuska - 7.10-24.fc23 +- Python3.5 Rebuild: Rebuild without python3 support + +* Fri Sep 18 2015 Jan Kratochvil - 7.10-23.fc23 +- Fix the pahole command breakage due to its Python3 port (RH BZ 1264532). + +* Sun Sep 13 2015 Jan Kratochvil - 7.10-22.fc23 +- Fix gstack to use gdb from $PATH (bugreport by Frank Hirtz, RH BZ 1262589). + +* Fri Sep 11 2015 Jan Kratochvil - 7.10-21.fc23 +- [testsuite] Fix gcc-gdb-plugin and gcc-go BuildRequires for --with testsuite. + +* Thu Sep 10 2015 Jan Kratochvil - 7.10-20.fc23 +- [ppc64le] Use skip_entrypoint for skip_trampoline_code (RH BZ 1260558). + +* Thu Sep 10 2015 Jan Kratochvil - 7.10-19.fc23 +- Add changelog entry and fix librpm dependency broken by Peter Robinson. + +* Thu Sep 3 2015 Jan Kratochvil - 7.10-18.fc23 +- Enable libipt (Intel Processor Trace Decoder Library). + +* Wed Sep 2 2015 Sergio Durigan Junior - 7.10-17.fc23 +- Fix 'Make the probes-based dynamic linker interface more robust to + errors' (Sergio Durigan Junior, RH BZ 1259132). + +* Tue Sep 1 2015 Jan Kratochvil - 7.10-16.fc23 +- [RHEL] Fix librpm Recommends compatibility. + +* Sat Aug 29 2015 Jan Kratochvil - 7.10-15.fc23 +- Rebase to FSF GDB 7.10 final. + +* Sat Aug 22 2015 Jan Kratochvil - 7.10-14.fc23 +- Re-enable --with testsuite BuildRequires: prelink for RHELs. + +* Sat Aug 22 2015 Jan Kratochvil - 7.10-13.fc23 +- Rebase to FSF GDB 7.9.90.20150822 (7.10 branch snapshot). +- Remove --with testsuite BuildRequires: prelink (prelink is orphaned in F-23+). + +* Thu Aug 6 2015 Sergio Durigan Junior - 7.9.90.20150717-12.fc23 +- Add "Recommends: default-yama-scope" (for RH BZ 1209492). + +* Thu Aug 6 2015 Jan Kratochvil - 7.9.90.20150717-11.fc23 +- Fix librpm version for f23. + +* Sun Aug 2 2015 Jan Kratochvil - 7.9.90.20150717-10.fc23 +- Fix unpackaged d-exp.c source for the debuginfo rpm. +- Fix librpm version dependency Koji build failure (for RH BZ 1249325). + +* Sun Aug 2 2015 Jan Kratochvil - 7.9.90.20150717-9.fc23 +- Fix librpm version dependency (for RH BZ 1249325, from Igor Gnatenko). + +* Sat Aug 1 2015 Jan Kratochvil - 7.9.90.20150717-8.fc23 +- Fix librpm version 3->7 for Rawhide + (RH BZ 1249325, bugreport by Zbigniew Jędrzejewski-Szmek). +- Fix yum vs. dnf message suggestion for Rawhide + (RH BZ 1249326, bugreport by Zbigniew Jędrzejewski-Szmek). + +* Fri Jul 17 2015 Jan Kratochvil - 7.9.90.20150717-7.fc23 +- Rebase to FSF GDB 7.9.90.20150717 (7.10 branch snapshot). + +* Fri Jul 10 2015 Jan Kratochvil - 7.9.90.20150709-6.fc23 +- Rebase to FSF GDB 7.9.90.20150709 (7.10 branch snapshot). + +* Tue Jul 7 2015 Jan Kratochvil - 7.9.50.20150531-5.fc23 +- Upgrade libstdc++-v3-python to r225521 (RH BZ 1239290). + +* Thu Jul 2 2015 Jan Kratochvil - 7.9.50.20150531-4.fc23 +- [RHEL] Use Python2, disable Guile. + +* Fri Jun 26 2015 Jan Kratochvil - 7.9.50.20150531-3.fc23 +- Fix 'info type-printers' Python error (Clem Dickey, RH BZ 1085576). + +* Tue Jun 16 2015 Jan Kratochvil - 7.9.50.20150531-2.fc23 +- Fix enum e e 'Attempt to use a type name as an expr.' (Keith Seitz, PR 16253). + +* Sun May 31 2015 Jan Kratochvil - 7.9.50.20150531-1.fc23 +- Rebase to FSF GDB 7.9.50.20150531 (pre-7.10 trunk snapshot). + +* Fri May 15 2015 Jan Kratochvil - 7.9.1-14.fc22 +- Fix ignored Requires for gdb-doc (RH BZ 1221814). + +* Thu May 14 2015 Jan Kratochvil - 7.9.1-13.fc22 +- Change 'Recommends: dnf-plugins-core' to 'dnf-command(debuginfo-install)'. + +* Wed May 13 2015 Jan Kratochvil - 7.9.1-12.fc22 +- Rebase to FSF GDB 7.9.1 (7.9 stable branch). +- Add 'Recommends: dnf-plugins-core' for 'dnf debuginfo-install'. + +* Thu Apr 2 2015 Jan Kratochvil - 7.9-11.fc22 +- Suggest s/debuginfo-install/dnf debuginfo-install/ (BZ 1208650, Omair Majid). + +* Sun Feb 22 2015 Jan Kratochvil - 7.9-10.fc22 +- Rebase to the final 7.9 release. + +* Sun Feb 22 2015 Jan Kratochvil - 7.8.90.20150202-9.fc22 +- Change Require->Recommends for gcc-gdb-plugin (RH BZ 1195005). + +* Sat Feb 21 2015 Till Maas - 7.8.90.20150214-8 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Mon Feb 16 2015 Jan Kratochvil - 7.8.90.20150214-7.fc22 +- Switch Python 2->3 (RH BZ 1014549). + +* Sat Feb 14 2015 Jan Kratochvil - 7.8.90.20150214-6.fc22 +- Rebase to 7.9-branch snapshot 7.8.90.20150214. + +* Wed Feb 11 2015 Jan Kratochvil - 7.8.90.20150202-5.fc22 +- Enable guile support. + +* Wed Feb 11 2015 Jan Kratochvil - 7.8.90.20150202-4.fc22 +- Fix gcc5 compilation errors (RH BZ 1190649). + +* Mon Feb 9 2015 Jan Kratochvil - 7.8.90.20150202-3.fc22 +- Require gcc-gdb-plugin. + +* Mon Feb 2 2015 Jan Kratochvil - 7.8.90.20150202-2.fc22 +- Rebase to 7.9-branch snapshot 7.8.90.20150202. +- Temporarily disable dg-extract-results.py to fix gdb.sum sorting. + +* Thu Jan 8 2015 Jan Kratochvil - 7.8.50.20150108-1.fc22 +- Rebase to pre-7.9 snapshot 7.8.50.20150108. +- Fix jit-reader.h for multi-lib. + +* Sun Dec 28 2014 Jan Kratochvil - 7.8.1-36.fc21 +- Rebase to 7.8.1.20141228 for a performance fix (PR binutils/17677). + +* Sat Dec 13 2014 Jan Kratochvil - 7.8.1-35.fc21 +- Fix resolve_dynamic_struct: Assertion `TYPE_NFIELDS (type) > 0' (PR 17642). + +* Sat Nov 22 2014 Jan Kratochvil - 7.8.1-34.fc21 +- [ppc64] Fix compatibility of Fedora errno workaround (for RH BZ 1166549). + +* Fri Nov 21 2014 Jan Kratochvil - 7.8.1-33.fc21 +- Fix regression accessing errno from a core file (RH BZ 1166549). + +* Thu Nov 20 2014 Sergio Durigan Junior - 7.8.1-32.fc21 +- Fix 'Unowned dir /usr/include/gdb/' (RH BZ 1164991). + +* Sat Nov 15 2014 Jan Kratochvil - 7.8.1-31.fc21 +- Fix '[RFE] please add add-auto-load-scripts-directory command' (RH + BZ 1163339, Jan Kratochvil). + +* Thu Oct 30 2014 Jan Kratochvil - 7.8.1-30.fc21 +- Rebase to FSF GDB 7.8.1. + +* Mon Oct 27 2014 Jan Kratochvil - 7.8-29.fc21 +- Backport vDSO regression. +- Revert the makeinfo workaround from 7.8-27.fc21. +- Further 1.75x improvement of the interactive symbols lookup (Doug Evans). + +* Mon Oct 20 2014 Jan Kratochvil - 7.8-28.fc21 +- Accelerate interactive symbols lookup 15x. + +* Sun Oct 19 2014 Jan Kratochvil - 7.8-27.fc21 +- Workaround makeinfo F-22 Bug 1154436. + +* Sun Oct 19 2014 Jan Kratochvil - 7.8-26.fc21 +- Import 5 upstream gdb-7.8 branch fixes (async fix by Pedro Alves). + +* Fri Oct 03 2014 Sergio Durigan Junior - 7.8-25.fc21 +- Fix 'Slow gstack performance' (RH BZ 1103894, Jan Kratochvil). + +* Fri Oct 3 2014 Jan Kratochvil - 7.8-24.fc21 +- Fix "save breakpoints" for signal catchpoints and disabled breakpoints + (BZ 1146170, Miroslav Franc). + +* Mon Sep 15 2014 Sergio Durigan Junior - 7.8-23.fc21 +- Install gdb/jit-reader.h on include directory (BZ 1141968). + +* Sun Sep 14 2014 Jan Kratochvil - 7.8-22.fc21 +- [testsuite] Fix runaway gdb.base/attach processes. + +* Sun Sep 7 2014 Jan Kratochvil - 7.8-21.fc21 +- Fix GDB SIGTT* Stopped when using the PID argument (BZ 1136704, Pedro Alves). + +* Wed Aug 20 2014 Jan Kratochvil - 7.8-20.fc21 +- Fix babeltrace errors (Yao Qi). +- Fix crash on Python frame filters with unreadable arg (BZ 1126177). + +* Sat Aug 16 2014 Fedora Release Engineering - 7.8-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Aug 14 2014 Jan Kratochvil - 7.8-18.fc21 +- [rhel] Adjust the previous patch for compilation on older GCCs. + +* Wed Aug 13 2014 Jan Kratochvil - 7.8-17.fc21 +- Fix Python GIL with gdb.execute("continue") (Phil Muldoon, BZ 1116957). + +* Mon Aug 4 2014 Jan Kratochvil - 7.8-16.fc21 +- Enable babeltrace compile-time feature. + +* Sat Aug 2 2014 Jan Kratochvil - 7.8-15.fc21 +- Rebase to FSF GDB 7.8. +- Display Fortran strings in backtraces. + +* Thu Jul 24 2014 Jan Kratochvil - 7.8-14.fc21 +- Rebase to FSF GDB 7.7.91.20140724 (pre-7.8 snapshot). +- Import TUI regression fix (Pedro Alves, BZ 1123003). + +* Tue Jul 22 2014 Jan Kratochvil - 7.8-13.fc21 +- Bump the package version number to final 7.8; still using 7.7.91.20140721.tar. + +* Tue Jul 22 2014 Jan Kratochvil - 7.7.91.20140721-12.fc21 +- Rebase to FSF GDB 7.7.91.20140721 (pre-7.8 snapshot). +- Rebase the Intel VLA patchset. +- New fix of the optimized-out entry data values crash (BZ 1111910). +- [testsuite] Fix paginate-*.exp race for "read1". + +* Fri Jul 11 2014 Jan Kratochvil - 7.7.90.20140711-11.fc21 +- Fix regression#2 of the optimized-out entry data values fix (of BZ 1111910). +- Rebase to FSF GDB 7.7.90.20140711 (pre-7.8 snapshot). +- [testsuite] Disable --with testsuite PIE testing, it has too many false FAILs. + +* Wed Jul 9 2014 Jan Kratochvil - 7.7.90.20140627-10.fc21 +- Fix regression of the optimized-out entry data values fix (of BZ 1111910). + +* Tue Jul 8 2014 Jan Kratochvil - 7.7.90.20140627-9.fc21 +- Rebase the Intel VLA patchset. +- Python completion w/overriden completer (Sergio Durigan Junior, BZ 1075199). +- Remove %%{_bindir}/mono-gdb.py workaround of mono BZ 815501. + +* Tue Jul 1 2014 Jan Kratochvil - 7.7.90.20140627-8.fc21 +- Do not remove %%{_datadir}/gdb/syscalls/ppc*.xml as it is secondary target. +- Remove: %%{_datadir}/gdb/guile +- Remove: %%{_datadir}/gdb/system-gdbinit + +* Mon Jun 30 2014 Jan Kratochvil - 7.7.90.20140627-7.fc21 +- Fix crash on optimized-out entry data values (BZ 1111910). + +* Fri Jun 27 2014 Jan Kratochvil - 7.7.90.20140627-6.fc21 +- Rebase to FSF GDB 7.7.90.20140627 (pre-7.8 snapshot). + +* Fri Jun 27 2014 Jan Kratochvil - 7.7.90.20140613-5.fc21 +- Continue backtrace even if a frame filter throws an exception (Phil Muldoon). + +* Tue Jun 24 2014 Jan Kratochvil - 7.7.90.20140613-4.fc21 +- [aarch64] Fix compilation error. + +* Fri Jun 20 2014 Jan Kratochvil - 7.7.90.20140613-3.fc21 +- Fix --with-system-readline with readline-6.3 patch 5. + - Use --enable-werror again. + +* Thu Jun 19 2014 Jan Kratochvil - 7.7.90.20140613-2.fc21 +- Temporarily use --disable-werror for readline-6.3's deprecated 'VFunction'. + +* Thu Jun 19 2014 Jan Kratochvil - 7.7.90.20140613-1.fc21 +- Rebase to FSF GDB 7.7.90.20140613 (pre-7.8 snapshot). + +* Sat Jun 07 2014 Fedora Release Engineering - 7.7.1-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Jun 3 2014 Jan Kratochvil - 7.7.1-20.fc21 +- Fix#2 /usr/share/gdb/system-gdbinit/ timestamps causing non-matching *.py[oc]. + +* Tue Jun 3 2014 Jan Kratochvil - 7.7.1-19.fc21 +- Fix /usr/share/gdb/auto-load/ (safely) dangling symlinks. +- Fix /usr/share/gdb/system-gdbinit/ timestamps causing non-matching *.py[oc]. + +* Tue Jun 3 2014 Jan Kratochvil - 7.7.1-18.fc21 +- [ppc64le testsuite] Add comments about prelink+valgrind not yet ported. + +* Fri May 30 2014 Jan Kratochvil - 7.7.1-17.fc21 +- [arm*,aarch64] Turn on --enable-werror, fix aarch64 for it. + +* Fri May 30 2014 Jan Kratochvil - 7.7.1-16.fc21 +- [aarch64] Fix signal frame unwinding (BZ 1086894, upstream). + +* Mon May 26 2014 Jan Kratochvil - 7.7.1-15.fc21 +- [testsuite] Drop BuildRequires: gcc-java+libgcj on Fedora (no longer in F21+). + +* Fri May 16 2014 Jan Kratochvil - 7.7.1-14.fc21 +- [rhel5] Drop the RHEL-5 support - simplify this .spec file. + +* Wed May 14 2014 Jan Kratochvil - 7.7.1-13.fc21 +- [s390*] Import upstream fix for 64->32 debugging. + +* Mon May 12 2014 Jan Kratochvil - 7.7.1-12.fc21 +- [s390*] Fix compilation error. + +* Fri May 9 2014 Jan Kratochvil - 7.7.1-11.fc21 +- [ppc*] Import ppc64le support (BZ 1096303, Ulrich Weigand). + +* Tue May 6 2014 Jan Kratochvil - 7.7.1-10.fc21 +- Rebase to FSF GDB 7.7.1. + +* Mon May 5 2014 Sergio Durigan Junior - 7.7-9.fc21 +- Improve testcase message for RH BZ 981154. + +* Mon May 5 2014 Jan Kratochvil - 7.7-8.fc21 +- Fix TLS access for -static -pthread (BZ 1080660). + +* Mon May 5 2014 Jan Kratochvil - 7.7-7.fc21 +- Add GFDL License to the main package (man pages are generated from .texinfo). + +* Thu Apr 24 2014 Sergio Durigan Junior - 7.7-6.fc21 +- Fix build failures for GCC 4.9 (Nick Clifton). + +* Thu Apr 24 2014 Sergio Durigan Junior - 7.7-5.fc21 +- Fix 'gdb gives highly misleading error when debuginfo pkg is present, + but not corresponding binary pkg' (RH BZ 981154). + +* Mon Feb 24 2014 Jan Kratochvil - 7.7-4.fc21 +- Fix crash of -readnow /usr/lib/debug/usr/bin/gnatbind.debug (BZ 1069211). + +* Sun Feb 23 2014 Jan Kratochvil - 7.7-3.fc21 +- [rhel6] DTS backward Python compatibility API (BZ 1020004, Phil Muldoon). +- [rhel6] Do not install its man page if gdb-add-index is not installed. +- [rhel] Do not migrate /usr/share/gdb/auto-load/ with symlinks on RHELs. +- Fix gdb-7.7 auto-load from /usr/share/gdb/auto-load/ regression. + +* Sun Feb 9 2014 Jan Kratochvil - 7.7-2.fc21 +- [rhel] Fix rebase build regression on RHEL systems (Tobias Burnus). + +* Fri Feb 7 2014 Jan Kratochvil - 7.7-1.fc21 +- Rebase to FSF GDB 7.7. +- New rpmbuild option: --with asan + +* Thu Jan 23 2014 Jan Kratochvil - 7.6.50.20140119-20.fc20 +- [s390*,ppc*] Enable secondary targets s390* and ppc* (BZ 1056259). + +* Sun Jan 19 2014 Jan Kratochvil - 7.6.50.20140119-19.fc20 +- Backport several gdb-7.6.x stable branch fixes (BZ 1055155). + +* Wed Dec 25 2013 Jan Kratochvil - 7.6.50.20130731-18.fc20 +- [aarch64] Backport two breakpoint/watchpoint fixes. + +* Mon Nov 18 2013 Jan Kratochvil - 7.6.50.20130731-17.fc20 +- [rhel7] [--with testsuite] Remove gcc-java&co. BuildRequires. + +* Sat Nov 9 2013 Jan Kratochvil - 7.6.50.20130731-16.fc20 +- Fix explicit Class:: inside class scope (BZ 874817, Keith Seitz). + +* Tue Nov 5 2013 Jan Kratochvil - 7.6.50.20130731-15.fc20 +- [aarch64] Backport two fixes (BZ 1026484). + +* Sun Nov 3 2013 Jan Kratochvil - 7.6.50.20130731-14.fc20 +- Fix %%{_bindir}gdb-add-index to also use -iex 'set auto-load no'. + +* Wed Oct 30 2013 Jan Kratochvil - 7.6.50.20130731-13.fc20 +- [rhel5] Fix /etc/gdbinit compatibility with python-2.4. + +* Mon Sep 30 2013 Sergio Durigan Junior - 7.6.50.20130731-12.fc20 +- Fix the case when GDB leaks memory because value_struct_elt does not call + check_typedef. (Doug Evans, BZ 15695, filed as RH BZ 1013453). + +* Wed Sep 25 2013 Jan Kratochvil - 7.6.50.20130731-11.fc20 +- Enable arm-linux-gnu and aarch64-linux-gnu targets on all archs (BZ 1011647). + +* Mon Sep 9 2013 Jan Kratochvil - 7.6.50.20130731-10.fc20 +- Fix the version string to be GNU standards compliant (BZ 1004949). + +* Fri Aug 30 2013 Jan Kratochvil - 7.6.50.20130731-9.fc20 +- Load /etc/gdbinit.d/*.{gdb,py} files automatically (BZ 981520). + +* Fri Aug 30 2013 Jan Kratochvil - 7.6.50.20130731-8.fc20 +- New %%pre to fix failed upgrade of the previous commit (BZ 999645). +- Fix false warnings of new %%pre during future upgrades (BZ 999645). + +* Wed Aug 28 2013 Jan Kratochvil - 7.6.50.20130731-7.fc20 +- Fix /usr/share/gdb/auto-load/ need of filesystem symlinks (BZ 999645). + It needs: yum remove gdb-heap; yum reinstall gdb; yum install gdb-heap + +* Thu Aug 8 2013 Jan Kratochvil - 7.6.50.20130731-6.fc20 +- [rhel5] tps-srpmtest does not set %%{rhel} (BZ 1002198, Miroslav Franc). + +* Thu Aug 8 2013 Jan Kratochvil - 7.6.50.20130731-5.fc20 +- Simplify BuildRequires by texlive-collection-latexrecommended (see BZ 919891). + +* Tue Aug 6 2013 Jan Kratochvil - 7.6.50.20130731-4.fc20 +- Revert the texlive-collection-latexrecommended change (see BZ 919891). + +* Tue Aug 6 2013 Jan Kratochvil - 7.6.50.20130731-3.fc20 +- Simplify BuildRequires by texlive-collection-latexrecommended (see BZ 919891). +- Fix crash on 'enable count' (Simon Marchi, BZ 993118). + +* Fri Aug 2 2013 Jan Kratochvil - 7.6.50.20130731-2.fc20 +- Drop ia64 patches and .spec support. + +* Fri Aug 2 2013 Jan Kratochvil - 7.6.50.20130731-1.fc20 +- Rebase to FSF GDB 7.6.50.20130731 (snapshot between 7.6 and future 7.7). + +* Mon Jul 29 2013 Jan Kratochvil - 7.6-36.fc20 +- Remove %%{gdb_docdir}, rebuild for unversioned docdirs (for BZ 986871). + +* Wed Jul 24 2013 Jan Kratochvil - 7.6-35.fc20 +- [ppc] Support Power8 CPU (IBM, BZ 731875). + +* Wed Jul 17 2013 Jan Kratochvil - 7.6-34.fc20 +- Remove --disablerepo='*' from BZ 554152 as it conflicts with BZ 981154. + +* Wed Jul 17 2013 Jan Kratochvil - 7.6-33.fc20 +- Fix yum install command output when the binary RPM is missing (BZ 981154). +- Fix the changlog entry formatting for 6.3.0.0-0.1. + +* Mon Jun 10 2013 Jan Kratochvil - 7.6-32.fc19 +- [scl] Disable Python frame filters on scl. +- Update libraries opening performance fix from upstream. +- Fix C++ lookups performance regression (Doug Evans, BZ 972677). + +* Tue May 28 2013 Jan Kratochvil - 7.6-31.fc19 +- [ppc] Backport hardware watchpoints fix (Edjunior Machado, BZ 967915). + +* Tue May 21 2013 Jan Kratochvil - 7.6-30.fc19 +- Backported Python frame filters (Phil Muldoon). +- Backported breakpoint conditions crash fix (Sergio Durigan Junior). + +* Sun May 19 2013 Jan Kratochvil - 7.6-29.fc19 +- Fix performance regression opening many libraries (Gary Benson, BZ 965106). + +* Thu May 9 2013 Jan Kratochvil - 7.6-28.fc19 +- Fix needless expansion of non-gdbindex symtabs (Doug Evans). + +* Mon May 6 2013 Jan Kratochvil - 7.6-27.fc19 +- [testsuite] [RHEL-5] Fix gdb-orphanripper.c runtime error. + +* Fri May 3 2013 Jan Kratochvil - 7.6-26.fc19 +- Fix gcore for vDSO (on ppc64). + +* Sat Apr 27 2013 Jan Kratochvil - 7.6-25.fc19 +- Fix false "Unknown error 512" on x32 (H.J. Lu, BZ 956883). + +* Fri Apr 26 2013 Jan Kratochvil - 7.6-24.fc19 +- Rebase to FSF GDB 7.6. + +* Wed Apr 24 2013 Jan Kratochvil - 7.5.91.20130423-23.fc19 +- Fix man page BuildRequires (for BZ 881892). + +* Tue Apr 23 2013 Jan Kratochvil - 7.5.91.20130423-22.fc19 +- [spec] Fix virtual bundles after GDB has been branched. + +* Tue Apr 23 2013 Jan Kratochvil - 7.5.91.20130423-21.fc19 +- Rebase to FSF GDB 7.5.91.20130423 (pre-7.6 snapshot). + +* Mon Apr 22 2013 Jan Kratochvil - 7.5.91.20130407-20.fc19 +- [SCL] Skip deprecated .gdb_index warning for Red Hat built files (BZ 953585). + +* Mon Apr 22 2013 Sergio Durigan Junior - 7.5.91.20130407-19.fc19 +- [RHEL-6] Regression test for RH BZ 947564. + +* Thu Apr 11 2013 Jan Kratochvil - 7.5.91.20130407-18.fc19 +- Provide man page for gcore.1 and gdb-add-index.1 (BZ 881892). + +* Sun Apr 7 2013 Jan Kratochvil - 7.5.91.20130407-17.fc19 +- [RHEL-5] Fix noarch doc build. + +* Sun Apr 7 2013 Jan Kratochvil - 7.5.91.20130407-16.fc19 +- Rebase to FSF GDB 7.5.91.20130407 (pre-7.6 snapshot). +- [SCL] Remove BuildRequires of gcc-go on SCL (Miroslav Franc, BZ 948982). +- Provide man page for gdbinit.5 (BZ 881892), document gdb -p in man (BZ 659000). + +* Tue Apr 2 2013 Jan Kratochvil - 7.5.91.20130402-15.fc19 +- Rebase to FSF GDB 7.5.91.20130402 (pre-7.6 snapshot). + +* Sat Mar 23 2013 Jan Kratochvil - 7.5.91.20130323-14.fc19 +- Rebase to FSF GDB 7.5.91.20130310 (pre-7.6 snapshot). +- Fix crash regression from the dlopen of libpthread.so fix (BZ 911712). + +* Mon Mar 11 2013 Jan Kratochvil - 7.5.50.20130310-13.fc19 +- [RHEL-5] Import build regression fix. + +* Sun Mar 10 2013 Jan Kratochvil - 7.5.50.20130310-12.fc19 +- Add workaround of PDF gdb-doc build (filed as RH BZ 919891). + +* Sun Mar 10 2013 Jan Kratochvil - 7.5.50.20130310-11.fc19 +- Re-enable (again) PDF in gdb-doc after texinfo RH BZ 876710 has been fixed. + +* Sun Mar 10 2013 Jan Kratochvil - 7.5.50.20130310-10.fc19 +- Rebase to FSF GDB 7.5.50.20130310 (pre-7.6 snapshot). +- Fix various entry-values sub-optimal results. + +* Mon Feb 25 2013 Jan Kratochvil - 7.5.50.20130215-9.fc19 +- testsuite: Fix gdb.arch/powerpc-power6.exp testcase (IBM, RH BZ 890900). + +* Tue Feb 19 2013 Jan Kratochvil - 7.5.50.20130215-8.fc19 +- Temporarily disable PDF in gdb-doc for still unavailable texinfo RH BZ 876710. + +* Mon Feb 18 2013 Jan Kratochvil - 7.5.50.20130215-7.fc19 +- Rebase to FSF GDB 7.5.50.20130215 (pre-7.6 snapshot). + +* Fri Feb 8 2013 Jan Kratochvil - 7.5.50.20130118-6.fc19 +- Re-enable PDF in gdb-doc after texinfo RH BZ 876710 has been fixed. + +* Mon Feb 4 2013 Jan Kratochvil - 7.5.50.20130118-5.fc19 +- Release bump only. + +* Fri Feb 1 2013 Jan Kratochvil - 7.5.50.20130118-4.fc19 +- Fix assert crashes with minidebuginfo (BZ 903522). + +* Fri Jan 25 2013 Jan Kratochvil - 7.5.50.20130118-3.fc19 +- Release bump only. + +* Mon Jan 21 2013 Jan Kratochvil - 7.5.50.20130118-2.fc19 +- [RHEL] Reintroduce gdb-6.8-quit-never-aborts.patch. + +* Sat Jan 19 2013 Jan Kratochvil - 7.5.50.20130118-1.fc19 +- Rebase to FSF GDB 7.5.50.20130118 (pre-7.6 snapshot). + +* Sun Jan 13 2013 Jan Kratochvil - 7.5.1-35.fc18 +- [testsuite] Fix gdb-orphanripper.c lockup on F-17 (/dev/pts/* glibc chown). + +* Tue Jan 8 2013 Jan Kratochvil - 7.5.1-34.fc18 +- Update dlopen to support map_failed probe of glibc (Gary Benson, BZ 886516). + +* Thu Jan 3 2013 Jan Kratochvil - 7.5.1-33.fc18 +- [ppc*] Fix PowerPC disassembly regression (Alan Modra, Edjunior Machado). + +* Thu Dec 13 2012 Jan Kratochvil - 7.5.1-32.fc18 +- 'dwz -m' parsing fix (Tom Tromey). + +* Mon Dec 3 2012 Jan Kratochvil - 7.5.1-31.fc18 +- Fix DW_OP_GNU_implicit_pointer offset bug (Tom Tromey). + +* Sun Dec 2 2012 Jan Kratochvil - 7.5.1-30.fc18 +- Temporarily disable PDF in gdb-doc before texinfo RH BZ 876710 gets fixed. + +* Thu Nov 29 2012 Jan Kratochvil - 7.5.1-29.fc18 +- Provide Source URL when it is a release. + +* Thu Nov 29 2012 Jan Kratochvil - 7.5.1-28.fc18 +- Fix (unsplit) split info doc. + +* Thu Nov 29 2012 Jan Kratochvil - 7.5.1-27.fc18 +- Rebase to FSF GDB 7.5.1 (7.5 stable branch). + +* Fri Nov 9 2012 Jan Kratochvil - 7.5.0.20120926-26.fc18 +- Fix `GDB cannot access struct member whose offset is larger than 256MB' + (RH BZ 871066). + +* Fri Oct 5 2012 Jan Kratochvil - 7.5.0.20120926-25.fc18 +- entry values: Fix resolving in inlined frames. + +* Thu Sep 27 2012 Jan Kratochvil - 7.5.0.20120926-24.fc18 +- Permit passing pointers as address number even for C++ methods (Keith Seitz). + +* Thu Sep 27 2012 Jan Kratochvil - 7.5.0.20120926-23.fc18 +- Fix crash printing classes (BZ 849357, Tom Tromey). + +* Wed Sep 26 2012 Jan Kratochvil - 7.5.0.20120926-22.fc18 +- Fix .spec 'bundled' Provides for the stable branch rebase. + +* Wed Sep 26 2012 Jan Kratochvil - 7.5.0.20120926-21.fc18 +- [ppc32] Fix stepping over symbol-less code crash regression (BZ 860696). +- Rebase to FSF GDB 7.5.0.20120926 (7.5 stable branch). + - Remove the .spec Source keyword URL as not valid now. + +* Fri Sep 14 2012 Jan Kratochvil - 7.5-20.fc18 +- [RHEL-6] Disable no longer valid workaround of man pages .gz suffix. + +* Sat Aug 18 2012 Jan Kratochvil - 7.5-19.fc18 +- Rebase to FSF GDB 7.5. +- Update dlopen to support two variants of glibc (Gary Benson, BZ 669432). + +* Fri Aug 17 2012 Jan Kratochvil - 7.4.91.20120801-18.fc18 +- Drop Source URL for snapshots. +- Separate %%{snapgnulib} from %%{snap}. +- Fix %%{libstdcxxpython} to be %%{name}-prefixed. +- Fix debug info for go-exp.y and go-exp.c. +- Include RHEL-5 compatible %%{buildroot} cleanup. +- Use %%__global_ldflags. + +* Wed Aug 1 2012 Jan Kratochvil - 7.4.91.20120801-17.fc18 +- Rebase to FSF GDB 7.4.91.20120801. +- [dwz] Rebase it from FSF GDB HEAD. + +* Thu Jul 19 2012 Fedora Release Engineering - 7.4.50.20120714-16.fc18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 16 2012 Jan Kratochvil - 7.4.50.20120714-15.fc18 +- [devtoolset] Include Obsoletes of devtoolset-1.0-* by devtoolset-1.1-*. + +* Sun Jul 15 2012 Jan Kratochvil - 7.4.50.20120714-14.fc18 +- Rebase to FSF GDB 7.4.50.20120714. + - Fix entryval feature crash on some .debug files optimized by dwz (BZ 839596). +- Fix another stale frame_info * (PR 11914, like PR 13866). + +* Fri Jul 6 2012 Jan Kratochvil - 7.4.50.20120703-13.fc18 +- [RHEL] Disable MiniDebugInfo F-18 feature on RHEL <= 6 (BZ 834068). + +* Fri Jul 6 2012 Jan Kratochvil - 7.4.50.20120703-12.fc18 +- Fix .spec metadata for the MiniDebugInfo F-18 feature (BZ 834068). + +* Fri Jul 6 2012 Jan Kratochvil - 7.4.50.20120703-11.fc18 +- [archer-tromey-dwz-multifile-rebase] Fix DWARF files reading (Tom Tromey). + +* Fri Jul 6 2012 Jan Kratochvil - 7.4.50.20120703-10.fc18 +- Fix build-id-core-loads internal error (BZ 837870). + +* Thu Jul 5 2012 Jan Kratochvil - 7.4.50.20120703-9.fc18 +- Implement MiniDebugInfo F-18 Feature consumer (Alexander Larsson, BZ 834068). + +* Tue Jul 3 2012 Jan Kratochvil - 7.4.50.20120703-8.fc18 +- Rebase to FSF GDB 7.4.50.20120703. +- [archer-tromey-dwz-multifile-rebase] Merge new branch (Tom Tromey). +- [arm] <--with testsuite>: Disable fpc BuildRequires as it is not yet built. +- Revert function returning pointer fix (PR 9514) regressing Fedora errno patch. + +* Thu Jun 21 2012 Sergio Durigan Junior - 7.4.50.20120603-7.fc18 +- Include testcase for BZ 818343. + +* Tue Jun 19 2012 Jan Kratochvil - 7.4.50.20120603-6.fc18 +- Fix regression of undisplayed missing shared libraries caused by a fix for: + GNU/Linux core open: Can't read pathname for load map: Input/output error. + +* Sun Jun 17 2012 Sergio Durigan Junior - 7.4.50.20120603-5.fc18 +- Include testcase for BZ 823789. + +* Thu Jun 14 2012 Jan Kratochvil - 7.4.50.20120603-4.fc18 +- Support DW_OP_GNU_parameter_ref for -O2 -g inferiors (BZ 827375). + +* Wed Jun 6 2012 Jan Kratochvil - 7.4.50.20120603-3.fc18 +- Disable -lmcheck in the development builds. +- Fix assertion on some files as glibc-2.15.90-8.fc18 (Doug Evans). + +* Sun Jun 3 2012 Jan Kratochvil - 7.4.50.20120603-2.fc18 +- Fix Release. +- Make yum --enablerepo compatible with at least mock-1.1.21-1.fc16 Rawhide cfg. + +* Sun Jun 3 2012 Jan Kratochvil - 7.4.50.20120602-1.fc18 +- Rebase to FSF GDB 7.4.50.20120602. +- [testsuite] BuildRequire gcc-go. +- Drop printing 2D C++ vectors as matrices which no longer worked (BZ 562763). +- Fix dejagnu-1.5-4.fc17 compatibility for Go (for BZ 635651). +- Use librpm.so.3 for rpm-4.10.0 in Fedora 18. +- Revert recent breakage of UNIX objfiles order for symbols lookup. + +* Sat Jun 2 2012 Jan Kratochvil - 7.4.50.20120120-48.fc17 +- [ppc] Fix hardware watchpoints on PowerPC (BZ 827600, Edjunior Machado). + +* Mon May 28 2012 Jan Kratochvil - 7.4.50.20120120-47.fc17 +- Workaround PR libc/14166 for inferior calls of strstr. + +* Mon May 14 2012 Jan Kratochvil - 7.4.50.20120120-46.fc17 +- [RHEL5] Workaround doc build race. + +* Mon May 14 2012 Jan Kratochvil - 7.4.50.20120120-45.fc17 +- Rename "set auto-load" patchset variable $ddir to $datadir. + +* Wed May 9 2012 Jan Kratochvil - 7.4.50.20120120-44.fc17 +- Fix in "set auto-load" patchset for SCL scripts inheritance (BZ 815910). + +* Wed Apr 25 2012 Jan Kratochvil - 7.4.50.20120120-43.fc17 +- [RHEL5] Workaround kernel for detaching SIGSTOPped processes (BZ 809382). + +* Tue Apr 24 2012 Jan Kratochvil - 7.4.50.20120120-42.fc17 +- Update "set auto-load" patchset and the --with-auto-load-safe-path setting. +- [RHEL] Disable gdb-add-index even on RHEL-6 as RHEL-6.0 had too old elfutils. + +* Wed Apr 18 2012 Jan Kratochvil - 7.4.50.20120120-41.fc17 +- [RHEL] Fix --with-auto-load-safe-path systems prior to /usr move. + +* Wed Apr 18 2012 Jan Kratochvil - 7.4.50.20120120-40.fc17 +- Security fix for loading untrusted inferiors, see "set auto-load" (BZ 756117). + +* Fri Apr 13 2012 Jan Kratochvil - 7.4.50.20120120-39.fc17 +- [RHEL7] Fix/remove readline-devel BuildRequires redundant distro suffic .fc17. + +* Wed Apr 4 2012 Jan Kratochvil - 7.4.50.20120120-38.fc17 +- Workaround crashes from stale frame_info pointer (BZ 804256). + +* Wed Apr 4 2012 Jan Kratochvil - 7.4.50.20120120-37.fc17 +- testsuite: Fix break-interp.exp expections for updated glibc (BZ 752834). + +* Wed Apr 4 2012 Jan Kratochvil - 7.4.50.20120120-36.fc17 +- [RHEL5,RHEL6] Reintroduce fix attaching to stopped processes. + +* Fri Mar 30 2012 Jan Kratochvil - 7.4.50.20120120-35.fc17 +- Fix performance regressions with .gdb_index (Tom Tromey, BZ 805274). + +* Fri Mar 30 2012 Jan Kratochvil - 7.4.50.20120120-34.fc17 +- Fixup %%{_datadir}/gdb timestamps for multilib conflicts on RHELs. + +* Mon Mar 26 2012 Jan Kratochvil - 7.4.50.20120120-33.fc17 +- [vla] Fix regression on no type for subrange from IBM XLF Fortran (BZ 806920). + +* Sat Mar 17 2012 Jan Kratochvil - 7.4.50.20120120-32.fc17 +- Fix loading of core files without build-ids but with build-ids in executables. + +* Fri Mar 9 2012 Jan Kratochvil - 7.4.50.20120120-31.fc17 +- Fix an implied regression by the inferior calls fix below (BZ 799531). + +* Fri Mar 9 2012 Jan Kratochvil - 7.4.50.20120120-30.fc17 +- Fix SELinux deny_ptrace .spec build rules (BZ 786878). + +* Tue Mar 6 2012 Jan Kratochvil - 7.4.50.20120120-29.fc17 +- Fix inferior calls, particularly uncaught thrown exceptions (BZ 799531). +- Fix DWARF DIEs CU vs. section relative offsets (Joel Brobecker, me). + +* Tue Mar 6 2012 Jan Kratochvil - 7.4.50.20120120-28.fc17 +- Print reasons for failed attach/spawn incl. SELinux deny_ptrace (BZ 786878). + +* Sun Mar 4 2012 Jan Kratochvil - 7.4.50.20120120-27.fc17 +- [rhel5] Fix up the previous commit (BZ 799318). + +* Sun Mar 4 2012 Jan Kratochvil - 7.4.50.20120120-26.fc17 +- [rhel5] Fix up the previous commit (BZ 799318). + +* Sun Mar 4 2012 Jan Kratochvil - 7.4.50.20120120-25.fc17 +- [rhel5] Workaround rpmbuild to make the doc subpkg noarch again (BZ 799318). + +* Fri Mar 2 2012 Jan Kratochvil - 7.4.50.20120120-24.fc17 +- [vla] Fix crash for dynamic.exp with gcc-gfortran-4.1.2-51.el5.x86_64. +- Reintroduce RHEL-5 glibc workaround for bt-clone-stop.exp. +- testsuite: Update/fix rh634108-solib_address.exp for the upstreamed API. + +* Wed Feb 29 2012 Jan Kratochvil - 7.4.50.20120120-23.fc17 +- Add kernel vDSO workaround (`no loadable ...') on RHEL-5 (kernel BZ 765875). +- Fix skipping of prologues on RHEL-5 gcc-4.1 -O2 -g code (BZ 797889). +- Fix breakpoint warning during 'next' over exit() (Tom Tromey, BZ 797892). + +* Tue Feb 28 2012 Jan Kratochvil - 7.4.50.20120120-22.fc17 +- testsuite: Fix gdb.base/macscp.exp ccache workaround in SCL mode. +- Adjust the RHEL/F version string automatically (BZ 797651, BZ 797646). +- Provide gdbtui for RHEL-5 and RHEL-6 as it is removed upstream (BZ 797664). + +* Fri Feb 24 2012 Jan Kratochvil - 7.4.50.20120120-21.fc17 +- testsuite: Do not use gcc44/gfortran44 on RHEL-5 if in SCL mode. + +* Wed Feb 22 2012 Jan Kratochvil - 7.4.50.20120120-20.fc17 +- Fix libinproctrace.so build on RHEL-5 i386 (disable it on RHEL-5). + +* Wed Feb 22 2012 Jan Kratochvil - 7.4.50.20120120-19.fc17 +- Implement SCL (scl-utils-build) macros. + +* Tue Feb 21 2012 Jan Kratochvil - 7.4.50.20120120-18.fc17 +- Fix debuginfo gdb-gdb.py build without redhat-rpm-config and on RHEL-5. +- Provide precompiled variants of gdb-gdb.py. + +* Mon Feb 13 2012 Jan Kratochvil - 7.4.50.20120120-17.fc17 +- gstack: Turn off --readnever (suggested by Oliver Henshaw). + +* Fri Feb 10 2012 Jan Kratochvil - 7.4.50.20120120-16.fc17 +- [RHELs] Drop simulation of legacy behavior - new GDB should behave as new GDB. + +* Fri Feb 10 2012 Jan Kratochvil - 7.4.50.20120120-15.fc17 +- Simplify %%setup .spec rule. + +* Fri Feb 10 2012 Jan Kratochvil - 7.4.50.20120120-14.fc17 +- Drop --with upstream .spec rules. + +* Fri Feb 10 2012 Jan Kratochvil - 7.4.50.20120120-13.fc17 +- Drop --with debug .spec rules. + +* Thu Feb 9 2012 Jan Kratochvil - 7.4.50.20120120-12.fc17 +- Improve performance for C++ symbols expansion (Tom Tromey, BZ 787487). +- Install also gdb-gdb.py pretty printers. + +* Thu Feb 9 2012 Jan Kratochvil - 7.4.50.20120120-11.fc17 +- Fix possible NULL crash in find_charset_names (Tom Tromey, BZ 786091). +- [ppc*] Fix build failure due to GCC aliasing warning (BZ 786504). + +* Sat Jan 21 2012 Jan Kratochvil - 7.4.50.20120120-10.fc17 +- Rebase to FSF GDB 7.4.50.20120120. +- Drop the g77 .spec provisioning as it has been fixed in FSF GDB. + +* Thu Jan 19 2012 Jan Kratochvil - 7.4.50.20120103-9.fc17 +- Enable smaller %%{_bindir}/gdb in future by no longer using -rdynamic. +- Make --enablerepo to use '*-debug*' for RHEL compatibility (BZ 781571). +- On older RHELs make readline bundled again (BZ 701131). +- Fix build compatibility with RHEL-5 due to false noarch build. + +* Wed Jan 11 2012 Jan Kratochvil - 7.4.50.20120103-8.fc17 +- Disable unexpected GDB directories relocatability. + +* Wed Jan 11 2012 Jan Kratochvil - 7.4.50.20120103-7.fc17 +- Fix BuildRequires for RHEL compatibility (BZ 701131). + +* Wed Jan 11 2012 Jan Kratochvil - 7.4.50.20120103-6.fc17 +- Provide %%snap timestamp for: Provides: bundled(librarypackage) +- Replace %%define by %%global. +- Replace Java in Summary with Fortran (only GCC-compiled Java is supported). +- Unbundle readline-6.2 with a workaround of skipped "ask" (BZ 701131). +- Work around readline-6.2 incompatibility not asking for --more-- (BZ 701131). + +* Sat Jan 7 2012 Jan Kratochvil - 7.4.50.20120103-5.fc17 +- Mark %%{_sysconfdir}/gdbinit as %%config(noreplace). +- Add appropriate: Provides: bundled(librarypackage). +- Remove excessive explicit Requires: librarypackage. + +* Thu Jan 5 2012 Jan Kratochvil - 7.4.50.20120103-4.fc17 +- Fix linking on non-x86* (such as s390*) after libgdb.a removal. + +* Wed Jan 4 2012 Jan Kratochvil - 7.4.50.20120103-3.fc17 +- Reinclude gdb-dlopen-stap-probe.patch (missing in Fedora glibc - BZ 752476). + +* Tue Jan 3 2012 Jan Kratochvil - 7.4.50.20120103-2.fc17 +- Fix SystemTap support regression on i686 (Sergio Durigan Junior). + +* Tue Jan 3 2012 Jan Kratochvil - 7.4.50.20120103-1.fc17 +- Rebase to FSF GDB 7.4.50.20120103. + +* Mon Nov 28 2011 Jan Kratochvil - 7.3.50.20110722-11.fc17 +- No longer build bundled libstdc++ pretty printers on RHELs >= 7. + +* Sat Nov 5 2011 Sergio Durigan Junior - 7.3.50.20110722-10.fc16 +- Backport fix for crash in cp_scan_for_anonymous_namespace + (Aleksandar Ristovski, BZ 750341). + +* Fri Oct 14 2011 Jan Kratochvil - 7.3.50.20110722-9.fc16 +- Backport `info os processes' crash fix - for Eclipse (Pedro Alves, BZ 746294). + +* Tue Oct 11 2011 Jan Kratochvil - 7.3.50.20110722-8.fc16 +- Fix PIE testsuite run; new lib/future.exp hack and use -fPIC instead of -fPIE. + +* Mon Sep 26 2011 Jan Kratochvil - 7.3.50.20110722-7.fc16 +- [vla] Fix VLA arrays displayed in `bt full' (BZ 738482). +- Fix DW_OP_GNU_implicit_pointer for DWARF32 v3+ on 64-bit arches. +- Fix internal error on some optimized-out values. + +* Tue Aug 16 2011 Jan Kratochvil - 7.3.50.20110722-6.fc16 +- Python command/function auto-loading (Phil Muldoon, BZ 730976). +- Work around PR libc/13097 "linux-vdso.so.1" warning message. +- [TUI] Fix stepi on stripped code. +- Add BuildRequires: systemtap-sdt-devel for archer-sergiodj-stap-patch-split. + +* Wed Aug 10 2011 Jan Kratochvil - 7.3.50.20110722-5.fc16 +- Fix dlopen of libpthread.so, patched glibc required (Gary Benson, BZ 669432). + +* Tue Aug 9 2011 Jan Kratochvil - 7.3.50.20110722-4.fc16 +- Improve GDB performance on inferior dlopen calls (Gary Benson, BZ 698001). +- [python] Fix crash when pretty printer fails (Phil Muldoon, BZ 712715). +- Fix crash on invalid C++ mangled names (BZ 729283). + +* Fri Jul 29 2011 Jan Kratochvil - 7.3.50.20110722-3.fc16 +- Fix regression from VLA merge affecting -O0 -g watchpoints. + +* Fri Jul 29 2011 Jan Kratochvil - 7.3.50.20110722-2.fc16 +- Include gcc -g3 .debug_macro implementation by Tom Tromey. + +* Sat Jul 23 2011 Jan Kratochvil - 7.3.50.20110722-1.fc16 +- Rebase to FSF GDB 7.3.50.20110722. +- Improve gcc-4.6 stdarg false prologue end workaround (GDB PR 12435 + GCC PR 47471). + +* Sun Jul 3 2011 Jan Kratochvil - 7.2.90.20110703-40.fc15 +- Rebase to FSF GDB 7.2.90.20110703 (which is a 7.3 pre-release). + - Adjust the `print errno' patch due to the DW_AT_linkage_name following again. + +* Fri Jun 24 2011 Jan Kratochvil - 7.2.90.20110525-39.fc15 +- Fix install-info for the gdb-doc subpackage (BZ 715228). + +* Wed May 25 2011 Jan Kratochvil - 7.2.90.20110525-38.fc15 +- Rebase to FSF GDB 7.2.90.20110525 (which is a 7.3 pre-release). +- [stap] Fix double free (Sergio Durigan Junior). + +* Tue May 3 2011 Jan Kratochvil - 7.2.90.20110429-37.fc15 +- Search also for . files in /usr/lib/debug/.build-id (BZ 641377). + +* Mon May 2 2011 Jan Kratochvil - 7.2.90.20110429-36.fc15 +- Bundle readline-6.2 with a workaround of skipped "ask" (BZ 701131). + - Use --without-system-readline, disable Requires and BuildRequires of readline. + - Drop gdb-6.5-readline-long-line-crash.patch and gdb-readline-6.0-signal.patch. + +* Fri Apr 29 2011 Jan Kratochvil - 7.2.90.20110429-35.fc15 +- Rebase to FSF GDB 7.2.90.20110429 (which is a 7.3 pre-release). +- Fix -O2 -g breakpoints internal error + prologue skipping (BZ 612253). +- Fix case insensitive symbols for Fortran by iFort (BZ 645773). +- Fix physname-related CU expansion issue for C++ (PR 12708). +- Fix Python access to inlined frames (BZ 694824). + +* Mon Apr 11 2011 Jan Kratochvil - 7.2.90.20110411-34.fc15 +- Rebase to FSF GDB 7.2.90.20110411 (which is a 7.3 pre-release). +- Include the proper fix for anonymous struct typedefs (Tom Tromey, BZ 672230). + +* Wed Mar 30 2011 Fabio M. Di Nitto - 7.2.50.20110328-33.fc15 +- Cleanup spec file to add sparc|sparcv9|sparc64. +- Add sparc specific workarounds to toolchain badness: + - disable mmap in bdf/ via --without-mmap configure option. + - add patch to not build mmap support on sparc for gdb/. + - gdb code is NOT at fault, but we need a working gdb while we sort out + the toolchain and rebuild all packages. this workaround is NOT for upstream. + +* Tue Mar 29 2011 Jan Kratochvil - 7.2.50.20110328-32.fc15 +- Fix occasional crash on `print errno' with no -pthread and no -g3 (BZ 690908). + +* Mon Mar 28 2011 Jan Kratochvil - 7.2.50.20110328-31.fc15 +- Rebase to FSF GDB 7.2.50.20110328 (which is a 7.3 pre-release). +- Bundle %%{libstdcxxpython}.tar.bz2 unconditionally - for rebulds on RHELs. + +* Sun Mar 20 2011 Jan Kratochvil - 7.2.50.20110320-30.fc15 +- Fix threading internal error on corrupted memory (BZ 677654). +- Fix i386 rwatch+awatch before run (BZ 688788, on top of BZ 541866). + +* Sun Mar 20 2011 Jan Kratochvil - 7.2.50.20110320-29.fc15 +- Rebase to FSF GDB 7.2.50.20110320 (which is a 7.3 pre-release). +- Merge archer-sergiodj-stap, the SystemTap probes breakpoints feature. + - [stap] Fix -O2 warnings. +- Fix Ada support crash on uninitialized gdbarch. + +* Sat Mar 5 2011 Jan Kratochvil - 7.2.50.20110305-28.fc15 +- Rebase to FSF GDB 7.2.50.20110305 (which is a 7.3 pre-release). + +* Fri Feb 25 2011 Jan Kratochvil - 7.2.50.20110222-27.fc15 +- Include doc also in the PDF form; new BuildRequires: texinfo-tex. + +* Wed Feb 23 2011 Jan Kratochvil - 7.2.50.20110222-26.fc15 +- Rebase to FSF GDB 7.2.50.20110222 (which is a 7.3 pre-release). +- Fix attach/core-load of {,un}prelinked i386 libs (bugreport by Michal Toman). + +* Mon Feb 21 2011 Jan Kratochvil - 7.2.50.20110218-25.fc15 +- Drop %%{_datadir}/gdb/syscalls/* for unsupported arches. + +* Fri Feb 18 2011 Jan Kratochvil - 7.2.50.20110218-24.fc15 +- Rebase to FSF GDB 7.2.50.20110218 (which is a 7.3 pre-release). +- [vla] Fox Fortran vector slices for allocated arrays (for BZ 609782). + +* Tue Feb 15 2011 Jan Kratochvil - 7.2.50.20110213-23.fc15 +- Move the GFDL License to gdb-doc. + +* Tue Feb 15 2011 Jan Kratochvil - 7.2.50.20110213-22.fc15 +- Fix gdb-doc Group to be Documentation, also provide it as noarch. + +* Tue Feb 15 2011 Jan Kratochvil - 7.2.50.20110213-21.fc15 +- Drop non-user (gdbint) and obsolete (stabs) documentation. +- Install also HTML files besides the INFO file. +- Create new subpackage gdb-doc for both INFO and HTML files. + +* Sun Feb 13 2011 Jan Kratochvil - 7.2.50.20110213-20.fc15 +- Rebase to FSF GDB 7.2.50.20110213 (which is a 7.3 pre-release). +- Fix occasionall unfound source lines (affecting at least glibc debugging). +- Fix const/volatile qualifiers of C++ types (PR c++/12328). +- Be backward compatible for --rebuild with <=fc14 librpm.so.1. + +* Tue Feb 08 2011 Fedora Release Engineering - 7.2.50.20110206-19.fc15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Feb 6 2011 Jan Kratochvil - 7.2.50.20110206-18.fc15 +- Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz). + +* Sun Feb 6 2011 Jan Kratochvil - 7.2.50.20110206-17.fc15 +- Rebase to FSF GDB 7.2.50.20110206 (which is a 7.3 pre-release). + +* Thu Jan 27 2011 Jan Kratochvil - 7.2.50.20110125-16.fc15 +- Fix Python new-backtrace command (BZ 672235, Phil Muldoon). + +* Wed Jan 26 2011 Jan Kratochvil - 7.2.50.20110125-15.fc15 +- Temporary fix of F15 gcc-4.6 child DIEs of DW_TAG_typedef (BZ 672230). +- Workaround gcc-4.6 stdarg false prologue end (GDB PR 12435 + GCC PR 47471). + +* Tue Jan 25 2011 Jan Kratochvil - 7.2.50.20110125-14.fc15 +- Rebase to FSF GDB 7.2.50.20110125 (which is a 7.3 pre-release). +- Fix discontiguous address ranges in .gdb_index - v3->v4 (BZ 672281). +- Fix DWARF-3+ DW_AT_accessibility default assumption for F15 gcc-4.6. + +* Thu Jan 20 2011 Jan Kratochvil - 7.2.50.20110117-13.fc15 +- Use librpm.so.2 for rpm-4.9.0 in Fedora 15. + +* Mon Jan 17 2011 Jan Kratochvil - 7.2.50.20110117-12.fc15 +- Use %%{?dist} for sanity checking tools compliance (suggested by Petr Muller). + +* Mon Jan 17 2011 Jan Kratochvil - 7.2.50.20110117-11.fc15 +- Rebase to FSF GDB 7.2.50.20110117 (which is a 7.3 pre-release). +- Fix callback-mode readline-6.0 regression for CTRL-C (for RHEL-6.0). + - Fix occasional NULL dereference of the readline-6.0 workaround (BZ 575516). + +* Sat Jan 15 2011 Jan Kratochvil - 7.2.50.20110107-10.fc15 +- [delayed-symfile] Test a backtrace regression on CFIs without DIE (BZ 614604). +- [archer-tromey-delayed-symfile] New test gdb.dwarf2/dw2-aranges.exp. +- [archer-keiths-expr-cumulative+upstream] Import C++ testcases. + - testsuite: Fix gdb-test-expr-cumulative-archer.patch compatibility. + +* Fri Jan 7 2011 Jan Kratochvil - 7.2.50.20110107-9.fc15 +- Remove --with-pythondir as no longer valid. +- Provide %%{_bindir}gdb-add-index even on RHEL-5. +- Provide again libstdc++ pretty printers for any RHEL. + +* Fri Jan 7 2011 Jan Kratochvil - 7.2.50.20110107-8.fc15 +- Rebase to FSF GDB 7.2.50.20110107 (which is a 7.3 pre-release). +- Import archer-tromey-python (BZ 666177, branch update by Phil Muldoon). + +* Tue Jan 4 2011 Jan Kratochvil - 7.2.50.20110104-7.fc15 +- Rebase to FSF GDB 7.2.50.20110104 (which is a 7.3 pre-release). +- New testcase py-prettyprint.exp:print hint_error (for BZ 611569, BZ 629236). +- New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435). + +* Sat Jan 1 2011 Jan Kratochvil - 7.2.50.20101231-6.fc15 +- Fix --with-system-readline doc build upstream regression. + +* Sat Jan 1 2011 Jan Kratochvil - 7.2.50.20101231-5.fc15 +- Rebase to FSF GDB 7.2.50.20101231 (which is a 7.3 pre-release). +- Remove gdb-6.3-bt-past-zero-20051201.patch, gdb-archer-ada.patch and + gdb-6.3-framepczero-20040927.patch already removed from .spec before. +- Remove gdb-6.5-dwarf-stack-overflow.patch, upstreamed (Tom Tromey). +- Remove gdb-6.6-bz225783-gdb-debuginfo-paths.patch, upstreamed (Tom Tromey). +- Remove gdb-6.6-readline-system.patch, reimplemented upstream (Tom Tromey). +- Remove gdb-bz642879-elfread-sigint-stale.patch, upstreamed (Jan Kratochvil). +- Remove gdb-next-over-throw.patch, upstreamed (Tom Tromey). + +* Mon Dec 27 2010 Jan Kratochvil - 7.2.50.20101117-4.fc15 +- Provide stub %%{_sysconfdir}/gdbinit (BZ 651232). + +* Mon Dec 27 2010 Jan Kratochvil - 7.2.50.20101117-3.fc15 +- Fix ppc* compilation of PRPSINFO in the core files (BZ 662995, for BZ 254229). +- Fix (disable) non-x86* compilation of libinproctrace.so (for BZ 662995). + +* Thu Nov 18 2010 Jan Kratochvil - 7.2.50.20101117-2.fc15 +- Drop gdb-6.8-glibc-headers-compat.patch: GNU/Linux irrelevant (Tom Tromey). +- Drop gdb-6.3-terminal-fix-20050214.patch: The bug is not reproducible. +- Drop gdb-6.7-kernel-headers-compat.patch: kernel-headers seem to be fixed. +- Drop gdb-archer-ada.patch: No longer needed for Ada (Keith Seitz). +- New PR backtrace/12237, drop gdb-6.3-framepczero-20040927.patch + gdb-6.3-bt-past-zero-20051201.patch as they already had no effect. +- Drop gdb-6.8-gcc35998-ada-memory-trash.patch as a different fix is upstream. +- Drop gdb-6.3-inheritance-20050324.patch: the call is redundent (Tom Tromey). +- Drop gdb-6.3-large-core-20051206.patch: obsoleted by MAX_COPY_BYTES. + +* Thu Nov 18 2010 Jan Kratochvil - 7.2.50.20101117-1.fc15 +- Rebase to FSF GDB 7.2.50.20101117 (which is a 7.3 pre-release). + +* Sun Nov 7 2010 Jan Kratochvil - 7.2-25.fc14 +- iFort compat. - case insensitive DWARF not in lowercase (BZ 645773). + +* Thu Oct 14 2010 Jan Kratochvil - 7.2-24.fc14 +- Add gdb.spec comments on the *.patch files upstream merge status. + +* Thu Oct 14 2010 Jan Kratochvil - 7.2-23.fc14 +- Workaround librpm BZ 643031 due to its unexpected exit() calls (BZ 642879). +- Fix crash on CTRL-C while reading an ELF symbol file (BZ 642879). + +* Tue Oct 12 2010 Jan Kratochvil - 7.2-22.fc14 +- testsuite: Provide missing lib/gdb-python.exp (for BZ 639089). + +* Tue Oct 12 2010 Jan Kratochvil - 7.2-21.fc14 +- Fix python stale error state, also fix its save/restore (BZ 639089). +- Fix inferior exec of new PIE x86_64 (BZ 638979). + +* Tue Oct 12 2010 Jan Kratochvil - 7.2-20.fc14 +- Fixup Release for 20.fc14. + +* Tue Oct 12 2010 Jan Kratochvil - 7.2-19.fc14 +- Use .gdb_index v3 to fix excessive resources rqmnts (BZ 640634, Tom Tromey). + +* Wed Oct 6 2010 Jan Kratochvil - 7.2-18.fc14 +- Fix false warning: non-absolute filename: (BZ 640648). + +* Thu Sep 30 2010 Jan Kratochvil - 7.2-17.fc14 +- New Conflicts: elfutils < 0.149 due to the .gdb_index .debug support. + +* Wed Sep 29 2010 Jan Kratochvil - 7.2-16.fc14 +- [ifunc] Fix crash on deleting watchpoint of an autovariable (BZ 637770). + +* Mon Sep 27 2010 Jan Kratochvil - 7.2-15.fc14 +- Revert the -O0 switch formerly to workaround GCC BZ 634757 (cmove bug). +- Remove no longer used BuildRequires: libstdc++. +- Remove commented out python libstdc++ .spec code. + +* Sat Sep 25 2010 Jan Kratochvil - 7.2-14.fc14 +- Fixup %%{_datadir}/gdb/python/gdb timestamps for multilib conflicts. + +* Sat Sep 25 2010 Jan Kratochvil - 7.2-13.fc14 +- Fix .gdb_index for big-endian hosts (Tom Tromey). + +* Sat Sep 25 2010 Jan Kratochvil - 7.2-12.fc14 +- Fix lost siginfo_t in linux-nat (BZ 592031). + +* Sat Sep 25 2010 Jan Kratochvil - 7.2-11.fc14 +- Fix infinite loop crash on self-referencing class (BZ 627432). + +* Thu Sep 23 2010 Jan Kratochvil - 7.2-10.fc14 +- gcore/-Wl,-z,relro: Always write out all the pages until kernel gets a fix. + +* Wed Sep 22 2010 Jan Kratochvil - 7.2-9.fc14 +- Fix gcore writer for -Wl,-z,relro (PR corefiles/11804). + +* Wed Sep 22 2010 Jan Kratochvil - 7.2-8.fc14 +- Enable python by default even in Brew and on all the arches (BZ 609157). + +* Wed Sep 22 2010 Jan Kratochvil - 7.2-7.fc14 +- python: load *-gdb.py for shlibs during attach (BZ 634660). +- Fix double free crash during overload resolution (PR 12028, Sami Wagiaalla). + +* Sat Sep 18 2010 Jan Kratochvil - 7.2-6.fc14 +- Fix python gdb.solib_address (BZ 634108, fix by Phil Muldoon). +- Temporarily build with -O0 to workaround GCC BZ 634757 (cmove bug). + +* Tue Sep 14 2010 Jan Kratochvil - 7.2-5.fc14 +- Fix Ada regression when any .gdb_index library is present. + +* Sat Sep 11 2010 Jan Kratochvil - 7.2-4.fc14 +- Fix symbol lookup misses methods of current class (BZ 631158, Sami Wagiaalla). +- Fix python gdb.execute-to_string redirection (BZ 627506, with Paul Bolle). + +* Wed Sep 8 2010 Jan Kratochvil - 7.2-3.fc14 +- Do not crash on broken separate debuginfo due to old elfutils (BZ 631575). + +* Sat Sep 04 2010 Dennis Gilmore - 7.2-2.fc14 +- libinproctrace doesnt exist on sparc arches + +* Fri Sep 3 2010 Jan Kratochvil - 7.2-1.fc14 +- Formal update to the final FSF GDB release. + +* Tue Aug 24 2010 Dan Horák - 7.1.90.20100806-12.fc14 +- libinproctrace doesn't exist on s390(x) + +* Thu Aug 19 2010 Jan Kratochvil - 7.1.90.20100806-11.fc14 +- Fix crash on MI variable calling inferior function (BZ 610986). + +* Tue Aug 10 2010 Jan Kratochvil - 7.1.90.20100806-10.fc14 +- Fix /usr/bin/gdb-add-index missing -nx for gdb. +- New option --with profile (disabled by default - missing workload, BZ 615603). + +* Sat Aug 7 2010 Jan Kratochvil - 7.1.90.20100806-9.fc14 +- Fix python gdb.execute to_string pagination (BZ 620930). + +* Fri Aug 6 2010 Jan Kratochvil - 7.1.90.20100806-8.fc14 +- Out of memory is just an error, not fatal (uninitialized VLS vars, BZ 568248). + +* Fri Aug 6 2010 Jan Kratochvil - 7.1.90.20100806-7.fc14 +- Fix gcore from very small terminal windows (BZ 555076). +- Fix false `filesystem' debuginfo rpm request (BZ 599598). + +* Wed Jul 28 2010 Mamoru Tasaka - 7.1.90.20100721-6.fc14 +- Rebuild against python 2.7 + +* Thu Jul 22 2010 Jan Kratochvil - 7.1.90.20100721-5.fc14 +- Fix /usr/bin/gdb-add-index $d -> $dir typo. + +* Thu Jul 22 2010 Jan Kratochvil - 7.1.90.20100721-4.fc14 +- Import archer-tromey-python. +- Import archer-tromey-optional-psymtab (as present in FSF GDB post-7.2). + - Provide /usr/bin/gdb-add-index for rpm-build (Tom Tromey). + +* Thu Jul 22 2010 David Malcolm - 7.1.90.20100721-3.fc14 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Wed Jul 21 2010 Jan Kratochvil - 7.1.90.20100721-2.fc14 +- Fix prelinked executables with sepdebug and copy relocations (BZ 614659). + +* Wed Jul 21 2010 Jan Kratochvil - 7.1.90.20100721-1.fc14 +- Rebase to FSF GDB 7.1.90.20100721 (which is 7.2 pre-release). + +* Tue Jul 13 2010 Jan Kratochvil - 7.1-29.fc14 +- Disable temporarily Python files before the new rebase is done (BZ 613710). + +* Sun Jul 11 2010 Jan Kratochvil - 7.1-28.fc14 +- Rebuild for Fedora 14. + +* Wed Jun 30 2010 Jan Kratochvil - 7.1-28.fc13 +- Print 2D C++ vectors as matrices (BZ 562763, sourceware10659, Chris Moller). + +* Wed Jun 30 2010 Jan Kratochvil - 7.1-27.fc13 +- Fix obstack corruptions on C++ (BZ 606185, Chris Moller, Jan Kratochvil). +- Improve support for typedefs in classes (BZ 602314). +- Fix `set print object on' for some non-dynamic classes (BZ 606660). + +* Wed Jun 9 2010 Jan Kratochvil - 7.1-26.fc13 +- Backport DWARF-4 support (BZ 601887, Tom Tromey). + +* Wed Jun 9 2010 Jan Kratochvil - 7.1-25.fc13 +- Fix ADL anonymous type crash (BZ 600746, Sami Wagiaalla). + +* Tue Jun 1 2010 Jan Kratochvil - 7.1-24.fc13 +- Fix crash on /proc/PID/stat race during inferior exit (BZ 596751). +- testsuite: gdb.threads/watchthreads-reorder.exp kernel-2.6.33 compat. fix. + +* Sun May 30 2010 Jan Kratochvil - 7.1-23.fc13 +- Fix and support DW_OP_*piece (Tom Tromey, BZ 589467). +- Fix follow-exec for C++ programs (bugreported by Martin Stransky). + +* Mon May 24 2010 Jan Kratochvil - 7.1-22.fc13 +- Remove core file when starting a process (BZ 594560). +- Fix lock up on loops in the solib chain (BZ 593926). +- Import fix of TUI layout internal error (BZ 595475). + +* Sun May 16 2010 Jan Kratochvil - 7.1-21.fc13 +- Make gdb-6.8-bz254229-gcore-prpsinfo.patch RHEL-5 /usr/bin/patch compatible + (bugreported by Jonas Maebe). + +* Thu May 13 2010 Jan Kratochvil - 7.1-20.fc13 +- Fix crash on VLA bound referencing an optimized-out variable (BZ 591879). +- Re-enable the BZ 575292 and BZ 585445 C++ fix using an updated patch. + +* Wed May 12 2010 Jan Kratochvil - 7.1-19.fc13 +- Backport -completion bug on anonymous structure fields (BZ 590648). +- testsuite: Fix gdb.base/vla-overflow.exp FAILing on s390x (BZ 590635). +- Workaround non-stop moribund locations exploited by kernel utrace (BZ 590623). + +* Thu Apr 29 2010 Jan Kratochvil - 7.1-18.fc13 +- Make _Unwind_DebugHook independent from step-resume breakpoint (Tom Tromey). + +* Tue Apr 27 2010 Jan Kratochvil - 7.1-17.fc13 +- Fail gracefully if the _Unwind_DebugHook arg. is optimized out (Tom Tromey). + +* Tue Apr 27 2010 Jan Kratochvil - 7.1-16.fc13 +- Temporarily workaround the crash of BZ 575292 as there was now BZ 585445. + +* Mon Apr 26 2010 Jan Kratochvil - 7.1-15.fc13 +- Fix crash when using GNU IFUNC call from breakpoint condition. +- Avoid internal error by disabling the previous BZ 575292 fix (BZ 585445). + +* Thu Apr 22 2010 Jan Kratochvil - 7.1-14.fc13 +- Fix crash on C++ types in some debug info files (BZ 575292, Keith Seitz). +- Pretty printers not well documented (BZ 570635, Tom Tromey, Jan Kratochvil). + +* Fri Apr 16 2010 Jan Kratochvil - 7.1-13.fc13 +- archer-jankratochvil-fedora13 commit: 39998c496988faaa1509cc6ab76b5c4777659bf4 +- [vla] Fix boundaries for arrays on -O2 -g (support bound-ref->var->loclist). +- [vla] Fix copy_type_recursive for unavailable variables (Joost van der Sluis). + +* Sun Apr 11 2010 Jan Kratochvil - 7.1-12.fc13 +- Fix crash on trying to load invalid executable (BZ 581215). + +* Thu Apr 8 2010 Jan Kratochvil - 7.1-11.fc13 +- testsuite: Fix gdb.base/gstack.exp also for ppc64 inferiors (for BZ 579793). + +* Thu Apr 8 2010 Jan Kratochvil - 7.1-10.fc13 +- Fix s390 --with testsuite Buildrequiers to be (s390-32) (BZ 580347, Cai Qian). + +* Wed Apr 7 2010 Jan Kratochvil - 7.1-9.fc13 +- Fix gstack to print even the frame #0. New gdb.base/gstack.exp. (BZ 579793) +- Merge gdb-6.3-gstack-without-path-20060414.p* into gdb-6.3-gstack-20050411.p*, + no real code change. + +* Mon Apr 5 2010 Jan Kratochvil - 7.1-8.fc13 +- Fix breakpoint at *_start (BZ 162775, bugreport by John Reiser). + +* Sat Apr 3 2010 Jan Kratochvil - 7.1-7.fc13 +- Fix ppc build of the AVX registers support (for BZ 578250). + +* Sat Apr 3 2010 Jan Kratochvil - 7.1-6.fc13 +- Support AVX registers (BZ 578250). + +* Sat Apr 3 2010 Jan Kratochvil - 7.1-5.fc13 +- Fix dangling displays in separate debuginfo (BZ 574483). + +* Wed Mar 31 2010 Jan Kratochvil - 7.1-4.fc13 +- Remove gdb-readline-6.0-signal.patch with a bug causing crash while no longer + required with F-13 readline-6.1 (BZ 575516) + +* Mon Mar 29 2010 Jan Kratochvil - 7.1-3.fc13 +- [expr-cumulative] using-directive: Fix memory leak (Sami Wagiaalla). + +* Mon Mar 29 2010 Jan Kratochvil - 7.1-2.fc13 +- Drop obsoleted `gdb-archer-pie-0315-breakpoint_address_match.patch'. +- Do not consider memory error on reading _r_debug->r_map as fatal (BZ 576742). + - PIE: Attach binary even after re-prelinked underneath. + - PIE: Attach binary even after ld.so re-prelinked underneath. + - PIE: Fix occasional error attaching i686 binary (BZ 576742). +- testsuite: Fix unstable results of gdb.base/prelink.exp. + +* Thu Mar 25 2010 Jan Kratochvil - 7.1-1.fc13 +- Update to new FSF GDB release. + +* Mon Mar 15 2010 Jan Kratochvil - 7.0.90.20100312-24.fc13 +- Drop gdb-6.5-bz218379-ppc-solib-trampoline-fix.patch having false symbols + resolving (related to BZ 573277). + +* Fri Mar 12 2010 Jan Kratochvil - 7.0.90.20100312-23.fc13 +- Update to new FSF GDB snapshot. +- Fix double-free on std::terminate handler (Tom Tromey, BZ 562975). + +* Wed Mar 10 2010 Jan Kratochvil - 7.0.90.20100306-22.fc13 +- Another License update. + +* Wed Mar 10 2010 Jan Kratochvil - 7.0.90.20100306-21.fc13 +- Update License for all the licenses contained in .src.rpm. + +* Mon Mar 8 2010 Jan Kratochvil - 7.0.90.20100306-20.fc13 +- Remove unapplied: gdb-6.8-inlining-addon.patch gdb-6.8-inlining-by-name.patch + +* Mon Mar 8 2010 Jan Kratochvil - 7.0.90.20100306-19.fc13 +- Include also %%doc COPYING3 (review by Petr Machata). +- Remove URL for Source (review by Matej Cepl). + +* Sun Mar 7 2010 Jan Kratochvil - 7.0.90.20100306-18.fc13 +- archer-jankratochvil-fedora13 commit: 59c35a31f0981a0f0b884b32c91ae6325b2126cd + +* Sun Feb 28 2010 Jan Kratochvil - 7.0.50.20100203-17.fc13 +- Fix false warning: section .gnu.liblist not found in ... +- Fix crash on stale addrinfo->sectindex (more sensitive due to the PIE patch). + +* Fri Feb 26 2010 Jan Kratochvil - 7.0.50.20100203-16.fc13 +- Fix ia64 part of the bt-clone-stop.exp fix. +- Fix gdb.ada/* regressions (Keith Seitz). +- Remove false gdb_assert on $sp underflow. + +* Mon Feb 8 2010 Jan Kratochvil - 7.0.50.20100203-15.fc13 +- Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866). + +* Wed Feb 3 2010 Jan Kratochvil - 7.0.50.20100203-14.fc13 +- Rediff gdb-6.8-bz254229-gcore-prpsinfo.patch for older patch(1) compatibility. + +* Wed Feb 3 2010 Jan Kratochvil - 7.0.50.20100203-13.fc13 +- archer-jankratochvil-fedora13 commit: 59c35a31f0981a0f0b884b32c91ae6325b2126cd +- Fortran: Fix regression on setting breakpoint at toplevel symbols (BZ 559291; + David Moore, Intel). + +* Mon Feb 1 2010 Jan Kratochvil - 7.0.50.20100128-12.fc13 +- archer-jankratochvil-fedora13 commit: 5a573e8b26a2f0a6947d4c0249e43e5456610860 +- Remove ExcludeArch on ia64 as it is now fixed up. + +* Sun Jan 31 2010 Jan Kratochvil - 7.0.50.20100128-11.fc13 +- Fix failed gdb_assert due to the PIE patchset (BZ 559414). + +* Thu Jan 28 2010 Jan Kratochvil - 7.0.50.20100128-10.fc13 +- Upgrade to the FSF GDB snapshot: 7.0.50.20100128 +- archer-jankratochvil-fedora13 commit: 39c5a8b75fad3acd7204903db5dee025055a4594 + - Fix a regression on "AAA::ALPHA" test due to a merge from FSF GDB. +- Fix a regression of previous release due to false identification as core file. +- Move ifunc .patch into the GIT-managed archer-jankratochvil-fedora13 branch. +- Update gdb.pie/corefile.exp from 2007-01-26 FSF GDB commit by Andreas Schwab. + +* Mon Jan 25 2010 Jan Kratochvil - 7.0.50.20100121-9.fc13 +- Enable loading a core file just as a single argument to /usr/bin/gdb. + +* Sun Jan 24 2010 Jan Kratochvil - 7.0.50.20100121-8.fc13 +- testsuite: Fix gdb.arch/i386-bp_permanent.exp regression + +* Sun Jan 24 2010 Jan Kratochvil - 7.0.50.20100121-7.fc13 +- Update gdb.arch/powerpc-power7.exp for current binutils HEAD. + +* Fri Jan 22 2010 Jan Kratochvil - 7.0.50.20100121-6.fc13 +- Disable addon (finish) due to inline-cmds.exp: up from outer_inline2 assert. +- Fix gdb.arch/powerpc-power7.exp compatibility. + +* Fri Jan 22 2010 Jan Kratochvil - 7.0.50.20100121-5.fc13 +- Disable break-by-name on inlined functions due to a regression on parameters + of inlined functions falsely (BZ 556975 Comment 8). + +* Fri Jan 22 2010 Jan Kratochvil - 7.0.50.20100121-4.fc13 +- Adjust BuildRequires for RHELs, add ExcludeArch on ia64. +- Disable one PIE-introduced assertion on RHELs. + +* Thu Jan 21 2010 Jan Kratochvil - 7.0.50.20100121-3.fc13 +- Revert FSF GDB gdbserver tracepoints as incomplete now. + +* Thu Jan 21 2010 Jan Kratochvil - 7.0.50.20100121-2.fc13 +- archer-jankratochvil-fedora13 commit: 21e418c04290aa5d2e75543d31fe3fe5d70d6d41 +- [expr-cumulative] Fix "break expr if (cond)" regression. + +* Thu Jan 21 2010 Jan Kratochvil - 7.0.50.20100121-1.fc13 +- Upgrade to the FSF GDB snapshot: 7.0.50.20100121 +- archer-jankratochvil-fedora13 commit: ccde1530479cc966374351038057b9dda90aa251 +- [expr-cumulative] Archer branch is now included. + +* Tue Jan 19 2010 Jan Kratochvil - 7.0.50.20100118-2.fc13 +- Fix false PASS->FAIL of gdb.arch/i386-biarch-core.exp. + +* Tue Jan 19 2010 Jan Kratochvil - 7.0.50.20100118-1.fc13 +- Upgrade to the FSF GDB snapshot: 7.0.50.20100118 +- Upgrade libstdc++-v3-python to r155978 (Phil Muldoon). + +* Sat Jan 16 2010 Jan Kratochvil - 7.0.50.20100116-1.fc13 +- Upgrade to the FSF GDB snapshot: 7.0.50.20100116 +- archer-jankratochvil-fedora13 commit: 81810a20b2d2c3bf18e151de3cddfc96445b3c46 +- [expr-cumulative] Archer branch is missing in this release. +- Update rpm.org#76 workaround for rpm-4.8 using librpm.so.1. +- Dissect archer-jankratochvil-misc into Patch403...Patch408. +- Some regressions exist in this release. + +* Tue Jan 12 2010 Jan Kratochvil - 7.0.1-25.fc12 +- non-librpm missing debuginfo yumcommand now prints also --disablerepo='*' + to save some bandwidth by yum (Robin Green, BZ 554152). + +* Sun Jan 10 2010 Jan Kratochvil - 7.0.1-24.fc12 +- testsuite: BuildRequires also valgrind. + +* Fri Jan 8 2010 Jan Kratochvil - 7.0.1-23.fc12 +- Workaround missing libstdc++%%{bits_other} in Koji. + +* Fri Jan 8 2010 Jan Kratochvil - 7.0.1-22.fc12 +- Comply with new package review: + - Fix .spec Source as this is not a snapshot now. + - Convert all spaces to tabs. + - Fix missing %%defattr at %%files for gdbserver. + - Replace all hardcoded-library-path by variants of %%{_isa}. +- Include %%{_isa} for appropriate Requires and BuildRequires. + +* Thu Jan 7 2010 Jan Kratochvil - 7.0.1-21.fc12 +- [vla] Fix regression on fields of structs in internal vars (BZ 553338). +- archer-jankratochvil-fedora12 commit: 6e73988f653ba986e8742f208f17ec084292cbd5 + +* Thu Jan 7 2010 Jan Kratochvil - 7.0.1-20.fc12 +- Fix crash reading broken stabs (it377671). + +* Sun Jan 3 2010 Jan Kratochvil - 7.0.1-19.fc12 +- testsuite: Fixup false FAILs for gdb.cp/constructortest.exp. + +* Sat Jan 2 2010 Jan Kratochvil - 7.0.1-18.fc12 +- Fix regression of gdb-7.0 (from 6.8) crashing on typedefed bitfields. +- Fix related_breakpoint stale ref crash. + +* Fri Jan 1 2010 Jan Kratochvil - 7.0.1-17.fc12 +- Formal upgrade to the FSF GDB release gdb-7.0.1. + - Fix regression of gdb-7.0.1 not preserving typedef of a field. + +* Fri Jan 1 2010 Jan Kratochvil - 7.0-16.fc12 +- More RHEL-5 compatibility updates. + - Disable the build-id support by default. + - Bundle back gdbserver to the base gdb package. + - Remove bundled pstack. + - Drop the BuildRequires of rpm-devel. + +* Fri Jan 1 2010 Jan Kratochvil - 7.0-15.fc12 +- Fix error on a sw watchpoint active at function epilogue (hit on s390x). +- testsuite: Fix false MI "unknown output after running" regression. +- testsuite: Update ia64-sigtramp.exp for recent GDB. +- Implement bt-clone-stop.exp fix also for ia64. +- testsuite: Upstream condbreak.exp results stability fix (Daniel Jacobowitz). + +* Thu Dec 24 2009 Jan Kratochvil - 7.0-14.fc12 +- testsuite: Fix constructortest.exp and expand-sals.exp for gcc-4.4.2-20.fc12. + +* Mon Dec 21 2009 Jan Kratochvil - 7.0-13.fc12 +- [pie] Fix a race in testcase gdb.base/valgrind-db-attach.exp. +- Fix regression by python on ia64 due to stale current frame. +- Disable python iff RHEL-5 && (Brew || ppc64). + +* Mon Dec 21 2009 Jan Kratochvil - 7.0-12.fc12 +- Workaround build on native ppc64 host. +- More RHEL-5 compatibility updates. + - Disable warning messages new for gdb-6.8+ for RHEL-5 backward compatibility. + - Workaround RHEL-5 kernels for detaching SIGSTOPped processes (BZ 498595). + - Serialize the testsuite output to keep the order for regression checks. + - Re-enable python for all non-ppc* arches. + - More gcc44 stack exceptions when running the testsuite on RHEL-5. +- Fix backward compatibility with G++ 4.1 namespaces "::". +- Fix regression on re-setting the single ppc watchpoint slot. +- Update snapshot of FSF gdb-7.0.x branch. + - Backport fix of dcache invalidation locking up GDB on ppc64 targets. + +* Fri Dec 18 2009 Jan Kratochvil - 7.0-11.fc12 +- [pie] Fix general ppc64 regression due to a function descriptors bug. +- [pie] Fix also keeping breakpoints disabled in PIE mode. +- Import upstream -completion crash fix. +- Drop some unused patches from the repository. +- More RHEL-5 build compatibility updates. + - Use gfortran44 when running the testsuite on RHEL-5. + - Disable python there due to insufficient ppc multilib. +- Fix orphanripper hangs and thus enable it again. + +* Mon Dec 14 2009 Jan Kratochvil - 7.0-10.fc12 +- Make gdb-6.3-rh-testversion-20041202.patch to accept both RHEL and Fedora GDB. +- Adjust BuildRequires for Fedora-12, RHEL-6 and RHEL-5 builds. +- [vla] Fix compatibility of dynamic arrays with iFort (BZ 514287). +- Fix stepping through OMP parallel Fortran sections (BZ 533176). +- New fix of bp conditionals [bp_location-accel] regression (BZ 538626). + +* Mon Dec 7 2009 Jan Kratochvil - 7.0-9.fc12 +- Replace the PIE (Position Indepdent Executable) support patch by a new one. +- Drop gdb-6.3-nonthreaded-wp-20050117.patch as fuzzy + redundant. +- Fix callback-mode readline-6.0 regression for CTRL-C. +- Fix syscall restarts for amd64->i386 biarch. +- Various testsuite results stability fixes. +- Fix crash on reading stabs on 64bit (BZ 537837). +- archer-jankratochvil-fedora12 commit: 16276c1aad1366b92e687c72cab30192280e1906 +- archer-jankratochvil-pie-fedora12 ct: 2ae60b5156d43aabfe5757940eaf7b4370fb05d2 + +* Thu Dec 3 2009 Jan Kratochvil - 7.0-8.fc12 +- Fix slowness/hang when printing some variables (Sami Wagiaalla, BZ 541093). +- archer-jankratochvil-fedora12 commit: 6817a81cd411acc9579f04dcc105e9bce72859ff + +* Wed Nov 25 2009 Jan Kratochvil - 7.0-7.fc12 +- Support GNU IFUNCs - indirect functions (BZ 539590). +- Fix bp conditionals [bp_location-accel] regression (Phil Muldoon, BZ 538626). +- Fix missed breakpoint location [bp_location-accel] regression (upstream). + +* Fri Oct 30 2009 Jan Kratochvil - 7.0-6 +- Fix missing zlib-devel BuildRequires to support compressed DWARF sections. +- Include post-7.0 FSF GDB fixes. + +* Fri Oct 23 2009 Jan Kratochvil - 7.0-5 +- Make the package buildable on RHEL-5/CentOS-5 (without librpm there). +- archer-jankratochvil-fedora12 commit: 5b73ea6a0f74e63db3b504792fc1d37f548bdf5c + +* Fri Oct 23 2009 Jan Kratochvil - 7.0-4 +- Fix rpm --excludedocs (BZ 515998). + +* Thu Oct 22 2009 Jan Kratochvil - 7.0-3 +- Support multiple directories for `set debug-file-directory' (BZ 528668). + +* Mon Oct 19 2009 Jan Kratochvil - 7.0-2 +- Sync the .spec with RHEL/CentOS without EPEL, do not BuildRequires: fpc there. + +* Wed Oct 7 2009 Jan Kratochvil - 7.0-1 +- Formal upgrade to the final FSF GDB release gdb-7.0. +- Fix GNU/Linux core open: Can't read pathname for load map: Input/output error. +- archer-jankratochvil-fedora12 commit: ce4ead356654b951a49ca78d81ebfff95e758bf5 + +* Wed Sep 30 2009 Jan Kratochvil - 6.8.91.20090930-2 +- Bump release. + +* Wed Sep 30 2009 Jan Kratochvil - 6.8.91.20090930-1 +- Fix broken python "help()" command "modules" (BZ 526552). +- Upgrade to the FSF GDB gdb-7.0 snapshot: 6.8.91.20090930 +- archer-jankratochvil-fedora12 commit: 7cb860f03e2437c97239334ebe240d06f45723e0 + +* Sun Sep 27 2009 Jan Kratochvil - 6.8.91.20090925-3 +- New test for step-resume breakpoint placed in multiple threads at once. + +* Fri Sep 25 2009 Jan Kratochvil - 6.8.91.20090925-2 +- Fix buildid-loading libs w/matching name but different build-id (BZ 524572). + +* Fri Sep 25 2009 Jan Kratochvil - 6.8.91.20090925-1 +- Upgrade to the FSF GDB gdb-7.0 snapshot: 6.8.91.20090925 +- archer-jankratochvil-fedora12 commit: 4338ea85c798007c32594032f602db9fd230eba9 + - [python] Don't directly reference self.frame (Tom Tromey). + - [expr] Updates from branch (Keith Seitz). + +* Mon Sep 21 2009 Jan Kratochvil - 6.8.91.20090921-1 +- Upgrade to the FSF GDB gdb-7.0 snapshot: 6.8.91.20090921 +- archer-jankratochvil-fedora12 commit: 0d5c38dd89050c0ee1cf049656f177c170d675d4 + - [expr] Check has_stack_frames before calling find_pc_line (Sami Wagiaalla). + +* Thu Sep 17 2009 Jan Kratochvil - 6.8.91.20090917-2 +- Include bundled libstdc++ python; it will be in libstdc++-devel since gcc-4.5. + +* Thu Sep 17 2009 Jan Kratochvil - 6.8.91.20090917-1 +- Upgrade to the FSF GDB gdb-7.0 branch and snapshot: 6.8.91.20090917 +- archer-jankratochvil-fedora12 commit: 16f3f01cc2cbc15283462eaabdfcde92cf42cdc6 +- Drop the qsort_cmp workaround as resolved in FSF GDB now (BZ 515434). + +* Thu Sep 10 2009 Jan Kratochvil - 6.8.50.20090910-1 +- Upgrade to the FSF GDB gdb-6.8.50 snapshot: 6.8.50.20090910 +- archer-jankratochvil-fedora12 commit: 941eb487a42933e442cb4d11344cda96ecb8a04d + - [next-over-throw] Fix exceptions thrown during next (Tom Tromey). + - [bp_location-accel] Do not (much) slow down on 500+ breakpoints (me). + +* Thu Sep 3 2009 Jan Kratochvil - 6.8.50.20090818-8 +- archer-jankratochvil-fedora12 commit: a081d2f12945e9468edd5f4341d3e945bd0fefe9 + - [expr] Fix too slow lookups in large C++ programs (Sami Wagiaalla). + - [python] Fix varobj changed values reporting (GDB PR 10584, Tom Tromey). + +* Tue Sep 1 2009 Jan Kratochvil - 6.8.50.20090818-7 +- archer-jankratochvil-fedora12 commit: d25596676e8811b03f8c9aba6bbd04ebaa9ff5db + - [call-frame-cfa] Fix parsing CFA-relative frames (BZ 516627, Tom Tromey). + - [vla] variable length Fortran strings for -O -g code (part of BZ 508406, me). + - [python] varobj + general fixes (Tom Tromey). + +* Fri Aug 28 2009 Jan Kratochvil - 6.8.50.20090818-6 +- Real upstream fixup of qsort_cmp (BZ 515434). +- Revert bitfields regression (BZ 520129). + +* Tue Aug 25 2009 Jan Kratochvil - 6.8.50.20090818-5 +- Temporarily disable assertion checks crashing in qsort_cmp (BZ 515434). + +* Wed Aug 19 2009 Jan Kratochvil - 6.8.50.20090818-4 +- Fixup "bad type" internal error, import from FSF GDB. +- archer-jankratochvil-fedora12 commit: 2ba2bc451eb832182ef84c3934115de7a329da7c + +* Tue Aug 18 2009 Jan Kratochvil - 6.8.50.20090818-3 +- archer-jankratochvil-fedora12 commit: 850e3cb38a25cb7fdfa4cef667626ffbde51bcac +- Fix the hardware watchpoints. + +* Tue Aug 18 2009 Jan Kratochvil - 6.8.50.20090818-2 +- Fix patch fuzz 0. + +* Tue Aug 18 2009 Jan Kratochvil - 6.8.50.20090818-1 +- Upgrade to the FSF GDB gdb-6.8.50 snapshot: 6.8.50.20090818 +- archer-jankratochvil-fedora12 commit: 5e0d1cc74f119391a2c3ae25ef5749fc28674f06 + +* Wed Aug 12 2009 Jan Kratochvil - 6.8.50.20090811-4 +- Fix minor regressions introduced by the rebase from F-11 (6.8.50.20090302). + +* Tue Aug 11 2009 Jan Kratochvil - 6.8.50.20090811-3 +- archer-jankratochvil-fedora12 commit: 2888fafe63889757c6fd27ccc2f25661d43fd1a4 +- Drop archer-jankratochvil-vla VAROBJ invalidate/revalidate split to fix + regressions against FSF GDB HEAD. + +* Tue Aug 11 2009 Jan Kratochvil - 6.8.50.20090811-2 +- archer-jankratochvil-fedora12 commit: 93f5e942bdcdcc376ece452c309bedabae71def9 +- Fix "can't compute CFA for this frame" (by Tom Tromey, BZ 516627). + +* Tue Aug 11 2009 Jan Kratochvil - 6.8.50.20090811-1 +- Support constant DW_AT_data_member_location by GCC PR debug/40659 (BZ 515377). +- Fix .spec URL. +- archer-jankratochvil-fedora12 commit: 81de3c6abae4f7e3738aa9bcc0ab2f8725cce252 + +* Mon Aug 10 2009 Jan Kratochvil - 6.8.50.20090810-2 +- Upgrade to the FSF GDB gdb-6.8.50 snapshot: 6.8.50.20090810 +- archer-jankratochvil-fedora12 commit: 93ec16e6f5000dd64d433d86674e820ed0f35b72 + +* Tue Aug 4 2009 Jan Kratochvil - 6.8.50.20090803-2 +- Drop the bundled libstdc++ python - it should be packaged on its own now. + +* Tue Aug 4 2009 Jan Kratochvil - 6.8.50.20090803-1 +- Upgrade to the FSF GDB gdb-6.8.50 snapshot: 6.8.50.20090803 +- archer-jankratochvil-fedora12 commit: 0222cb1f4ddd1eda32965e464cb60b1e44e110b2 + +* Fri Jul 31 2009 Jan Kratochvil - 6.8.50.20090302-42 +- Release bump only. + +* Fri Jul 31 2009 Jan Kratochvil - 6.8.50.20090302-41 +- Fix compatibility of --with-system-readline and readline-6.0+. +- Temporarily disabled orphanripper on Fedora 12. + +* Fri Jul 24 2009 Fedora Release Engineering - 6.8.50.20090302-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jul 6 2009 Jan Kratochvil - 6.8.50.20090302-39 +- testsuite: Fix multiple runs in parallel on a single host. +- testsuite: Remove the rpmbuild option: --with parallel +- testsuite: Run the testsuite with default rpm _smp_mflags. + +* Mon Jul 6 2009 Jan Kratochvil - 6.8.50.20090302-38 +- Archer update to the snapshot: 17bfc0488f54aeeb7a9e20ef3caa7e31e8e985fb +- Archer backport: de9c5190034b84b0a5fb4b98b05b304cda187700 + - [vla] Fix a crash regression on constant DW_AT_data_member_location. + +* Mon Jun 29 2009 Jan Kratochvil - 6.8.50.20090302-37 +- Replace the fix of cloned-TIDs with no pthread from upstream (BZ 471819). +- Fix a parallel testsuite runs incompatibility in gdb.base/gcore-shmid0.exp. + +* Mon Jun 29 2009 Jan Kratochvil - 6.8.50.20090302-36 +- Fix GDB crash on cloned-TIDs with no associated pthread (BZ 471819). +- Workaround rpm.org#76 rpm-devel requirement for debuginfo names (BZ 508193). + +* Mon Jun 22 2009 Jan Kratochvil - 6.8.50.20090302-35 +- Accelerate sorting blocks on reading a file (found on WebKit) (BZ 507267). + +* Mon Jun 22 2009 Jan Kratochvil - 6.8.50.20090302-34 +- Fix backtraces from core files with the executable found+loaded via build-id. + - Due to F-11 GCC no longer needlessly duplicating .eh_frame as .debug_frame. + +* Tue Jun 16 2009 Jan Kratochvil - 6.8.50.20090302-33 +- Archer update to the snapshot: 05c402a02716177c4ddd272a6e312cbd2908ed68 +- Archer backport: 05c402a02716177c4ddd272a6e312cbd2908ed68 + - Remove the [archer-pmuldoon-exception-rewind-master] branch. + - Include this functionality as a FSF GDB accepted patchset. + +* Mon Jun 15 2009 Jan Kratochvil - 6.8.50.20090302-32 +- Fix crash on pending breakpoints with PIE (position-indep.-exec.) (BZ 505943). + +* Fri Jun 12 2009 Jan Kratochvil - 6.8.50.20090302-31 +- Fix an occasional crash during printing of missing debuginfo rpms (BZ 505401). + +* Fri Jun 12 2009 Jan Kratochvil - 6.8.50.20090302-30 +- Implement DW_OP_call_frame_cfa (for recent GCC). + +* Thu Jun 11 2009 Jan Kratochvil - 6.8.50.20090302-29 +- Archer update to the snapshot: 30c13da4efe18f43ee34aa4b29bc86e1a53de548 +- Archer backport: 30c13da4efe18f43ee34aa4b29bc86e1a53de548 + - Fix dereferencing unbound C arrays (BZ 505163). + +* Wed Jun 10 2009 Jan Kratochvil - 6.8.50.20090302-28 +- Archer update to the snapshot: 000db8b7bfef8581ef099ccca8689cfddfea1be8 +- Archer backport: b8d3bea36b137effc929e02c4dadf73716cb330b + - Ignore explicit die representing global scope '::' (gcc 4.1 bug). +- Archer backport: c2d5c4a39b10994d86d8f2f90dfed769e8f216f3 + - Fix parsing DW_AT_const_value using DW_FORM_string +- Archer backport: 8d9ab68fc0955c9de6320bec2821a21e3244600d + + db41e11ae0a3aec7120ad6ce86450d838af74dd6 + - Fix Fortran modules/namespaces parsing (but no change was visible in F11). +- Archer backport: 000db8b7bfef8581ef099ccca8689cfddfea1be8 + - Fix "some Python error when displaying some C++ objects" (BZ 504356). +- testsuite: Support new rpmbuild option: --with parallel +- testsuite: gdb-orphanripper.c: Fix uninitialized `termios.c_line'. +- Fix crashes due to (missing) varobj revalidation, for VLA (for BZ 377541). +- Archer backport: 58dcda94ac5d6398f47382505e9d3d9d866d79bf + + f3de7bbd655337fe6705aeaafcc970deff3dd5d5 + - Implement Fortran modules namespaces (BZ 466118). +- Fix crash in the charset support. + +* Thu Apr 30 2009 Jan Kratochvil - 6.8.50.20090302-27 +- Fix race in the ia64 testcase `gdb-6.3-rh-testlibunwind-20041202.patch'. + +* Mon Apr 27 2009 Jan Kratochvil - 6.8.50.20090302-26 +- Support a new rpmbuild option: --without python + +* Mon Apr 27 2009 Jan Kratochvil - 6.8.50.20090302-25 +- The Koji build failures may have been by forgotten check-in of the Patch360. + +* Mon Apr 27 2009 Jan Kratochvil - 6.8.50.20090302-24 +- Another new Koji build fix attempt now by: BuildPreReq: python + +* Mon Apr 27 2009 Jan Kratochvil - 6.8.50.20090302-23 +- Fix BuildRequires for new Koji. + +* Mon Apr 27 2009 Jan Kratochvil - 6.8.50.20090302-22 +- Fix pstack/gstack cutting very long lines (BZ 497849). + +* Sun Apr 19 2009 Jan Kratochvil - 6.8.50.20090302-21 +- New test for parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187). + +* Thu Apr 16 2009 Jan Kratochvil - 6.8.50.20090302-20 +- Fix crash in the charset support. + +* Wed Apr 15 2009 Jan Kratochvil - 6.8.50.20090302-19 +- Fix crash on pretty-printer reading uninitialized std::string (BZ 495781). + +* Mon Apr 13 2009 Jan Kratochvil - 6.8.50.20090302-18 +- Archer update to the snapshot: d1fee5066408a09423621d1ebc64e6d3e248ed08 +- Archer backport: 4854339f75bdaf4b228fc35579bddbb2a1fecdc1 + - Fix Python FrameIterator. + +* Mon Apr 13 2009 Jan Kratochvil - 6.8.50.20090302-17 +- Archer update to the snapshot: 7c250ce99c90cf6097e2ec55ea0f205830979cee +- Archer backport: c14d9ab7eef43281b2052c885f89d2db96fb5f8e + - Revert a change regressing: gdb.objc/basicclass.exp +- Archer backport: ebd649b96e61a1fb481801b65d827bca998c6633 + + 1f080e897996d60ab7fde20423e2947512115667 + + 1948198702b51b31d79793fc49434b529b4e245f + + e107fb9687bb1e7f74170aa3d19c4a8f6edbb10f + + 1e012c996e121cb35053d239a46bd5dc65b0ce60 + - Update the Python API from upstream. +- Archer backport: d3c83ad5ec9f7672b87af9ad29279f459e53da11 + - Fix a Python branch crash. + +* Mon Apr 13 2009 Dennis Gilmore - 6.8.50.20090302-16 +- enable gdbserver package on sparc64 + +* Sun Apr 5 2009 Jan Kratochvil - 6.8.50.20090302-15 +- Archer update to the snapshot: 7c7c77576669d17ad5072daa47ea3a4fd954483d +- Archer backport: 7c7c77576669d17ad5072daa47ea3a4fd954483d (Peter Bergner) + - Disassemble Power7 instructions right in the default/only -Many GDB mode. + +* Sun Apr 5 2009 Jan Kratochvil - 6.8.50.20090302-14 +- Archer update to the snapshot: f6273d446ff87e50976600ba3f71b88d61043e20 +- Archer backport: f6273d446ff87e50976600ba3f71b88d61043e20 + - Use pretty-printers to print base classes inside a derived class. + +* Mon Mar 30 2009 Jan Kratochvil - 6.8.50.20090302-13 +- Archer update to the snapshot: d144a3633454046aaeae3e2c369c271834431d36 +- Archer backport: a2c49b7640ebe7ce1376902d48d5bbbee600996b + - Fixup compilation older GCCs. +- Archer backport: fe48224ce1bd22f37a7fa6d111d54c1a340392bf + - KFAIL 4 cases of: gdb.arch/powerpc-power7.exp +- Archer backport: d144a3633454046aaeae3e2c369c271834431d36 + - Fix C local extern variables (requires gcc-4.4.0-0.30). + +* Fri Mar 27 2009 Jan Kratochvil - 6.8.50.20090302-12 +- Archer update to the snapshot: 837d9879980148af05eae540d92caeb7200f1813 +- Archer backport: 8340d06295c8db80c544503458305197891e0348 + - Fixes [master] regression for Eclipse CDT testsuite. +- Archer backport: 16328456d5740917ade0a49bcecc14c4564b9a99 + - Fixes #2 [expr] compatibility with gcc-4.4 on gdb.cp/namespace-using.exp. +- Rebase [expr] on the Keith Seitz's sync with FSF GDB fixing the former merge. + +* Sun Mar 22 2009 Jan Kratochvil - 6.8.50.20090302-11 +- Archer update to the snapshot: e734ed95d296a3342d4147873c4641cea6c4d7fe +- Archer backport: 1e1d73cda98b1adda884b80e07c7b4929c175628 + - Fixes [expr] compatibility with gcc-4.4 on gdb.cp/namespace-using.exp. + +* Sun Mar 15 2009 Jan Kratochvil - 6.8.50.20090302-10 +- Archer update to the snapshot: 935f217d3367a642374bc56c6b146d376fc3edab +- Archer backport: 281278326412f9d6a3fabb8adc1d419fd7ddc7d7 + - Fix [expr] crash reading invalid DWARF C++ symbol "" (BZ 490319). + +* Thu Mar 12 2009 Jan Kratochvil - 6.8.50.20090302-9 +- Archer backport: aafe933b497eee8cfab736a10bae1a90d4bceb18 + - [python] Remove duplicate target-wide-charset parameter + +* Mon Mar 9 2009 Jan Kratochvil - 6.8.50.20090302-8 +- Archer update to the snapshot: a99e30d08ade4a2df0f943b036cd653bcd12b04d +- Fixes internal error on breaking at a multi-locations C++ caller (BZ 488572). + +* Mon Mar 9 2009 Jan Kratochvil - 6.8.50.20090302-7 +- Archer update to the snapshot: ec29855686f2a78d90ebcc63765681249bbbe808 +- Temporarily place libstdc++ pretty printers in this gdb.rpm. + +* Sat Mar 7 2009 Jan Kratochvil - 6.8.50.20090302-6 +- Archer update to the snapshot: 543fb2154d3bd551344b990b911be5c6cc703504 + - Fixes [delayed-symfile] excessive `(no debugging symbols found)' messages. + +* Sat Mar 7 2009 Jan Kratochvil - 6.8.50.20090302-5 +- Improve `gdb-6.6-buildid-locate-rpm.patch' by dlopen() (+pkg-config compat.). + +* Sat Mar 7 2009 Jan Kratochvil - 6.8.50.20090302-4 +- Split `gdb-6.6-buildid-locate.patch' to `gdb-6.6-buildid-locate-rpm.patch'. + +* Sat Mar 7 2009 Jan Kratochvil - 6.8.50.20090302-3 +- Archer update to the snapshot: 6cf16c0711e844094ab694b3d929f7bd30b49f61 +- Fix crash on the inlined functions support. +- Fix crash from the PIE support, its varobj_refresh() was called only before + varobj_invalidate() which is sufficient. +- Fix BuildRequires for the `--with testsuite' runs. +- Use the newly introduced `--with-pythondir' option. +- Remove libstdcxx [python] pretty printers (as included in libstdc++ rpm now). + +* Fri Mar 06 2009 Jesse Keating - 6.8.50.20090302-2 +- Rebuild for new rpm libs + +* Mon Mar 2 2009 Jan Kratochvil - 6.8.50.20090302-1 +- Include the Archer Project: http://sourceware.org/gdb/wiki/ProjectArcher + snapshot: 8cc3753a9aad85bf53bef54c04334c60d16cb251 + * [python] Python scripting support: http://sourceware.org/gdb/wiki/PythonGdb + * [catch-syscall] Trap and display syscalls. + * [delayed-symfile] Improve startup performance by lazily read psymtabs. + * [exception-rewind] Fix fatal C++ exceptions in an inferior function call. + * [expr] Expressions, single-quote elimination, C++ input canonicalization. + * [using-directive] C++ namespaces. + * [vla] C variable length arrays / DW_FORM_block / Fortran dynamic arrays. + * [misc] Fix debuginfoless `return' (BZ 365111), fix command-line macros for + expected GCC (BZ 479914), new testcase for valgrind (for BZ 483262), + implement `info common' for Fortran, fix Fortran logical-kind=8 (BZ 465310), + fix static variable in C++ constructors (BZ 445912), fix power7 (BZ 485319). +- Upgrade to the FSF GDB gdb-6.8.50 snapshot. +- Fix parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187). + - Turn on 64-bit BFD support, globally enable AC_SYS_LARGEFILE. + +* Tue Feb 24 2009 Fedora Release Engineering - 6.8.50.20090210-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Feb 11 2009 Jan Kratochvil - 6.8.50.20090210-1 +- Upgrade to the FSF GDB gdb-6.8.50 snapshot. + +* Wed Feb 11 2009 Jan Kratochvil - 6.8.50.20090209-1 +- Upgrade to the FSF GDB gdb-6.8.50 snapshot. + +* Mon Feb 9 2009 Jan Kratochvil - 6.8.50.20081214-2 +- Fix crash / implement `finish' into inlined functions (BZ 479781). +- Drop the gdb.threads/attach-into-signal.exp change as obsolete. + +* Sun Dec 14 2008 Jan Kratochvil - 6.8.50.20081214-1 +- Upgrade to the upstream gdb-6.8.50 snapshot. + +* Mon Dec 1 2008 Jan Kratochvil - 6.8-33 +- Make `--with testsuite' BuildRequires properly conditional. + +* Mon Dec 1 2008 Stepan Kasal - 6.8-32 +- Remove trivial BuildRequires, use rpm macros in a few remaining places. + +* Tue Nov 18 2008 Jan Kratochvil - 6.8-31 +- Enable ia64 hardware watchpoints if created before starting inferior. + +* Sun Nov 9 2008 Jan Kratochvil - 6.8-30 +- Fix a race in the testcase `gdb.threads/step-thread-exit.exp'. + +* Sun Nov 9 2008 Jan Kratochvil - 6.8-29 +- Fix more the variable-length-arrays support (BZ 468266, feature BZ 377541). +- Integrate the `bt full' protection (for BZ 466901) into the VLA patch. + +* Thu Nov 6 2008 Jan Kratochvil - 6.8-28 +- Fix the "never terminate `bt full'" patch false GCC warning / build error. + +* Thu Nov 6 2008 Jan Kratochvil - 6.8-27 +- Fix resolving of variables at locations lists in prelinked libs (BZ 466901), + bugreported by Michal Babej. +- Never terminate `bt full' on a problem of variable resolving (for BZ 466901). + +* Thu Nov 6 2008 Jan Kratochvil - 6.8-26 +- Fix more the variable-length-arrays support (BZ 468266, feature BZ 377541). +- Fix the watchpoints conditionals. +- Fix on PPC spurious SIGTRAPs on active watchpoints. +- Fix occasional stepping lockup on many threads, seen on ia64. + +* Mon Nov 3 2008 Jan Kratochvil - 6.8-25 +- Fix the variable-length-arrays support (BZ 468266, feature BZ 377541). +- Fix the debuginfo-install suggestions for missing base packages (BZ 467901), + also update the rpm/yum code to no longer require _RPM_4_4_COMPAT. + +* Tue Sep 2 2008 Jan Kratochvil - 6.8-24 +- Fix PIE patch regression for loading binaries from valgrind (BZ 460319). + +* Thu Aug 28 2008 Jan Kratochvil - 6.8-23 +- Fix attaching to stopped processes, based on the upstream version now. + - Just kernel-2.6.25 neither upstream nor utrace work with it; 2.6.9 works. +- Fix occasional crash on a removed watchpoint. +- Fix false testcase FAILs for `gdb.pie/break.exp'. +- Fix a false warning (+a testcase FAIL) on s390x watchpoints. +- Fix a false FAIL on s390x `gdb.base/dump.exp'. + +* Wed Aug 27 2008 Jan Kratochvil - 6.8-22 +- Remove `gdb-6.3-nonthreaded-wp-20050117.patch' as obsoleted + regressing now. +- Make the GDB quit processing non-abortable to cleanup everything properly. +- Support DW_TAG_constant for Fortran in recent Fedora/RH GCCs. +- Fix crash on DW_TAG_module for Fortran in recent Fedora/RH GCCs. +- Readd resolving of bare names of constructors and destructors. +- Include various vendor testcases: + - Leftover zombie process (BZ 243845). + - Multithreaded watchpoints (`gdb.threads/watchthreads2.exp'). + - PIE testcases (`gdb.pie/*'). + - C++ contructors/destructors (`gdb.cp/constructortest.exp'). + +* Sat Aug 23 2008 Jan Kratochvil - 6.8-21 +- Fix MI debuginfo print on reloaded exec, found by Denys Vlasenko (BZ 459414). +- Extend the Fortran dynamic variables patch also for dynamic Fortran strings. + +* Wed Aug 13 2008 Jan Kratochvil - 6.8-20 +- Temporarily disable attaching to a stopped process (BZ 453688) + - To be reintroduced after a fix of the kernel BZ 454404. + +* Mon Aug 4 2008 Jan Kratochvil - 6.8-19 +- Fix `errno' printing on nonthreaded non-g3 inferiors (TLS minsym is absolute). + +* Fri Aug 1 2008 Jan Kratochvil - 6.8-18 +- Fix powerpc recent secure PLTs handling (shared library calls) (BZ 452960). +- Fix the testsuite .spec runner to run biarch also on ppc. +- Reenable testcases threadcrash.exp, chng-syms.exp, checkpoint.exp (BZ 207002). +- Fix PRPSINFO in the core files dumped by gcore (BZ 254229), reformatted patch + from Denys Vlasenko. +- Fix register assignments with no GDB stack frames, Denys Vlasenko (BZ 436037). + +* Mon Jul 14 2008 Jan Kratochvil - 6.8-17 +- Refresh the patchset with fuzz 0 (for new rpmbuild). + +* Mon Jul 14 2008 Jan Kratochvil - 6.8-16 +- Rebuild with the new rpm-4.5.90 in the buildroot. + +* Sat Jul 12 2008 Jan Kratochvil - 6.8-15 +- Temporary rpm-4.5.90 compatibility workaround by Panu Matilainen. +- Fix a regression in the constant watchpoints fix, found by Daniel Jacobowitz. +- Fix the prelink testcase for false FAILs on i386. + +* Tue Jul 8 2008 Jan Kratochvil - 6.8-14 +- Fix crash due to calling an inferior function right after a watchpoint stop. + +* Thu Jul 3 2008 Jan Kratochvil - 6.8-13 +- Support transparent debugging of inlined functions for an optimized code. + +* Fri Jun 20 2008 Jan Kratochvil - 6.8-12 +- Remove the gdb/gdbtui binaries duplicity. + +* Tue Jun 17 2008 Jan Kratochvil - 6.8-11 +- Fix the testsuite run for ia64 (where no -m64 is present). +- Test a crash on libraries missing the .text section. +- Protect development in the build tree by automatic Makefile dependencies. +- Refuse creating watchpoints of an address value, suggested by Martin Stransky. +- Disable randomization (such as by setarch -R), suggested by Jakub Jelinek. +- Fix compatibility with recent glibc headers. + +* Sun Jun 1 2008 Jan Kratochvil - 6.8-10 +- Fix crash on a watchpoint update on an inferior stop. +- Fix the s390x part of the hardware watchpoints after a fork. + +* Thu May 22 2008 Jan Kratochvil - 6.8-9 +- Fix memory trashing on binaries from GNAT/Ada (workaround GCC PR 35998). + +* Thu May 15 2008 Tom "spot" Callaway - 6.8-8 +- Silence memcpy check which returns false positive (sparc64) + +* Thu May 15 2008 Tom "spot" Callaway - 6.8-7 +- patch from DaveM for sparc/sparc64 +- touch up spec to enable sparcv9/sparc64 + +* Sat May 3 2008 Jan Kratochvil - 6.8-6 +- Fix gdb.base/gcore-shmid0.exp to be unresolved on recent kernels. +- Make the testsuite results of dfp-test.exp more stable. + +* Sun Apr 27 2008 Jan Kratochvil - 6.8-5 +- Remove the kernel VDSO workaround (`no loadable ...') (kernel BZ 312011). + +* Wed Apr 23 2008 Jan Kratochvil - 6.8-4 +- Backport fix on various forms of threads tracking across exec() (BZ 442765). +- Testsuite: Include more biarch libraries on %%{multilib_64_archs}. +- Disable the build-id warnings for the testsuite run as they cause some FAILs. +- Fix PIE support for 32bit inferiors on 64bit debugger. +- Fix trashing memory on one ada/gnat testcase. +- Make the testsuite results on ada more stable. + +* Wed Apr 16 2008 Jan Kratochvil - 6.8-3 +- Fix ia64 compilation errors (Yi Zhan, BZ 442684). +- Fix build on non-standard rpm-devel includes (Robert Scheck, BZ 442449). +- Do not run the PIE mode for the testsuite during `--with upstream'. +- Fix test of the crash on a sw watchpoint condition getting out of the scope. + +* Fri Apr 11 2008 Jan Kratochvil - 6.8-2 +- Fix a regression due to PIE of reloading a changed exec file (BZ 433410). +- Include also biarch libgcc on %%{multilib_64_archs} for the testsuite. +- Cosmetic fix of a testcase sanity breakpoint setting (part of BZ 233852). +- New test of hiding unexpected breakpoints on intentional step commands. +- New test of GCORE for shmid 0 shared memory mappings. +- New test of a crash on `focus cmd', `focus prev' commands. +- Fix a minor test race of the hardware watchpoints after the fork call. +- Test crash on a sw watchpoint condition getting out of the scope. + +* Fri Mar 28 2008 Jan Kratochvil - 6.8-1 +- Upgrade to the latest upstream final release gdb-6.8. + +* Mon Mar 10 2008 Jan Kratochvil - 6.7.50.20080227-3 +- build-id warnings integrated more with rpm and the lists of the warnings got + replaced usually by a single-line `debuginfo-install' advice. + - FIXME: Testsuite needs an update for the new pre-prompt messages. +- Fix the `--with upstream' compilation - gstack/pstack are now omitted. + +* Tue Mar 4 2008 Jan Kratochvil - 6.7.50.20080227-2 +- Drop the unused `ChangeLog.RedHat' file stubs. +- New rpm option `--with upstream' to drop the Fedora patches for testing. +- Drop some no longer valid .spec file comments. +- Include the Fortran dynamic arrays entry for changelog of 6.7.50.20080227-1. + +* Mon Mar 3 2008 Jan Kratochvil - 6.7.50.20080227-1 +- Upgrade to the upstream gdb-6.8 prerelease. +- Cleanup the leftover `.orig' files during %%prep. +- Add expat-devel check by the configure script (for the other-arch builds). +- `--with testsuite' now also BuildRequires: fpc +- Backport fix of a segfault + PIE regression since 6.7.1 on PIE executables. +- Update the printed GDB version string to be Fedora specific. +- Fix/implement the Fortran dynamic arrays support (BZ 377541). + +* Sat Mar 1 2008 Jan Kratochvil - 6.7.1-16 +- Run the full testsuite also in the `-fPIE -pie' mode. + +* Mon Feb 25 2008 Jan Kratochvil - 6.7.1-15 +- New --with parameters `testsuite' and `debug'. + - Testsuite is now run during the build only on explicit `--with testsuite'. +- Testsuite now possibly produces two outputs for the two GDB target arches. + +* Thu Feb 21 2008 Jan Kratochvil - 6.7.1-14 +- Rename `set debug build-id' as `set build-id-verbose', former level 1 moved + to level 2, default value is now 1, use `set build-id-verbose 0' now to + disable the missing separate debug filenames messages (BZ 432164). + +* Wed Feb 20 2008 Jan Kratochvil - 6.7.1-13 +- ia64 build fixes from Doug Chapman (BZ 428882). +- gdbserver separated into an extra package (BZ 405791). +- pstack obsoleted by included gstack (BZ 197020). +- Fix #include on kernel-headers-2.6.25-0.40.rc1.git2.fc9.x86_64. +- Drop the PowerPC simulator as no longer being compatible with Fedora binaries. + +* Thu Feb 7 2008 Jan Kratochvil - 6.7.1-12 +- build-id debug messages print now the library names unconditionally. + +* Thu Jan 24 2008 Jan Kratochvil - 6.7.1-11 +- Improve the text UI messages for the build-id debug files locating. + - Require now the rpm libraries. +- Fix false `(no debugging symbols found)' on `-readnever' runs. +- Extend the testcase `gdb.arch/powerpc-prologue.exp' for ppc64. + +* Sat Jan 12 2008 Jan Kratochvil - 6.7.1-10 +- Compilation fixup (-9 was never released). + +* Sat Jan 12 2008 Jan Kratochvil - 6.7.1-9 +- Fix also threaded inferiors for hardware watchpoints after the fork call. +- Test debugging statically linked threaded inferiors (BZ 239652). + - It requires recent glibc to work in this case properly. +- Testcase cleanup fixup of the gcore memory and time requirements of 6.7.1-8. + +* Thu Jan 10 2008 Jan Kratochvil - 6.7.1-8 +- Fix detaching from a threaded formerly stopped process with non-primary + thread currently active (general BZ 233852). + - Enable back again the testcases named `attachstop.exp' (no such exist now). + - Rename the testcase `gdb.threads/attachstop' to `gdb.threads/attachstop-mt'. +- Test ia64 memory leaks of the code using libunwind. +- Testcase delay increase (for BZ 247354). +- Test gcore memory and time requirements for large inferiors. + +* Mon Jan 7 2008 Jan Kratochvil - 6.7.1-7 +- Backport the gcc-4.3 compatibility -Werror fixes. +- Fix documentation on hardware watchpoints wrt multiple threads. +- Rename the patch file for BZ 235197 from its former name 234468. +- Fix the vendora testcase `attach-32.exp' affecting the other tests results. +- Support DW_TAG_interface_type the same way as DW_TAG_class_type (BZ 426600). + +* Mon Dec 10 2007 Jan Kratochvil - 6.7.1-6 +- Testsuite fixes for more stable/comparable results. + +* Sat Nov 24 2007 Jan Kratochvil - 6.7.1-5 +- Reduce the excessive gcc-* packages dependencies outside of mock/koji. + +* Fri Nov 16 2007 Jan Kratochvil - 6.7.1-4 +- Fix `errno' resolving across separate debuginfo files. +- Fix segfault on no file loaded, `set debug solib 1', `info sharedlibrary'. +- Extend the testsuite run for all the languages if %%{dist} is defined. +- Support gdb.fortran/ tests by substituting the g77 compiler by gfortran. + +* Sun Nov 4 2007 Jan Kratochvil - 6.7.1-3 +- Fix `errno' resolving on recent glibc with broken DW_AT_MIPS_linkage_name. +- Imported new test for 6.7 PPC hiding of call-volatile parameter register. + +* Sat Nov 3 2007 Jan Kratochvil - 6.7.1-2 +- Backport `Breakpoints at multiple locations' patch primarily for C++. + +* Thu Nov 1 2007 Jan Kratochvil - 6.7.1-1 +- Upgrade to GDB 6.7.1. Drop redundant patches, forward-port remaining ones. + +* Thu Nov 1 2007 Jan Kratochvil - 6.7-1 +- Upgrade to GDB 6.7. Drop redundant patches, forward-port remaining ones. +- Fix rereading of the main executable on its change. + +* Fri Oct 19 2007 Jan Kratochvil - 6.6-37 +- Fix hiding unexpected breakpoints on intentional step/next commands. +- Fix s390 compilation warning/failure due to a wrongly sized type-cast. + +* Sun Oct 14 2007 Jan Kratochvil - 6.6-36 +- Fix hardware watchpoints after inferior forks-off some process. + +* Sat Oct 13 2007 Jan Kratochvil - 6.6-35 +- Fix non-threaded watchpoints CTRL-C regression on `set follow child'. + +* Fri Oct 12 2007 Jan Kratochvil - 6.6-34 +- Fix gdbserver for threaded applications and recent glibc (BZ 328021). + +* Tue Oct 9 2007 Jan Kratochvil - 6.6-33 +- Fix debug load for sparse assembler files (such as vDSO32 for i386-on-x86_64). + +* Mon Oct 8 2007 Jan Kratochvil - 6.6-32 +- Set the breakpoints always to all the ctors/dtors variants (BZ 301701). +- Fix a TUI visual corruption due to the build-id warnings (BZ 320061). +- Fixed the kernel i386-on-x86_64 VDSO loading (producing `Lowest section in'). + +* Fri Oct 5 2007 Jan Kratochvil - 6.6-31 +- Fix address changes of the ctors/dtors breakpoints w/multiple PCs (BZ 301701). +- Delete an info doc file on `rpmbuild -bp' later rebuilt during `rpmbuild -bc'. + +* Tue Sep 25 2007 Jan Kratochvil - 6.6-30 +- Fix re-setting of the ctors/dtors breakpoints with multiple PCs (BZ 301701). +- Avoid one useless user question in the core files locator (build-id). + +* Sun Sep 23 2007 Jan Kratochvil - 6.6-29 +- Fixed the kernel VDSO loading (`warning: no loadable sections found in ...'). +- Fix the testcase for pending signals (from BZ 233852). + +* Sat Sep 22 2007 Jan Kratochvil - 6.6-28 +- Support also the `$allocate' and `$delete' ctor/dtor variants (BZ 301701). +- Fix the build compatibility with texinfo >= 4.10. +- Fix the testcase for pending signals (from BZ 233852). + +* Sun Sep 16 2007 Jan Kratochvil - 6.6-27 +- Fix attaching to stopped processes and/or pending signals. + +* Tue Aug 28 2007 Jan Kratochvil - 6.6-26 +- New fast verification whether the .debug file matches its peer (build-id). +- New locating of the matching binaries from the pure core file (build-id). + +* Fri Aug 17 2007 Jan Kratochvil - 6.6-25 +- Fixed excessive RPATH (related to BZ 228891). + +* Wed Aug 8 2007 Jan Kratochvil - 6.6-24 +- Fixed compatibility with the Rawhide glibc open(2) syscall sanity checking. +- Update the core_dump_elf_headers=1 compatibility code to the upstream variant. + +* Mon Aug 6 2007 Jan Kratochvil - 6.6-23 +- Update PPC unwinding patches to their upstream variants (BZ 140532). + +* Wed Jul 25 2007 Jesse Keating - 6.6-22 +- Rebuild for RH #249435 + +* Mon Jul 23 2007 Jan Kratochvil - 6.6-21 +- Fixed compatibility with Rawhide kernel fs.binfmt_elf.core_dump_elf_headers=1. +- .spec file updates to mostly pass RPMLINT - Fedora merge review (BZ 225783). +- Fixed testcase of the exit of a thread group leader (of BZ 247354). +- Cleanup any leftover testsuite processes as it may stuck mock(1) builds. + +* Sun Jul 8 2007 Jan Kratochvil - 6.6-20 +- Do not hang on exit of a thread group leader (BZ 247354). +- New test for upstream fix of VDSO decoding while attaching to an i386 process. +- Fixed BZ # 232014 -> 232015. + +* Thu Jul 5 2007 Jan Kratochvil - 6.6-19 +- Link with libreadline provided by the operating system. + +* Tue Jun 26 2007 Jan Kratochvil - 6.6-18 +- Fix PPC software watchpoints active while stepping atomic instr. (BZ 237572). + +* Thu Jun 21 2007 Jan Kratochvil - 6.6-17 +- Support for stepping over PPC atomic instruction sequences (BZ 237572). +- `set scheduler-locking step' is no longer enforced but it is now default. + +* Wed Jun 20 2007 Jan Kratochvil - 6.6-16 +- Fix attaching a stopped process on expected + upstream kernels (BZ 233852). + - Fix attaching during a pending signal being delivered. + +* Thu Jun 7 2007 Jan Kratochvil - 6.6-15 +- Testcase update to cover PPC Power6/DFP instructions disassembly (BZ 230000). +- Disable some known timeouting/failing testcases to reduce the build time. +- Fix crash on missing filenames debug info (BZ 242155). + +* Sat Apr 28 2007 Jan Kratochvil - 6.6-14 +- Fixup for the PPC Power6/DFP instructions disassembly (BZ 230000). +- New testcase for the GCORE buffer overflow (for BZ 238285, formerly 235753). + +* Wed Apr 25 2007 Jan Kratochvil - 6.6-13 +- Fix `gcore' command for 32bit PPC inferiors on 64bit PPC hosts (BZ 232015). + +* Wed Apr 25 2007 Jan Kratochvil - 6.6-12 +- Enable PowerPC to print 128-bit long double variables (BZ 237872). +- New testcase for gcore of 32bit inferiors on 64bit hosts. + +* Tue Apr 24 2007 Jan Kratochvil - 6.6-11 +- Package review, analysed by Ralf Corsepius (BZ 225783). + - Fix prelink(8) testcase for non-root $PATH missing `/usr/sbin' (BZ 225783). + - Fix debugging GDB itself - the compiled in source files paths (BZ 225783). + - Fix harmless GCORE stack buffer overflow, by _FORTIFY_SOURCE=2 (BZ 238285). + - Fix XML support - the build was missing `expat-devel'. + - Updated the `info' files handling by the spec file. + - Building now with the standard Fedora code protections - _FORTIFY_SOURCE=2. + - Use multiple CPUs for the build (%%{?_smp_mflags}). + - Separate testsuite run to its %%check section. + - Fix (remove) non-ASCII spec file characters. + - Remove system tools versions dumping - already present in mock build logs. + +* Sun Apr 22 2007 Jan Kratochvil - 6.6-10 +- Notify user of a child forked process being detached (BZ 235197). + +* Sun Apr 22 2007 Jan Kratochvil - 6.6-9 +- Allow running `/usr/bin/gcore' with provided but inaccessible tty (BZ 229517). +- Fix testcase for watchpoints in threads (for BZ 237096). +- BuildRequires now `libunwind-devel' instead of the former `libunwind'. +- Use the runtime libunwind .so.7, it requires now >= 0.99-0.1.frysk20070405cvs. + +* Sat Mar 24 2007 Jan Kratochvil - 6.6-8 +- Use definition of an empty structure as it is not an opaque type (BZ 233716). +- Fixed the gdb.base/attachstop.exp testcase false 2 FAILs. + +* Thu Mar 15 2007 Jan Kratochvil - 6.6-7 +- Suggest SELinux permissions problem; no assertion failure anymore (BZ 232371). + +* Wed Mar 14 2007 Jan Kratochvil - 6.6-6 +- Fix occasional dwarf2_read_address: Corrupted DWARF expression (BZ 232353). + +* Mon Mar 12 2007 Jan Kratochvil - 6.6-5 +- Temporary support for shared libraries >2GB on 64bit hosts. (BZ 231832) + +* Sun Feb 25 2007 Jan Kratochvil - 6.6-4 +- Backport + testcase for PPC Power6/DFP instructions disassembly (BZ 230000). + +* Mon Feb 5 2007 Jan Kratochvil - 6.6-3 +- Fix a race during attaching to dying threads; backport (BZ 209445). +- Testcase of unwinding has now marked its unsolvable cases (for BZ 140532). + +* Fri Jan 26 2007 Jan Kratochvil - 6.6-2 +- Backported post gdb-6.6 release PPC `show endian' fixup. +- Fix displaying of numeric char arrays as strings (BZ 224128). +- Simplified patches by merging upstream accepted ones into a single file. + +* Sat Jan 20 2007 Jan Kratochvil - 6.6-1 +- Upgrade to GDB 6.6. Drop redundant patches, forward-port remaining ones. +- Backported post gdb-6.6 release ia64 unwinding fixups. +- Testcase for exec() from threaded program (BZ 202689). + +* Mon Jan 15 2007 Jan Kratochvil - 6.5-27 +- Fix the testsuite results broken in 6.5-26, stop invalid testsuite runs. + +* Sat Jan 13 2007 Jan Kratochvil - 6.5-26 +- Fix unwinding of non-debug (.eh_frame) PPC code, Andreas Schwab (BZ 140532). +- Fix unwinding of debug (.debug_frame) PPC code, workaround GCC (BZ 140532). +- Fix missing testsuite .log output of testcases using get_compiler_info(). + +* Fri Jan 12 2007 Jan Kratochvil - 6.5-25 +- Fix unwinding of non-CFI (w/o debuginfo) PPC code by recent GCC (BZ 140532). + +* Thu Jan 11 2007 Jan Kratochvil - 6.5-24 +- Backport readline history for input mode commands like `command' (BZ 215816). + +* Tue Jan 9 2007 Jan Kratochvil - 6.5-23 +- Find symbols properly at their original (included) file (BZ 109921). +- Remove the stuck mock(1) builds disfunctional workaround (-> mock BZ 221351). + +* Sat Dec 30 2006 Jan Kratochvil - 6.5-22 +- Fix unwinding crash on older gcj(1) code (extended CFI support) (BZ 165025). +- Include testcase for the readline history of input mode commands (BZ 215816). + +* Sat Dec 23 2006 Jan Kratochvil - 6.5-21 +- Try to reduce sideeffects of skipping ppc .so libs trampolines (BZ 218379). +- Fix lockup on trampoline vs. its function lookup; unreproducible (BZ 218379). + +* Tue Dec 19 2006 Jan Kratochvil - 6.5-20 +- Fix bogus 0x0 unwind of the thread's topmost function clone(3) (BZ 216711). +- Testcase for readline segfault on excessively long hand-typed lines. + +* Tue Dec 12 2006 Jan Kratochvil - 6.5-19 +- Fix attachment also to a threaded stopped process (BZ 219118). +- Cleanup any leftover testsuite processes as it may stuck mock(1) builds. + +* Sat Nov 25 2006 Jan Kratochvil - 6.5-18 +- Fix readline history for input mode commands like `command' (BZ 215816). + +* Thu Nov 16 2006 Jan Kratochvil - 6.5-17 +- Bugfix testcase typo of gdb-6.5-16. + +* Thu Nov 16 2006 Jan Kratochvil - 6.5-16 +- Provide testcase for accessing the last address space byte. + +* Thu Nov 9 2006 Jan Kratochvil - 6.5-15 +- Fix readline segfault on excessively long hand-typed lines. + +* Thu Nov 2 2006 Jan Kratochvil - 6.5-14 +- Fix "??" resolving of symbols from (non-prelinked) debuginfo packages. +- Fix "??" resolving of symbols from overlapping functions (nanosleep(3)). +- Also disable testcase "checkpoint.exp" for a possible kernel Bug 207002. +- Provided (disabled during build) threading testsuite from BEA. + +* Sat Oct 14 2006 Jan Kratochvil - 6.5-13 +- Fix deadlock accessing last address space byte; for corrupted backtraces. + +* Sun Oct 8 2006 Jan Kratochvil - 6.5-12 +- Disabled IPv6 until its user visible syntax gets stable upstream. + +* Sun Oct 1 2006 Jan Kratochvil - 6.5-11 +- No longer disassemble invalid i386 opcodes of movQ/movA (BZ 172034). +- Simplify the IPv6 patch for gdbserver (BZ 198365). +- Suggest fixing your target architecture for gdbserver(1) (BZ 190810). +- Fix dereferencing registers for 32bit inferiors on 64bit hosts (BZ 181390). +- Fix `gcore' command for 32bit inferiors on 64bit hosts. + +* Wed Sep 27 2006 Jan Kratochvil - 6.5-10 +- Support IPv6 for gdbserver (BZ 198365). +- Temporarily disable testcase "chng-syms.exp" for a possible kernel Bug 207002. + +* Thu Sep 21 2006 Jan Kratochvil - 6.5-9 +- Fix crash on C++ symbol failing to be demangled (BZ 206813). +- Fix attach to stopped process, supersede `gdb-6.3-attach-stop-20051011.patch'. +- Fix TLS symbols resolving for objects with separate .debug file (-debuginfo). +- Fix TLS symbols resolving for shared libraries with a relative pathname. +- Support TLS symbols (+`errno' suggestion if no pthread is found) (BZ 185337). + +* Mon Sep 11 2006 Jan Kratochvil - 6.5-8 +- Fix gdb printf command argument using "%%p" (BZ 205551). + +* Mon Sep 4 2006 Alexandre Oliva - 6.5-7 +- Fix bug in patch for CVE-2006-4146. (BZ 203873, BZ 203880) + +* Thu Aug 24 2006 Alexandre Oliva - 6.5-6 +- Avoid overflows and underflows in dwarf expression computation stack. +(BZ 203873) + +* Thu Aug 24 2006 Alexandre Oliva - 6.5-5 +- Backport support for i386 nop memory instructions. +- Fix debuginfo addresses resolving for --emit-relocs Linux kernels +(BZ 203661, from Jan Kratochvil, like the remaining changes). +- Bugfix segv on the source display by ^X 1 (fixes Patch130, BZ +200048). +- Do not step into the PPC solib trampolines (BZ 200533). +- Fix exec() from threaded program, partial CVS backport (BZ 182116). +- Fix occasional failure to load shared libraries (BZ 146810). +- Bugfix object names completion (fixes Patch116, BZ 193763). +- Avoid crash of 'info threads' if stale threads exist (BZ 195429). +- Handle corrupted or missing location list information (BZ 196439). + +* Thu Jul 13 2006 Alexandre Oliva - 6.5-3 +- Add missing definition of multilib_64_archs for glibc-devel buildreqs. +- Backport support for .gnu.hash sections. + +* Wed Jul 12 2006 Alexandre Oliva - 6.5-2 +- BuildReq sharutils, prelink and, on multilib systems, 32-bit glibc-devel. +- Drop obsolete attach-stop patch. +- Fix testcases in threaded-watchpoints2 and step-thread-exit patches. +- Re-enable attach-pie.exp, asm-source.exp and sigstep.exp tests. + +* Tue Jul 11 2006 Alexandre Oliva - 6.5-1 +- Upgrade to GDB 6.5. Drop redundant patches, forward-port remaining +ones. Re-enable ada and objc testsuites. + +* Thu Jun 15 2006 Alexandre Oliva - 6.3.0.0-1.132 +- Require flex and bison at build time. +- Additional patch for BZ 175083, to cope with waitpid setting status +even when returning zero. + +* Wed May 31 2006 Alexandre Oliva - 6.3.0.0-1.131 +- Require gettext at build time. (BZ193366) + +* Sat May 27 2006 Alexandre Oliva - 6.3.0.0-1.130 +- Rewrite patch for BZ 175270, BZ 175083 so as to catch the exception +earlier. +- Remove too-fragile testcases from patches for CFA value and "S" +augmentation. + +* Wed May 17 2006 Alexandre Oliva - 6.3.0.0-1.129 +- Add not-automatically-generated file to fopen64 patch (BZ 191948). + +* Fri Apr 14 2006 Alexandre Oliva - 6.3.0.0-1.128 +- Avoid race conditions caused by exceptions messing with signal masks. +(BZ 175270, BZ 175083, maybe BZ 172938). +- Hardcode /bin and /usr/bin paths into gstack (BZ 179829, BZ 190548). +- Build in a subdir of the source tree instead of in a sibling directory. +- Switch to versioning scheme that uses the same base revision number +for all OSes, and uses a suffix to tell the builds apart and ensure +upgradability. + +* Thu Apr 13 2006 Stepan Kasal - 6.3.0.0-1.127 +- Bump up release number. + +* Thu Apr 13 2006 Stepan Kasal - 6.3.0.0-1.123 +- Use fopen64 where available. Fixes BZ 178796, BZ 190547. +- Use bigger numbers than int. Fixes BZ 171783, BZ 179096. + +* Wed Mar 8 2006 Alexandre Oliva - 6.3.0.0-1.122 +- Bump up release number. + +* Wed Mar 8 2006 Alexandre Oliva - 6.3.0.0-1.119 +- Fix regression in PIE debugging (BZ 133944) (re?)introduced by the +prelink fix (BZ 175075, BZ 190545). Improve testcase for the prelink +fix. +- Revert dwarf2 frame identifier change. + +* Tue Mar 7 2006 Alexandre Oliva - 6.3.0.0-1.118 +- Bump up release number. + +* Tue Mar 7 2006 Alexandre Oliva - 6.3.0.0-1.115 +- Change dwarf2 frame identifiers to use the actual PC instead of the +function's entry point. +- Fix FSF and GDB contact addresses in new testcases. +- Do not try to compile x86_64-only CFA testcase on 32-bit x86. +- Change prelink test to issue untested instead of warning message if +system libraries are not prelinked. + +* Fri Mar 3 2006 Alexandre Oliva - 6.3.0.0-1.114 +- Bump up release number. + +* Fri Mar 3 2006 Alexandre Oliva - 6.3.0.0-1.111 +- Add support for "S" augmentation for signal stack frames. +- Add support for CFA value expressions and encodings. +- Various improvements to the prelink test. + +* Thu Feb 23 2006 Alexandre Oliva - 6.3.0.0-1.110 +- Bump up release number. + +* Thu Feb 23 2006 Alexandre Oliva - 6.3.0.0-1.107 +- Enable gdb to debug core files and executables with mismatched +prelink base addresses. Fixes BZ 175075, BZ 190545. + +* Tue Feb 14 2006 Alexandre Oliva - 6.3.0.0-1.106 +- Bump up release number. + +* Tue Feb 14 2006 Alexandre Oliva - 6.3.0.0-1.103 +- Adjust type-punning patch to include fix not needed upstream. + +* Tue Feb 14 2006 Alexandre Oliva - 6.3.0.0-1.102 +- Bump up release number. + +* Tue Feb 14 2006 Alexandre Oliva - 6.3.0.0-1.99 +- Use type-punning warning fixes as accepted upstream. + +* Fri Feb 10 2006 Jesse Keating - 6.3.0.0-1.98.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 6.3.0.0-1.98.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Jan 16 2006 Alexandre Oliva - 6.3.0.0-1.98 +- Bump up release number. + +* Mon Dec 19 2005 Alexandre Oliva - 6.3.0.0-1.94 +- Fix type-punning warnings issued by GCC 4.1. + +* Fri Dec 16 2005 Jesse Keating +- rebuilt for new gcj + +* Thu Dec 01 2005 Jeff Johnston - 6.3.0.0-1.93 +- Bump up release number. + +* Thu Dec 01 2005 Jeff Johnston - 6.3.0.0-1.90 +- Add option to allow backtracing past zero pc value. +- Bugzilla 170275 + +* Tue Nov 15 2005 Jeff Johnston - 6.3.0.0-1.89 +- Bump up release number. + +* Tue Nov 15 2005 Jeff Johnston - 6.3.0.0-1.86 +- Fix ia64 user-specified SIGILL handling error. +- Bugzilla 165038. + +* Tue Oct 18 2005 Jeff Johnston - 6.3.0.0-1.85 +- Bump up release number. + +* Tue Oct 18 2005 Jeff Johnston - 6.3.0.0-1.82 +- Modify attach patch to add missing fclose. +- Bugzilla 166712 + +* Tue Oct 11 2005 Jeff Johnston - 6.3.0.0-1.81 +- Bump up release number. + +* Tue Oct 11 2005 Jeff Johnston - 6.3.0.0-1.78 +- Support gdb attaching to a stopped process. + +* Thu Sep 29 2005 Jeff Johnston - 6.3.0.0-1.77 +- Bump up release number. + +* Thu Sep 29 2005 Jeff Johnston - 6.3.0.0-1.74 +- Fix up DSO read logic when process is attached. + +* Mon Sep 26 2005 Jeff Johnston - 6.3.0.0-1.73 +- Bump up release number. + +* Mon Sep 26 2005 Jeff Johnston - 6.3.0.0-1.70 +- Fix frame pointer calculation for ia64 sigtramp frame. + +* Thu Sep 22 2005 Jeff Johnston - 6.3.0.0-1.69 +- Bump up release number. + +* Thu Sep 22 2005 Jeff Johnston - 6.3.0.0-1.66 +- Remove extraneous xfree. + +* Wed Sep 07 2005 Jeff Johnston - 6.3.0.0-1.65 +- Bump up release number. + +* Wed Sep 07 2005 Jeff Johnston - 6.3.0.0-1.62 +- Readd readnever option + +* Wed Jul 27 2005 Jeff Johnston - 6.3.0.0-1.61 +- Bump up release number. + +* Tue Jul 26 2005 Jeff Johnston - 6.3.0.0-1.57 +- Bump up release number. + +* Tue Jul 26 2005 Jeff Johnston - 6.3.0.0-1.54 +- Add testcase to verify printing of inherited members +- Bugzilla 146835 + +* Mon Jul 25 2005 Jeff Johnston - 6.3.0.0-1.53 +- Bump up release number. + +* Mon Jul 25 2005 Jeff Johnston - 6.3.0.0-1.50 +- Fix bug with info frame and cursor address on ia64. +- Add testcase to verify pseudo-registers calculated for ia64 sigtramp. +- Bugzilla 160339 + +* Fri Jul 22 2005 Jeff Johnston - 6.3.0.0-1.49 +- Bump up release number. + +* Fri Jul 22 2005 Jeff Johnston - 6.3.0.0-1.46 +- Fix attaching to 32-bit processes on 64-bit systems. +- Bugzilla 160254 + +* Thu Jul 14 2005 Jeff Johnston - 6.3.0.0-1.45 +- Bump up release number. + +* Thu Jul 14 2005 Jeff Johnston - 6.3.0.0-1.42 +- Add work-around to make ia64 gcore work faster. +- Bugzilla 147436 + +* Thu Jul 14 2005 Jeff Johnston - 6.3.0.0-1.41 +- Bump up release number. + +* Mon Jul 11 2005 Jeff Johnston - 6.3.0.0-1.38 +- Fix backtracing across sigaltstack for ia64 +- Bugzilla 151741 + +* Fri Jul 08 2005 Jeff Johnston - 6.3.0.0-1.37 +- Bump up release number. + +* Fri Jul 08 2005 Jeff Johnston - 6.3.0.0-1.35 +- Build pseudo-registers properly for sigtramp frame. +- Bugzilla 160339 + +* Fri Jul 08 2005 Jeff Johnston - 6.3.0.0-1.34 +- Bump up release number. + +* Thu Jul 07 2005 Jeff Johnston - 6.3.0.0-1.31 +- Modify security errata to include additional bfd robustness updates +- Bugzilla 158680 + +* Fri Jun 10 2005 Jeff Johnston - 6.3.0.0-1.30 +- Bump up release number. + +* Fri Jun 10 2005 Jeff Johnston - 6.3.0.0-1.28 +- Security errata for bfd and .gdbinit file usage +- Bugzilla 158680 + +* Wed May 18 2005 Jeff Johnston - 6.3.0.0-1.24 +- Bump up release number. + +* Wed May 18 2005 Jeff Johnston - 6.3.0.0-1.23 +- Bump up release number. + +* Wed May 18 2005 Jeff Johnston - 6.3.0.0-1.22 +- Specify SA_RESTART for linux-nat.c handlers and use my_waitpid + which handles EINTR. + +* Tue May 03 2005 Jeff Johnston - 6.3.0.0-1.21 +- Bump up release number. + +* Tue May 03 2005 Jeff Johnston - 6.3.0.0-1.20 +- Bump up release number. + +* Tue May 03 2005 Jeff Johnston - 6.3.0.0-1.19 +- Fix for partial die in cache error +- Bugzilla 137904 + +* Wed Apr 27 2005 Jeff Johnston - 6.3.0.0-1.18 +- Bump up release number. + +* Wed Apr 27 2005 Jeff Johnston - 6.3.0.0-1.17 +- Bump up release number. + +* Wed Apr 27 2005 Jeff Johnston - 6.3.0.0-1.16 +- Update ia64 sigtramp support to use libunwind and fix top-level + rse register reads to also use libunwind. +- Bugzilla 151741 + +* Thu Apr 21 2005 Jeff Johnston - 6.3.0.0-1.15 +- Bump up release number. + +* Thu Apr 21 2005 Jeff Johnston - 6.3.0.0-1.14 +- Bump up release number. + +* Thu Apr 21 2005 Jeff Johnston - 6.3.0.0-1.13 +- Do not issue warning message for gcore under ia64 +- Bugzilla 146416 + +* Mon Apr 11 2005 Andrew Cagney - 6.3.0.0-1.12 +- Update gstack patch, handle systems that lack /proc//tasks. + +* Fri Apr 8 2005 Andrew Cagney - 6.3.0.0-1.11 +- Replace patch warning about DW_OP_piece with a patch that implements + the DW_OP_piece read path. + +* Sat Apr 2 2005 Andrew Cagney - 6.3.0.0-1.10 +- Print a warning when the separate debug info's CRC doen't match; + test. + +* Wed Mar 30 2005 Jeff Johnston - 6.3.0.0-1.9 +- Bump up release number. + +* Wed Mar 30 2005 Jeff Johnston - 6.3.0.0-1.7 +- Add proper vsyscall page support for ia64. + +* Thu Mar 24 2005 Jeff Johnston - 6.3.0.0-1.6 +- Bump up release number. + +* Thu Mar 24 2005 Jeff Johnston - 6.3.0.0-1.4 +- Fix printing of inherited members of C++ classes. +- Fix for Bugzilla 146835. + +* Tue Mar 22 2005 Jeff Johnston - 6.3.0.0-1.3 +- Bump up release number. + +* Thu Mar 17 2005 Jeff Johnston - 6.3.0.0-1.1 +- Remove warnings that cause errors when compiled with gcc4 and -Werror. + +* Wed Mar 16 2005 Elliot Lee +- rebuilt + +* Fri Mar 04 2005 Jeff Johnston - 6.3.0.0-0.37 +- Bump up release number. + +* Thu Mar 03 2005 Jeff Johnston - 6.3.0.0-0.35 +- Add follow-fork fix from mainline sources. + +* Thu Mar 03 2005 Jeff Johnston - 6.3.0.0-0.34 +- Bump up release number. + +* Mon Feb 28 2005 Jeff Johnston - 6.3.0.0-0.32 +- Modify debug register handling for x86, x86-64 to be thread-specific. +- Modify threaded watchpoint code for x86, x86-64 to properly insert + and remove watchpoints on all threads. + +* Tue Feb 22 2005 Andrew Cagney - 6.3.0.0-0.31 +- Bump version number. + +* Tue Feb 22 2005 Andrew Cagney - 6.3.0.0-0.30 +- Bump version number. + +* Tue Feb 22 2005 Andrew Cagney - 6.3.0.0-0.29 +- Modify gdb-6.3-dwattype0-20050201.patch to check for a zero address + and not zero unsnd. Fix BE 32- vs 64-bit problem. + +* Mon Feb 21 2005 Andrew Cagney - 6.3.0.0-0.28 +- Back port patch adding symfile-mem.o to all GNU/Linux builds. + Fix BZ 146087. + +* Wed Feb 16 2005 Jeff Johnston - 6.3.0.0-0.27 +- Bump up release number. + +* Wed Feb 16 2005 Jeff Johnston - 6.3.0.0-0.26 +- Fix unload.exp testcase. + +* Mon Feb 14 2005 Jeff Johnston - 6.3.0.0-0.25 +- Bump up release number. + +* Mon Feb 14 2005 Jeff Johnston - 6.3.0.0-0.24 +- Fix gdb to always grab the terminal before a readline call. +- Bugzilla 147880 + +* Fri Feb 11 2005 Jeff Johnston - 6.3.0.0-0.23 +- Bump up release number. + +* Fri Feb 11 2005 Jeff Johnston - 6.3.0.0-0.21 +- Fix gdb to handle stepping over the end of an exiting thread. +- Bugzilla 146848 + +* Thu Feb 10 2005 Jeff Johnston - 6.3.0.0-0.20 +- Bump up release number. + +* Tue Feb 08 2005 Jeff Johnston - 6.3.0.0-0.18 +- Modify previous gcore patch to not use linux_proc_xfer_memory even + for main thread. + +* Mon Feb 07 2005 Jeff Johnston - 6.3.0.0-0.17 +- Modify previous gcore patch to only apply to ia64. + +* Fri Feb 04 2005 Jeff Johnston - 6.3.0.0-0.16 +- Fix gcore to work properly for threaded applications +- Bugzilla 145309, 145092 + +* Fri Feb 04 2005 Jeff Johnston - 6.3.0.0-0.15 +- Tolerate DW_AT_type referencing <0> and instead of generating an + error, treat as unknown type. +- Bugzilla 144852. + +* Thu Feb 3 2005 Andrew Cagney - 6.3.0.0-0.14 +- Separate out test patches. + +* Thu Jan 27 2005 Jeff Johnston - 6.3.0.0-0.13 +- Fix to allow ia64 gdb to backtrace from syscalls in a corefile. +- Bugzilla 145092. + +* Wed Jan 26 2005 Jeff Johnston - 6.3.0.0-0.12 +- Fix to support examining files even when the executable moves +- Bugzilla 142122 + +* Wed Jan 26 2005 Andrew Cagney - 6.3.0.0-0.11 +- gdb-6.3-ppcdotsyms-20050126.patch: Backport BFD changes for reading + synthetic symbols. Rewrite code reading elf minimal symbols so that + it includes synthetics. + +* Fri Jan 21 2005 Jeff Johnston - 6.3.0.0-0.10 +- Fix to prevent resetting unwind kernel table size to invalid value + when debugging a core file +- Bugzilla 145309 + +* Fri Jan 21 2005 Andrew Cagney - 6.3.0.0-0.9 +- When single stepping handle both back-to-back and nested signals. +- Disable .symbol patch, results in BFD errors. + +* Fri Jan 21 2005 Jeff Johnston - 6.3.0.0-0.8 +- Support listing both in-charge and not-in-charge dtors when + just the dtor name is given. +- Add new test case for newly added ctor/dtor functionality. + +* Thu Jan 20 2005 Jeff Johnston - 6.3.0.0-0.7 +- Fix to allow breaking by line in both the in-charge and + not-in-charge ctor/dtor. +- Bugzilla 117826 + +* Thu Jan 20 2005 Andrew Cagney - 6.3.0.0-0.6 +- Rebuild. + +* Thu Jan 20 2005 Andrew Cagney - 6.3.0.0-0.5 +- Use bfd_get_synthetic_symtab to read in any synthetic symbols + such as 64-bit PPC's ".symbol"s. + +* Tue Jan 18 2005 Jeff Johnston - 6.3.0.0-0.4 +- Modify non-threaded watchpoint patch to use new observer. + +* Mon Jan 17 2005 Jeff Johnston - 6.3.0.0-0.3 +- Fix for non-threaded watchpoints. + +* Mon Jan 17 2005 Andrew Cagney - 6.3.0.0-0.2 +- Enable PPC CFI, remove merged ppc patches. + +* Wed Jan 12 2005 Elena Zannoni - 6.3.0.0-0.1 +- commit co-authors Andrew Cagney and + Jeff Johnston . +- Various fixes to complete the import and merge. + +* Wed Dec 01 2004 Andrew Cagney - 6.3.0.0 +- Import GDB 6.3, get building, add all patches. + +* Tue Nov 30 2004 Jeff Johnston - 1.200400607.63 +- When removing breakpoints, continue removing breakpoints even if an + error occurs on the list. + +* Sun Nov 28 2004 Andrew Cagney - 1.200400607.62 +- Bump version for RHEL4 build. + +* Wed Nov 24 2004 Andrew Cagney - 1.200400607.61 +- For PPC-64, fix search for a symbol (wasn't specifying the section). + +* Wed Nov 24 2004 Andrew Cagney - 1.200400607.60 +- For PPC-64, do not set malloc name to ".malloc"; no longer needed. +- For all, only define kfail when not already defined. + +* Wed Nov 24 2004 Andrew Cagney - 1.200400607.59 +- Bump version. + +* Wed Nov 24 2004 Andrew Cagney - 1.200400607.58 +- Add rs6000 reggroups; fixes problem of PS register being trashed + causing mysterious branch breakpoints. + +* Tue Nov 23 2004 Andrew Cagney - 1.200400607.57 +- Backport i386 prolog parser - better backtraces out of semop(). +- Add option --readnever to suppress the reading of symbolic debug + information. +- Add script gstack.sh, installed as gstack. + Bugzilla 136584, 137121 +- Add missing files gdb.pie/attach2.c, gdb.pie/break1.c and + gdb.pie/Makefile.in along with testsuite/configure stuff for pie. + +* Tue Nov 23 2004 Andrew Cagney - 1.200400607.57 +- Backport i386 prolog parser - better backtraces out of semop(). +- Add option --readnever to suppress the reading of symbolic debug + information. +- Add script gstack.sh, installed as gstack. + Bugzilla 136584, 137121 + +* Mon Nov 22 2004 Jeff Johnston - 1.200400607.56 +- Bump up release number. + +* Mon Nov 22 2004 Jeff Johnston - 1.200400607.55 +- Multiple ia64 backtrace fixes. Bugzilla 125157 + +* Thu Nov 11 2004 Elena Zannoni - 1.200400607.54 +- Bump up release number + +* Thu Nov 11 2004 Elena Zannoni - 1.200400607.51 +- Modify configure line to not use absolute paths. This was + creating problems with makeinfo/texinfo. +- Get rid of makeinfo hack. +Bugzilla 135633 + +* Tue Nov 09 2004 Jeff Johnston - 1.200400607.50 +- Bump up release number + +* Tue Nov 09 2004 Jeff Johnston - 1.200400607.49 +- Bump up release number + +* Tue Nov 09 2004 Jeff Johnston - 1.200400607.48 +- Expose $base, $allocate constructors and $delete, $base destructors + for breakpoints. + +* Tue Nov 09 2004 Andrew Cagney - 1.200400607.47 +- Enable PPC CFI. + +* Mon Nov 08 2004 Jeff Johnston - 1.200400607.46 +- Bump up release number + +* Mon Nov 08 2004 Jeff Johnston - 1.200400607.45 +- Bump up release number + +* Fri Nov 05 2004 Jeff Johnston - 1.200400607.44 +- Allow macros to continue past a backtrace error + +* Tue Oct 26 2004 Andrew Cagney - 1.200400607.43 +- Hack around broken PT_FPSCR defined in headers. +- Import latest s390 fixes. +- Disable sigstep.exp - s390 has problems. +- Use PC's symtab when looking for a symbol. +- Work around DW_OP_piece. + +* Fri Oct 22 2004 Andrew Cagney - 1.200400607.42 +- For 64-bit PPC, convert _dl_debug_state descriptor into a code address. +- Fix --ignore option. + +* Sun Oct 10 2004 Andrew Cagney - 1.200400607.40 +- Disable attach-pie.exp test, hangs on amd64 without auxv. +- Move pie tests to pie. + +* Sun Oct 10 2004 Andrew Cagney - 1.200400607.39 +- Fix comment bug in sigstep.exp. + +* Thu Oct 07 2004 Jeff Johnston - 1.200400607.38 +- Do not invalidate cached thread info when resuming threads. +- Bump up release number. + +* Fri Oct 01 2004 Jeff Johnston - 1.200400607.35 +- Fix S/390 watchpoint support to work better under threading. + +* Fri Oct 01 2004 Jeff Johnston - 1.200400607.34 +- Fix thread_db_get_lwp to handle 2nd format ptids. + +* Mon Sep 27 2004 Andrew Cagney - 1.200400607.33 +- Don't unwind past a zero PC (when normal frames). + +* Mon Sep 27 2004 Jeff Johnston - 1.200400607.32 +- Add threaded watchpoint support for x86, x86-64, and ia64. + +* Mon Sep 27 2004 Andrew Cagney - 1.200400607.31 +- Instead of deleting bigcore.exp, use runtest --ignore. + +* Thu Sep 23 2004 Andrew Cagney - 1.200400607.30 +- Merge in mainline testsuite up to 2004-09-23, pick up sig*.exp tests. + Merge in mainline infrun.c, pick up all infrun.c fixes. + Generate bigcore's corefile from the running inferior. + Limit bigcore's corefile to max file-size. + +* Thu Sep 02 2004 Jeff Johnston - 1.200400607.29 +- Fix low-level lin-lwp code to wait specifically for any stepping + LWP (bugzilla 130896) + +* Tue Aug 31 2004 Jeff Johnston - 1.200400607.28 +- Add test case for bugzilla 128618 fix. + +* Mon Aug 30 2004 Jeff Johnston - 1.200400607.27 +- Add support for breakpoints in manually loaded/unloaded shared libs. + (bugzilla 128618) + +* Mon Aug 30 2004 Jeff Johnston - 1.200400607.26 +- Add java inferior call support. + +* Mon Aug 30 2004 Andrew Cagney - 1.200400607.25 +- Convert "main" the function descriptor, into an address. + +* Mon Aug 30 2004 Andrew Cagney - 1.200400607.24 +- Fix single-stepping when a signal is pending, was exiting program. + -- needs kernel fix so that ptrace(PT_STEP,SIG) doesn't do a PT_CONT. + -- sigstep.exp tests pass with this fix applied. + +* Mon Aug 30 2004 Elena Zannoni - 1.200400607.23 +- Delete some part of gdb-6.1post-test-rh.patch, to avoid confusing + gdb when testing itself, and loading separate debug info. + +* Fri Aug 13 2004 Jeff Johnston - 1.200400607.22 +- Check in gdb mainline fix for applications calling clone directly. + +* Tue Aug 10 2004 Jeff Johnston - 1.200400607.21 +- Alter libunwind frame code to allow using libunwind 0.97 and up. + +* Tue Aug 03 2004 Jeff Johnston - 1.200400607.20 +- Fix the ia64 libunwind test to match current output. + +* Fri Jul 30 2004 Elena Zannoni - 1.200400607.19 +- Fix the tests where gdb debugs itself, as to not copy + the executable to xgdb. + +* Mon Jul 26 2004 Elena Zannoni - 1.200400607.18 +- Add Pie patches back in. + +* Fri Jul 16 2004 Andrew Cagney - 1.200400607.17 +- Fix stepping over a no-debug shared-library function. +- Fix patch vsyscall patch name. + +* Thu Jul 8 2004 Jeff Johnston - 1.200400607.16 +- Update thread code with fix from gdb HEAD + +* Wed Jul 7 2004 Andrew Cagney - 1.200400607.15 +- disable vsyscall +- import Bob's crasher fix +- disable bigcore.exp + +* Mon Jul 5 2004 Andrew Cagney - 1.200400607.14 +- Make large corefiles work on systems that require O_LARGEFILE. + +* Tue Jun 29 2004 Elena Zannoni - 1.200400607.13 +- Fix BuildRequires for libunwind on ia64. + +* Mon Jun 28 2004 Andrew Cagney - 1.200400607.12 +- Import wild frame ID patch. Stops GDB incorrectly matching invalid + frame IDs. +- Disable bigcore on ia64 and amd64. + +* Fri Jun 25 2004 Andrew Cagney - 1.200400607.11 +- Fix testsuite to kill attach process (from corrinna/mainline). +- Fix build problems with vsyscall patch. + +* Fri Jun 25 2004 Andrew Cagney - 1.200400607.10 +- Fix annotate test messages. +- Recognize VSYSCALL pages. + +* Thu Jun 24 2004 Jeff Johnston - 1.200400607.9 +- Fix ia64 watchpoint support. + +* Wed Jun 23 2004 Andrew Cagney - 1.200400607.8 +- Do not xfail signals on i387, convert KFAIL to FAIL and not XFAIL. + +* Wed Jun 23 2004 Andrew Cagney - 1.200400607.7 +- Fix to ppc64 unwinder - handle glibcs function within syscall + function hack. +- Update sigbpt.exp, ena-dis-br.exp observer.exp signull.exp, + step-test.exp and sizeof.exp, so that test names are architecture + clean. +- Disable bigcore.exp on PowerPC 64. + +* Tue Jun 22 2004 Andrew Cagney - 1.200400607.6 +- Merge in mainline testsuite changes up to 2004-06-21. +- Re-implement 32 and 64-bit PPC signal trampolines. +- Check i386 and amd64 signal trampolines before dwarf2. +- Allow tramp-frame when there is a symbol. +- Test interaction between single-step, breakpoint and signal. +- ABI: Fix PPC64 function parameters, sizeof long-double, and enum + return values. + +* Mon Jun 21 2004 Elena Zannoni - 1.200400607.5 +- Fix sed line for gz info files. + +* Mon Jun 21 2004 Andrew Cagney - 1.200400607.4 +- Tar/uuencode both the .sum and .log test results. + +* Tue Jun 15 2004 Elena Zannoni - 0.200400607.3 +- Remove installation of mmalloc, and its info files. +- Add hack to deal with differring info files generated by makeinfo. +- Restore release number convention. + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Thu Jun 10 2004 Elena Zannoni - 0.200400607.2 +- Fix Requires and BuildRequires for libunwind dependencies. +- Add patch to silence gcc3.4 warnings. + +* Wed Jun 09 2004 Elena Zannoni - 0.200400607.1 +- New import: revamp everything. Remove all patches for now. +- Update the Requires and BuildRequires sections. +- Removed stupid Ada testcases (there is no ada support in gdb yet). + +* Mon May 10 2004 Elena Zannoni - 0.20040223.20 +- Disable PIE again. +- obsolete gdb64 only if on ppc64. + +* Mon May 03 2004 Jeff Johnston - 0.20040223.19 +- Add -u parameter to build ChangeLog patch. + +* Mon May 03 2004 Jeff Johnston - 0.20040223.18 +- Update thread fix made for .6 release to FSF version. + +* Thu Apr 22 2004 Elena Zannoni - 0.20040223.17 +- Disable PIE again. + +* Thu Apr 22 2004 Jeff Johnston - 0.20040223.16 +- Bump version number. + +* Wed Apr 21 2004 Jeff Johnston - 0.20040223.15 +- fix ia64 info frame command +- also fix ia64 tdep file for which elf header file to include + +* Tue Mar 30 2004 Elena Zannoni - 0.20040223.14 +- re-enable pie. + +* Tue Mar 30 2004 Elena Zannoni - 0.20040223.13 +- Fix testsuite glitches. + +* Wed Mar 24 2004 Elena Zannoni - 0.20040223.12 +- Fix typo. + +* Wed Mar 24 2004 Elena Zannoni - 0.20040223.11 +- Make gdb compile w/o warnings with gcc-3.4. +- Reenable PIE support code. + +* Tue Mar 23 2004 Elena Zannoni - 0.20040223.10 +- Bump version number + +* Tue Mar 23 2004 Elena Zannoni - 0.20040223.9 +- temporarily disable PIE support. +- Add section to obsolete gdb64 package. + +* Sun Mar 21 2004 Elena Zannoni - 0.20040223.8 +- Add support for debugging of PIE executables. + +* Tue Mar 09 2004 Elena Zannoni - 0.20040223.7 +- Bump version number. + +* Mon Mar 08 2004 Jeff Johnston - 0.20040223.6 +- Fix thread support to recognize new threads even when they reuse + tids of expired threads. Also ensure that terminal is held by gdb + while determining if a thread-create event has occurred. + +* Mon Mar 08 2004 Andrew Cagney - 0.20040223.5 +- Sync with 6.1 branch; eliminate all amd64 patches; + add more robust 32x64 PPC64 patches. + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Tue Mar 2 2004 Andrew Cagney - 0.20040223.4 +- 32x64 fixes that work with threads, replaced old + non-thread 32x64 patch, add nat patch. + +* Wed Feb 25 2004 Elena Zannoni - 0.20040223.3 +- Add patch for x86_64 in 32 bit mode. + +* Wed Feb 25 2004 Elena Zannoni - 0.20040223.2 +- Remove ppc64 hacks. +- Refresh some patches. + +* Wed Feb 25 2004 Elena Zannoni - 0.20040223.1 +- Import new gdb snapshot from mainline FSF. +- Update patch list. + +* Tue Feb 17 2004 Jeff Johnston - 1.20031117.8 +- Switch ia64-tdep.c to use new abi used by libunwind-0.95 and up. +- Fix gate area specification for ia64-linux-tdep.c. +- Fix long double support for ia64. + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Jan 08 2004 Elena Zannoni - 0.20031117.7 +- Add fixes for ppc32 support on ppc64 platform, from Andrew Cagney. + +* Tue Jan 06 2004 Elena Zannoni - 0.20031117.6 +- Add patch to have unique binary names in the testsuite. +- Disable s390/s390x pthread.exp test (FIXME) +- Don't install any info files for the ppc platform. Let's take them + from the ppc64 one (or we get install conflicts). +- Remove generated info files from the source tree. They are generated + as part of the FSF snapshot process. + +* Mon Nov 24 2003 Elena Zannoni - 0.20031117.5 +- Add patches from old rpm for i386 support on x86_64. +- Add build dependency on libunwind for ia64. + +* Fri Nov 21 2003 Jeremy Katz - 0.20031117.4 +- more rpm tricks to get the gdb64 package happier + +* Thu Nov 20 2003 Elena Zannoni - 0.20031117.3 +- Add sick and twisted workaround for ppc64 architecture. + +* Wed Nov 19 2003 Elena Zannoni - 0.20031117.2 +- Fix typo in libunwind test. + +* Tue Nov 18 2003 Elena Zannoni - 0.20031117.1 +- Import new gdb snapshot from mainline FSF. +- Fix some testfiles. +- Add fixes for gcore, and patch for libunwind support on ia64. +- Add tests to see what versions of gcc, binutils, glibc and kernel we + are running with. + +* Wed Oct 15 2003 Elena Zannoni - 0.20030710.41 +- Bump up version number. + +* Wed Sep 24 2003 Elena Zannoni - 0.20030710.40 +- Fix problem with gcore and single threaded programs. (bugzilla 103531) + +* Mon Sep 22 2003 Jeff Johnston - 0.20030710.39 +- Fix call to quit_target from quit_force. + +* Sun Sep 21 2003 Andrew Cagney - 0.20030710.38 +- Fix PPC64 push dummy call. +- Re-fix PPC64 return value (had wrong / old patch). + +* Sat Sep 20 2003 Andrew Cagney - 0.20030710.37 +- Fix PPC32 return values. + +* Sat Sep 20 2003 Andrew Cagney - 0.20030710.36 +- Rewrite ppc64 retun value methods so that they (hopefully) +match the SysV spec. +- Enable ppc64 testsuite. + +* Thu Sep 18 2003 Andrew Cagney - 0.20030710.35 +- Hack around problem "break main" vs "break .main" when there is +only a minimal ppc64 symbol table. The former is a function descriptor +and not where you want the breakpoint to go. Only convert descriptors +to pointers when the address is in the ".opd" section. + +* Wed Sep 17 2003 Andrew Cagney - 0.20030710.34 +- Fix ppc32 push_dummy_call. + +* Tue Sep 16 2003 Andrew Cagney - 0.20030710.33 +- Pack gdb.sum and gdb.log using uuencode and bzip. + +* Tue Sep 16 2003 Jeff Johnston - 0.20030710.32 +- Catch errors when quitting so exit of gdb still occurs. + +* Mon Sep 15 2003 Andrew Cagney - 0.20030710.31 +- Fix ppc32 use_struct_convention. + +* Thu Sep 11 2003 Andrew Cagney - 0.20030710.30 +- Mods to dwarf2-frame.c to work around a lack of GCC/CFI info. + +* Thu Sep 11 2003 Elena Zannoni - 0.20030710.29 +- Bump up version number. + +* Wed Sep 10 2003 Elena Zannoni - 0.20030710.28 +- Fix a core dump with MI. +- Add new ChangeLog patch for mi changes. + +* Thu Sep 04 2003 Elena Zannoni - 0.20030710.27 +- Change the name of the package to gdb64 in ppc64 case. + +* Tue Aug 26 2003 Elena Zannoni - 0.20030710.26 +- Add testcase for separate debug info. + +* Tue Aug 26 2003 Andrew Cagney - 0.20030710.25 +- fix i386 on x86-64 TLS +- add "base-aug2003" suffix to older x86i386 patch + +* Tue Aug 26 2003 Andrew Cagney - 0.20030710.24 +- skip the ppc64 and x86-64 frame redzone. + +* Fri Aug 22 2003 Elena Zannoni - 0.20030710.23 +- Relax one testcase in selftest.exp a bit. +- Accept different output as well in thread bt (platform dependent). +- Enable testsuite run for ia64, ppc, s390 and s390x. They are in + reasonably good shape. + +* Thu Aug 21 2003 Jeff Johnston - 0.20030710.22 +- Multiple ia64 fixes. +- Fix ia64 printing of function pointers. +- Fix ia64 prologue examination to ignore predicated insns if we + haven't found the return address yet. +- Skip dump.exp testcase for ia64 + +* Thu Aug 21 2003 Elena Zannoni - 0.20030710.21 +- Bump release number. + +* Wed Aug 20 2003 Elena Zannoni - 0.20030710.20 +- Relax pattern in annota2.exp test. + +* Wed Aug 20 2003 Elena Zannoni - 0.20030710.19 +- rename gdb binary to gdb64 for ppc64 platform. + +* Tue Aug 19 2003 Jeff Johnston - 0.20030710.18 +- Fix ia64 pc unwinding to include psr slot. + +* Mon Aug 18 2003 Elena Zannoni - 0.20030710.17 +- Fix info installation for annotate.texi. (Bugzilla 102521) + +* Fri Aug 15 2003 Elena Zannoni - 0.20030710.16 +- revamp tls tests a bit. +- Handle new output from gdb in relocate.exp + +* Wed Aug 13 2003 Elena Zannoni - 0.20030710.15 +- Fix problem for processing of separate debug info files. + +* Wed Aug 13 2003 Jeff Johnston - 0.20030710.14 +- add ia64.inc file for testing ia64 in gdb.asm testsuite + +* Fri Aug 8 2003 Andrew Cagney - 0.20030710.13 +- print the libthread_db library path, print when threads are enabled + +* Thu Aug 7 2003 Andrew Cagney - 0.20030710.12 +- "cat" the test log into the build log + +* Wed Aug 06 2003 Jeff Johnston - 0.20030710.11 +- modernize ia64 gdb to use new frame model +- remove/replace deprecated interfaces used by ia64 gdb + +* Wed Aug 06 2003 Andrew Cagney - 0.20030710.10 +- Sync to gdb-5.3.90-sync-20030806.patch. + +* Tue Jul 29 2003 Andrew Cagney - 0.20030710.9 +- add x86-64 i386 fixes + +* Tue Jul 29 2003 Elena Zannoni - 0.20030710.8 +- Fix some tests by xfailing the correct target triplet for RedHat. +- Remove include of config.h from pthreads.c testcases. + +* Mon Jul 28 2003 Elena Zannoni - 0.20030710.7 +- Fix some test failures, by escaping correctly. + +* Thu Jul 24 2003 Elena Zannoni - 0.20030710.6 +- Remove one testcase that is redundant. + +* Wed Jul 23 2003 Elena Zannoni - 0.20030710.5 +- Bump up release number. + +* Wed Jul 23 2003 Elena Zannoni - 0.20030710.4 +- Bring in sync with current head of gdb-6 branch. +- Remove linespec patch, because included in the new sync patch. + +* Fri Jul 18 2003 Elena Zannoni - 0.20030710.3 +- Add patch to avoid gdb segfault with bad debug info. +- Change location of build tree to avoid conflicts with older versions + possibly installed. + +* Thu Jul 17 2003 Elena Zannoni - 0.20030710.2 +- Add patch to synchronize the current snapshot with the gdb-6 branch head. +- Remove some patches that are includd in such diff. +- Enable tests on AMD64 as well. + +* Fri Jul 11 2003 Elena Zannoni - 0.20030710.1 +- Import new gdb snapshot. +- Revamp gdb.spec. Get rid of patches that apply to older versions. +- Add patches for ppc64 support, kfail and make gdb more robust in copingi + with bad debug info. + +* Wed Jul 02 2003 Jeff Johnston - 1.20021129.39 +- Fix bug with ia64 checking of hardware breakpoints. + +* Mon Jun 30 2003 Elena Zannoni - 1.20021129.38 +- Add necessary function for NPTL support on x86-64. + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Jun 04 2003 Elena Zannoni - 0.20021129.37 +* Tue Jun 03 2003 Elena Zannoni - 0.20021129.36 +- Enable warnings for x86_64, not x86-64. +- Fix warnings from infptrace.c and dwarfread.c. +- Print error message only when reading separate debug info really + doesn't work (jimb@redhat.com). + +* Fri May 23 2003 Elena Zannoni - 0.20021129.35 +- Fixes for fetching and storing access registers on s390x (jimb@redhat.com). + Bugzilla 91455. + +* Wed May 21 2003 Jeff Johnston - 0.20021129.34 +- Do not generate error on detach failure. Bugzilla 90900. + +* Thu May 8 2003 Elena Zannoni - 0.20021129.33 +- New tests for asm on s390x (jimb@redhat.com). Bugzilla 90503. +- Fixes for prologue analysis on s390x (jimb@redhat.com). Bugzilla 90506. +- bfd fix for 64-bit platforms (jimb@redhat.com). +- Disable ppc64 builds until we have a port. + +* Thu May 1 2003 Jeff Johnston - 0.20021129.32 +- Add ia64 support to the float.exp testcase. + +* Thu May 1 2003 Elena Zannoni - 0.20021129.31 +- Clean up the tls tests some more. +- Fix problem with non US-eng locale. Bugzilla bug 88823. + +* Wed Apr 30 2003 Jeff Johnston - 0.20021129.30 +- Fix ia64 prologue skipping. +- Fix ia64 line table. +- Fix setting of prev_pc in infrun.c. + +* Mon Mar 31 2003 Elena Zannoni - 0.20021129.29 +- Include the gcore script, as gdb_gcore.sh and install it in + /usr/bin as gcore. +- One more disassembly fix for core files. Added to + gdb-5.3post-disasm-mar2003.patch. Bugzilla 87677. +- Enable build warnings for x86-64. + +* Mon Mar 31 2003 Elena Zannoni - 0.20021129.28 +- Fix Java strings printing. +- Fix memory corruption in disassembly code. Bugzilla 85644. +- Testsuite fixes (jimb@redhat.com). Bugzilla 85457. +- Fixes for s390 stack handling (jimb@redhat.com). Bugzilla 85039. +- Fixes for s390 struct return (jimb@redhat.com). + +* Wed Mar 26 2003 Elena Zannoni - 0.20021129.27 +- Fixes for disassembly of code in threaded applications. Bugzilla 87495. +- Fixes for s390 prologue analysis. (jimb@redhat.com). + Bugzilla bugs 85251, 85214. + +* Thu Mar 20 2003 Elena Zannoni - 0.20021129.26 +- Fix inferior function calls with void return on x86-64. Bugzilla bug 83197. +- Fix for upstream PR/699. +- Fix some problems with gdb-5.3post-thrtst-feb2003.patch. + +* Wed Mar 19 2003 Jeff Johnston - 0.20021129.25 +- Fix for thread-db.c: check_event() - Bugzilla bug 86231. + +* Fri Mar 14 2003 Elena Zannoni - 0.20021129.24 +- Fix some problems with inferior function calls on x86-64. + +* Fri Mar 07 2003 Elena Zannoni - 0.20021129.23 +- testsuite patches. Bugzilla 85215 85028 85335. + +* Thu Mar 06 2003 Elena Zannoni - 0.20021129.22 +- Fix testsuite problems related to having '+' in the directory name. + Bugzilla 85031. + +* Mon Mar 03 2003 Elena Zannoni - 0.20021129.21 +- Fix a few inferior function call problems. + +* Mon Mar 03 2003 Elena Zannoni - 0.20021129.20 +- Split the changelog patches in two. Cleanup messy patch section. + +* Thu Feb 27 2003 Jeff Johnston - 0.20021129.19 +- Perform run-time check for tkill syscall in lin-lwp.c. + +* Mon Feb 24 2003 Elena Zannoni - 0.20021129.18 +- Update copyright year printed in version. + +* Mon Feb 24 2003 Elena Zannoni - 0.20021129.17 +- Refresh build. + +* Mon Feb 24 2003 Elena Zannoni - 0.20021129.16 +- Add some testsuite cleanups, to avoid spurious test failures. + +* Fri Feb 21 2003 Jeff Johnston - 0.20021129.15 +- Add patch to handle thread exiting when LD_ASSUME_KERNEL=2.4.1 which + fixes Bugzilla bug 84217. + +* Fri Feb 21 2003 Elena Zannoni - 0.20021129.14 +- New patch to fix disassembly on s390. Bugzilla bug 84286. +- New patch for attach/ptrace fix. Bugzilla bug 84220. +- Reenable tests for x86. + +* Thu Feb 20 2003 Jeff Johnston - 0.20021129.13 +- Add patch for mixed stabs with dwarf2 - bugzilla bug 84253. + +* Wed Feb 12 2003 Elena Zannoni - 0.20021129.12 +- Disable tests also for x86. + +* Tue Feb 11 2003 Elena Zannoni - 0.20021129.11 +- Add patch for mi threads tests. +- Add patch for dwarf2 debug_ranges section. +- Add patch for detach bug. + +* Mon Feb 10 2003 Elena Zannoni - 0.20021129.10 +- Add patch for testsuite auto answering internal error queries. +- Add new TLS tests. +- Add cleanup patches for thread tests. + +* Mon Feb 03 2003 Elena Zannoni - 0.20021129.9 +- Add new patch for thread support. Apply on all arches. +- Do not apply old patches, but leave them around for now. +- Add new patch for dwarf2 debug info reading. +- Add new patch for dwarf2 cfi engine cleanup. +- Add new patch for uiout problems. +- Add new patch for s390 build. +- Disable tests on all platforms but x86. + +* Mon Jan 27 2003 Elena Zannoni - 0.20021129.8 +- Move all the changelog entries to a single patch. +- Add tests to the args patch. +- Add new patch for until command fix (bugzilla Bug 19890). +- s390 and s390x can be built with -Werror. +- Run make check for s390 and s390x too. +- Include an updated version of the thread nptl patch (still WIP). + +* Wed Jan 15 2003 Phil Knirsch - 0.20021129.7 +- Apply the 2nd misc patch for s390 and s390x, too. + +* Tue Jan 14 2003 Elena Zannoni - 0.20021129.6 +- Add patches for NPTL support, to be applied on i386 only. + (this is still WIP) +- Split old misc patch in two parts. +- Temporarily disable testsuite run on alpha. + +* Sun Jan 12 2003 Elena Zannoni - 0.20021129.5 +- Add patch for --args with zero-length arguments. Fix for bug 79833. + +* Tue Dec 17 2002 Elliot Lee - 0.20021129.4 +- The define directive to rpm is significant even if the line it is + in happens to start with a '#' character. Fixed. + +* Fri Dec 13 2002 Elena Zannoni - 0.20021129.3 +- Merge previous patches for warnings into a single one. +- Add changelogs to patches. +- Add, but don't use, a macro to avoid stripping. + +* Fri Dec 6 2002 Elena Zannoni +- Add patch to allow debugging of executables with debug info stored + in separate files. +- Add patch for Makefile dependencies and disable warnings for + building thread-db.c. +- Re-enable building with -Werror for alpha, ia64, ppc. + +* Mon Dec 2 2002 Elena Zannoni +- Don't pass to gdb an empty build warnings flag, or that will disable warnings + completely. We want to build using gdb's standard warnings instead. + +* Mon Dec 2 2002 Elena Zannoni +- Don't do testing for x86_64. + +* Sun Dec 1 2002 Elena Zannoni +- x86_64 doesn't build with Werror yet. +- Add patch for alpha. +- Alpha doesn't build with -Werror either. +- Add patch for ia64. +- Add patch for ppc. +- Drop ia64 from -Werror list. +- Drop ppc from -Werror list. + +* Sun Dec 1 2002 Elena Zannoni +- Add dejagnu to the build requirements. +- Enable make check. +- Add enable-gdb-build-warnings to the configure flags. + +* Fri Nov 29 2002 Elena Zannoni +- Import new upstream sources. +- Change version and release strings. +- Upgrade patches. +- Build gdb/gdbserver as well. +- Define and use 'cvsdate'. +- Do %%setup specifying the source directory name. +- Don't cd up one dir before removing tcl and friends. +- Change the configure command to allow for the new source tree name. +- Ditto for the copy of NEWS. +- Add some comments. + +* Mon Nov 25 2002 Elena Zannoni 5.2.1-5 +General revamp. +- Add patch for gdb/doc/Makefile.in. Part of fix for bug 77615. +- Add patch for mmalloc/Makefile.in. Part of fix for bug 77615. +- Change string printed in version.in to -rh. +- Move the deletion of dejagnu, expect, tcl to the prep section, + from the build section. +- Add build directory housekeeping to build section. +- Use macros for configure parameters. +- Do the build in a separate directory. +- Prepare for testing, but not enable it yet. +- Correctly copy the NEWS file to the top level directory, for the doc + section to find it. +- Cd to build directory before doing install. +- Use makeinstall macro, w/o options. +- Remove workaround for broken gdb info files. Part of fix for bug 77615. +- Remove share/locale directory, it is in binutils. +- Remove info/dir file. +- Clarify meaning of post-install section. +- Add gdbint info files to post-install, pre-uninstall and files sections. + Part of fix for bugs 77615, 76423. +- Add libmmalloc.a to package. + +* Fri Aug 23 2002 Florian La Roche +- added mainframe patch from developerworks + +* Wed Aug 21 2002 Trond Eivind Glomsrod 5.2.1-3 +- Add changelogs to the previous patch + +* Wed Aug 14 2002 Trond Eivind Glomsrod 5.2.1-2 +- Add some patches from Elena Zannoni + +* Tue Jul 23 2002 Trond Eivind Glomsrod 5.2.1-1 +- 5.2.1 + +* Mon Jul 22 2002 Florian La Roche +- compile on mainframe + +* Mon Jul 8 2002 Trond Eivind Glomsrod 5.2-3 +- Rebuild + +* Tue May 7 2002 Trond Eivind Glomsrod 5.2-2 +- Rebuild + +* Mon Apr 29 2002 Trond Eivind Glomsrod 5.2-1 +- 5.2 + +* Mon Apr 29 2002 Trond Eivind Glomsrod 5.1.92-1 +- 5.1.92. Hopefully identical to 5.2 final + +* Mon Apr 22 2002 Trond Eivind Glomsrod 5.1.91-1 +- 5.1.91. 5.2 expected in a week + +* Thu Mar 28 2002 Trond Eivind Glomsrod 5.1.90CVS-5 +- Update to current + +* Thu Mar 28 2002 Trond Eivind Glomsrod 5.1.90CVS-4 +- Update to current + +* Thu Mar 28 2002 Trond Eivind Glomsrod 5.1.90CVS-3 +- Update to current + +* Wed Mar 20 2002 Trond Eivind Glomsrod 5.1.90CVS-2 +- Update to current + +* Wed Mar 13 2002 Trond Eivind Glomsrod 5.1.90CVS-1 +- Update to current 5.2 branch + +* Thu Jan 24 2002 Trond Eivind Glomsrod 5.1.1-1 +- 5.1.1 +- add URL + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Mon Dec 10 2001 Trond Eivind Glomsrod 5.1-2 +- Fix some thread+fpu problems + +* Mon Nov 26 2001 Trond Eivind Glomsrod 5.1-1 +- 5.1 + +* Mon Nov 19 2001 Trond Eivind Glomsrod 5.0.94-0.71 +- 5.0.94. Almost there.... + +* Mon Nov 12 2001 Trond Eivind Glomsrod 5.0.93-2 +- Add patch from jakub@redhat.com to improve handling of DWARF + +* Mon Nov 12 2001 Trond Eivind Glomsrod 5.0.93-1 +- 5.0.93 +- handle missing info pages in post/pre scripts + +* Wed Oct 31 2001 Trond Eivind Glomsrod 5.0.92-1 +- 5.0.92 + +* Fri Oct 26 2001 Trond Eivind Glomsrod 5.0.91rh-1 +- New snapshot +- Use the 5.0.91 versioning from the snapshot + +* Wed Oct 17 2001 Trond Eivind Glomsrod 5.0rh-17 +- New snapshot + +* Thu Sep 27 2001 Trond Eivind Glomsrod +- New snapshot + +* Wed Sep 12 2001 Trond Eivind Glomsrod 5.0rh-16 +- New snapshot + +* Mon Aug 13 2001 Trond Eivind Glomsrod 5.0rh-15 +- Don't buildrequire compat-glibc (#51690) + +* Thu Aug 9 2001 Trond Eivind Glomsrod +- New snapshot, from the stable branch eventually leading to gdb 5.1 + +* Mon Jul 30 2001 Trond Eivind Glomsrod +- s/Copyright/License/ +- Add texinfo to BuildRequires + +* Mon Jun 25 2001 Trond Eivind Glomsrod +- New snapshot + +* Fri Jun 15 2001 Trond Eivind Glomsrod +- New snapshot +- Add ncurses-devel to buildprereq +- Remove perl from buildprereq, as gdb changed the way + version strings are generated + +* Thu Jun 14 2001 Trond Eivind Glomsrod +- New snapshot + +* Wed May 16 2001 Trond Eivind Glomsrod +- New snapshot - this had thread fixes for curing #39070 +- New way of specifying version + +* Tue May 1 2001 Trond Eivind Glomsrod +- New tarball +- Kevin's patch is now part of gdb + +* Mon Apr 9 2001 Trond Eivind Glomsrod +- Add patch from kevinb@redhat.com to fix floating point + thread + problem (#24310) +- remove old workarounds +- new snapshot + +* Thu Apr 5 2001 Trond Eivind Glomsrod +- New snapshot + +* Sat Mar 17 2001 Bill Nottingham +- on ia64, there are no old headers :) + +* Fri Mar 16 2001 Trond Eivind Glomsrod +- build with old headers, new compiler + +* Fri Mar 16 2001 Trond Eivind Glomsrod +- new snapshot + +* Mon Feb 26 2001 Trond Eivind Glomsrod +- new snapshot which should fix some more IA64 problems (#29151) +- remove IA64 patch, it's now integrated + +* Wed Feb 21 2001 Trond Eivind Glomsrod +- add IA64 and Alpha patches from Kevin Buettner +- use perl instead of patch for fixing the version string + +* Tue Feb 20 2001 Trond Eivind Glomsrod +- don't use kgcc anymore +- mark it as our own version +- new snapshot + +* Mon Jan 22 2001 Bernhard Rosenkraenzer +- Link with ncurses 5.x even though we're using kgcc. + No need to drag in requirements on ncurses4 (Bug #24445) + +* Fri Jan 19 2001 Trond Eivind Glomsrod +- new snapshot + +* Wed Dec 20 2000 Trond Eivind Glomsrod +- new snapshot + +* Mon Dec 04 2000 Trond Eivind Glomsrod +- new snapshot +- new alpha patch - it now compiles everywhere. Finally. + +* Fri Dec 01 2000 Trond Eivind Glomsrod +- new snapshot + +* Mon Nov 20 2000 Trond Eivind Glomsrod +- new CVS snapshot +- disable the patches +- don't use %%configure, as it confuses the autoconf script +- enable SPARC, disable Alpha + + +* Wed Aug 09 2000 Trond Eivind Glomsrod +- added patch from GDB team for C++ symbol handling + +* Tue Jul 25 2000 Trond Eivind Glomsrod +- upgrade to CVS snapshot +- excludearch SPARC, build on IA61 + +* Wed Jul 19 2000 Trond Eivind Glomsrod +- rebuild + +* Thu Jul 13 2000 Prospector +- automatic rebuild + +* Sun Jul 02 2000 Trond Eivind Glomsrod +- rebuild + +* Thu Jun 08 2000 Trond Eivind Glomsrod +- use %%configure, %%makeinstall, %%{_infodir}, %%{_mandir}, + and %%{_tmppath} +- the install scripts for info are broken(they don't care about + you specify in the installstep), work around that. +- don't build for IA64 + +* Mon May 22 2000 Trond Eivind Glomsrod +- upgraded to 5.0 - dump all patches. Reapply later if needed. +- added the NEWS file to the %%doc files +- don't delete files which doesn't get installed (readline, texinfo) +- let build system handle stripping and gzipping +- don't delete libmmalloc +- apply patch from jakub@redhat.com to make it build on SPARC + +* Fri Apr 28 2000 Matt Wilson +- rebuilt against new ncurses + +* Tue Mar 7 2000 Jeff Johnson +- rebuild for sparc baud rates > 38400. + +* Tue Feb 8 2000 Jakub Jelinek +- fix core file handling on i386 with glibc 2.1.3 headers + +* Fri Jan 14 2000 Jakub Jelinek +- fix reading registers from core on sparc. +- hack around build problems on i386 with glibc 2.1.3 headers + +* Thu Oct 7 1999 Jim Kingdon +- List files to install in /usr/info specifically (so we don't pick up +things like info.info from GDB snapshots). + +* Thu Oct 7 1999 Jim Kingdon +- Update GDB to 19991004 snapshot. This eliminates the need for the +sigtramp, sparc, xref, and threads patches. Update sparcmin patch. + +* Mon Aug 23 1999 Jim Kingdon +- Omit readline manpage. + +* Sat Aug 7 1999 Jim Kingdon +- Remove H.J. Lu's patches (they had been commented out). +- Add sigtramp patch (from gdb.cygnus.com) and threads patch (adapted +from code fusion CD-ROM). + +* Wed Apr 14 1999 Jeff Johnson +- merge H.J. Lu's patches into 4.18. + +* Mon Apr 05 1999 Cristian Gafton +- updated the kern22 patch with stuff from davem + +* Thu Apr 1 1999 Jeff Johnson +- sparc with 2.2 kernels no longer uses sunos ptrace (davem) + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 3) + +* Mon Mar 8 1999 Jeff Johnson +- Sparc fiddles for Red Hat 6.0. diff --git a/gdbinit b/gdbinit new file mode 100644 index 0000000..b59fb0d --- /dev/null +++ b/gdbinit @@ -0,0 +1,9 @@ +# System-wide GDB initialization file. +python +import glob +# glob.iglob is not available in python-2.4 (RHEL-5). +for f in glob.glob('%{_sysconfdir}/gdbinit.d/*.gdb'): + gdb.execute('source %s' % f) +for f in glob.glob('%{_sysconfdir}/gdbinit.d/*.py'): + gdb.execute('source %s' % f) +end diff --git a/gdbtui b/gdbtui new file mode 100755 index 0000000..88f9d55 --- /dev/null +++ b/gdbtui @@ -0,0 +1,2 @@ +#! /bin/sh +exec gdb -tui "$@" diff --git a/generate-git-repo-from-patches.sh b/generate-git-repo-from-patches.sh new file mode 100755 index 0000000..8477e30 --- /dev/null +++ b/generate-git-repo-from-patches.sh @@ -0,0 +1,81 @@ +#!/bin/sh + +# Generic function to print an error message and bail out. +die () +{ + echo $1 > /dev/stderr + exit 1 +} + +# Print usage +usage () +{ + cat < + + is the directory where the rebase was performed. You +need to clone the repository first. + +Options are: + + -h: Print this message + -u: Uncommit all patches and initialize stgit repo +EOF + exit 0 +} + +test -f gdb.spec || die "This script needs to run from the same directory as gdb.spec." + +test -z $1 && die "You need to specify the repository." +test "$1" = "-h" && usage + +uncommit=0 +if [ "$1" = "-u" ]; then + command -v stg > /dev/null 2>&1 \ + || die "Cannot find stg. Is stgit installed?" + uncommit=1 + shift +fi + +git_repo=$1 +if [ ! -e $git_repo ]; then + echo "$0: repository \"$git_repo\" does not exist" + exit 1 +fi + +test -f _git_upstream_commit || die "Cannot find _git_upstream_commit file." +test -f _patch_order || die "Cannot find _patch_order file." + +last_ancestor_commit=`cat _git_upstream_commit` + +cd $1 + +git name-rev $last_ancestor_commit +test $? -eq 0 || die "Could not find $last_ancestor_commit in the repository $1. Did you run 'git fetch'?" + +f=`cd .. && pwd` + +# Create a branch for the checkout if using stgit; use the distro name in +# the name of this branch. +if (($uncommit)); then + name=devel-`basename $f` + branch="-b $name" +else + branch="" +fi +git checkout $branch $last_ancestor_commit + +echo "Applying patches..." +for p in `cat ../_patch_order` ; do + git am ../$p + test $? -eq 0 || die "Could not apply patch '$p'." +done + +if (($uncommit)); then + echo "Uncommitting patches..." + stg init + stg uncommit -t $last_ancestor_commit -x +fi diff --git a/generate-patches-from-git-repo.sh b/generate-patches-from-git-repo.sh new file mode 100755 index 0000000..c9bc3a9 --- /dev/null +++ b/generate-patches-from-git-repo.sh @@ -0,0 +1,101 @@ +#!/bin/sh + +# Generic function to print an error message and bail out. +die () +{ + echo $1 > /dev/stderr + exit 1 +} + +# Print usage +usage () +{ + cat < [] + + is the directory where the rebase was performed. + + is the commit or tag or branch against which +the rebase was performed. It generally just needs to be provided if +the file "_git_upstream_commit" doesn't exist, or if you are doing a +rebase. This script will then use 'git merge-base' to find the most +recent common ancestor between HEAD and COMMIT_OR_TAG_OR_BRANCH. + +Options are: + + -h: Print this message +EOF + exit 0 +} + +test -f gdb.spec || die "This script needs to run from the same directory as gdb.spec." + +test -z $1 && die "You need to specify the repository." +test "$1" = "-h" && usage + +commit_or_tag="`cat _git_upstream_commit`" +if test ! -z "$2" ; then + commit_or_tag="$2" +fi + +test -z $commit_or_tag && die "Because the '_git_upstream_commit' file doesn't exist, you need to specify a commit/tag/branch." + +test -d $1 || die "$1 is not a directory." + +# Remove all the current patches +for f in `cat _patch_order` ; do + git rm -f $f +done + +cd $1 + +# If patches were uncommitted when the patches were applied, +# make sure that we're sitting at the top-most patch. Otherwise +# we'll only add patches up to the current top patch. +# It's safe to just assume stgit was used -- the push will simply +# fail. +stg push --all > /dev/null 2>&1 + +git name-rev $commit_or_tag +test $? -eq 0 || die "Could not find $commit_or_tag in the repository. Did you run 'git fetch'?" + +idx=1 +common_ancestor=`git merge-base HEAD $commit_or_tag` + +test -z "$common_ancestor" && die "Could not find common ancestor between HEAD and $commit_or_tag." + +temp_PATCH_file=/tmp/_gdb.spec.Patch.include +temp_patch_file=/tmp/_gdb.spec.patch.include +temp_patch_order_file=/tmp/_patch_order + +rm -f $temp_PATCH_file $temp_patch_file $temp_patch_order_file + +for c in `git rev-list --reverse ${common_ancestor}..HEAD` ; do + fname=`git log -1 --pretty='format:%s' $c` + test -z $fname && die "Could not determine filename for commit $c." + # Because git-format-patch generates patches with the first line + # containing the commit hash, every time we do a git-format-patch + # here we will have a different .patch file from what we had + # before, even if nothing has changed. This is bad, so we replace + # the commit hash by something constant (the string + # "FEDORA_PATCHES"). + git format-patch --no-signature --no-stat --keep-subject -1 --stdout $c | sed -e '1 s/^From [0-9a-f]\+ \(.*\)/From FEDORA_PATCHES \1/' -e '/^index [0-9a-f]\+\.\.[0-9a-f]\+.*$/d' > ../$fname + (cd .. && git add $fname) + + cat >> $temp_PATCH_file <> $temp_PATCH_file + printf "%%patch%03d -p1\n" $idx >> $temp_patch_file + echo $fname >> $temp_patch_order_file + idx=`expr $idx + 1` +done + +cd .. +mv $temp_PATCH_file _gdb.spec.Patch.include +mv $temp_patch_file _gdb.spec.patch.include +mv $temp_patch_order_file _patch_order +echo "$common_ancestor" > _git_upstream_commit diff --git a/sources b/sources new file mode 100644 index 0000000..d277cda --- /dev/null +++ b/sources @@ -0,0 +1,3 @@ +SHA512 (gdb-12.1.tar.xz) = 425568d2e84672177d0fb87b1ad7daafdde097648d605e30cf0656970f66adc6a82ca2d83375ea4be583e9683a340e5bfdf5819668ddf66728200141ae50ff2d +SHA512 (gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz) = a8b1c54dd348cfeb37da73f968742896be3dd13a4215f8d8519870c2abea915f5176c3fa6989ddd10f20020a16f0fab20cbae68ee8d58a82234d8778023520f8 +SHA512 (v2.0.5.tar.gz) = 2e7ac2aede84671b15597d9c56dbe077a81357bbf44b6684802592246fb7729b4a5743238ddf02f6ea143b4d29872f581408135f9c1ea1ccc99dab905916d98d diff --git a/tests/README b/tests/README new file mode 100644 index 0000000..0a1388a --- /dev/null +++ b/tests/README @@ -0,0 +1,31 @@ +Justification + +Adds tests according to the CI wiki specifically the standard test +interface in the spec. + +The playbook includes Tier1 level test cases that have been tested in +the following contexts and is passing reliably: Classic and +Container. Test logs are stored in the artifacts directory. + +The following steps are used to execute the tests using the standard +test interface: Test environment + +Make sure you have installed packages from the spec + + # rpm -q ansible python2-dnf libselinux-python standard-test-roles + ansible-2.3.2.0-1.fc26.noarch + python2-dnf-2.6.3-11.fc26.noarch + libselinux-python-2.6-7.fc26.x86_64 + standard-test-roles-2.4-1.fc26.noarch + +Run tests for Classic (must be run as root) + + # export ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory) + # ansible-playbook --tags=classic tests.yml + +Run tests for Container (must be run as root) + + # export ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory) + # export TEST_SUBJECTS=docker:docker.io/library/fedora:26 + # ansible-playbook --tags=container tests.yml + diff --git a/tests/inventory b/tests/inventory new file mode 100755 index 0000000..b118a5a --- /dev/null +++ b/tests/inventory @@ -0,0 +1,3 @@ +#!/bin/bash +export TEST_DOCKER_EXTRA_ARGS="--privileged" +exec merge-standard-inventory "$@" diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..98c4bd0 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,27 @@ +--- +# This first play always runs on the local staging system +- hosts: localhost + roles: + - role: standard-test-beakerlib + tags: + - classic + - container + repositories: + - repo: "git://pkgs.devel.redhat.com/tests/gdb" + dest: "gdb" + tests: + - gdb/Sanity/debug-toolset-binary + - gdb/Sanity/debug-system-binary + required_packages: + - gdb + - coreutils + - binutils + - binutils-debuginfo + - glibc + - glibc-debuginfo + - gcc + - gcc-debuginfo + - zlib + - zlib-debuginfo + - coreutils-debuginfo + - which