From owner-freebsd-announce Fri Apr 12 16:25:29 1996 Return-Path: owner-freebsd-announce Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id QAA00119 for freebsd-announce-outgoing; Fri, 12 Apr 1996 16:25:29 -0700 (PDT) Received: from austin.polstra.com (austin.polstra.com [206.213.73.10]) by freefall.freebsd.org (8.7.3/8.7.3) with ESMTP id QAA00113 Fri, 12 Apr 1996 16:25:23 -0700 (PDT) Received: from austin.polstra.com (jdp@localhost) by austin.polstra.com (8.7.5/8.6.12) with ESMTP id QAA02870; Fri, 12 Apr 1996 16:25:16 -0700 (PDT) Message-Id: <199604122325.QAA02870@austin.polstra.com> To: freebsd-hackers@freebsd.org, freebsd-announce@freebsd.org Subject: Elfkit-1.2 is now available Date: Fri, 12 Apr 1996 16:25:16 -0700 From: John Polstra Sender: owner-freebsd-announce@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Elfkit version 1.2 is now available. WHAT IS ELFKIT? Elfkit is a collection of tools for compiling and executing ELF programs under FreeBSD-2.1.0-RELEASE and later. It consists of: * Patches for gcc-2.7.2, to make it support ELF under FreeBSD. * Patches for binutils-2.6.0.12, to make it support ELF under FreeBSD. * Patches for libc from FreeBSD-2.1.0-RELEASE, to support building it as an ELF shared library. * An ELF dynamic linker. * A user-level test program that can invoke the dynamic linker to load and execute ELF programs under FreeBSD. The user-level test program is superfluous, if you are running FreeBSD-current. That version of FreeBSD can directly execute ELF programs. WHAT CAN I DO WITH IT? You can compile, link, and execute C and C++ programs. This depends to some extent on what libraries they require. We include patches for an ELF libc. Most other libraries (including all of the X11 libraries) can be built simply by typing "elf-make" in the appropriate source directory. The exceptions are those libraries that include some assembly language code. The math library "libm" is one such library. Unfortunately, "libm" hasn't been converted yet. The output of the linker is a standard, dynamically-linked ELF executable or shared library. WHAT HAS CHANGED SINCE THE LAST RELEASE? We are now using binutils-2.6.0.12 from the Linux project. This release has many ELF-related bug fixes. Also, we now hardly have to patch the binutils release at all, because H.J. Lu was kind enough to merge our FreeBSD/ELF changes into his release. Thanks and a tip of the hat to H.J. Lu, Eric Youngdale, David Engel, Ian Lance Taylor, and the Linux user community, for their hard work in finding and fixing bugs in the binutils ELF support. Note: There have been only very minor changes to gcc. If you already have installed the version from elfkit-1.1, you don't need to bother rebuilding gcc. Major renovation of the "crt*.o" files. They should be functionally complete now. The use of "gcc -shared" for building shared libraries is now supported. In fact, that's the recommended method, because it arranges to link in the proper "crt*.o" files in the right places. C++ support! Static constructors and destructors work properly, even in shared libraries. Added instructions for building libg++-2.7.1. It's a little bit tricky. No longer use GNU malloc, as it's going away in FreeBSD. (It's being replaced by PHK malloc.) Eliminated the "libc/elf" subdirectory. Its contents are no longer necessary, and they interfered with the ELF merge into FreeBSD-current. Fixed a couple of bugs in "libc". Most notable are the fixes to "setjmp" and "sigsetjmp" for PIC code. These functions now work properly, instead of dumping core. Added support for dlopen() and friends. It has not been tested very thoroughly yet. Beefed up some dynamic linker error messages. This is probably the last release based on FreeBSD-2.1.0. (I know, you've heard that before.) We plan to track FreeBSD-current in the future. WHO SHOULD USE ELFKIT? The current release of elfkit is intended for people who want to help develop ELF support under FreeBSD. If you simply want to run ELF programs, and don't want to learn anything else about it, come back in a few months. Elfkit is a work-in-progress, not a finished product. If you use it, you should be prepared to deal with some disruption when new releases come out. For example, the installation procedure and the directory structure could change in future releases. You should also expect that some features won't work right. (Please report such problems to "elfkit-bugs@polstra.com"!) HOW WELL DOES IT WORK? It works surprisingly well! For example, I recently tried "elf-make World" from the top of the XFree86 source tree. It succeeded at building all of the libraries and programs, failing only on the programs that required missing libraries (mostly, "libm"). The programs that built successfully, such as "xclock", seemed to function perfectly. WHERE CAN I GET IT? ftp://ftp.polstra.com/pub/FreeBSD/elfkit/elfkit-1.2.tar.gz WHAT ELSE WILL I NEED? * gcc-2.7.2.tar.gz, from any GNU site. * binutils-2.6.0.12.tar.gz, available from ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.6.0.12.tar.gz and other Linux mirror sites. * The sources for libc, from FreeBSD-2.1.0-RELEASE. * The /usr/include tree from FreeBSD-2.1.0-RELEASE. If you want to use C++, you will also need: * libg++-2.7.1, from ftp://prep.ai.mit.edu/pub/gnu/libg++-2.7.1.tar.gz Also available from GNU mirror sites. * GNU make (any reasonably recent version). Available from the FreeBSD ports and packages collections, and of course from any GNU mirror site. If at all possible, you should get your "libc" and "include" sources from one of the FreeBSD mirror sites, or from the FreeBSD-2.1.0 CD-ROM. If that's absolutely impossible for you, you can get them from: ftp://ftp.polstra.com/pub/FreeBSD/elfkit/libc-2.1.0.tar.gz ftp://ftp.polstra.com/pub/FreeBSD/elfkit/include-2.1.0.tar.gz Please try to avoid getting the "libc" and "include" sources from ftp.polstra.com. Its network connection is only a 56K frame relay link. Write to me, if you'd like to make a donation to the "T1 for Polstra" fund. WHERE DO I SEND BUG REPORTS AND COMMENTS? elfkit-bugs@polstra.com WHAT??? You want to ... HELP?! Send mail to "elfkit-bugs@polstra.com" if you'd like to help. -- John Polstra jdp@polstra.com John D. Polstra & Co., Inc. Seattle, Washington USA "Self-knowledge is always bad news." -- John Barth