Hello community,

here is the log from the commit of package crash.11778 for 
openSUSE:Leap:15.1:Update checked in at 2020-01-19 00:11:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.1:Update/crash.11778 (Old)
 and      /work/SRC/openSUSE:Leap:15.1:Update/.crash.11778.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "crash.11778"

Sun Jan 19 00:11:37 2020 rev:1 rq:764116 version:unknown

Changes:
--------
New Changes file:

--- /dev/null   2019-12-19 10:12:34.003146842 +0100
+++ /work/SRC/openSUSE:Leap:15.1:Update/.crash.11778.new.26092/crash.changes    
2020-01-19 00:11:39.634592946 +0100
@@ -0,0 +1,3841 @@
+-------------------------------------------------------------------
+Thu Nov  7 20:24:06 UTC 2019 - David Mair <dm...@suse.com>
+
+-  Apply initial changes to support kernel address space layout
+   randomization (KASLR) for s390X:
+     crash-s390-kaslr-minimal-patchset.patch
+
+   Apply fix to allow automated detection of s390x kernels that have
+   been configured with CONFIG_RANDOMIZE_BASE=y (KASLR).  Without it
+   the "--kaslr=<offset>" command line option is required:
+     crash-s390-autodetect-kaslr.patch
+
+   The two patches implement jsc#SLE-9797
+
+-------------------------------------------------------------------
+Thu Mar 21 20:43:53 CET 2019 - dm...@suse.de
+
+- Update for XEN dom0 changes in v4.11 that cause coredumps made
+  of a domU using virch on the dom0 to fail to load in the dom0
+  version of crash reporting "crash: invalid kernel virtual address:
+  <address> type:fill_pcpu_struct", followed by "WARNING: cannot 
+  fill pcpu_struct" and "crash: cannot read cpu_info"
+  (bsc#1124690 and bsc#1122594)
+  Added:
+    crash-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch
+
+-------------------------------------------------------------------
+Fri Jan 11 15:07:52 UTC 2019 - sparscha...@suse.de
+
+- Update the recognition of x86_64 CPU_ENTRY_AREA (bsc#1104743, bsc#1090127)
+  Added:
+     crash-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch
+
+-------------------------------------------------------------------
+Tue Dec 18 16:36:40 UTC 2018 - Michal Suchanek <msucha...@suse.de>
+
+- Fix SLE15 SP1 Incorrect vmcore generated (bsc#1119791).
+   Added:
+     crash-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch
+     crash-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch
+  This is a change for SLE15 SP1 only and needs to be updated before merging to
+  other codestreams.
+
+-------------------------------------------------------------------
+Mon Oct  8 05:12:45 UTC 2018 - Jeffrey Cheung <jche...@suse.com>
+
+- Enabled kmp-rt for SLERT15 SP1
+
+-------------------------------------------------------------------
+Wed Aug  8 11:02:28 UTC 2018 - msucha...@suse.com
+
+- Added:
+    crash-Fix-and-an-update-for-the-ipcs-command.patch
+
+  The update is required for Linux 4.11 and greater kernels, which
+  reimplemented the IDR facility to use radix trees in kernel commit
+  0a835c4f090af2c76fc2932c539c3b32fd21fbbb, titled "Reimplement IDR and IDA
+  using the radix tree".  Without the patch, if any IPCS entry exists, the
+  command would fail with the message "ipcs: invalid structure member offset:
+  idr_top" (bsc#1092101)
+
+- fix license warning
+
+-------------------------------------------------------------------
+Mon Mar 19 20:42:50 UTC 2018 - dm...@suse.com
+
+- Upgraded to 7.2.1 because it includes the fixes to support
+  several core cases that recently were caused tofail to open.
+  As a result, removed patches that were already superceded by
+  7.2.1 source (bsc#1103371).
+
+  Removed:
+        crash-ppc64-book3s-update-hash-page-table-geometry.patch
+        crash-x86_64_kvtop-usable-symtab_init.patch
+        
crash-ppc64-ensure-chosen-stack-symbol-relates-to-an-actual-backtrace.patch
+        crash-fix-error-cannot-resolve-schedulers-0001.patch
+        crash-fix-error-cannot-resolve-schedulers-0002.patch
+        crash-extend-direct-mapping-to-5TB.patch
+
+  Modified:
+       crash-allow-use-of-sadump-captured-KASLR-kernel.patch 
+
+-------------------------------------------------------------------
+Mon Feb  5 18:56:04 UTC 2018 - dm...@suse.com
+
+- Added:
+    crash-fix-error-cannot-resolve-schedulers-0001.patch
+    crash-fix-error-cannot-resolve-schedulers-0002.patch
+    crash-extend-direct-mapping-to-5TB.patch
+
+  Fixes Xen dump files that cannot be opened in hypervisor mode.
+  bsc#1073993
+
+-------------------------------------------------------------------
+Fri Jan 12 18:14:39 UTC 2018 - dm...@suse.com
+
+- Added 
crash-ppc64-ensure-chosen-stack-symbol-relates-to-an-actual-backtrace.patch
+
+  With latest NMI IPI changes, crash_ipi_callback is found multiple
+  times on the stack. Ensure the chosen symbol relates to an actual
+  backtrace. bsc#1072718
+
+-------------------------------------------------------------------
+Thu Dec  7 11:05:03 UTC 2017 - dims...@opensuse.org
+
+- Escape the usage of %{VERSION} when calling out to rpm.
+  RPM 4.14 has %{VERSION} defined as 'the main packages version'.
+
+-------------------------------------------------------------------
+Wed Nov 29 17:45:11 UTC 2017 - dm...@suse.com
+
+- Added crash-x86_64_kvtop-usable-symtab_init.patch to change 
+  x86_64_kvtop() so that it can be called during symtab_init()
+
+  Added crash-allow-use-of-sadump-captured-KASLR-kernel.patch to
+  allow use of dumps of KASLR enabled kernels that were captured
+  by sadump.
+
+  Both are bsc#1070278/FATE#323473
+
+-------------------------------------------------------------------
+Tue Nov 14 22:32:42 UTC 2017 - dm...@suse.com
+
+- Upgrade the source tarball to version to 7.2.0 which requires the
+  removal of patches that are then already applied:
+
+  crash-gdb-add-proc_service-sync-with-GLIBC.patch
+  crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch
+
+  A complete changelog is available via the crash source page at:
+
+  http://people.redhat.com/anderson/crash.changelog.html
+
+  Added crash-ppc64-book3s-update-hash-page-table-geometry.patch
+  from hbath...@linux.vnet.ibm.com via bsc#1067702 to correct
+  errors with virtual-to-physical address translation in the larger
+  virtual address range of newer kernels.
+
+  Added a BuildRequires of libelf that will populate the build
+  workspace with libelf (from elfutils) even though it is not
+  directly required by crash but is required by gdb (which crash
+  nests). It no longer got picked up automatically for build and
+  gdb and kernel module features had build errors before it.
+
+-------------------------------------------------------------------
+Fri Jun  9 14:43:20 UTC 2017 - dm...@suse.com
+
+- crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch:
+  Since linux kernel 3.19 crash readmem() can't be used to read
+  xen_p2m_addr associate memory directly during m2p translation.
+  PV domU p2m mapping is also stored at xd->xfd + xch_index_offset
+  and organized as struct xen_dumpcore_p2m. This patch implements
+  a special reading function read_xc_p2m() to extract the mfns
+  from xd->xfd + xch_index_offset and makes and crash support Xen
+  PV domU dumpfiles for kernel 3.19 and later (bsc#1043501).
+   - add crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch
+
+-------------------------------------------------------------------
+Fri Jun  2 12:03:45 UTC 2017 - msucha...@suse.com
+
+- Merge SLE changes into Factory (bsc#1041638)
+
+-------------------------------------------------------------------
+Thu May 25 18:56:51 CEST 2017 - dm...@suse.com
+
+- crash-stop_read_error_when_intent_is_retry.patch: When reading a
+  memory image fails it may not be an error if it is still possible
+  to switch image and retry the read. Fix the error message output
+  to only occur if no retries are intended (bsc#1038839).
+   - add crash-stop_read_error_when_intent_is_retry.patch
+
+-------------------------------------------------------------------
+Mon Apr 24 15:50:26 UTC 2017 - astie...@suse.com
+
+- Exclude openSUSE from RT KMP build (bsc#1013843)
+
+-------------------------------------------------------------------
+Tue Mar 28 19:50:52 UTC 2017 - dm...@suse.com
+
+- crash source nests gdb source but gdb has a new build error on
+  Factory due to the bug and build environment modifications. The
+  fix is upstream gdb but not upstream crash's gdb.
+
+  Created crash patch:
+
+  crash-gdb-add-proc_service-sync-with-GLIBC.patch
+
+  to create the gdb patch in expanded crash and added to the gdb
+  Makefile patch it's application. Resolves the build error.
+
+-------------------------------------------------------------------
+Tue Mar  7 16:14:26 CET 2017 - dm...@suse.de
+
+- Upgrade of source tarball to 7.1.8 from upstream and refresh of
+  patches to align with the version. For a detailed changelog of
+  the source tarball see:
+
++++ 3644 more lines (skipped)
++++ between /dev/null
++++ and 
/work/SRC/openSUSE:Leap:15.1:Update/.crash.11778.new.26092/crash.changes

New:
----
  Module.supported
  README.SUSE
  crash-7.2.1.tar.gz
  crash-Fix-and-an-update-for-the-ipcs-command.patch
  crash-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch
  crash-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch
  crash-allow-use-of-sadump-captured-KASLR-kernel.patch
  crash-compressed-booted-kernel.patch
  crash-debuginfo-compressed.patch
  crash-gdb-7.6.series
  crash-kmp-preamble
  crash-make-emacs-default.diff
  crash-missing-declarations.patch
  crash-patch-gdb.patch
  crash-rpmlintrc
  crash-s390-autodetect-kaslr.patch
  crash-s390-kaslr-minimal-patchset.patch
  crash-sial-ps-2.6.29.diff
  crash-sles9-quirk.patch
  crash-sles9-time.patch
  crash-stop_read_error_when_intent_is_retry.patch
  crash-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch
  crash-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch
  crash.changes
  crash.spec
  crash_enable_lzo_support.patch
  crash_enable_snappy_support.patch
  crash_whitepaper-2003.tar.bz2
  depmod.sh
  eppic-support-arm64.patch
  eppic-switch-to-system-lib.patch
  gcore-2011-09-22.tar.bz2
  get-kernel-flavors.sh
  mkinitrd.sh
  sial-scripts-2008-02-08.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ crash.spec ++++++
#
# spec file for package crash
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# needssslcertforbuild


%define whitepaper_version 2003
%define scripts_version  2008-02-08
%define gcore_version  2011-09-22

%if 0%{!?have_snappy:1}
%if 0%{?suse_version} >= 1310
%define have_snappy 1
%else
%define have_snappy 0
%endif
%endif

Name:           crash
%ifarch ppc
%define build_sial 0
%define build_eppic 0
%else
%define build_sial 0
%define build_eppic 1
%endif
%ifarch %ix86 x86_64
%define build_gcore 1
%else
%define build_gcore 0
%endif
%ifnarch %ix86 s390
%define build_kmp 1
%if ! 0%{?is_opensuse}
%ifarch x86_64
%if 0%{?sle_version} >= 150100
%define buildrt 1
%endif
%endif
%endif
%endif
Url:            http://people.redhat.com/anderson/
Summary:        Crash utility for live systems; netdump, diskdump, LKCD or 
mcore dumpfiles
License:        GPL-3.0-or-later AND GFDL-1.2-only
Group:          Development/Tools/Debuggers
Version:        7.2.1
Release:        0
Source:         %{name}-%{version}.tar.gz
Source2:        crash_whitepaper-%{whitepaper_version}.tar.bz2
Source3:        README.SUSE
Source4:        sial-scripts-%{scripts_version}.tar.bz2
Source5:        gcore-%{gcore_version}.tar.bz2
Source6:        Module.supported
Source95:       get-kernel-flavors.sh
Source96:       depmod.sh
Source97:       mkinitrd.sh
Source98:       %{name}-kmp-preamble
Source99:       crash-rpmlintrc
Source100:      %{name}-gdb-7.6.series
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Patch1:         %{name}-make-emacs-default.diff
Patch2:         %{name}-sles9-quirk.patch
Patch4:         %{name}-sles9-time.patch
Patch8:         %{name}-missing-declarations.patch
Patch9:         %{name}-debuginfo-compressed.patch
Patch10:        %{name}_enable_lzo_support.patch
Patch11:        %{name}-compressed-booted-kernel.patch
Patch12:        eppic-switch-to-system-lib.patch
Patch13:        %{name}-patch-gdb.patch
Patch15:        %{name}_enable_snappy_support.patch
Patch16:        eppic-support-arm64.patch
Patch18:        %{name}-stop_read_error_when_intent_is_retry.patch
Patch21:        %{name}-allow-use-of-sadump-captured-KASLR-kernel.patch
Patch22:        %{name}-Fix-and-an-update-for-the-ipcs-command.patch
Patch23:        
%{name}-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch
Patch24:        
%{name}-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch
Patch25:        %{name}-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch
Patch26:        %{name}-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch
Patch27:        %{name}-s390-kaslr-minimal-patchset.patch
Patch28:        %{name}-s390-autodetect-kaslr.patch
Patch90:        %{name}-sial-ps-2.6.29.diff
BuildRequires:  bison
BuildRequires:  flex
BuildRequires:  libeppic-devel
BuildRequires:  lzo-devel
BuildRequires:  ncurses-devel
%if %{have_snappy}
BuildRequires:  snappy-devel
%endif
BuildRequires:  libelf-devel
BuildRequires:  zlib-devel
Requires:       /usr/bin/nm
ExclusiveArch:  %ix86 x86_64 ia64 s390 s390x ppc64 ppc64le alpha aarch64
# Source code says it can do ppc32. Excluded here?
ExcludeArch:    ppc
# crash driver KMP
%if 0%{?build_kmp}
BuildRequires:  kernel-syms
BuildRequires:  module-init-tools
%if 0%{?buildrt}
    %if ! 0%{?build_crash_on_obs}
BuildRequires:  kernel-syms-rt
%endif
%endif
%if 0%{?suse_version} >= 1130
BuildRequires:  kernel-devel
%endif
%endif

%if 0%{?build_kmp}
%if 0%{?suse_version} >= 920
%suse_kernel_module_package -n crash -p %_sourcedir/%{name}-kmp-preamble um
%define arch %_target_cpu
%define kmp_pkg KMP
%else
%define kver %(rpm -q --qf '%%{VERSION}-%%{RELEASE}' kernel-source)
%define kver_ %(rpm -q --qf '%%{VERSION}_%%{RELEASE}' kernel-source)
%define arch %(echo %_target_cpu | sed -e 's/i.86/i386/')
%define flavors_to_build %(sh %_sourcedir/get-kernel-flavors.sh %arch)
%define kmp_pkg kmp
%endif
%endif

%description
The core analysis suite is a self-contained tool that can be used to
investigate either live systems, kernel core dumps created from the
netdump and diskdump packages from Red Hat Linux, the mcore kernel
patch offered by Mission Critical Linux, or the LKCD kernel patch.



Authors:
--------
    David Anderson <ander...@redhat.com>

%package doc
Requires:       %{name} = %{version}
Summary:        Documentation for Crash
License:        GFDL-1.2-only
Group:          Development/Tools/Debuggers

%description doc
This subpackage contains the crash whitepaper from Dave Anderson.



Authors:
--------
    David Anderson <ander...@redhat.com>

%package devel
Requires:       %{name} = %{version}
Summary:        Development files for crash
License:        GPL-2.0-or-later
Group:          Development/Tools/Debuggers

%description devel
This files are required to build extensions for crash.

Crash is the core analysis suite that can be used to investigate either
live systems, kernel core dumps created from the netdump and diskdump
packages from Red Hat Linux, the mcore kernel patch offered by Mission
Critical Linux, or the LKCD kernel patch.



Authors:
--------
    David Anderson <ander...@redhat.com>

%if %build_eppic
%package eppic
Requires:       %{name} = %{version}
%if %build_sial
# Nothing to do
%else
Provides:       %{name}-sial = %{version}
Obsoletes:      %{name}-sial < %{version}
%endif
Summary:        Embeddable Pre-Processor and Interpreter for C extension for 
crash
License:        GPL-2.0-or-later
Group:          Development/Tools/Debuggers

%description eppic
EPPIC is a C interpreter that permits easy access to the symbol and type
information stored in a executable image like a coredump or live memory
interfaces (e.g. /dev/kmem, /dev/mem). Although it has a strong association
with live or postmortem kernel analysis, it is not constraint to it and can be
embedded in any tools that is C friendly.


Authors:
--------
    Luc Chouinard <lucchou...@gmail.com>

%endif

%if %build_sial

%package sial
Requires:       %{name} = %{version}
Summary:        SIAL extension for crash
License:        GPL-2.0-or-later
Group:          Development/Tools/Debuggers

%description sial
This module is a prerequisite for the loading of SIAL scripts.

Upon loading the sial.so object file with extend, any SIAL scripts
located in the /usr/share/sial/crash or $HOME/.sial directories will be
loaded automatically.



Authors:
--------
    David Anderson <ander...@redhat.com>

%endif

%if %build_gcore

%package gcore
Requires:       %{name} = %{version}
Summary:        Gcore extension for crash
License:        GPL-2.0-or-later
Group:          Development/Tools/Debuggers

%description gcore
Create a core dump file of a user-space task that was running in a
kernel dumpfile. 



Authors:
--------
    Daisuke Hatayama  <d.hatay...@jp.fujitsu.com>

%endif

%if 0%{?build_kmp}

%package %kmp_pkg
Summary:        Memory driver for the crash utility
License:        GPL-2.0-only
Group:          System/Kernel
%if 0%{?suse_version} < 920
Version:        %{version}_%{kver_}
Release:        0

Requires:       kernel = %kver
%endif

%description %kmp_pkg
To run the crash utility on a live system, a memory device must be present.
Due to many limitations of the /dev/mem interface, a separate kernel module
is provided to access all RAM through the /dev/crash device.

Authors:
--------
    David Anderson <ander...@redhat.com>

%endif

%prep
%setup -q -a 2 -a 4
%patch1 -p1
%patch2 -p1
%patch4 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch13 -p1
%patch18 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%if %{have_snappy}
%patch15 -p1
%endif
## GDB patches
#for f in %{S:XXX} ; do
#    base=`basename "$f"`
#    cp "$f" "${base#%{name}-}"
#done

## SIAL patches
cd sial-scripts-%{scripts_version}
%patch90 -p1
cd -
## gcore extension
cd extensions
tar xfvj %{S:5}
cd -
%patch12 -p1
%patch16 -p1
cp %{S:3} .
mkdir kbuild
%if ! 0%{?is_opensuse}
cp %{S:6} memory_driver
%endif

%build
export CFLAGS="$RPM_OPT_FLAGS -fno-builtin-memset -fno-strict-aliasing"
export GDB="gdb-%{gdb_version}"
make RPMPKG="`cat .rh_rpm_package`" %{?jobs:-j%jobs}
make extensions %{?jobs:-j%jobs}
%if 0%{?build_kmp}
export EXTRA_CFLAGS='-DVERSION=\"%version\"'
for flavor in %flavors_to_build; do
    rm -rf kbuild/$flavor
    cp -r memory_driver kbuild/$flavor
    make -C /usr/src/linux-obj/%arch/$flavor modules \
      M=$PWD/kbuild/$flavor
done
%endif

%install
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_libdir}
make DESTDIR=%{buildroot} install
mkdir -p %{buildroot}%{_mandir}/man8
install -m 0644 crash.8 %{buildroot}%{_mandir}/man8/crash.8
# devel files
mkdir -p $RPM_BUILD_ROOT/%{_includedir}/crash
install -m 0644 defs.h $RPM_BUILD_ROOT/%{_includedir}/crash
# permissions
chmod 644 COPYING3
# extensions
mkdir -p $RPM_BUILD_ROOT/%{_libdir}/crash/extensions
%if %build_gcore
install -m 0644 extensions/gcore.so $RPM_BUILD_ROOT/%{_libdir}/crash/extensions
%endif
%if %build_eppic
install -m 0644 extensions/eppic.so $RPM_BUILD_ROOT/%{_libdir}/crash/extensions
%endif
%if %build_sial
install -m 0644 extensions/sial.so $RPM_BUILD_ROOT/%{_libdir}/crash/extensions
%endif
%if %build_eppic
# scripts
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/sial/crash
install -m 0644 sial-scripts-%{scripts_version}/*.c \
                $RPM_BUILD_ROOT/%{_datadir}/sial/crash
%endif
%if 0%{?build_kmp}
# memory driver module
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT
export INSTALL_MOD_DIR=updates
for flavor in %flavors_to_build; do
     make -C /usr/src/linux-obj/%arch/$flavor modules_install \
       M=$PWD/kbuild/$flavor
done

# Ugly SLES9-style KMP
%if 0%{?suse_version} < 920
set -- $(ls $RPM_BUILD_ROOT/lib/modules)
KERNELRELEASES=$*

set -- $(find $RPM_BUILD_ROOT/lib/modules -type f -name '*.ko' \
         | sed -e 's:.*/::' -e 's:\.ko$::' | sort -u)
MODULES=$*

(   cat <<-EOF
        # IMPORTANT: Do not change the KERNELRELEASES definition; it will be
        # replaced during driver reuse!
        KERNELRELEASES="$KERNELRELEASES"
        MODULES="$MODULES"
        EOF
    cat %_sourcedir/depmod.sh
    cat %_sourcedir/mkinitrd.sh
) > post_postun.sh

%post kmp -f post_postun.sh

%postun kmp -f post_postun.sh

%endif

%endif

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root)
%{_bindir}/crash
%{_mandir}/man8/crash.8*
%license COPYING3
%doc README README.SUSE
%dir %{_libdir}/crash
%dir %{_libdir}/crash/extensions

%files devel
%defattr(-,root,root)
%{_includedir}/*

%files doc
%defattr(-,root,root)
%doc crash_whitepaper/*

%if %build_eppic
%files eppic
%defattr(-,root,root)
%{_libdir}/crash/extensions/eppic.so
%{_datadir}/sial/crash
%dir %{_datadir}/sial
%endif

%if %build_sial
%files sial
%defattr(-,root,root)
%doc extensions/libsial/README
%{_libdir}/crash/extensions/sial.so
%{_datadir}/sial/crash
%dir %{_datadir}/sial
%endif

%if %build_gcore

%files gcore
%defattr(-,root,root)
%{_libdir}/crash/extensions/gcore.so
%doc extensions/README.gcore
%endif

%if 0%{?build_kmp}
%if 0%{?suse_version} < 920

%files %kmp_pkg
%defattr(-,root,root)
/lib/modules/*
%endif
%endif

%changelog
++++++ Module.supported ++++++
crash.ko
++++++ README.SUSE ++++++
Changes in the SUSE package
===========================

 - Emacs is the default editing mode, can still be overwritten to vi mode via
   command line or configuration file
 - added the Crash Whitepaper from
   http://people.redhat.com/anderson/.crash_whitepaper/
 - fix for LKCD header (SLES9 has another header format than SLES10) in IA64


SIAL
====

To use the SIAL extension, install crash-sial and load it with "extend sial.so"
in crash. If you want to have the sial extension automatically loaded at
startup, add this command to your ~/.crashrc configuration file.

Place custom scripts in /usr/share/sial/crash (system wide) or ~/.sial (per
user).
++++++ crash-Fix-and-an-update-for-the-ipcs-command.patch ++++++
>From 759dc0c50dc6cc3199e56be57cb57d41812b0397 Mon Sep 17 00:00:00 2001
From: Dave Anderson <ander...@redhat.com>
Date: Mon, 30 Apr 2018 10:38:26 -0400
Subject: [PATCH] Fix, and an update, for the "ipcs" command.  The fix
 addresses an error where IPCS entries are not displayed because of a faulty
 read of the "deleted" member of the embedded "kern_ipc_perm" data structure. 
 The "deleted" member was being read as a 4-byte integer, but since it is
 declared as a "bool" type, only the lowest byte gets set to 1 or 0.  Since
 the structure is not zeroed-out when allocated, stale data may be left in the
 upper 3 bytes, and the IPCS entry gets rejected.  The update is required for
 Linux 4.11 and greater kernels, which reimplemented the IDR facility to use
 radix trees in kernel commit 0a835c4f090af2c76fc2932c539c3b32fd21fbbb, titled
 "Reimplement IDR and IDA using the radix tree".  Without the patch, if any
 IPCS entry exists, the command would fail with the message "ipcs: invalid
 structure member offset: idr_top" (ander...@redhat.com)

References: bsc#1092101
Patch-mainline: 7.2.2
Git-commit: 759dc0c50dc6cc3199e56be57cb57d41812b0397

---
 ipcs.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 49 insertions(+), 14 deletions(-)

diff --git a/ipcs.c b/ipcs.c
index 4fa9ab428fdb..ef51fddd33b8 100644
--- a/ipcs.c
+++ b/ipcs.c
@@ -71,6 +71,8 @@ struct ipcs_table {
        ulong shm_f_op_huge_addr;
        int use_shm_f_op;
        int seq_multiplier;
+       int rt_cnt;
+       struct radix_tree_pair *rtp;
 };
 
 /*
@@ -92,6 +94,7 @@ static void get_sem_info(struct sem_info *, ulong, int);
 static void get_msg_info(struct msg_info *, ulong, int);
 static void add_rss_swap(ulong, int, ulong *, ulong *);
 static int is_file_hugepages(ulong);
+static void gather_radix_tree_entries(ulong);
 
 /*
  * global data
@@ -574,7 +577,7 @@ ipc_search_array(ulong ipc_ids_p, int specified, ulong 
specified_value, int (*fn
 static int
 ipc_search_idr(ulong ipc_ids_p, int specified, ulong specified_value, int 
(*fn)(ulong, int, ulong, int, int), int verbose)
 {
-       int in_use;
+       int i, in_use;
        ulong ipcs_idr_p;
        ulong ipc;
        int next_id, total;
@@ -591,16 +594,32 @@ ipc_search_idr(ulong ipc_ids_p, int specified, ulong 
specified_value, int (*fn)(
                return 0;
        }
 
-       for (total = 0, next_id = 0; total < in_use; next_id++) {
-               ipc = idr_find(ipcs_idr_p, next_id);
-               if (ipc == 0)
-                       continue;
-               
-               total++;
-               if (fn(ipc, specified, specified_value, next_id, verbose)) {
-                       found = 1;
-                       if (specified != SPECIFIED_NOTHING)
-                               break;
+       if (VALID_MEMBER(idr_idr_rt)) {
+               gather_radix_tree_entries(ipcs_idr_p);
+
+               for (i = 0; i < ipcs_table.rt_cnt; i++) {
+                       ipc = (ulong)ipcs_table.rtp[i].value;
+                       if (fn(ipc, specified, specified_value, UNUSED, 
verbose)) {
+                               found = 1;
+                               if (specified != SPECIFIED_NOTHING)
+                                       break;
+                       }
+               }
+
+               if (ipcs_table.rtp)
+                       FREEBUF(ipcs_table.rtp);
+       } else {
+               for (total = 0, next_id = 0; total < in_use; next_id++) {
+                       ipc = idr_find(ipcs_idr_p, next_id);
+                       if (ipc == 0)
+                               continue;
+                       
+                       total++;
+                       if (fn(ipc, specified, specified_value, next_id, 
verbose)) {
+                               found = 1;
+                               if (specified != SPECIFIED_NOTHING)
+                                       break;
+                       }
                }
        }
        
@@ -885,7 +904,7 @@ get_shm_info(struct shm_info *shm_info, ulong shp, int id)
        add_rss_swap(inodep, is_file_hugepages(filep), &shm_info->rss,
                  &shm_info->swap);
 
-       shm_info->deleted = UINT(buf + OFFSET(shmid_kernel_shm_perm) +
+       shm_info->deleted = UCHAR(buf + OFFSET(shmid_kernel_shm_perm) +
                                OFFSET(kern_ipc_perm_deleted));
 }
 
@@ -930,7 +949,7 @@ get_sem_info(struct sem_info *sem_info, ulong shp, int id)
 
        sem_info->nsems = ULONG(buf + OFFSET(sem_array_sem_nsems));
 
-       sem_info->deleted = UINT(buf + OFFSET(sem_array_sem_perm) +
+       sem_info->deleted = UCHAR(buf + OFFSET(sem_array_sem_perm) +
                                OFFSET(kern_ipc_perm_deleted));
 }
 
@@ -976,7 +995,7 @@ get_msg_info(struct msg_info *msg_info, ulong shp, int id)
 
        msg_info->messages = ULONG(buf + OFFSET(msg_queue_q_qnum));
        
-       msg_info->deleted = UINT(buf + OFFSET(msg_queue_q_perm) +
+       msg_info->deleted = UCHAR(buf + OFFSET(msg_queue_q_perm) +
                                OFFSET(kern_ipc_perm_deleted));
 }
 
@@ -1083,3 +1102,19 @@ again:
        return 0;
 }
 
+static void
+gather_radix_tree_entries(ulong ipcs_idr_p)
+{
+       long len;
+
+       ipcs_table.rt_cnt = do_radix_tree(ipcs_idr_p, RADIX_TREE_COUNT, NULL);
+
+       if (ipcs_table.rt_cnt) {
+               len = sizeof(struct radix_tree_pair) * (ipcs_table.rt_cnt+1);
+               ipcs_table.rtp = (struct radix_tree_pair *)GETBUF(len);
+               ipcs_table.rtp[0].index = ipcs_table.rt_cnt;
+               ipcs_table.rt_cnt = do_radix_tree(ipcs_idr_p, 
RADIX_TREE_GATHER, ipcs_table.rtp);
+       } else
+               ipcs_table.rtp = NULL;
+}
+
-- 
2.13.7

++++++ 
crash-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch ++++++
>From 28fa7bd09013455b5ddc020dea4706278cda0d65 Mon Sep 17 00:00:00 2001
From: Dave Anderson <ander...@redhat.com>
Date: Tue, 19 Jun 2018 16:31:54 -0400
Subject: [PATCH] Fix for PPC64 kernel virtual address translation in Linux
 4.17 and later kernels with commit c2b4d8b7417a59b7f9a52d0d8402f5257cbbd398,
 titled "powerpc/mm/hash64: Increase the VA range", in which the maximum
 virtual address value has been increased to 4PB.  Without the patch, the
 translation/access of high vmalloc space addresses fails; for example, the
 "kmem -[sS]" option fails the translation of per-cpu kmem_cache_cpu addresses
 located in vmalloc space, with the error messages "kmem: invalid kernel
 virtual address: <address> type: kmem_cache_cpu.freelist" and "kmem: invalid
 kernel virtual address: <address>  type: kmem_cache_cpu.page", and the "vtop"
 command shows the addresses as "(not mapped)". (hbath...@linux.ibm.com)

[note: apply on 4.12+ for SLE 15 SP1 - incompatible with SLE 15 SP0]

---
 defs.h  | 1 +
 ppc64.c | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/defs.h b/defs.h
index 6e6f6be50fa4..e6e3850c819d 100644
--- a/defs.h
+++ b/defs.h
@@ -3977,6 +3977,7 @@ struct efi_memory_desc_t {
 #define PMD_INDEX_SIZE_L4_64K_4_12 10
 #define PUD_INDEX_SIZE_L4_64K_4_12 7
 #define PGD_INDEX_SIZE_L4_64K_4_12 8
+#define PUD_INDEX_SIZE_L4_64K_4_17 10
 #define PTE_INDEX_SIZE_RADIX_64K  5
 #define PMD_INDEX_SIZE_RADIX_64K  9
 #define PUD_INDEX_SIZE_RADIX_64K  9
diff --git a/ppc64.c b/ppc64.c
index 0dd8a2af5818..f5d0dacaca2b 100644
--- a/ppc64.c
+++ b/ppc64.c
@@ -451,7 +451,10 @@ ppc64_init(int when)
 
                                        if (THIS_KERNEL_VERSION >= 
LINUX(4,12,0)) {
                                                m->l2_index_size = 
PMD_INDEX_SIZE_L4_64K_4_12;
-                                               m->l3_index_size = 
PUD_INDEX_SIZE_L4_64K_4_12;
+                                               if (THIS_KERNEL_VERSION >= 
LINUX(4,12,0)) /* SLE15 SP1 */
+                                                       m->l3_index_size = 
PUD_INDEX_SIZE_L4_64K_4_17;
+                                               else
+                                                       m->l3_index_size = 
PUD_INDEX_SIZE_L4_64K_4_12;
                                                m->l4_index_size = 
PGD_INDEX_SIZE_L4_64K_4_12;
                                        } else {
                                                m->l2_index_size = 
PMD_INDEX_SIZE_L4_64K_4_6;
-- 
2.19.2

++++++ crash-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch 
++++++
>From 599a6579aa916df7800f8e889d68e4287e4520dd Mon Sep 17 00:00:00 2001
From: Dave Anderson <ander...@redhat.com>
Date: Thu, 27 Sep 2018 14:14:31 -0400
Subject: [PATCH] With Linux 4.19-rc1 commit
 7d4340bb92a9df78e6e28152f3dd89d9bd82146b, titled "powerpc/mm: Increase
 MAX_PHYSMEM_BITS to 128TB with SPARSEMEM_VMEMMAP config", the PPC64
 MAX_PHYSMEM_BITS value has been bumped up to 47.  The appropriate update has
 been made in this patch. (hbath...@linux.ibm.com)

[note: apply on 4.12+ for SLE 15 SP1 - incompatible with SLE 15 SP0]

---
 defs.h  | 1 +
 ppc64.c | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/defs.h b/defs.h
index 80c61ef94f3d..5b64bb7bb629 100644
--- a/defs.h
+++ b/defs.h
@@ -4073,6 +4073,7 @@ struct efi_memory_desc_t {
 #define _SECTION_SIZE_BITS     24
 #define _MAX_PHYSMEM_BITS      44
 #define _MAX_PHYSMEM_BITS_3_7   46
+#define _MAX_PHYSMEM_BITS_4_19  47
 
 #endif /* PPC64 */
 
diff --git a/ppc64.c b/ppc64.c
index 8badcde3ca76..ee2f76f198fb 100644
--- a/ppc64.c
+++ b/ppc64.c
@@ -554,7 +554,10 @@ ppc64_init(int when)
                        ppc64_vmemmap_init();
 
                machdep->section_size_bits = _SECTION_SIZE_BITS;
-               if (THIS_KERNEL_VERSION >= LINUX(3,7,0))
+               if ((machdep->flags & VMEMMAP) &&
+                   (THIS_KERNEL_VERSION >= LINUX(4,12,0))) /* SLE15 SP1 */
+                       machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_19;
+               else if (THIS_KERNEL_VERSION >= LINUX(3,7,0))
                        machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_3_7;
                else
                        machdep->max_physmem_bits = _MAX_PHYSMEM_BITS;
-- 
2.19.2

++++++ crash-allow-use-of-sadump-captured-KASLR-kernel.patch ++++++
This patch fix a problem that crash cannot open a dumpfile which is
captured by sadump in KASLR enabled kernel.

When KASLR feature is enabled, a kernel is placed on the memory randomly
and therefore crash cannot open a dumpfile captured by sadump because
addresses of kernel symbols in System.map or vmlinux are different from
actual addresses.

To solve this problem, we need to calculate kaslr offset(the difference
between original symbol address and actual address) and phys_base, and
adjust symbol table of crash. In the case of dumpfile of kdump, these
information is included in the header, but dumpfile of sadump does not
have such a information.

This patch calculate kaslr offset and phys_base to solve this problem.
Please see the comment in the calc_kaslr_offset() for the detail idea.
The basic idea is getting register (IDTR and CR3) from dump header, and
calculate kaslr_offset/phys_base using them.

Signed-off-by: Takao Indoh <indou.ta...@jp.fujitsu.com>
---
 symbols.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/symbols.c
+++ b/symbols.c
@@ -1133,6 +1133,9 @@ symname_hash_install(struct syment *spn)
                        }
                }
        }
+
+       if (SADUMP_DUMPFILE())
+               kt->flags2 |= KASLR_CHECK;
 }
 
 /*
++++++ crash-compressed-booted-kernel.patch ++++++
From: Petr Tesarik <ptesa...@suse.cz>
Subject: Automatically detect compressed booted kernel
References: bnc#777516, bnc#828260
Patch-mainline: not yet

Signed-off-by: Petr Tesarik <ptesa...@suse.cz>

---
 filesys.c |   26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

--- a/filesys.c
+++ b/filesys.c
@@ -571,6 +571,7 @@ static int
 find_booted_kernel(void)
 {
        char kernel[BUFSIZE];
+       char *real_kernel;
        char buffer[BUFSIZE];
        char **searchdirs;
        int i, preferred, wrapped;
@@ -620,16 +621,24 @@ find_booted_kernel(void)
                        sprintf(kernel, "%s%s", searchdirs[i], dp->d_name);
 
                        if (mount_point(kernel) ||
-                           !file_readable(kernel) || 
-                            !is_elf_file(kernel))
+                           !file_readable(kernel))
                                continue;
 
+                       if (!is_compressed_kernel(kernel, &real_kernel))
+                               real_kernel = kernel;
+
                        if (CRASHDEBUG(1)) 
                                fprintf(fp, "find_booted_kernel: check: %s\n", 
                                        kernel);
 
-                       found = match_file_string(kernel, kt->proc_version, 
buffer);
-       
+                       if (!is_elf_file(real_kernel)) {
+                               if (real_kernel != kernel)
+                                       free(real_kernel);
+                               continue;
+                       }
+
+                       found = match_file_string(real_kernel, 
kt->proc_version, buffer);
+
                        if (found)
                                break;
                }
@@ -649,10 +658,19 @@ find_booted_kernel(void)
                        if (CRASHDEBUG(1))
                                fprintf(fp, "find_booted_kernel: found: %s\n", 
                                        pc->namelist);
+                       if (real_kernel != kernel) {
+                               pc->namelist_orig = pc->namelist;
+                               pc->namelist = real_kernel;
+                       }
                         return TRUE;
                 }
        }
 
+       if (real_kernel != kernel) {
+               remove(real_kernel);
+               free(real_kernel);
+       }
+
        error(INFO, 
              "cannot find booted kernel -- please enter namelist 
argument\n\n");
        return FALSE;
++++++ crash-debuginfo-compressed.patch ++++++
From: Petr Tesarik <ptesa...@suse.cz>
Subject: Search debuginfo files in the original directory
References: bnc#723639

If debuginfo is in a separate file and the kernel image is compressed,
then it should be found in the same directory as the original (compressed)
image, not in the directory with the uncompressed image (TMPDIR).

Signed-off-by: Petr Tesarik <ptesa...@suse.cz>

---
 symbols.c |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

--- a/symbols.c
+++ b/symbols.c
@@ -204,9 +204,9 @@ symtab_init(void)
         *  Pull a bait-and-switch on st->bfd if we've got a separate
          *  .gnu_debuglink file that matches the CRC. Not done for kerntypes.
         */
-       if (!(LKCD_KERNTYPES()) &&
-           !(bfd_get_file_flags(st->bfd) & HAS_SYMS)) {
-               if (!check_gnu_debuglink(st->bfd))
+       if (!(LKCD_KERNTYPES())) {
+               if (!check_gnu_debuglink(st->bfd) &&
+                   !(bfd_get_file_flags(st->bfd) & HAS_SYMS))
                        no_debugging_data(FATAL);
        }
        
@@ -268,13 +268,16 @@ check_gnu_debuglink(bfd *bfd)
        char *contents;
        int crc_offset; 
        unsigned long crc32;
+       char *namelist;
        char *dirname;
        char *namelist_debug;
         char **matching;
 
+       namelist = pc->namelist_orig ? pc->namelist_orig : pc->namelist;
+
         sect = bfd_get_section_by_name(bfd, ".gnu_debuglink");
        if (!sect) {
-               error(INFO, "%s: no .gnu_debuglink section\n", pc->namelist);
+               error(INFO, "%s: no .gnu_debuglink section\n", namelist);
                return FALSE;
        }
 
@@ -295,14 +298,14 @@ check_gnu_debuglink(bfd *bfd)
                        contents, crc32);
 
        if ((pc->debuginfo_file = (char *)
-           malloc(((strlen(pc->namelist) + strlen("/.debug/") +
+           malloc(((strlen(namelist) + strlen("/.debug/") +
            + strlen(".debug") + strlen(" /usr/lib/debug/boot/ "))*10)
            + strlen(pc->namelist_debug ? pc->namelist_debug : " "))) == NULL)
                error(FATAL, "debuginfo file name malloc: %s\n", 
                        strerror(errno));
 
-       dirname = GETBUF(strlen(pc->namelist)+1);
-       strcpy(dirname, pc->namelist);
+       dirname = GETBUF(strlen(namelist)+1);
+       strcpy(dirname, namelist);
 
        for (i = strlen(dirname)-1; i >= 0; i--)
        {
++++++ crash-kmp-preamble ++++++
Requires: kernel-%1
++++++ crash-make-emacs-default.diff ++++++
---
 main.c |    8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

--- a/main.c
+++ b/main.c
@@ -1158,12 +1158,6 @@ setup_environment(int argc, char **argv)
        pc->flags |= READLINE;
        pc->editing_mode = "no_mode";
 
-       if ((p1 = getenv("EDITOR"))) {
-               if (strstr(p1, "vi"))
-                       pc->editing_mode = "vi";
-               if (strstr(p1, "emacs"))
-                       pc->editing_mode = "emacs";
-       }
 
        /*
         *  Resolve $HOME .rc file first, then the one in the local directory.
@@ -1213,7 +1207,7 @@ setup_environment(int argc, char **argv)
        }
 
        if (STREQ(pc->editing_mode, "no_mode"))
-               pc->editing_mode = "vi";
+               pc->editing_mode = "emacs";
 
        machdep_init(SETUP_ENV);
 }
++++++ crash-missing-declarations.patch ++++++
From: Petr Tesarik <ptesa...@suse.cz>
Subject: Add missing includes

This fixes a compilation failure on ppc64.

---
 gdb-7.6.patch |   10 ++++++++++
 1 file changed, 10 insertions(+)

--- a/gdb-7.6.patch
+++ b/gdb-7.6.patch
@@ -17,6 +17,16 @@
        ./pex-djgpp.$(objext) ./pex-msdos.$(objext)                     \
         ./pex-unix.$(objext) ./pex-win32.$(objext)                     \
         ./putenv.$(objext)                                             \
+--- gdb-7.6/sim/common/gentmap.c.orig
++++ gdb-7.6/sim/common/gentmap.c
+@@ -2,6 +2,7 @@
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ 
+ struct tdefs {
+   char *symbol;
 --- gdb-7.6/opcodes/i386-dis.c.orig
 +++ gdb-7.6/opcodes/i386-dis.c
 @@ -11510,6 +11510,10 @@ print_insn (bfd_vma pc, disassemble_info
++++++ crash-patch-gdb.patch ++++++
From: Petr Tesarik <ptesa...@suse.cz>
Subject: Apply custom patches to gdb
Patch-mainline: never

Enhance the crash specfile to allow applying custom patches.

Update jeffm 17 Sep 2014: What used to be in the series file is now in
gdb-7.6-ppc64le-support.patch. We used to apply it unconditionally so
we'll continue to do so.

Signed-off-by: Petr Tesarik <ptesa...@suse.cz>

---
 Makefile |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- a/Makefile
+++ b/Makefile
@@ -263,8 +263,11 @@ gdb_unzip:
 gdb_patch:
        if [ -f ${GDB}.patch ] && [ -s ${GDB}.patch ]; then \
                patch -p0 < ${GDB}.patch; cp ${GDB}.patch ${GDB}; fi
-       if [ "${ARCH}" = "ppc64le" ] && [ -f ${GDB}-ppc64le-support.patch ]; 
then \
-               patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \
+       patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \
+       if [ -f ${GDB}.series ]; then \
+               while read p; do \
+                       patch -d ${GDB} -p1 -F0 < "$$p" ; \
+               done < ${GDB}.series ; \
        fi
        if [ "${ARCH}" = "x86_64" ] && [ "${TARGET}" = "PPC64" ] && [ -f 
${GDB}-ppc64le-support.patch ]; then \
                patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \
++++++ crash-rpmlintrc ++++++
addFilter("devel-file-in-non-devel-package .*/usr/share/sial/crash.*")
# crash-7.0.9.tar compresses better with gzip than with bzip2
addFilter(" source-or-patch-not-bzipped crash-7.0.9.tar.gz")
addFilter(" source-or-patch-not-compressed bz2 crash-7.0.9.tar.gz")
++++++ crash-s390-autodetect-kaslr.patch ++++++
Fix to allow live system analysis of s390x kernels that have been
configured with CONFIG_RANDOMIZE_BASE=y (KASLR).  Without the patch,
the "--kaslr=<offset>" command line option is required.
(ander...@redhat.com)
---
Index: b/symbols.c
===================================================================
--- a/symbols.c
+++ b/symbols.c
@@ -613,6 +613,12 @@ kaslr_init(void)
                st->_stext_vmlinux = UNINITIALIZED;
        }
 
+       if (machine_type("S390X") &&  /* Linux 5.2 */
+           (symbol_value_from_proc_kallsyms("__kaslr_offset") != BADVAL)) {
+               kt->flags2 |= (RELOC_AUTO|KASLR);
+               st->_stext_vmlinux = UNINITIALIZED;
+       }
+
        if (KDUMP_DUMPFILE() || DISKDUMP_DUMPFILE()) {
                if ((string = pc->read_vmcoreinfo("SYMBOL(_stext)"))) {
                        kt->vmcoreinfo._stext_SYMBOL =
++++++ crash-s390-kaslr-minimal-patchset.patch ++++++
Add --kaslr support for s390x kernels configured with
CONFIG_RANDOMIZE_BASE. Only kdumps or ELF dumps with
vmcoreinfo are supported.

Suggested-by: Gerald Schaefer <gerald.schae...@de.ibm.com>
Signed-off-by: Mikhail Zaslonko <zaslo...@linux.ibm.com>
---
 help.c    | 2 +-
 main.c    | 3 ++-
 symbols.c | 9 +++++----
 3 files changed, 8 insertions(+), 6 deletions(-)

Index: b/help.c
===================================================================
--- a/help.c
+++ b/help.c
@@ -333,7 +333,7 @@ char *program_usage_info[] = {
     "    and verification.  The default count is 32768.",
     "",
     "  --kaslr offset | auto",
-    "    If an x86 or x86_64 kernel was configured with 
CONFIG_RANDOMIZE_BASE,",
+    "    If x86, x86_64 or s390x kernel was configured with 
CONFIG_RANDOMIZE_BASE,",
     "    the offset value is equal to the difference between the symbol values 
",
     "    compiled into the vmlinux file and their relocated KASLR value.  If", 
     "    set to auto, the KASLR offset value will be automatically 
calculated.",
Index: b/main.c
===================================================================
--- a/main.c
+++ b/main.c
@@ -228,7 +228,8 @@ main(int argc, char **argv)
                                }
                        } else if (STREQ(long_options[option_index].name, 
"kaslr")) {
                                if (!machine_type("X86_64") &&
-                                   !machine_type("ARM64") && 
!machine_type("X86"))
+                                   !machine_type("ARM64") && 
!machine_type("X86") &&
+                                   !machine_type("S390X"))
                                        error(INFO, "--kaslr not valid "
                                                "with this machine type.\n");
                                else if (STREQ(optarg, "auto"))
Index: b/symbols.c
===================================================================
--- a/symbols.c
+++ b/symbols.c
@@ -597,8 +597,8 @@ kaslr_init(void)
 {
        char *string;
 
-       if ((!machine_type("X86_64") && !machine_type("ARM64") && 
!machine_type("X86")) ||
-           (kt->flags & RELOC_SET))
+       if ((!machine_type("X86_64") && !machine_type("ARM64") && 
!machine_type("X86") &&
+           !machine_type("S390X")) || (kt->flags & RELOC_SET))
                return;
 
        /*
@@ -737,7 +737,8 @@ store_symbols(bfd *abfd, int dynamic, vo
                                        fromend, size, store);
                } else if (!(kt->flags & RELOC_SET))
                        kt->flags |= RELOC_FORCE;
-       } else if (machine_type("X86_64") || machine_type("ARM64")) {
+       } else if (machine_type("X86_64") || machine_type("ARM64") ||
+                  machine_type("S390X")) {
                if ((kt->flags2 & RELOC_AUTO) && !(kt->flags & RELOC_SET))
                        derive_kaslr_offset(abfd, dynamic, from,
                                fromend, size, store);
@@ -809,7 +810,7 @@ store_sysmap_symbols(void)
                         strerror(errno));
 
        if (!machine_type("X86") && !machine_type("X86_64") &&
-           !machine_type("ARM64"))
+           !machine_type("ARM64") && !machine_type("S390X"))
                kt->flags &= ~RELOC_SET;
 
        first = 0;
++++++ crash-sial-ps-2.6.29.diff ++++++
diff -Nurp sial-scripts-2008-02-08.orig//ps.c sial-scripts-2008-02-08/ps.c
--- sial-scripts-2008-02-08.orig//ps.c  2010-03-12 19:59:03.227788951 +0100
+++ sial-scripts-2008-02-08/ps.c        2010-03-12 19:59:16.690665574 +0100
@@ -192,7 +192,11 @@ string cmd;
 
        printf("%p %7d %7d %7d 0x%02x 0x%08x %5d:%-5d %s\n"
                , t
+#if LINUX_RELEASE > 0x02061d
+               , t->real_cred->uid
+#else
                , t->uid
+#endif
                , t->pid
 #if LINUX_2_6_X
                , t->parent->pid
++++++ crash-sles9-quirk.patch ++++++
From: Bernhard Walle <bwa...@suse.de>
Subject: [PATCH] Add quirk for SLES9 LKCD header
Patch-mainline: never

On SLES9, we have a different header on IA64:

    SLES 10:

    typedef struct __dump_header_asm {
            uint64_t            dha_magic_number;
            uint32_t            dha_version;
            uint32_t            dha_header_size;
            uint64_t            dha_pt_regs;
            struct pt_regs      dha_regs;
            uint64_t            dha_rnat;
            uint64_t            dha_pfs;
            uint64_t            dha_bspstore;
            uint32_t            dha_smp_num_cpus;
            uint32_t            dha_dumping_cpu;
            struct pt_regs      dha_smp_regs[NR_CPUS];
            uint64_t            dha_smp_current_task[NR_CPUS];
            uint64_t            dha_stack[NR_CPUS];
            uint64_t            dha_stack_ptr[NR_CPUS];
            uint64_t            dha_kernel_addr;
    } __attribute__((packed)) dump_header_asm_t;

    SLES 9:
    typedef struct __dump_header_asm {
            uint64_t            dha_magic_number;
            uint32_t            dha_version;
            uint32_t            dha_header_size;
            uint64_t            dha_kernel_addr;
            uint64_t            dha_pt_regs;
            struct pt_regs      dha_regs;
            uint64_t            dha_rnat;
            uint64_t            dha_pfs;
            uint64_t            dha_bspstore;
            uint32_t            dha_smp_num_cpus;
            uint32_t            dha_dumping_cpu;        
            struct pt_regs      dha_smp_regs[NR_CPUS];
            uint64_t            dha_smp_current_task[NR_CPUS];
            uint64_t            dha_stack[NR_CPUS];
            uint64_t            dha_stack_ptr[NR_CPUS];
    } __attribute__((packed)) dump_header_asm_t;

That patch tries to guess if it's a SLES 9 or a SLES 10 header
at runtime.


Signed-off-by: Bernhard Walle <bwa...@suse.de>

---
 lkcd_v8.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

--- a/lkcd_v8.c
+++ b/lkcd_v8.c
@@ -130,6 +130,17 @@ lkcd_dump_init_v8_arch(dump_header_t *dh
                goto err;
        }
 
+#if IA64
+       /* SLES9 on IA64? */
+       if ( *((uint64_t *)(hdr_buf + hdr_size - sizeof(uint64_t))) <= NR_CPUS) 
{
+               uint64_t kernel_addr;
+               kernel_addr = ((dump_header_asm_t *)hdr_buf)->dha_pt_regs;
+               memmove(hdr_buf + offsetof(dump_header_asm_t, dha_pt_regs),
+                               hdr_buf + offsetof(dump_header_asm_t, dha_regs),
+                               hdr_size - offsetof(dump_header_asm_t, 
dha_regs));
+               *((uint64_t *)(hdr_buf + hdr_size - sizeof(uint64_t))) = 
kernel_addr;
+       }
+#endif
 
        /*
          * Though we have KL_NR_CPUS is 128, the header size is different
++++++ crash-sles9-time.patch ++++++
From: Alan Tyson <aty...@hp.com>
Subject: [PATCH] Fix "uptime" and "ps -t" for SLES9
References: 352836

This patch adds a quirk for SLES9 jiffies initialisation and corrects the time
data in "uptime" and "ps -t" command.


Acked-by: Bernhard Walle <bwa...@suse.de>

---
 defs.h   |    8 ++++++++
 kernel.c |    9 ++++++++-
 task.c   |   11 +++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)

--- a/defs.h
+++ b/defs.h
@@ -731,6 +731,7 @@ struct kernel_table {
                ulong p2m_missing;
        } pvops_xen;
        int highest_irq;
+    int is_suse_kernel;
 #define IKCONFIG_AVAIL 0x1     /* kernel contains ikconfig data */
 #define IKCONFIG_LOADED        0x2     /* ikconfig data is currently loaded */
        int ikconfig_flags;
@@ -6539,6 +6540,13 @@ extern struct lkcd_environment *lkcd;
 
 #endif  /* LKCD_COMMON */
 
+
+/*
+ * SUSE specific
+ */
+#define is_SLES9() \
+       ((THIS_KERNEL_VERSION == LINUX(2,6,5)) && kt->is_suse_kernel)
+
 /*
  *  gdb_interface.c
  */
--- a/kernel.c
+++ b/kernel.c
@@ -286,6 +286,12 @@ kernel_init()
 
        verify_version();
 
+       /*
+        * check if we have a suse kernel (this is the module supported
+        * patch of agr...@suse.de
+        */
+       kt->is_suse_kernel = symbol_exists("unsupported");
+
        if (symbol_exists("__per_cpu_offset")) {
                if (LKCD_KERNTYPES())
                        i = get_cpus_possible();
@@ -5456,7 +5462,7 @@ get_uptime(char *buf, ulonglong *j64p)
 
        if (symbol_exists("jiffies_64")) {
                get_symbol_data("jiffies_64", sizeof(ulonglong), &jiffies_64);
-               if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) {
+               if (THIS_KERNEL_VERSION >= LINUX(2,6,0) && !is_SLES9()) {
                        wrapped = (jiffies_64 & 0xffffffff00000000ULL);
                        if (wrapped) {
                                wrapped -= 0x100000000ULL;
@@ -6050,6 +6056,7 @@ no_cpu_flags:
                        fprintf(fp, "            p2m_mid_missing: %lx\n", 
kt->pvops_xen.p2m_mid_missing);
                fprintf(fp, "                p2m_missing: %lx\n", 
kt->pvops_xen.p2m_missing);
        }
+       fprintf(fp, "         is_suse_kernel: %ld\n", kt->is_suse_kernel);
 }
 
 /*
--- a/task.c
+++ b/task.c
@@ -4100,6 +4100,12 @@ start_time_timespec(void)
        default:
                break;
        }
+       /* SLES9 stores start_time in nanoseconds, so set TIMESPEC in order */
+       /* to do the right calculations in convert_start_time               */
+       if (is_SLES9()) {
+               tt->flags |= TIMESPEC;
+               return TRUE;
+       }
 
        tt->flags |= NO_TIMESPEC;
 
@@ -4136,6 +4142,11 @@ convert_start_time(ulonglong start_time,
        ulong tmp1, tmp2;
        ulonglong wrapped;
 
+       /* SLES9's start_time is neither jiffies nor a timespec.  It's ns */
+       if (is_SLES9()) {
+               start_time = start_time / 1000000000;
+       }
+
         switch(tt->flags & (TIMESPEC | NO_TIMESPEC | START_TIME_NSECS))
         {
        case START_TIME_NSECS:
++++++ crash-stop_read_error_when_intent_is_retry.patch ++++++
From: David Mair <dm...@suse.com>
Date: 2017-05-25 10:27:21 -0600
Subject: Avoid printing a read error for a failed read that can be retried
References: bnc#1038839
Upstream: tbd

When reading a memory image fails it may not be an error if it is still
possible to switch image and retry the read. Fix the error message output
to only occur if no retries are intended.

---
 memory.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/memory.c
+++ b/memory.c
@@ -2237,13 +2237,15 @@ readmem(ulonglong addr, int memtype, voi
                         goto readmem_error;
 
                case READ_ERROR:
-                       if (PRINT_ERROR_MESSAGE)
-                               error(INFO, READ_ERRMSG, 
memtype_string(memtype, 0), addr, type);
                        if ((pc->flags & DEVMEM) && (kt->flags & 
PRE_KERNEL_INIT) &&
                            !(error_handle & NO_DEVMEM_SWITCH) && 
devmem_is_restricted() && 
                            switch_to_proc_kcore())
                                return(readmem(addr, memtype, bufptr, size,
                                        type, error_handle));
+
+                       if (PRINT_ERROR_MESSAGE)
+                               error(INFO, READ_ERRMSG, 
memtype_string(memtype, 0), addr, type);
+
                        goto readmem_error;
 
                case PAGE_EXCLUDED:
++++++ crash-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch ++++++
From: Dave Anderson <ander...@redhat.com>
Date: Fri, 1 Jun 2018 10:58:00 -0400
Subject: Update the recognition of x86_64 CPU_ENTRY_AREA
References: bsc#1090127, bsc#1104743
Upstream: merged
Git-commit: da49e2010b3cb88b4755d69d38fe90af6ba218b2

Update for the recognition of the new x86_64 CPU_ENTRY_AREA virtual
address range introduced in Linux 4.15.  The memory range exists
above the vmemmap range and below the mapped kernel static text/data
region, and where all of the x86_64 exception stacks have been moved.
Without the patch, reads from the new memory region fail because the
address range is not recognized as a legitimate virtual address.
Most notable is the failure of "bt" on tasks whose backtraces
originate from any of the exception stacks, which fail with the two
error messages "bt: seek error: kernel virtual address: <address>
type: stack contents" followed by "bt: read of stack at <address>
failed".
(ander...@redhat.com)

---
 defs.h   |    5 +++++
 x86_64.c |   47 +++++++++++++++++++++++++++++++++++------------
 2 files changed, 40 insertions(+), 12 deletions(-)

--- a/defs.h
+++ b/defs.h
@@ -3392,6 +3392,9 @@ struct arm64_stackframe {
 #define VSYSCALL_START             0xffffffffff600000
 #define VSYSCALL_END               0xffffffffff601000
 
+#define CPU_ENTRY_AREA_START       0xfffffe0000000000
+#define CPU_ENTRY_AREA_END         0xfffffe7fffffffff
+
 #define PTOV(X)               ((unsigned long)(X)+(machdep->kvbase))
 #define VTOP(X)               x86_64_VTOP((ulong)(X))
 #define IS_VMALLOC_ADDR(X)    x86_64_IS_VMALLOC_ADDR((ulong)(X))
@@ -5830,6 +5833,8 @@ struct machine_specific {
        ulong kpti_entry_stack;
        ulong kpti_entry_stack_size;
        ulong ptrs_per_pgd;
+       ulong cpu_entry_area_start;
+       ulong cpu_entry_area_end;
 };
 
 #define KSYMS_START    (0x1)
--- a/x86_64.c
+++ b/x86_64.c
@@ -407,6 +407,11 @@ x86_64_init(int when)
                                machdep->machspec->modules_end = 
MODULES_END_2_6_31;
                        }
                }
+               if (STRUCT_EXISTS("cpu_entry_area")) {
+                       machdep->machspec->cpu_entry_area_start = 
CPU_ENTRY_AREA_START; 
+                       machdep->machspec->cpu_entry_area_end = 
CPU_ENTRY_AREA_END;     
+               }
+
                 STRUCT_SIZE_INIT(cpuinfo_x86, "cpuinfo_x86");
                /* 
                 * Before 2.6.25 the structure was called gate_struct
@@ -865,20 +870,21 @@ x86_64_dump_machdep_table(ulong arg)
 
        /* pml4 and upml is legacy for extension modules */
        if (ms->pml4) {
-               fprintf(fp, "                     pml4: %lx\n", 
(ulong)ms->pml4);
-               fprintf(fp, "           last_pml4_read: %lx\n", 
(ulong)ms->last_pml4_read);
+               fprintf(fp, "                     pml4: %lx\n", 
(ulong)ms->pml4);
+               fprintf(fp, "           last_pml4_read: %lx\n", 
(ulong)ms->last_pml4_read);
 
        } else {
-               fprintf(fp, "                 pml4: (unused)\n");
-               fprintf(fp, "       last_pml4_read: (unused)\n");
+               fprintf(fp, "                     pml4: (unused)\n");
+               fprintf(fp, "           last_pml4_read: (unused)\n");
        }
 
        if (ms->upml) {
-               fprintf(fp, "                 upml: %lx\n", (ulong)ms->upml);
-               fprintf(fp, "       last_upml_read: %lx\n", 
(ulong)ms->last_upml_read);
+               fprintf(fp, "                     upml: %lx\n", 
(ulong)ms->upml);
+               fprintf(fp, "           last_upml_read: %lx\n", 
(ulong)ms->last_upml_read);
        } else {
-               fprintf(fp, "                 upml: (unused)\n");
-               fprintf(fp, "       last_upml_read: (unused)\n");
+               fprintf(fp, "                 GART_end: %lx\n", ms->GART_end);
+               fprintf(fp, "                     upml: (unused)\n");
+               fprintf(fp, "           last_upml_read: (unused)\n");
        }
 
        if (ms->p4d) {
@@ -1002,10 +1008,14 @@ x86_64_dump_machdep_table(ulong arg)
                        fprintf(fp, "\n   ");
                fprintf(fp, "%016lx ", ms->stkinfo.ibase[c]);
        }
-       fprintf(fp, "\n                 kpti_entry_stack_size: %ld", 
ms->kpti_entry_stack_size);
-       fprintf(fp, "\n                      kpti_entry_stack: ");
+       fprintf(fp, "\n    kpti_entry_stack_size: ");
+       if (ms->kpti_entry_stack_size)
+               fprintf(fp, "%ld", ms->kpti_entry_stack_size);
+       else
+               fprintf(fp, "(unused)");
+       fprintf(fp, "\n         kpti_entry_stack: ");
        if (machdep->flags & KPTI) {
-               fprintf(fp, "%lx\n   ", ms->kpti_entry_stack);
+               fprintf(fp, "(percpu: %lx):\n   ", ms->kpti_entry_stack);
                for (c = 0; c < cpus; c++) {
                        if (c && !(c%4))
                                fprintf(fp, "\n   ");
@@ -1014,6 +1024,16 @@ x86_64_dump_machdep_table(ulong arg)
                fprintf(fp, "\n");
        } else
                fprintf(fp, "(unused)\n");
+       fprintf(fp, "     cpu_entry_area_start: ");
+       if (ms->cpu_entry_area_start)
+               fprintf(fp, "%016lx\n", (ulong)ms->cpu_entry_area_start);
+       else
+               fprintf(fp, "(unused)\n");
+       fprintf(fp, "       cpu_entry_area_end: ");
+       if (ms->cpu_entry_area_end)
+               fprintf(fp, "%016lx\n", (ulong)ms->cpu_entry_area_end);
+       else
+               fprintf(fp, "(unused)\n");
 }
 
 /*
@@ -1572,7 +1592,10 @@ x86_64_IS_VMALLOC_ADDR(ulong vaddr)
                 ((machdep->flags & VMEMMAP) && 
                 (vaddr >= VMEMMAP_VADDR && vaddr <= VMEMMAP_END)) ||
                 (vaddr >= MODULES_VADDR && vaddr <= MODULES_END) ||
-               (vaddr >= VSYSCALL_START && vaddr < VSYSCALL_END));
+               (vaddr >= VSYSCALL_START && vaddr < VSYSCALL_END) ||
+               (machdep->machspec->cpu_entry_area_start && 
+                vaddr >= machdep->machspec->cpu_entry_area_start &&
+                vaddr <= machdep->machspec->cpu_entry_area_end));
 }
 
 static int 
++++++ crash-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch ++++++
Two fixes for the Xen hypervisor; the first fixes a bug seen
with Xen 4.11.0 during initialization, which fails with the error
message "crash: invalid kernel virtual address: <address> type:
fill_pcpu_struct", followed by "WARNING: cannot fill pcpu_struct"
and "crash: cannot read cpu_info".  The second fix prevents a
segmentation violation associated with a crash-7.1.1 commit that
addressed the Xen 4.5.0 hypervisor symbol name change from
"dom0" to "hardware_domain".
(dietmar.h...@ts.fujitsu.com)

---
 x86_64.c    |    7 +++++--
 xen_hyper.c |    8 ++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

--- a/x86_64.c
+++ b/x86_64.c
@@ -7744,8 +7744,11 @@ x86_64_init_hyper(int when)
        case POST_GDB:
                XEN_HYPER_STRUCT_SIZE_INIT(cpuinfo_x86, "cpuinfo_x86");
                XEN_HYPER_STRUCT_SIZE_INIT(tss_struct, "tss_struct");
-               XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = 
MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int);
-               XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, "tss_struct", 
"ist");
+               if (MEMBER_EXISTS("tss_struct", "__blh")) {
+                       XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = 
MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int);
+               } else {
+                       XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = 
MEMBER_OFFSET("tss_struct", "rsp0");
+               }               XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, 
"tss_struct", "ist");
                if (symbol_exists("cpu_data")) {
                        xht->cpu_data_address = symbol_value("cpu_data");
                }
--- a/xen_hyper.c
+++ b/xen_hyper.c
@@ -1060,8 +1060,8 @@ xen_hyper_get_domains(void)
        long domain_next_in_list;
        int i, j;
 
-       if (!try_get_symbol_data("dom0", sizeof(void *), &domain))
-               get_symbol_data("hardware_domain", sizeof(void *), &domain);
+       if (!try_get_symbol_data("hardware_domain", sizeof(void *), &domain))
+               get_symbol_data("dom0", sizeof(void *), &domain);
 
        domain_next_in_list = MEMBER_OFFSET("domain", "next_in_list");
        i = 0;
@@ -1103,8 +1103,8 @@ xen_hyper_get_domain_next(int mod, ulong
                if (xhdt->dom0) {
                        *next = xhdt->dom0->domain;
                } else {
-                       if (!try_get_symbol_data("dom0", sizeof(void *), next))
-                               get_symbol_data("hardware_domain", sizeof(void 
*), next);
+                       if (!try_get_symbol_data("hardware_domain", sizeof(void 
*), next))
+                               get_symbol_data("dom0", sizeof(void *), next);
                }
                return xhdt->domain_struct;
                break;
++++++ crash_enable_lzo_support.patch ++++++
---
 CFLAGS.extra  |    1 +
 LDFLAGS.extra |    1 +
 2 files changed, 2 insertions(+)

--- /dev/null
+++ b/CFLAGS.extra
@@ -0,0 +1 @@
+-DLZO
--- /dev/null
+++ b/LDFLAGS.extra
@@ -0,0 +1 @@
+-llzo2
++++++ crash_enable_snappy_support.patch ++++++
From: Petr Tesarik <ptesa...@suse.cz>
Subject: enably snappy support
Patch-mainline: never, configurable default

Signed-off-by: Petr Tesarik <ptesa...@suse.cz>

---
 CFLAGS.extra  |    2 +-
 LDFLAGS.extra |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--- a/CFLAGS.extra
+++ b/CFLAGS.extra
@@ -1 +1 @@
--DLZO
+-DLZO -DSNAPPY
--- a/LDFLAGS.extra
+++ b/LDFLAGS.extra
@@ -1 +1 @@
--llzo2
+-llzo2 -lsnappy
++++++ depmod.sh ++++++
# Need to call depmod when the list of modules changes
for kernelrelease in $KERNELRELEASES; do
    if [ -e /boot/System.map-$kernelrelease ]; then
        depmod -a -F /boot/System.map-$kernelrelease $kernelrelease
    fi
done
++++++ eppic-support-arm64.patch ++++++
From: Luc Chouinard <lchouin...@lchouinard-desktop.englab.juniper.net>
Date: Thu Jun 19 12:28:40 2014 -0700
Subject: Support for ARM64
References: FATE#320844
Patch-mainline: yes
Git-commit: 5391d3dd0e6710c22ec5801f99a6788a2e4b132a

Acked-by: Petr Tesarik <ptesa...@suse.com>

---
 extensions/eppic/applications/crash/eppic.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/extensions/eppic/applications/crash/eppic.c
+++ b/extensions/eppic/applications/crash/eppic.c
@@ -1033,10 +1033,14 @@ _init() /* Register the command set. */
 #ifdef PPC64
 #define EPPIC_ABI  ABI_PPC64
 #else
+#ifdef ARM64
+#define EPPIC_ABI  ABI_ARM64
+#else
 #error eppic: Unkown ABI 
 #endif
 #endif
 #endif
+#endif
 #endif
 #endif
 #endif
++++++ eppic-switch-to-system-lib.patch ++++++
++++ 1161 lines (skipped)

++++++ get-kernel-flavors.sh ++++++
#! /bin/sh
arch=$1
flavors=
for flavor in $(ls /usr/src/linux-obj/$arch 2>/dev/null); do
    if [ "$flavor" = um ]; then
        continue
    fi
    flavors="$flavors $flavor"
done
echo $flavors
++++++ mkinitrd.sh ++++++
# If one of the modules in this package is in the initrd,
# we need to recreate the initrd.

if [ -e /etc/sysconfig/kernel -a -f /etc/fstab ]; then
    source /etc/sysconfig/kernel
    run_mkinitrd=
    for module in $INITRD_MODULES; do
        case " $MODULES " in
        *" $module "*)
            run_mkinitrd=1
            break ;;
        esac
    done
    if [ -n "$run_mkinitrd" ]; then
        for kernelrelease in $KERNELRELEASES; do
            for image in vmlinuz image vmlinux linux bzImage; do
                if [ -f /boot/$image-$kernelrelease ]; then
                    /sbin/mkinitrd -k /boot/$image-$kernelrelease \
                                   -i /boot/initrd-$kernelrelease \
                    || exit 1
                fi
            done
        done
    fi
fi

Reply via email to