ELF

Executable and Linkable Format

Hatch letter 19 April 2004 (157-28-G)

Exhibit G Pages 5-7: binutils 2.14

The files listed are from the GNU Binutils package binutils-2.14 [download] [gpl, lgpl]. It was released on 12 June 2003. The next release was 2.15 on 17 May 2004. The Hatch letter (157-28), to which this document is an exhibit, was dated 19 April 2004.

SCO/Caldera itself had redistributed these files. The document contains this statement: "At the time it redistributed Linux, SCO was not aware that its intellectual property had been copied or misappropriated and placed into Linux without SCO's authorization or consent."

All the listed files belong to BFD - the Binary File Descriptor library.

The degree of specificity is not high. The files listed all have names beginning 'elf', and only two such files are unlisted, apparently in error: bfd/elf-eh-frame.c and bfd/elf.c. The list specifies the entirety of every listed file.

bfd/elf-bfd.h1-1664100%
bfd/elf-hppa.h1-2233100%
bfd/elf-m10200.c1-1430100%
bfd/elf-m10300.c1-2847100%
bfd/elf-strtab.c1-450100%
bfd/elf32-arc.c1-253100%
bfd/elf32-arm.h1-3740100%
bfd/elf32-avr.c1-939100%
bfd/elf32-cris.c1-3110100%
bfd/elf32-d10v.c1-526100%
bfd/elf32-d30v.c1-562100%
bfd/elf32-dlx.c1-660100%
bfd/elf32-fr30.c1-791100%
bfd/elf32-frv.c1-1406100%
bfd/elf32-gen.c1-106100%
bfd/elf32-h8300.c1-1486100%
bfd/elf32-hppa.c1-4452100%
bfd/elf32-hppa.h1-78100%
bfd/elf32-i370.c1-1652100%
bfd/elf32-i386.c1-3435100%
bfd/elf32-i860.c1-1087100%
bfd/elf32-i960.c1-171100%
bfd/elf32-ip2k.c1-1693100%
bfd/elf32-iq2000.c1-986100%
bfd/elf32-m32r.c1-2130100%
bfd/elf32-m68hc11.c1-1314100%
bfd/elf32-m68hc12.c1-570100%
bfd/elf32-m68hc1x.c1-1524100%
bfd/elf32-m68hc1x.h1-205100%
bfd/elf32-m68k.c1-2337100%
bfd/elf32-m88k.c1-36100%
bfd/elf32-mcore.c1-706100%
bfd/elf32-mips.c1-1956100%
bfd/elf32-msp430.c1-720100%
bfd/elf32-openrisc.c1-634100%
bfd/elf32-or32.c1-552100%
bfd/elf32-pj.c1-349100%
bfd/elf32-ppc.c1-5890100%
bfd/elf32-ppc.h1-23100%
bfd/elf32-s390.c1-3410100%
bfd/elf32-sh.c1-7392100%
bfd/elf32-sh64-com.c1-265100%
bfd/elf32-sh64.c1-809100%
bfd/elf32-sh64.h1-83100%
bfd/elf32-sparc.c1-3511100%
bfd/elf32-v850.c1-3178100%
bfd/elf32-vax.c1-2195100%
bfd/elf32-xstormy16.c1-1108100%
bfd/elf32-xtensa.c1-5845100%
bfd/elf32.c1-22100%
bfd/elf64-alpha.c1-5685100%
bfd/elf64-gen.c1-105100%
bfd/elf64-hppa.c1-2787100%
bfd/elf64-hppa.h1-50100%
bfd/elf64-mips.c1-2936100%
bfd/elf64-mmix.c1-2591100%
bfd/elf64-ppc.c1-8449100%
bfd/elf64-ppc.h1-38100%
bfd/elf64-s390.c1-3358100%
bfd/elf64-sh64.c1-4268100%
bfd/elf64-sparc.c1-3269100%
bfd/elf64-x86-64.c1-2947100%
bfd/elf64.c1-22100%
bfd/elfarm-nabi.c1-752100%
bfd/elfarm-oabi.c1-426100%
bfd/elfcode.h1-1605100%
bfd/elfcore.h1-259100%
bfd/elflink.c1-652100%
bfd/elflink.h1-8745100%
bfd/elfn32-mips.c1-2239100%
bfd/elfxx-ia64.c1-5012100%
bfd/elfxx-mips.c1-9447100%
bfd/elfxx-mips.h1-113100%
bfd/elfxx-target.h1-714100%

Total 74 files, 148990 lines

Exhibit G Pages 8-9: glibc 2.3.2

The files listed are from the GNU C Library package glibc-2.3.2 [download] [gpl, lgpl, licenses]. It was released on 1 March 2003. The next release was 2.3.3 on 3 August 2003. The Hatch letter (157-28), to which this document is an exhibit, was dated 19 April 2004.

SCO/Caldera itself had redistributed these files. The document contains this statement: "At the time it redistributed Linux, SCO was not aware that its intellectual property had been copied or misappropriated and placed into Linux without SCO's authorization or consent."

The vast majority of the listed files appear to concern dynamic linking. With one exception, the files are all located in the 'elf' subdirectory, but of the 195 files in that directory, only 33 are listed. The list specifies the entirety of every listed file.

Notably absent from the document is any complaint about glibc's sysvipc support.

csu/elf-init.c1-82100%
elf/dl-addr.c1-111100%
elf/dl-close.c1-587100%
elf/dl-conflict.c1-67100%
elf/dl-debug.c1-58100%
elf/dl-deps.c1-635100%
elf/dl-dst.h1-75100%
elf/dl-error.c1-197100%
elf/dl-fini.c1-185100%
elf/dl-init.c1-149100%
elf/dl-iteratephdr.c1-59100%
elf/dl-libc.c1-158100%
elf/dl-load.c1-1922100%
elf/dl-lookup.c1-725100%
elf/dl-minimal.c1-361100%
elf/dl-misc.c1-306100%
elf/dl-object.c1-172100%
elf/dl-open.c1-593100%
elf/dl-profile.c1-562100%
elf/dl-profstub.c1-43100%
elf/dl-reloc.c1-290100%
elf/dl-runtime.c1-239100%
elf/dl-support.c1-248100%
elf/dl-sym.c1-178100%
elf/dl-version.c1-392100%
elf/do-lookup.h1-223100%
elf/do-rel.h1-139100%
elf/dynamic-link.h1-304100%
elf/elf.h1-2409100%
elf/interp.c1-21100%
elf/link.h1-115100%
elf/rtld.c1-2022100%
elf/sofini.c1-19100%
elf/soinit.c1-98100%

Total 34 files, 13744 lines

Exhibit G Pages 10-13: Linux kernel 2.4.21

The files listed are from Linux 2.4.21 [download] [copying]. It was released on 13 June 2003. The next release was 2.4.22 on 25 August 2003. The Hatch letter (157-28), to which this document is an exhibit, was dated 19 April 2004.

SCO/Caldera itself had redistributed these files. The document contains this statement: "At the time it redistributed Linux, SCO was not aware that its intellectual property had been copied or misappropriated and placed into Linux without SCO's authorization or consent."

The file list is rather repetitive - binfmt_elf32.c and elf.h for each architecture, plus seven other files.

arch/ia64/ia32/binfmt_elf32.c1-223100%
arch/mips64/kernel/binfmt_elf32.c1-118100%
arch/parisc/kernel/binfmt_elf32.c1-93100%
arch/ppc64/kernel/binfmt_elf32.c1-79100%
arch/s390x/kernel/binfmt_elf32.c1-204100%
arch/sparc64/kernel/binfmt_elf32.c1-159100%
fs/binfmt_elf.c1-1284100%
include/asm-alpha/elf.h1-96100%
include/asm-arm/elf.h1-75100%
include/asm-arm/proc-armo/elf.h1-15100%
include/asm-arm/proc-armv/elf.h1-22100%
include/asm-cris/elf.h1-121100%
include/asm-i386/elf.h1-104100%
include/asm-ia64/elf.h1-94100%
include/asm-m68k/elf.h1-95100%
include/asm-mips/elf.h1-114100%
include/asm-mips64/elf.h1-124100%
include/asm-parisc/elf.h1-145100%
include/asm-ppc/elf.h1-114100%
include/asm-ppc64/elf.h1-149100%
include/asm-s390/elf.h1-82100%
include/asm-s390x/elf.h1-89100%
include/asm-sh/elf.h1-75100%
include/asm-sparc/elf.h1-111100%
include/asm-sparc64/elf.h1-122100%
include/asm-x86_64/elf.h1-128100%
include/linux/elf.h1-611100%
include/linux/elfcore.h1-89100%
include/linux/kmod.h1-38100%
include/linux/module.h1-415100%
kernel/kmod.c1-381100%
kernel/module.c1-1283100%

Total 32 files, 6771 lines

Exhibit G Page 14: The Linux A.B.I. Project

Not to be confused with the Linux kernel's own ABI, this project - the successor to the iBCS project - developed a patch to the Linux kernel allowing a Linux system to run foreign binaries.

The files listed are from a patch released by The Linux A.B.I. Project [download] released on 9 July 2003. The next patch release was against 2.4.26 on 23 June 2004. The Hatch letter (157-28), to which this document is an exhibit, was dated 19 April 2004.

The project states: "The Linux abi is a patch to the linux kernel that allows a linux system to run foreign binaries. This was developed and written by Christoph Hellwig and Joerg Ahrens as a follow on to the iBCS/iBCS2 project written for the older 2.2.x kernel by Mike Jagdis." Christoph Hellwig was an employee of Caldera Deutschland during early development of this project. The document 157-28-G contains this rather pungent statement: "The following files or lines of code, or files and lines similar thereto, have appeared in some releases of Linux, and have also appeared in SCO's redistributions of United Linux. At the time it redistributed Linux, SCO was not aware that its intellectual property had been copied or misappropriated and placed into Linux without SCO's authorization or consent."

The patch touches 177 files - many of which are header files implementing the UNIX™ ABI, and some of which bear copyright notices for Caldera Deutschland GmbH - but only one file, fs/binfmt_coff.c, is listed. The root cause for objection to this 1994 vintage iBCS file is apparently that it states "This file is based upon code written by Eric Youngdale for the ELF object file format." The lines specified deal with shared library sections.

fs/binfmt_coff.c389-391 651-655 684-78313%

Total 1 file, 108 lines

Gupta Declaration 7 July 2004 (467)

Pages 24-29: Linux kernel 2.4.21

Gupta discusses his Exhibit DD (497 p195-206) at length. Neither the Declaration nor the Exhibit gives a filename or version number, but the file is identifiable as include/linux/elf.h. Using the file's history at LinuxHQ the Exhibit is the version first released in Linux 2.4.20 and last released in Linux 2.4.24. This makes it consistent with the Hatch letter's allegations about ELF in Linux 2.4.21.

SCO's Reply Memo 23 August 2004 (254)

Page 6 footnote 4: ELF specification

SCO's "Reply Memorandum in Support of Plaintiff/Counterclaim Defendent SCO's Motion to Dismiss or Stay Count Ten of IBM's Second Amended Counterclaims" mentions in passing the nature of the rights SCO is claiming in the ELF specification:

An additional example concerns the 1993 license agreement between SCO's predecessor-in-interest Novell/USL and the Tool Interface Standard (T1S) Committee, which allowed the TIS Committee (among other things) to publish USL's ELF code, provided that the publication included a proper recognition of USL's copyright in ELF. The stated goal of publishing the ELF Specification was to provide software developers with a set of binary interface definitions - that is, to facilitate their ability to write applications for UNIX. This goal - the purpose of the agreement with the Committee - would not encompass incorporation of ELF code into Linux (indeed would be undercut by incorporation into Linux). The ELF code is published in a May 1995 edition of the TIS ELF Specification. The TIS ELF Specification states that a non-exclusive, worldwide royalty-free license is made available to use the information in the ELF Specification to make software TIS-compliant. However, the 1995 version of the ELF Specification was published without the required copyright recognition. This may explain the incorporation of ELF code into Linux. On just this single issue, SCO would need to engage in significant third-party discovery concerning the limits on which SCO's predecessors-in-interest permitted others to use ELF code, and the ways in which those limits were apparently exceeded, including possibly incorporating ELF code into Linux.

Final Disclosure 22 December 2005

Item 171 (dismissed): The entirety of ELF, including the ELF specification, is being challenged. "Use of SVR4 ABI as source reference in Linux programming, revealing details of SVR4 ELF/ABI specification and use of SVR4 ELF/ABI specification to develop Linux" [SCO 707 p.13].

Item 272 (ongoing): Line-for-line code copied from System V into the Linux tool chain used to compile and operate Linux [SCO 724 Appx A p.2]. SCO's proprietary System V code was simply copied and pasted into the Linux kernel or associated libraries that were then included in a Red Hat distribution [SCO 724 Appx A p.3].

Other items: 273, 274, 275 (all ongoing).