Archive of Linux kernel version 2.4.17-nf downloads

This page contains the "new function" kernel version 2.4.17 and related experimental downloads first released 2002-04-30, which:

Note: The "new function" kernel 2.4.17 is superseded by 2002-05-31 recommended "May 2002 stream".

Major new support and enhancements 2002-04-30:

Following is the combination of packages providing the above functionality:

Note that the previously experimental 2.4.17 downloads (which are functionally equivalent to the recommended kernel 2.4.7 downloads) for use with the "old" tool-chain are now recommended and can be found on the "August 2001 stream" recommended page.

Below please find drafts (based on the existing "August 2001 stream" documentation) describing the new features:

Useful utility:

lkcdutils-4.1 now includes further updates and bugfixes for the dump analysis tool lcrash. With lcrash it is possible to analyze system dumps created with the Linux for zSeries dump tools. lkcdutils can be downloaded under http://lkcd.sourceforge.net or http://sourceforge.net/projects/lkcd.

If you download any software from this web site please be aware of the Warranty Disclaimer and Limitation of Liabilities.

Archive of Linux kernel version 2.4.17-nf downloads
Date Component Downloadable
2002-04-30 Apr30 2002 patches






Experimental OCO modules 31-bit
Experimental OCO modules 64-bit
binutils-2.12.90.0.4-s390
glibc-2.2.5-s390-2
linux-2.4.17-s390-nf
linux-2.4.17-timer-nf
linux-2.4.17-s390-kerntypes
s390-tools-1.1

qeth, tape3590, and z90crypt.
qeth, tape3590, and z90crypt.
2002-02-28 64-bit: undefined weak external bug
glibc-2.2.5 undefined weak external bug-fix
undef-weak-bug.txt
glibc-2.2.5-s390-1
2002-02-27 Feb27 2002 patches glibc-2.2.5-s390

2002-04-30 drop

  • binutils

    Category application development tool. The binutils package is a collection of various development tools like a linker, a utility for creating, modifying and extracting from archives, a tool that displays information from object files, a tool to generate an index to the contents of an archive and so on.

    binutils-2.12.90.0.4-s390.tar.gz | MD5 experimental (2002-04-30)

    This experimental patch contains the initial S/390 / zSeries patches for the binutils-2.12.90.0.4.

    To create the complete binutils-2.12.90.0.4 sources, the following patches need to be applied in sequence:
    binutils-2.12.90.0.4.tar.gz (original binutils source)
    + binutils-2.12.90.0.4-s390.diff (IBM)

  • gcc
    Category application development tool. Contains the C Compiler front-end including architecture dependent back-ends like the S/390 back-end that generates executables for Linux for S/390. The gcc is an application that can be built to run on many different platforms and does not need to run on Linux for S/390.

    gcc-3.1.tar.gz (GNU) is not yet released. When it is released, no 390-patch is required.

  • gdb
    Category application development tool. Contains the GNU debugger. It can be used as an interactive symbolic debugger as well as a post-mortem debugger.

    gdb-5.1.1.tar.gz (GNU) - No 390-patch is required.

  • glibc, glibc-devel
    Category application development tool. These packages contain the GNU C Runtime library for Linux.
  • glibc-2.2.5-s390-2.tar.gz | MD5 experimental (2002-04-30)
    This patch includes bug fixes.
    To create the complete glibc sources, the following patches need to be applied in sequence:
    glibc-2.2.5.tar.gz (GNU)
    + glibc-linuxthreads-2.2.5.tar.gz (GNU)
    + glibc-2.2.5-s390.diff (IBM)
    + glibc-2.2.5-s390-1.diff (IBM)
    + glibc-2.2.5-s390-2.diff (IBM)
  • kernel, kernel-headers
    Category operating system. Contains the Linux kernel source code as well as the S/390 specific layer.

    linux-2.4.17-s390-nf.tar.gz | MD5 experimental (2002-04-30)

    This patch contains new features for the Linux kernel version 2.4.17. Summary of important changes:


    This experimental patch contains the initial S/390 / zSeries patches for the linux-2.4.17 kernel.
    To create the complete linux-2.4.17 kernel sources, the following patches need to be applied in sequence:
    linux-2.4.17.tar.gz (original kernel source)
    + linux-2.4.17-s390-nf.diff (IBM)
  • On-demand timer patch
    Category operating system. Contains the Linux kernel source code as well as the S/390 specific layer.

    linux-2.4.17-timer-nf.tar.gz | MD5 experimental (2002-04-30)

    On demand timer patch:
    Category operating system. Contains a patch for the linux kernel 2.4.17 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done.

    In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_IDLE_HZ_TIMER that lets you choose between the old and the new behavior.
    Note: you'll no longer need different OCO-modules at all.

    To create the complete linux kernel sources, the following patches need to be applied in sequence:
    linux-2.4.17.tar.gz (original kernel source)
    + linux-2.4.17-s390-nf.diff (IBM)
    + linux-2.4.17-timer-nf.diff (IBM)

  • linux-2.4.17 Kerntypes file
    linux-2.4.17-s390-kerntypes.tar.gz | MD5 experimental (2002-04-30)

    This patch contains a dummy module that includes headers for all kernel types that the dump analysis tool lcrash needs. The kernel type information is used as input by the lcrash utility when analyzing system crash dumps or the live system.

    The dummy module is built together with the kernel image or simply with: 'make Kerntypes'.

    To create the complete kernel sources, the following patches need to be applied in sequence:
    linux-2.4.17.tar.gz (original kernel source)
    + linux-2.4.17-s390.diff (IBM)
    + linux-2.4.17-timer-nf.diff (IBM)
    + linux-2.4.17-s390-kerntypes.diff (IBM)

  • modutils
    Category operating system. Contains the Linux kernel module tools.

    For modutils-2.4.7 (GPL) no patch needs to be applied for the S/390 backend.

  • strace
    Category application development tool. This application writes a trace of system calls to the operating system. The following patch contains the backend for zSeries.

    strace-4.2.20010119-s390.tar.gz | MD5 (2001-08-20)

  • s390 tools
    Category operating system. Contains the source tree of a set of user space utilities that should to be used together with the zSeries (s390) Linux kernel and device drivers.

    s390-tools-1.1.tar.gz | MD5 experimental (2002-04-30)

    The package contains the following three new tools:

    and consolidated bugfixes for the already known five tools:

2002-02-28 patches

The undefined weak external bug:

The symptom:
The undefined weak external bug will show up if an executable is linked with a relocation against an undefined weak external function which is defined at runtime through a dynamic object that was not part of the final link. This means the weak external gets defined either by an upgrade of a dynamic library or by the use of LD_PRELOAD. Most notably this happens with the upgrade of GNU C library from version 2.2.4 to 2.2.5. The symptom is that a program that ran fine with version 2.2.4 will crash on startup with version 2.2.5.
The cause:
This problem is caused by the combination of two bugs. One in the binutils and one in the GNU C library. The bug in the GNU C library 2.2.4 is that the symbols __register_frame, __register_frame_table, __deregister_frame, __register_frame_info, __deregister_frame_info, __frame_state_for and __register_frame_info_table do not have a version. A symbol without a version is local to the GNU C library which makes it undefined for all callers outside of the library. That is the point where the binutils bug comes into play. The crtbeginS.o object contains a R_390_PLT32DBL relocation to __register_frame_info. This relocation is replaced by a R_390_PC32DBL relocation because it refers to an undefined weak external function. This is wrong because the undefined function can be defined later either by an upgrade or by LD_PRELOAD. After the relocation was made pc relative the linker (correctly) turned this into a branch to 0. Therefore every program linked with a linker with this bug contains a call to 0. As long as __register_frame_info stays undefined this causes no problem because the function call is guarded by an if that test if the function address of __register_frame_info is zero. Function addresses comparisons are handled differently to function calls and are not replaced with compares to 0. So as soon as the weak function __register_frame_info is defined, the program crashes.
The fix:
To fix this problem the two problems needs to be addressed. The linker may not replace PLT function calls with pc relative calls and the GNU C library needs versions for the seven functions. The missing versions of the seven functions is a problem on its own which has to be fixed. Otherwise C++ exception handling does not work if the exception handling crosses different shared objects.
The update procedure:
To update an existing sytem several things have to be done in a specific order. First the binutils have to be replaced. Second EVERY program in the system needs a relink to remove the call to 0 that every program contains that is linked with crtbeginS.o. That means a rebuild of every program in the system! After the recompiles are done the GNU C library has to be replaced with one that contains the missing symbol versions. If the GNU C library is updated with the versions patch before all the executables in the system have been recompiled the system is rendered unusable!

This patch contains the following glibc bug fixes:

Description:
C++ exception handling on 64 bit doesn't work correctly.
Symptom:
C++ program crash or misbehave throwing exceptions.
Problem:
The versions for the five symbols __register_frame, __register_frame_table, __deregister_frame, __frame_state_for and __register_frame_info_table concerning exception handling are missing for 64 bit.
Solution:
Add versions for the five symbols for 64 bit.

Everybody should apply this patch.

Note: You need to be careful upgrading your system to glibc 2.2.5. Installing glibc 2.2.5 Without the binutils-2.11.90.0.27-s390-2 patch and a recompile of all executables will break your system. Please read undef-weak-bug.txt for details about this problem.

To create the complete glibc sources, the following patches need to be applied in sequence:

glibc-2.2.5.tar.gz (GNU)
+ glibc-linuxthreads-2.2.5.tar.gz (GNU)
+ glibc-2.2.5-s390.diff (IBM)
+ glibc-2.2.5-s390-1.diff (IBM)

2002-02-27 patches

This patch contains the following glibc bug fixes:

Description:
Missing definition in resource.h.
Symptom:
Compile problems with pdksh.
Problem:
The RLIMIT_LOCKS definition is missing in resource.h.
Solution:
Add RLIMIT_LOCKS.

Everybody should apply this patch.

Note: You need to be careful upgrading your system to glibc 2.2.5. Installing glibc 2.2.5 Without the binutils-2.11.90.0.27-s390-2 patch and a recompile of all executables will break your system. Please read undef-weak-bug.txt for details about this problem.

To create the complete glibc sources, the following patches need to be applied in sequence:
glibc-2.2.5.tar.gz (GNU)
+ glibc-linuxthreads-2.2.5.tar.gz (GNU)
+ glibc-2.2.5-s390.diff (IBM)

Contact the IBM team

If you want to contact the Linux on System z IBM team refer to the Contact the Linux on System z IBM team page.