 |
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:
kernel (including kernel-headers) 2.4.17-nf
Note that the Order-2 allocation relief patch is now integrated into the kernel-patch (and does not require special OCO modules).
along with:
kerntypes 2.4.17
On-demand timer patch (does not require special OCO modules)
OCO modules qeth, tape_3590_mod, z90crypt for 31-bit and 64-bit
Note that qdio is now provided in open-source form as part of the kernel-patch.
The experimental 2.4.17 downloads of this page are intended for use with the "new" tool-chain:
binutils 2.12.90.0.4
gcc 3.1 (no 390-patch required)
glibc 2.2.5
gdb 5.1.1 (no 390-patch required)
modutils 2.4.7 (no 390-patch required)
s390-tools 1.1
strace 4.2.2 (no new 390-patch required)
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:
Linux for S/390 (31-bit)
[2002-04-30] Linux for S/390 Device Drivers and Installation Commands
[2002-04-30] Using the Dump Tools
Linux for zSeries (64-bit)
[2002-04-30] Linux for zSeries Device Drivers and Installation Commands
[2002-04-30] Using the Dump Tools
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.
- 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:
- Order-2 allocation relief patch now integrated into kernel-patch (does not require special OCO modules)
- qdio, formerly available as OCO-module only, provided in source-code (includes Broadcast support)
- new module "zfcp" supports zSeries FCP attachment for SCSI
If used under VM, this support requires z/VM 4.3.
- Miscellaneous tape device driver enhancements including "tape disciplines as a module" (see also tape390_display in s390-tools 1.1)
- VARY ON/OFF support
- All recent bug fixes are integrated.
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:
- qetharp, which is a tool to read and flush the ARP cache on the
OSA Express Direct network cards.
- tape390_display, which is used to display messages on the display
unit of a zSeries tape device.
- osasnmpd, which is a ucd-snmp subagent implementing MIBs provided by
OSA-Express features Fast Ethernet, Gigabit Ethernet, High Speed Token
Ring and ATM Ethernet LAN Emulation in QDIO mode.
Note: Currently osasnmpd does *not* run on Linux for zSeries (64-bit).
and consolidated bugfixes for the already known five tools:
- dasdfmt, which is used to low-level format eckd-dasds with
either the classic linux disk layout or the new z/OS
compatible disk layout.
- fdasd, which is used to create or modify partitions on
eckd-dasds formatted with the z/OS compatible disk layout.
- dasdview, which could be used to display DASD and VTOC information
or to dump the content of a DASD to the console.
- zipl, which is used to make either dasds or tapes bootable
for system IPL or system dump.
- zgetdump, which is used to retrieve system dumps from either
tapes or dasds.
|
-
undef-weak-bug.tar.gz MD5 experimental (2002-02-28)
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! |
|
|
 |
|
 |